19namespace DataObjects {
21#ifndef __INTEL_COMPILER
44 MDGridBox(std::shared_ptr<API::BoxController> &bc,
const uint32_t depth,
65 void setFileBacked(
const uint64_t ,
const size_t ,
const bool )
override;
66 void setFileBacked()
override;
67 void clearFileBacked(
bool loadDiskBackedData)
override;
68 void clear()
override;
79 std::vector<coord_t> & )
override { }
100 size_t getDataInMemorySize()
const override;
102 size_t getNumDims()
const override;
103 size_t getNumMDBoxes()
const override;
104 size_t getNumChildren()
const override;
107 bool isBox()
const override {
return false; }
109 size_t getChildIndexFromID(
size_t childId)
const;
113 void setChildren(
const std::vector<API::IMDNode *> &otherBoxes,
const size_t indexStart,
114 const size_t indexEnd)
override;
116 void getBoxes(std::vector<API::IMDNode *> &outBoxes,
size_t maxDepth,
bool leafOnly)
override;
117 void getBoxes(std::vector<API::IMDNode *> &outBoxes,
size_t maxDepth,
bool leafOnly,
120 void getBoxes(std::vector<API::IMDNode *> &outBoxes,
const std::function<
bool(
API::IMDNode *)> &cond)
final override;
124 void transformDimensions(std::vector<double> &scaling, std::vector<double> &offset)
override;
127 std::vector<MDE> *getEventsCopy()
override;
130 size_t addEvent(
const MDE &event)
override;
131 size_t addEventUnsafe(
const MDE &event)
override;
135 void buildAndAddEvent(
const signal_t Signal,
const signal_t errorSq,
const std::vector<coord_t> &point,
136 uint16_t expInfoIndex, uint16_t goniometerIndex, uint32_t detectorId)
override;
137 void buildAndAddEventUnsafe(
const signal_t Signal,
const signal_t errorSq,
const std::vector<coord_t> &point,
138 uint16_t expInfoIndex, uint16_t goniometerIndex, uint32_t detectorId)
override;
139 size_t buildAndAddEvents(
const std::vector<signal_t> &sigErrSq,
const std::vector<coord_t> &Coord,
140 const std::vector<uint16_t> &expInfoIndex,
const std::vector<uint16_t> &goniometerIndex,
141 const std::vector<uint32_t> &detectorId)
override;
144 void centerpointBin(
MDBin<MDE, nd> &bin,
bool *fullyContained)
const override;
150 const bool useOnePercentBackgroundCorrection =
true)
const override;
156 signal_t &signal,
signal_t &errorSquared, std::vector<signal_t> &signal_fit)
const override;
164 void calculateGridCaches() override final;
166 bool getIsMasked() const override;
168 void mask() override;
170 void unmask() override;
179 throw(std::runtime_error(
"This function should not be called on MDGridBox "
180 "(as its meaning for MDbox is dubious too)"));
186 throw(std::runtime_error(
"This function should not be called on MDGridBox "
187 "(as its meaning for MDbox is dubious too)"));
193 throw(std::runtime_error(
"This function should not be called on MDGridBox "
194 "(as its meaning for MDbox is dubious too)"));
199 using sptr = std::shared_ptr<MDGridBox<MDE, nd>>;
206 size_t calculateChildIndex(
const MDE &event)
const;
212 size_t splitCumul[nd];
215 double m_SubBoxSize[nd];
235 size_t getLinearIndex(
size_t *indices)
const;
237 size_t computeSizesFromSplit();
238 void fillBoxShell(
const size_t tot,
const coord_t ChildInverseVolume);
245 size_t initGridBox();
248#ifndef __INTEL_COMPILER
std::map< DeltaEMode::Type, std::string > index
#define TMDE_CLASS
Macro to make declaring template classes faster.
This class is used by MDBox and MDGridBox in order to intelligently determine optimal behavior.
The header describes interface to IO Operations perfomed by the box controller May be replaced by a b...
MDBin : Class describing a single bin in a dense, Multidimensional histogram.
Templated super-class of a multi-dimensional event "box".
Templated class for a multi-dimensional event "box".
Templated class for a GRIDDED multi-dimensional event "box".
std::vector< MDBoxBase< MDE, nd > * > m_Children
1D array of boxes contained within.
void saveAt(API::IBoxControllerIO *const, uint64_t) const override
Save the box at specific disk position using the class, respoinsible for the file IO.
void loadAndAddFrom(API::IBoxControllerIO *const, uint64_t, size_t, std::vector< coord_t > &) override
Load the box data of specified size from the disk location provided using the class,...
MDGridBox()=default
Private constructor as it does not work without box controller.
coord_t diagonalSquared
Length (squared) of the diagonal through every dimension = sum( boxSize[i]^2 ) Used in some calculati...
Kernel::ISaveable * getISaveable() override
get object responsible for saving the box to a file.
void setNPoints(const uint64_t &n)
std::shared_ptr< MDGridBox< MDE, nd > > sptr
Typedef for a shared pointer to a MDGridBox.
void generalBin(MDBin< MDE, nd > &, Mantid::Geometry::MDImplicitFunction &) const override
General binning method for any shape.
void loadAndAddFrom(API::IBoxControllerIO *const, uint64_t, size_t) override
Load the box data of specified size from the disk location provided using the class,...
size_t nPoints
Cached number of points contained (including all sub-boxes)
coord_t * getCentroid() const override
The function used to satisfy IMDNode interface but the physical meaning is unclear.
bool isBox() const override
to avoid casting (which need also the number of dimensions) method say if Node is a box.
void reserveMemoryForLoad(uint64_t) override
MDGridBox(const MDGridBox< MDE, nd > &box)
private default copy constructor as the only correct constructor is the one with box controller
uint64_t getTotalDataSize() const override
void calculateCentroid(coord_t *, const int) const override
The function used to satisfy IMDNode interface but the physical meaning is unclear.
Kernel::ISaveable * getISaveable() const override
get const object responsible for saving the box to a file.
size_t numBoxes
How many boxes in the boxes vector? This is just to avoid boxes.size() calls.
void calculateCentroid(coord_t *) const override
The function used to satisfy IMDNode interface but the physical meaning is unclear.
std::vector< MDBoxBase< MDE, nd > * > boxVector_t
Typedef for a vector of MDBoxBase pointers.
void clearDataFromMemory() override
uint64_t getNPoints() const override
Uses the cached value of points stored in the grid box.
Simple class that holds the extents (min/max) of a given dimension in a MD workspace or MDBox.
An "ImplicitFunction" defining a hyper-cuboid-shaped region in N dimensions.
An interface for objects that can be cached or saved to disk.
The ThreadScheduler object defines how tasks are allocated to threads and in what order.
void split(const int A, int &S, int &V)
Split a number into the sign and positive value.
Helper class which provides the Collimation Length for SANS instruments.
float coord_t
Typedef for the data type to use for coordinate axes in MD objects such as MDBox, MDEventWorkspace,...
double signal_t
Typedef for the signal recorded in a MDBox, etc.