Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ jobs:
compiler: clang
compiler_version: 21
cuda_version: "0"
BUILD_FLAGS: "-DSTIR_OPENMP=ON"
BUILD_FLAGS: "-DSTIR_OPENMP=OFF"
parallelproj: "OFF"
BUILD_TYPE: "Release"
ROOT: "OFF"
Expand Down
28 changes: 27 additions & 1 deletion src/buildblock/VoxelsOnCartesianGrid.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,17 @@ VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(const Array<3, elemT>& v,
Array<3, elemT>::operator=(v);
}

template <class elemT>
VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(Array<3, elemT>&& v,
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing)
: DiscretisedDensityOnCartesianGrid<3, elemT>()
{
Array<3, elemT>::operator=(std::move(v));
this->set_origin(origin);
this->set_grid_spacing(grid_spacing);
}

template <class elemT>
VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(const IndexRange<3>& range,
const CartesianCoordinate3D<float>& origin,
Expand All @@ -159,6 +170,19 @@ VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(const shared_ptr<const ExamI
Array<3, elemT>::operator=(v);
}

template <class elemT>
VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(const shared_ptr<const ExamInfo>& exam_info_sptr,
Array<3, elemT>&& v,
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing)
: DiscretisedDensityOnCartesianGrid<3, elemT>()
{
Array<3, elemT>::operator=(std::move(v));
this->set_exam_info_sptr(exam_info_sptr);
this->set_origin(origin);
this->set_grid_spacing(grid_spacing);
}

template <class elemT>
VoxelsOnCartesianGrid<elemT>::VoxelsOnCartesianGrid(const shared_ptr<const ExamInfo>& exam_info_sptr,
const IndexRange<3>& range,
Expand Down Expand Up @@ -258,7 +282,9 @@ VoxelsOnCartesianGrid<elemT>::construct_from_projdata_info(const shared_ptr<cons
-(x_size_used / 2),
-(x_size_used / 2) + x_size_used - 1);

this->grow(range);
// Keep storage contiguous for array views: grow()/resize() usually breaks the
// single-block allocation that Array(range) provides.
Array<3, elemT>::operator=(Array<3, elemT>(range));
}

/*!
Expand Down
11 changes: 11 additions & 0 deletions src/include/stir/VoxelsOnCartesianGrid.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ static VoxelsOnCartesianGrid ask_parameters();
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing);

//! Construct a VoxelsOnCartesianGrid, moving data from the Array<3,elemT> object.
VoxelsOnCartesianGrid(Array<3, elemT>&& v,
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing);

//! Construct a VoxelsOnCartesianGrid from an index range
/*! All elements are set 0. */
VoxelsOnCartesianGrid(const IndexRange<3>& range,
Expand All @@ -78,6 +83,12 @@ static VoxelsOnCartesianGrid ask_parameters();
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing);

//! Construct a VoxelsOnCartesianGrid, moving data from the Array<3,elemT> object.
VoxelsOnCartesianGrid(const shared_ptr<const ExamInfo>& exam_info_sptr,
Array<3, elemT>&& v,
const CartesianCoordinate3D<float>& origin,
const BasicCoordinate<3, float>& grid_spacing);

//! Construct a VoxelsOnCartesianGrid from an index range
/*! All elements are set 0. */
VoxelsOnCartesianGrid(const shared_ptr<const ExamInfo>& exam_info_sptr,
Expand Down
Loading