herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
ExSample::CellGrid Class Reference

A binary cell grid. More...

#include <CellGrid.h>

Inheritance diagram for ExSample::CellGrid:

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 CellGridmakeInstance () const
 Produce a new instance of a cell grid.
 
virtual CellGridmakeInstance (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 CellGridfirstChild () const
 Return the first child.
 
CellGridfirstChild ()
 Access the first child.
 
const CellGridsecondChild () const
 Return the second child.
 
CellGridsecondChild ()
 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 > &parameterFlags) const
 Return true, if this grid contains the given parameter point.
 
double nonParametricVolume (const std::vector< double > &point, const std::vector< bool > &parameterFlags) const
 Get the volume relevant for the dimensions not considered parameters.
 
void 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. 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.
 

Detailed Description

A binary cell grid.

Author
Simon Platzer

Definition at line 42 of file CellGrid.h.

Member Function Documentation

◆ projectInterval()

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().

◆ updateIntegral()

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.


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