5#ifndef ZDCANALYSIS_ZDCDataAnalyzer_h
6#define ZDCANALYSIS_ZDCDataAnalyzer_h
96 size_t preSampleIdx, std::string fitFunction,
97 const ZDCModuleIntArray& peak2ndDerivMinSamples,
98 const ZDCModuleFloatArray& peak2ndDerivMinThresholdsHG,
99 const ZDCModuleFloatArray& peak2ndDerivMinThresholdsLG,
113 for (
size_t side : {0, 1}) {
114 for (
size_t module : {0, 1, 2, 3}) {
120 void enableDelayed(
float deltaT,
const ZDCModuleFloatArray& undelayedDelayedPedestalDiff);
121 void enableDelayed(
const ZDCModuleFloatArray& delayDeltaT,
const ZDCModuleFloatArray& undelayedDelayedPedestalDiff);
123 void enableRepass(
const ZDCModuleFloatArray& peak2ndDerivMinRepassHG,
const ZDCModuleFloatArray& peak2ndDerivMinRepassLG);
125 void enablePreExclusion(
unsigned int maxSamplesExcl,
const ZDCModuleIntArray& HGADCThresh,
const ZDCModuleIntArray& LGADCThresh);
126 void enablePreExclusion(
unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh);
128 void enablePostExclusion(
unsigned int maxSamplesExcl,
const ZDCModuleIntArray& HGADCThresh,
const ZDCModuleIntArray& LGADCThresh);
129 void enablePostExclusion(
unsigned int maxSamplesExcl,
unsigned int HGADCThresh,
unsigned int LGADCThresh);
144 void DoNLcalibModuleSum();
166 bool disableModule(
size_t side,
size_t module);
168 void set2ndDerivStep(
size_t step);
170 void setMinimumSignificance(
float sigMinHG,
float sigMinLG);
172 void SetGainFactorsHGLG(
float gainFactorHG,
float gainFactorLG);
174 void SetGainFactorsHGLG(
const ZDCModuleFloatArray& gainFactorsHG,
const ZDCModuleFloatArray& gainFactorsLG);
176 void SetPeak2ndDerivMinTolerances(
size_t tolerance);
178 void SetFitTimeMax(
float tmax);
202 const std::array<std::array<std::vector<float>, 4>, 2>& HGParamArr,
203 const std::array<std::array<std::vector<float>, 4>, 2>& LGParamArr);
206 const std::array<std::array<std::vector<float>, 4>, 2>& HGNonlinCorrParams,
207 const std::array<std::array<std::vector<float>, 4>, 2>& LHGNonlinCorrParams);
209 void SetNLcalibParams(std::array< std::array< std::array<float,6>, 3>, 2>& nlcalibParams);
215 const std::array<std::array<std::vector<double>, 4>, 2>& parsHGArr,
216 const std::array<std::array<std::vector<double>, 4>, 2>& parsLGArr);
219 std::array<std::array<std::unique_ptr<const TH1>, 4>, 2>& correHistHG,
220 std::array<std::array<std::unique_ptr<const TH1>, 4>, 2>& correHistLG);
233 std::array<std::array<std::unique_ptr<TSpline>, 4>, 2>&& T0LGOffsetSplines)
243 void StartEvent(
int lumiBlock);
245 void LoadAndAnalyzeData(
size_t side,
size_t module,
const std::vector<float>& HGSamples,
const std::vector<float>& LGSamples);
247 void LoadAndAnalyzeData(
size_t side,
size_t module,
const std::vector<float>& HGSamples,
const std::vector<float>& LGSamples,
248 const std::vector<float>& HGSamplesDelayed,
const std::vector<float>& LGSamplesDelayed);
Define macros for attributes used to control the static checker.
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
float GetAverageTime(size_t side) const
std::unique_ptr< ZDCJSONConfig > m_dataAnalyzerConfig
void SetNoiseSigmas(const ZDCModuleFloatArray &noiseSigmasHG, const ZDCModuleFloatArray &noiseSigmasLG)
void SetCutValues(const ZDCModuleFloatArray &chisqDivAmpCutHG, const ZDCModuleFloatArray &chisqDivAmpCutLG, const ZDCModuleFloatArray &deltaT0MinHG, const ZDCModuleFloatArray &deltaT0MaxHG, const ZDCModuleFloatArray &deltaT0MinLG, const ZDCModuleFloatArray &deltaT0MaxLG)
ZDCMsg::MessageFunctionPtr m_msgFunc_p
float GetModuleAmplitude(size_t side, size_t module) const
float GetNLcalibModuleSumErr(size_t side) const
std::array< std::array< std::unique_ptr< ZDCPulseAnalyzer >, 4 >, 2 > m_moduleAnalyzers
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)
std::array< float, 2 > m_NLcalibModSumBkgdFrac
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0LGOffsetSplines
float GetModuleStatus(size_t side, size_t module) const
std::array< std::array< bool, 4 >, 2 > ZDCModuleBoolArray
float GetNLcalibModuleSum(size_t side) const
float GetdelayedBS(size_t side, size_t module) const
ZDCModuleFloatArray m_pedestals
std::array< std::array< float, 4 >, 2 > m_calibAmplitude
std::array< float, 2 > m_moduleSumPreSample
ZDCModuleBoolArray m_moduleEnabled
std::array< std::array< float, 4 >, 2 > ZDCModuleFloatArray
std::array< float, 2 > m_calibModSumBkgdFrac
ZDCDataAnalyzer(ZDCMsg::MessageFunctionPtr messageFunc_p, int nSample, float deltaTSample, size_t preSampleIdx, std::string fitFunction, const ZDCModuleIntArray &peak2ndDerivMinSamples, const ZDCModuleFloatArray &peak2ndDerivMinThresholdsHG, const ZDCModuleFloatArray &peak2ndDerivMinThresholdsLG, unsigned int LGMode=ZDCPulseAnalyzer::LGModeNormal)
ZDCModuleFloatArray m_currentECalibCoeff
void LoadT0Calibrations(std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&T0HGOffsetSplines, std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&T0LGOffsetSplines)
float GetModuleChisq(size_t side, size_t module) const
std::unique_ptr< ZDCJSONConfig > m_pulseAnalyzerConfig
void SetTauT0Values(const ZDCModuleBoolArray &fxiTau1, const ZDCModuleBoolArray &fxiTau2, const ZDCModuleFloatArray &tau1, const ZDCModuleFloatArray &tau2, const ZDCModuleFloatArray &t0HG, const ZDCModuleFloatArray &t0LG)
bool SideFailed(size_t side) const
std::array< float, 2 > m_averageTime
float GetCalibModuleSumErr(size_t side) const
bool moduleEnabled(unsigned int side, unsigned int module) const
std::array< std::array< int, 4 >, 2 > ZDCModuleIntArray
void invokeAll(T functor)
void SetModuleAmpFractionLG(const ZDCDataAnalyzer::ZDCModuleFloatArray &moduleAmpFractionLG)
std::array< std::array< bool, 4 >, 2 > m_dataLoaded
unsigned int m_moduleMask
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_LBDepEcalibSplines
std::array< bool, 2 > m_fail
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)
std::array< std::array< std::array< float, 6 >, 3 >, 2 > m_NLcalibFactors
float GetModuleSum(size_t side) const
void LoadEnergyCalibrations(std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > &&calibSplines)
std::array< std::array< float, 4 >, 2 > m_calibTime
std::array< std::array< float, 4 >, 2 > m_moduleAmpFractionLG
void SetSaveFitFunc(bool save)
std::array< float, 2 > m_moduleSumErrSq
unsigned int GetModuleMask() const
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0HGOffsetSplines
ZDCModuleFloatArray m_HGGains
float GetModuleSumPreSample(size_t side) const
float GetSideCalibBkgdFrac(size_t side) const
std::array< float, 2 > m_moduleSum
float GetSideBkgdFrac(size_t side) const
ZDCPulseAnalyzer * GetPulseAnalyzer(size_t side, size_t module)
float GetModuleTime(size_t side, size_t module) const
std::array< float, 2 > m_NLcalibModuleSum
float GetModuleCalibAmplitude(size_t side, size_t module) const
std::array< float, 2 > m_calibModuleSumErrSq
float GetCalibModuleSum(size_t side) const
std::array< float, 2 > m_calibModuleSum
std::array< std::array< int, 4 >, 2 > m_delayedOrder
void SetNLcalibParams(std::array< std::array< std::array< float, 6 >, 3 >, 2 > &nlcalibParams)
void SetADCOverUnderflowValues(const ZDCModuleFloatArray &HGOverflowADC, const ZDCModuleFloatArray &HGUnderflowADC, const ZDCModuleFloatArray &LGOverflowADC)
bool ModuleDisabled(unsigned int side, unsigned int module) const
std::array< float, 2 > m_moduleSumBkgdFrac
void disableFADCCorrections()
bool getPulseAnalyzerGlobalPar(const std::string &key, T &value)
std::array< float, 2 > m_NLcalibModuleSumErrSq
ZDCModuleFloatArray m_currentT0OffsetsHG
float GetModuleCalibTime(size_t side, size_t module) const
const ZDCPulseAnalyzer * GetPulseAnalyzer(size_t side, size_t module) const
static const ZDCJSONConfig::JSONParamList JSONConfigParams
void SetFitMinMaxAmpValues(const ZDCModuleFloatArray &minAmpHG, const ZDCModuleFloatArray &minAmpLG, const ZDCModuleFloatArray &maxAmpHG, const ZDCModuleFloatArray &maxAmpLG)
float GetModuleSumErr(size_t side) const
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)
ZDCModuleFloatArray m_currentT0OffsetsLG
std::array< std::array< unsigned int, 4 >, 2 > m_moduleStatus
std::map< std::string, JSONParamDescr > JSONParamList
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
std::shared_ptr< MessageFunction > MessageFunctionPtr