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

Detailed Description

A process that allows to define several signal IDs as veto channels. The data from the vetoes is then removed from the events and stored as separate observables.

TRestRawVetoAnalysisProcess allows to define several signal IDs as vetoes and to group them. This process adds the observables veto_PeakTime and veto_MaxPeakAmplitude to the analysis tree.

RML file structure

To define a veto you have two options:

Option 1: Define the veto by adding a parameter "vetoSignalId" with a comma-separated list of the veto signal IDs. In this case the observables "veto_PeakTime" and "veto_MaxPeakAmplitude" are added to the analysis tree. Each observable contains a map with a different key for each signal ID.

<addProcess type="TRestRawVetoAnalysisProcess" name="veto" value='ON' verboseLevel="info"
vetoSignalId="4622,4624,..." >

You can add parameters "baseLineRange" and "range":

<parameter name="baseLineRange" value="(10,100)" />
<parameter name="range" value="(10,500)" />

Option 2: Put the vetoes in groups by adding xml blocks "vetoGroup" with the parameters "name" and "signalIDs".

<vetoGroup name="top" signalIDs="4624,4626" />
<vetoGroup name="front" signalIDs="4660" />
<vetoGroup name="left" signalIDs="1,2,3,4,5,6" />

In this case, for each group a different pair of observables is saved. In this example they would be named "veto_PeakTime_top", "veto_PeakTime_front","veto_PeakTime_left" (and the same for "MaxPeakAmplitude"), where each again contains a map with the signal ID as key.

Including a threshold for the vetoes

Two observable "VetoAboveThreshold" and "NVetoAboveThreshold" can be added to the analysis tree by adding a parameter "threshold" to the rml. If for an event any of the veto signals is above the specified threshold, "VetoAboveThreshold" is set to 1, else it is 0. "NVetoAboveThreshold" contains the number of vetoes which have a signal above threshold.

Including a peak time window

By adding a parameter "timeWindow" with two comma-separated values (e.g. "300,500") to the rml, two additional observables are added to the analysis Tree: "VetoInTimeWindow" is set to 1, when the peak time of at least one veto signal is within the specified time window, else it is 0. "NVetoInTimeWindow" contains the number of veto signals per event, where the peak time is within the window.

Veto Noise Reduction

The noise signals in the veto data is removed with the GetPointsOverThreshold() method. This can be controlled by defining following parameter in the RML file: PointsOverThresholdPars: sets the parameters of the PointsOverThreshold() method. Standard values are "1.5, 1.5, 4". Signals that are identified as noise get the amplitude 0 assigned. It is advised to run the TRestRawBaseLineCorrectionProcess before on the veto signals.

Methods to retrieve metadata

The method GetVetoSignalIDs() returns a vector<double> of the veto signal IDs, if the vetoes were defined using option 1. In case the vetoes were defined in groups, one can use the method GetVetoGroups(), which returns a std::pair<vector<string>,vector<string>>, which contains in the first entry the name of the veto group, and in the second the comma separated string of the corresponding signal IDs. The signal IDs can susequently be converted into a vector<double> by using the TRestStringHelper::StringToElements() method.


Warning
⚠ REST is under continous development. This documentation is offered to you by the REST community. Your HELP is needed to keep this code up to date. Your feedback will be worth to support this software, please report any problems/suggestions you may find while using it at The REST Framework forum. You are welcome to contribute fixing typos, updating information or adding/proposing new contributions. See also our Contribution Guide.

RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2019-Nov: First implementation Cristina Margalejo/Javier Galan

2020-Dec: Added multi-VETO channel capability Konrad Altenmueller

2021-Jan: Added veto groups and observables accordingly Konrad Altenmueller

2021-Mar: Added threshold parameter and observables "VetoAboveThreshold" and "NVetoAboveThreshold" Konrad Altenmueller

2022-Feb: Added noise removal Konrad Altenmueller

Author
Cristina Margalejo
Javier Galan
Konrad Altenmueller

Definition at line 32 of file TRestRawVetoAnalysisProcess.h.

#include <TRestRawVetoAnalysisProcess.h>

Inheritance diagram for TRestRawVetoAnalysisProcess:
TRestEventProcess TRestMetadata

Public Member Functions

 ClassDefOverride (TRestRawVetoAnalysisProcess, 2)
 
std::string GetGroupIds (std::string groupName)
 Function that returns a string of the signal IDs for the specified veto group.
 
Int_t GetGroupIndex (std::string groupName)
 Function that returns the index of a specified veto group within the group name vector and ID vector.
 
RESTValue GetInputEvent () const override
 Get pointer to input event. Must be implemented in the derived class.
 
RESTValue GetOutputEvent () const override
 Get pointer to output event. Must be implemented in the derived class.
 
const char * GetProcessName () const override
 Returns the name of this process.
 
std::pair< std::vector< std::string >, std::vector< std::string > > GetVetoGroups ()
 Returns the veto group names and IDs.
 
std::vector< double > GetVetoSignalIDs ()
 Returns the veto IDs, if they where defined in a list.
 
double GetVetoSignalIDs (Int_t index)
 
void InitProcess () override
 Function to use in initialization of process members before starting to process the event.
 
void LoadConfig (const std::string &configFilename, const std::string &name="")
 Function to load the configuration from an external configuration file. More...
 
TRestEventProcessMaker ()
 Returns a new instance of this class.
 
void PrintMetadata () override
 It prints out the process parameters stored in the metadata structure.
 
TRestEventProcessEvent (TRestEvent *inputEvent) override
 The main processing event function.
 
 TRestRawVetoAnalysisProcess ()
 Default constructor.
 
 TRestRawVetoAnalysisProcess (const char *configFilename)
 Constructor loading data from a config file. More...
 
 ~TRestRawVetoAnalysisProcess ()
 Default destructor.
 
- Public Member Functions inherited from TRestEventProcess
virtual Bool_t AddInputFile (const std::string &file)
 
bool ApplyCut ()
 
virtual void BeginOfEventProcess (TRestEvent *inputEvent=nullptr)
 Begin of event process, preparation work. Called right before ProcessEvent()
 
 ClassDefOverride (TRestEventProcess, 3)
 
virtual void EndOfEventProcess (TRestEvent *inputEvent=nullptr)
 End of event process. Nothing to do. Called directly after ProcessEvent()
 
virtual void EndProcess ()
 To be executed at the end of the run (outside event loop)
 
TRestAnalysisTreeGetAnalysisTree () const
 Return the local analysis tree (dummy)
 
TCanvas * GetCanvas () const
 Get canvas.
 
TRestAnalysisTreeGetFullAnalysisTree ()
 
std::vector< std::string > GetListOfAddedObservables ()
 
TRestRunGetRunInfo () const
 Return the pointer of the hosting TRestRun object.
 
virtual Long64_t GetTotalBytes () const
 
virtual Long64_t GetTotalBytesRead () const
 Interface to external file reading, get the read bytes. To be implemented in external processes.
 
Bool_t isExternal () const
 Return whether this process is external process.
 
Int_t LoadSectionMetadata () override
 This method does some preparation of xml section. More...
 
virtual void NotifyAnalysisTreeReset ()
 In case the analysis tree is reset(switched to new file), some process needs to have action.
 
virtual Bool_t OpenInputFiles (const std::vector< std::string > &files)
 
std::vector< std::string > ReadObservables ()
 
void RegisterAllObservables (Bool_t value=true)
 
virtual Bool_t ResetEntry ()
 
void SetAnalysisTree (TRestAnalysisTree *tree)
 Set analysis tree of this process, then add observables to it.
 
void SetCanvasSize (Int_t x, Int_t y)
 Set canvas size.
 
void SetFriendProcess (TRestEventProcess *p)
 Add friendly process to this process.
 
void SetObservableValidation (bool validate)
 
void SetParallelProcess (TRestEventProcess *p)
 Add parallel process to this process.
 
void SetRunInfo (TRestRun *r)
 Set TRestRun for this process.
 
Bool_t singleThreadOnly () const
 Return whether this process is single std::thread only.
 
 TRestEventProcess ()
 
 ~TRestEventProcess ()
 

Private Member Functions

void InitFromConfigFile () override
 Function reading input parameters from the RML TRestRawVetoAnalysisProcess section.
 
void Initialize () override
 Function to initialize input/output event members and define the section name and library version.
 
void LoadDefaultConfig ()
 Function to load the default config in absence of RML input.
 

Private Attributes

TVector2 fBaseLineRange
 The range used to calculate the baseline parameters from the veto signal.
 
std::vector< std::string > fPeakAmp
 Max peak amplitude observable names.
 
std::vector< std::string > fPeakTime
 Peak Time observable names.
 
Int_t fPointsOverThreshold
 
Double_t fPointThreshold
 PointsOverThreshold() Parameters:
 
TVector2 fRange
 The range used to calculate the veto signal parameters.
 
TRestRawSignalEventfSignalEvent
 A pointer to the specific TRestRawSignalEvent.
 
Double_t fSignalThreshold
 
Int_t fThreshold
 Threshold of the vetoes.
 
std::vector< double > fTimeWindow
 Peak time window for cut.
 
std::vector< std::string > fVetoGroupIds
 Veto signal IDs per group.
 
std::vector< std::string > fVetoGroupNames
 Veto group Names.
 
std::vector< double > fVetoSignalId
 Veto signal IDs.
 

Additional Inherited Members

- Protected Types inherited from TRestEventProcess
enum  REST_Process_Output { No_Output , Observable , Internal_Var , Full_Output }
 
- Protected Member Functions inherited from TRestEventProcess
void BeginPrintProcess ()
 [name, cut range]
 
void CreateCanvas ()
 Create the canvas.
 
void EndPrintProcess ()
 
TRestEventProcessGetFriend (const std::string &nameOrType)
 
TRestEventProcessGetFriendLive (const std::string &nameOrType)
 
template<class T >
T * GetMetadata ()
 Get a metadata object from the host TRestRun. More...
 
TRestMetadataGetMetadata (const std::string &nameOrType)
 
size_t GetNumberOfParallelProcesses () const
 
template<class T >
GetObservableValue (const std::string &name)
 
TRestEventProcessGetParallel (int i)
 
template<class T >
std::vector< T > GetParallelDataMembers (T *member_of_process)
 Get a list of data members from parallel processes which is same to this process's certain data member. More...
 
template<class T >
void SetObservableValue (const std::string &name, const T &value)
 Set observable value for AnalysisTree. More...
 
- Protected Attributes inherited from TRestEventProcess
TRestAnalysisTreefAnalysisTree = nullptr
 
TCanvas * fCanvas = nullptr
 < Canvas for some viewer event
 
TVector2 fCanvasSize
 Canvas size.
 
std::vector< std::pair< std::string, TVector2 > > fCuts
 Stores cut definitions. Any listed observables should be in the range. More...
 
bool fDynamicObs = false
 It defines whether to use added observables only or all the observables appear in the code.
 
bool fIsExternal = false
 It defines if the process reads event data from an external source.
 
std::map< std::string, int > fObservablesDefined
 Stores the list of all the appeared process observables in the code. More...
 
std::map< std::string, int > fObservablesUpdated
 Stores the list of process observables updated when processing this event.
 
bool fReadOnly = false
 not used, keep for compatibility
 
TRestRunfRunInfo = nullptr
 < Pointer to TRestRun object where to find metadata.
 
bool fSingleThreadOnly = false
 
bool fValidateObservables = false
 It defines if observable names should be added to the validation list.
 

Constructor & Destructor Documentation

◆ TRestRawVetoAnalysisProcess()

TRestRawVetoAnalysisProcess::TRestRawVetoAnalysisProcess ( const char *  configFilename)

Constructor loading data from a config file.

The path to the config file can be specified using full path, absolute or relative.

If the file is not found then REST will try to find the file on the default paths defined in REST Framework, usually at the REST_PATH installation directory. Additional search paths may be defined using the parameter searchPath in globals section. See TRestMetadata description.

Parameters
configFilenameA const char* giving the path to an RML file.

Definition at line 162 of file TRestRawVetoAnalysisProcess.cxx.

Member Function Documentation

◆ LoadConfig()

void TRestRawVetoAnalysisProcess::LoadConfig ( const std::string &  configFilename,
const std::string &  name = "" 
)

Function to load the configuration from an external configuration file.

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

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

Definition at line 193 of file TRestRawVetoAnalysisProcess.cxx.


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