Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ZDCPulseAnalyzer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ZDCANALYSIS_ZDCPulseAnalyzer_h
6 #define ZDCANALYSIS_ZDCPulseAnalyzer_h
7 
10 #include "ZdcAnalysis/ZDCMsg.h"
11 #include "TGraphErrors.h"
12 #include "TFitter.h"
13 #include "TF1.h"
14 #include "TH1.h"
15 
16 #include <vector>
17 #include <string>
18 #include <memory>
19 
20 
22 {
23 public:
24  enum {PulseBit = 0, // &1
25  LowGainBit = 1, // &2
26  FailBit = 2, // &4
27  HGOverflowBit = 3, // &8
28  // -------------------------
29  HGUnderflowBit = 4, // &16
30  PSHGOverUnderflowBit = 5, // &32
31  LGOverflowBit = 6, // &64
32  LGUnderflowBit = 7, // &128
33  // -------------------------
34  PrePulseBit = 8, // &256
35  PostPulseBit = 9, // &512
36  FitFailedBit = 10, // &1024
37  BadChisqBit = 11, // &2048
38  // -------------------------
39  BadT0Bit = 12, // &4096
40  ExcludeEarlyLGBit = 13, // &8192
41  ExcludeLateLGBit = 14, // &16384
42  preExpTailBit = 15, // &32768
43  //
44  FitMinAmpBit = 16, // 0x10000
45  RepassPulseBit = 17, // 0x20000
46  ArmSumIncludeBit = 18,
47 
48  N_STATUS_BITS
49  };
50 
51  enum LowGainMode {
52  LGModeNormal = 0,
54  LGModeRefitLG
55  };
56 
57  enum TimingCorrMode {NoTimingCorr = 0, TimingCorrLin, TimingCorrLog};
58 
59 private:
60  typedef std::vector<float>::const_iterator SampleCIter;
61 
62  // Static data
63  //
64  static bool s_quietFits;
65  static bool s_saveFitFunc;
66  static TH1* s_undelayedFitHist;
67  static TH1* s_delayedFitHist;
68  static TF1* s_combinedFitFunc;
69  static float s_combinedFitTMax;
70  static float s_combinedFitTMin;
71  static std::vector<float> s_pullValues;
72 
73  // Quantities provided/set in the constructor
74  //
76  std::string m_tag;
77  unsigned int m_Nsample{};
78  unsigned int m_preSampleIdx{};
79  float m_deltaTSample{};
80  int m_pedestal{};
81  float m_gainHG{};
82  unsigned int m_LGMode{LGModeNormal};
83  float m_tmin{};
84  float m_tmax{};
85 
86  std::string m_fitFunction;
87  size_t m_2ndDerivStep{1};
88  size_t m_peak2ndDerivMinSample{};
89  size_t m_peak2ndDerivMinTolerance{1};
90  float m_peak2ndDerivMinThreshLG{};
91  float m_peak2ndDerivMinThreshHG{};
92 
93  bool m_useDelayed{false};
94 
95  bool m_enableRepass{false};
96  float m_peak2ndDerivMinRepassLG{};
97  float m_peak2ndDerivMinRepassHG{};
98 
99  // Gain factors for low gain and high gain
100  //
101  float m_gainFactorHG{};
102  float m_gainFactorLG{};
103 
104  // Uncertainties on the ADC values due to noise
105  //
106  float m_noiseSigHG{};
107  float m_noiseSigLG{};
108 
109  // Default fit values and cuts that can be set via modifier methods
110  //
111  std::string m_fitOptions;
112  int m_HGOverflowADC{};
113  int m_HGUnderflowADC{};
114  int m_LGOverflowADC{};
115 
116  float m_nominalT0HG{};
117  float m_nominalT0LG{};
118 
119  float m_nominalTau1{};
120  float m_nominalTau2{};
121 
122  bool m_fixTau1{};
123  bool m_fixTau2{};
124 
125  float m_defaultFitTMax{}; // user-provided upper limit on samples to be included in fit
126  float m_defaultFitTMin{}; // user-provided upper limit on samples to be included in fit
127 
128  float m_chisqDivAmpCutLG{}; // maximum good LG chisq / amplitude
129  float m_chisqDivAmpCutHG{}; // maximum good HG chisq / amplitude
130 
131  float m_T0CutLowLG{}; // minimum good corrected time for LG fits
132  float m_T0CutHighLG{}; // maximum good corrected time for LG fits
133 
134  float m_T0CutLowHG{}; // minimum good corrected time for HG fits
135  float m_T0CutHighHG{}; // maximum good corrected time for HG fits
136 
137  std::unique_ptr<const TF1> m_timeResFuncHG_p{};
138  std::unique_ptr<const TF1> m_timeResFuncLG_p{};
139  float m_t0CutSig{};
140  unsigned int m_timeCutMode{0}; // 0 - no significance cut, 1 - cut ORed with fixed cut, 2 - cut ANDed with fixed cut
141 
142  float m_defaultT0Max{}; // Upper limit on pulse t0
143  float m_defaultT0Min{}; // Lower limit on pulse t0
144 
145  float m_fitAmpMinHG{}; // Minimum amplitude in the fit
146  float m_fitAmpMinLG{}; // Minimum amplitude in the fit
147 
148  float m_fitAmpMaxHG{}; // Minimum am`plitude in the fit
149  float m_fitAmpMaxLG{}; // Minimum amplitude in the fit
150 
151  // Enabling (or not) of exclusion of early or late samples from OOT pileup
152  //
153  bool m_enablePreExcl{false};
154  unsigned int m_maxSamplesPreExcl{0};
155  unsigned int m_preExclHGADCThresh{0};
156  unsigned int m_preExclLGADCThresh{0};
157 
158  bool m_enablePostExcl{false};
159  unsigned int m_postExclHGADCThresh{0};
160  unsigned int m_postExclLGADCThresh{0};
161  unsigned int m_maxSamplesPostExcl{0};
162 
163  //
164  unsigned int m_timingCorrMode{NoTimingCorr};
165  float m_timingCorrRefADC{500};
166  float m_timingCorrScale{100};
167  std::vector<float> m_LGT0CorrParams; // Parameters used to correct the fit LG times
168  std::vector<float> m_HGT0CorrParams; // Parameters used to correct the fit HG times
169 
170  bool m_haveNonlinCorr{false};
171  float m_nonLinCorrRefADC{500};
172  float m_nonLinCorrRefScale{100};
173  std::vector<float> m_nonLinCorrParamsHG;
174  std::vector<float> m_nonLinCorrParamsLG;
175 
176  bool m_haveFADCCorrections{false};
177  bool m_FADCCorrPerSample{false};
178  std::unique_ptr<const TH1> m_FADCCorrHG{};
179  std::unique_ptr<const TH1> m_FADCCorrLG{};
180 
181  // Histogram used to perform the fits and function wrappers
182  //
183  std::unique_ptr<TH1> m_fitHist;
184  std::unique_ptr<TH1> m_fitHistLGRefit;
185 
186  bool m_initializedFits{false};
187  std::unique_ptr<ZDCFitWrapper> m_defaultFitWrapper;
188  std::unique_ptr<ZDCPrePulseFitWrapper> m_prePulseFitWrapper;
189  std::unique_ptr<ZDCPreExpFitWrapper> m_preExpFitWrapper;
190 
191  // Members to keep track of adjustments to time range used in analysis/fit
192  //
193  bool m_adjTimeRangeEvent{}; // indicates whether we adjust the time range for this specific event
194 
195  unsigned int m_minSampleEvt{};
196  unsigned int m_maxSampleEvt{};
197 
198  // Delayed pulse members
199  //
200  bool m_useFixedBaseline{};
201  float m_delayedDeltaT{};
202  float m_delayedPedestalDiff{};
203  std::unique_ptr<TH1> m_delayedHist;
204  std::unique_ptr<TH1> m_delayedHistLGRefit;
205 
206  std::unique_ptr<TFitter> m_prePulseCombinedFitter;
207  std::unique_ptr<TFitter> m_defaultCombinedFitter;
208 
209  // Dynamic data loaded for each pulse (event)
210  // ==========================================
211 
212  // -----------------------
213  // Statuses
214  //
215  bool m_haveData{};
216 
217  bool m_havePulse{};
218  bool m_useLowGain{};
219  bool m_fail{};
220  bool m_HGOverflow{};
221 
222  bool m_HGUnderflow{};
223  bool m_PSHGOverUnderflow{};
224  bool m_LGOverflow{};
225  bool m_LGUnderflow{};
226 
227  bool m_prePulse{};
228  bool m_postPulse{};
229  bool m_fitFailed{};
230  bool m_badChisq{};
231 
232  bool m_badT0{};
233  bool m_ExcludeEarly{};
234  bool m_ExcludeLate{};
235  bool m_preExpTail{};
236 
237  bool m_fixPrePulse{};
238  bool m_fitMinAmp{};
239  bool m_repassPulse{};
240 
241  // -----------------------
242 
243  bool m_backToHG_pre{};
244  float m_baselineCorr{};
245 
246  // Pulse analysis
247  //
248  int m_usedPresampIdx{};
249  float m_preSample{};
250 
251  float m_minADCHG{};
252  float m_maxADCHG{};
255 
256  float m_maxADCLG{};
257  float m_minADCLG{};
260 
261  float m_ADCPeakHG{};
262  float m_ADCPeakLG{};
263 
264  float m_maxDelta{};
265  float m_minDelta{};
266 
267  float m_initialExpAmp{};
268  float m_minDeriv2nd{};
269  int m_minDeriv2ndIndex{};
270 
271  float m_fitTMax{}; // event-by-event specified fit tmax
272  float m_fitTMin{}; // event-by-event specified fit tmin
273 
274  float m_fitPostT0lo{}; // use to assign lower bound of post pulse T0
275 
277  float m_preExpSig;
279 
280  float m_initialPrePulseT0{};
281  float m_initialPrePulseAmp{};
282 
283  float m_initialPostPulseT0{};
284 
285  float m_fitAmplitude{};
286  float m_fitAmpError{};
287  float m_fitTime{};
288  float m_fitTimeSub{};
289  float m_fitTimeCorr{};
290  float m_timeSig{};
291  float m_fitTCorr2nd{};
292  float m_fitTau1{};
293  float m_fitTau2{};
294  float m_fitChisq{};
295  float m_fitNDoF{};
296  float m_fitPreT0{};
297  float m_fitPreAmp{};
298  float m_fitPostT0{};
299  float m_fitPostAmp{};
300  float m_fitExpAmp{};
301  float m_amplitude{};
302  float m_ampNoNonLin{};
303  float m_ampError{};
304  float m_preSampleAmp{};
305  float m_preAmplitude{};
306  float m_postAmplitude{};
307  float m_expAmplitude{};
308  float m_bkgdMaxFraction{};
309  float m_delayedBaselineShift{};
310 
311  bool m_evtLGRefit{false};
312  float m_refitLGAmpl{0};
313  float m_refitLGFitAmpl{0};
314  float m_refitLGAmplCorr{0};
315  float m_refitLGAmpError{0};
316  float m_refitLGChisq{0};
317  float m_refitLGTime{0};
318  float m_refitLGTimeSub{0};
319 
320  int m_lastHGOverFlowSample{-1};
321  int m_firstHGOverFlowSample{-1};
322 
323  unsigned int m_NSamplesAna{0};
324  std::vector<float> m_ADCSamplesHG;
325  std::vector<float> m_ADCSamplesLG;
326  std::vector<float> m_ADCSamplesHGSub;
327  std::vector<float> m_ADCSamplesLGSub;
328 
329  std::vector<bool> m_useSampleLG;
330  std::vector<bool> m_useSampleHG;
331 
332  std::vector<float> m_ADCSSampSigHG;
333  std::vector<float> m_ADCSSampSigLG;
334 
335  std::vector<float> m_samplesSub;
336  std::vector<float> m_samplesSig;
337 
338  std::vector<float> m_samplesLGRefit;
339  std::vector<float> m_samplesSigLGRefit;
340 
341  std::vector<float> m_samplesDeriv2nd;
342 
343  // When using combined delayed + undelayed pulses we calculate the chisquare ourselves
344  // so fill this vector as part of that calculation. For the cases where we do not use
345  // delayed samples (2015 and Run3 onward) this vector is not used as the pulls are calculated
346  // when they are fetched.
347  //
348  std::vector<float> m_fitPulls;
349 
350  // Private methods
351  //
352  void Reset(bool reanalyze = false);
353  void SetDefaults();
354  void SetupFitFunctions();
355 
356  bool DoAnalysis(bool repass);
357 
358  bool ScanAndSubtractSamples();
359 
360  bool AnalyzeData(size_t nSamples, size_t preSample,
361  const std::vector<float>& samples, // The samples used for this event
362  const std::vector<bool>& useSamples, // The samples used for this event
363  float peak2ndDerivMinThresh,
364  float noiseSig, // The "resolution" on the ADC value
365  const std::vector<float>& toCorrParams, // The parameters used to correct the t0
366  float maxChisqDivAmp, // The maximum chisq / amplitude ratio
367  float minT0Corr, float maxT0Corr // The minimum and maximum corrected T0 values
368  );
369 
370 
371  double getAmplitudeCorrection(bool highGain);
372 
373  static std::vector<float> Calculate2ndDerivative(const std::vector <float>& inputData, unsigned int step);
374  static std::vector<float> CalculateDerivative(const std::vector <float>& inputData, unsigned int step);
375  static float obtainDelayedBaselineCorr(const std::vector<float>& samples);
376 
377  void prepareLGRefit(const std::vector<float>& samplesLG, const std::vector<float>& samplesSig,
378  const std::vector<bool>& useSamples);
379 
380  void FillHistogram(bool refitLG)
381  {
382  if (!m_useDelayed) {
383  if (!refitLG) {
384  // Set the data and errors in the histogram object
385  //
386  for (size_t isample = 0; isample < m_NSamplesAna; isample++) {
387  m_fitHist->SetBinContent(isample + 1, m_samplesSub[isample]);
388  m_fitHist->SetBinError(isample + 1, m_samplesSig[isample]);
389  }
390  }
391  else {
392  for (size_t isample = 0; isample < m_NSamplesAna; isample++) {
393  m_fitHistLGRefit->SetBinContent(isample + 1, m_samplesLGRefit[isample]);
394  m_fitHistLGRefit->SetBinError(isample + 1, m_samplesSigLGRefit[isample]);
395  }
396  }
397  }
398  else {
399  if (!refitLG) {
400  // Set the data and errors in the histogram object
401  //
402  for (size_t isample = 0; isample < m_Nsample; isample++) {
403  m_fitHist->SetBinContent(isample + 1, m_samplesSub[isample * 2]);
404  m_delayedHist->SetBinContent(isample + 1, m_samplesSub[isample * 2 + 1]);
405 
406  m_fitHist->SetBinError(isample + 1, m_samplesSig[isample]);
407  m_delayedHist->SetBinError(isample + 1, m_samplesSig[isample]);
408  }
409  }
410  else {
411  // Set the data and errors in the histogram object
412  //
413  for (size_t isample = 0; isample < m_Nsample; isample++) {
414  m_fitHistLGRefit->SetBinContent(isample + 1, m_samplesLGRefit[isample * 2]);
415  m_delayedHistLGRefit->SetBinContent(isample + 1, m_samplesLGRefit[isample * 2 + 1]);
416 
417  m_fitHistLGRefit->SetBinError(isample + 1, m_samplesSigLGRefit[isample]);
418  m_delayedHistLGRefit->SetBinError(isample + 1, m_samplesSigLGRefit[isample]);
419  }
420  }
421  }
422  }
423 
424  void DoFit(bool refitLG = false);
425  void DoFitCombined(bool refitLG = false);
426 
427  static std::unique_ptr<TFitter> MakeCombinedFitter(TF1* func);
428 
429  // The minuit FCN used for fitting combined undelayed and delayed pulses
430  //
431  static void CombinedPulsesFCN(int& numParam, double*, double& f, double* par, int flag);
432 
433  void UpdateFitterTimeLimits(TFitter* fitter, ZDCFitWrapper* wrapper, bool prePulse);
434 
435 public:
436 
437  ZDCPulseAnalyzer(ZDCMsg::MessageFunctionPtr msgFunc_p, const std::string& tag, int Nsample, float deltaTSample, size_t preSampleIdx, int pedestal, float gainHG,
438  const std::string& fitFunction, int peak2ndDerivMinSample, float peak2DerivMinThreshHG, float peak2DerivMinThreshLG);
439 
441 
442  void SetFitOPtions(const std::string& fitOptions) { m_fitOptions = fitOptions;}
443  static void SetQuietFits (bool quiet) {s_quietFits = quiet;}
444  static void SetSaveFitFunc(bool save ) {s_saveFitFunc = save;}
445  static bool QuietFits() {return s_quietFits;}
446 
447  void enableDelayed(float deltaT, float pedestalShift, bool fixedBaseline = false);
448 
449  void enableRepass(float peak2ndDerivMinRepassHG, float peak2ndDerivMinRepassLG);
450 
451  void enableTimeSigCut(bool AND, float sigCut, const std::string& TF1String,
452  const std::vector<double>& parsHG,
453  const std::vector<double>& parsLG);
454 
455  void enablePreExclusion(unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
456  {
457  m_enablePreExcl = true;
458  m_maxSamplesPreExcl = maxSamplesExcl;
459  m_preExclHGADCThresh = HGADCThresh;
460  m_preExclLGADCThresh = LGADCThresh;
461  }
462 
463  void enablePostExclusion(unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
464  {
465  m_enablePostExcl = true;
466  m_maxSamplesPostExcl = maxSamplesExcl;
467  m_postExclHGADCThresh = HGADCThresh;
468  m_postExclLGADCThresh = LGADCThresh;
469  }
470 
472  m_peak2ndDerivMinTolerance = tolerance;
473  m_initializedFits = false;
474  }
475 
476  void setLGMode(unsigned int mode) {m_LGMode = mode;}
477  unsigned int getLGMode() const {return m_LGMode;}
478 
479  void set2ndDerivStep(size_t step) {m_2ndDerivStep = step;}
480 
481  void SetCutValues(float chisqDivAmpCutHG, float chisqDivAmpCutLG,
482  float deltaT0MinHG, float deltaT0MaxHG,
483  float deltaT0MinLG, float deltaT0MaxLG) ;
484 
485  void SetNoiseSigmas(float noiseSigHG, float noiseSigLG)
486  {
487  m_noiseSigHG = noiseSigHG;
488  m_noiseSigLG = noiseSigLG;
489  }
490 
491  void SetGainFactorsHGLG(float gainFactorHG, float gainFactorLG);
492 
493  void SetFitMinMaxAmp(float minAmpHG, float minAmpLG, float maxAmpHG, float maxAmpLG);
494 
495  void SetTauT0Values(bool fixTau1, bool fixTau2, float tau1, float tau2, float t0HG, float t0LG);
496 
497  void SetADCOverUnderflowValues(int HGOverflowADC, int HGUnderflowADC, int LGOverflowADC);
498 
499  void SetTimingCorrParams(TimingCorrMode mode, float refADC, float refScale,
500  const std::vector<float>& HGT0CorrParams, const std::vector<float>& LGT0CorrParams)
501  {
502  m_timingCorrMode = mode;
503  if (mode != NoTimingCorr) {
504  m_timingCorrRefADC = refADC;
505  m_timingCorrScale = refScale;
506 
507  m_HGT0CorrParams = HGT0CorrParams;
508  m_LGT0CorrParams = LGT0CorrParams;
509  }
510  }
511 
512  void SetFitTimeMax(float tmax);
513 
514  void SetNonlinCorrParams(float refADC, float refScale, const std::vector<float>& paramsHG, const std::vector<float>& paramsLG)
515  {
516  std::string HGParamsStr = "HG coefficients = ", LGParamsStr = "LG coefficients = ";
517 
518  for (auto val : paramsHG) {HGParamsStr += std::to_string(val) + " ";}
519  for (auto val : paramsLG) {LGParamsStr += std::to_string(val) + " ";}
520 
521  (*m_msgFunc_p)(ZDCMsg::Info, ("Setting non-linear parameters for module: " + m_tag + ", reference ADC = " +
522  std::to_string(refADC) + ", reference scale = " + std::to_string(refScale)));
523 
524  (*m_msgFunc_p)(ZDCMsg::Info, HGParamsStr);
525  (*m_msgFunc_p)(ZDCMsg::Info, LGParamsStr);
526 
527  m_nonLinCorrRefADC = refADC;
528  m_nonLinCorrRefScale = refScale;
529  m_nonLinCorrParamsHG = paramsHG;
530  m_nonLinCorrParamsLG = paramsLG;
531  m_haveNonlinCorr = true;
532  }
533 
534  // Provide a historam that provides per-ADC channel correction factors for integral and differential
535  // non-linearities
536  //
537  void enableFADCCorrections(bool correctPerSample, std::unique_ptr<const TH1>& correHistHG, std::unique_ptr<const TH1>& correHistLG);
538  void disableFADCCorrections() {m_haveFADCCorrections = false;}
539 
540  bool LoadAndAnalyzeData(const std::vector<float>& ADCSamplesHG, const std::vector<float>& ADCSamplesLG);
541 
542  bool LoadAndAnalyzeData(const std::vector<float>& ADCSamplesHG, const std::vector<float>& ADCSamplesLG,
543  const std::vector<float>& ADCSamplesHGDelayed, const std::vector<float>& ADCSamplesLGDelayed);
544 
545  bool ReanalyzeData();
546 
547  bool HaveData() const {return m_haveData;}
548 
549  // ------------------------------------------------------------
550  // Status bit setting functions
551  //
552  bool HavePulse() const {return m_havePulse;}
553  bool UseLowGain() const {return m_useLowGain;}
554  bool Failed() const {return m_fail;}
555  bool HGOverflow() const {return m_HGOverflow;}
556 
557  bool HGUnderflow() const {return m_HGUnderflow;}
558  bool PSHGOverUnderflow() const {return m_PSHGOverUnderflow;}
559  bool LGOverflow() const {return m_LGOverflow;}
560  bool LGUnderflow() const {return m_LGUnderflow;}
561 
562  bool PrePulse() const {return m_prePulse;}
563  bool PostPulse() const {return m_postPulse;}
564  bool FitFailed() const {return m_fitFailed;}
565  bool BadChisq() const {return m_badChisq;}
566 
567  bool BadT0() const {return m_badT0;}
568  bool ExcludeEarlyLG() const {return m_ExcludeEarly;}
569  bool ExcludeLateLG() const {return m_ExcludeLate;}
570  bool preExpTail() const {return m_preExpTail;}
571  bool fitMinimumAmplitude() const {return m_fitMinAmp;}
572  bool repassPulse() const {return m_repassPulse;}
573  bool ArmSumInclude() const {return HavePulse() && !(FitFailed() || BadChisq() || BadT0() || fitMinimumAmplitude() || LGOverflow());}
574 
575  // ------------------------------------------------------------
576 
577 
578  // ---------------------------
579  // Get fit parameters
580  //
581  float GetFitAmplitude() const {return m_fitAmplitude;}
582  float GetFitT0() const {return m_fitTime;}
583  float GetT0Sub() const {return m_fitTimeSub;}
584  float GetT0Corr() const {return m_fitTimeCorr;}
585  float getTimeSig() const {return m_timeSig;}
586  float GetChisq() const {return m_fitChisq;}
587  float GetFitTau1() const {return m_fitTau1;}
588  float GetFitTau2() const {return m_fitTau2;}
589  float GetFitPreT0() const {return m_fitPreT0;}
590  float GetFitPreAmp() const {return m_preAmplitude;}
591  float GetFitPostT0() const {return m_fitPostT0;}
592  float GetFitPostAmp() const {return m_postAmplitude;}
593  float GetFitExpAmp() const {return m_fitExpAmp;}
594  // ---------------------------
595 
596  float GetAmpNoNonLin() const {return m_ampNoNonLin;}
597  float GetAmplitude() const {return m_amplitude;}
598  float GetAmpError() const {return m_ampError;}
599  float GetPreExpAmp() const {return m_expAmplitude;}
600 
601  float getRefitLGAmp() const
602  {
603  if (m_evtLGRefit) return m_refitLGAmpl;
604  else return 0;
605  }
606 
607  float getRefitLGFitAmp() const
608  {
609  if (m_evtLGRefit) return m_refitLGFitAmpl;
610  else return 0;
611  }
612 
613  float getRefitLGAmpCorr() const
614  {
615  if (m_evtLGRefit) return m_refitLGAmplCorr;
616  else return 0;
617  }
618 
619  float getRefitLGChisq() const
620  {
621  if (m_evtLGRefit) return m_refitLGChisq;
622  else return 0;
623  }
624 
625  float getRefitLGTime() const
626  {
627  if (m_evtLGRefit) return m_refitLGTime;
628  else return 0;
629  }
630 
631  float getRefitLGTimeSub() const
632  {
633  if (m_evtLGRefit) return m_refitLGTimeSub;
634  else return 0;
635  }
636 
637  float getPresample() const {return m_preSample;}
638  float getMaxADCHG() const {return m_maxADCHG;}
639  float getMaxADCLG() const {return m_maxADCLG;}
640  float getMinADCHG() const {return m_minADCHG;}
641  float getMinADCLG() const {return m_minADCLG;}
642 
643  float getMaxADCSub() const {
644  float maxADCNosub = m_useLowGain ? m_maxADCLG : m_maxADCHG;
645  return maxADCNosub - m_pedestal - m_preSample;
646  }
647 
648  float getMinADCSub() const {
649  float minADCNosub = m_useLowGain ? m_minADCLG : m_minADCHG;
650  return minADCNosub - m_pedestal - m_preSample;
651  }
652 
653  int getMaxADCSampleHG() const {return m_maxADCSampleHG;}
654  int getMinADCSampleHG() const {return m_minADCSampleHG;}
655 
656  int getMaxADCSampleLG() const {return m_maxADCSampleLG;}
657  int getMinADCSampleLG() const {return m_minADCSampleLG;}
658 
659  float getADCPeakHG() const {return m_ADCPeakHG;}
660  float getADCPeakLG() const {return m_ADCPeakLG;}
661 
662  float GetMaxDelta() const {return m_maxDelta;}
663  float GetMinDelta() const {return m_minDelta;}
664 
665  float GetFitTMax() const {return m_fitTMax;}
666  float GetFitTMin() const {return m_fitTMin;}
667 
668  float GetdelayBS() const {return m_delayedBaselineShift;}
669 
670  float GetMinDeriv2nd() const {return m_minDeriv2nd;}
671  float GetMinDeriv2ndIndex() const {return m_minDeriv2ndIndex;}
672 
673  unsigned int GetStatusMask() const;
674 
675  float GetPreSampleAmp() const {return m_preSampleAmp;}
676  float GetBkgdMaxFraction() const {return m_bkgdMaxFraction;}
677 
678  float GetDelayedBaselineShiftFit() const {return m_delayedBaselineShift;}
679  float GetDelayedBaselineCorr() const {return m_baselineCorr;}
680 
681  const TH1* GetHistogramPtr(bool refitLG = false)
682  {
683  //
684  // We defer filling the histogram if we don't have a pulse until the histogram is requested
685  //
686  if (!m_havePulse) {
687  FillHistogram(refitLG);
688  }
689 
690  return refitLG ? m_fitHistLGRefit.get() : m_fitHist.get();
691  }
692 
693  std::shared_ptr<TGraphErrors> GetCombinedGraph(bool forceLG = false);
694  std::shared_ptr<TGraphErrors> GetGraph(bool forceLG = false);
695 
696  std::vector<float> GetFitPulls(bool forceLG = false) const;
697 
698  void dump() const;
699  void dumpSetting() const;
700  void dumpTF1(const TF1*) const;
701 
702  const std::vector<float>& GetSamplesSub() const {return m_samplesSub;}
703  const std::vector<float>& GetSamplesDeriv2nd() const {return m_samplesDeriv2nd;}
704 };
705 
706 
707 #endif
ZDCPulseAnalyzer::m_defaultFitWrapper
std::unique_ptr< ZDCFitWrapper > m_defaultFitWrapper
Definition: ZDCPulseAnalyzer.h:187
ZDCPulseAnalyzer::GetFitPreAmp
float GetFitPreAmp() const
Definition: ZDCPulseAnalyzer.h:590
ZDCPulseAnalyzer::m_minADCSampleLG
int m_minADCSampleLG
Definition: ZDCPulseAnalyzer.h:258
LArSamples::FitterData::fitter
const ShapeFitter * fitter
Definition: ShapeFitter.cxx:23
ZDCPulseAnalyzer::preExpTail
bool preExpTail() const
Definition: ZDCPulseAnalyzer.h:570
ZDCPulseAnalyzer::m_prePulseFitWrapper
std::unique_ptr< ZDCPrePulseFitWrapper > m_prePulseFitWrapper
Definition: ZDCPulseAnalyzer.h:188
ZDCPulseAnalyzer::m_useSampleHG
std::vector< bool > m_useSampleHG
Definition: ZDCPulseAnalyzer.h:330
ZDCPulseAnalyzer::m_ADCSamplesLG
std::vector< float > m_ADCSamplesLG
Definition: ZDCPulseAnalyzer.h:325
ZDCPulseAnalyzer::m_samplesSub
std::vector< float > m_samplesSub
Definition: ZDCPulseAnalyzer.h:335
ZDCPulseAnalyzer::~ZDCPulseAnalyzer
~ZDCPulseAnalyzer()
Definition: ZDCPulseAnalyzer.h:440
ZDCPulseAnalyzer::GetFitPostAmp
float GetFitPostAmp() const
Definition: ZDCPulseAnalyzer.h:592
ZDCPulseAnalyzer::getRefitLGAmp
float getRefitLGAmp() const
Definition: ZDCPulseAnalyzer.h:601
ZDCPulseAnalyzer::GetT0Sub
float GetT0Sub() const
Definition: ZDCPulseAnalyzer.h:583
ZDCPulseAnalyzer::UseLowGain
bool UseLowGain() const
Definition: ZDCPulseAnalyzer.h:553
ZDCPulseAnalyzer::m_LGT0CorrParams
std::vector< float > m_LGT0CorrParams
Definition: ZDCPulseAnalyzer.h:167
tolerance
constexpr double tolerance
Definition: runMdtGeoComparison.cxx:104
ZDCPulseAnalyzer::ArmSumInclude
bool ArmSumInclude() const
Definition: ZDCPulseAnalyzer.h:573
ZDCPulseAnalyzer::GetdelayBS
float GetdelayBS() const
Definition: ZDCPulseAnalyzer.h:668
ZDCPulseAnalyzer::FillHistogram
void FillHistogram(bool refitLG)
Definition: ZDCPulseAnalyzer.h:380
ZDCPulseAnalyzer::GetMinDelta
float GetMinDelta() const
Definition: ZDCPulseAnalyzer.h:663
ZDCPulseAnalyzer::GetDelayedBaselineShiftFit
float GetDelayedBaselineShiftFit() const
Definition: ZDCPulseAnalyzer.h:678
ZDCPulseAnalyzer::GetHistogramPtr
const TH1 * GetHistogramPtr(bool refitLG=false)
Definition: ZDCPulseAnalyzer.h:681
ZDCPulseAnalyzer::Failed
bool Failed() const
Definition: ZDCPulseAnalyzer.h:554
ZDCFitWrapper
Definition: ZDCFitWrapper.h:19
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
ZDCPulseAnalyzer::getMaxADCLG
float getMaxADCLG() const
Definition: ZDCPulseAnalyzer.h:639
ZDCPulseAnalyzer::SetNonlinCorrParams
void SetNonlinCorrParams(float refADC, float refScale, const std::vector< float > &paramsHG, const std::vector< float > &paramsLG)
Definition: ZDCPulseAnalyzer.h:514
ZDCPulseAnalyzer::SetPeak2ndDerivMinTolerance
void SetPeak2ndDerivMinTolerance(size_t tolerance)
Definition: ZDCPulseAnalyzer.h:471
ZDCPulseAnalyzer::getMinADCSampleHG
int getMinADCSampleHG() const
Definition: ZDCPulseAnalyzer.h:654
quiet
bool quiet
Definition: TrigGlobEffCorrValidation.cxx:190
ZDCPulseAnalyzer::GetFitPreT0
float GetFitPreT0() const
Definition: ZDCPulseAnalyzer.h:589
ZDCPulseAnalyzer::GetAmpError
float GetAmpError() const
Definition: ZDCPulseAnalyzer.h:598
ZDCPulseAnalyzer::LGOverflow
bool LGOverflow() const
Definition: ZDCPulseAnalyzer.h:559
ZDCPulseAnalyzer::m_defaultCombinedFitter
std::unique_ptr< TFitter > m_defaultCombinedFitter
Definition: ZDCPulseAnalyzer.h:207
ZDCPulseAnalyzer::getRefitLGTime
float getRefitLGTime() const
Definition: ZDCPulseAnalyzer.h:625
ZDCPulseAnalyzer::m_delayedHist
std::unique_ptr< TH1 > m_delayedHist
Definition: ZDCPulseAnalyzer.h:203
ZDCPulseAnalyzer::GetAmpNoNonLin
float GetAmpNoNonLin() const
Definition: ZDCPulseAnalyzer.h:596
ZDCPulseAnalyzer::m_fitHistLGRefit
std::unique_ptr< TH1 > m_fitHistLGRefit
Definition: ZDCPulseAnalyzer.h:184
ZDCPulseAnalyzer::PostPulse
bool PostPulse() const
Definition: ZDCPulseAnalyzer.h:563
ZDCPulseAnalyzer::getMinADCSampleLG
int getMinADCSampleLG() const
Definition: ZDCPulseAnalyzer.h:657
ZDCPulseAnalyzer::QuietFits
static bool QuietFits()
Definition: ZDCPulseAnalyzer.h:445
ZDCPulseAnalyzer::HavePulse
bool HavePulse() const
Definition: ZDCPulseAnalyzer.h:552
ZDCPulseAnalyzer::m_tag
std::string m_tag
Definition: ZDCPulseAnalyzer.h:76
Root::AND
@ AND
Definition: TGRLCollection.h:32
ZDCPulseAnalyzer::LowGainMode
LowGainMode
Definition: ZDCPulseAnalyzer.h:51
ZDCPulseAnalyzer::m_prePulseSig
float m_prePulseSig
Definition: ZDCPulseAnalyzer.h:278
ZDCPulseAnalyzer
Definition: ZDCPulseAnalyzer.h:22
ZDCPulseAnalyzer::ExcludeLateLG
bool ExcludeLateLG() const
Definition: ZDCPulseAnalyzer.h:569
ZDCPulseAnalyzer::HaveData
bool HaveData() const
Definition: ZDCPulseAnalyzer.h:547
ZDCPulseAnalyzer::GetAmplitude
float GetAmplitude() const
Definition: ZDCPulseAnalyzer.h:597
ZDCPulseAnalyzer::m_maxADCSampleHG
int m_maxADCSampleHG
Definition: ZDCPulseAnalyzer.h:254
ZDCPulseAnalyzer::GetFitTau1
float GetFitTau1() const
Definition: ZDCPulseAnalyzer.h:587
ZDCPulseAnalyzer::getRefitLGTimeSub
float getRefitLGTimeSub() const
Definition: ZDCPulseAnalyzer.h:631
ZDCMsg::Info
@ Info
Definition: ZDCMsg.h:20
ZDCPulseAnalyzer::s_quietFits
static bool s_quietFits
Definition: ZDCPulseAnalyzer.h:64
ZDCPulseAnalyzer::s_delayedFitHist
static TH1 * s_delayedFitHist
Definition: ZDCPulseAnalyzer.h:67
ZDCPulseAnalyzer::GetFitTMax
float GetFitTMax() const
Definition: ZDCPulseAnalyzer.h:665
ZDCPulseAnalyzer::BadT0
bool BadT0() const
Definition: ZDCPulseAnalyzer.h:567
ZDCPulseAnalyzer::m_samplesDeriv2nd
std::vector< float > m_samplesDeriv2nd
Definition: ZDCPulseAnalyzer.h:341
ZDCPulseAnalyzer::repassPulse
bool repassPulse() const
Definition: ZDCPulseAnalyzer.h:572
ZDCPulseAnalyzer::SetQuietFits
static void SetQuietFits(bool quiet)
Definition: ZDCPulseAnalyzer.h:443
ZDCPulseAnalyzer::GetT0Corr
float GetT0Corr() const
Definition: ZDCPulseAnalyzer.h:584
ZDCPulseAnalyzer::s_saveFitFunc
static bool s_saveFitFunc
Definition: ZDCPulseAnalyzer.h:65
ZDCPulseAnalyzer::HGOverflow
bool HGOverflow() const
Definition: ZDCPulseAnalyzer.h:555
ZDCPulseAnalyzer::m_maxADCSampleLG
int m_maxADCSampleLG
Definition: ZDCPulseAnalyzer.h:259
ZDCPulseAnalyzer::s_combinedFitFunc
static TF1 * s_combinedFitFunc
Definition: ZDCPulseAnalyzer.h:68
ZDCPulseAnalyzer::s_combinedFitTMin
static float s_combinedFitTMin
Definition: ZDCPulseAnalyzer.h:70
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:88
ZDCPulseAnalyzer::PSHGOverUnderflow
bool PSHGOverUnderflow() const
Definition: ZDCPulseAnalyzer.h:558
ZDCPulseAnalyzer::GetFitPostT0
float GetFitPostT0() const
Definition: ZDCPulseAnalyzer.h:591
ZDCPulseAnalyzer::m_useSampleLG
std::vector< bool > m_useSampleLG
Definition: ZDCPulseAnalyzer.h:329
ZDCPulseAnalyzer::m_fitFunction
std::string m_fitFunction
Definition: ZDCPulseAnalyzer.h:86
ZDCPulseAnalyzer::SampleCIter
std::vector< float >::const_iterator SampleCIter
Definition: ZDCPulseAnalyzer.h:60
ZDCPulseAnalyzer::m_fitPulls
std::vector< float > m_fitPulls
Definition: ZDCPulseAnalyzer.h:348
ZDCPulseAnalyzer::getMinADCHG
float getMinADCHG() const
Definition: ZDCPulseAnalyzer.h:640
ZDCPulseAnalyzer::GetMaxDelta
float GetMaxDelta() const
Definition: ZDCPulseAnalyzer.h:662
ZDCPulseAnalyzer::getMinADCSub
float getMinADCSub() const
Definition: ZDCPulseAnalyzer.h:648
ZDCPulseAnalyzer::m_fitOptions
std::string m_fitOptions
Definition: ZDCPulseAnalyzer.h:111
ZDCPulseAnalyzer::setLGMode
void setLGMode(unsigned int mode)
Definition: ZDCPulseAnalyzer.h:476
ZDCPulseAnalyzer::getPresample
float getPresample() const
Definition: ZDCPulseAnalyzer.h:637
checkTP.save
def save(self, fileName="./columbo.out")
Definition: checkTP.py:178
ZDCPulseAnalyzer::getMaxADCHG
float getMaxADCHG() const
Definition: ZDCPulseAnalyzer.h:638
ZDCPulseAnalyzer::getRefitLGFitAmp
float getRefitLGFitAmp() const
Definition: ZDCPulseAnalyzer.h:607
ZDCPulseAnalyzer::GetPreExpAmp
float GetPreExpAmp() const
Definition: ZDCPulseAnalyzer.h:599
ZDCPulseAnalyzer::getMaxADCSampleHG
int getMaxADCSampleHG() const
Definition: ZDCPulseAnalyzer.h:653
ZDCPulseAnalyzer::LGUnderflow
bool LGUnderflow() const
Definition: ZDCPulseAnalyzer.h:560
master.flag
bool flag
Definition: master.py:29
ZDCPulseAnalyzer::m_nonLinCorrParamsLG
std::vector< float > m_nonLinCorrParamsLG
Definition: ZDCPulseAnalyzer.h:174
ZDCPulseAnalyzer::m_ADCSamplesHG
std::vector< float > m_ADCSamplesHG
Definition: ZDCPulseAnalyzer.h:324
ZDCPulseAnalyzer::LGModeForceLG
@ LGModeForceLG
Definition: ZDCPulseAnalyzer.h:53
ZDCPulseAnalyzer::SetSaveFitFunc
static void SetSaveFitFunc(bool save)
Definition: ZDCPulseAnalyzer.h:444
Preparation.mode
mode
Definition: Preparation.py:107
hist_file_dump.f
f
Definition: hist_file_dump.py:141
ZDCPulseAnalyzer::getMaxADCSub
float getMaxADCSub() const
Definition: ZDCPulseAnalyzer.h:643
ZDCFitWrapper.h
ZDCPulseAnalyzer::TimingCorrMode
TimingCorrMode
Definition: ZDCPulseAnalyzer.h:57
ZDCPulseAnalyzer::getLGMode
unsigned int getLGMode() const
Definition: ZDCPulseAnalyzer.h:477
ZDCPulseAnalyzer::disableFADCCorrections
void disableFADCCorrections()
Definition: ZDCPulseAnalyzer.h:538
ZDCPulseAnalyzer::GetFitTau2
float GetFitTau2() const
Definition: ZDCPulseAnalyzer.h:588
ZDCPulseAnalyzer::m_ADCSamplesHGSub
std::vector< float > m_ADCSamplesHGSub
Definition: ZDCPulseAnalyzer.h:326
ZDCMsg.h
tolerance
Definition: suep_shower.h:17
ZDCPulseAnalyzer::HGUnderflow
bool HGUnderflow() const
Definition: ZDCPulseAnalyzer.h:557
ZDCPulseAnalyzer::GetFitTMin
float GetFitTMin() const
Definition: ZDCPulseAnalyzer.h:666
ZDCPulseAnalyzer::set2ndDerivStep
void set2ndDerivStep(size_t step)
Definition: ZDCPulseAnalyzer.h:479
ZDCPulseAnalyzer::GetSamplesDeriv2nd
const std::vector< float > & GetSamplesDeriv2nd() const
Definition: ZDCPulseAnalyzer.h:703
ZDCPulseAnalyzer::m_ADCSSampSigLG
std::vector< float > m_ADCSSampSigLG
Definition: ZDCPulseAnalyzer.h:333
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
ZDCPulseAnalyzer::GetMinDeriv2ndIndex
float GetMinDeriv2ndIndex() const
Definition: ZDCPulseAnalyzer.h:671
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
ZDCPulseAnalyzer::ExcludeEarlyLG
bool ExcludeEarlyLG() const
Definition: ZDCPulseAnalyzer.h:568
ZDCPulseAnalyzer::m_preExpSig
float m_preExpSig
Definition: ZDCPulseAnalyzer.h:277
ZDCPulseAnalyzer::m_minDeriv2ndSig
float m_minDeriv2ndSig
Definition: ZDCPulseAnalyzer.h:276
ZDCPulseAnalyzer::m_preExpFitWrapper
std::unique_ptr< ZDCPreExpFitWrapper > m_preExpFitWrapper
Definition: ZDCPulseAnalyzer.h:189
ZDCMsg::MessageFunctionPtr
std::shared_ptr< MessageFunction > MessageFunctionPtr
Definition: ZDCMsg.h:14
ZDCPulseAnalyzer::PrePulse
bool PrePulse() const
Definition: ZDCPulseAnalyzer.h:562
ZDCPulseAnalyzer::getADCPeakHG
float getADCPeakHG() const
Definition: ZDCPulseAnalyzer.h:659
ZDCPulseAnalyzer::enablePreExclusion
void enablePreExclusion(unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
Definition: ZDCPulseAnalyzer.h:455
ZDCPulseAnalyzer::m_delayedHistLGRefit
std::unique_ptr< TH1 > m_delayedHistLGRefit
Definition: ZDCPulseAnalyzer.h:204
ZDCPulseAnalyzer::GetFitAmplitude
float GetFitAmplitude() const
Definition: ZDCPulseAnalyzer.h:581
ZDCPulseAnalyzer::getRefitLGChisq
float getRefitLGChisq() const
Definition: ZDCPulseAnalyzer.h:619
ZDCPulseAnalyzer::getMinADCLG
float getMinADCLG() const
Definition: ZDCPulseAnalyzer.h:641
ZDCPulseAnalyzer::m_samplesLGRefit
std::vector< float > m_samplesLGRefit
Definition: ZDCPulseAnalyzer.h:338
ZDCPulseAnalyzer::GetMinDeriv2nd
float GetMinDeriv2nd() const
Definition: ZDCPulseAnalyzer.h:670
ZDCPulseAnalyzer::GetFitT0
float GetFitT0() const
Definition: ZDCPulseAnalyzer.h:582
ZDCPulseAnalyzer::getMaxADCSampleLG
int getMaxADCSampleLG() const
Definition: ZDCPulseAnalyzer.h:656
ZDCPulseAnalyzer::GetBkgdMaxFraction
float GetBkgdMaxFraction() const
Definition: ZDCPulseAnalyzer.h:676
ZDCPulseAnalyzer::m_ADCSSampSigHG
std::vector< float > m_ADCSSampSigHG
Definition: ZDCPulseAnalyzer.h:332
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
ZDCPulseAnalyzer::m_minADCSampleHG
int m_minADCSampleHG
Definition: ZDCPulseAnalyzer.h:253
ZDCPulseAnalyzer::m_samplesSigLGRefit
std::vector< float > m_samplesSigLGRefit
Definition: ZDCPulseAnalyzer.h:339
ZDCPulseAnalyzer::SetTimingCorrParams
void SetTimingCorrParams(TimingCorrMode mode, float refADC, float refScale, const std::vector< float > &HGT0CorrParams, const std::vector< float > &LGT0CorrParams)
Definition: ZDCPulseAnalyzer.h:499
ZDCPulseAnalyzer::getRefitLGAmpCorr
float getRefitLGAmpCorr() const
Definition: ZDCPulseAnalyzer.h:613
ZDCPulseAnalyzer::BadChisq
bool BadChisq() const
Definition: ZDCPulseAnalyzer.h:565
LArCellBinning.step
step
Definition: LArCellBinning.py:158
ZDCPulseAnalyzer::getADCPeakLG
float getADCPeakLG() const
Definition: ZDCPulseAnalyzer.h:660
ZDCPulseAnalyzer::m_ADCSamplesLGSub
std::vector< float > m_ADCSamplesLGSub
Definition: ZDCPulseAnalyzer.h:327
ZDCPulseAnalyzer::s_undelayedFitHist
static TH1 * s_undelayedFitHist
Definition: ZDCPulseAnalyzer.h:66
ZDCPulseAnalyzer::enablePostExclusion
void enablePostExclusion(unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
Definition: ZDCPulseAnalyzer.h:463
ZDCPulseAnalyzer::fitMinimumAmplitude
bool fitMinimumAmplitude() const
Definition: ZDCPulseAnalyzer.h:571
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:85
ZDCPulseAnalyzer::SetNoiseSigmas
void SetNoiseSigmas(float noiseSigHG, float noiseSigLG)
Definition: ZDCPulseAnalyzer.h:485
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
ZDCPulseAnalyzer::getTimeSig
float getTimeSig() const
Definition: ZDCPulseAnalyzer.h:585
ZDCPulseAnalyzer::GetChisq
float GetChisq() const
Definition: ZDCPulseAnalyzer.h:586
ZDCPulseAnalyzer::m_prePulseCombinedFitter
std::unique_ptr< TFitter > m_prePulseCombinedFitter
Definition: ZDCPulseAnalyzer.h:206
ZDCPulseAnalyzer::m_fitHist
std::unique_ptr< TH1 > m_fitHist
Definition: ZDCPulseAnalyzer.h:183
ZDCPulseAnalyzer::m_nonLinCorrParamsHG
std::vector< float > m_nonLinCorrParamsHG
Definition: ZDCPulseAnalyzer.h:173
checker_macros.h
Define macros for attributes used to control the static checker.
ZDCPulseAnalyzer::s_combinedFitTMax
static float s_combinedFitTMax
Definition: ZDCPulseAnalyzer.h:69
ZDCPulseAnalyzer::m_samplesSig
std::vector< float > m_samplesSig
Definition: ZDCPulseAnalyzer.h:336
ZDCPulseAnalyzer::FitFailed
bool FitFailed() const
Definition: ZDCPulseAnalyzer.h:564
ZDCPulseAnalyzer::m_HGT0CorrParams
std::vector< float > m_HGT0CorrParams
Definition: ZDCPulseAnalyzer.h:168
ZDCPulseAnalyzer::s_pullValues
static std::vector< float > s_pullValues
Definition: ZDCPulseAnalyzer.h:71
ZDCPulseAnalyzer::GetDelayedBaselineCorr
float GetDelayedBaselineCorr() const
Definition: ZDCPulseAnalyzer.h:679
ZDCPulseAnalyzer::GetSamplesSub
const std::vector< float > & GetSamplesSub() const
Definition: ZDCPulseAnalyzer.h:702
ZDCPulseAnalyzer::SetFitOPtions
void SetFitOPtions(const std::string &fitOptions)
Definition: ZDCPulseAnalyzer.h:442
ZDCPulseAnalyzer::GetFitExpAmp
float GetFitExpAmp() const
Definition: ZDCPulseAnalyzer.h:593
ZDCPulseAnalyzer::GetPreSampleAmp
float GetPreSampleAmp() const
Definition: ZDCPulseAnalyzer.h:675