REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Public Member Functions | Protected Member Functions | Protected Attributes
TRestComponent Class Referenceabstract

Detailed Description

It defines a background/signal model distribution in a given parameter space (tipically x,y,en)

This class allows to ...


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

History of developments:

2023-December: First implementation of TRestComponent 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 38 of file TRestComponent.h.

#include <TRestComponent.h>

Inheritance diagram for TRestComponent:
TRestMetadata TRestComponentDataSet TRestComponentFormula

Public Member Functions

 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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
std::vector< std::string > GetVariables () const
 
Bool_t HasNodes ()
 It returns true if any nodes have been defined.
 
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.
 
void PrintNodes ()
 It prints out on screen the values of the parametric node.
 
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.
 
Int_t SetActiveNode (Double_t node)
 It returns the position of the fParameterizationNodes element for the variable name given by argument.
 
Int_t SetActiveNode (Int_t n)
 
void SetPrecision (const Float_t &pr)
 
void SetSamples (Int_t samples)
 
 TRestComponent ()
 Default constructor.
 
 TRestComponent (const char *cfgFileName, const std::string &name="")
 Constructor loading data from a config file. More...
 
 ~TRestComponent ()
 Default destructor.
 

Protected Member Functions

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.
 
Bool_t HasDensity ()
 
void InitFromConfigFile () override
 It customizes the retrieval of XML data values of this class.
 
Bool_t ValidNode (Double_t node)
 It returns true if the node has been properly identified.
 

Protected Attributes

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

Constructor & Destructor Documentation

◆ TRestComponent()

TRestComponent::TRestComponent ( 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 69 of file TRestComponent.cxx.

Member Function Documentation

◆ DrawComponent()

TCanvas * TRestComponent::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.

The method will produce 1- or 2-dimensional histograms of the drawVariables given in the argument. A third scan variable must be provided in order to show the distribution slices along the scan variable.

The binScanSize argument can be used to define the binSize of the scanning variables.

Finding canvas division scheme

Definition at line 448 of file TRestComponent.cxx.

◆ GetBinCenter()

Double_t TRestComponent::GetBinCenter ( Int_t  nDim,
const Int_t  bin 
)

It returns the bin center of the given component dimension.

It required implementation since I did not find a method inside THnD. Surprising.

Definition at line 381 of file TRestComponent.cxx.

◆ GetNormalizedRate()

Double_t TRestComponent::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.

The rate returned by the TRestComponent::GetRawRate method will be normalized to the corresponding parameter space. Thus, if the parameter consists of 2-spatial dimensions and 1-energy dimension, the returned rate will be expressed in standard REST units as, s-1 mm-2 keV-1.

The returned value may be recovered back with the desired units using the REST_Units namespace.

component->GetNormalizedRate( {0,0,0} ) * units("cm^-2*keV^-1")

The response matrix (if defined) will be used to convolute the expected rate. The TRestResponse metadata class defines the variable where the response will be applied.

Definition at line 217 of file TRestComponent.cxx.

◆ GetRate()

Double_t TRestComponent::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.

The response matrix (if defined) will be used to convolute the expected rate. The TRestResponse metadata class defines the variable where the response will be applied.

Definition at line 168 of file TRestComponent.cxx.

◆ GetRawRate()

Double_t TRestComponent::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.

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

If interpolation is enabled (which is disabled by default) the rate will be evaluated using interpolation with neighbour histogram cells.

Interpolation technique extracted from: https://math.stackexchange.com/questions/1342364/formula-for-n-dimensional-linear-interpolation

𝑓(𝑥0,𝑥1,𝑥2)=𝐴000(1−𝑥0)(1−𝑥1)(1−𝑥2)+𝐴001𝑥0(1−𝑥1)(1−𝑥2)+𝐴010(1−𝑥0)𝑥1(1−𝑥2)⋯+𝐴111𝑥0𝑥1𝑥

Definition at line 242 of file TRestComponent.cxx.

◆ Initialize()

void TRestComponent::Initialize ( )
overridevirtual

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.

Avoiding double initialization

Reimplemented from TRestMetadata.

Reimplemented in TRestComponentFormula, and TRestComponentDataSet.

Definition at line 86 of file TRestComponent.cxx.

◆ RegenerateHistograms()

void TRestComponent::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.

fPrecision is used to define the active node

Definition at line 114 of file TRestComponent.cxx.


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