|
ndmspc
v1.1.1-1
|
Executes a function over all points in an N-dimensional space, optionally in parallel. More...
#include <NDimensionalExecutor.h>
Public Member Functions | |
| NDimensionalExecutor (const std::vector< int > &minBounds, const std::vector< int > &maxBounds) | |
| Constructor from min/max bounds for each dimension. More... | |
| NDimensionalExecutor (THnSparse *hist, bool onlyfilled=false) | |
| Constructor from THnSparse histogram. More... | |
| void | Execute (const std::function< void(const std::vector< int > &coords)> &func) |
| Execute a function over all coordinates in the N-dimensional space. More... | |
| template<typename TObject > | |
| void | ExecuteParallel (const std::function< void(const std::vector< int > &coords, TObject &thread_object)> &func, std::vector< TObject > &thread_objects) |
| Execute a function in parallel over all coordinates, using thread-local objects. More... | |
| size_t | Dimensions () const |
| Returns the number of dimensions. More... | |
| const std::vector< int > & | GetMinBounds () const |
| Returns the minimum bounds for each dimension. More... | |
| const std::vector< int > & | GetMaxBounds () const |
| Returns the maximum bounds for each dimension. More... | |
Private Member Functions | |
| bool | Increment () |
| Increment the current coordinates to the next point in the N-dimensional space. More... | |
Private Attributes | |
| size_t | fNumDimensions |
| Number of dimensions. | |
| std::vector< int > | fMinBounds |
| Minimum bounds for each dimension. | |
| std::vector< int > | fMaxBounds |
| Maximum bounds for each dimension. | |
| std::vector< int > | fCurrentCoords |
| Current coordinates during iteration. | |
Executes a function over all points in an N-dimensional space, optionally in parallel.
Definition at line 28 of file NDimensionalExecutor.h.
| Ndmspc::NDimensionalExecutor::NDimensionalExecutor | ( | const std::vector< int > & | minBounds, |
| const std::vector< int > & | maxBounds | ||
| ) |
Constructor from min/max bounds for each dimension.
| minBounds | Minimum bounds for each dimension. |
| maxBounds | Maximum bounds for each dimension. |
Constructor
Definition at line 21 of file NDimensionalExecutor.cxx.
References fCurrentCoords, fMaxBounds, fMinBounds, and fNumDimensions.
| Ndmspc::NDimensionalExecutor::NDimensionalExecutor | ( | THnSparse * | hist, |
| bool | onlyfilled = false |
||
| ) |
Constructor from THnSparse histogram.
| hist | Pointer to THnSparse histogram. |
| onlyfilled | If true, iterate only filled bins. |
Constructor with THnSparse input
Definition at line 49 of file NDimensionalExecutor.cxx.
References fCurrentCoords, fMaxBounds, fMinBounds, and fNumDimensions.
|
inline |
Returns the number of dimensions.
Definition at line 64 of file NDimensionalExecutor.h.
References fNumDimensions.
| void Ndmspc::NDimensionalExecutor::Execute | ( | const std::function< void(const std::vector< int > &coords)> & | func | ) |
Execute a function over all coordinates in the N-dimensional space.
| func | Function to execute, taking coordinates as argument. |
Sequential Execution
Definition at line 79 of file NDimensionalExecutor.cxx.
References fCurrentCoords, fMinBounds, fNumDimensions, and Increment().
Referenced by Ndmspc::NBinningDef::RefreshContentFromIds(), Ndmspc::NBinningDef::RefreshIdsFromContent(), and Ndmspc::NGnNavigator::Reshape().
| void Ndmspc::NDimensionalExecutor::ExecuteParallel | ( | const std::function< void(const std::vector< int > &coords, TObject &thread_object)> & | func, |
| std::vector< TObject > & | thread_objects | ||
| ) |
Execute a function in parallel over all coordinates, using thread-local objects.
Execute a function in parallel over all coordinates, using thread-local objects. Handles task distribution, synchronization, and exception propagation.
| TObject | Type of thread-local object. |
| func | Function to execute, taking coordinates and thread-local object. |
| thread_objects | Vector of thread-local objects, one per thread. |
| std::exception | If any worker thread throws, the first exception is rethrown after joining. |
Definition at line 99 of file NDimensionalExecutor.h.
References fCurrentCoords, fMinBounds, fNumDimensions, Ndmspc::NThreadData::GetAssignedIndex(), Increment(), and Ndmspc::NLogger::SetThreadName().
Referenced by Ndmspc::NGnTree::Process().
|
inline |
Returns the maximum bounds for each dimension.
Definition at line 76 of file NDimensionalExecutor.h.
References fMaxBounds.
|
inline |
Returns the minimum bounds for each dimension.
Definition at line 70 of file NDimensionalExecutor.h.
References fMinBounds.
|
private |
Increment the current coordinates to the next point in the N-dimensional space.
Definition at line 9 of file NDimensionalExecutor.cxx.
References fCurrentCoords, fMaxBounds, fMinBounds, and fNumDimensions.
Referenced by Execute(), and ExecuteParallel().