ATLAS Offline Software
Loading...
Searching...
No Matches
ZDCDataAnalyzer Class Reference

#include <ZDCDataAnalyzer.h>

Public Types

typedef std::array< std::array< float, 4 >, 2 > ZDCModuleFloatArray
typedef std::array< std::array< bool, 4 >, 2 > ZDCModuleBoolArray
typedef std::array< std::array< int, 4 >, 2 > ZDCModuleIntArray
using JSON = ZDCJSONConfig::JSON

Public Member Functions

 ZDCDataAnalyzer (ZDCMsg::MessageFunctionPtr messageFunc_p, int nSample, float deltaTSample, size_t preSampleIdx, const std::string &fitFunction, const ZDCModuleIntArray &peak2ndDerivMinSamples, const ZDCModuleFloatArray &peak2ndDerivMinThresholdsHG, const ZDCModuleFloatArray &peak2ndDerivMinThresholdsLG, unsigned int LGMode=ZDCPulseAnalyzer::LGModeNormal)
 ZDCDataAnalyzer (ZDCMsg::MessageFunctionPtr messageFunc_p, const JSON &configJSON)
 ~ZDCDataAnalyzer ()
template<typename T>
bool getPulseAnalyzerGlobalPar (const std::string &key, T &value)
template<typename T>
void invokeAll (T functor)
void enableDelayed (float deltaT, const ZDCModuleFloatArray &undelayedDelayedPedestalDiff)
void enableDelayed (const ZDCModuleFloatArray &delayDeltaT, const ZDCModuleFloatArray &undelayedDelayedPedestalDiff)
void enableRepass (const ZDCModuleFloatArray &peak2ndDerivMinRepassHG, const ZDCModuleFloatArray &peak2ndDerivMinRepassLG)
void enablePreExclusion (unsigned int maxSamplesExcl, const ZDCModuleIntArray &HGADCThresh, const ZDCModuleIntArray &LGADCThresh)
void enablePreExclusion (unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
void enablePostExclusion (unsigned int maxSamplesExcl, const ZDCModuleIntArray &HGADCThresh, const ZDCModuleIntArray &LGADCThresh)
void enablePostExclusion (unsigned int maxSamplesExcl, unsigned int HGADCThresh, unsigned int LGADCThresh)
bool ModuleDisabled (unsigned int side, unsigned int module) const
bool moduleEnabled (unsigned int side, unsigned int module) const
unsigned int GetModuleMask () const
float GetModuleSum (size_t side) const
float GetModuleSumErr (size_t side) const
float GetSideBkgdFrac (size_t side) const
float GetCalibModuleSum (size_t side) const
float GetCalibModuleSumErr (size_t side) const
float GetSideCalibBkgdFrac (size_t side) const
void DoNLcalibModuleSum ()
float GetNLcalibModuleSum (size_t side) const
float GetNLcalibModuleSumErr (size_t side) const
float GetModuleSumPreSample (size_t side) const
float GetAverageTime (size_t side) const
bool SideFailed (size_t side) const
float GetModuleAmplitude (size_t side, size_t module) const
float GetModuleTime (size_t side, size_t module) const
float GetModuleChisq (size_t side, size_t module) const
float GetModuleCalibAmplitude (size_t side, size_t module) const
float GetModuleCalibTime (size_t side, size_t module) const
float GetModuleStatus (size_t side, size_t module) const
float GetdelayedBS (size_t side, size_t module) const
const ZDCPulseAnalyzerGetPulseAnalyzer (size_t side, size_t module) const
ZDCPulseAnalyzerGetPulseAnalyzer (size_t side, size_t module)
bool disableModule (size_t side, size_t module)
void set2ndDerivStep (size_t step)
void setMinimumSignificance (float sigMinHG, float sigMinLG)
void SetGainFactorsHGLG (float gainFactorHG, float gainFactorLG)
void SetGainFactorsHGLG (const ZDCModuleFloatArray &gainFactorsHG, const ZDCModuleFloatArray &gainFactorsLG)
void SetPeak2ndDerivMinTolerances (size_t tolerance)
void SetFitTimeMax (float tmax)
void SetADCOverUnderflowValues (const ZDCModuleFloatArray &HGOverflowADC, const ZDCModuleFloatArray &HGUnderflowADC, const ZDCModuleFloatArray &LGOverflowADC)
void SetNoiseSigmas (const ZDCModuleFloatArray &noiseSigmasHG, const ZDCModuleFloatArray &noiseSigmasLG)
void setPerSampleNoiseSigmas (const std::array< std::array< std::vector< float >, 4 >, 2 > &sampleNoiseVecsHG, const std::array< std::array< std::vector< float >, 4 >, 2 > &sampleNoiseVecsLG)
void SetTauT0Values (const ZDCModuleBoolArray &fxiTau1, const ZDCModuleBoolArray &fxiTau2, const ZDCModuleFloatArray &tau1, const ZDCModuleFloatArray &tau2, const ZDCModuleFloatArray &t0HG, const ZDCModuleFloatArray &t0LG)
void SetFitMinMaxAmpValues (const ZDCModuleFloatArray &minAmpHG, const ZDCModuleFloatArray &minAmpLG, const ZDCModuleFloatArray &maxAmpHG, const ZDCModuleFloatArray &maxAmpLG)
void SetFitMinMaxAmpValues (float minHG, float minLG, float maxHG, float maxLG)
void SetCutValues (const ZDCModuleFloatArray &chisqDivAmpCutHG, const ZDCModuleFloatArray &chisqDivAmpCutLG, const ZDCModuleFloatArray &deltaT0MinHG, const ZDCModuleFloatArray &deltaT0MaxHG, const ZDCModuleFloatArray &deltaT0MinLG, const ZDCModuleFloatArray &deltaT0MaxLG)
void SetTimeCuts (const ZDCModuleFloatArray &deltaT0MinHG, const ZDCModuleFloatArray &deltaT0MaxHG, const ZDCModuleFloatArray &deltaT0MinLG, const ZDCModuleFloatArray &deltaT0MaxLG)
void SetChisqCuts (const ZDCModuleFloatArray &chisqDivAmpCutHG, const ZDCModuleFloatArray &chisqDivAmpScaleHG, const ZDCModuleFloatArray &chisqDivAmpOffsetHG, const ZDCModuleFloatArray &chisqDivAmpPowerHG, const ZDCModuleFloatArray &chisqDivAmpCutLG, const ZDCModuleFloatArray &chisqDivAmpScaleLG, const ZDCModuleFloatArray &chisqDivAmpOffsetLG, const ZDCModuleFloatArray &chisqDivAmpPowerLG)
void SetTimingCorrParams (ZDCPulseAnalyzer::TimingCorrMode mode, float refADC, float refScale, const std::array< std::array< std::vector< float >, 4 >, 2 > &HGParamArr, const std::array< std::array< std::vector< float >, 4 >, 2 > &LGParamArr)
void SetNonlinCorrParams (float refADC, float refScale, const std::array< std::array< std::vector< float >, 4 >, 2 > &HGNonlinCorrParams, const std::array< std::array< std::vector< float >, 4 >, 2 > &LHGNonlinCorrParams)
void SetNLcalibParams (std::array< std::array< std::vector< float >, 3 >, 2 > &nlcalibParams)
void SetModuleAmpFractionLG (const ZDCDataAnalyzer::ZDCModuleFloatArray &moduleAmpFractionLG)
void enablePostPulseCheck (unsigned int postPulseSampleDelta, float postPulseDerivMinSig, float postPulseAbsDer2ndMinSig, float minMainDer2ndRatio)
void enableTimeSigCut (bool AND, float sigCut, const std::string &TF1String, const std::array< std::array< std::vector< double >, 4 >, 2 > &parsHGArr, const std::array< std::array< std::vector< double >, 4 >, 2 > &parsLGArr)
void enableFADCCorrections (bool correctPerSample, std::array< std::array< std::unique_ptr< const TH1 >, 4 >, 2 > &correHistHG, std::array< std::array< std::unique_ptr< const TH1 >, 4 >, 2 > &correHistLG)
void disableFADCCorrections ()
void LoadEnergyCalibrations (std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&calibSplines)
void LoadT0Calibrations (std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&T0HGOffsetSplines, std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&T0LGOffsetSplines)
void StartEvent (int lumiBlock)
void LoadAndAnalyzeData (size_t side, size_t module, const std::vector< float > &HGSamples, const std::vector< float > &LGSamples)
void LoadAndAnalyzeData (size_t side, size_t module, const std::vector< float > &HGSamples, const std::vector< float > &LGSamples, const std::vector< float > &HGSamplesDelayed, const std::vector< float > &LGSamplesDelayed)
bool FinishEvent ()
void saveFitFunc (bool save)
void setQuietFits (bool quiet)

Static Public Attributes

static const ZDCJSONConfig::JSONParamList JSONConfigParams

Private Member Functions

void init ()

Private Attributes

ZDCMsg::MessageFunctionPtr m_msgFunc_p
std::unique_ptr< ZDCJSONConfigm_dataAnalyzerConfig {}
std::unique_ptr< ZDCJSONConfigm_pulseAnalyzerConfig {}
bool m_repassEnabled {false}
std::array< std::array< int, 4 >, 2 > m_delayedOrder {}
ZDCModuleBoolArray m_moduleEnabled {}
std::array< std::array< std::unique_ptr< ZDCPulseAnalyzer >, 4 >, 2 > m_moduleAnalyzers {}
int m_eventCount {0}
ZDCModuleFloatArray m_HGGains {}
ZDCModuleFloatArray m_pedestals {}
bool m_haveECalib {false}
bool m_haveT0Calib {false}
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_LBDepEcalibSplines {}
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0HGOffsetSplines {}
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0LGOffsetSplines {}
int m_currentLB {-1}
ZDCModuleFloatArray m_currentECalibCoeff {}
ZDCModuleFloatArray m_currentT0OffsetsHG {}
ZDCModuleFloatArray m_currentT0OffsetsLG {}
std::array< std::array< bool, 4 >, 2 > m_dataLoaded {}
unsigned int m_moduleMask {0}
std::array< std::array< unsigned int, 4 >, 2 > m_moduleStatus {}
std::array< std::array< float, 4 >, 2 > m_calibAmplitude {}
std::array< std::array< float, 4 >, 2 > m_calibTime {}
std::array< float, 2 > m_moduleSum {}
std::array< float, 2 > m_moduleSumErrSq {}
std::array< float, 2 > m_moduleSumPreSample {}
std::array< float, 2 > m_moduleSumBkgdFrac {}
std::array< float, 2 > m_calibModuleSum {}
std::array< float, 2 > m_calibModuleSumErrSq {}
std::array< float, 2 > m_calibModSumBkgdFrac {}
bool m_haveNLcalib {false}
std::array< std::array< std::vector< float >, 3 >, 2 > m_NLcalibFactors {}
std::array< float, 2 > m_NLcalibModuleSum {}
std::array< float, 2 > m_NLcalibModuleSumErrSq {}
std::array< float, 2 > m_NLcalibModSumBkgdFrac {}
std::array< float, 2 > m_averageTime {}
std::array< bool, 2 > m_fail {}
std::array< std::array< float, 4 >, 2 > m_moduleAmpFractionLG {}

Detailed Description

Definition at line 22 of file ZDCDataAnalyzer.h.

Member Typedef Documentation

◆ JSON

Definition at line 29 of file ZDCDataAnalyzer.h.

◆ ZDCModuleBoolArray

typedef std::array<std::array<bool, 4>, 2> ZDCDataAnalyzer::ZDCModuleBoolArray

Definition at line 26 of file ZDCDataAnalyzer.h.

◆ ZDCModuleFloatArray

typedef std::array<std::array<float, 4>, 2> ZDCDataAnalyzer::ZDCModuleFloatArray

Definition at line 25 of file ZDCDataAnalyzer.h.

◆ ZDCModuleIntArray

typedef std::array<std::array<int, 4>, 2> ZDCDataAnalyzer::ZDCModuleIntArray

Definition at line 27 of file ZDCDataAnalyzer.h.

Constructor & Destructor Documentation

◆ ZDCDataAnalyzer() [1/2]

ZDCDataAnalyzer::ZDCDataAnalyzer ( ZDCMsg::MessageFunctionPtr messageFunc_p,
int nSample,
float deltaTSample,
size_t preSampleIdx,
const std::string & fitFunction,
const ZDCModuleIntArray & peak2ndDerivMinSamples,
const ZDCModuleFloatArray & peak2ndDerivMinThresholdsHG,
const ZDCModuleFloatArray & peak2ndDerivMinThresholdsLG,
unsigned int LGMode = ZDCPulseAnalyzer::LGModeNormal )

Definition at line 21 of file ZDCDataAnalyzer.cxx.

25 :
26 m_msgFunc_p(std::move(msgFunc_p))
27{
28 m_moduleEnabled[0] = {{true, true, true, true}};
29 m_moduleEnabled[1] = {{true, true, true, true}};
30
31 m_moduleAnalyzers[0] = {{0, 0, 0, 0}};
32 m_moduleAnalyzers[1] = {{0, 0, 0, 0}};
33
34 m_calibAmplitude[0] = {{0, 0, 0, 0}};
35 m_calibAmplitude[1] = {{0, 0, 0, 0}};
36
37 m_calibTime[0] = {{0, 0, 0, 0}};
38 m_calibTime[1] = {{0, 0, 0, 0}};
39
40 m_dataLoaded[0] = {{false, false, false, false}};
41 m_dataLoaded[1] = {{false, false, false, false}};
42
43 m_delayedOrder[0] = {0, 0, 0, 0};
44 m_delayedOrder[1] = {0, 0, 0, 0};
45
46 // For now we are using hard-coded gain factors and pedestals
47 //
48 m_HGGains[0] = {{10, 10, 10, 10}};
49 m_HGGains[1] = {{10, 10, 10, 10}};
50
51 m_pedestals[0] = {{100, 100, 100, 100}};
52 m_pedestals[1] = {{100, 100, 100, 100}};
53
54 // Construct the per-module pulse analyzers
55 //
56 for (size_t side : {0, 1}) {
57 for (size_t module : {0, 1, 2, 3}) {
58 std::string moduleTag= "_s" + std::to_string(side) + "_m" +std::to_string(module);
59 m_moduleAnalyzers[side][module] = make_unique<ZDCPulseAnalyzer>(m_msgFunc_p, std::move(moduleTag), nSample, deltaTSample, preSampleIdx,
60 m_pedestals[side][module], fitFunction,
61 peak2ndDerivMinSamples[side][module],
62 peak2ndDerivMinThresholdsHG[side][module],
63 peak2ndDerivMinThresholdsLG[side][module]);
64 m_moduleAnalyzers[side][module]->setLGMode(LGMode);
65 }
66 }
67}
ZDCMsg::MessageFunctionPtr m_msgFunc_p
std::array< std::array< std::unique_ptr< ZDCPulseAnalyzer >, 4 >, 2 > m_moduleAnalyzers
ZDCModuleFloatArray m_pedestals
std::array< std::array< float, 4 >, 2 > m_calibAmplitude
ZDCModuleBoolArray m_moduleEnabled
std::array< std::array< bool, 4 >, 2 > m_dataLoaded
std::array< std::array< float, 4 >, 2 > m_calibTime
ZDCModuleFloatArray m_HGGains
std::array< std::array< int, 4 >, 2 > m_delayedOrder

◆ ZDCDataAnalyzer() [2/2]

ZDCDataAnalyzer::ZDCDataAnalyzer ( ZDCMsg::MessageFunctionPtr messageFunc_p,
const JSON & configJSON )

Definition at line 69 of file ZDCDataAnalyzer.cxx.

69 :
70 m_msgFunc_p(msgFunc_p)
71{
72 init();
73
74 // Construct the object that will extract the data and pulse analyzer
75 // configurations from the input JSON configuration
76 //
77 // For the data anlyzer we use 1 channel since the relevant
78 // configurations will all be per-side
79 //
80 m_dataAnalyzerConfig = std::make_unique<ZDCJSONConfig>(std::vector<std::string>{"C", "A"}, 1);
81 m_pulseAnalyzerConfig = std::make_unique<ZDCJSONConfig>(std::vector<std::string>{"C", "A"}, 4);
82
83
84 // Extract the JSON object for the pulse analyzer(s)
85 //
86 JSON DAconfig = configJSON["DataAnalyzer"];
87 if (DAconfig.is_null()) {
88 (*m_msgFunc_p)(ZDCMsg::Fatal, "JSON configuration object for ZDCDataAnalyzer not found");
89 return;
90 }
91
92 auto [result, resultStr] = m_dataAnalyzerConfig->ParseConfig(DAconfig, ZDCDataAnalyzer::JSONConfigParams);
93 if (!result) {
94 (*m_msgFunc_p)(ZDCMsg::Fatal, "Error parsing ZDCDataAnalyzer JSON config, error = " + resultStr);
95 return;
96 }
97
98 // The data analyzer configuration is simple enough we handle it inline
99 //
100 for (size_t side : {0, 1}) {
101 for (size_t module : {0, 1, 2, 3}) {
102 m_moduleEnabled[side][module] = true;
103 }
104
105 // Now extract information from ZDCDataAnalyzer-specific configuration
106 //
107 JSON sideConfig = m_dataAnalyzerConfig->getChannelConfig(side, 0);
108 JSON modEnable = sideConfig["moduleEnabled"];
109 JSON delayedOrder = sideConfig["delayedOrder"];
110 if (!modEnable.is_null()) {
111 if (modEnable.size() != 4) {
112 (*m_msgFunc_p)(ZDCMsg::Fatal, "Error parsing ZDCDataAnalyzer JSON config, incorrect size of moduleEnabled");
113 return;
114 }
115
116 for (size_t module : {0, 1, 2, 3}) {
117 m_moduleEnabled[side][module] = modEnable[module];
118 }
119 }
120 if (!delayedOrder.is_null()) {
121 if (delayedOrder.size() != 4) {
122 (*m_msgFunc_p)(ZDCMsg::Fatal, "Error parsing ZDCDataAnalyzer JSON config, incorrect size of delayedOrder");
123 return;
124 }
125
126 for (size_t module : {0, 1, 2, 3}) {
127 m_delayedOrder[side][module] = delayedOrder[module];
128 }
129 }
130 }
131
132 for (size_t side : {0, 1}) {
133 for (size_t module : {0, 1, 2, 3}) {
134
135 (*m_msgFunc_p)(
137 "Setting up ZDCPulseAnalyzer for side " + std::to_string(side) +
138 ", module " + std::to_string(module) +
139 ", enabled = " + std::to_string(m_moduleEnabled[side][module]) +
140 ", delayedOrder = " +
141 std::to_string(m_delayedOrder[side][module]));
142 }
143 }
144
145
146
147 // Extract the JSON object for the pulse analyzer(s)
148 //
149 JSON PAconfig = configJSON["PulseAnalyzer"];
150 if (PAconfig.is_null()) {
151 (*m_msgFunc_p)(ZDCMsg::Fatal, "JSON configuration object for ZDCPulseAnalyzer not found");
152 return;
153 }
154
155 // Do the parsing of the pulse analyzer JSON configuration
156 //
157 auto [result2, resultStr2] = m_pulseAnalyzerConfig->ParseConfig(PAconfig, ZDCPulseAnalyzer::JSONConfigParams);
158 if (!result2) {
159 (*m_msgFunc_p)(ZDCMsg::Fatal, "Error parsing ZDCPulseAnalyzer JSON config, error = " + resultStr2);
160 return;
161 }
162
163 // Now set up each of the pulse analyzers
164 //
165 for (size_t side : {0, 1}) {
166 for (size_t module : {0, 1, 2, 3}) {
167
168 (*m_msgFunc_p)(ZDCMsg::Info, "Setting up ZDCPulseAnalyzer for side " + std::to_string(side) +
169 ", module " + std::to_string(module));
170
171 //
172 // Get the parsed configuration JSON object for this module
173 //
174 JSON moduleConfig = m_pulseAnalyzerConfig->getChannelConfig(side, module);
175
176 std::ostringstream ostr;
177 ostr << "JSON configuration for ZDC pulse analyyzer for side " << std::to_string(side)
178 << ", module " << std::to_string(module) << "\n" << moduleConfig.dump(2);
179 (*m_msgFunc_p)(ZDCMsg::Verbose, ostr.str());
180
181 // Construct the ZDCPulseAnalyzer object
182 //
183 m_moduleAnalyzers[side][module] = std::make_unique<ZDCPulseAnalyzer>(msgFunc_p, moduleConfig);
184
185 (*m_msgFunc_p)(ZDCMsg::Info, "Finished constructing ZDCPulseAnalyzer for side " + std::to_string(side) +
186 ", module " + std::to_string(module));
187
188 }
189 }
190
191 // Check for the enabling of re-pass
192 //
194
195 (*m_msgFunc_p)(ZDCMsg::Info, "ZDCDataAnalyzer construction complete");
196}
std::unique_ptr< ZDCJSONConfig > m_dataAnalyzerConfig
std::unique_ptr< ZDCJSONConfig > m_pulseAnalyzerConfig
bool getPulseAnalyzerGlobalPar(const std::string &key, T &value)
ZDCJSONConfig::JSON JSON
static const ZDCJSONConfig::JSONParamList JSONConfigParams
static const ZDCJSONConfig::JSONParamList JSONConfigParams
@ Fatal
Definition ZDCMsg.h:23
@ Verbose
Definition ZDCMsg.h:18
@ Info
Definition ZDCMsg.h:20

◆ ~ZDCDataAnalyzer()

ZDCDataAnalyzer::~ZDCDataAnalyzer ( )
inline

Definition at line 104 of file ZDCDataAnalyzer.h.

104{};

Member Function Documentation

◆ disableFADCCorrections()

void ZDCDataAnalyzer::disableFADCCorrections ( )

Definition at line 563 of file ZDCDataAnalyzer.cxx.

564{
565 for (size_t side : {0, 1}) {
566 for (size_t module : {0, 1, 2, 3}) {
567 m_moduleAnalyzers[side][module]->disableFADCCorrections();
568 }
569 }
570}

◆ disableModule()

bool ZDCDataAnalyzer::disableModule ( size_t side,
size_t module )

Definition at line 235 of file ZDCDataAnalyzer.cxx.

236{
237 if (side < 2 && module < 4) {
238 //
239 // Can't disable in the middle of analysis
240 //
241 if (m_dataLoaded[side][module]) return false;
242 else {
243 m_moduleEnabled[side][module] = false;
244 return true;
245 }
246 }
247 else {
248 return false;
249 }
250}

◆ DoNLcalibModuleSum()

void ZDCDataAnalyzer::DoNLcalibModuleSum ( )

Definition at line 838 of file ZDCDataAnalyzer.cxx.

839{
840 if (!m_haveNLcalib) return;
841
842 for (int iside:{0,1})
843 {
844 // If the module mask is empty for this side, there's nothing to do
845 //
846 if ((m_moduleMask>>(4*iside)&0xf) == 0) continue;
847
848 if (m_calibModuleSum[iside]>0.)
849 {
850 float fEM = m_calibAmplitude[iside][0] / m_calibModuleSum[iside];
851 float fHad1 = m_calibAmplitude[iside][1] / m_calibModuleSum[iside];
852 float fHad2 = m_calibAmplitude[iside][2] / m_calibModuleSum[iside];
853
854 float EMCorrFact = 0;
855
856 for (size_t i=0;i<m_NLcalibFactors[iside][0].size()-1;i++)
857 {
858 EMCorrFact += std::pow(fEM - m_NLcalibFactors[iside][0][0],i)*m_NLcalibFactors[iside][0][i+1];
859 }
860
861 float Had1CorrFact = 0;
862 for (size_t i=0;i<m_NLcalibFactors[iside][1].size()-1;i++)
863 {
864 Had1CorrFact += std::pow(fHad1 - m_NLcalibFactors[iside][1][0],i)*m_NLcalibFactors[iside][1][i+1];
865 }
866
867 float Had2CorrFact = 0;
868 for (size_t i=0;i<m_NLcalibFactors[iside][2].size()-1;i++)
869 {
870 Had2CorrFact += std::pow(fHad2 - m_NLcalibFactors[iside][2][0],i)*m_NLcalibFactors[iside][2][i+1];
871 }
872
873 const std::string &dbgmsg = std::format("ZDCDataAnalyzer: {} {} {} {}\n",m_calibModuleSum[iside], EMCorrFact, Had1CorrFact, Had2CorrFact);
874 (*m_msgFunc_p)(ZDCMsg::Debug, dbgmsg);
875 if ((EMCorrFact == 0.) or (Had1CorrFact == 0.) or (Had2CorrFact == 0.))[[unlikely]]{
876 (*m_msgFunc_p)(ZDCMsg::Error,"ZDCDataAnalyzer::DoNLcalibModuleSum: Denominator is zero");
877 return;
878 }
879
880 float ECorrEM = m_calibModuleSum[iside]/EMCorrFact;
881 float ECorrEMHad1 = ECorrEM/Had1CorrFact;
882 float ECorrEMHad1Had2 = ECorrEMHad1/Had2CorrFact;
883
884
885 m_NLcalibModuleSum[iside] = ECorrEMHad1Had2;
886 m_NLcalibModuleSumErrSq[iside] = 0.; // no error for now
887 }
888 else
889 {
890 (*m_msgFunc_p)(ZDCMsg::Info,"SUM = 0!!");
891 m_NLcalibModuleSum[iside] = 0.;
892 m_NLcalibModuleSumErrSq[iside] = 0.; // no error for now
893 }
894 }
895
896}
std::array< std::array< std::vector< float >, 3 >, 2 > m_NLcalibFactors
unsigned int m_moduleMask
std::array< float, 2 > m_NLcalibModuleSum
std::array< float, 2 > m_calibModuleSum
std::array< float, 2 > m_NLcalibModuleSumErrSq
@ Debug
Definition ZDCMsg.h:19
@ Error
Definition ZDCMsg.h:22
#define unlikely(x)

◆ enableDelayed() [1/2]

void ZDCDataAnalyzer::enableDelayed ( const ZDCModuleFloatArray & delayDeltaT,
const ZDCModuleFloatArray & undelayedDelayedPedestalDiff )

Definition at line 273 of file ZDCDataAnalyzer.cxx.

274{
275 for (size_t side : {0, 1}) {
276 for (size_t module : {0, 1, 2, 3}) {
277 if (delayDeltaTArray[side][module] < 0) m_delayedOrder[side][module] = -1;
278 else m_delayedOrder[side][module] = 1;
279
280 (*m_msgFunc_p)(ZDCMsg::Verbose, "Enabling use of delayed samples on side, module = " + std::to_string(side) + ", " +
281 std::to_string(module) + ", delta t = " + std::to_string(delayDeltaTArray[side][module]));
282
283 m_moduleAnalyzers[side][module]->enableDelayed(std::abs(delayDeltaTArray[side][module]), undelayedDelayedPedestalDiff[side][module]);
284 }
285 }
286}

◆ enableDelayed() [2/2]

void ZDCDataAnalyzer::enableDelayed ( float deltaT,
const ZDCModuleFloatArray & undelayedDelayedPedestalDiff )

Definition at line 262 of file ZDCDataAnalyzer.cxx.

263{
264 int delayedOrder = deltaT < 0 ? -1 : 1;
265 for (size_t side : {0, 1}) {
266 for (size_t module : {0, 1, 2, 3}) {
267 m_delayedOrder[side][module] = delayedOrder;
268 m_moduleAnalyzers[side][module]->enableDelayed(std::abs(deltaT), undelayedDelayedPedestalDiff[side][module]);
269 }
270 }
271}

◆ enableFADCCorrections()

void ZDCDataAnalyzer::enableFADCCorrections ( bool correctPerSample,
std::array< std::array< std::unique_ptr< const TH1 >, 4 >, 2 > & correHistHG,
std::array< std::array< std::unique_ptr< const TH1 >, 4 >, 2 > & correHistLG )

Definition at line 547 of file ZDCDataAnalyzer.cxx.

550{
551 if (correctPerSample)
552 (*m_msgFunc_p)(ZDCMsg::Info, "ZDCDataAnalyzer::enabling FADC Corrections per sample");
553 else
554 (*m_msgFunc_p)(ZDCMsg::Info, "ZDCDataAnalyzer::enabling FADC Corrections per amplitude");
555
556 for (size_t side : {0, 1}) {
557 for (size_t module : {0, 1, 2, 3}) {
558 m_moduleAnalyzers[side][module]->enableFADCCorrections(correctPerSample, corrHistHG[side][module], corrHistLG[side][module]);
559 }
560 }
561}

◆ enablePostExclusion() [1/2]

void ZDCDataAnalyzer::enablePostExclusion ( unsigned int maxSamplesExcl,
const ZDCModuleIntArray & HGADCThresh,
const ZDCModuleIntArray & LGADCThresh )

Definition at line 306 of file ZDCDataAnalyzer.cxx.

307{
308 for (size_t side : {0, 1}) {
309 for (size_t module : {0, 1, 2, 3}) {
310 m_moduleAnalyzers[side][module]->enablePostExclusion(maxSamplesExcl, HGADCThresh[side][module], LGADCThresh[side][module]);
311 }
312 }
313}

◆ enablePostExclusion() [2/2]

void ZDCDataAnalyzer::enablePostExclusion ( unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh )

Definition at line 315 of file ZDCDataAnalyzer.cxx.

316{
317 for (size_t side : {0, 1}) {
318 for (size_t module : {0, 1, 2, 3}) {
319 m_moduleAnalyzers[side][module]->enablePostExclusion(maxSamplesExcl, HGADCThresh, LGADCThresh);
320 }
321 }
322}

◆ enablePostPulseCheck()

void ZDCDataAnalyzer::enablePostPulseCheck ( unsigned int postPulseSampleDelta,
float postPulseDerivMinSig,
float postPulseAbsDer2ndMinSig,
float minMainDer2ndRatio )

Definition at line 499 of file ZDCDataAnalyzer.cxx.

501{
502 for (size_t side : {0, 1}) {
503 for (size_t module : {0, 1, 2, 3}) {
504 m_moduleAnalyzers[side][module]->enablePostPulseCheck(postPulseSampleDelta, postPulseDerivMinSig, postPulseAbsDer2ndMinSig, minMainDer2ndRatio);
505 }
506 }
507}

◆ enablePreExclusion() [1/2]

void ZDCDataAnalyzer::enablePreExclusion ( unsigned int maxSamplesExcl,
const ZDCModuleIntArray & HGADCThresh,
const ZDCModuleIntArray & LGADCThresh )

Definition at line 288 of file ZDCDataAnalyzer.cxx.

289{
290 for (size_t side : {0, 1}) {
291 for (size_t module : {0, 1, 2, 3}) {
292 m_moduleAnalyzers[side][module]->enablePreExclusion(maxSamplesExcl, HGADCThresh[side][module], LGADCThresh[side][module]);
293 }
294 }
295}

◆ enablePreExclusion() [2/2]

void ZDCDataAnalyzer::enablePreExclusion ( unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh )

Definition at line 297 of file ZDCDataAnalyzer.cxx.

298{
299 for (size_t side : {0, 1}) {
300 for (size_t module : {0, 1, 2, 3}) {
301 m_moduleAnalyzers[side][module]->enablePreExclusion(maxSamplesExcl, HGADCThresh, LGADCThresh);
302 }
303 }
304}

◆ enableRepass()

void ZDCDataAnalyzer::enableRepass ( const ZDCModuleFloatArray & peak2ndDerivMinRepassHG,
const ZDCModuleFloatArray & peak2ndDerivMinRepassLG )

Definition at line 325 of file ZDCDataAnalyzer.cxx.

326{
327 m_repassEnabled = true;
328 for (size_t side : {0, 1}) {
329 for (size_t module : {0, 1, 2, 3}) {
330 m_moduleAnalyzers[side][module]->enableRepass(peak2ndDerivMinRepassHG[side][module], peak2ndDerivMinRepassLG[side][module]);
331 }
332 }
333}

◆ enableTimeSigCut()

void ZDCDataAnalyzer::enableTimeSigCut ( bool AND,
float sigCut,
const std::string & TF1String,
const std::array< std::array< std::vector< double >, 4 >, 2 > & parsHGArr,
const std::array< std::array< std::vector< double >, 4 >, 2 > & parsLGArr )

Definition at line 572 of file ZDCDataAnalyzer.cxx.

575{
576 for (size_t side : {0, 1}) {
577 for (size_t module : {0, 1, 2, 3}) {
578 m_moduleAnalyzers[side][module]->enableTimeSigCut(AND, sigCut, TF1String, parsHGArr[side][module], parsLGArr[side][module]);
579 }
580 }
581}

◆ FinishEvent()

bool ZDCDataAnalyzer::FinishEvent ( )

Definition at line 733 of file ZDCDataAnalyzer.cxx.

734{
735 // First make sure that all data is loaded. while we're at it, count how many modules on each side have a pulse
736 //
737 unsigned int sideNPulsesMod[2] = {0, 0};
738
739 for (size_t side : {0, 1}) {
740 for (size_t module : {0, 1, 2, 3}) {
741 if (!m_dataLoaded[side][module] && m_moduleEnabled[side][module]) {return false;}
742 if (m_moduleAnalyzers[side][module]->armSumInclude()) {sideNPulsesMod[side]++;}
743 }
744 }
745
746 // Are we doing a repass? If so, reanalyze modules for which no pulse was found the first time
747 // as long as we have one module with a pulse on the given side
748 //
749 if (m_repassEnabled) {
750 for (size_t side : {0, 1}) {
751 if (sideNPulsesMod[side] == 0) continue;
752
753 for (size_t module : {0, 1, 2, 3}) {
754 if (!m_moduleEnabled[side][module]) continue;
755
756 ZDCPulseAnalyzer* pulseAna_p = m_moduleAnalyzers[side][module].get();
757
758 // If this module had no pulse the first time, reanalyze it (with a lower 2nd derivative threshold)
759 //
760 if (!pulseAna_p->havePulse()) {
761 (*m_msgFunc_p)(ZDCMsg::Debug, ("ZDCPulseAnalyzer:: performing a repass on data for side, module = " + std::to_string(side) + ", " + std::to_string(module)));
762 pulseAna_p->ReanalyzeData();
763 m_moduleStatus[side][module] = pulseAna_p->GetStatusMask();
764 }
765 }
766 }
767 }
768
769 // Now sum up amplitudes etc
770 //
771 for (size_t side : {0, 1}) {
772 float tempFraction = 1.0;
773 double sumAmpTimesBkgdFrac = 0.0;
774 double sumCalibAmpTimesBkgdFrac = 0.0;
775
776 for (size_t module : {0, 1, 2, 3}) {
777 ZDCPulseAnalyzer* pulseAna_p = m_moduleAnalyzers[side][module].get();
778
779 if (pulseAna_p->armSumInclude()) {
780 int moduleMaskBit = 4 * side + module;
781 m_moduleMask |= 1 << moduleMaskBit;
782
783 float amplitude = pulseAna_p->GetAmplitude();
784 float ampError = pulseAna_p->GetAmpError();
785 float bkgdFraction = pulseAna_p->GetBkgdMaxFraction();
786
788
789 float calibAmpError = ampError * m_currentECalibCoeff[side][module];
790
791 float timeCalib = pulseAna_p->GetT0Corr();
792 if (pulseAna_p->useLowGain()) {timeCalib -= m_currentT0OffsetsLG[side][module];}
793 else {timeCalib -= m_currentT0OffsetsHG[side][module];}
794
795 m_calibTime[side][module] = timeCalib;
796
797 m_moduleSum[side] += amplitude;
798 m_moduleSumErrSq[side] += ampError * ampError;
799 sumAmpTimesBkgdFrac += amplitude*bkgdFraction;
800
801 m_moduleSumPreSample[side] += pulseAna_p->GetPreSampleAmp();
802
804 m_calibModuleSumErrSq[side] += calibAmpError * calibAmpError;
805
807 sumCalibAmpTimesBkgdFrac += amplitude*bkgdFraction;
808 }
809
810 // subtract the fraction of LGOverflow events if we have fraction available (<0 means unavailable)
811 if (pulseAna_p->LGOverflow() && m_moduleAmpFractionLG[side][module] > 0) {tempFraction -= m_moduleAmpFractionLG[side][module];}
812 }
813
814 {
816 if (m_moduleSum[side] > 0) m_moduleSumBkgdFrac[side] = sumAmpTimesBkgdFrac/m_moduleSum[side];
817 else m_moduleSumBkgdFrac[side] = 0;
818 }
819
820 if (m_calibModuleSum[side] > 1e-6) {
822 m_calibModSumBkgdFrac[side] = sumCalibAmpTimesBkgdFrac/m_calibModuleSum[side];
823 }
824 else {
825 m_averageTime[side] = 0;
827 }
828
829 if (tempFraction < 1.0) {m_moduleSum[side] /= tempFraction;}
830 }
831
833
834 m_eventCount++;
835 return true;
836}
std::array< float, 2 > m_moduleSumPreSample
std::array< float, 2 > m_calibModSumBkgdFrac
ZDCModuleFloatArray m_currentECalibCoeff
std::array< float, 2 > m_averageTime
std::array< std::array< float, 4 >, 2 > m_moduleAmpFractionLG
std::array< float, 2 > m_moduleSumErrSq
std::array< float, 2 > m_moduleSum
std::array< float, 2 > m_calibModuleSumErrSq
std::array< float, 2 > m_moduleSumBkgdFrac
ZDCModuleFloatArray m_currentT0OffsetsHG
ZDCModuleFloatArray m_currentT0OffsetsLG
std::array< std::array< unsigned int, 4 >, 2 > m_moduleStatus
bool LGOverflow() const
float GetAmpError() const
float GetAmplitude() const
float GetT0Corr() const
bool useLowGain() const
bool havePulse() const
bool armSumInclude() const
unsigned int GetStatusMask() const
float GetPreSampleAmp() const
float GetBkgdMaxFraction() const
#define CXXUTILS_TRAPPING_FP
Definition trapping_fp.h:24

◆ GetAverageTime()

float ZDCDataAnalyzer::GetAverageTime ( size_t side) const
inline

Definition at line 150 of file ZDCDataAnalyzer.h.

150{return m_averageTime.at(side);}

◆ GetCalibModuleSum()

float ZDCDataAnalyzer::GetCalibModuleSum ( size_t side) const
inline

Definition at line 140 of file ZDCDataAnalyzer.h.

140{return m_calibModuleSum.at(side);}

◆ GetCalibModuleSumErr()

float ZDCDataAnalyzer::GetCalibModuleSumErr ( size_t side) const
inline

Definition at line 141 of file ZDCDataAnalyzer.h.

141{return std::sqrt(m_calibModuleSumErrSq.at(side));}

◆ GetdelayedBS()

float ZDCDataAnalyzer::GetdelayedBS ( size_t side,
size_t module ) const
inline

Definition at line 161 of file ZDCDataAnalyzer.h.

161{return m_moduleAnalyzers.at(side).at(module)->GetdelayBS();}

◆ GetModuleAmplitude()

float ZDCDataAnalyzer::GetModuleAmplitude ( size_t side,
size_t module ) const
inline

Definition at line 153 of file ZDCDataAnalyzer.h.

153{return m_moduleAnalyzers.at(side).at(module)->GetAmplitude();}

◆ GetModuleCalibAmplitude()

float ZDCDataAnalyzer::GetModuleCalibAmplitude ( size_t side,
size_t module ) const
inline

Definition at line 157 of file ZDCDataAnalyzer.h.

157{return m_calibAmplitude.at(side).at(module);}

◆ GetModuleCalibTime()

float ZDCDataAnalyzer::GetModuleCalibTime ( size_t side,
size_t module ) const
inline

Definition at line 158 of file ZDCDataAnalyzer.h.

158{return m_calibTime.at(side).at(module);}

◆ GetModuleChisq()

float ZDCDataAnalyzer::GetModuleChisq ( size_t side,
size_t module ) const
inline

Definition at line 155 of file ZDCDataAnalyzer.h.

155{return m_moduleAnalyzers.at(side).at(module)->GetChisq();}

◆ GetModuleMask()

unsigned int ZDCDataAnalyzer::GetModuleMask ( ) const
inline

Definition at line 134 of file ZDCDataAnalyzer.h.

134{return m_moduleMask;}

◆ GetModuleStatus()

float ZDCDataAnalyzer::GetModuleStatus ( size_t side,
size_t module ) const
inline

Definition at line 159 of file ZDCDataAnalyzer.h.

159{return m_moduleStatus.at(side).at(module);}

◆ GetModuleSum()

float ZDCDataAnalyzer::GetModuleSum ( size_t side) const
inline

Definition at line 136 of file ZDCDataAnalyzer.h.

136{return m_moduleSum.at(side);}

◆ GetModuleSumErr()

float ZDCDataAnalyzer::GetModuleSumErr ( size_t side) const
inline

Definition at line 137 of file ZDCDataAnalyzer.h.

137{return std::sqrt(m_moduleSumErrSq.at(side));}

◆ GetModuleSumPreSample()

float ZDCDataAnalyzer::GetModuleSumPreSample ( size_t side) const
inline

Definition at line 148 of file ZDCDataAnalyzer.h.

148{return m_moduleSumPreSample.at(side);}

◆ GetModuleTime()

float ZDCDataAnalyzer::GetModuleTime ( size_t side,
size_t module ) const
inline

Definition at line 154 of file ZDCDataAnalyzer.h.

154{return m_moduleAnalyzers.at(side).at(module)->GetT0Corr();}

◆ GetNLcalibModuleSum()

float ZDCDataAnalyzer::GetNLcalibModuleSum ( size_t side) const
inline

Definition at line 145 of file ZDCDataAnalyzer.h.

145{return m_NLcalibModuleSum.at(side);}

◆ GetNLcalibModuleSumErr()

float ZDCDataAnalyzer::GetNLcalibModuleSumErr ( size_t side) const
inline

Definition at line 146 of file ZDCDataAnalyzer.h.

146{return std::sqrt(m_NLcalibModuleSumErrSq.at(side));}

◆ GetPulseAnalyzer() [1/2]

ZDCPulseAnalyzer * ZDCDataAnalyzer::GetPulseAnalyzer ( size_t side,
size_t module )
inline

Definition at line 164 of file ZDCDataAnalyzer.h.

164{return m_moduleAnalyzers.at(side).at(module).get();}

◆ GetPulseAnalyzer() [2/2]

const ZDCPulseAnalyzer * ZDCDataAnalyzer::GetPulseAnalyzer ( size_t side,
size_t module ) const
inline

Definition at line 163 of file ZDCDataAnalyzer.h.

163{return m_moduleAnalyzers.at(side).at(module).get();}

◆ getPulseAnalyzerGlobalPar()

template<typename T>
bool ZDCDataAnalyzer::getPulseAnalyzerGlobalPar ( const std::string & key,
T & value )
inline

Definition at line 106 of file ZDCDataAnalyzer.h.

106 {
107 if (m_pulseAnalyzerConfig.get()) return m_pulseAnalyzerConfig->getGlobalParam(key, value);
108 else return false;
109 }

◆ GetSideBkgdFrac()

float ZDCDataAnalyzer::GetSideBkgdFrac ( size_t side) const
inline

Definition at line 138 of file ZDCDataAnalyzer.h.

138{return m_moduleSumBkgdFrac.at(side);}

◆ GetSideCalibBkgdFrac()

float ZDCDataAnalyzer::GetSideCalibBkgdFrac ( size_t side) const
inline

Definition at line 142 of file ZDCDataAnalyzer.h.

142{return m_calibModSumBkgdFrac.at(side);}

◆ init()

void ZDCDataAnalyzer::init ( )
private

Definition at line 198 of file ZDCDataAnalyzer.cxx.

199{
200 for (size_t side : {0, 1}) {
201 m_moduleSum[side] = 0;
206
209 m_averageTime[side] = 0;
210 m_fail[side] = 0;
211
212 for (size_t module : {0, 1, 2, 3}) {
213 m_moduleEnabled[side][module] = true;
215 m_calibTime[side][module] = 0;
216
217 m_dataLoaded[side][module] = false;
219
220 // Default "calibrations"
221 //
225
226 }
227 }
228
230 {{ {{0,0,0,0,0,0}},{{0,0,0,0,0,0}},{{0,0,0,0,0,0}} }},
231 {{ {{0,0,0,0,0,0}},{{0,0,0,0,0,0}},{{0,0,0,0,0,0}} }} }};
232
233}
std::array< bool, 2 > m_fail

◆ invokeAll()

template<typename T>
void ZDCDataAnalyzer::invokeAll ( T functor)
inline

Definition at line 111 of file ZDCDataAnalyzer.h.

112 {
113 for (size_t side : {0, 1}) {
114 for (size_t module : {0, 1, 2, 3}) {
115 functor(m_moduleAnalyzers[side][module].get());
116 }
117 }
118 }
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:132

◆ LoadAndAnalyzeData() [1/2]

void ZDCDataAnalyzer::LoadAndAnalyzeData ( size_t side,
size_t module,
const std::vector< float > & HGSamples,
const std::vector< float > & LGSamples )

Definition at line 671 of file ZDCDataAnalyzer.cxx.

672{
673
674 // We immediately return if this module is disabled
675 //
676 if (!m_moduleEnabled[side][module]) {
677 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Skipping analysis of disabled module for event index " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
678
679 return;
680 }
681
682 (*m_msgFunc_p)(ZDCMsg::Verbose, ("/n Loading data for event index " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
683
684 ZDCPulseAnalyzer* pulseAna_p = m_moduleAnalyzers[side][module].get();
685 pulseAna_p->LoadAndAnalyzeData(HGSamples, LGSamples);
686 m_dataLoaded[side][module] = true;
687
688 if (pulseAna_p->failed()) {
689 (*m_msgFunc_p)(ZDCMsg::Debug, ("ZDCPulseAnalyzer::LoadData() returned fail for event " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
690
691 m_fail[side] = true;
692 }
693
694 m_moduleStatus[side][module] = pulseAna_p->GetStatusMask();
695}

◆ LoadAndAnalyzeData() [2/2]

void ZDCDataAnalyzer::LoadAndAnalyzeData ( size_t side,
size_t module,
const std::vector< float > & HGSamples,
const std::vector< float > & LGSamples,
const std::vector< float > & HGSamplesDelayed,
const std::vector< float > & LGSamplesDelayed )

Definition at line 697 of file ZDCDataAnalyzer.cxx.

699{
700 // We immediately return if this module is disabled
701 //
702 if (!m_moduleEnabled[side][module]) {
703 (*m_msgFunc_p)(ZDCMsg::Debug, ("Skipping analysis of disabled mofule for event index " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
704
705 return;
706 }
707
708 if (m_delayedOrder[side][module] == 0) {
709 (*m_msgFunc_p)(ZDCMsg::Error, ("Handling of delayed pulses not enabled, on side, module = " + std::to_string(side) + ", " + std::to_string(module) + ", skipping processing for event index " + std::to_string(m_eventCount)));
710 return;
711 }
712
713 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Loading undelayed and delayed data for event index " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
714
715 ZDCPulseAnalyzer* pulseAna_p = m_moduleAnalyzers[side][module].get();
716 if (m_delayedOrder[side][module] > 0) {
717 pulseAna_p->LoadAndAnalyzeData(HGSamples, LGSamples, HGSamplesDelayed, LGSamplesDelayed);
718 }
719 else {
720 pulseAna_p->LoadAndAnalyzeData(HGSamplesDelayed, LGSamplesDelayed, HGSamples, LGSamples);
721 }
722 m_dataLoaded[side][module] = true;
723
724 if (pulseAna_p->failed()) {
725 (*m_msgFunc_p)(ZDCMsg::Debug, ("ZDCPulseAnalyzer::LoadData() returned fail for event " + std::to_string(m_eventCount) + ", side, module = " + std::to_string(side) + ", " + std::to_string(module)));
726
727 m_fail[side] = true;
728 }
729
730 m_moduleStatus[side][module] = pulseAna_p->GetStatusMask();
731}

◆ LoadEnergyCalibrations()

void ZDCDataAnalyzer::LoadEnergyCalibrations ( std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > && calibSplines)
inline

Definition at line 233 of file ZDCDataAnalyzer.h.

234 {
235 (*m_msgFunc_p)(ZDCMsg::Verbose, "Loading energy calibrations");
236
237 m_LBDepEcalibSplines = std::move (calibSplines);
238 m_haveECalib = true;
239 }
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_LBDepEcalibSplines

◆ LoadT0Calibrations()

void ZDCDataAnalyzer::LoadT0Calibrations ( std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > && T0HGOffsetSplines,
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > && T0LGOffsetSplines )
inline

Definition at line 241 of file ZDCDataAnalyzer.h.

243 {
244 (*m_msgFunc_p)(ZDCMsg::Verbose, "Loading timing calibrations");
245
246 m_T0HGOffsetSplines = std::move (T0HGOffsetSplines);
247 m_T0LGOffsetSplines = std::move (T0LGOffsetSplines);
248
249 m_haveT0Calib = true;
250 }
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0LGOffsetSplines
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0HGOffsetSplines

◆ ModuleDisabled()

bool ZDCDataAnalyzer::ModuleDisabled ( unsigned int side,
unsigned int module ) const
inline

Definition at line 131 of file ZDCDataAnalyzer.h.

131{return !m_moduleEnabled[side][module];}

◆ moduleEnabled()

bool ZDCDataAnalyzer::moduleEnabled ( unsigned int side,
unsigned int module ) const
inline

Definition at line 132 of file ZDCDataAnalyzer.h.

132{return m_moduleEnabled[side][module];}

◆ saveFitFunc()

void ZDCDataAnalyzer::saveFitFunc ( bool save)

Definition at line 252 of file ZDCDataAnalyzer.cxx.

253{
254 for (size_t side : {0, 1}) {
255 for (size_t module : {0, 1, 2, 3}) {
256 m_moduleAnalyzers[side][module]->saveFitFunc(save);
257 }
258 }
259}

◆ set2ndDerivStep()

void ZDCDataAnalyzer::set2ndDerivStep ( size_t step)

Definition at line 344 of file ZDCDataAnalyzer.cxx.

345{
346 for (size_t side : {0, 1}) {
347 for (size_t module : {0, 1, 2, 3}) {
348 m_moduleAnalyzers[side][module]->set2ndDerivStep(step);
349 }
350 }
351}

◆ SetADCOverUnderflowValues()

void ZDCDataAnalyzer::SetADCOverUnderflowValues ( const ZDCModuleFloatArray & HGOverflowADC,
const ZDCModuleFloatArray & HGUnderflowADC,
const ZDCModuleFloatArray & LGOverflowADC )

Definition at line 450 of file ZDCDataAnalyzer.cxx.

452{
453 for (size_t side : {0, 1}) {
454 for (size_t module : {0, 1, 2, 3}) {
455 m_moduleAnalyzers[side][module]->SetADCOverUnderflowValues(HGOverflowADC[side][module], HGUnderflowADC[side][module], LGOverflowADC[side][module]);
456 }
457 }
458}

◆ SetChisqCuts()

void ZDCDataAnalyzer::SetChisqCuts ( const ZDCModuleFloatArray & chisqDivAmpCutHG,
const ZDCModuleFloatArray & chisqDivAmpScaleHG,
const ZDCModuleFloatArray & chisqDivAmpOffsetHG,
const ZDCModuleFloatArray & chisqDivAmpPowerHG,
const ZDCModuleFloatArray & chisqDivAmpCutLG,
const ZDCModuleFloatArray & chisqDivAmpScaleLG,
const ZDCModuleFloatArray & chisqDivAmpOffsetLG,
const ZDCModuleFloatArray & chisqDivAmpPowerLG )

Definition at line 484 of file ZDCDataAnalyzer.cxx.

488{
489 for (size_t side : {0, 1}) {
490 for (size_t module : {0, 1, 2, 3}) {
491 m_moduleAnalyzers[side][module]->SetChisqCuts(chisqDivAmpCutHG[side][module], chisqDivAmpScaleHG[side][module],
492 chisqDivAmpOffsetHG[side][module], chisqDivAmpPowerHG[side][module],
493 chisqDivAmpCutLG[side][module], chisqDivAmpScaleLG[side][module],
494 chisqDivAmpOffsetLG[side][module], chisqDivAmpPowerLG[side][module]);
495 }
496 }
497}

◆ SetCutValues()

void ZDCDataAnalyzer::SetCutValues ( const ZDCModuleFloatArray & chisqDivAmpCutHG,
const ZDCModuleFloatArray & chisqDivAmpCutLG,
const ZDCModuleFloatArray & deltaT0MinHG,
const ZDCModuleFloatArray & deltaT0MaxHG,
const ZDCModuleFloatArray & deltaT0MinLG,
const ZDCModuleFloatArray & deltaT0MaxLG )

Definition at line 460 of file ZDCDataAnalyzer.cxx.

463{
464 for (size_t side : {0, 1}) {
465 for (size_t module : {0, 1, 2, 3}) {
466 m_moduleAnalyzers[side][module]->SetCutValues(chisqDivAmpCutHG[side][module], chisqDivAmpCutLG[side][module],
467 deltaT0MinHG[side][module], deltaT0MaxHG[side][module],
468 deltaT0MinLG[side][module], deltaT0MaxLG[side][module]);
469 }
470 }
471}

◆ SetFitMinMaxAmpValues() [1/2]

void ZDCDataAnalyzer::SetFitMinMaxAmpValues ( const ZDCModuleFloatArray & minAmpHG,
const ZDCModuleFloatArray & minAmpLG,
const ZDCModuleFloatArray & maxAmpHG,
const ZDCModuleFloatArray & maxAmpLG )

Definition at line 429 of file ZDCDataAnalyzer.cxx.

431{
432 for (size_t side : {0, 1}) {
433 for (size_t module : {0, 1, 2, 3}) {
434 m_moduleAnalyzers[side][module]->SetFitMinMaxAmp(minAmpHG[side][module], minAmpLG[side][module],
435 maxAmpHG[side][module], maxAmpLG[side][module]);
436
437 }
438 }
439}

◆ SetFitMinMaxAmpValues() [2/2]

void ZDCDataAnalyzer::SetFitMinMaxAmpValues ( float minHG,
float minLG,
float maxHG,
float maxLG )

Definition at line 441 of file ZDCDataAnalyzer.cxx.

442{
443 for (size_t side : {0, 1}) {
444 for (size_t module : {0, 1, 2, 3}) {
445 m_moduleAnalyzers[side][module]->SetFitMinMaxAmp(minHG, minLG, maxHG, maxLG);
446 }
447 }
448}

◆ SetFitTimeMax()

void ZDCDataAnalyzer::SetFitTimeMax ( float tmax)

Definition at line 380 of file ZDCDataAnalyzer.cxx.

380 {
381 for (size_t side : {0, 1}) {
382 for (size_t module : {0, 1, 2, 3}) {
383 m_moduleAnalyzers[side][module]->SetFitTimeMax(tmax);
384 }
385 }
386}

◆ SetGainFactorsHGLG() [1/2]

void ZDCDataAnalyzer::SetGainFactorsHGLG ( const ZDCModuleFloatArray & gainFactorsHG,
const ZDCModuleFloatArray & gainFactorsLG )

Definition at line 362 of file ZDCDataAnalyzer.cxx.

363{
364 for (size_t side : {0, 1}) {
365 for (size_t module : {0, 1, 2, 3}) {
366 m_moduleAnalyzers[side][module]->SetGainFactorsHGLG(gainFactorsHG[side][module], gainFactorsLG[side][module]);
367 }
368 }
369}

◆ SetGainFactorsHGLG() [2/2]

void ZDCDataAnalyzer::SetGainFactorsHGLG ( float gainFactorHG,
float gainFactorLG )

Definition at line 353 of file ZDCDataAnalyzer.cxx.

354{
355 for (size_t side : {0, 1}) {
356 for (size_t module : {0, 1, 2, 3}) {
357 m_moduleAnalyzers[side][module]->SetGainFactorsHGLG(gainFactorHG, gainFactorLG);
358 }
359 }
360}

◆ setMinimumSignificance()

void ZDCDataAnalyzer::setMinimumSignificance ( float sigMinHG,
float sigMinLG )

Definition at line 335 of file ZDCDataAnalyzer.cxx.

336{
337 for (size_t side : {0, 1}) {
338 for (size_t module : {0, 1, 2, 3}) {
339 m_moduleAnalyzers[side][module]->setMinimumSignificance(sigMinHG, sigMinLG);
340 }
341 }
342}

◆ SetModuleAmpFractionLG()

void ZDCDataAnalyzer::SetModuleAmpFractionLG ( const ZDCDataAnalyzer::ZDCModuleFloatArray & moduleAmpFractionLG)

Definition at line 421 of file ZDCDataAnalyzer.cxx.

421 {
422 for (size_t side : {0, 1}) {
423 for (size_t module : {0, 1, 2, 3}) {
424 m_moduleAmpFractionLG[side][module] = moduleAmpFractionLG[side][module];
425 }
426 }
427}

◆ SetNLcalibParams()

void ZDCDataAnalyzer::SetNLcalibParams ( std::array< std::array< std::vector< float >, 3 >, 2 > & nlcalibParams)

Definition at line 535 of file ZDCDataAnalyzer.cxx.

536{
537 for (size_t side: {0,1})
538 {
539 for (size_t module: {0,1,2})
540 {
541 m_NLcalibFactors[side][module] = nlcalibParams[side][module];
542 }
543 }
544 m_haveNLcalib = true;
545}

◆ SetNoiseSigmas()

void ZDCDataAnalyzer::SetNoiseSigmas ( const ZDCModuleFloatArray & noiseSigmasHG,
const ZDCModuleFloatArray & noiseSigmasLG )

Definition at line 402 of file ZDCDataAnalyzer.cxx.

403{
404 for (size_t side : {0, 1}) {
405 for (size_t module : {0, 1, 2, 3}) {
406 m_moduleAnalyzers[side][module]->SetNoiseSigmas(noiseSigmasHG[side][module], noiseSigmasLG[side][module]);
407 }
408 }
409}

◆ SetNonlinCorrParams()

void ZDCDataAnalyzer::SetNonlinCorrParams ( float refADC,
float refScale,
const std::array< std::array< std::vector< float >, 4 >, 2 > & HGNonlinCorrParams,
const std::array< std::array< std::vector< float >, 4 >, 2 > & LHGNonlinCorrParams )

Definition at line 522 of file ZDCDataAnalyzer.cxx.

525{
526 for (size_t side : {0, 1}) {
527 for (size_t module : {0, 1, 2, 3}) {
528 m_moduleAnalyzers[side][module]->SetNonlinCorrParams(refADC, refScale,
529 HGNonlinCorrParams[side][module],
530 LGNonlinCorrParams[side][module]);
531 }
532 }
533}

◆ SetPeak2ndDerivMinTolerances()

void ZDCDataAnalyzer::SetPeak2ndDerivMinTolerances ( size_t tolerance)

Definition at line 371 of file ZDCDataAnalyzer.cxx.

371 {
372 for (size_t side : {0, 1}) {
373 for (size_t module : {0, 1, 2, 3}) {
374 m_moduleAnalyzers[side][module]->SetPeak2ndDerivMinTolerance(tolerance);
375 }
376 }
377}
constexpr double tolerance

◆ setPerSampleNoiseSigmas()

void ZDCDataAnalyzer::setPerSampleNoiseSigmas ( const std::array< std::array< std::vector< float >, 4 >, 2 > & sampleNoiseVecsHG,
const std::array< std::array< std::vector< float >, 4 >, 2 > & sampleNoiseVecsLG )

Definition at line 411 of file ZDCDataAnalyzer.cxx.

413{
414 for (size_t side : {0, 1}) {
415 for (size_t module : {0, 1, 2, 3}) {
416 m_moduleAnalyzers[side][module]->setPerSampleNoiseSigmas(sampleNoiseVecsHG[side][module], sampleNoiseVecsLG[side][module]);
417 }
418 }
419}

◆ setQuietFits()

void ZDCDataAnalyzer::setQuietFits ( bool quiet)
inline

Definition at line 263 of file ZDCDataAnalyzer.h.

263 {
264 if (quiet) invokeAll([](ZDCPulseAnalyzer* pa){pa->setQuietFits();});
265 else invokeAll([](ZDCPulseAnalyzer* pa){pa->setUnquietFits();});
266 }
void invokeAll(T functor)

◆ SetTauT0Values()

void ZDCDataAnalyzer::SetTauT0Values ( const ZDCModuleBoolArray & fxiTau1,
const ZDCModuleBoolArray & fxiTau2,
const ZDCModuleFloatArray & tau1,
const ZDCModuleFloatArray & tau2,
const ZDCModuleFloatArray & t0HG,
const ZDCModuleFloatArray & t0LG )

Definition at line 390 of file ZDCDataAnalyzer.cxx.

393{
394 for (size_t side : {0, 1}) {
395 for (size_t module : {0, 1, 2, 3}) {
396 m_moduleAnalyzers[side][module]->SetTauT0Values(fixTau1[side][module], fixTau2[side][module],
397 tau1[side][module], tau2[side][module], t0HG[side][module], t0LG[side][module]);
398 }
399 }
400}

◆ SetTimeCuts()

void ZDCDataAnalyzer::SetTimeCuts ( const ZDCModuleFloatArray & deltaT0MinHG,
const ZDCModuleFloatArray & deltaT0MaxHG,
const ZDCModuleFloatArray & deltaT0MinLG,
const ZDCModuleFloatArray & deltaT0MaxLG )

Definition at line 473 of file ZDCDataAnalyzer.cxx.

475{
476 for (size_t side : {0, 1}) {
477 for (size_t module : {0, 1, 2, 3}) {
478 m_moduleAnalyzers[side][module]->SetTimeCuts(deltaT0MinHG[side][module], deltaT0MaxHG[side][module],
479 deltaT0MinLG[side][module], deltaT0MaxLG[side][module]);
480 }
481 }
482}

◆ SetTimingCorrParams()

void ZDCDataAnalyzer::SetTimingCorrParams ( ZDCPulseAnalyzer::TimingCorrMode mode,
float refADC,
float refScale,
const std::array< std::array< std::vector< float >, 4 >, 2 > & HGParamArr,
const std::array< std::array< std::vector< float >, 4 >, 2 > & LGParamArr )

Definition at line 509 of file ZDCDataAnalyzer.cxx.

512{
513 for (size_t side : {0, 1}) {
514 for (size_t module : {0, 1, 2, 3}) {
515 m_moduleAnalyzers[side][module]->SetTimingCorrParams(mode, refADC, refScale,
516 HGParamArr.at(side).at(module), LGParamArr.at(side).at(module));
517 }
518 }
519
520}

◆ SideFailed()

bool ZDCDataAnalyzer::SideFailed ( size_t side) const
inline

Definition at line 151 of file ZDCDataAnalyzer.h.

151{return m_fail.at(side);}

◆ StartEvent()

void ZDCDataAnalyzer::StartEvent ( int lumiBlock)

Definition at line 583 of file ZDCDataAnalyzer.cxx.

584{
585 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Starting new event, event index = " + std::to_string(m_eventCount)));
586
587 // See if we have to load up new calibrations
588 //
589 if (lumiBlock != m_currentLB) {
590 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Starting new luminosity block " + std::to_string(lumiBlock)));
591
592 if (m_haveECalib) {
593 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Loading energy calibrations for event " + std::to_string(m_eventCount) + ", lumi block " +
594 std::to_string(lumiBlock)));
595
596 for (size_t side : {0, 1}) {
597 for (size_t module : {0, 1, 2, 3}) {
598 float splineLBMin = m_LBDepEcalibSplines[side][module]->GetXmin();
599 float splineLBMax = m_LBDepEcalibSplines[side][module]->GetXmax();
600
601 if (lumiBlock >= splineLBMin && lumiBlock <= splineLBMax) {
603 }
604 else if (lumiBlock < splineLBMin) {
606 }
607 else {
609 }
610 }
611 }
612 } // end of if (_haveEcalib) {
613
614 if (m_haveT0Calib) {
615 (*m_msgFunc_p)(ZDCMsg::Verbose, ("Loading timing calibrations for event " + std::to_string(m_eventCount) + ", lumi block " + std::to_string(lumiBlock)));
616
617 for (size_t side : {0, 1}) {
618 for (size_t module : {0, 1, 2, 3}) {
619 float splineLBMin = m_T0HGOffsetSplines[side][module]->GetXmin();
620 float splineLBMax = m_T0HGOffsetSplines[side][module]->GetXmax();
621
622 if (lumiBlock >= splineLBMin && lumiBlock <= splineLBMax) {
625 }
626 else if (lumiBlock < splineLBMin) {
629 }
630 else {
633 }
634 }
635 }
636 } // end of if (m_haveT0Calib)
637 }
638
639 // Initialize transient results
640 //
641 for (size_t side : {0, 1}) {
642 for (size_t module : {0, 1, 2, 3}) {
643 m_dataLoaded[side][module] = false;
646 m_calibTime[side][module] = 0;
647 // _moduleFail[side][module] = false;
648 }
649
650 m_moduleSum[side] = 0;
654
658
662
663 m_averageTime[side] = 0;
664 m_fail[side] = false;
665 }
666
667 m_moduleMask = 0;
669}
std::array< float, 2 > m_NLcalibModSumBkgdFrac
setTeId lumiBlock

Member Data Documentation

◆ JSONConfigParams

const ZDCJSONConfig::JSONParamList ZDCDataAnalyzer::JSONConfigParams
static
Initial value:
= {
{"moduleEnabled", {JSON::value_t::array, 4, true, false}},
{"iterativeCalibCorr", {JSON::value_t::array, 4, true, false}},
{"delayedOrder", {JSON::value_t::array, 4, true, false}}
}

Definition at line 14 of file ZDCDataAnalyzer.h.

◆ m_averageTime

std::array<float, 2> ZDCDataAnalyzer::m_averageTime {}
private

Definition at line 86 of file ZDCDataAnalyzer.h.

86{};

◆ m_calibAmplitude

std::array<std::array<float, 4>, 2> ZDCDataAnalyzer::m_calibAmplitude {}
private

Definition at line 67 of file ZDCDataAnalyzer.h.

67{};

◆ m_calibModSumBkgdFrac

std::array<float, 2> ZDCDataAnalyzer::m_calibModSumBkgdFrac {}
private

Definition at line 77 of file ZDCDataAnalyzer.h.

77{};

◆ m_calibModuleSum

std::array<float, 2> ZDCDataAnalyzer::m_calibModuleSum {}
private

Definition at line 75 of file ZDCDataAnalyzer.h.

75{};

◆ m_calibModuleSumErrSq

std::array<float, 2> ZDCDataAnalyzer::m_calibModuleSumErrSq {}
private

Definition at line 76 of file ZDCDataAnalyzer.h.

76{};

◆ m_calibTime

std::array<std::array<float, 4>, 2> ZDCDataAnalyzer::m_calibTime {}
private

Definition at line 68 of file ZDCDataAnalyzer.h.

68{};

◆ m_currentECalibCoeff

ZDCModuleFloatArray ZDCDataAnalyzer::m_currentECalibCoeff {}
private

Definition at line 58 of file ZDCDataAnalyzer.h.

58{};

◆ m_currentLB

int ZDCDataAnalyzer::m_currentLB {-1}
private

Definition at line 57 of file ZDCDataAnalyzer.h.

57{-1};

◆ m_currentT0OffsetsHG

ZDCModuleFloatArray ZDCDataAnalyzer::m_currentT0OffsetsHG {}
private

Definition at line 59 of file ZDCDataAnalyzer.h.

59{};

◆ m_currentT0OffsetsLG

ZDCModuleFloatArray ZDCDataAnalyzer::m_currentT0OffsetsLG {}
private

Definition at line 60 of file ZDCDataAnalyzer.h.

60{};

◆ m_dataAnalyzerConfig

std::unique_ptr<ZDCJSONConfig> ZDCDataAnalyzer::m_dataAnalyzerConfig {}
private

Definition at line 34 of file ZDCDataAnalyzer.h.

34{};

◆ m_dataLoaded

std::array<std::array<bool, 4>, 2> ZDCDataAnalyzer::m_dataLoaded {}
private

Definition at line 62 of file ZDCDataAnalyzer.h.

62{};

◆ m_delayedOrder

std::array<std::array<int, 4>, 2> ZDCDataAnalyzer::m_delayedOrder {}
private

Definition at line 39 of file ZDCDataAnalyzer.h.

39{};

◆ m_eventCount

int ZDCDataAnalyzer::m_eventCount {0}
private

Definition at line 44 of file ZDCDataAnalyzer.h.

44{0};

◆ m_fail

std::array<bool, 2> ZDCDataAnalyzer::m_fail {}
private

Definition at line 87 of file ZDCDataAnalyzer.h.

87{};

◆ m_haveECalib

bool ZDCDataAnalyzer::m_haveECalib {false}
private

Definition at line 49 of file ZDCDataAnalyzer.h.

49{false};

◆ m_haveNLcalib

bool ZDCDataAnalyzer::m_haveNLcalib {false}
private

Definition at line 79 of file ZDCDataAnalyzer.h.

79{false};

◆ m_haveT0Calib

bool ZDCDataAnalyzer::m_haveT0Calib {false}
private

Definition at line 50 of file ZDCDataAnalyzer.h.

50{false};

◆ m_HGGains

ZDCModuleFloatArray ZDCDataAnalyzer::m_HGGains {}
private

Definition at line 46 of file ZDCDataAnalyzer.h.

46{};

◆ m_LBDepEcalibSplines

std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> ZDCDataAnalyzer::m_LBDepEcalibSplines {}
private

Definition at line 51 of file ZDCDataAnalyzer.h.

51{};

◆ m_moduleAmpFractionLG

std::array<std::array<float, 4>, 2> ZDCDataAnalyzer::m_moduleAmpFractionLG {}
private

Definition at line 89 of file ZDCDataAnalyzer.h.

89{};

◆ m_moduleAnalyzers

std::array<std::array<std::unique_ptr<ZDCPulseAnalyzer>, 4>, 2> ZDCDataAnalyzer::m_moduleAnalyzers {}
private

Definition at line 42 of file ZDCDataAnalyzer.h.

42{};

◆ m_moduleEnabled

ZDCModuleBoolArray ZDCDataAnalyzer::m_moduleEnabled {}
private

Definition at line 41 of file ZDCDataAnalyzer.h.

41{};

◆ m_moduleMask

unsigned int ZDCDataAnalyzer::m_moduleMask {0}
private

Definition at line 64 of file ZDCDataAnalyzer.h.

64{0};

◆ m_moduleStatus

std::array<std::array<unsigned int, 4>, 2> ZDCDataAnalyzer::m_moduleStatus {}
private

Definition at line 66 of file ZDCDataAnalyzer.h.

66{};

◆ m_moduleSum

std::array<float, 2> ZDCDataAnalyzer::m_moduleSum {}
private

Definition at line 70 of file ZDCDataAnalyzer.h.

70{};

◆ m_moduleSumBkgdFrac

std::array<float, 2> ZDCDataAnalyzer::m_moduleSumBkgdFrac {}
private

Definition at line 73 of file ZDCDataAnalyzer.h.

73{};

◆ m_moduleSumErrSq

std::array<float, 2> ZDCDataAnalyzer::m_moduleSumErrSq {}
private

Definition at line 71 of file ZDCDataAnalyzer.h.

71{};

◆ m_moduleSumPreSample

std::array<float, 2> ZDCDataAnalyzer::m_moduleSumPreSample {}
private

Definition at line 72 of file ZDCDataAnalyzer.h.

72{};

◆ m_msgFunc_p

ZDCMsg::MessageFunctionPtr ZDCDataAnalyzer::m_msgFunc_p
private

Definition at line 33 of file ZDCDataAnalyzer.h.

◆ m_NLcalibFactors

std::array< std::array< std::vector<float>, 3>, 2> ZDCDataAnalyzer::m_NLcalibFactors {}
private

Definition at line 80 of file ZDCDataAnalyzer.h.

80{}; // 3 POL5s for each side

◆ m_NLcalibModSumBkgdFrac

std::array<float, 2> ZDCDataAnalyzer::m_NLcalibModSumBkgdFrac {}
private

Definition at line 84 of file ZDCDataAnalyzer.h.

84{};

◆ m_NLcalibModuleSum

std::array<float, 2> ZDCDataAnalyzer::m_NLcalibModuleSum {}
private

Definition at line 82 of file ZDCDataAnalyzer.h.

82{};

◆ m_NLcalibModuleSumErrSq

std::array<float, 2> ZDCDataAnalyzer::m_NLcalibModuleSumErrSq {}
private

Definition at line 83 of file ZDCDataAnalyzer.h.

83{};

◆ m_pedestals

ZDCModuleFloatArray ZDCDataAnalyzer::m_pedestals {}
private

Definition at line 47 of file ZDCDataAnalyzer.h.

47{};

◆ m_pulseAnalyzerConfig

std::unique_ptr<ZDCJSONConfig> ZDCDataAnalyzer::m_pulseAnalyzerConfig {}
private

Definition at line 35 of file ZDCDataAnalyzer.h.

35{};

◆ m_repassEnabled

bool ZDCDataAnalyzer::m_repassEnabled {false}
private

Definition at line 37 of file ZDCDataAnalyzer.h.

37{false};

◆ m_T0HGOffsetSplines

std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> ZDCDataAnalyzer::m_T0HGOffsetSplines {}
private

Definition at line 52 of file ZDCDataAnalyzer.h.

52{};

◆ m_T0LGOffsetSplines

std::array<std::array<std::unique_ptr<TSpline>, 4>, 2> ZDCDataAnalyzer::m_T0LGOffsetSplines {}
private

Definition at line 53 of file ZDCDataAnalyzer.h.

53{};

The documentation for this class was generated from the following files: