Herwig
7.2.1
|
A binary cell grid. More...
#include <CellGrid.h>
Public Member Functions | |
CellGrid () | |
Default constructor. | |
CellGrid (const std::vector< double > &newLowerLeft, const std::vector< double > &newUpperRight, double newWeight=0.0) | |
Construct given boundaries and a weight. | |
virtual CellGrid * | makeInstance () const |
Produce a new instance of a cell grid. | |
virtual CellGrid * | makeInstance (const std::vector< double > &newLowerLeft, const std::vector< double > &newUpperRight, double newWeight=0.0) const |
Produce a new instance of a cell grid. | |
virtual | ~CellGrid () |
The destructor. | |
void | boundaries (const std::vector< double > &newLowerLeft, const std::vector< double > &newUpperRight) |
Set the boundaries. | |
const std::vector< double > & | lowerLeft () const |
Return the lower left corner of the cell grid. | |
const std::vector< double > & | upperRight () const |
Return the upper right corner of the cell grid. | |
const std::vector< bool > & | upperBoundInclusive () const |
Flag in which dimension this cell is upper bound inclusive. | |
double | volume (const std::vector< double > &lowerLeft, const std::vector< double > &upperRight) const |
Calculate a volume given upper and lower bound. | |
bool | isLeaf () const |
Return true, if this is a leaf in the tree. | |
std::size_t | depth () const |
Return the depth of this grid. | |
std::size_t | size () const |
Return the number of nodes contained in this grid. | |
virtual void | split (std::size_t newSplitDimension, double newSplitCoordinate) |
Split this cell grid in the given dimension and coordinate, if it is a leaf. | |
std::pair< std::size_t, double > | splitPoint () const |
Return the dimension and coordinate along which the first split of this grid occurs. | |
const CellGrid & | firstChild () const |
Return the first child. | |
CellGrid & | firstChild () |
Access the first child. | |
const CellGrid & | secondChild () const |
Return the second child. | |
CellGrid & | secondChild () |
Access the second child. | |
void | splitCoordinates (std::size_t, std::set< double > &) const |
Fill split coordinates along a given dimension. | |
bool | active () const |
Return true, if this grid is active with respect to the last parameter point passed. | |
double | volume () const |
Return the volume relevant for the last parameter point set. | |
double | integral () const |
Return the integral relevant for the last parameter point set. | |
double | weight () const |
Return the weight. | |
void | weight (double w) |
Set the weight. | |
void | updateIntegral () |
Update the integrals. | |
void | minimumSelection (double p=0.1) |
Ensure a minimum cell selection probability. | |
bool | contains (const std::vector< double > &point, const std::vector< bool > ¶meterFlags) const |
Return true, if this grid contains the given parameter point. | |
double | nonParametricVolume (const std::vector< double > &point, const std::vector< bool > ¶meterFlags) const |
Get the volume relevant for the dimensions not considered parameters. | |
void | updateIntegral (const std::vector< double > &point, const std::vector< bool > ¶meterFlags, std::vector< bool >::iterator hashPosition) |
Set a parameter point and flag which dimensions are considered parameters. More... | |
double | projectInterval (const std::pair< double, double > &interval, std::size_t dimension) const |
Return the projection to the given interval and dimension, provided the interval is not overlapping with more than one cell in the given dimension. More... | |
std::map< std::pair< double, double >, double > | project (std::pair< double, double > interval, std::size_t dimension) const |
Return the projection to the given interval and dimension. | |
virtual void | fromXML (const XML::Element &) |
Fill CellGrid data from an XML element. | |
virtual XML::Element | toXML () const |
Return an XML element for the data of this CellGrid. | |
template<class RndGenerator > | |
void | randomGrid (RndGenerator &rnd, std::size_t maxDepth, bool forceSplit=true) |
Generate a random grid of given maximum depth. | |
void | dumpToC (std::ostream &os, const std::string &name) const |
Write out C code corresponding to the cell grid function. | |
void | dumpPartToC (std::ostream &os, std::string prefix="") const |
Write out C code corresponding to the cell grid function. | |
Private Member Functions | |
void | doMinimumSelection (double r, double ref) |
Ensure a minimum cell selection probability. | |
Private Attributes | |
std::vector< double > | theLowerLeft |
The lower left corner of the cell grid. | |
std::vector< double > | theUpperRight |
The upper right corner of the cell grid. | |
std::vector< bool > | theUpperBoundInclusive |
Flag in which dimension this cell is upper bound inclusive. | |
double | theVolumeOrIntegral |
The volume (leafs) or integral (nodes) relevant for the last parameter point set. | |
double | theWeight |
The weight. | |
std::vector< CellGrid * > | theChildren |
The children cell grids. | |
double ExSample::CellGrid::projectInterval | ( | const std::pair< double, double > & | interval, |
std::size_t | dimension | ||
) | const |
Return the projection to the given interval and dimension, provided the interval is not overlapping with more than one cell in the given dimension.
Use splitCoordinates() to determine appropriate intervals.
Referenced by weight().
void ExSample::CellGrid::updateIntegral | ( | const std::vector< double > & | point, |
const std::vector< bool > & | parameterFlags, | ||
std::vector< bool >::iterator | hashPosition | ||
) |
Set a parameter point and flag which dimensions are considered parameters.
Calculate a hash for the relevant subgrid.