REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Loading...
Searching...
No Matches
TRestDetectorSignal Class Reference

Detailed Description




         RESTSoft : Software for Rare Event Searches with TPCs

         TRestDetectorSignal.h

         Event class to store signals from simulation and acquisition
         events

         sept 2015:   First concept
             Created as part of the conceptualization of existing REST
             software.
             JuanAn Garcia/Javier Galan
    nov 2015:
        Changed vectors fSignalTime and fSignalCharge from <Int_t> to

Float_t> JuanAn Garcia


TRestDetectorSignal stores one detector-channel signal as time-charge points.

A TRestDetectorSignal represents the response of one detector readout channel after the signal has been expressed in physical coordinates. Unlike TRestRawSignal, which stores a fixed array of ADC samples indexed by bin, TRestDetectorSignal stores two parallel vectors: one with the time of each point and one with the corresponding charge or amplitude. The signal is identified by its signal ID, which is the channel identifier used by the readout and by TRestDetectorSignalEvent.

This class is commonly produced by detector simulation or reconstruction processes. For example, TRestDetectorHitsToSignalProcess converts energy deposits in a TRestDetectorHitsEvent into detector signals using the readout geometry, drift velocity, and electronics sampling. The resulting TRestDetectorSignal objects can then be converted to hits again, analyzed channel by channel, or inspected visually through their TGraph representation.

A signal can be filled point by point:

TRestDetectorSignal signal;
signal.SetSignalID(12);
signal.NewPoint(0.0, 0.0);
signal.NewPoint(0.1, 4.2);
signal.NewPoint(0.2, 12.8);
std::cout << "Integral: " << signal.GetIntegral() << std::endl;
std::cout << "Peak time: " << signal.GetMaxPeakTime() << std::endl;
signal.GetGraph()->Draw("AL");

Use NewPoint() when appending a sampled point, SetPoint() when replacing or inserting a point at a given time, and IncreaseAmplitude() when several contributions should be accumulated at the same time. If the points are not added in chronological order, Sort() can be used before time-dependent operations.

The class provides basic signal observables such as GetIntegral(), GetIntegralWithTime(), GetMaxPeakValue(), GetMaxPeakTime(), GetMinTime(), and GetMaxTime(). It also includes utilities for normalization, baseline subtraction, smoothing, noise generation, delayed copies, and simple peak fits.


RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2015-September: First concept. JuanAn Garcia/Javier Galan

2015-November: Changed vectors fSignalTime and fSignalCharge from Int_t to Float_t. JuanAn Garcia

Author
JuanAn Garcia
Javier Galan

Definition at line 33 of file TRestDetectorSignal.h.

#include <TRestDetectorSignal.h>

Public Member Functions

void AddGaussianSignal (Double_t amp, Double_t sigma, Double_t time, Int_t N, Double_t fromTime, Double_t toTime)
void AddOffset (Double_t offset)
void ExponentialConvolution (Double_t fromTime, Double_t decayTime, Double_t offset=0)
Double_t GetAverage (Int_t start=0, Int_t end=0)
Double_t GetBaseLine (Int_t startBin, Int_t endBin)
Double_t GetBaseLineSigma (Int_t startBin, Int_t endBin, Double_t baseline=0)
Double_t GetData (Int_t index) const
void GetDifferentialSignal (TRestDetectorSignal *diffSgnl, Int_t smearPoints=5)
TGraph * GetGraph (Int_t color=1)
Int_t GetID () const
Double_t GetIntegral (Int_t startBin=0, Int_t endBin=0) const
Double_t GetIntegralWithTime (Double_t startTime, Double_t endTime) const
Int_t GetMaxIndex (Int_t from=0, Int_t to=0)
Double_t GetMaxPeakTime (Int_t from=0, Int_t to=0)
Double_t GetMaxPeakValue ()
Int_t GetMaxPeakWidth ()
Double_t GetMaxPeakWithTime (Double_t startTime, Double_t endTime) const
Double_t GetMaxTime () const
Double_t GetMaxValue ()
Double_t GetMinPeakValue ()
Double_t GetMinTime () const
Double_t GetMinValue ()
Int_t GetNumberOfPoints () const
std::optional< std::pair< Double_t, Double_t > > GetPeakAget ()
std::optional< std::pair< Double_t, Double_t > > GetPeakGauss ()
std::optional< std::pair< Double_t, Double_t > > GetPeakLandau ()
TVector2 GetPoint (Int_t n)
std::vector< Int_t > GetPointsOverThreshold () const
void GetSignalDelayed (TRestDetectorSignal *delayedSignal, Int_t delay)
void GetSignalGaussianConvolution (TRestDetectorSignal *convSgnl, Double_t sigma=100., Int_t nSigmas=5)
Int_t GetSignalID () const
std::string GetSignalName () const
void GetSignalSmoothed (TRestDetectorSignal *smthSignal, Int_t averagingPoints=3)
std::string GetSignalType () const
Double_t GetStandardDeviation (Int_t startBin, Int_t endBin)
Double_t GetTime (Int_t index) const
void GetWhiteNoiseSignal (TRestDetectorSignal *noiseSgnl, Double_t noiseLevel=1.)
void IncreaseAmplitude (const TVector2 &p)
 If the point already exists inside the detector signal event, the amplitude value will be added to the corresponding time.
void IncreaseAmplitude (Double_t t, Double_t d)
 If the point already exists inside the detector signal event, the amplitude value will be added to the corresponding time.
void IncreaseTimeBinBy (Int_t bin, Double_t data)
Bool_t isSorted () const
void MultiplySignalBy (Double_t factor)
void NewPoint (Double_t time, Double_t data)
void Normalize (Double_t scale=1.)
void Print () const
void Reset ()
void SetID (Int_t sID)
void SetPoint (const TVector2 &p)
 If the point already exists inside the detector signal event, it will be overwritten. If it does not exists, a new point will be added to the points vector.
void SetPoint (Double_t t, Double_t d)
 If the point already exists inside the detector signal event, it will be overwritten. If it does not exists, a new point will be added to the points vector.
void SetPoint (Int_t index, Double_t t, Double_t d)
 If replaces the time and amplitude of the point at the given index.
void SetSignalID (Int_t sID)
void SetSignalName (const std::string &name)
void SetSignalType (const std::string &type)
void SignalAddition (TRestDetectorSignal *inSgnl)
void Sort ()
Double_t SubstractBaseline (Int_t startBin, Int_t endBin)
void WriteSignalToTextFile (const TString &filename) const

Data Fields

TGraph * fGraph
std::vector< Int_t > fPointsOverThreshold

Protected Attributes

std::string fName
std::vector< Double_t > fSignalCharge
Int_t fSignalID = -1
std::vector< Double_t > fSignalTime
std::string fType

Private Member Functions

Int_t GetMinIndex () const
Int_t GetTimeIndex (Double_t t)

Constructor & Destructor Documentation

◆ TRestDetectorSignal()

TRestDetectorSignal::TRestDetectorSignal ( )

Definition at line 83 of file TRestDetectorSignal.cxx.

Member Function Documentation

◆ AddGaussianSignal()

void TRestDetectorSignal::AddGaussianSignal ( Double_t amp,
Double_t sigma,
Double_t time,
Int_t N,
Double_t fromTime,
Double_t toTime )

Definition at line 687 of file TRestDetectorSignal.cxx.

◆ AddOffset()

void TRestDetectorSignal::AddOffset ( Double_t offset)

Definition at line 648 of file TRestDetectorSignal.cxx.

◆ ExponentialConvolution()

void TRestDetectorSignal::ExponentialConvolution ( Double_t fromTime,
Double_t decayTime,
Double_t offset = 0 )

Definition at line 656 of file TRestDetectorSignal.cxx.

◆ GetAverage()

Double_t TRestDetectorSignal::GetAverage ( Int_t start = 0,
Int_t end = 0 )

Definition at line 272 of file TRestDetectorSignal.cxx.

◆ GetBaseLine()

Double_t TRestDetectorSignal::GetBaseLine ( Int_t startBin,
Int_t endBin )

Definition at line 615 of file TRestDetectorSignal.cxx.

◆ GetBaseLineSigma()

Double_t TRestDetectorSignal::GetBaseLineSigma ( Int_t startBin,
Int_t endBin,
Double_t baseline = 0 )

Definition at line 629 of file TRestDetectorSignal.cxx.

◆ GetData()

Double_t TRestDetectorSignal::GetData ( Int_t index) const
inline

Definition at line 114 of file TRestDetectorSignal.h.

◆ GetDifferentialSignal()

void TRestDetectorSignal::GetDifferentialSignal ( TRestDetectorSignal * diffSgnl,
Int_t smearPoints = 5 )

Definition at line 568 of file TRestDetectorSignal.cxx.

◆ GetGraph()

TGraph * TRestDetectorSignal::GetGraph ( Int_t color = 1)

Definition at line 772 of file TRestDetectorSignal.cxx.

◆ GetID()

Int_t TRestDetectorSignal::GetID ( ) const
inline

Definition at line 73 of file TRestDetectorSignal.h.

◆ GetIntegral()

Double_t TRestDetectorSignal::GetIntegral ( Int_t startBin = 0,
Int_t endBin = 0 ) const

Definition at line 168 of file TRestDetectorSignal.cxx.

◆ GetIntegralWithTime()

Double_t TRestDetectorSignal::GetIntegralWithTime ( Double_t startTime,
Double_t endTime ) const

Definition at line 191 of file TRestDetectorSignal.cxx.

◆ GetMaxIndex()

Int_t TRestDetectorSignal::GetMaxIndex ( Int_t from = 0,
Int_t to = 0 )

Definition at line 308 of file TRestDetectorSignal.cxx.

◆ GetMaxPeakTime()

Double_t TRestDetectorSignal::GetMaxPeakTime ( Int_t from = 0,
Int_t to = 0 )

Definition at line 489 of file TRestDetectorSignal.cxx.

◆ GetMaxPeakValue()

Double_t TRestDetectorSignal::GetMaxPeakValue ( )

Definition at line 306 of file TRestDetectorSignal.cxx.

◆ GetMaxPeakWidth()

Int_t TRestDetectorSignal::GetMaxPeakWidth ( )

Definition at line 284 of file TRestDetectorSignal.cxx.

◆ GetMaxPeakWithTime()

Double_t TRestDetectorSignal::GetMaxPeakWithTime ( Double_t startTime,
Double_t endTime ) const

Definition at line 202 of file TRestDetectorSignal.cxx.

◆ GetMaxTime()

Double_t TRestDetectorSignal::GetMaxTime ( ) const

Definition at line 521 of file TRestDetectorSignal.cxx.

◆ GetMaxValue()

Double_t TRestDetectorSignal::GetMaxValue ( )
inline

Definition at line 108 of file TRestDetectorSignal.h.

◆ GetMinIndex()

Int_t TRestDetectorSignal::GetMinIndex ( ) const
private

Definition at line 493 of file TRestDetectorSignal.cxx.

◆ GetMinPeakValue()

Double_t TRestDetectorSignal::GetMinPeakValue ( )

Definition at line 491 of file TRestDetectorSignal.cxx.

◆ GetMinTime()

Double_t TRestDetectorSignal::GetMinTime ( ) const

Definition at line 507 of file TRestDetectorSignal.cxx.

◆ GetMinValue()

Double_t TRestDetectorSignal::GetMinValue ( )
inline

Definition at line 109 of file TRestDetectorSignal.h.

◆ GetNumberOfPoints()

Int_t TRestDetectorSignal::GetNumberOfPoints ( ) const
inline

Definition at line 84 of file TRestDetectorSignal.h.

◆ GetPeakAget()

optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakAget ( )

Definition at line 443 of file TRestDetectorSignal.cxx.

◆ GetPeakGauss()

optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakGauss ( )

Definition at line 336 of file TRestDetectorSignal.cxx.

◆ GetPeakLandau()

optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakLandau ( )

Definition at line 384 of file TRestDetectorSignal.cxx.

◆ GetPoint()

TVector2 TRestDetectorSignal::GetPoint ( Int_t n)
inline

Definition at line 70 of file TRestDetectorSignal.h.

◆ GetPointsOverThreshold()

std::vector< Int_t > TRestDetectorSignal::GetPointsOverThreshold ( ) const
inline

Definition at line 97 of file TRestDetectorSignal.h.

◆ GetSignalDelayed()

void TRestDetectorSignal::GetSignalDelayed ( TRestDetectorSignal * delayedSignal,
Int_t delay )

Definition at line 586 of file TRestDetectorSignal.cxx.

◆ GetSignalGaussianConvolution()

void TRestDetectorSignal::GetSignalGaussianConvolution ( TRestDetectorSignal * convSgnl,
Double_t sigma = 100.,
Int_t nSigmas = 5 )

Definition at line 711 of file TRestDetectorSignal.cxx.

◆ GetSignalID()

Int_t TRestDetectorSignal::GetSignalID ( ) const
inline

Definition at line 72 of file TRestDetectorSignal.h.

◆ GetSignalName()

std::string TRestDetectorSignal::GetSignalName ( ) const
inline

Definition at line 63 of file TRestDetectorSignal.h.

◆ GetSignalSmoothed()

void TRestDetectorSignal::GetSignalSmoothed ( TRestDetectorSignal * smthSignal,
Int_t averagingPoints = 3 )

Definition at line 596 of file TRestDetectorSignal.cxx.

◆ GetSignalType()

std::string TRestDetectorSignal::GetSignalType ( ) const
inline

Definition at line 64 of file TRestDetectorSignal.h.

◆ GetStandardDeviation()

Double_t TRestDetectorSignal::GetStandardDeviation ( Int_t startBin,
Int_t endBin )

Definition at line 624 of file TRestDetectorSignal.cxx.

◆ GetTime()

Double_t TRestDetectorSignal::GetTime ( Int_t index) const
inline

Definition at line 115 of file TRestDetectorSignal.h.

◆ GetTimeIndex()

Int_t TRestDetectorSignal::GetTimeIndex ( Double_t t)
private

Definition at line 535 of file TRestDetectorSignal.cxx.

◆ GetWhiteNoiseSignal()

void TRestDetectorSignal::GetWhiteNoiseSignal ( TRestDetectorSignal * noiseSgnl,
Double_t noiseLevel = 1. )

Definition at line 699 of file TRestDetectorSignal.cxx.

◆ IncreaseAmplitude() [1/2]

void TRestDetectorSignal::IncreaseAmplitude ( const TVector2 & p)

If the point already exists inside the detector signal event, the amplitude value will be added to the corresponding time.

The input vector should contain a physical time and an amplitude.

Definition at line 112 of file TRestDetectorSignal.cxx.

◆ IncreaseAmplitude() [2/2]

void TRestDetectorSignal::IncreaseAmplitude ( Double_t t,
Double_t d )

If the point already exists inside the detector signal event, the amplitude value will be added to the corresponding time.

Definition at line 104 of file TRestDetectorSignal.cxx.

◆ IncreaseTimeBinBy()

void TRestDetectorSignal::IncreaseTimeBinBy ( Int_t bin,
Double_t data )
inline

Definition at line 75 of file TRestDetectorSignal.h.

◆ isSorted()

Bool_t TRestDetectorSignal::isSorted ( ) const

Definition at line 546 of file TRestDetectorSignal.cxx.

◆ MultiplySignalBy()

void TRestDetectorSignal::MultiplySignalBy ( Double_t factor)

Definition at line 652 of file TRestDetectorSignal.cxx.

◆ NewPoint()

void TRestDetectorSignal::NewPoint ( Double_t time,
Double_t data )

Definition at line 95 of file TRestDetectorSignal.cxx.

◆ Normalize()

void TRestDetectorSignal::Normalize ( Double_t scale = 1.)

Definition at line 184 of file TRestDetectorSignal.cxx.

◆ Print()

void TRestDetectorSignal::Print ( ) const

Definition at line 754 of file TRestDetectorSignal.cxx.

◆ Reset()

void TRestDetectorSignal::Reset ( )
inline

Definition at line 152 of file TRestDetectorSignal.h.

◆ SetID()

void TRestDetectorSignal::SetID ( Int_t sID)
inline

Definition at line 119 of file TRestDetectorSignal.h.

◆ SetPoint() [1/3]

void TRestDetectorSignal::SetPoint ( const TVector2 & p)

If the point already exists inside the detector signal event, it will be overwritten. If it does not exists, a new point will be added to the points vector.

The input vector should contain a physical time and an amplitude.

Definition at line 133 of file TRestDetectorSignal.cxx.

◆ SetPoint() [2/3]

void TRestDetectorSignal::SetPoint ( Double_t t,
Double_t d )

If the point already exists inside the detector signal event, it will be overwritten. If it does not exists, a new point will be added to the points vector.

In this method the time and amplitude (data) are given as argument

Definition at line 154 of file TRestDetectorSignal.cxx.

◆ SetPoint() [3/3]

void TRestDetectorSignal::SetPoint ( Int_t index,
Double_t t,
Double_t d )

If replaces the time and amplitude of the point at the given index.

Definition at line 163 of file TRestDetectorSignal.cxx.

◆ SetSignalID()

void TRestDetectorSignal::SetSignalID ( Int_t sID)
inline

Definition at line 118 of file TRestDetectorSignal.h.

◆ SetSignalName()

void TRestDetectorSignal::SetSignalName ( const std::string & name)
inline

Definition at line 66 of file TRestDetectorSignal.h.

◆ SetSignalType()

void TRestDetectorSignal::SetSignalType ( const std::string & type)
inline

Definition at line 67 of file TRestDetectorSignal.h.

◆ SignalAddition()

void TRestDetectorSignal::SignalAddition ( TRestDetectorSignal * inSgnl)

Definition at line 665 of file TRestDetectorSignal.cxx.

◆ Sort()

void TRestDetectorSignal::Sort ( )

Definition at line 555 of file TRestDetectorSignal.cxx.

◆ SubstractBaseline()

Double_t TRestDetectorSignal::SubstractBaseline ( Int_t startBin,
Int_t endBin )

Definition at line 640 of file TRestDetectorSignal.cxx.

◆ WriteSignalToTextFile()

void TRestDetectorSignal::WriteSignalToTextFile ( const TString & filename) const

Definition at line 746 of file TRestDetectorSignal.cxx.

Field Documentation

◆ fGraph

TGraph* TRestDetectorSignal::fGraph

Definition at line 49 of file TRestDetectorSignal.h.

◆ fName

std::string TRestDetectorSignal::fName
protected

Definition at line 45 of file TRestDetectorSignal.h.

◆ fPointsOverThreshold

std::vector<Int_t> TRestDetectorSignal::fPointsOverThreshold

Definition at line 51 of file TRestDetectorSignal.h.

◆ fSignalCharge

std::vector<Double_t> TRestDetectorSignal::fSignalCharge
protected

Definition at line 42 of file TRestDetectorSignal.h.

◆ fSignalID

Int_t TRestDetectorSignal::fSignalID = -1
protected

Definition at line 39 of file TRestDetectorSignal.h.

◆ fSignalTime

std::vector<Double_t> TRestDetectorSignal::fSignalTime
protected

Definition at line 41 of file TRestDetectorSignal.h.

◆ fType

std::string TRestDetectorSignal::fType
protected

Definition at line 46 of file TRestDetectorSignal.h.


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