REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Public Member Functions | Protected Member Functions | Private Attributes
TRestComponentFormula Class Reference

Detailed Description

It defines an analytical component model distribution in a given parameter space (tipically x,y,en)

This class allows to ...

<TRestComponentFormula name="DummyFormulaComponent">
        <variable name="final_posX" range="(-10,10)mm" bins="100" />
        <variable name="final_posY" range="(-1,1)cm" bins="100" />
        <variable name="final_energy" range="(0,10)keV" bins="20" />

        <parameter name="units" value="cm^-2*keV^-1" />

           // A spatial gaussian component contribution (energy normalized)
        <formula name="gaus" expression="1E-${REST_BCK_LEVEL} *

TMath::Exp(-[final_posX]*[final_posX]-[final_posY]*[final_posY])/(1+[final_energy])" /> // A flat contribution <formula name="flat" expression="1E-7" /> </TRestComponentFormula>


REST-for-Physics - Software for Rare Event Searches Toolkit

History of developments:

2023-December: First implementation of TRestComponentFormula Javier Galan

Author
: Javier Galan (javie.nosp@m.r.ga.nosp@m.lan.l.nosp@m.acar.nosp@m.ra@ce.nosp@m.rn.c.nosp@m.h)

Definition at line 32 of file TRestComponentFormula.h.

#include <TRestComponentFormula.h>

Inheritance diagram for TRestComponentFormula:
TRestComponent TRestMetadata

Public Member Functions

 ClassDefOverride (TRestComponentFormula, 1)
 
Double_t GetFormulaRate (std::vector< Double_t > point)
 It returns the intensity/rate (in seconds) corresponding to the formula evaluated at the position of the parameter space given by point and integrated to the parameter space cell volume. More...
 
void Initialize () override
 It will initialize the data frame with the filelist and column names (or observables) that have been defined by the user. More...
 
void PrintMetadata () override
 Prints on screen the information about the metadata members of TRestAxionSolarFlux. More...
 
 TRestComponentFormula ()
 Default constructor. More...
 
 TRestComponentFormula (const char *cfgFileName, const std::string &name)
 Constructor loading data from a config file. More...
 
 ~TRestComponentFormula ()
 Default destructor. More...
 
- Public Member Functions inherited from TRestComponent
 ClassDefOverride (TRestComponent, 6)
 
void DisableInterpolation ()
 
TCanvas * DrawComponent (std::vector< std::string > drawVariables, std::vector< std::string > scanVariables, Int_t binScanSize=1, TString drawOption="")
 A method allowing to draw a series of plots representing the density distributions. More...
 
void EnableInterpolation ()
 
Int_t FindActiveNode (Double_t node)
 It returns the position of the fParameterizationNodes element for the variable name given by argument. More...
 
Int_t GetActiveNode ()
 
Double_t GetActiveNodeValue ()
 
Double_t GetAllNodesIntegratedRate ()
 This method returns the integrated total rate for all the nodes The result will be returned in s-1. More...
 
Double_t GetBinCenter (Int_t nDim, const Int_t bin)
 It returns the bin center of the given component dimension. More...
 
THnD * GetDensity ()
 
THnD * GetDensityForActiveNode ()
 
THnD * GetDensityForNode (Double_t value)
 
size_t GetDimensions ()
 
TH1D * GetHistogram (Double_t node, std::string varName)
 It returns a 1-dimensional projected histogram for the variable names provided in the argument. More...
 
TH2D * GetHistogram (Double_t node, std::string varName1, std::string varName2)
 It returns the 2-dimensional projected histogram for the variable names provided in the argument. More...
 
TH3D * GetHistogram (Double_t node, std::string varName1, std::string varName2, std::string varName3)
 It returns the 3-dimensional projected histogram for the variable names provided in the argument. More...
 
TH1D * GetHistogram (std::string varName)
 It returns a 1-dimensional projected histogram for the variable names provided in the argument. It will recover the histogram corresponding to the active node. More...
 
TH2D * GetHistogram (std::string varName1, std::string varName2)
 It returns a 2-dimensional projected histogram for the variable names provided in the argument. It will recover the histogram corresponding to the active node. More...
 
TH3D * GetHistogram (std::string varName1, std::string varName2, std::string varName3)
 It returns a 3-dimensional projected histogram for the variable names provided in the argument. It will recover the histogram corresponding to the active node. More...
 
Double_t GetMaxRate ()
 This method returns the total rate for the node that has the highest contribution The result will be returned in s-1. More...
 
ROOT::RDF::RNode GetMonteCarloDataFrame (Int_t N=100)
 
std::string GetNature () const
 
std::vector< Int_t > GetNbins () const
 
Double_t GetNormalizedRate (std::vector< Double_t > point)
 It returns the intensity/rate (in seconds) corresponding to the generated distribution or formula evaluated at the position of the parameter space given by point. More...
 
std::vector< Double_t > GetParameterizationNodes ()
 
Float_t GetPrecision ()
 
ROOT::RVecD GetRandom ()
 
std::vector< TVector2 > GetRanges () const
 
Double_t GetRate (std::vector< Double_t > point)
 It returns the intensity/rate (in seconds) corresponding to the generated distribution or formula evaluated at the position of the parameter space given by point. More...
 
Double_t GetRawRate (std::vector< Double_t > point)
 It returns the intensity/rate (in seconds) corresponding to the generated distribution or formula evaluated at the position of the parameter space given by point. The returned rate is integrated to the granularity of the parameter space (cell size). To get a normalized rate use TRestComponent::GetNormalizedRate. More...
 
TRestResponseGetResponse () const
 
Int_t GetSamples ()
 
Double_t GetTotalRate ()
 This method integrates the rate to all the parameter space defined in the density function. The result will be returned in s-1. More...
 
std::vector< std::string > GetVariables () const
 
Bool_t HasNodes ()
 It returns true if any nodes have been defined. More...
 
void Initialize () override
 It initializes the random number. We avoid to define the section name here since we will never define a TRestComponent section in our RML file, since this class is pure virtual. It will be the inherited class the responsible to define the section name. More...
 
Bool_t Interpolation ()
 
void LoadResponse (const TRestResponse &resp)
 
void PrintMetadata () override
 Prints on screen the information about the metadata members of TRestAxionSolarFlux. More...
 
void PrintNodes ()
 It prints out on screen the values of the parametric node. More...
 
void PrintStatistics ()
 
virtual void RegenerateActiveNodeDensity ()
 
void RegenerateHistograms (UInt_t seed=0)
 It will produce a histogram with the distribution defined using the variables and the weights for each of the parameter nodes. More...
 
void RegenerateParametricNodes (Double_t from, Double_t to, Double_t step, Bool_t expIncrease=false)
 It allows to produce a parameter nodes list providing the initial value, the final value and the step. We might chose the step growing in linear increase steps or exponential. Linear is the default value. More...
 
Int_t SetActiveNode (Double_t node)
 It returns the position of the fParameterizationNodes element for the variable name given by argument. More...
 
Int_t SetActiveNode (Int_t n)
 
void SetPrecision (const Float_t &pr)
 
void SetSamples (Int_t samples)
 
 TRestComponent ()
 Default constructor. More...
 
 TRestComponent (const char *cfgFileName, const std::string &name="")
 Constructor loading data from a config file. More...
 
 ~TRestComponent ()
 Default destructor. More...
 

Protected Member Functions

void FillHistograms () override
 It will produce a histogram with the distribution using the formula contributions. More...
 
void InitFromConfigFile () override
 It customizes the retrieval of XML data values of this class. More...
 
- Protected Member Functions inherited from TRestComponent
virtual void FillHistograms ()=0
 
Int_t GetVariableIndex (std::string varName)
 It returns the position of the fVariable element for the variable name given by argument. More...
 
Bool_t HasDensity ()
 
void InitFromConfigFile () override
 It customizes the retrieval of XML data values of this class. More...
 
Bool_t ValidNode (Double_t node)
 It returns true if the node has been properly identified. More...
 

Private Attributes

std::vector< TFormula > fFormulas
 A vector of formulas that will be added up to integrate a given rate. More...
 
std::string fFormulaUnits = "cm^-2*keV^-1"
 The formulas should be expressed in the following units. More...
 

Additional Inherited Members

- Protected Attributes inherited from TRestComponent
Int_t fActiveNode = -1
 It is used to define the node that will be accessed for rate retrieval. More...
 
TCanvas * fCanvas = nullptr
 A canvas for drawing the active node component. More...
 
Bool_t fExponential = false
 It true the parametric values automatically generated will grow exponentially. More...
 
Double_t fFirstParameterValue = 0
 It defines the first parametric node value in case of automatic parameter generation. More...
 
Bool_t fInterpolation = true
 Enables or disables the interpolation at TRestComponentDataSet::GetRawRate. More...
 
Double_t fLastParameterValue = 0
 It defines the upper limit for the automatic parametric node values generation. More...
 
std::string fNature = "unknown"
 It defines the component type (unknown/signal/background) More...
 
std::vector< Int_t > fNbins
 The number of bins in which we should divide each variable. More...
 
std::vector< THnD * > fNodeDensity
 The generated N-dimensional variable space density for a given node. More...
 
std::string fParameter = ""
 It is used to parameterize a set of distribution densities (e.g. WIMP or axion mass) More...
 
std::vector< Double_t > fParameterizationNodes
 It defines the nodes of the parameterization (Initialized by the dataset) More...
 
Float_t fPrecision = 0.01
 A precision used to select the node value with a given range defined as a fraction of the value. More...
 
TRandom3 * fRandom = nullptr
 Internal process random generator. More...
 
std::vector< TVector2 > fRanges
 The range of each of the variables used to create the PDF distribution. More...
 
TRestResponsefResponse = nullptr
 A pointer to the detector response. More...
 
Int_t fSamples = 0
 It introduces a fixed number of samples (if 0 it will take all available samples) More...
 
UInt_t fSeed = 0
 Seed used in random generator. More...
 
Double_t fStepParameterValue = 0
 It defines the increasing step for automatic parameter list generation. More...
 
std::vector< std::string > fVariables
 A list with the branches that will be used to create the distribution space. More...
 

Constructor & Destructor Documentation

◆ TRestComponentFormula() [1/2]

TRestComponentFormula::TRestComponentFormula ( const char *  cfgFileName,
const std::string &  name 
)

Constructor loading data from a config file.

If no configuration path is defined using TRestMetadata::SetConfigFilePath the path to the config file must be specified using full path, absolute or relative.

The default behaviour is that the config file must be specified with full path, absolute or relative.

Parameters
cfgFileNameA const char* giving the path to an RML file.
nameThe name of the specific metadata. It will be used to find the corresponding TRestAxionMagneticField section inside the RML.

Definition at line 82 of file TRestComponentFormula.cxx.

◆ TRestComponentFormula() [2/2]

TRestComponentFormula::TRestComponentFormula ( )

Default constructor.

Definition at line 66 of file TRestComponentFormula.cxx.

◆ ~TRestComponentFormula()

TRestComponentFormula::~TRestComponentFormula ( )

Default destructor.

Definition at line 94 of file TRestComponentFormula.cxx.

Member Function Documentation

◆ FillHistograms()

void TRestComponentFormula::FillHistograms ( )
overrideprotectedvirtual

It will produce a histogram with the distribution using the formula contributions.

For the moment this method will just fill one node (without fParameter). But if the component expression depends on the node parameter it might require further development.

TODO: The histogram is filled just by evaluating the formula, but it would be more realistic that we fill the histograms with a number N of entries that mimic a MC generation scheme similar to TRestComponentDataSet.

Implements TRestComponent.

Definition at line 149 of file TRestComponentFormula.cxx.

◆ GetFormulaRate()

Double_t TRestComponentFormula::GetFormulaRate ( std::vector< Double_t >  point)

It returns the intensity/rate (in seconds) corresponding to the formula evaluated at the position of the parameter space given by point and integrated to the parameter space cell volume.

The size of the point vector must have the same dimension as the dimensions of the variables of the distribution.

Definition at line 116 of file TRestComponentFormula.cxx.

◆ InitFromConfigFile()

void TRestComponentFormula::InitFromConfigFile ( )
overrideprotectedvirtual

It customizes the retrieval of XML data values of this class.

For some reason I need to do this manually. Dont understand why!

Reimplemented from TRestComponent.

Definition at line 235 of file TRestComponentFormula.cxx.

◆ Initialize()

void TRestComponentFormula::Initialize ( )
overridevirtual

It will initialize the data frame with the filelist and column names (or observables) that have been defined by the user.

Reimplemented from TRestComponent.

Definition at line 100 of file TRestComponentFormula.cxx.

◆ PrintMetadata()

void TRestComponentFormula::PrintMetadata ( )
overridevirtual

Prints on screen the information about the metadata members of TRestAxionSolarFlux.

Reimplemented from TRestComponent.

Definition at line 213 of file TRestComponentFormula.cxx.

Field Documentation

◆ fFormulas

std::vector<TFormula> TRestComponentFormula::fFormulas
private

A vector of formulas that will be added up to integrate a given rate.

Definition at line 35 of file TRestComponentFormula.h.

◆ fFormulaUnits

std::string TRestComponentFormula::fFormulaUnits = "cm^-2*keV^-1"
private

The formulas should be expressed in the following units.

Definition at line 38 of file TRestComponentFormula.h.


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