REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Public Member Functions | Data Fields | Protected Attributes | Private Member Functions
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:

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. More...
 
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. More...
 
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. More...
 
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. More...
 
void SetPoint (Int_t index, Double_t t, Double_t d)
 If replaces the time and amplitude of the point at the given index. More...
 
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: