Mantid
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
Mantid::API::BoxController Class Reference

This class is used by MDBox and MDGridBox in order to intelligently determine optimal behavior. More...

#include <BoxController.h>

Public Member Functions

 BoxController (size_t nd)
 Constructor. More...
 
size_t claimIDRange (size_t range)
 get range of id-s and increment box ID by this range; More...
 
void clearBoxesCounter (size_t depth)
 
void clearFileBacked ()
 function clears the file-backed status of the box controller More...
 
void clearGridBoxesCounter (size_t depth)
 
virtual BoxControllerclone () const
 create new box controller from the existing one. More...
 
void fromXMLString (const std::string &xml)
 De-serializing XML. More...
 
size_t getAddingEvents_eventsPerTask () const
 
size_t getAddingEvents_numTasksPerBlock () const
 
void getAddingEventsParameters (size_t &eventsPerTask, size_t &numTasksPerBlock) const
 Get parameters for adding events to a MDGridBox, trying to optimize parallel CPU use. More...
 
double getAverageDepth () const
 Return the average recursion depth of gridding. More...
 
IBoxControllerIOgetFileIO ()
 returns the pointer to the class, responsible for fileIO operations; More...
 
std::string getFilename () const
 the function left for compartibility with the previous bc python interface. More...
 
std::mutex & getIdMutex ()
 
size_t getMaxDepth () const
 
size_t getMaxId () const
 
const std::vector< double > & getMaxNumMDBoxes () const
 Return the vector giving the MAXIMUM number of MD Boxes as a function of depth. More...
 
size_t getNDims () const
 Get # of dimensions. More...
 
size_t getNextId ()
 
size_t getNumEventAtMax () const
 return the numner of events, which are sitting at max depth and would be split if not due to the max depth of the box they are occupying More...
 
const std::vector< size_t > & getNumMDBoxes () const
 Return the vector giving the number of MD Boxes as a function of depth. More...
 
const std::vector< size_t > & getNumMDGridBoxes () const
 Return the vector giving the number of MD Grid Boxes as a function of depth. More...
 
size_t getNumSplit () const
 Return how many boxes (total) a MDGridBox will contain. More...
 
size_t getSignificantEventsNumber () const
 The number of events that triggers box splitting. More...
 
size_t getSplitInto (size_t dim) const
 Return into how many to split along a dimension. More...
 
const std::vector< size_t > & getSplitIntoAll () const
 Return into how many to split along a every dimension. More...
 
size_t getSplitThreshold () const
 Return the splitting threshold, in # of events. More...
 
boost::optional< std::vector< size_t > > getSplitTopInto () const
 Return into how many to split along a dimension for the top level. More...
 
size_t getTotalNumMDBoxes () const
 Return the total number of MD Boxes, irrespective of depth. More...
 
size_t getTotalNumMDGridBoxes () const
 Return the total number of MDGridBox'es, irrespective of depth. More...
 
void incBoxesCounter (size_t depth, size_t inc=1)
 
void incGridBoxesCounter (size_t depth, size_t inc=1)
 
bool isFileBacked () const
 Returns if current box controller is file backed. More...
 
bool operator== (const BoxController &other) const
 Equality operator. More...
 
void resetNumBoxes ()
 Reset the number of boxes tracked in m_numMDBoxes. More...
 
void rizeEventAtMax ()
 
void setAddingEvents_eventsPerTask (size_t m_addingEvents_eventsPerTask)
 When adding events, how many events per task should be done? More...
 
void setAddingEvents_numTasksPerBlock (size_t m_addingEvents_numTasksPerBlock)
 When adding events, how many events tasks per block should be done? More...
 
void setFileBacked (const std::shared_ptr< IBoxControllerIO > &newFileIO, const std::string &fileName="")
 makes box controller file based by providing class, responsible for fileIO. More...
 
void setMaxDepth (size_t value)
 Sets the max recursion depth allowed for grid box splitting. More...
 
void setMaxId (size_t newMaxId)
 Set the new maximum ID number anywhere in the workspace. More...
 
void setSplitInto (size_t dim, size_t num)
 Set the way splitting will be done. More...
 
void setSplitInto (size_t num)
 Set the way splitting will be done. More...
 
void setSplitThreshold (size_t threshold)
 Set the splitting threshold. More...
 
void setSplitTopInto (size_t dim, size_t num)
 Set the way splitting will be done for the top level. More...
 
bool shouldSplitBoxes (size_t nEventsInOutput, size_t eventsAdded, size_t numMDBoxes) const
 Determine when would be a good time to split MDBoxes into MDGridBoxes. More...
 
std::string toXMLString () const
 Serialize. More...
 
void trackNumBoxes (size_t depth)
 Call to track the number of MDBoxes are contained in the MDEventWorkspace This should be called when a MDBox gets split into a MDGridBox. More...
 
bool useWriteBuffer () const
 the compartibility function – the write buffer is always used for file based workspaces More...
 
bool willSplit (size_t numPoints, size_t depth) const
 Return true if the MDBox should split, given : More...
 
virtual ~BoxController ()
 Destructor. More...
 

Protected Member Functions

 BoxController (const BoxController &other)
 box controller is an ws-based singleton so it should not be possible to copy it, left protected for inheritance; More...
 
BoxControlleroperator= (const BoxController &)=delete
 

Private Member Functions

void calcNumSplit ()
 When you split a MDBox, it becomes this many sub-boxes. More...
 
void calcNumTopSplit ()
 When you split an MDBox by force, it becomes this many sub boxes. More...
 
void resetMaxNumBoxes ()
 Calculate the vector of the max # of MDBoxes per level. More...
 

Private Attributes

size_t m_addingEvents_eventsPerTask
 For adding events tasks. More...
 
size_t m_addingEvents_numTasksPerBlock
 For adding events tasks. More...
 
std::shared_ptr< IBoxControllerIOm_fileIO
 
std::mutex m_idMutex
 Mutex for getting IDs. More...
 
size_t m_maxDepth
 Maximum splitting depth: don't go further than this many levels of recursion. More...
 
size_t m_maxId
 The maximum ID number of any boxes in the workspace (not inclusive, i.e. More...
 
std::vector< double > m_maxNumMDBoxes
 This is the maximum number of MD boxes there could be at each recursion level (e.g. More...
 
std::mutex m_mutexNumMDBoxes
 Mutex for changing the number of MD Boxes. More...
 
volatile size_t m_numEventsAtMax
 number of events sitting in the boxes which should be split but are already split up to the max depth More...
 
std::vector< size_t > m_numMDBoxes
 For tracking how many MDBoxes (not MDGridBoxes) are at each recursion level. More...
 
std::vector< size_t > m_numMDGridBoxes
 For tracking how many MDGridBoxes (not MDBoxes) are at each recursion level. More...
 
size_t m_numSplit
 When you split a MDBox, it becomes this many sub-boxes. More...
 
size_t m_numTopSplit
 When you split a top level MDBox by force, it becomes this many sub boxes. More...
 
size_t m_significantEventsNumber
 This empirically-determined number of events takes a noticeable time to process and triggers box splitting. More...
 
std::vector< size_t > m_splitInto
 Splitting # for all dimensions. More...
 
size_t m_SplitThreshold
 Splitting threshold. More...
 
boost::optional< std::vector< size_t > > m_splitTopInto
 Splittin # for all dimensions in the top level. More...
 
size_t nd
 Number of dimensions. More...
 

Detailed Description

This class is used by MDBox and MDGridBox in order to intelligently determine optimal behavior.

It informs:

Author
Janik Zikovsky
Date
Feb 21, 2011

Definition at line 33 of file BoxController.h.

Constructor & Destructor Documentation

◆ BoxController() [1/2]

Mantid::API::BoxController::BoxController ( size_t  nd)
inline

Constructor.

Parameters
nd:: number of dimensions
Returns
BoxController instance

Definition at line 41 of file BoxController.h.

◆ ~BoxController()

Mantid::API::BoxController::~BoxController ( )
virtual

Destructor.

Definition at line 105 of file BoxController.cpp.

References m_fileIO.

◆ BoxController() [2/2]

Mantid::API::BoxController::BoxController ( const BoxController other)
protected

box controller is an ws-based singleton so it should not be possible to copy it, left protected for inheritance;

Definition at line 42 of file BoxController.cpp.

Member Function Documentation

◆ calcNumSplit()

void Mantid::API::BoxController::calcNumSplit ( )
inlineprivate

When you split a MDBox, it becomes this many sub-boxes.

And this changes the max # of boxes too

Definition at line 404 of file BoxController.h.

References Mantid::Geometry::d.

Referenced by fromXMLString().

◆ calcNumTopSplit()

void Mantid::API::BoxController::calcNumTopSplit ( )
inlineprivate

When you split an MDBox by force, it becomes this many sub boxes.

And this changes the max # of boxes too

Definition at line 414 of file BoxController.h.

References Mantid::Geometry::d.

Referenced by fromXMLString().

◆ claimIDRange()

size_t Mantid::API::BoxController::claimIDRange ( size_t  range)

get range of id-s and increment box ID by this range;

reserve range of id-s for use on set of adjacent boxes.

Needed to be thread safe as adjacent boxes have to have subsequent ID-s

Parameters
range–range number of box-id-s to lock
Returns
initial ID to use in the range

Definition at line 116 of file BoxController.cpp.

References m_idMutex, m_maxId, and tmp.

◆ clearBoxesCounter()

void Mantid::API::BoxController::clearBoxesCounter ( size_t  depth)
inline

Definition at line 279 of file BoxController.h.

◆ clearFileBacked()

void Mantid::API::BoxController::clearFileBacked ( )

function clears the file-backed status of the box controller

Definition at line 262 of file BoxController.cpp.

References m_fileIO.

◆ clearGridBoxesCounter()

void Mantid::API::BoxController::clearGridBoxesCounter ( size_t  depth)
inline

Definition at line 284 of file BoxController.h.

◆ clone()

BoxController * Mantid::API::BoxController::clone ( ) const
virtual

create new box controller from the existing one.

Drops file-based state if the box-controller was file-based

Definition at line 35 of file BoxController.cpp.

◆ fromXMLString()

void Mantid::API::BoxController::fromXMLString ( const std::string &  xml)

De-serializing XML.

Static method that sets the data inside this BoxController from an XML string.

Parameters
xml:: string generated by BoxController::toXMLString()

Definition at line 211 of file BoxController.cpp.

References calcNumSplit(), calcNumTopSplit(), Mantid::Kernel::Strings::convert(), m_numMDBoxes, m_numMDGridBoxes, m_splitInto, m_splitTopInto, nd, setMaxDepth(), setMaxId(), and setSplitThreshold().

◆ getAddingEvents_eventsPerTask()

size_t Mantid::API::BoxController::getAddingEvents_eventsPerTask ( ) const
inline
Returns
When adding events, how many events per task should be done?

Definition at line 199 of file BoxController.h.

◆ getAddingEvents_numTasksPerBlock()

size_t Mantid::API::BoxController::getAddingEvents_numTasksPerBlock ( ) const
inline
Returns
When adding events, how many tasks per block should be done?

Definition at line 210 of file BoxController.h.

◆ getAddingEventsParameters()

void Mantid::API::BoxController::getAddingEventsParameters ( size_t &  eventsPerTask,
size_t &  numTasksPerBlock 
) const
inline

Get parameters for adding events to a MDGridBox, trying to optimize parallel CPU use.

Parameters
[out]eventsPerTask:: the number of events that should be added by a single task object. This should be large enough to avoid overhead without being too large, making event lists too long before splitting
[out]numTasksPerBlock:: the number of tasks (of size eventsPerTask) to be allocated before the grid boxes should be re-split. Having enough parallel tasks will help the CPU be used fully.

Definition at line 226 of file BoxController.h.

◆ getAverageDepth()

double Mantid::API::BoxController::getAverageDepth ( ) const
inline

Return the average recursion depth of gridding.

Definition at line 350 of file BoxController.h.

Referenced by export_BoxController().

◆ getFileIO()

IBoxControllerIO * Mantid::API::BoxController::getFileIO ( )
inline

returns the pointer to the class, responsible for fileIO operations;

Definition at line 378 of file BoxController.h.

Referenced by Mantid::DataObjects::MDBoxSaveable::flushData(), Mantid::DataObjects::MDBoxSaveable::load(), and Mantid::DataObjects::MDBoxSaveable::save().

◆ getFilename()

std::string Mantid::API::BoxController::getFilename ( ) const

the function left for compartibility with the previous bc python interface.

Returns
– the file name of the file used for backup if file backup mode is enabled or emtpy sting if the workspace is not file backed

Definition at line 195 of file BoxController.cpp.

References m_fileIO.

Referenced by export_BoxController().

◆ getIdMutex()

std::mutex & Mantid::API::BoxController::getIdMutex ( )
inline
Returns
the mutex for avoiding simultaneous assignments of box Ids.

Definition at line 91 of file BoxController.h.

◆ getMaxDepth()

size_t Mantid::API::BoxController::getMaxDepth ( ) const
inline
Returns
the max recursion depth allowed for grid box splitting.

Definition at line 234 of file BoxController.h.

Referenced by export_BoxController(), and toXMLString().

◆ getMaxId()

size_t Mantid::API::BoxController::getMaxId ( ) const
inline
Returns
the maximum (not-inclusive) ID number anywhere in the workspace.

Definition at line 80 of file BoxController.h.

Referenced by toXMLString().

◆ getMaxNumMDBoxes()

const std::vector< double > & Mantid::API::BoxController::getMaxNumMDBoxes ( ) const
inline

Return the vector giving the MAXIMUM number of MD Boxes as a function of depth.

Definition at line 336 of file BoxController.h.

◆ getNDims()

size_t Mantid::API::BoxController::getNDims ( ) const
inline

◆ getNextId()

size_t Mantid::API::BoxController::getNextId ( )
inline
Returns
the next available box Id. Call when creating a MDBox to give it an ID.

Definition at line 75 of file BoxController.h.

◆ getNumEventAtMax()

size_t Mantid::API::BoxController::getNumEventAtMax ( ) const
inline

return the numner of events, which are sitting at max depth and would be split if not due to the max depth of the box they are occupying

Definition at line 391 of file BoxController.h.

◆ getNumMDBoxes()

const std::vector< size_t > & Mantid::API::BoxController::getNumMDBoxes ( ) const
inline

Return the vector giving the number of MD Boxes as a function of depth.

Definition at line 328 of file BoxController.h.

◆ getNumMDGridBoxes()

const std::vector< size_t > & Mantid::API::BoxController::getNumMDGridBoxes ( ) const
inline

Return the vector giving the number of MD Grid Boxes as a function of depth.

Definition at line 332 of file BoxController.h.

◆ getNumSplit()

size_t Mantid::API::BoxController::getNumSplit ( ) const
inline

Return how many boxes (total) a MDGridBox will contain.

Definition at line 146 of file BoxController.h.

◆ getSignificantEventsNumber()

size_t Mantid::API::BoxController::getSignificantEventsNumber ( ) const
inline

The number of events that triggers box splitting.

Definition at line 246 of file BoxController.h.

◆ getSplitInto()

size_t Mantid::API::BoxController::getSplitInto ( size_t  dim) const
inline

Return into how many to split along a dimension.

Parameters
dim:: index of the dimension to split
Returns
the dimension will be split into this many even boxes.

Definition at line 119 of file BoxController.h.

Referenced by export_BoxController().

◆ getSplitIntoAll()

const std::vector< size_t > & Mantid::API::BoxController::getSplitIntoAll ( ) const
inline

Return into how many to split along a every dimension.

Returns
the dimension will be split into this many even boxes, for every dimension.

Definition at line 132 of file BoxController.h.

◆ getSplitThreshold()

size_t Mantid::API::BoxController::getSplitThreshold ( ) const
inline

Return the splitting threshold, in # of events.

Definition at line 106 of file BoxController.h.

Referenced by export_BoxController(), and toXMLString().

◆ getSplitTopInto()

boost::optional< std::vector< size_t > > Mantid::API::BoxController::getSplitTopInto ( ) const
inline

Return into how many to split along a dimension for the top level.

Returns
the splits in each dimesion for the top level

Definition at line 138 of file BoxController.h.

◆ getTotalNumMDBoxes()

size_t Mantid::API::BoxController::getTotalNumMDBoxes ( ) const
inline

Return the total number of MD Boxes, irrespective of depth.

Definition at line 339 of file BoxController.h.

Referenced by Mantid::MDAlgorithms::MinusMD::doMinus(), Mantid::MDAlgorithms::PlusMD::doPlus(), and export_BoxController().

◆ getTotalNumMDGridBoxes()

size_t Mantid::API::BoxController::getTotalNumMDGridBoxes ( ) const
inline

Return the total number of MDGridBox'es, irrespective of depth.

Definition at line 344 of file BoxController.h.

Referenced by export_BoxController().

◆ incBoxesCounter()

void Mantid::API::BoxController::incBoxesCounter ( size_t  depth,
size_t  inc = 1 
)
inline

Definition at line 293 of file BoxController.h.

◆ incGridBoxesCounter()

void Mantid::API::BoxController::incGridBoxesCounter ( size_t  depth,
size_t  inc = 1 
)
inline

Definition at line 288 of file BoxController.h.

◆ isFileBacked()

bool Mantid::API::BoxController::isFileBacked ( ) const
inline

Returns if current box controller is file backed.

Assumes that BC(workspace) is fileBackd if fileIO is defined;

Definition at line 376 of file BoxController.h.

Referenced by export_BoxController().

◆ operator=()

BoxController & Mantid::API::BoxController::operator= ( const BoxController )
protecteddelete

◆ operator==()

bool Mantid::API::BoxController::operator== ( const BoxController other) const

◆ resetMaxNumBoxes()

void Mantid::API::BoxController::resetMaxNumBoxes ( )
inlineprivate

Calculate the vector of the max # of MDBoxes per level.

Definition at line 424 of file BoxController.h.

◆ resetNumBoxes()

void Mantid::API::BoxController::resetNumBoxes ( )
inline

Reset the number of boxes tracked in m_numMDBoxes.

Definition at line 364 of file BoxController.h.

◆ rizeEventAtMax()

void Mantid::API::BoxController::rizeEventAtMax ( )
inline

Definition at line 388 of file BoxController.h.

◆ setAddingEvents_eventsPerTask()

void Mantid::API::BoxController::setAddingEvents_eventsPerTask ( size_t  m_addingEvents_eventsPerTask)
inline

When adding events, how many events per task should be done?

Parameters
m_addingEvents_eventsPerTask:: events per task

Definition at line 195 of file BoxController.h.

◆ setAddingEvents_numTasksPerBlock()

void Mantid::API::BoxController::setAddingEvents_numTasksPerBlock ( size_t  m_addingEvents_numTasksPerBlock)
inline

When adding events, how many events tasks per block should be done?

Parameters
m_addingEvents_numTasksPerBlock:: tasks/block

Definition at line 205 of file BoxController.h.

◆ setFileBacked()

void Mantid::API::BoxController::setFileBacked ( const std::shared_ptr< IBoxControllerIO > &  newFileIO,
const std::string &  fileName = "" 
)

makes box controller file based by providing class, responsible for fileIO.

The box controller become responsible for the FileIO pointer

Parameters
newFileIO– instance of the box controller responsible for the IO;
fileName– if newFileIO comes without opened file, this is the file name to open for the file based IO operations

Definition at line 278 of file BoxController.cpp.

References m_fileIO.

◆ setMaxDepth()

void Mantid::API::BoxController::setMaxDepth ( size_t  value)
inline

Sets the max recursion depth allowed for grid box splitting.

NOTE! This resets numMDBoxes stats!

Parameters
value:: the max depth for splitting

Definition at line 240 of file BoxController.h.

References value.

Referenced by fromXMLString().

◆ setMaxId()

void Mantid::API::BoxController::setMaxId ( size_t  newMaxId)
inline

Set the new maximum ID number anywhere in the workspace.

Should only be called when loading a file.

Parameters
newMaxIdvalue to set the newMaxId to

Definition at line 87 of file BoxController.h.

Referenced by fromXMLString().

◆ setSplitInto() [1/2]

void Mantid::API::BoxController::setSplitInto ( size_t  dim,
size_t  num 
)
inline

Set the way splitting will be done.

Parameters
dim:: dimension to set
num:: amount in which to split

Definition at line 164 of file BoxController.h.

◆ setSplitInto() [2/2]

void Mantid::API::BoxController::setSplitInto ( size_t  num)
inline

Set the way splitting will be done.

Parameters
num:: amount in which to split

Definition at line 152 of file BoxController.h.

Referenced by Mantid::DataObjects::MDEventsTestHelper::makeMDBox1().

◆ setSplitThreshold()

void Mantid::API::BoxController::setSplitThreshold ( size_t  threshold)
inline

Set the splitting threshold.

Parameters
threshold:: # of points at which the MDBox splits

Definition at line 111 of file BoxController.h.

Referenced by fromXMLString(), and Mantid::DataObjects::MDEventsTestHelper::makeMDBox1().

◆ setSplitTopInto()

void Mantid::API::BoxController::setSplitTopInto ( size_t  dim,
size_t  num 
)
inline

Set the way splitting will be done for the top level.

Parameters
dim:: dimension to set
num:: amount in which to split

Definition at line 178 of file BoxController.h.

◆ shouldSplitBoxes()

bool Mantid::API::BoxController::shouldSplitBoxes ( size_t  nEventsInOutput,
size_t  eventsAdded,
size_t  numMDBoxes 
) const
inline

Determine when would be a good time to split MDBoxes into MDGridBoxes.

This is to be called while adding events. Splitting boxes too frequently would be a slow-down, but keeping the boxes split at an earlier stage should help scalability for later adding, so there is a balance to get.

Parameters
nEventsInOutput:: How many events are currently in workspace in memory;
eventsAdded:: How many events were added since the last split?
numMDBoxes:: How many un-split MDBoxes are there (total) in the workspace
Returns
true if the boxes should get split.

Definition at line 261 of file BoxController.h.

◆ toXMLString()

std::string Mantid::API::BoxController::toXMLString ( ) const

Serialize.

Serialize to an XML string.

Returns
XML string

Definition at line 125 of file BoxController.cpp.

References getMaxDepth(), getMaxId(), getNDims(), getSplitThreshold(), Mantid::Kernel::Strings::join(), m_numMDBoxes, m_numMDGridBoxes, m_splitInto, and m_splitTopInto.

◆ trackNumBoxes()

void Mantid::API::BoxController::trackNumBoxes ( size_t  depth)
inline

Call to track the number of MDBoxes are contained in the MDEventWorkspace This should be called when a MDBox gets split into a MDGridBox.

The number of MDBoxes at [depth] is reduced by one The number of MDBoxes at [depth+1] is increased by however many the splitting gives. Also tracks the number of MDGridBoxes.

Parameters
depth:: the depth of the MDBox that is being split into MDGrid boxes.

Definition at line 308 of file BoxController.h.

◆ useWriteBuffer()

bool Mantid::API::BoxController::useWriteBuffer ( ) const

the compartibility function – the write buffer is always used for file based workspaces

the function left for compartibility with the previous bc python interface.

Returns
true if the workspace is file based and false otherwise

Definition at line 203 of file BoxController.cpp.

References m_fileIO.

Referenced by export_BoxController().

◆ willSplit()

bool Mantid::API::BoxController::willSplit ( size_t  numPoints,
size_t  depth 
) const
inline

Return true if the MDBox should split, given :

Parameters
numPoints:: # of points in the box
depth:: recursion depth of the box
Returns
bool, true if it should split

Definition at line 100 of file BoxController.h.

Member Data Documentation

◆ m_addingEvents_eventsPerTask

size_t Mantid::API::BoxController::m_addingEvents_eventsPerTask
private

For adding events tasks.

Definition at line 486 of file BoxController.h.

◆ m_addingEvents_numTasksPerBlock

size_t Mantid::API::BoxController::m_addingEvents_numTasksPerBlock
private

For adding events tasks.

Definition at line 489 of file BoxController.h.

◆ m_fileIO

std::shared_ptr<IBoxControllerIO> Mantid::API::BoxController::m_fileIO
private

◆ m_idMutex

std::mutex Mantid::API::BoxController::m_idMutex
private

Mutex for getting IDs.

Definition at line 507 of file BoxController.h.

Referenced by claimIDRange().

◆ m_maxDepth

size_t Mantid::API::BoxController::m_maxDepth
private

Maximum splitting depth: don't go further than this many levels of recursion.

This avoids infinite recursion and should be set to a value that gives a smallest box size that is a little smaller than the finest desired binning upon viewing.

RE: In fact, max depth should not be higher then EPSILON(coord_t/(BIGGEST_BOX_SIZE))=max_split_size^m_maxDepth;

Definition at line 468 of file BoxController.h.

Referenced by operator==().

◆ m_maxId

size_t Mantid::API::BoxController::m_maxId
private

The maximum ID number of any boxes in the workspace (not inclusive, i.e.

maxId = 100 means there the highest ID number is 99.

Definition at line 449 of file BoxController.h.

Referenced by claimIDRange(), and operator==().

◆ m_maxNumMDBoxes

std::vector<double> Mantid::API::BoxController::m_maxNumMDBoxes
private

This is the maximum number of MD boxes there could be at each recursion level (e.g.

(splitInto ^ ndims) ^ depth )

Definition at line 504 of file BoxController.h.

Referenced by operator==().

◆ m_mutexNumMDBoxes

std::mutex Mantid::API::BoxController::m_mutexNumMDBoxes
private

Mutex for changing the number of MD Boxes.

Definition at line 500 of file BoxController.h.

◆ m_numEventsAtMax

volatile size_t Mantid::API::BoxController::m_numEventsAtMax
private

number of events sitting in the boxes which should be split but are already split up to the max depth

Definition at line 471 of file BoxController.h.

◆ m_numMDBoxes

std::vector<size_t> Mantid::API::BoxController::m_numMDBoxes
private

For tracking how many MDBoxes (not MDGridBoxes) are at each recursion level.

Definition at line 493 of file BoxController.h.

Referenced by fromXMLString(), operator==(), and toXMLString().

◆ m_numMDGridBoxes

std::vector<size_t> Mantid::API::BoxController::m_numMDGridBoxes
private

For tracking how many MDGridBoxes (not MDBoxes) are at each recursion level.

Definition at line 497 of file BoxController.h.

Referenced by fromXMLString(), operator==(), and toXMLString().

◆ m_numSplit

size_t Mantid::API::BoxController::m_numSplit
private

When you split a MDBox, it becomes this many sub-boxes.

Definition at line 480 of file BoxController.h.

Referenced by operator==().

◆ m_numTopSplit

size_t Mantid::API::BoxController::m_numTopSplit
private

When you split a top level MDBox by force, it becomes this many sub boxes.

Definition at line 483 of file BoxController.h.

◆ m_significantEventsNumber

size_t Mantid::API::BoxController::m_significantEventsNumber
private

This empirically-determined number of events takes a noticeable time to process and triggers box splitting.

Definition at line 456 of file BoxController.h.

◆ m_splitInto

std::vector<size_t> Mantid::API::BoxController::m_splitInto
private

Splitting # for all dimensions.

Definition at line 474 of file BoxController.h.

Referenced by fromXMLString(), operator==(), and toXMLString().

◆ m_SplitThreshold

size_t Mantid::API::BoxController::m_SplitThreshold
private

Splitting threshold.

Definition at line 452 of file BoxController.h.

Referenced by operator==().

◆ m_splitTopInto

boost::optional<std::vector<size_t> > Mantid::API::BoxController::m_splitTopInto
private

Splittin # for all dimensions in the top level.

Definition at line 477 of file BoxController.h.

Referenced by fromXMLString(), operator==(), and toXMLString().

◆ nd

size_t Mantid::API::BoxController::nd
private

Number of dimensions.

Definition at line 445 of file BoxController.h.

Referenced by fromXMLString(), and operator==().


The documentation for this class was generated from the following files: