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

Detailed Description

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

This class ...

<TRestComponentDataSet name="agSignal_vacuum">
<!-- We add here all the axion-photon coupling components -->
<dataset filename="${DUST}/Dataset_BabyIAXO_XMM_mm_Vacuum.root" weight="1" />
<variable name="final_posX" range="(-10,10)mm" bins="10" />
<variable name="final_posY" range="(-10,10)mm" bins="10" />
<variable name="final_energy" range="(0,10)keV" bins="20" />
<parameter name="weights" value="{NGamma}"/>
<parameter name="parameter" value="final_mass" />
<parameter name="parameterizationNodes" value="" />
It defines a background/signal model distribution in a given parameter space (tipically x,...
restRoot
[0] TRestComponentDataSet comp("components.rml", "agSignal_vacuum");
[1] comp.LoadDataSets()
[2] TFile *f = TFile::Open("vacuumComponent.root", "RECREATE");
[3] comp.Write("agSignal_vacuum");
restRoot vacuumComponents.root
[0] TCanvas *c = agVacuum->DrawComponent( { "final_posX", "final_posY"}, {"final_energy"}, 2);
[1] c->Print("component_hitmaps.png");

method" method" method" method" method" @code restRoot vacuumComponents.root [0] TCanvas *c = agVacuum->DrawComponent( { "final_energy"}, {"final_posX", "final_posY"}, 2); [1] c->Print("component_hitmaps.png"); \endcode In both cases each plot will regroup 2 bins. @htmlonly <style>div.image img[src="component_spectra.png"]{width:750px;}</style> \endhtmlonly @image{inline} html component_spectra.png "A 1-dimensional histogram scan versus the `final_posX` and `final_posY` observables, generated by the DrawComponent method" DrawComponent method" DrawComponent method" DrawComponent method" DrawComponent method"


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

History of developments:

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

#include <TRestComponentDataSet.h>

Inheritance diagram for TRestComponentDataSet:
TRestComponent TRestMetadata

Public Member Functions

 ClassDefOverride (TRestComponentDataSet, 4)
 
void InitFromConfigFile () override
 It customizes the retrieval of XML data values of this class. 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...
 
Bool_t IsDataSetLoaded ()
 
void PrintMetadata () override
 Prints on screen the information about the metadata members of TRestAxionSolarFlux. More...
 
void PrintStatistics ()
 It prints out the statistics available for each parametric node. More...
 
 TRestComponentDataSet ()
 Default constructor. More...
 
 TRestComponentDataSet (const char *cfgFileName, const std::string &name)
 Constructor loading data from a config file. More...
 
 ~TRestComponentDataSet ()
 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

std::vector< Int_t > ExtractNodeStatistics ()
 It returns a vector with the number of entries found for each parameterization node. More...
 
std::vector< Double_t > ExtractParameterizationNodes ()
 It returns a vector with all the different values found on the dataset column for the user given parameterization variable. More...
 
void FillHistograms () override
 It will produce a histogram with the distribution defined using the variables and the weights for each of the parameter nodes. More...
 
Bool_t LoadDataSets ()
 A method responsible to import a list of TRestDataSet into fDataSet and check that the variables and weights defined by the user can be found inside the dataset. More...
 
void RegenerateActiveNodeDensity () override
 It will regenerate the density histogram for the active node. It is practical in the case when the number of samples fSamples is lower than the total number of samples. The density distribution will be then re-generated with a different random sample. More...
 
Bool_t VariablesOk ()
 It returns true if all variables have been found inside TRestDataSet. More...
 
Bool_t WeightsOk ()
 It returns true if all weights have been found inside TRestDataSet. 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 Member Functions

Bool_t ValidDataSet ()
 Takes care of initializing datasets if have not been initialized. On sucess it returns true. More...
 

Private Attributes

TRestDataSet fDataSet
 The dataset used to initialize the distribution. More...
 
std::vector< std::string > fDataSetFileNames
 The filename of the dataset used. More...
 
Bool_t fDataSetLoaded = false
 It is true of the dataset was loaded without issues. More...
 
TVector2 fDFRange = TVector2(0, 0)
 It creates a sample subset using a range definition. More...
 
std::vector< Int_t > fNSimPerNode
 
long long unsigned int fSplitEntries = 600000000
 It helps to split large datasets when extracting the parameterization nodes. More...
 
std::vector< Int_t > fTotalSamples
 It defines the total number of entries for each parameterization node (Initialized by the dataset) More...
 
std::vector< std::string > fWeights
 A list with the dataset columns used to weight the distribution density and define rate. 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

◆ TRestComponentDataSet() [1/2]

TRestComponentDataSet::TRestComponentDataSet ( )

Default constructor.

Definition at line 96 of file TRestComponentDataSet.cxx.

◆ TRestComponentDataSet() [2/2]

TRestComponentDataSet::TRestComponentDataSet ( 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 117 of file TRestComponentDataSet.cxx.

◆ ~TRestComponentDataSet()

TRestComponentDataSet::~TRestComponentDataSet ( )

Default destructor.

Definition at line 101 of file TRestComponentDataSet.cxx.

Member Function Documentation

◆ ExtractNodeStatistics()

std::vector< Int_t > TRestComponentDataSet::ExtractNodeStatistics ( )
protected

It returns a vector with the number of entries found for each parameterization node.

If fNSimPerNode has already been initialized it will directly return its value.

fPrecision will be used to include a thin range where to select the node values. The value defines the range with a fraction proportional to the parameter value.

Definition at line 416 of file TRestComponentDataSet.cxx.

◆ ExtractParameterizationNodes()

std::vector< Double_t > TRestComponentDataSet::ExtractParameterizationNodes ( )
protected

It returns a vector with all the different values found on the dataset column for the user given parameterization variable.

If fParameterizationNodes has already been initialized it will directly return its value.

Definition at line 379 of file TRestComponentDataSet.cxx.

◆ FillHistograms()

void TRestComponentDataSet::FillHistograms ( )
overrideprotectedvirtual

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

Implements TRestComponent.

Definition at line 220 of file TRestComponentDataSet.cxx.

◆ InitFromConfigFile()

void TRestComponentDataSet::InitFromConfigFile ( )
overridevirtual

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

Reimplemented from TRestComponent.

Definition at line 202 of file TRestComponentDataSet.cxx.

◆ Initialize()

void TRestComponentDataSet::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 128 of file TRestComponentDataSet.cxx.

◆ IsDataSetLoaded()

Bool_t TRestComponentDataSet::IsDataSetLoaded ( )
inline

Definition at line 81 of file TRestComponentDataSet.h.

◆ LoadDataSets()

Bool_t TRestComponentDataSet::LoadDataSets ( )
protected

A method responsible to import a list of TRestDataSet into fDataSet and check that the variables and weights defined by the user can be found inside the dataset.

Definition at line 458 of file TRestComponentDataSet.cxx.

◆ PrintMetadata()

void TRestComponentDataSet::PrintMetadata ( )
overridevirtual

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

Reimplemented from TRestComponent.

Definition at line 139 of file TRestComponentDataSet.cxx.

◆ PrintStatistics()

void TRestComponentDataSet::PrintStatistics ( )

It prints out the statistics available for each parametric node.

Definition at line 177 of file TRestComponentDataSet.cxx.

◆ RegenerateActiveNodeDensity()

void TRestComponentDataSet::RegenerateActiveNodeDensity ( )
overrideprotectedvirtual

It will regenerate the density histogram for the active node. It is practical in the case when the number of samples fSamples is lower than the total number of samples. The density distribution will be then re-generated with a different random sample.

Reimplemented from TRestComponent.

Definition at line 313 of file TRestComponentDataSet.cxx.

◆ ValidDataSet()

Bool_t TRestComponentDataSet::ValidDataSet ( )
private

Takes care of initializing datasets if have not been initialized. On sucess it returns true.

Definition at line 542 of file TRestComponentDataSet.cxx.

◆ VariablesOk()

Bool_t TRestComponentDataSet::VariablesOk ( )
protected

It returns true if all variables have been found inside TRestDataSet.

Definition at line 510 of file TRestComponentDataSet.cxx.

◆ WeightsOk()

Bool_t TRestComponentDataSet::WeightsOk ( )
protected

It returns true if all weights have been found inside TRestDataSet.

Definition at line 525 of file TRestComponentDataSet.cxx.

Field Documentation

◆ fDataSet

TRestDataSet TRestComponentDataSet::fDataSet
private

The dataset used to initialize the distribution.

TODO we need to define multiple datasets and weigth. The weight will be used to create a model, such as weighting different background contaminations or different signal coupling contributions. TODO Then we probably need here a std::vector <TRestDataSet> and another vector with the weights (isotope activity/flux/etc).

Definition at line 55 of file TRestComponentDataSet.h.

◆ fDataSetFileNames

std::vector<std::string> TRestComponentDataSet::fDataSetFileNames
private

The filename of the dataset used.

Definition at line 45 of file TRestComponentDataSet.h.

◆ fDataSetLoaded

Bool_t TRestComponentDataSet::fDataSetLoaded = false
private

It is true of the dataset was loaded without issues.

Definition at line 64 of file TRestComponentDataSet.h.

◆ fDFRange

TVector2 TRestComponentDataSet::fDFRange = TVector2(0, 0)
private

It creates a sample subset using a range definition.

Definition at line 61 of file TRestComponentDataSet.h.

◆ fNSimPerNode

std::vector<Int_t> TRestComponentDataSet::fNSimPerNode
private

It defines the number of entries in the sample for each parameterization node (Initialized by the dataset)

Definition at line 39 of file TRestComponentDataSet.h.

◆ fSplitEntries

long long unsigned int TRestComponentDataSet::fSplitEntries = 600000000
private

It helps to split large datasets when extracting the parameterization nodes.

Definition at line 58 of file TRestComponentDataSet.h.

◆ fTotalSamples

std::vector<Int_t> TRestComponentDataSet::fTotalSamples
private

It defines the total number of entries for each parameterization node (Initialized by the dataset)

Definition at line 42 of file TRestComponentDataSet.h.

◆ fWeights

std::vector<std::string> TRestComponentDataSet::fWeights
private

A list with the dataset columns used to weight the distribution density and define rate.

Definition at line 35 of file TRestComponentDataSet.h.


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