5 #ifndef ZDCANALYSIS_ZDCDataAnalyzer_h
6 #define ZDCANALYSIS_ZDCDataAnalyzer_h
29 float m_deltaTSample{};
30 size_t m_preSampleIdx{};
32 unsigned int m_LGMode{};
34 bool m_repassEnabled{};
36 std::array<std::array<int, 4>, 2> m_delayedOrder{};
39 std::array<std::array<std::unique_ptr<ZDCPulseAnalyzer>, 4>, 2> m_moduleAnalyzers{};
47 std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> m_LBDepEcalibSplines{};
50 std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> m_T0HGOffsetSplines{};
51 std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> m_T0LGOffsetSplines{};
60 std::array<std::array<bool, 4>, 2> m_dataLoaded{};
65 std::array<std::array<unsigned int, 4>, 2> m_moduleStatus{};
66 std::array<std::array<float, 4>, 2> m_calibAmplitude{};
67 std::array<std::array<float, 4>, 2> m_calibTime{};
69 std::array<float, 2> m_moduleSum{};
70 std::array<float, 2> m_moduleSumErrSq{};
71 std::array<float, 2> m_moduleSumPreSample{};
72 std::array<float, 2> m_moduleSumBkgdFrac{};
74 std::array<float, 2> m_calibModuleSum{};
75 std::array<float, 2> m_calibModuleSumErrSq{};
76 std::array<float, 2> m_calibModSumBkgdFrac{};
78 std::array<float, 2> m_averageTime{};
79 std::array<bool, 2> m_fail{};
81 std::array<std::array<float, 4>, 2> m_moduleAmpFractionLG{};
86 size_t preSampleIdx, std::string fitFunction,
87 const ZDCModuleIntArray& peak2ndDerivMinSamples,
88 const ZDCModuleFloatArray& peak2ndDerivMinThresholdsHG,
89 const ZDCModuleFloatArray& peak2ndDerivMinThresholdsLG,
94 void enableDelayed(
float deltaT,
const ZDCModuleFloatArray& undelayedDelayedPedestalDiff);
95 void enableDelayed(
const ZDCModuleFloatArray& delayDeltaT,
const ZDCModuleFloatArray& undelayedDelayedPedestalDiff);
97 void enableRepass(
const ZDCModuleFloatArray& peak2ndDerivMinRepassHG,
const ZDCModuleFloatArray& peak2ndDerivMinRepassLG);
99 void enablePreExclusion(
unsigned int maxSamplesExcl,
const ZDCModuleIntArray& HGADCThresh,
const ZDCModuleIntArray& LGADCThresh);
100 void enablePreExclusion(
unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh);
102 void enablePostExclusion(
unsigned int maxSamplesExcl,
const ZDCModuleIntArray& HGADCThresh,
const ZDCModuleIntArray& LGADCThresh);
103 void enablePostExclusion(
unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh);
134 bool disableModule(
size_t side,
size_t module);
136 void set2ndDerivStep(
size_t step);
138 void SetGainFactorsHGLG(
float gainFactorHG,
float gainFactorLG);
140 void SetGainFactorsHGLG(
const ZDCModuleFloatArray& gainFactorsHG,
const ZDCModuleFloatArray& gainFactorsLG);
142 void SetPeak2ndDerivMinTolerances(
size_t tolerance);
144 void SetFitTimeMax(
float tmax);
146 void SetSaveFitFunc(
bool save);
148 void SetADCOverUnderflowValues(
const ZDCModuleFloatArray& HGOverflowADC,
const ZDCModuleFloatArray& HGUnderflowADC,
149 const ZDCModuleFloatArray& LGOverflowADC);
151 void SetNoiseSigmas(
const ZDCModuleFloatArray& noiseSigmasHG,
const ZDCModuleFloatArray& noiseSigmasLG);
153 void SetTauT0Values(
const ZDCModuleBoolArray& fxiTau1,
const ZDCModuleBoolArray& fxiTau2,
154 const ZDCModuleFloatArray& tau1,
const ZDCModuleFloatArray& tau2,
155 const ZDCModuleFloatArray& t0HG,
const ZDCModuleFloatArray& t0LG);
157 void SetFitMinMaxAmpValues(
const ZDCModuleFloatArray& minAmpHG,
const ZDCModuleFloatArray& minAmpLG,
158 const ZDCModuleFloatArray& maxAmpHG,
const ZDCModuleFloatArray& maxAmpLG);
160 void SetFitMinMaxAmpValues(
float minHG,
float minLG,
float maxHG,
float maxLG);
162 void SetCutValues(
const ZDCModuleFloatArray& chisqDivAmpCutHG,
const ZDCModuleFloatArray& chisqDivAmpCutLG,
163 const ZDCModuleFloatArray& deltaT0MinHG,
const ZDCModuleFloatArray& deltaT0MaxHG,
164 const ZDCModuleFloatArray& deltaT0MinLG,
const ZDCModuleFloatArray& deltaT0MaxLG);
171 void SetNonlinCorrParams(
float refADC,
float refScale,
178 void enableTimeSigCut(
bool AND,
float sigCut,
const std::string& TF1String,
182 void enableFADCCorrections(
bool correctPerSample,
186 void disableFADCCorrections();
192 m_LBDepEcalibSplines = std::move (calibSplines);
201 m_T0HGOffsetSplines = std::move (T0HGOffsetSplines);
202 m_T0LGOffsetSplines = std::move (T0LGOffsetSplines);
204 m_haveT0Calib =
true;
209 void LoadAndAnalyzeData(
size_t side,
size_t module,
const std::vector<float>& HGSamples,
const std::vector<float>& LGSamples);
211 void LoadAndAnalyzeData(
size_t side,
size_t module,
const std::vector<float>& HGSamples,
const std::vector<float>& LGSamples,
212 const std::vector<float>& HGSamplesDelayed,
const std::vector<float>& LGSamplesDelayed);