|
REST-for-Physics
v2.3
Rare Event Searches ToolKit for Physics
|
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:
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
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) |
| TRestDetectorSignal::TRestDetectorSignal | ( | ) |
Definition at line 83 of file TRestDetectorSignal.cxx.
| 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.
| void TRestDetectorSignal::AddOffset | ( | Double_t | offset | ) |
Definition at line 648 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::ExponentialConvolution | ( | Double_t | fromTime, |
| Double_t | decayTime, | ||
| Double_t | offset = 0 |
||
| ) |
Definition at line 656 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetAverage | ( | Int_t | start = 0, |
| Int_t | end = 0 |
||
| ) |
Definition at line 272 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetBaseLine | ( | Int_t | startBin, |
| Int_t | endBin | ||
| ) |
Definition at line 615 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetBaseLineSigma | ( | Int_t | startBin, |
| Int_t | endBin, | ||
| Double_t | baseline = 0 |
||
| ) |
Definition at line 629 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 114 of file TRestDetectorSignal.h.
| void TRestDetectorSignal::GetDifferentialSignal | ( | TRestDetectorSignal * | diffSgnl, |
| Int_t | smearPoints = 5 |
||
| ) |
Definition at line 568 of file TRestDetectorSignal.cxx.
| TGraph * TRestDetectorSignal::GetGraph | ( | Int_t | color = 1 | ) |
Definition at line 772 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 73 of file TRestDetectorSignal.h.
| Double_t TRestDetectorSignal::GetIntegral | ( | Int_t | startBin = 0, |
| Int_t | endBin = 0 |
||
| ) | const |
Definition at line 168 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetIntegralWithTime | ( | Double_t | startTime, |
| Double_t | endTime | ||
| ) | const |
Definition at line 191 of file TRestDetectorSignal.cxx.
| Int_t TRestDetectorSignal::GetMaxIndex | ( | Int_t | from = 0, |
| Int_t | to = 0 |
||
| ) |
Definition at line 308 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMaxPeakTime | ( | Int_t | from = 0, |
| Int_t | to = 0 |
||
| ) |
Definition at line 489 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMaxPeakValue | ( | ) |
Definition at line 306 of file TRestDetectorSignal.cxx.
| Int_t TRestDetectorSignal::GetMaxPeakWidth | ( | ) |
Definition at line 284 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMaxPeakWithTime | ( | Double_t | startTime, |
| Double_t | endTime | ||
| ) | const |
Definition at line 202 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMaxTime | ( | ) | const |
Definition at line 521 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 108 of file TRestDetectorSignal.h.
|
private |
Definition at line 493 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMinPeakValue | ( | ) |
Definition at line 491 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::GetMinTime | ( | ) | const |
Definition at line 507 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 109 of file TRestDetectorSignal.h.
|
inline |
Definition at line 84 of file TRestDetectorSignal.h.
| optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakAget | ( | ) |
Definition at line 443 of file TRestDetectorSignal.cxx.
| optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakGauss | ( | ) |
Definition at line 336 of file TRestDetectorSignal.cxx.
| optional< pair< Double_t, Double_t > > TRestDetectorSignal::GetPeakLandau | ( | ) |
Definition at line 384 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 70 of file TRestDetectorSignal.h.
|
inline |
Definition at line 97 of file TRestDetectorSignal.h.
| void TRestDetectorSignal::GetSignalDelayed | ( | TRestDetectorSignal * | delayedSignal, |
| Int_t | delay | ||
| ) |
Definition at line 586 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::GetSignalGaussianConvolution | ( | TRestDetectorSignal * | convSgnl, |
| Double_t | sigma = 100., |
||
| Int_t | nSigmas = 5 |
||
| ) |
Definition at line 711 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 72 of file TRestDetectorSignal.h.
|
inline |
Definition at line 63 of file TRestDetectorSignal.h.
| void TRestDetectorSignal::GetSignalSmoothed | ( | TRestDetectorSignal * | smthSignal, |
| Int_t | averagingPoints = 3 |
||
| ) |
Definition at line 596 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 64 of file TRestDetectorSignal.h.
| Double_t TRestDetectorSignal::GetStandardDeviation | ( | Int_t | startBin, |
| Int_t | endBin | ||
| ) |
Definition at line 624 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 115 of file TRestDetectorSignal.h.
|
private |
Definition at line 535 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::GetWhiteNoiseSignal | ( | TRestDetectorSignal * | noiseSgnl, |
| Double_t | noiseLevel = 1. |
||
| ) |
Definition at line 699 of file TRestDetectorSignal.cxx.
| 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.
| 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.
|
inline |
Definition at line 75 of file TRestDetectorSignal.h.
| Bool_t TRestDetectorSignal::isSorted | ( | ) | const |
Definition at line 546 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::MultiplySignalBy | ( | Double_t | factor | ) |
Definition at line 652 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::NewPoint | ( | Double_t | time, |
| Double_t | data | ||
| ) |
Definition at line 95 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::Normalize | ( | Double_t | scale = 1. | ) |
Definition at line 184 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::Print | ( | ) | const |
Definition at line 754 of file TRestDetectorSignal.cxx.
|
inline |
Definition at line 152 of file TRestDetectorSignal.h.
|
inline |
Definition at line 119 of file TRestDetectorSignal.h.
| 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.
| 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.
| 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.
|
inline |
Definition at line 118 of file TRestDetectorSignal.h.
|
inline |
Definition at line 66 of file TRestDetectorSignal.h.
|
inline |
Definition at line 67 of file TRestDetectorSignal.h.
| void TRestDetectorSignal::SignalAddition | ( | TRestDetectorSignal * | inSgnl | ) |
Definition at line 665 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::Sort | ( | ) |
Definition at line 555 of file TRestDetectorSignal.cxx.
| Double_t TRestDetectorSignal::SubstractBaseline | ( | Int_t | startBin, |
| Int_t | endBin | ||
| ) |
Definition at line 640 of file TRestDetectorSignal.cxx.
| void TRestDetectorSignal::WriteSignalToTextFile | ( | const TString & | filename | ) | const |
Definition at line 746 of file TRestDetectorSignal.cxx.
| TGraph* TRestDetectorSignal::fGraph |
Definition at line 49 of file TRestDetectorSignal.h.
|
protected |
Definition at line 45 of file TRestDetectorSignal.h.
| std::vector<Int_t> TRestDetectorSignal::fPointsOverThreshold |
Definition at line 51 of file TRestDetectorSignal.h.
|
protected |
Definition at line 42 of file TRestDetectorSignal.h.
|
protected |
Definition at line 39 of file TRestDetectorSignal.h.
|
protected |
Definition at line 41 of file TRestDetectorSignal.h.
|
protected |
Definition at line 46 of file TRestDetectorSignal.h.