 |
ATLAS Offline Software
|
Go to the documentation of this file.
23 unsigned int LGMode) :
24 m_msgFunc_p(std::move(msgFunc_p))
54 for (
size_t side : {0, 1}) {
55 for (
size_t module : {0, 1, 2, 3}) {
68 m_msgFunc_p(msgFunc_p)
84 JSON DAconfig = configJSON[
"DataAnalyzer"];
85 if (DAconfig.is_null()) {
86 (*m_msgFunc_p)(
ZDCMsg::Fatal,
"JSON configuration object for ZDCDataAnalyzer not found");
92 (*m_msgFunc_p)(
ZDCMsg::Fatal,
"Error parsing ZDCDataAnalyzer JSON config, error = " + resultStr);
98 for (
size_t side : {0, 1}) {
99 for (
size_t module : {0, 1, 2, 3}) {
106 JSON modEnable = sideConfig[
"moduleEnabled"];
107 if (!modEnable.is_null()) {
108 if (modEnable.size() != 4) {
109 (*m_msgFunc_p)(
ZDCMsg::Fatal,
"Error parsing ZDCDataAnalyzer JSON config, incorrect size of moduleEnabled");
113 for (
size_t module : {0, 1, 2, 3}) {
121 JSON PAconfig = configJSON[
"PulseAnalyzer"];
122 if (PAconfig.is_null()) {
123 (*m_msgFunc_p)(
ZDCMsg::Fatal,
"JSON configuration object for ZDCPulseAnalyzer not found");
131 (*m_msgFunc_p)(
ZDCMsg::Fatal,
"Error parsing ZDCPulseAnalyzer JSON config, error = " + resultStr2);
137 for (
size_t side : {0, 1}) {
138 for (
size_t module : {0, 1, 2, 3}) {
148 std::ostringstream ostr;
149 ostr <<
"JSON configuration for ZDC pulse analyyzer for side " <<
std::to_string(
side)
167 (*m_msgFunc_p)(
ZDCMsg::Info,
"ZDCDataAnalyzer construction complete");
172 for (
size_t side : {0, 1}) {
184 for (
size_t module : {0, 1, 2, 3}) {
202 {{ {{0,0,0,0,0,0}},{{0,0,0,0,0,0}},{{0,0,0,0,0,0}} }},
203 {{ {{0,0,0,0,0,0}},{{0,0,0,0,0,0}},{{0,0,0,0,0,0}} }} }};
226 int delayedOrder = deltaT < 0 ? -1 : 1;
227 for (
size_t side : {0, 1}) {
228 for (
size_t module : {0, 1, 2, 3}) {
237 for (
size_t side : {0, 1}) {
238 for (
size_t module : {0, 1, 2, 3}) {
252 for (
size_t side : {0, 1}) {
253 for (
size_t module : {0, 1, 2, 3}) {
261 for (
size_t side : {0, 1}) {
262 for (
size_t module : {0, 1, 2, 3}) {
270 for (
size_t side : {0, 1}) {
271 for (
size_t module : {0, 1, 2, 3}) {
279 for (
size_t side : {0, 1}) {
280 for (
size_t module : {0, 1, 2, 3}) {
290 for (
size_t side : {0, 1}) {
291 for (
size_t module : {0, 1, 2, 3}) {
299 for (
size_t side : {0, 1}) {
300 for (
size_t module : {0, 1, 2, 3}) {
308 for (
size_t side : {0, 1}) {
309 for (
size_t module : {0, 1, 2, 3}) {
317 for (
size_t side : {0, 1}) {
318 for (
size_t module : {0, 1, 2, 3}) {
326 for (
size_t side : {0, 1}) {
327 for (
size_t module : {0, 1, 2, 3}) {
334 for (
size_t side : {0, 1}) {
335 for (
size_t module : {0, 1, 2, 3}) {
343 for (
size_t side : {0, 1}) {
344 for (
size_t module : {0, 1, 2, 3}) {
356 for (
size_t side : {0, 1}) {
357 for (
size_t module : {0, 1, 2, 3}) {
366 for (
size_t side : {0, 1}) {
367 for (
size_t module : {0, 1, 2, 3}) {
374 for (
size_t side : {0, 1}) {
375 for (
size_t module : {0, 1, 2, 3}) {
384 for (
size_t side : {0, 1}) {
385 for (
size_t module : {0, 1, 2, 3}) {
395 for (
size_t side : {0, 1}) {
396 for (
size_t module : {0, 1, 2, 3}) {
405 for (
size_t side : {0, 1}) {
406 for (
size_t module : {0, 1, 2, 3}) {
416 for (
size_t side : {0, 1}) {
417 for (
size_t module : {0, 1, 2, 3}) {
429 for (
size_t side : {0, 1}) {
430 for (
size_t module : {0, 1, 2, 3}) {
442 for (
size_t side : {0, 1}) {
443 for (
size_t module : {0, 1, 2, 3}) {
453 for (
size_t side: {0,1})
455 for (
size_t module: {0,1,2})
457 for (
size_t val: {0,1,2,3,4,5})
470 if (correctPerSample)
471 (*m_msgFunc_p)(
ZDCMsg::Info,
"ZDCDataAnalyzer::enabling FADC Corrections per sample");
475 for (
size_t side : {0, 1}) {
476 for (
size_t module : {0, 1, 2, 3}) {
484 for (
size_t side : {0, 1}) {
485 for (
size_t module : {0, 1, 2, 3}) {
495 for (
size_t side : {0, 1}) {
496 for (
size_t module : {0, 1, 2, 3}) {
526 for (
size_t side : {0, 1}) {
527 for (
size_t module : {0, 1, 2, 3}) {
547 for (
size_t side : {0, 1}) {
548 for (
size_t module : {0, 1, 2, 3}) {
571 for (
size_t side : {0, 1}) {
572 for (
size_t module : {0, 1, 2, 3}) {
618 if (pulseAna_p->
failed()) {
628 const std::vector<float>& HGSamplesDelayed,
const std::vector<float>& LGSamplesDelayed)
647 pulseAna_p->
LoadAndAnalyzeData(HGSamples, LGSamples, HGSamplesDelayed, LGSamplesDelayed);
650 pulseAna_p->
LoadAndAnalyzeData(HGSamplesDelayed, LGSamplesDelayed, HGSamples, LGSamples);
654 if (pulseAna_p->
failed()) {
667 unsigned int sideNPulsesMod[2] = {0, 0};
669 for (
size_t side : {0, 1}) {
670 for (
size_t module : {0, 1, 2, 3}) {
680 for (
size_t side : {0, 1}) {
681 if (sideNPulsesMod[
side] == 0)
continue;
683 for (
size_t module : {0, 1, 2, 3}) {
701 for (
size_t side : {0, 1}) {
702 float tempFraction = 1.0;
703 double sumAmpTimesBkgdFrac = 0.0;
704 double sumCalibAmpTimesBkgdFrac = 0.0;
706 for (
size_t module : {0, 1, 2, 3}) {
721 float timeCalib = pulseAna_p->
GetT0Corr();
729 sumAmpTimesBkgdFrac += amplitude*bkgdFraction;
737 sumCalibAmpTimesBkgdFrac += amplitude*bkgdFraction;
772 for (
int iside:{0,1})
780 float EMCorrFact = 0;
787 float Had1CorrFact = 0;
793 float Had2CorrFact = 0;
799 std::ostringstream ostr;
800 ostr <<
"ZDCDataAnalyzer: " <<
m_calibModuleSum[iside] <<
" " << EMCorrFact <<
" " << Had1CorrFact <<
" " << Had2CorrFact << std::endl;
804 float ECorrEMHad1 = ECorrEM/Had1CorrFact;
805 float ECorrEMHad1Had2 = ECorrEMHad1/Had2CorrFact;
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0LGOffsetSplines
std::array< std::array< float, 4 >, 2 > m_calibAmplitude
std::array< std::array< bool, 4 >, 2 > m_dataLoaded
unsigned int m_moduleMask
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::unique_ptr< ZDCPulseAnalyzer >, 4 >, 2 > m_moduleAnalyzers
ZDCModuleBoolArray m_moduleEnabled
std::array< std::array< float, 4 >, 2 > ZDCModuleFloatArray
float GetAmpError() const
unsigned int GetStatusMask() const
std::array< float, 2 > m_moduleSum
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_T0HGOffsetSplines
std::array< std::array< int, 4 >, 2 > ZDCModuleIntArray
void setMinimumSignificance(float sigMinHG, float sigMinLG)
bool armSumInclude() const
float GetAmplitude() const
std::array< float, 2 > m_NLcalibModuleSum
std::map< std::string, JSONParamDescr > JSONParamList
std::string to_string(const SectorProjector proj)
ZDCMsg::MessageFunctionPtr m_msgFunc_p
void set2ndDerivStep(size_t step)
void SetCutValues(const ZDCModuleFloatArray &chisqDivAmpCutHG, const ZDCModuleFloatArray &chisqDivAmpCutLG, const ZDCModuleFloatArray &deltaT0MinHG, const ZDCModuleFloatArray &deltaT0MaxHG, const ZDCModuleFloatArray &deltaT0MinLG, const ZDCModuleFloatArray &deltaT0MaxLG)
bool LoadAndAnalyzeData(const std::vector< float > &ADCSamplesHG, const std::vector< float > &ADCSamplesLG)
std::array< std::array< float, 4 >, 2 > m_calibTime
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_moduleSumBkgdFrac
void LoadAndAnalyzeData(size_t side, size_t module, const std::vector< float > &HGSamples, const std::vector< float > &LGSamples)
std::array< bool, 2 > m_fail
std::array< float, 2 > m_calibModuleSumErrSq
void SetNoiseSigmas(const ZDCModuleFloatArray &noiseSigmasHG, const ZDCModuleFloatArray &noiseSigmasLG)
void SetNLcalibParams(std::array< std::array< std::array< float, 6 >, 3 >, 2 > &nlcalibParams)
std::array< float, 2 > m_averageTime
std::unique_ptr< ZDCJSONConfig > m_dataAnalyzerConfig
ZDCModuleFloatArray m_pedestals
void SetADCOverUnderflowValues(const ZDCModuleFloatArray &HGOverflowADC, const ZDCModuleFloatArray &HGUnderflowADC, const ZDCModuleFloatArray &LGOverflowADC)
std::array< float, 2 > m_moduleSumPreSample
std::array< float, 2 > m_calibModuleSum
void SetFitMinMaxAmpValues(const ZDCModuleFloatArray &minAmpHG, const ZDCModuleFloatArray &minAmpLG, const ZDCModuleFloatArray &maxAmpHG, const ZDCModuleFloatArray &maxAmpLG)
void SetTauT0Values(const ZDCModuleBoolArray &fxiTau1, const ZDCModuleBoolArray &fxiTau2, const ZDCModuleFloatArray &tau1, const ZDCModuleFloatArray &tau2, const ZDCModuleFloatArray &t0HG, const ZDCModuleFloatArray &t0LG)
std::array< std::array< std::array< float, 6 >, 3 >, 2 > m_NLcalibFactors
static const ZDCJSONConfig::JSONParamList JSONConfigParams
void enableDelayed(float deltaT, const ZDCModuleFloatArray &undelayedDelayedPedestalDiff)
std::array< float, 2 > m_calibModSumBkgdFrac
std::array< float, 2 > m_NLcalibModSumBkgdFrac
Tell the compiler to optimize assuming that FP may trap.
void enablePostExclusion(unsigned int maxSamplesExcl, const ZDCModuleIntArray &HGADCThresh, const ZDCModuleIntArray &LGADCThresh)
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)
std::array< float, 2 > m_moduleSumErrSq
std::shared_ptr< MessageFunction > MessageFunctionPtr
ZDCModuleFloatArray m_currentT0OffsetsHG
void disableFADCCorrections()
void enablePreExclusion(unsigned int maxSamplesExcl, const ZDCModuleIntArray &HGADCThresh, const ZDCModuleIntArray &LGADCThresh)
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)
std::array< std::array< unsigned int, 4 >, 2 > m_moduleStatus
void DoNLcalibModuleSum()
float GetBkgdMaxFraction() const
bool disableModule(size_t side, size_t module)
std::array< std::array< bool, 4 >, 2 > ZDCModuleBoolArray
ZDCModuleFloatArray m_currentECalibCoeff
std::array< float, 2 > m_NLcalibModuleSumErrSq
ZDCModuleFloatArray m_currentT0OffsetsLG
bool getPulseAnalyzerGlobalPar(const std::string &key, T &value)
std::array< std::array< std::unique_ptr< TSpline >, 4 >, 2 > m_LBDepEcalibSplines
void SetFitTimeMax(float tmax)
void enableRepass(const ZDCModuleFloatArray &peak2ndDerivMinRepassHG, const ZDCModuleFloatArray &peak2ndDerivMinRepassLG)
void SetPeak2ndDerivMinTolerances(size_t tolerance)
ZDCModuleFloatArray m_HGGains
constexpr int pow(int base, int exp) noexcept
void SetGainFactorsHGLG(float gainFactorHG, float gainFactorLG)
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 StartEvent(int lumiBlock)
std::unique_ptr< ZDCJSONConfig > m_pulseAnalyzerConfig
static const ZDCJSONConfig::JSONParamList JSONConfigParams
std::array< std::array< float, 4 >, 2 > m_moduleAmpFractionLG
std::array< std::array< int, 4 >, 2 > m_delayedOrder
float GetPreSampleAmp() const
void SetModuleAmpFractionLG(const ZDCDataAnalyzer::ZDCModuleFloatArray &moduleAmpFractionLG)