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