Herwig
7.2.1
|
A simple cell grid providing basic adaption and sampling. More...
#include <SimpleCellGrid.h>
Classes | |
struct | Counter |
A simple counter to store information used for adaption. More... | |
Public Member Functions | |
SimpleCellGrid () | |
Default constructor. | |
SimpleCellGrid (const std::vector< double > &newLowerLeft, const std::vector< double > &newUpperRight, bool keepWeightInformation=true, 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 void | split (std::size_t newSplitDimension, double newSplitCoordinate) |
Split this cell grid in the given dimension and coordinate, if it is a leaf. | |
virtual void | splitter (size_t dim, int rat) |
const SimpleCellGrid & | firstChild () const |
Return the first child. | |
SimpleCellGrid & | firstChild () |
Access the first child. | |
const SimpleCellGrid & | secondChild () const |
Return the second child. | |
SimpleCellGrid & | secondChild () |
Access the second child. | |
const std::vector< std::pair< Counter, Counter > > & | weightInformation () const |
Return weight information for adaption steps. | |
std::vector< std::pair< Counter, Counter > > & | weightInformation () |
Access weight information for adaption steps. | |
virtual void | updateWeightInformation (const std::vector< double > &p, double w) |
Update the weight information for the given point. | |
void | adjustReferenceWeight (double w) |
Adjust the reference weight. | |
double | getReferenceWeight () const |
Return the reference weight. | |
virtual void | adapt (double gain, double epsilon, std::set< SimpleCellGrid *> &newCells) |
Perform a default adaption step, splitting along the dimension which shows up the largest difference in average weights; if this exceeds gain, perform the split. | |
virtual void | setWeights () |
Update the weights of the cells from information accumulated so far. | |
template<class RndGenerator > | |
void | sampleFlatPoint (std::vector< double > &p, RndGenerator &rnd) const |
Sample a point flat in this cell. | |
template<class RndGenerator > | |
void | sampleFlatPoint (std::vector< double > &p, const std::vector< bool > ¶meterFlags, RndGenerator &rnd) const |
Sample a point flat in this cell, keeping parameters fixed. | |
template<class RndGenerator , class Function > | |
void | explore (std::size_t nPoints, RndGenerator &rnd, Function &f, std::set< SimpleCellGrid *> &newCells, std::ostream &warn) |
Explore the cell grid, given a number of points to be sampled in each cell; the weights of the cell will contain the maximum weight encountered. More... | |
template<class RndGenerator > | |
SimpleCellGrid * | selectCell (RndGenerator &rnd) |
Select a cell. | |
template<class RndGenerator , class Function > | |
double | sample (RndGenerator &rnd, Function &f, std::vector< double > &p, bool unweight, bool adjustReference) |
Sample a point and return its weight. | |
template<class RndGenerator , class Function > | |
std::pair< double, double > | generate (RndGenerator &rnd, Function &f, std::vector< double > &p) |
Sample a point and return its weight. | |
template<class RndGenerator , class Function > | |
std::pair< double, double > | generate (RndGenerator &rnd, Function &f, std::vector< double > &p, const std::vector< bool > ¶meterFlags) |
Sample a point and return its weight. | |
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. | |
Public Member Functions inherited from ExSample::CellGrid | |
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 () |
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. | |
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. | |
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 Attributes | |
std::vector< std::pair< Counter, Counter > > | theWeightInformation |
Weight information for adaption steps. | |
double | theReferenceWeight |
The reference weight to be used for unweighting. | |
A simple cell grid providing basic adaption and sampling.
Definition at line 22 of file SimpleCellGrid.h.
|
inline |
Explore the cell grid, given a number of points to be sampled in each cell; the weights of the cell will contain the maximum weight encountered.
If newCells is non-empty explore only these cells, otherwise explore all cells.
Definition at line 233 of file SimpleCellGrid.h.
References explore(), firstChild(), ExSample::CellGrid::isLeaf(), ExSample::CellGrid::lowerLeft(), ExSample::SimpleCellGrid::Counter::nPoints, sampleFlatPoint(), secondChild(), ExSample::CellGrid::size(), and updateWeightInformation().
Referenced by explore().