#include <RedistributeGeometryDecorator.hpp>
Public Member Functions | |
double | density (Position bfr) const override |
Position | generatePosition () const override |
Geometry * | geometry () const |
double | SigmaX () const override |
double | SigmaY () const override |
double | SigmaZ () const override |
![]() | |
virtual double | density (Position bfr) const =0 |
virtual int | dimension () const =0 |
virtual Position | generatePosition () const =0 |
virtual double | SigmaX () const =0 |
virtual double | SigmaY () const =0 |
virtual double | SigmaZ () const =0 |
![]() | |
template<class T > | |
T * | find (bool setup=true) const |
template<class T > | |
T * | interface (int levels=-999999, bool setup=true) const |
virtual string | itemName () const |
void | setup () |
string | typeAndName () const |
![]() | |
Item (const Item &)=delete | |
virtual | ~Item () |
void | addChild (Item *child) |
const vector< Item * > & | children () const |
virtual void | clearItemListProperty (const PropertyDef *property) |
void | destroyChild (Item *child) |
virtual bool | getBoolProperty (const PropertyDef *property) const |
virtual vector< double > | getDoubleListProperty (const PropertyDef *property) const |
virtual double | getDoubleProperty (const PropertyDef *property) const |
virtual string | getEnumProperty (const PropertyDef *property) const |
virtual int | getIntProperty (const PropertyDef *property) const |
virtual vector< Item * > | getItemListProperty (const PropertyDef *property) const |
virtual Item * | getItemProperty (const PropertyDef *property) const |
virtual string | getStringProperty (const PropertyDef *property) const |
int | getUtilityProperty (string name) const |
virtual void | insertIntoItemListProperty (const PropertyDef *property, int index, Item *item) |
Item & | operator= (const Item &)=delete |
Item * | parent () const |
virtual void | removeFromItemListProperty (const PropertyDef *property, int index) |
virtual void | setBoolProperty (const PropertyDef *property, bool value) |
virtual void | setDoubleListProperty (const PropertyDef *property, vector< double > value) |
virtual void | setDoubleProperty (const PropertyDef *property, double value) |
virtual void | setEnumProperty (const PropertyDef *property, string value) |
virtual void | setIntProperty (const PropertyDef *property, int value) |
virtual void | setItemProperty (const PropertyDef *property, Item *item) |
virtual void | setStringProperty (const PropertyDef *property, string value) |
void | setUtilityProperty (string name, int value) |
virtual string | type () const |
Protected Member Functions | |
RedistributeGeometryDecorator () | |
virtual double | maxWeight () const =0 |
void | setupSelfAfter () override |
virtual double | weight (Position bfr) const =0 |
![]() | |
Geometry () | |
Random * | random () const |
void | setupSelfBefore () override |
![]() | |
SimulationItem () | |
virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
virtual void | setupSelfAfter () |
virtual void | setupSelfBefore () |
![]() | |
Item () | |
Private Types | |
using | BaseType = Geometry |
using | ItemType = RedistributeGeometryDecorator |
Private Attributes | |
Geometry * | _geometry |
double | _maxWeight |
double | _norm |
Friends | |
class | ItemRegistry |
The abstract RedistributeGeometryDecorator class implements a decorator that adjusts another geometry by multiplying the density with some abstract weight function
Each RedistributeGeometryDecorator subclass must implement the virtual functions dimension(), weight() and maxWeight(). The decorator renormalizes the distribution by using the importance sampling method from the original distribution. The random positions are generated using the rejection method with the reference distribution the original density. The current implementation does not properly adjust the surface densities along the coordinate axes.
This item type is displayed only if the Boolean expression "Level2" evaluates to true after replacing the names by true or false depending on their presence.
|
inlineprotected |
Default constructor for abstract Item subclass RedistributeGeometryDecorator : "a decorator that redistributes another geometry" .
|
overridevirtual |
This function returns the normalized density
Implements Geometry.
|
overridevirtual |
This function generates a random position from the geometry using the rejection method. It draws a random point from the probability density
Implements Geometry.
|
inline |
This function returns the value of the discoverable item property geometry : "the geometry for which the density will be redistributed" .
|
protectedpure virtual |
This pure virtual function, to be implemented by a subclass, gives the maximum value of the weight function. This value is used in the rejection method.
Implemented in AxPowerLawRedistributeGeometryDecorator, and SphePowerLawRedistributeGeometryDecorator.
|
overrideprotectedvirtual |
This function calculates the norm using the importance sampling method from the original distribution. It also calculates the factor
Reimplemented from SimulationItem.
|
overridevirtual |
This function returns the X-axis surface density, i.e. the integration of the density along the entire X-axis,
For a general geometry this decorator will not have an analytical solution for this integral. We use the X-axis surface density of the original distribution.
Implements Geometry.
|
overridevirtual |
This function returns the Y-axis surface density, i.e. the integration of the density along the entire Y-axis,
For a general geometry this decorator will not have an analytical solution for this integral. We use the Y-axis surface density of the original distribution.
Implements Geometry.
|
overridevirtual |
This function returns the Z-axis surface density, i.e. the integration of the density along the entire Z-axis,
For a general geometry this decorator will not have an analytical solution for this integral. We use the Z-axis surface density of the original distribution.
Implements Geometry.
|
protectedpure virtual |
This pure virtual function, to be implemented by a subclass, gives the weight function's value at a given position. This function does not need to be normalized.
Implemented in AxPowerLawRedistributeGeometryDecorator, and SphePowerLawRedistributeGeometryDecorator.