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, 5)
 
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 GetActiveNode ()
 
Double_t GetActiveNodeValue ()
 
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...
 
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...
 
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
 
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...
 
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

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 ()
 
Bool_t HasNodes ()
 It returns true if any nodes have been defined. More...
 
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...
 

Protected Attributes

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 fInterpolation = true
 Enables or disables the interpolation at TRestComponentDataSet::GetRawRate. 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...
 
std::vector< std::string > fVariables
 A list with the branches that will be used to create the distribution space. More...
 

Constructor & Destructor Documentation

◆ TRestComponent() [1/2]

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.

◆ TRestComponent() [2/2]

TRestComponent::TRestComponent ( )

Default constructor.

Definition at line 53 of file TRestComponent.cxx.

◆ ~TRestComponent()

TRestComponent::~TRestComponent ( )

Default destructor.

Definition at line 78 of file TRestComponent.cxx.

Member Function Documentation

◆ DisableInterpolation()

void TRestComponent::DisableInterpolation ( )
inline

Definition at line 140 of file TRestComponent.h.

◆ 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 375 of file TRestComponent.cxx.

◆ EnableInterpolation()

void TRestComponent::EnableInterpolation ( )
inline

Definition at line 139 of file TRestComponent.h.

◆ FillHistograms()

virtual void TRestComponent::FillHistograms ( )
protectedpure virtual

◆ GetActiveNode()

Int_t TRestComponent::GetActiveNode ( )
inline

Definition at line 114 of file TRestComponent.h.

◆ GetActiveNodeValue()

Double_t TRestComponent::GetActiveNodeValue ( )
inline

Definition at line 115 of file TRestComponent.h.

◆ 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 308 of file TRestComponent.cxx.

◆ GetDensity()

THnD * TRestComponent::GetDensity ( )
inline

Definition at line 144 of file TRestComponent.h.

◆ GetDensityForActiveNode()

THnD * TRestComponent::GetDensityForActiveNode ( )

Definition at line 673 of file TRestComponent.cxx.

◆ GetDensityForNode()

THnD * TRestComponent::GetDensityForNode ( Double_t  value)

Definition at line 656 of file TRestComponent.cxx.

◆ GetDimensions()

size_t TRestComponent::GetDimensions ( )
inline

Definition at line 112 of file TRestComponent.h.

◆ GetHistogram() [1/6]

TH1D * TRestComponent::GetHistogram ( Double_t  node,
std::string  varName 
)

It returns a 1-dimensional projected histogram for the variable names provided in the argument.

Definition at line 685 of file TRestComponent.cxx.

◆ GetHistogram() [2/6]

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

Definition at line 709 of file TRestComponent.cxx.

◆ GetHistogram() [3/6]

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

Definition at line 735 of file TRestComponent.cxx.

◆ GetHistogram() [4/6]

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

Definition at line 695 of file TRestComponent.cxx.

◆ GetHistogram() [5/6]

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

Definition at line 719 of file TRestComponent.cxx.

◆ GetHistogram() [6/6]

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

Definition at line 746 of file TRestComponent.cxx.

◆ GetMonteCarloDataFrame()

ROOT::RDF::RNode TRestComponent::GetMonteCarloDataFrame ( Int_t  N = 100)

Definition at line 330 of file TRestComponent.cxx.

◆ GetNature()

std::string TRestComponent::GetNature ( ) const
inline

Definition at line 109 of file TRestComponent.h.

◆ GetNbins()

std::vector< Int_t > TRestComponent::GetNbins ( ) const
inline

Definition at line 119 of file TRestComponent.h.

◆ 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 185 of file TRestComponent.cxx.

◆ GetPrecision()

Float_t TRestComponent::GetPrecision ( )
inline

Definition at line 111 of file TRestComponent.h.

◆ GetRandom()

ROOT::RVecD TRestComponent::GetRandom ( )

Definition at line 312 of file TRestComponent.cxx.

◆ GetRanges()

std::vector< TVector2 > TRestComponent::GetRanges ( ) const
inline

Definition at line 118 of file TRestComponent.h.

◆ 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 136 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 210 of file TRestComponent.cxx.

◆ GetResponse()

TRestResponse * TRestComponent::GetResponse ( ) const
inline

Definition at line 110 of file TRestComponent.h.

◆ GetSamples()

Int_t TRestComponent::GetSamples ( )
inline

Definition at line 113 of file TRestComponent.h.

◆ GetTotalRate()

Double_t TRestComponent::GetTotalRate ( )

This method integrates the rate to all the parameter space defined in the density function. The result will be returned in s-1.

Definition at line 290 of file TRestComponent.cxx.

◆ GetVariableIndex()

Int_t TRestComponent::GetVariableIndex ( std::string  varName)
protected

It returns the position of the fVariable element for the variable name given by argument.

Definition at line 117 of file TRestComponent.cxx.

◆ GetVariables()

std::vector< std::string > TRestComponent::GetVariables ( ) const
inline

Definition at line 117 of file TRestComponent.h.

◆ HasDensity()

Bool_t TRestComponent::HasDensity ( )
inlineprotected

Definition at line 88 of file TRestComponent.h.

◆ HasNodes()

Bool_t TRestComponent::HasNodes ( )
inlineprotected

It returns true if any nodes have been defined.

Definition at line 86 of file TRestComponent.h.

◆ InitFromConfigFile()

void TRestComponent::InitFromConfigFile ( )
overrideprotectedvirtual

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

Reimplemented from TRestMetadata.

Reimplemented in TRestComponentDataSet, and TRestComponentFormula.

Definition at line 596 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.

Reimplemented from TRestMetadata.

Reimplemented in TRestComponentDataSet, and TRestComponentFormula.

Definition at line 86 of file TRestComponent.cxx.

◆ Interpolation()

Bool_t TRestComponent::Interpolation ( )
inline

Definition at line 138 of file TRestComponent.h.

◆ LoadResponse()

void TRestComponent::LoadResponse ( const TRestResponse resp)

Definition at line 523 of file TRestComponent.cxx.

◆ PrintMetadata()

void TRestComponent::PrintMetadata ( )
overridevirtual

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

Reimplemented from TRestMetadata.

Reimplemented in TRestComponentDataSet, and TRestComponentFormula.

Definition at line 538 of file TRestComponent.cxx.

◆ PrintNodes()

void TRestComponent::PrintNodes ( )

It prints out on screen the values of the parametric node.

Definition at line 587 of file TRestComponent.cxx.

◆ RegenerateActiveNodeDensity()

virtual void TRestComponent::RegenerateActiveNodeDensity ( )
inlinevirtual

Reimplemented in TRestComponentDataSet.

Definition at line 107 of file TRestComponent.h.

◆ 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 104 of file TRestComponent.cxx.

◆ SetActiveNode() [1/2]

Int_t TRestComponent::SetActiveNode ( Double_t  node)

It returns the position of the fParameterizationNodes element for the variable name given by argument.

Definition at line 634 of file TRestComponent.cxx.

◆ SetActiveNode() [2/2]

Int_t TRestComponent::SetActiveNode ( Int_t  n)
inline

Definition at line 131 of file TRestComponent.h.

◆ SetPrecision()

void TRestComponent::SetPrecision ( const Float_t &  pr)
inline

Definition at line 128 of file TRestComponent.h.

◆ SetSamples()

void TRestComponent::SetSamples ( Int_t  samples)
inline

Definition at line 136 of file TRestComponent.h.

◆ ValidNode()

Bool_t TRestComponent::ValidNode ( Double_t  node)
inlineprotected

It returns true if the node has been properly identified.

Definition at line 91 of file TRestComponent.h.

Field Documentation

◆ fActiveNode

Int_t TRestComponent::fActiveNode = -1
protected

It is used to define the node that will be accessed for rate retrieval.

Definition at line 59 of file TRestComponent.h.

◆ fCanvas

TCanvas* TRestComponent::fCanvas = nullptr
protected

A canvas for drawing the active node component.

Definition at line 83 of file TRestComponent.h.

◆ fInterpolation

Bool_t TRestComponent::fInterpolation = true
protected

Enables or disables the interpolation at TRestComponentDataSet::GetRawRate.

Definition at line 68 of file TRestComponent.h.

◆ fNature

std::string TRestComponent::fNature = "unknown"
protected

It defines the component type (unknown/signal/background)

Definition at line 41 of file TRestComponent.h.

◆ fNbins

std::vector<Int_t> TRestComponent::fNbins
protected

The number of bins in which we should divide each variable.

Definition at line 50 of file TRestComponent.h.

◆ fNodeDensity

std::vector<THnD*> TRestComponent::fNodeDensity
protected

The generated N-dimensional variable space density for a given node.

Definition at line 62 of file TRestComponent.h.

◆ fParameter

std::string TRestComponent::fParameter = ""
protected

It is used to parameterize a set of distribution densities (e.g. WIMP or axion mass)

Definition at line 53 of file TRestComponent.h.

◆ fParameterizationNodes

std::vector<Double_t> TRestComponent::fParameterizationNodes
protected

It defines the nodes of the parameterization (Initialized by the dataset)

Definition at line 56 of file TRestComponent.h.

◆ fPrecision

Float_t TRestComponent::fPrecision = 0.01
protected

A precision used to select the node value with a given range defined as a fraction of the value.

Definition at line 74 of file TRestComponent.h.

◆ fRandom

TRandom3* TRestComponent::fRandom = nullptr
protected

Internal process random generator.

Definition at line 77 of file TRestComponent.h.

◆ fRanges

std::vector<TVector2> TRestComponent::fRanges
protected

The range of each of the variables used to create the PDF distribution.

Definition at line 47 of file TRestComponent.h.

◆ fResponse

TRestResponse* TRestComponent::fResponse = nullptr
protected

A pointer to the detector response.

Definition at line 71 of file TRestComponent.h.

◆ fSamples

Int_t TRestComponent::fSamples = 0
protected

It introduces a fixed number of samples (if 0 it will take all available samples)

Definition at line 65 of file TRestComponent.h.

◆ fSeed

UInt_t TRestComponent::fSeed = 0
protected

Seed used in random generator.

Definition at line 80 of file TRestComponent.h.

◆ fVariables

std::vector<std::string> TRestComponent::fVariables
protected

A list with the branches that will be used to create the distribution space.

Definition at line 44 of file TRestComponent.h.


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