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

Detailed Description

A process to convert a TRestDetectorSignalEvent into a TRestRawSignalEvent.

TRestDetectorSignalToRawSignalProcess transforms a TRestDetectorSignalEvent into a TRestRawSignalEvent. The TRestDetectorSignalEvent contains signal data built with arbitrary times and their corresponding data values (time, data). The data inside a TRestRawSignal losses precision on the time definition, and it is just a data array with a fixed number of data points. Therefore, the time between two consecutive data points in a raw signal event must be kept constant.

This process produces the sampling of a TRestDetectorSignalEvent into a TRestRawSignalEvent. TRestDetectorSignal contains Float_t data values, while TResRawSignal contains Short_t values. Thats why there might be some information loss when transferring the signal data to the raw-signal data. To minimize the impact, the maximum data value of the output signals should be high enough, and adjusted to the maximum value of a Short_t, being this value 32767. The gain parameter may serve to re-adjust the amplitude of the output data array.

Warning
If the value assigned to a data point in the output rawsignal event exceeds 32767 it will cause an overflow, and the event data will be corrupted. If the verboseLevel of the process is warning, an output message will prevent the user. The event status will be invalid.

The input signal contains arbitrary times expressed in microseconds. In order to produce the binning, a time window must be defined. The parameter triggerMode will allow to define how we choose the time start (corresponding to the bin 0 in the raw signal), and time end (corresponding to the last bin in the raw signal).

The trigger mode will fix the time the signal starts, while the sampling time parameter (in microseconds) and the number of points per signal, Npoints, will fix the time end. A triggerDelay parameter allows to shift the time measured in number of samples, from the definition obtained using the triggerMode parameter.

The following list describes the different parameters that can be used in this process.

The following figure shows the integralThreshold trigger definition for a NLDBD event. fTimeStart and fTimeEnd define the acquisition window, centered on the time when the signal integral is above the threshold defined. fTimeStart has been shifted by a triggerDelay = 60 samples * 200ns


RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2017-November: First implementation of signal to rawsignal conversion. Javier Galan

Author
Javier Galan

Definition at line 32 of file TRestDetectorSignalToRawSignalProcess.h.

#include <TRestDetectorSignalToRawSignalProcess.h>

Inheritance diagram for TRestDetectorSignalToRawSignalProcess:
TRestEventProcess TRestMetadata

Data Structures

struct  Parameters
 

Public Member Functions

Double_t GetADCFromEnergy (Double_t energy, const std::string &type="") const
 
Double_t GetBinFromTime (Double_t time, const std::string &type="") const
 
Double_t GetEnergyFromADC (Double_t adc, const std::string &type="") const
 
Double_t GetGain () const
 
RESTValue GetInputEvent () const override
 Get pointer to input event. Must be implemented in the derived class.
 
Double_t GetIntegralThreshold () const
 
Int_t GetNPoints () const
 
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.
 
Double_t GetSampling () const
 
Double_t GetTimeFromBin (Double_t bin, const std::string &type="") const
 
Int_t GetTriggerDelay () const
 
std::string GetTriggerMode () const
 
void InitProcess () override
 To be executed at the beginning of the run (outside event loop)
 
bool IsLinearCalibration () const
 
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.
 
 TRestDetectorSignalToRawSignalProcess ()
 Default constructor.
 
 TRestDetectorSignalToRawSignalProcess (const char *configFilename)
 Constructor loading data from a config file. More...
 
 ~TRestDetectorSignalToRawSignalProcess ()
 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 ()
 

Protected Attributes

TVector2 fCalibrationEnergy = TVector2(0.0, 0.0)
 two distinct energy values used for calibration
 
Double_t fCalibrationGain = 100.0
 
Double_t fCalibrationOffset = 0.0
 
TVector2 fCalibrationRange = TVector2(0.0, 0.0)
 position in the range corresponding to the energy in 'fCalibrationEnergy'. Values between 0 and 1
 
Double_t fIntegralThreshold = 1229.0
 This parameter is used by integralWindow trigger mode to define the acquisition window.
 
Int_t fNPoints = 512
 The number of points of the resulting output signal.
 
Double_t fSampling = 1.0
 The sampling time from the binned raw output signal.
 
Double_t fShapingTime = 0.0
 
Int_t fTriggerDelay = 100
 The number of time bins the time start is delayed in the resulting output signal.
 
Int_t fTriggerFixedStartTime = 0
 The starting time for the "fixed" trigger mode (can be offset by the trigger delay)
 
std::string fTriggerMode = "firstDeposit"
 It is used to define the way the time start will be fixed.
 
std::string fTriggerModeObservableName
 The name of the observable used to define the trigger mode (i.e. g4Ana_sensitiveVolumeFirstHitTime)
 
- 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.
 

Private Member Functions

 ClassDefOverride (TRestDetectorSignalToRawSignalProcess, 6)
 
void InitFromConfigFile () override
 Function reading input parameters from the RML TRestDetectorSignalToRawSignalProcess metadata section.
 
void Initialize () override
 Function to initialize input/output event members and define the section name.
 

Private Attributes

TRestDetectorSignalEventfInputSignalEvent
 A pointer to the specific TRestDetectorSignalEvent input.
 
TRestRawSignalEventfOutputRawSignalEvent
 A pointer to the specific TRestRawSignalEvent input.
 
std::map< std::string, ParametersfParametersMap
 
TRestDetectorReadoutfReadout = nullptr
 
std::set< std::string > fReadoutTypes
 

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

Constructor & Destructor Documentation

◆ TRestDetectorSignalToRawSignalProcess()

TRestDetectorSignalToRawSignalProcess::TRestDetectorSignalToRawSignalProcess ( const char *  configFilename)

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
configFilenameA const char* giving the path to an RML file.

Definition at line 164 of file TRestDetectorSignalToRawSignalProcess.cxx.

Member Function Documentation

◆ LoadConfig()

void TRestDetectorSignalToRawSignalProcess::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 TRestGeant4AnalysisProcess section inside the RML.

Definition at line 188 of file TRestDetectorSignalToRawSignalProcess.cxx.

Field Documentation

◆ fCalibrationGain

Double_t TRestDetectorSignalToRawSignalProcess::fCalibrationGain = 100.0
protected

fCalibrationGain and fCalibrationOffset define the linear calibration. output = input * fCalibrationGain + calibrationOffset

Definition at line 67 of file TRestDetectorSignalToRawSignalProcess.h.

◆ fShapingTime

Double_t TRestDetectorSignalToRawSignalProcess::fShapingTime = 0.0
protected

Usage: fCalibrationEnergy = (0, 100 MeV) and fCalibrationRange = (0.1, 0.9) will perform a linear calibration with 0 equal to 0.1 of the range (0.1 * (max - min) + min) and 100 MeV equal to 0.9 of the range. The range is the one corresponding to a Short_t for rawsignal. If defined ( > 0 ) we will compute the sin shaping of the signal, this is done in this process to avoid artifacts in the signal (e.g. signals not getting cut when they should)

Definition at line 83 of file TRestDetectorSignalToRawSignalProcess.h.


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