PMTRecData.h
Go to the documentation of this file.
1 #ifndef _sevt_PMTRecData_h_
2 #define _sevt_PMTRecData_h_
3 
4 #include <utl/Trace.h>
5 #include <utl/ShadowPtr.h>
6 #include <utl/LameShadowPtr_fwd.h>
7 #include <utl/MultiTrace.h>
8 #include <utl/QuadraticFitData.h>
9 #include <utl/TabulatedFunctionErrors.h>
10 #include <utl/TabulatedFunction.h>
11 #include <utl/IteratorRange.h>
12 
13 #include <utl/ExponentialFitData.h>
14 #include <sevt/StationConstants.h>
15 #include <sevt/SignalSegment.h>
16 #include <sdet/Station.h>
17 
18 #include <vector>
19 #include <utility>
20 
21 
22 namespace io {
23  class PMTRecData_ROOT;
24 }
25 
26 namespace sevt {
27 
38  class PMTRecData {
39 
40  public:
42 
47  { return fTrace.GetTrace(source); }
48 
50  { return fTrace.GetTrace(source); }
51 
54 
56  { return fTrace.HasLabel(source); }
57 
59 
62 
68 
69  bool HasFADCBaseline(const sdet::PMTConstants::PMTGain gain = sdet::PMTConstants::eHighGain) const
70  { return bool(fFADCBaseline[gain]); }
71 
74 
76  { return *fFADCBaseline[gain]; }
77 
79  { return *fFADCBaseline[gain]; }
80 
82  { return fFADCBaselineError[gain]; }
83 
85  { return fFADCBaselineWindow[gain]; }
86 
88  typedef std::pair<unsigned int, unsigned int> Piece;
89  typedef std::vector<Piece> FlatPieceCollection;
90 
92  { return fFADCBaselineFlatPieces[gain]; }
94  { return fFADCBaselineFlatPieces[gain]; }
95 
97  double GetRiseTime() const { return fRiseTime; }
98  double GetRiseTimeCleaned() const { return fRiseTimeCleaned; }
100  double GetRiseTimeRMS() const { return fRiseTimeRMS; }
101  double GetRiseTimeCleanedRMS() const { return fRiseTimeCleanedRMS; }
103  double GetFallTime() const { return fFallTime; }
104  double GetFallTimeCleaned() const { return fFallTimeCleaned; }
106  double GetFallTimeRMS() const { return fFallTimeRMS; }
107  double GetFallTimeCleanedRMS() const { return fFallTimeCleanedRMS; }
108 
109  double GetT40() const { return fT40; }
110  double GetT50() const { return fT50; }
111 
112  // VEM_peak as estimated from the Online value
113  double GetOnlineVEMPeak() const { return fOnlineVEMPeak; }
114  double GetOnlineVEMPeakError() const { return fOnlineVEMPeakError; }
115  // VEM_peak as obtained from the histogram fit
116  double GetHistogramVEMPeak() const { return fHistogramVEMPeak; }
118  // final VEM_peak
119  double GetVEMPeak() const { return fVEMPeak; }
120  double GetVEMPeakError() const { return fVEMPeakError; }
122 
123  // VEM_charge as estimated from the Online value
124  double GetOnlineVEMCharge() const { return fOnlineVEMCharge; }
126  // VEM_charge as obtained from the histogram fit
127  double GetHistogramVEMCharge() const { return fHistogramVEMCharge; }
129  // final VEM_charge
130  double GetVEMCharge() const { return fVEMCharge; }
131  double GetVEMChargeError() const { return fVEMChargeError; }
133 
135  double GetAreaOverPeak() const { return fAreaOverPeak; }
137  double GetTotalCharge() const { return fTotalCharge; }
138  double GetTotalChargeError() const { return fTotalChargeError; }
140  double GetPeakAmplitude() const { return fPeakAmplitude; }
141  double GetShapeParameter() const { return fShapeParameter; }
143  double GetMuonChargeSlope() const { return fMuonChargeSlope; }
145  double GetMuonPulseDecayTime() const { return fMuonPulseDecayTime; }
147  double GetGainRatio() const { return fGainRatio; }
148 
151 
154 
157 
160 
162  { return fFADCSaturatedBins[gain]; }
163 
165 
168 
170  const SignalSegmentCollection& GetSignals() const { return fSignals; }
171 
172  void SetRiseTime(const double riseTime, const double rms)
173  { fRiseTime = riseTime; fRiseTimeRMS = rms; }
174  void SetRiseTimeCleaned(const double riseTime, const double rms)
175  { fRiseTimeCleaned = riseTime; fRiseTimeCleanedRMS = rms; }
176 
177  void SetFallTime(const double fallTime, const double rms)
178  { fFallTime = fallTime; fFallTimeRMS = rms; }
179  void SetFallTimeCleaned(const double fallTime, const double rms)
180  { fFallTimeCleaned = fallTime; fFallTimeCleanedRMS = rms; }
181 
182  void SetT40(const double t40) { fT40 = t40; }
183  void SetT50(const double t50) { fT50 = t50; }
184 
185  void SetOnlineVEMPeak(const double peak, const double peakErr)
186  { fOnlineVEMPeak = peak; fOnlineVEMPeakError = peakErr; }
187  void SetHistogramVEMPeak(const double peak, const double peakErr)
188  { fHistogramVEMPeak = peak; fHistogramVEMPeakError = peakErr; }
189  void SetVEMPeak(const double peak, const double peakErr)
190  { fVEMPeak = peak; fVEMPeakError = peakErr; }
192 
193  void SetOnlineVEMCharge(const double charge, const double chargeErr)
194  { fOnlineVEMCharge = charge; fOnlineVEMChargeError = chargeErr; }
195  void SetHistogramVEMCharge(const double charge, const double chargeErr)
196  { fHistogramVEMCharge = charge; fHistogramVEMChargeError = chargeErr; }
197  void SetVEMCharge(const double charge, const double chargeErr)
198  { fVEMCharge = charge; fVEMChargeError = chargeErr; }
200 
201  void SetAreaOverPeak(const double areaOverPeak) { fAreaOverPeak = areaOverPeak; }
202 
203  void SetTotalCharge(const double totalCharge, const double chErr = 0)
204  { fTotalCharge = totalCharge; fTotalChargeError = chErr; }
205 
206  void SetPeakAmplitude(const double peak) { fPeakAmplitude = peak; }
207  void SetShapeParameter(const double shape) { fShapeParameter = shape; }
209  void SetMuonChargeSlope(const double slope) { fMuonChargeSlope = slope; }
210  void SetMuonPulseDecayTime(const double time, const double tErr = 0)
212  void SetGainRatio(const double da) { fGainRatio = da; }
213 
215  { fFADCBaselineError[gain] = error; }
216 
218  { fFADCBaselineWindow[gain] = sigma; }
219 
221  { fFADCSaturatedBins[gain] = num; }
222 
224 
225  bool HasMuonProductionDepth() const { return bool(fMuonProductionDepth); }
226 
228 
230  { return *fMuonProductionDepth; }
231 
232  void
234  {
236  ERROR("PMTRecData:: Muon production depth already exists - Not replacing");
237  else
239  }
240 
242 
243  bool IsUsedInGlobalMPD() const { return fIsUsedInGlobalMPD; }
244 
245  private:
246  PMTRecData() = default;
247  ~PMTRecData() = default;
248 
249  void SetFADCTraceLength(const unsigned int traceLength) { fFADCTraceLength = traceLength; }
250  void SetFADCBinSize(const double binSize) { fFADCBinSize = binSize; }
251 
252  double fRiseTime = 0;
253  double fRiseTimeRMS = 0;
254  double fRiseTimeCleaned = 0;
256  double fFallTime = 0;
257  double fFallTimeRMS = 0;
258  double fFallTimeCleaned = 0;
260  double fT40 = 0;
261  double fT50 = 0;
262  //
263  double fOnlineVEMPeak = 0;
265  double fHistogramVEMPeak = 0;
267  double fVEMPeak = 0;
268  double fVEMPeakError = 0;
270  //
271  double fOnlineVEMCharge = 0;
275  double fVEMCharge = 0;
276  double fVEMChargeError = 0;
278  //
279  double fAreaOverPeak = 0;
280  double fTotalCharge = 0;
281  double fTotalChargeError = 0;
282  double fPeakAmplitude = 0;
283  double fShapeParameter = 0;
284  double fMuonChargeSlope = 0;
287  double fGainRatio = 0;
288 
293  bool fIsUsedInGlobalMPD = false;
294 
295  protected:
296  utl::MultiTraceD fTrace; // From calibrated tank in VEM
297 
298  private:
307 
308  unsigned int fFADCTraceLength = 0;
309  double fFADCBinSize = 0;
310 
312 
313  friend class PMT;
314  friend class utl::ShadowPtr<PMTRecData>;
315  friend class io::PMTRecData_ROOT;
316 
317  };
318 
319 }
320 
321 
322 #endif
double GetVEMCharge() const
Definition: PMTRecData.h:130
double GetFallTimeRMS() const
RMS of the fall time from the PMTs.
Definition: PMTRecData.h:106
utl::MultiTrace< double >::ConstIterator ConstVEMTraceIterator
Definition: PMTRecData.h:61
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::iterator, LabeledTrace< T > > Iterator
Definition: MultiObject.h:78
void SetGainRatio(const double da)
Definition: PMTRecData.h:212
void SetOnlineVEMPeak(const double peak, const double peakErr)
Definition: PMTRecData.h:185
utl::TraceD & GetVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal)
Traces calibrated in VEM Peak.
Definition: PMTRecData.h:46
double GetTotalCharge() const
Total charge.
Definition: PMTRecData.h:137
double fRiseTimeRMS
Definition: PMTRecData.h:253
PMTRecData()=default
utl::MultiTraceD fTrace
Definition: PMTRecData.h:296
void SetRiseTimeCleaned(const double riseTime, const double rms)
Definition: PMTRecData.h:174
Holds result of the quadratic fit.
void AddTrace(const int size, const double binSize, const int label)
Definition: MultiTrace.h:76
class to hold data at PMT level
Definition: SEvent/PMT.h:28
double GetRiseTimeCleanedRMS() const
Definition: PMTRecData.h:101
void SetIsVEMChargeFromHistogram(const bool is)
Definition: PMTRecData.h:199
double GetFallTimeCleaned() const
Definition: PMTRecData.h:104
#define OFFLINE_MAKE_BOTH_ITERATOR_RANGES(_Iterator_, _ConstIterator_, _NamePrefix_)
Definition: IteratorRange.h:43
total (shower and background)
const utl::ExponentialFitData & GetMuonChargeSlopeFitData() const
Definition: PMTRecData.h:156
double GetHistogramVEMCharge() const
Definition: PMTRecData.h:127
bool HasFADCBaseline(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:69
void MakeVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal)
Definition: PMTRecData.h:52
double GetRiseTime() const
Average rise time from the PMTs.
Definition: PMTRecData.h:97
double fTotalCharge
Definition: PMTRecData.h:280
int fFADCBaselineWindow[sdet::PMTConstants::eNumberOfGains]
Definition: PMTRecData.h:301
double fVEMPeakError
Definition: PMTRecData.h:268
utl::MultiTrace< double >::Iterator VEMTraceIterator
An iterator over the available VEM trace sources.
Definition: PMTRecData.h:60
double GetFallTimeCleanedRMS() const
Definition: PMTRecData.h:107
void SetShapeParameter(const double shape)
Definition: PMTRecData.h:207
void SetAreaOverPeak(const double areaOverPeak)
Definition: PMTRecData.h:201
const utl::QuadraticFitData & GetMuonPeakFitData() const
Definition: PMTRecData.h:150
double GetFallTime() const
Average fall time from the PMTs.
Definition: PMTRecData.h:103
double GetMuonChargeSlope() const
Slope of the muon charge histogram.
Definition: PMTRecData.h:143
bool is(const double a, const double b)
Definition: testlib.cc:113
double GetHistogramVEMPeak() const
Definition: PMTRecData.h:116
double fMuonPulseDecayTimeError
Definition: PMTRecData.h:286
bool fIsUsedInGlobalMPD
Definition: PMTRecData.h:293
bool fIsVEMPeakFromHistogram
Definition: PMTRecData.h:269
void SetFallTime(const double fallTime, const double rms)
Definition: PMTRecData.h:177
utl::ExponentialFitData & GetMuonChargeSlopeFitData()
Definition: PMTRecData.h:155
void SetFADCBinSize(const double binSize)
Definition: PMTRecData.h:250
void SetMuonPulseDecayTime(const double time, const double tErr=0)
Definition: PMTRecData.h:210
double GetFADCBaselineError(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:81
int gain
Definition: dump1090.h:241
double GetMuonPulseDecayTime() const
Slope of the muon shape histogram.
Definition: PMTRecData.h:145
int GetFADCSaturatedBins(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:161
void MakeFADCBaseline(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:72
utl::TabulatedFunctionErrors & GetMuonProductionDepth()
Definition: PMTRecData.h:227
Iterator Begin()
Definition: MultiObject.h:83
void SetVEMCharge(const double charge, const double chargeErr)
Definition: PMTRecData.h:197
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::const_iterator, LabeledTrace< T > > ConstIterator
Definition: MultiObject.h:81
bool IsVEMChargeFromHistogram() const
Definition: PMTRecData.h:132
const SignalSegmentCollection & GetSignals() const
Definition: PMTRecData.h:170
double GetVEMChargeError() const
Definition: PMTRecData.h:131
double fRiseTimeCleanedRMS
Definition: PMTRecData.h:255
void SetFADCTraceLength(const unsigned int traceLength)
Definition: PMTRecData.h:249
Trace< double > TraceD
Definition: Trace-fwd.h:26
void SetPeakAmplitude(const double peak)
Definition: PMTRecData.h:206
FlatPieceCollection & GetBaselineFlatPieces(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:91
double fFADCBaselineError[sdet::PMTConstants::eNumberOfGains]
Definition: PMTRecData.h:300
const utl::TraceD & GetFADCBaseline(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:78
double fShapeParameter
Definition: PMTRecData.h:283
void SetFADCSaturatedBins(const int num, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:220
ConstVEMTraceIterator VEMTracesEnd() const
Definition: PMTRecData.h:66
utl::QuadraticFitData & GetMuonChargeFitData()
Definition: PMTRecData.h:152
double fMuonChargeSlope
Definition: PMTRecData.h:284
double GetOnlineVEMPeakError() const
Definition: PMTRecData.h:114
class to hold reconstructed data at PMT level
Definition: PMTRecData.h:38
void SetT40(const double t40)
Definition: PMTRecData.h:182
utl::QuadraticFitData & GetMuonPeakFitData()
Definition: PMTRecData.h:149
unsigned int fFADCTraceLength
Definition: PMTRecData.h:308
double GetRiseTimeRMS() const
RMS of the rise time from the PMTs.
Definition: PMTRecData.h:100
utl::ExponentialFitData & GetMuonShapeFitData()
Definition: PMTRecData.h:158
void SetIsVEMPeakFromHistogram(const bool is)
Definition: PMTRecData.h:191
double GetTotalChargeError() const
Definition: PMTRecData.h:138
double fFallTimeRMS
Definition: PMTRecData.h:257
void SetHistogramVEMCharge(const double charge, const double chargeErr)
Definition: PMTRecData.h:195
utl::ExponentialFitData fMuonChargeSlopeFitData
Definition: PMTRecData.h:291
double GetOnlineVEMCharge() const
Definition: PMTRecData.h:124
bool IsUsedInGlobalMPD() const
Definition: PMTRecData.h:243
void SetVEMPeak(const double peak, const double peakErr)
Definition: PMTRecData.h:189
void SetFallTimeCleaned(const double fallTime, const double rms)
Definition: PMTRecData.h:179
void SetMuonChargeSlope(const double slope)
in unit of 1/VEM
Definition: PMTRecData.h:209
double GetShapeParameter() const
Definition: PMTRecData.h:141
double fOnlineVEMPeak
Definition: PMTRecData.h:263
void SetOnlineVEMCharge(const double charge, const double chargeErr)
Definition: PMTRecData.h:193
double GetT40() const
Definition: PMTRecData.h:109
void SetHistogramVEMPeak(const double peak, const double peakErr)
Definition: PMTRecData.h:187
int fFADCSaturatedBins[sdet::PMTConstants::eNumberOfGains]
Definition: PMTRecData.h:303
double fHistogramVEMCharge
Definition: PMTRecData.h:273
int GetFADCBaselineWindow(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:84
double fAreaOverPeak
Definition: PMTRecData.h:279
void SetFADCBaselineWindow(const int sigma, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:217
double fOnlineVEMPeakError
Definition: PMTRecData.h:264
void SetTotalCharge(const double totalCharge, const double chErr=0)
Definition: PMTRecData.h:203
double GetOnlineVEMChargeError() const
Definition: PMTRecData.h:125
double fRiseTimeCleaned
Definition: PMTRecData.h:254
std::vector< Piece > FlatPieceCollection
Definition: PMTRecData.h:89
double fPeakAmplitude
Definition: PMTRecData.h:282
const utl::TraceD & GetVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Definition: PMTRecData.h:49
void MakeMuonProductionDepth()
Definition: PMTRecData.h:233
std::vector< SignalSegment > SignalSegmentCollection
Definition: SignalSegment.h:33
~PMTRecData()=default
const utl::ExponentialFitData & GetMuonShapeFitData() const
Definition: PMTRecData.h:159
double GetOnlineVEMPeak() const
Definition: PMTRecData.h:113
bool IsVEMPeakFromHistogram() const
Definition: PMTRecData.h:121
double fMuonPulseDecayTime
Definition: PMTRecData.h:285
sdet::PMTConstants::PMTGain GetGainUsed() const
Definition: PMTRecData.h:164
void SetIsUsedInGlobalMPD(const bool is)
Definition: PMTRecData.h:241
const utl::QuadraticFitData & GetMuonChargeFitData() const
Definition: PMTRecData.h:153
SignalSegmentCollection & GetRawSignals()
Definition: PMTRecData.h:166
double fHistogramVEMChargeError
Definition: PMTRecData.h:274
double fHistogramVEMPeakError
Definition: PMTRecData.h:266
utl::ShadowPtr< utl::TraceD > fFADCBaseline[sdet::PMTConstants::eNumberOfGains]
Definition: PMTRecData.h:299
const utl::TabulatedFunctionErrors & GetMuonProductionDepth() const
Definition: PMTRecData.h:229
Trace< T > & GetTrace(const int label=0)
Returns the trace for /par source.
Definition: MultiTrace.h:70
double GetVEMPeakError() const
Definition: PMTRecData.h:120
SignalSegmentCollection & GetSignals()
Definition: PMTRecData.h:169
double GetMuonPulseDecayTimeError() const
Definition: PMTRecData.h:146
void SetFADCBaselineError(const double error, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:214
void SetT50(const double t50)
Definition: PMTRecData.h:183
double GetRiseTimeCleaned() const
Definition: PMTRecData.h:98
const FlatPieceCollection & GetBaselineFlatPieces(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Definition: PMTRecData.h:93
utl::QuadraticFitData fMuonChargeFitData
Definition: PMTRecData.h:290
double fTotalChargeError
Definition: PMTRecData.h:281
utl::QuadraticFitData fMuonPeakFitData
Definition: PMTRecData.h:289
Iterator End()
Definition: MultiObject.h:85
ConstVEMTraceIterator VEMTracesBegin() const
Definition: PMTRecData.h:64
utl::ExponentialFitData fMuonShapeFitData
Definition: PMTRecData.h:292
double GetHistogramVEMPeakError() const
Definition: PMTRecData.h:117
SignalSegmentCollection fSignals
Definition: PMTRecData.h:306
double GetT50() const
Definition: PMTRecData.h:110
sdet::PMTConstants::PMTGain fGainUsed
Definition: PMTRecData.h:304
utl::TraceD & GetFADCBaseline(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Definition: PMTRecData.h:75
void SetRiseTime(const double riseTime, const double rms)
Definition: PMTRecData.h:172
double fFallTimeCleaned
Definition: PMTRecData.h:258
void SetGainUsed(const sdet::PMTConstants::PMTGain gain)
Definition: PMTRecData.h:223
VEMTraceIterator VEMTracesBegin()
Definition: PMTRecData.h:63
double GetPeakAmplitude() const
Peak Amplitude.
Definition: PMTRecData.h:140
utl::ShadowPtr< utl::TabulatedFunctionErrors > fMuonProductionDepth
Definition: PMTRecData.h:311
bool HasVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Definition: PMTRecData.h:55
#define ERROR(message)
Macro for logging error messages.
Definition: ErrorLogger.h:165
double fVEMChargeError
Definition: PMTRecData.h:276
const SignalSegmentCollection & GetRawSignals() const
Definition: PMTRecData.h:167
VEMTraceIterator VEMTracesEnd()
Definition: PMTRecData.h:65
double GetVEMPeak() const
Definition: PMTRecData.h:119
double fFADCBinSize
Definition: PMTRecData.h:309
std::pair< unsigned int, unsigned int > Piece
pieces of relative FADC flatnes in format [first, second)
Definition: PMTRecData.h:88
double fFallTimeCleanedRMS
Definition: PMTRecData.h:259
bool HasMuonProductionDepth() const
Definition: PMTRecData.h:225
bool fIsVEMChargeFromHistogram
Definition: PMTRecData.h:277
SignalSegmentCollection fRawSignals
Definition: PMTRecData.h:305
FlatPieceCollection fFADCBaselineFlatPieces[sdet::PMTConstants::eNumberOfGains]
Definition: PMTRecData.h:302
bool HasLabel(const int label) const
Definition: MultiObject.h:91
double GetAreaOverPeak() const
Area over peak.
Definition: PMTRecData.h:135
double GetHistogramVEMChargeError() const
Definition: PMTRecData.h:128
double fOnlineVEMCharge
Definition: PMTRecData.h:271
double fHistogramVEMPeak
Definition: PMTRecData.h:265
double GetGainRatio() const
Definition: PMTRecData.h:147
double fOnlineVEMChargeError
Definition: PMTRecData.h:272

, generated on Tue Sep 26 2023.