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. More...
 
Int_t GetGroupIndex (std::string groupName)
 Function that returns the index of a specified veto group within the group name vector and ID vector. More...
 
RESTValue GetInputEvent () const override
 Get pointer to input event. Must be implemented in the derived class. More...
 
RESTValue GetOutputEvent () const override
 Get pointer to output event. Must be implemented in the derived class. More...
 
const char * GetProcessName () const override
 Returns the name of this process. More...
 
std::pair< std::vector< std::string >, std::vector< std::string > > GetVetoGroups ()
 Returns the veto group names and IDs. More...
 
std::vector< double > GetVetoSignalIDs ()
 Returns the veto IDs, if they where defined in a list. More...
 
double GetVetoSignalIDs (Int_t index)
 
void InitProcess () override
 Function to use in initialization of process members before starting to process the event. More...
 
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. More...
 
void PrintMetadata () override
 It prints out the process parameters stored in the metadata structure. More...
 
TRestEventProcessEvent (TRestEvent *inputEvent) override
 The main processing event function. More...
 
 TRestRawVetoAnalysisProcess ()
 Default constructor. More...
 
 TRestRawVetoAnalysisProcess (const char *configFilename)
 Constructor loading data from a config file. More...
 
 ~TRestRawVetoAnalysisProcess ()
 Default destructor. More...
 
- 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() More...
 
 ClassDefOverride (TRestEventProcess, 3)
 
virtual void EndOfEventProcess (TRestEvent *inputEvent=nullptr)
 End of event process. Nothing to do. Called directly after ProcessEvent() More...
 
virtual void EndProcess ()
 To be executed at the end of the run (outside event loop) More...
 
TRestAnalysisTreeGetAnalysisTree () const
 Return the local analysis tree (dummy) More...
 
TCanvas * GetCanvas () const
 Get canvas. More...
 
TRestAnalysisTreeGetFullAnalysisTree ()
 
virtual RESTValue GetInputEvent () const =0
 Get pointer to input event. Must be implemented in the derived class. More...
 
std::vector< std::string > GetListOfAddedObservables ()
 
virtual RESTValue GetOutputEvent () const =0
 Get pointer to output event. Must be implemented in the derived class. More...
 
virtual const char * GetProcessName () const =0
 
TRestRunGetRunInfo () const
 Return the pointer of the hosting TRestRun object. More...
 
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. More...
 
virtual void InitFromConfigFile () override
 To make settings from rml file. This method must be implemented in the derived class. More...
 
virtual void InitProcess ()
 To be executed at the beginning of the run (outside event loop) More...
 
Bool_t isExternal () const
 Return whether this process is external process. More...
 
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. More...
 
virtual Bool_t OpenInputFiles (const std::vector< std::string > &files)
 
virtual TRestEventProcessEvent (TRestEvent *inputEvent)=0
 Process one event. More...
 
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. More...
 
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. More...
 
Bool_t singleThreadOnly () const
 Return whether this process is single std::thread only. More...
 
 TRestEventProcess ()
 
 ~TRestEventProcess ()
 

Private Member Functions

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

Private Attributes

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

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. More...
 
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 More...
 
TVector2 fCanvasSize
 Canvas size. More...
 
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. More...
 
bool fIsExternal = false
 It defines if the process reads event data from an external source. More...
 
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. More...
 
bool fReadOnly = false
 not used, keep for compatibility More...
 
TRestRunfRunInfo = nullptr
 < Pointer to TRestRun object where to find metadata. More...
 
bool fSingleThreadOnly = false
 
bool fValidateObservables = false
 It defines if observable names should be added to the validation list. More...
 

Constructor & Destructor Documentation

◆ TRestRawVetoAnalysisProcess() [1/2]

TRestRawVetoAnalysisProcess::TRestRawVetoAnalysisProcess ( )

Default constructor.

Definition at line 146 of file TRestRawVetoAnalysisProcess.cxx.

◆ TRestRawVetoAnalysisProcess() [2/2]

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.

◆ ~TRestRawVetoAnalysisProcess()

TRestRawVetoAnalysisProcess::~TRestRawVetoAnalysisProcess ( )

Default destructor.

Definition at line 171 of file TRestRawVetoAnalysisProcess.cxx.

Member Function Documentation

◆ GetGroupIds()

string TRestRawVetoAnalysisProcess::GetGroupIds ( std::string  groupName)

Function that returns a string of the signal IDs for the specified veto group.

Definition at line 376 of file TRestRawVetoAnalysisProcess.cxx.

◆ GetGroupIndex()

Int_t TRestRawVetoAnalysisProcess::GetGroupIndex ( std::string  groupName)

Function that returns the index of a specified veto group within the group name vector and ID vector.

Definition at line 369 of file TRestRawVetoAnalysisProcess.cxx.

◆ GetInputEvent()

RESTValue TRestRawVetoAnalysisProcess::GetInputEvent ( ) const
inlineoverridevirtual

Get pointer to input event. Must be implemented in the derived class.

Implements TRestEventProcess.

Definition at line 77 of file TRestRawVetoAnalysisProcess.h.

◆ GetOutputEvent()

RESTValue TRestRawVetoAnalysisProcess::GetOutputEvent ( ) const
inlineoverridevirtual

Get pointer to output event. Must be implemented in the derived class.

Implements TRestEventProcess.

Definition at line 78 of file TRestRawVetoAnalysisProcess.h.

◆ GetProcessName()

const char * TRestRawVetoAnalysisProcess::GetProcessName ( ) const
inlineoverridevirtual

Returns the name of this process.

Implements TRestEventProcess.

Definition at line 91 of file TRestRawVetoAnalysisProcess.h.

◆ GetVetoGroups()

std::pair< std::vector< std::string >, std::vector< std::string > > TRestRawVetoAnalysisProcess::GetVetoGroups ( )
inline

Returns the veto group names and IDs.

Definition at line 101 of file TRestRawVetoAnalysisProcess.h.

◆ GetVetoSignalIDs() [1/2]

std::vector< double > TRestRawVetoAnalysisProcess::GetVetoSignalIDs ( )
inline

Returns the veto IDs, if they where defined in a list.

Definition at line 94 of file TRestRawVetoAnalysisProcess.h.

◆ GetVetoSignalIDs() [2/2]

double TRestRawVetoAnalysisProcess::GetVetoSignalIDs ( Int_t  index)
inline

Definition at line 95 of file TRestRawVetoAnalysisProcess.h.

◆ InitFromConfigFile()

void TRestRawVetoAnalysisProcess::InitFromConfigFile ( )
overrideprivatevirtual

Function reading input parameters from the RML TRestRawVetoAnalysisProcess section.

Reimplemented from TRestEventProcess.

Definition at line 386 of file TRestRawVetoAnalysisProcess.cxx.

◆ Initialize()

void TRestRawVetoAnalysisProcess::Initialize ( )
overrideprivatevirtual

Function to initialize input/output event members and define the section name and library version.

Reimplemented from TRestMetadata.

Definition at line 210 of file TRestRawVetoAnalysisProcess.cxx.

◆ InitProcess()

void TRestRawVetoAnalysisProcess::InitProcess ( )
overridevirtual

Function to use in initialization of process members before starting to process the event.

Reimplemented from TRestEventProcess.

Definition at line 201 of file TRestRawVetoAnalysisProcess.cxx.

◆ 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.

◆ LoadDefaultConfig()

void TRestRawVetoAnalysisProcess::LoadDefaultConfig ( )
private

Function to load the default config in absence of RML input.

Definition at line 176 of file TRestRawVetoAnalysisProcess.cxx.

◆ Maker()

TRestEventProcess * TRestRawVetoAnalysisProcess::Maker ( )
inline

Returns a new instance of this class.

Definition at line 88 of file TRestRawVetoAnalysisProcess.h.

◆ PrintMetadata()

void TRestRawVetoAnalysisProcess::PrintMetadata ( )
overridevirtual

It prints out the process parameters stored in the metadata structure.

Reimplemented from TRestMetadata.

Definition at line 430 of file TRestRawVetoAnalysisProcess.cxx.

◆ ProcessEvent()

TRestEvent * TRestRawVetoAnalysisProcess::ProcessEvent ( TRestEvent inputEvent)
overridevirtual

The main processing event function.

Implements TRestEventProcess.

Definition at line 220 of file TRestRawVetoAnalysisProcess.cxx.

Field Documentation

◆ fBaseLineRange

TVector2 TRestRawVetoAnalysisProcess::fBaseLineRange
private

The range used to calculate the baseline parameters from the veto signal.

Definition at line 35 of file TRestRawVetoAnalysisProcess.h.

◆ fPeakAmp

std::vector<std::string> TRestRawVetoAnalysisProcess::fPeakAmp
private

Max peak amplitude observable names.

Definition at line 59 of file TRestRawVetoAnalysisProcess.h.

◆ fPeakTime

std::vector<std::string> TRestRawVetoAnalysisProcess::fPeakTime
private

Peak Time observable names.

Definition at line 56 of file TRestRawVetoAnalysisProcess.h.

◆ fPointsOverThreshold

Int_t TRestRawVetoAnalysisProcess::fPointsOverThreshold
private

Definition at line 67 of file TRestRawVetoAnalysisProcess.h.

◆ fPointThreshold

Double_t TRestRawVetoAnalysisProcess::fPointThreshold
private

PointsOverThreshold() Parameters:

Definition at line 65 of file TRestRawVetoAnalysisProcess.h.

◆ fRange

TVector2 TRestRawVetoAnalysisProcess::fRange
private

The range used to calculate the veto signal parameters.

Definition at line 38 of file TRestRawVetoAnalysisProcess.h.

◆ fSignalEvent

TRestRawSignalEvent* TRestRawVetoAnalysisProcess::fSignalEvent
private

A pointer to the specific TRestRawSignalEvent.

Definition at line 62 of file TRestRawVetoAnalysisProcess.h.

◆ fSignalThreshold

Double_t TRestRawVetoAnalysisProcess::fSignalThreshold
private

Definition at line 66 of file TRestRawVetoAnalysisProcess.h.

◆ fThreshold

Int_t TRestRawVetoAnalysisProcess::fThreshold
private

Threshold of the vetoes.

Definition at line 41 of file TRestRawVetoAnalysisProcess.h.

◆ fTimeWindow

std::vector<double> TRestRawVetoAnalysisProcess::fTimeWindow
private

Peak time window for cut.

Definition at line 44 of file TRestRawVetoAnalysisProcess.h.

◆ fVetoGroupIds

std::vector<std::string> TRestRawVetoAnalysisProcess::fVetoGroupIds
private

Veto signal IDs per group.

Definition at line 50 of file TRestRawVetoAnalysisProcess.h.

◆ fVetoGroupNames

std::vector<std::string> TRestRawVetoAnalysisProcess::fVetoGroupNames
private

Veto group Names.

Definition at line 53 of file TRestRawVetoAnalysisProcess.h.

◆ fVetoSignalId

std::vector<double> TRestRawVetoAnalysisProcess::fVetoSignalId
private

Veto signal IDs.

Definition at line 47 of file TRestRawVetoAnalysisProcess.h.


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