103 ATH_MSG_DEBUG(
"Opening trigger efficiency file " << filename);
105 std::unique_ptr<TFile>
file (TFile::Open(filename.c_str(),
"READ"));
106 if (
file ==
nullptr ||
file->IsZombie())
116 std::stringstream Aalpha_name;
117 Aalpha_name <<
"A_alpha_" << runNumber;
118 TSpline3* par_A_alpha = (TSpline3*)
file->GetObjectChecked(Aalpha_name.str().c_str(),
"TSpline3");
122 ATH_MSG_WARNING(
"No trigger efficiencies for run number " << runNumber);
126 std::stringstream Abeta_name;
127 Abeta_name <<
"A_beta_" << runNumber;
128 TSpline3* par_A_beta = (TSpline3*)
file->GetObjectChecked(Abeta_name.str().c_str(),
"TSpline3");
129 std::stringstream Atheta_name;
130 Atheta_name <<
"A_theta_" << runNumber;
131 TSpline3* par_A_theta = (TSpline3*)
file->GetObjectChecked(Atheta_name.str().c_str(),
"TSpline3");
133 std::stringstream Calpha_name;
134 Calpha_name <<
"C_alpha_" << runNumber;
135 TSpline3* par_C_alpha = (TSpline3*)
file->GetObjectChecked(Calpha_name.str().c_str(),
"TSpline3");
136 std::stringstream Cbeta_name;
137 Cbeta_name <<
"C_beta_" << runNumber;
138 TSpline3* par_C_beta = (TSpline3*)
file->GetObjectChecked(Cbeta_name.str().c_str(),
"TSpline3");
139 std::stringstream Ctheta_name;
140 Ctheta_name <<
"C_theta_" << runNumber;
141 TSpline3* par_C_theta = (TSpline3*)
file->GetObjectChecked(Ctheta_name.str().c_str(),
"TSpline3");
143 std::stringstream Err_Aalpha_name;
144 Err_Aalpha_name <<
"A_alpha_error_" << runNumber;
145 TSpline3* parErr_A_alpha = (TSpline3*)
file->GetObjectChecked(Err_Aalpha_name.str().c_str(),
"TSpline3");
146 std::stringstream Err_Abeta_name;
147 Err_Abeta_name <<
"A_beta_error_" << runNumber;
148 TSpline3* parErr_A_beta = (TSpline3*)
file->GetObjectChecked(Err_Abeta_name.str().c_str(),
"TSpline3");
149 std::stringstream Err_Atheta_name;
150 Err_Atheta_name <<
"A_theta_error_" << runNumber;
151 TSpline3* parErr_A_theta = (TSpline3*)
file->GetObjectChecked(Err_Atheta_name.str().c_str(),
"TSpline3");
153 std::stringstream Err_Calpha_name;
154 Err_Calpha_name <<
"C_alpha_error_" << runNumber;
155 TSpline3* parErr_C_alpha = (TSpline3*)
file->GetObjectChecked(Err_Calpha_name.str().c_str(),
"TSpline3");
156 std::stringstream Err_Cbeta_name;
157 Err_Cbeta_name <<
"C_beta_error_" << runNumber;
158 TSpline3* parErr_C_beta = (TSpline3*)
file->GetObjectChecked(Err_Cbeta_name.str().c_str(),
"TSpline3");
159 std::stringstream Err_Ctheta_name;
160 Err_Ctheta_name <<
"C_theta_error_" << runNumber;
161 TSpline3* parErr_C_theta = (TSpline3*)
file->GetObjectChecked(Err_Ctheta_name.str().c_str(),
"TSpline3");
164 std::stringstream Cov_A_alpha_beta_name;
165 Cov_A_alpha_beta_name <<
"cov_A_alpha_beta_" << runNumber;
166 TSpline3* cov_A_alpha_beta = (TSpline3*)
file->GetObjectChecked(Cov_A_alpha_beta_name.str().c_str(),
"TSpline3");
167 std::stringstream Cov_A_alpha_theta_name;
168 Cov_A_alpha_theta_name <<
"cov_A_alpha_theta_" << runNumber;
169 TSpline3* cov_A_alpha_theta = (TSpline3*)
file->GetObjectChecked(Cov_A_alpha_theta_name.str().c_str(),
"TSpline3");
170 std::stringstream Cov_A_beta_theta_name;
171 Cov_A_beta_theta_name <<
"cov_A_beta_theta_" << runNumber;
172 TSpline3* cov_A_beta_theta = (TSpline3*)
file->GetObjectChecked(Cov_A_beta_theta_name.str().c_str(),
"TSpline3");
174 std::stringstream Cov_C_alpha_beta_name;
175 Cov_C_alpha_beta_name <<
"cov_C_alpha_beta_" << runNumber;
176 TSpline3* cov_C_alpha_beta = (TSpline3*)
file->GetObjectChecked(Cov_C_alpha_beta_name.str().c_str(),
"TSpline3");
177 std::stringstream Cov_C_alpha_theta_name;
178 Cov_C_alpha_theta_name <<
"cov_C_alpha_theta_" << runNumber;
179 TSpline3* cov_C_alpha_theta = (TSpline3*)
file->GetObjectChecked(Cov_C_alpha_theta_name.str().c_str(),
"TSpline3");
180 std::stringstream Cov_C_beta_theta_name;
181 Cov_C_beta_theta_name <<
"cov_C_beta_theta_" << runNumber;
182 TSpline3* cov_C_beta_theta = (TSpline3*)
file->GetObjectChecked(Cov_C_beta_theta_name.str().c_str(),
"TSpline3");
184 std::array<std::vector<TSpline3*>, 2> effparams;
185 std::array<std::vector<TSpline3*>, 2> effparamErrors;
186 std::array<std::vector<TSpline3*>, 2> effparamsCorrCoeffs;
188 effparams[0] = {par_C_alpha, par_C_beta, par_C_theta};
189 effparams[1] = {par_A_alpha, par_A_beta, par_A_theta};
190 effparamErrors[0] = {parErr_C_alpha, parErr_C_beta, parErr_C_theta};
191 effparamErrors[1] = {parErr_A_alpha, parErr_A_beta, parErr_A_theta};
192 effparamsCorrCoeffs[0] = {cov_C_alpha_beta, cov_C_alpha_theta, cov_C_beta_theta};
193 effparamsCorrCoeffs[1] = {cov_A_alpha_beta, cov_A_alpha_theta, cov_A_beta_theta};
239 {0, 1.1, 1.1, 1.1}}};
247 for (
size_t side : {0, 1}) {
248 for (
size_t module : {0, 1, 2, 3}) {
249 fixTau1Arr[side][module] =
true;
250 fixTau2Arr[side][module] =
false;
252 peak2ndDerivMinThresholdsHG[side][module] = -35;
253 peak2ndDerivMinThresholdsLG[side][module] = -16;
255 deltaT0CutLow[side][module] = -10;
256 deltaT0CutHigh[side][module] = 10;
257 chisqDivAmpCut[side][module] = 20;
261 ATH_MSG_DEBUG(
"LHCF2022: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
276 peak2ndDerivMinSamples,
277 peak2ndDerivMinThresholdsHG,
278 peak2ndDerivMinThresholdsLG,
281 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(2);
282 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
283 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
284 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
286 zdcDataAnalyzer->SetGainFactorsHGLG(0.1, 1);
291 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
296 {-12, -12, -12, -12}}};
301 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
305 zdcDataAnalyzer->SetFitMinMaxAmpValues(5, 2, 5000, 5000);
308 zdcDataAnalyzer->disableModule(0, 0);
309 zdcDataAnalyzer->disableModule(1, 0);
311 return zdcDataAnalyzer;
329 {1.1, 1.1, 1.1, 1.1}}};
337 const int deriv2ndThreshDSHG = -35;
338 const int deriv2ndThreshDSLG = -10;
340 const float deltaTcutLow = -10;
341 const float deltaTcutHigh = 10;
342 const float chisqDivAmpCutVal = 10;
344 for (
size_t side : {0, 1}) {
345 for (
size_t module : {0, 1, 2, 3}) {
346 fixTau1Arr[side][module] =
true;
347 fixTau2Arr[side][module] =
false;
349 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
350 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
352 deltaT0CutLow[side][module] = deltaTcutLow;
353 deltaT0CutHigh[side][module] = deltaTcutHigh;
354 chisqDivAmpCut[side][module] = chisqDivAmpCutVal;
358 ATH_MSG_DEBUG(
"pp2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
369 peak2ndDerivMinSamples,
370 peak2ndDerivMinThresholdsHG,
371 peak2ndDerivMinThresholdsLG,
374 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
375 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
376 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
377 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
379 zdcDataAnalyzer->SetGainFactorsHGLG(1, 10);
384 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
389 {-12, -12, -12, -12}}};
394 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
398 zdcDataAnalyzer->SetFitMinMaxAmpValues(5, 2, 5000, 5000);
400 return zdcDataAnalyzer;
418 {1.1, 1.1, 1.1, 1.1}}};
426 const int deriv2ndThreshDSHG = -35;
427 const int deriv2ndThreshDSLG = -10;
429 const float deltaTcutLow = -10;
430 const float deltaTcutHigh = 10;
431 const float chisqDivAmpCutVal = 100;
433 for (
size_t side : {0, 1}) {
434 for (
size_t module : {0, 1, 2, 3}) {
435 fixTau1Arr[side][module] =
true;
436 fixTau2Arr[side][module] =
false;
438 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
439 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
441 deltaT0CutLow[side][module] = deltaTcutLow;
442 deltaT0CutHigh[side][module] = deltaTcutHigh;
443 chisqDivAmpCut[side][module] = chisqDivAmpCutVal;
447 ATH_MSG_DEBUG(
"pp2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
458 peak2ndDerivMinSamples,
459 peak2ndDerivMinThresholdsHG,
460 peak2ndDerivMinThresholdsLG,
463 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
464 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
465 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
466 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
468 zdcDataAnalyzer->SetGainFactorsHGLG(1, 1);
473 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
478 {-12, -12, -12, -12}}};
483 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
487 zdcDataAnalyzer->SetFitMinMaxAmpValues(5, 2, 5000, 5000);
489 return zdcDataAnalyzer;
500 const int deriv2ndThreshDSHG = -25;
501 const int deriv2ndThreshDSLG = -10;
502 const unsigned int peakSample = 10;
504 const float deltaTcutLow = -10;
505 const float deltaTcutHigh = 10;
506 const float chisqDivAmpCutHGVal = 30;
507 const float chisqDivAmpCutLGVal = 50;
517 {1.35, 1.4, 1.3, 1.1}}};
524 for (
size_t side : {0, 1}) {
525 for (
size_t module : {0, 1, 2, 3}) {
526 fixTau1Arr[side][module] =
true;
527 fixTau2Arr[side][module] =
false;
529 peak2ndDerivMinSamples[side][module] = peakSample;
530 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
531 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
533 deltaT0CutLow[side][module] = deltaTcutLow;
534 deltaT0CutHigh[side][module] = deltaTcutHigh;
535 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
536 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
540 ATH_MSG_DEBUG(
"PbPb2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
547 peak2ndDerivMinSamples,
548 peak2ndDerivMinThresholdsHG,
549 peak2ndDerivMinThresholdsLG,
551 zdcDataAnalyzer->set2ndDerivStep(2);
552 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
557 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
565 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
573 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
574 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
575 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
580 {-20, -20, -20, -20},}};
585 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
589 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
590 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
594 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
596 nonLinearCorrCoefficHG[0][0] = {-0.0225871, 0.00702802, 0.00201155, -0.00675293, 0.00186212} ;
597 nonLinearCorrCoefficHG[0][1] = {-0.0155562, 0.00594092, 0.00382112, -0.00665466, 0.00143384} ;
598 nonLinearCorrCoefficHG[0][2] = {-0.0313621, 0.0134528, 0.00529013, -0.0111751, 0.0029913} ;
599 nonLinearCorrCoefficHG[0][3] = {-0.025108, 0.00301898, 0.022472, -0.0204288, 0.00453215} ;
600 nonLinearCorrCoefficHG[1][0] = {-0.0266648, 0.0106792, -0.00939959, 0.000833011, 0.000199051} ;
601 nonLinearCorrCoefficHG[1][1] = {-0.0246541, 0.000327376, 0.00754946, -0.00710273, 0.00136899} ;
602 nonLinearCorrCoefficHG[1][2] = {-0.0175283, 0.0127954, 0.000235749, -0.00769698, 0.00221995} ;;
603 nonLinearCorrCoefficHG[1][3] = {-0.0279931, 0.0188122, 0.0126234, -0.0169907, 0.00398826} ;
607 nonLinearCorrCoefficLG = {{ {{{0},
620 zdcDataAnalyzer->SetNonlinCorrParams(1000, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
622 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
623 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
624 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
625 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
626 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
628 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
629 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
630 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
631 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
639 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
640 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
641 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
642 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
644 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
645 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
646 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
647 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
653 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
655 return zdcDataAnalyzer;
665 const int deriv2ndThreshDSHG = -45;
666 const int deriv2ndThreshDSLG = -10;
667 const unsigned int peakSample = 10;
669 const float deltaTcutLow = -10;
670 const float deltaTcutHigh = 10;
671 const float chisqDivAmpCutHGVal = 30;
672 const float chisqDivAmpCutLGVal = 50;
682 {1.35, 1.4, 1.3, 1.1}}};
689 for (
size_t side : {0, 1}) {
690 for (
size_t module : {0, 1, 2, 3}) {
691 fixTau1Arr[side][module] =
true;
692 fixTau2Arr[side][module] =
false;
694 peak2ndDerivMinSamples[side][module] = peakSample;
695 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
696 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
698 deltaT0CutLow[side][module] = deltaTcutLow;
699 deltaT0CutHigh[side][module] = deltaTcutHigh;
700 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
701 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
705 ATH_MSG_DEBUG(
"PbPb2024: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
712 peak2ndDerivMinSamples,
713 peak2ndDerivMinThresholdsHG,
714 peak2ndDerivMinThresholdsLG,
716 zdcDataAnalyzer->set2ndDerivStep(2);
717 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
722 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
730 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
738 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
739 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
740 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
745 {-30, -30, -30, -30},}};
750 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
754 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
755 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
759 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
761 nonLinearCorrCoefficHG[0][0] = {-0.0225871, 0.00702802, 0.00201155, -0.00675293, 0.00186212} ;
762 nonLinearCorrCoefficHG[0][1] = {-0.0155562, 0.00594092, 0.00382112, -0.00665466, 0.00143384} ;
763 nonLinearCorrCoefficHG[0][2] = {-0.0313621, 0.0134528, 0.00529013, -0.0111751, 0.0029913} ;
764 nonLinearCorrCoefficHG[0][3] = {-0.025108, 0.00301898, 0.022472, -0.0204288, 0.00453215} ;
765 nonLinearCorrCoefficHG[1][0] = {-0.0266648, 0.0106792, -0.00939959, 0.000833011, 0.000199051} ;
766 nonLinearCorrCoefficHG[1][1] = {-0.0246541, 0.000327376, 0.00754946, -0.00710273, 0.00136899} ;
767 nonLinearCorrCoefficHG[1][2] = {-0.0175283, 0.0127954, 0.000235749, -0.00769698, 0.00221995} ;;
768 nonLinearCorrCoefficHG[1][3] = {-0.0279931, 0.0188122, 0.0126234, -0.0169907, 0.00398826} ;
772 nonLinearCorrCoefficHG = {{ {{{0},
784 zdcDataAnalyzer->SetNonlinCorrParams(1000, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
786 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
787 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
788 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
789 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
790 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
792 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
793 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
794 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
795 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
803 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
804 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
805 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
806 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
808 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
809 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
810 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
811 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
816 std::array< std::array< std::array<float,6>, 3>, 2> nlCalib = {{
817 {{ {{0.3, 1, -0.00753349, 0.882218, 0.019739, 1.0803}},{{0.3, 1, 0.0181165, 0.620646, -0.171213, 2.2143}},{{0.25, 1, -0.108547, 0.106, -1.3594, 4.1509}} }},
818 {{ {{0.3, 1, -0.00753349, 0.882218, 0.019739, 1.0803}},{{0.3, 1, 0.0181165, 0.620646, -0.171213, 2.2143}},{{0.25, 1, -0.108547, 0.106, -1.3594, 4.1509}} }}
821 zdcDataAnalyzer->SetNLcalibParams(nlCalib);
824 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
826 return zdcDataAnalyzer;
836 const int deriv2ndThreshDSHG = -45;
837 const int deriv2ndThreshDSLG = -10;
838 const unsigned int peakSample = 10;
840 const float deltaTcutLow = -10;
841 const float deltaTcutHigh = 10;
842 const float chisqDivAmpCutHGVal = 30;
843 const float chisqDivAmpCutLGVal = 50;
853 {1.35, 1.4, 1.3, 1.1}}};
860 for (
size_t side : {0, 1}) {
861 for (
size_t module : {0, 1, 2, 3}) {
862 fixTau1Arr[side][module] =
true;
863 fixTau2Arr[side][module] =
false;
865 peak2ndDerivMinSamples[side][module] = peakSample;
866 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
867 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
869 deltaT0CutLow[side][module] = deltaTcutLow;
870 deltaT0CutHigh[side][module] = deltaTcutHigh;
871 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
872 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
876 ATH_MSG_DEBUG(
"PbPb2024: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
883 peak2ndDerivMinSamples,
884 peak2ndDerivMinThresholdsHG,
885 peak2ndDerivMinThresholdsLG,
887 zdcDataAnalyzer->set2ndDerivStep(1);
888 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
893 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
901 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
909 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
910 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
911 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
916 {-30, -30, -30, -30},}};
921 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
925 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
926 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
930 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
932 nonLinearCorrCoefficHG[0][0] = {-0.0225871, 0.00702802, 0.00201155, -0.00675293, 0.00186212} ;
933 nonLinearCorrCoefficHG[0][1] = {-0.0155562, 0.00594092, 0.00382112, -0.00665466, 0.00143384} ;
934 nonLinearCorrCoefficHG[0][2] = {-0.0313621, 0.0134528, 0.00529013, -0.0111751, 0.0029913} ;
935 nonLinearCorrCoefficHG[0][3] = {-0.025108, 0.00301898, 0.022472, -0.0204288, 0.00453215} ;
936 nonLinearCorrCoefficHG[1][0] = {-0.0266648, 0.0106792, -0.00939959, 0.000833011, 0.000199051} ;
937 nonLinearCorrCoefficHG[1][1] = {-0.0246541, 0.000327376, 0.00754946, -0.00710273, 0.00136899} ;
938 nonLinearCorrCoefficHG[1][2] = {-0.0175283, 0.0127954, 0.000235749, -0.00769698, 0.00221995} ;;
939 nonLinearCorrCoefficHG[1][3] = {-0.0279931, 0.0188122, 0.0126234, -0.0169907, 0.00398826} ;
943 nonLinearCorrCoefficHG = {{ {{{0},
955 zdcDataAnalyzer->SetNonlinCorrParams(1000, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
957 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
958 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
959 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
960 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
961 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
963 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
964 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
965 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
966 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
974 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
975 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
976 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
977 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
979 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
980 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
981 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
982 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
989 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
999 std::array< std::array< std::array<float,6>, 3>, 2> nlCalib = {{
1000 {{ {{0.3, 1, -0.00753349, 0.882218, 0.019739, 1.0803}},{{0.3, 1, 0.0181165, 0.620646, -0.171213, 2.2143}},{{0.25, 1, -0.108547, 0.106, -1.3594, 4.1509}} }},
1001 {{ {{0.3, 1, -0.00753349, 0.882218, 0.019739, 1.0803}},{{0.3, 1, 0.0181165, 0.620646, -0.171213, 2.2143}},{{0.25, 1, -0.108547, 0.106, -1.3594, 4.1509}} }}
1004 zdcDataAnalyzer->SetNLcalibParams(nlCalib);
1006 return zdcDataAnalyzer;
1016 const int deriv2ndThreshDSHG = -45;
1017 const int deriv2ndThreshDSLG = -10;
1018 const unsigned int peakSample = 10;
1020 const float deltaTcutLow = -10;
1021 const float deltaTcutHigh = 10;
1022 const float chisqDivAmpCutHGVal = 30;
1023 const float chisqDivAmpCutLGVal = 50;
1033 {1.35, 1.4, 1.3, 1.1}}};
1040 for (
size_t side : {0, 1}) {
1041 for (
size_t module : {0, 1, 2, 3}) {
1042 fixTau1Arr[side][module] =
true;
1043 fixTau2Arr[side][module] =
false;
1045 peak2ndDerivMinSamples[side][module] = peakSample;
1046 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1047 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1049 deltaT0CutLow[side][module] = deltaTcutLow;
1050 deltaT0CutHigh[side][module] = deltaTcutHigh;
1051 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1052 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1056 ATH_MSG_DEBUG(
"PbPb2024: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1063 peak2ndDerivMinSamples,
1064 peak2ndDerivMinThresholdsHG,
1065 peak2ndDerivMinThresholdsLG,
1067 zdcDataAnalyzer->set2ndDerivStep(1);
1068 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
1073 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1081 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1089 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1090 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1091 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1096 {-30, -30, -30, -30},}};
1101 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
1105 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
1106 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
1110 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
1112 nonLinearCorrCoefficHG[0][0] = {-0.0225871, 0.00702802, 0.00201155, -0.00675293, 0.00186212} ;
1113 nonLinearCorrCoefficHG[0][1] = {-0.0155562, 0.00594092, 0.00382112, -0.00665466, 0.00143384} ;
1114 nonLinearCorrCoefficHG[0][2] = {-0.0313621, 0.0134528, 0.00529013, -0.0111751, 0.0029913} ;
1115 nonLinearCorrCoefficHG[0][3] = {-0.025108, 0.00301898, 0.022472, -0.0204288, 0.00453215} ;
1116 nonLinearCorrCoefficHG[1][0] = {-0.0266648, 0.0106792, -0.00939959, 0.000833011, 0.000199051} ;
1117 nonLinearCorrCoefficHG[1][1] = {-0.0246541, 0.000327376, 0.00754946, -0.00710273, 0.00136899} ;
1118 nonLinearCorrCoefficHG[1][2] = {-0.0175283, 0.0127954, 0.000235749, -0.00769698, 0.00221995} ;;
1119 nonLinearCorrCoefficHG[1][3] = {-0.0279931, 0.0188122, 0.0126234, -0.0169907, 0.00398826} ;
1123 nonLinearCorrCoefficHG = {{ {{{0},
1135 zdcDataAnalyzer->SetNonlinCorrParams(1000, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
1137 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
1138 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
1139 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
1140 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
1141 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
1143 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
1144 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
1145 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
1146 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
1154 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
1155 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
1156 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
1157 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
1159 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
1160 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
1161 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
1162 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
1169 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1171 zdcDataAnalyzer->disableModule(0, 0);
1173 return zdcDataAnalyzer;
1183 const int deriv2ndThreshDSHG = -45;
1184 const int deriv2ndThreshDSLG = -10;
1185 const unsigned int peakSample = 10;
1187 const float deltaTcutLow = -10;
1188 const float deltaTcutHigh = 10;
1189 const float chisqDivAmpCutHGVal = 30;
1190 const float chisqDivAmpCutLGVal = 50;
1200 {1.35, 1.4, 1.3, 1.1}}};
1207 for (
size_t side : {0, 1}) {
1208 for (
size_t module : {0, 1, 2, 3}) {
1209 fixTau1Arr[side][module] =
true;
1210 fixTau2Arr[side][module] =
false;
1212 peak2ndDerivMinSamples[side][module] = peakSample;
1213 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1214 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1216 deltaT0CutLow[side][module] = deltaTcutLow;
1217 deltaT0CutHigh[side][module] = deltaTcutHigh;
1218 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1219 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1223 ATH_MSG_DEBUG(
"PbPb2024: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1230 peak2ndDerivMinSamples,
1231 peak2ndDerivMinThresholdsHG,
1232 peak2ndDerivMinThresholdsLG,
1234 zdcDataAnalyzer->set2ndDerivStep(1);
1235 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
1240 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1248 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1256 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1257 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1258 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1263 {-30, -30, -30, -30},}};
1268 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
1272 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
1273 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
1277 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
1279 nonLinearCorrCoefficHG[0][0] = {-0.0225871, 0.00702802, 0.00201155, -0.00675293, 0.00186212} ;
1280 nonLinearCorrCoefficHG[0][1] = {-0.0155562, 0.00594092, 0.00382112, -0.00665466, 0.00143384} ;
1281 nonLinearCorrCoefficHG[0][2] = {-0.0313621, 0.0134528, 0.00529013, -0.0111751, 0.0029913} ;
1282 nonLinearCorrCoefficHG[0][3] = {-0.025108, 0.00301898, 0.022472, -0.0204288, 0.00453215} ;
1283 nonLinearCorrCoefficHG[1][0] = {-0.0266648, 0.0106792, -0.00939959, 0.000833011, 0.000199051} ;
1284 nonLinearCorrCoefficHG[1][1] = {-0.0246541, 0.000327376, 0.00754946, -0.00710273, 0.00136899} ;
1285 nonLinearCorrCoefficHG[1][2] = {-0.0175283, 0.0127954, 0.000235749, -0.00769698, 0.00221995} ;;
1286 nonLinearCorrCoefficHG[1][3] = {-0.0279931, 0.0188122, 0.0126234, -0.0169907, 0.00398826} ;
1290 nonLinearCorrCoefficHG = {{ {{{0},
1302 zdcDataAnalyzer->SetNonlinCorrParams(1000, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
1304 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
1305 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
1306 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
1307 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
1308 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
1310 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
1311 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
1312 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
1313 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
1321 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
1322 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
1323 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
1324 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
1326 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
1327 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
1328 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
1329 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
1336 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1338 zdcDataAnalyzer->disableModule(0, 0);
1340 return zdcDataAnalyzer;
1350 const int deriv2ndThreshDSHG = -10;
1351 const int deriv2ndThreshDSLG = -10;
1352 const unsigned int peakSample = 10;
1354 const float deltaTcutLow = -50;
1355 const float deltaTcutHigh = 50;
1356 const float chisqDivAmpCutHGVal = 30;
1357 const float chisqDivAmpCutLGVal = 50;
1367 {1.35, 1.4, 1.3, 1.1}}};
1374 for (
size_t side : {0, 1}) {
1375 for (
size_t module : {0, 1, 2, 3}) {
1376 fixTau1Arr[side][module] =
false;
1377 fixTau2Arr[side][module] =
true;
1379 peak2ndDerivMinSamples[side][module] = peakSample;
1380 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1381 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1383 deltaT0CutLow[side][module] = deltaTcutLow;
1384 deltaT0CutHigh[side][module] = deltaTcutHigh;
1385 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1386 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1390 ATH_MSG_DEBUG(
"PbPb2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1397 peak2ndDerivMinSamples,
1398 peak2ndDerivMinThresholdsHG,
1399 peak2ndDerivMinThresholdsLG,
1401 zdcDataAnalyzer->set2ndDerivStep(2);
1402 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(10);
1407 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1415 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1423 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1424 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1425 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1429 zdcDataAnalyzer->enablePreExclusion(4, 500, 200);
1430 zdcDataAnalyzer->enablePostExclusion(4, 300, 200);
1433 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
1434 timeCorrCoefficHG[0][0] = {0.07, -0.020672, 0.070206, 0.004961, -0.010821, -0.001835};
1435 timeCorrCoefficHG[0][1] = {0.04, -0.012961, 0.008204, 0.010771, 0.011593, 0.002045};
1436 timeCorrCoefficHG[0][2] = {0.04, 0.017393, 0.017597, 0.003736, -0.001696, -0.000465};
1437 timeCorrCoefficHG[0][3] = {0.04, 0.018463, 0.009862, -0.000277, -0.000268, 0.000192};
1439 timeCorrCoefficHG[1][0] = {0.13, -0.106068, 0.078153, 0.034479, -0.004964, -0.001688};
1440 timeCorrCoefficHG[1][1] = {0.03, -0.007518, 0.008937, 0.015319, 0.012290, 0.001889};
1441 timeCorrCoefficHG[1][2] = {-0.01, 0.006711, -0.001652, -0.004223, -0.000573, 0.000161};
1442 timeCorrCoefficHG[1][3] = {0.015, 0.017993, 0.006339, 0.003122, 0.002980, 0.000735};
1450 timeCorrCoefficLG[0][0] = {0.035f+3.25f, -0.126189, 0.022724, 0.039116, -0.098255};
1451 timeCorrCoefficLG[0][1] = {0.022f+3.25f, -0.165988, -0.014125, 0.057323, -0.205109};
1452 timeCorrCoefficLG[0][2] = {0.01f+3.25f, -0.136087, -0.007248, -0.014452, -0.060469};
1453 timeCorrCoefficLG[0][3] = {0.0f+3.25f, -0.131067, 0.025579, 0.059994, -0.065595};
1455 timeCorrCoefficLG[1][0] = {0.076f+3.25f, -0.300587, -0.041827, 0.641108, -0.594157};
1456 timeCorrCoefficLG[1][1] = {0.057f+3.25f, -0.223443, -0.125013, -0.176900, 0.348081};
1457 timeCorrCoefficLG[1][2] = {0.015f+3.25f, -0.141721, 0.023936, 0.099657, -0.188526};
1458 timeCorrCoefficLG[1][3] = {0.01f+3.25f, -0.152589, 0.016122, -0.086580, 0.563625};
1464 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1466 return zdcDataAnalyzer;
1476 const int deriv2ndThreshDSHG = -25;
1477 const int deriv2ndThreshDSLG = -10;
1478 const unsigned int peakSample = 10;
1480 const float deltaTcutLow = -10;
1481 const float deltaTcutHigh = 10;
1482 const float chisqDivAmpCutHGVal = 30;
1483 const float chisqDivAmpCutLGVal = 50;
1499 for (
size_t side : {0, 1}) {
1500 for (
size_t module : {0, 1, 2, 3}) {
1501 fixTau1Arr[side][module] =
false;
1502 fixTau2Arr[side][module] =
true;
1504 peak2ndDerivMinSamples[side][module] = peakSample;
1505 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1506 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1508 deltaT0CutLow[side][module] = deltaTcutLow;
1509 deltaT0CutHigh[side][module] = deltaTcutHigh;
1510 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1511 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1515 ATH_MSG_DEBUG(
"PbPb2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1522 peak2ndDerivMinSamples,
1523 peak2ndDerivMinThresholdsHG,
1524 peak2ndDerivMinThresholdsLG,
1527 zdcDataAnalyzer->set2ndDerivStep(2);
1528 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
1533 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1541 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1549 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1550 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1551 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1555 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1557 return zdcDataAnalyzer;
1567 const int deriv2ndThreshDSHG = -25;
1568 const int deriv2ndThreshDSLG = -10;
1569 const unsigned int peakSample = 10;
1571 const float deltaTcutLow = -10;
1572 const float deltaTcutHigh = 10;
1573 const float chisqDivAmpCutHGVal = 30;
1574 const float chisqDivAmpCutLGVal = 50;
1590 for (
size_t side : {0, 1}) {
1591 for (
size_t module : {0, 1, 2, 3}) {
1592 fixTau1Arr[side][module] =
false;
1593 fixTau2Arr[side][module] =
true;
1595 peak2ndDerivMinSamples[side][module] = peakSample;
1596 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1597 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1599 deltaT0CutLow[side][module] = deltaTcutLow;
1600 deltaT0CutHigh[side][module] = deltaTcutHigh;
1601 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1602 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1606 ATH_MSG_DEBUG(
"PbPb2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1613 peak2ndDerivMinSamples,
1614 peak2ndDerivMinThresholdsHG,
1615 peak2ndDerivMinThresholdsLG,
1618 zdcDataAnalyzer->set2ndDerivStep(2);
1619 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
1624 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1632 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1640 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1641 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1642 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1646 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1648 return zdcDataAnalyzer;
1658 const int deriv2ndThreshDSHG = -25;
1659 const int deriv2ndThreshDSLG = -10;
1660 const unsigned int peakSample = 10;
1662 const float deltaTcutLow = -10;
1663 const float deltaTcutHigh = 10;
1664 const float chisqDivAmpCutHGVal = 30;
1665 const float chisqDivAmpCutLGVal = 50;
1675 {1.1, 1.1, 1.1, 1.1}}};
1682 for (
size_t side : {0, 1}) {
1683 for (
size_t module : {0, 1, 2, 3}) {
1684 fixTau1Arr[side][module] =
false;
1685 fixTau2Arr[side][module] =
false;
1687 peak2ndDerivMinSamples[side][module] = peakSample;
1688 peak2ndDerivMinThresholdsHG[side][module] = deriv2ndThreshDSHG;
1689 peak2ndDerivMinThresholdsLG[side][module] = deriv2ndThreshDSLG;
1691 deltaT0CutLow[side][module] = deltaTcutLow;
1692 deltaT0CutHigh[side][module] = deltaTcutHigh;
1693 chisqDivAmpCutLG[side][module] = chisqDivAmpCutLGVal;
1694 chisqDivAmpCutHG[side][module] = chisqDivAmpCutHGVal;
1698 ATH_MSG_DEBUG(
"PbPb2023: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1705 peak2ndDerivMinSamples,
1706 peak2ndDerivMinThresholdsHG,
1707 peak2ndDerivMinThresholdsLG,
1709 zdcDataAnalyzer->set2ndDerivStep(2);
1710 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(3);
1715 zdcDataAnalyzer->SetGainFactorsHGLG(gainsHG, gainsLG);
1723 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
1731 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1732 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2, t0HG, t0LG);
1733 zdcDataAnalyzer->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1738 {-10, -10, -10, -10}}};
1743 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
1752 std::array<std::array<std::vector<float>, 4>, 2> nonLinearCorrCoefficHG, nonLinearCorrCoefficLG;
1754 nonLinearCorrCoefficHG = {{ {{{0},
1765 nonLinearCorrCoefficLG = {{ {{{0},
1775 zdcDataAnalyzer->SetNonlinCorrParams(0, 1000, nonLinearCorrCoefficHG, nonLinearCorrCoefficLG);
1777 std::array<std::array<std::vector<float>, 4>, 2> timeCorrCoefficHG, timeCorrCoefficLG;
1778 timeCorrCoefficHG[0][0] = {};
1779 timeCorrCoefficHG[0][1] = {};
1780 timeCorrCoefficHG[0][2] = {};
1781 timeCorrCoefficHG[0][3] = {};
1783 timeCorrCoefficHG[1][0] = {};
1784 timeCorrCoefficHG[1][1] = {};
1785 timeCorrCoefficHG[1][2] = {};
1786 timeCorrCoefficHG[1][3] = {};
1788 timeCorrCoefficLG[0][0] = {};
1789 timeCorrCoefficLG[0][1] = {};
1790 timeCorrCoefficLG[0][2] = {};
1791 timeCorrCoefficLG[0][3] = {};
1793 timeCorrCoefficLG[1][0] = {};
1794 timeCorrCoefficLG[1][1] = {};
1795 timeCorrCoefficLG[1][2] = {};
1796 timeCorrCoefficLG[1][3] = {};
1802 zdcDataAnalyzer->SetFitMinMaxAmpValues(2, 2, 6000, 6000);
1804 return zdcDataAnalyzer;
1828 for (
size_t side : {0, 1}) {
1829 for (
size_t module : {0, 1, 2, 3}) {
1832 tau1[side][module] =
m_tau1;
1833 tau2[side][module] =
m_tau2;
1846 ATH_MSG_DEBUG(
"Default: delta t cut, value low = " << deltaT0CutLow[0][0] <<
", high = " << deltaT0CutHigh[0][0] );
1855 peak2ndDerivMinThresholdsHG, peak2ndDerivMinThresholdsLG,
m_lowGainMode));
1857 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1858 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1, tau2,
t0,
t0);
1859 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, deltaT0CutLow, deltaT0CutHigh, deltaT0CutLow, deltaT0CutHigh);
1864 zdcDataAnalyzer->enableDelayed(
m_delayDeltaT, defaultPedestalShifts);
1867 return zdcDataAnalyzer;
1878 const int peakSample = 4;
1879 const float peak2ndDerivThreshHG = -12;
1880 const float peak2ndDerivThreshLG = -10;
1882 {4.000, 4.000, 4.000, 4.000}}};
1884 {25.11, 25.08, 25.18, 25.48}}};
1887 {57.28, 57.29, 57.31, 57.33}}};
1889 {57.28, 57.29, 57.31, 57.33}}};
1897 for (
size_t side : {0, 1}) {
1898 for (
size_t module : {0, 1, 2, 3}) {
1899 fixTau1Arr[side][module] =
true;
1900 fixTau2Arr[side][module] =
true;
1902 peak2ndDerivMinSamples[side][module] = peakSample;
1903 peak2ndDerivMinThresholdsHG[side][module] = peak2ndDerivThreshHG;
1904 peak2ndDerivMinThresholdsLG[side][module] = peak2ndDerivThreshLG;
1906 chisqDivAmpCut[side][module] = 15;
1917 peak2ndDerivMinThresholdsHG, peak2ndDerivMinThresholdsLG,
m_lowGainMode));
1921 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(1);
1923 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
1924 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1Arr, tau2Arr, t0HG, t0LG);
1925 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, DeltaT0CutLowHG, DeltaT0CutHighHG, DeltaT0CutLowLG, DeltaT0CutHighLG);
1927 zdcDataAnalyzer->SetFitTimeMax(85);
1929 return zdcDataAnalyzer;
1945 const int peakSample = 5;
1946 const float peak2ndDerivThreshHG = -12;
1947 const float peak2ndDerivThreshLG = -10;
1949 {4.472, 4.656, 3.871, 4.061}
1953 {24.17, 24.22, 25.46, 24.45}
1957 {75.11, 74.94, 73.93, 74.45}
1960 {76.28, 76.07, 74.98, 76.54}
1970 for (
size_t side : {0, 1}) {
1971 for (
size_t module : {0, 1, 2, 3}) {
1972 fixTau1Arr[side][module] =
true;
1973 fixTau2Arr[side][module] =
true;
1975 peak2ndDerivMinSamples[side][module] = peakSample;
1976 peak2ndDerivMinThresholdsHG[side][module] = peak2ndDerivThreshHG;
1977 peak2ndDerivMinThresholdsLG[side][module] = peak2ndDerivThreshLG;
1979 chisqDivAmpCut[side][module] = 15;
1987 std::array<std::array<std::vector<float>, 4>, 2> slewingParamsHG, slewingParamsLG;
1989 slewingParamsHG[0][0] = {0, 0, 0, 0};
1990 slewingParamsHG[0][1] = { -4.780244e-01, -7.150874e-02, 4.614585e-02, 8.015731e-04};
1991 slewingParamsHG[0][2] = { -5.253412e-01, -5.718167e-02, 5.243121e-02, 2.128398e-03};
1992 slewingParamsHG[0][3] = { -5.773952e-01, -5.687478e-02, 4.564267e-02, 1.462294e-03};
1994 slewingParamsHG[1][0] = { 7.105115e-01, -3.686143e-02, 7.727447e-02, 5.924152e-03};
1995 slewingParamsHG[1][1] = { 4.052120e-02, 4.450686e-03, 8.031615e-02, 4.038097e-03};
1996 slewingParamsHG[1][2] = { 3.389476e-02, -2.056782e-02, 4.805321e-02, -2.627999e-03};
1997 slewingParamsHG[1][3] = { 2.069765e-01, -2.890419e-02, 6.084375e-02, 3.742011e-03};
1999 slewingParamsLG[0][0] = {0, 0, 0, 0};
2000 slewingParamsLG[0][1] = { -1.632547e+00, -4.827813e-01, -1.379131e-01, -2.522607e-02};
2001 slewingParamsLG[0][2] = { -7.254288e+00, -5.454064e+00, -1.619126e+00, -1.739665e-01};
2002 slewingParamsLG[0][3] = { -1.548400e+01, -1.277708e+01, -3.729333e+00, -3.700458e-01};
2004 slewingParamsLG[1][0] = { 1.142767e-01, -3.608906e-02, 9.642735e-02, -3.097043e-03};
2005 slewingParamsLG[1][1] = { -5.615388e-01, -1.655047e-02, 8.327350e-02, -4.231348e-03};
2006 slewingParamsLG[1][2] = { -7.370728e-01, -2.887482e-02, 8.293875e-02, -4.482743e-03};
2007 slewingParamsLG[1][3] = { -1.270636e+00, -2.791777e-01, -5.807295e-02, -2.332612e-02};
2014 peak2ndDerivMinThresholdsHG, peak2ndDerivMinThresholdsLG,
m_lowGainMode));
2018 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(1);
2022 zdcDataAnalyzer->disableModule(0, 0);
2024 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
2025 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1Arr, tau2Arr, t0HG, t0LG);
2026 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, DeltaT0CutLowHG, DeltaT0CutHighHG, DeltaT0CutLowLG, DeltaT0CutHighLG);
2034 zdcDataAnalyzer->enableDelayed(-12.5, defaultPedestalShifts);
2035 zdcDataAnalyzer->SetFitTimeMax(140);
2037 slewingParamsHG, slewingParamsLG);
2040 return zdcDataAnalyzer;
2050 static constexpr int peakSample = 5;
2051 static constexpr float peak2ndDerivThreshHG = -35;
2052 static constexpr float peak2ndDerivThreshLG = -20;
2053 static constexpr float peak2ndDerivRepassHG = -10;
2054 static constexpr float peak2ndDerivRepassLG = -6;
2057 {4.296, 4.064, 3.497, 3.642}
2061 {24.42, 24.99, 25.72, 25.29}
2065 {74.18, 72.79, 71.77, 72.62}
2068 {75.16, 73.71, 72.25, 73.61}
2072 {0.3216, 0.2593, 0.2511, 0.1680}
2081 for (
size_t side : {0, 1}) {
2082 for (
size_t module : {0, 1, 2, 3}) {
2083 fixTau1Arr[side][module] =
true;
2084 fixTau2Arr[side][module] =
true;
2086 peak2ndDerivMinSamples[side][module] = peakSample;
2087 peak2ndDerivMinThresholdsHG[side][module] = peak2ndDerivThreshHG;
2088 peak2ndDerivMinThresholdsLG[side][module] = peak2ndDerivThreshLG;
2089 peak2ndDerivMinRepassHG [side][module] = peak2ndDerivRepassHG;
2090 peak2ndDerivMinRepassLG [side][module] = peak2ndDerivRepassLG;
2092 chisqDivAmpCut[side][module] = 15;
2104 std::array<std::array<std::vector<float>, 4>, 2> slewingParamsHG, slewingParamsLG;
2106 slewingParamsHG[0][0] = { -1.335560e-01, -6.071869e-03, 5.858193e-02, 2.473300e-03};
2107 slewingParamsHG[0][1] = { -1.223062e-01, -4.379469e-02, 4.452285e-02, 2.130210e-03};
2108 slewingParamsHG[0][2] = { -1.021415e-01, -4.254239e-02, 4.939866e-02, 3.849738e-03};
2109 slewingParamsHG[0][3] = { -8.234056e-02, -3.938803e-02, 4.689029e-02, 2.784816e-03};
2111 slewingParamsHG[1][0] = { -1.640979e-01, -2.780350e-02, 5.755065e-02, -4.244651e-04};
2112 slewingParamsHG[1][1] = { -1.422324e-01, 2.663803e-02, 7.295366e-02, 3.740496e-03};
2113 slewingParamsHG[1][2] = { -9.858124e-02, -2.426132e-02, 4.895967e-02, 2.291393e-03};
2114 slewingParamsHG[1][3] = { -1.070401e-01, -2.256383e-03, 5.833770e-02, 2.255208e-03};
2116 slewingParamsLG[0][0] = { -2.588446e-01, -3.241086e-02, 7.828661e-02, 1.945547e-03};
2117 slewingParamsLG[0][1] = { -3.112495e-01, -7.419508e-02, 6.825776e-02, 2.148860e-03};
2118 slewingParamsLG[0][2] = { -3.470650e-01, -5.836748e-02, 6.204396e-02, 1.550421e-03};
2119 slewingParamsLG[0][3] = { -4.485435e-01, -4.603790e-02, 5.944799e-02, -1.174585e-03};
2121 slewingParamsLG[1][0] = { -3.291676e-01, -4.023732e-02, 8.608755e-02, -3.958167e-03};
2122 slewingParamsLG[1][1] = { -2.608969e-01, -2.129786e-03, 6.930791e-02, -4.141910e-03};
2123 slewingParamsLG[1][2] = { -2.505712e-01, -2.195804e-02, 5.137261e-02, -4.058378e-03};
2124 slewingParamsLG[1][3] = { -5.083206e-01, 3.776601e-02, 1.284275e-01, 1.014067e-02};
2130 std::unique_ptr<ZDCDataAnalyzer> zdcDataAnalyzer = std::make_unique<ZDCDataAnalyzer>(
MakeMessageFunction(), 7, 25, 0,
"FermiExpLinear", peak2ndDerivMinSamples,
2131 peak2ndDerivMinThresholdsHG, peak2ndDerivMinThresholdsLG,
m_lowGainMode);
2135 zdcDataAnalyzer->SetPeak2ndDerivMinTolerances(1);
2140 zdcDataAnalyzer->SetADCOverUnderflowValues(HGOverFlowADC, HGUnderFlowADC, LGOverFlowADC);
2141 zdcDataAnalyzer->SetTauT0Values(fixTau1Arr, fixTau2Arr, tau1Arr, tau2Arr, t0HG, t0LG);
2142 zdcDataAnalyzer->SetModuleAmpFractionLG(moduleAmpFractionLG);
2143 zdcDataAnalyzer->SetCutValues(chisqDivAmpCut, chisqDivAmpCut, DeltaT0CutLowHG, DeltaT0CutHighHG, DeltaT0CutLowLG, DeltaT0CutHighLG);
2153 {{ -12.5, -12.5, -12.5, -12.5}}
2157 zdcDataAnalyzer->enableDelayed(delayDeltaTs, defaultPedestalShifts);
2158 zdcDataAnalyzer->SetFitTimeMax(140);
2159 zdcDataAnalyzer->enableRepass(peak2ndDerivMinRepassHG, peak2ndDerivMinRepassLG);
2161 slewingParamsHG, slewingParamsLG);
2164 zdcDataAnalyzer->SetNoiseSigmas(noiseSigmasHG, noiseSigmasLG);
2166 return zdcDataAnalyzer;
2175 {{5.0, 3.7, 3.5, 3.5}}
2181 {{19.1, 21.9, 22.6, 23.4}}
2207 bool fixTau1 =
true;
2208 bool fixTau2 =
true;
2210 for (
size_t side : {0, 1}) {
2211 for (
size_t module : {0, 1, 2, 3}) {
2212 fixTau1Arr[side][module] = fixTau1;
2213 fixTau2Arr[side][module] = fixTau2;
2218 {{46.314, 42.267, 50.327, 41.605}}
2222 {{44.295, 41.755, 48.081, 40.175}}
2234 std::array<std::array<std::vector<float>, 4>, 2> slewingParamsHG, slewingParamsLG;
2236 slewingParamsHG[0][0] = {0, -7.904e-02, 4.686e-02, 1.530e-03 };
2237 slewingParamsHG[0][1] = {0, 2.250e-02, 4.732e-02, 6.050e-03 };
2238 slewingParamsHG[0][2] = {0, 4.388e-02, 6.707e-02, -5.526e-05 };
2239 slewingParamsHG[0][3] = {0, 1.205e-01, 2.726e-02, 2.610e-03 };
2241 slewingParamsHG[1][0] = {0, 6.861e-02, 5.175e-03, -9.018e-04 };
2242 slewingParamsHG[1][1] = {0, 3.855e-01, -4.442e-02, -2.022e-02 };
2243 slewingParamsHG[1][2] = {0, -4.337e-03, 3.841e-02, 4.661e-03 };
2244 slewingParamsHG[1][3] = {0, 3.623e-01, -3.882e-02, -1.805e-02 };
2246 slewingParamsLG[0][0] = {0, 1.708e-02, 7.929e-02, 5.079e-03 };
2247 slewingParamsLG[0][1] = {0, 1.406e-01, 1.209e-01, -1.922e-04 };
2248 slewingParamsLG[0][2] = {0, 1.762e-01, 1.118e-01, 1.679e-04 };
2249 slewingParamsLG[0][3] = {0, 1.361e-02, -2.685e-02, -4.168e-02 };
2251 slewingParamsLG[1][0] = {0, 1.962e-01, -5.025e-03, -2.001e-02 };
2252 slewingParamsLG[1][1] = {0, 3.258e-01, 1.229e-02, -2.925e-02 };
2253 slewingParamsLG[1][2] = {0, 1.393e-01, 8.113e-02, -2.594e-03 };
2254 slewingParamsLG[1][3] = {0, 1.939e-01, 2.188e-02, -5.579e-02 };
2257 peak2ndDerivMinThresholdsHG, peak2ndDerivMinThresholdsLG,
m_lowGainMode));
2261 m_zdcDataAnalyzer_40MHz->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, DeltaT0CutLowHG, DeltaT0CutHighHG, DeltaT0CutLowLG, DeltaT0CutHighLG);
2263 slewingParamsHG, slewingParamsLG);
2265 std::array<std::array<std::vector<float>, 4>, 2> moduleHGNonLinCorr, moduleLGNonLinCorr;
2266 moduleHGNonLinCorr[0][0] = { -3.76800e-02, 4.63597e-02};
2267 moduleHGNonLinCorr[0][1] = { -1.02185e-01, -1.17548e-01};
2268 moduleHGNonLinCorr[0][2] = { -8.78451e-02, -1.52174e-01};
2269 moduleHGNonLinCorr[0][3] = { -1.04835e-01, -1.96514e-01};
2270 moduleHGNonLinCorr[1][0] = { -6.83115e-02, 3.57802e-02};
2271 moduleHGNonLinCorr[1][1] = { -1.08162e-01, -1.91413e-01};
2272 moduleHGNonLinCorr[1][2] = { -7.82514e-02, -1.21218e-01};
2273 moduleHGNonLinCorr[1][3] = { -2.34354e-02, -2.52033e-01};
2275 moduleLGNonLinCorr = {{ {{{0},
2315 bool fixTau1 =
true;
2316 bool fixTau2 =
true;
2318 for (
size_t side : {0, 1}) {
2319 for (
size_t module : {0, 1, 2, 3}) {
2320 fixTau1Arr[side][module] = fixTau1;
2321 fixTau2Arr[side][module] = fixTau2;
2326 {{4.2, 3.6, 3.3, 3.4}}
2331 {{19.1, 21.9, 22.6, 23.4}}
2336 {{36.0, 31.1, 40.75, 30.5}}
2341 {{33.7, 29.9, 39.0, 29.3}}
2352 std::array<std::array<std::vector<float>, 4>, 2> slewingParamsHG, slewingParamsLG;
2354 slewingParamsHG[0][0] = {0, -6.5e-2, 2.85e-2, -2.83e-3};
2355 slewingParamsHG[0][1] = {0, -5.5e-2, 5.13e-2, 5.6e-3};
2356 slewingParamsHG[0][2] = {0, -1.45e-3, 9.3e-2, 3.9e-3};
2357 slewingParamsHG[0][3] = {0, -2.36e-2, 8.3e-2, 1.1e-3};
2359 slewingParamsHG[1][0] = {0, -6.5e-2, 4.84e-2, -3.7e-3};
2360 slewingParamsHG[1][1] = {0, 1.34e-2, 6.57e-2, 5.37e-3};
2361 slewingParamsHG[1][2] = {0, -5.37e-2, 3.49e-2, 3.8e-3};
2362 slewingParamsHG[1][3] = {0, -3.3e-2, 3.9e-2, 2.2e-3};
2364 slewingParamsLG[0][0] = {0, -9.6e-2, 4.39e-2, 2.93e-3 };
2365 slewingParamsLG[0][1] = {0, -5.0e-2, 14.9e-2, 20.6e-3 };
2366 slewingParamsLG[0][2] = {0, -4.4e-2, 5.3e-2, 0, };
2367 slewingParamsLG[0][3] = {0, -9.90e-2, 4.08e-2, 0, };
2369 slewingParamsLG[1][0] = {0, -8.7e-2, 4.2e-2, -3.2e-3 };
2370 slewingParamsLG[1][1] = {0, -3.26e-2, 3.84e-2, -2.32e-3};
2371 slewingParamsLG[1][2] = {0, -26.8e-2, -2.64e-2, -5.3e-3 };
2372 slewingParamsLG[1][3] = {0, -13.2e-2, 0.45e-2, -2.4e-3 };
2380 m_zdcDataAnalyzer_80MHz->SetCutValues(chisqDivAmpCutHG, chisqDivAmpCutLG, DeltaT0CutLowHG, DeltaT0CutHighHG, DeltaT0CutLowLG, DeltaT0CutHighLG);
2382 slewingParamsHG, slewingParamsLG);
2384 std::array<std::array<std::vector<float>, 4>, 2> moduleHGNonLinCorr, moduleLGNonLinCorr;
2385 moduleHGNonLinCorr[0][0] = { -3.76800e-02, 4.63597e-02};
2386 moduleHGNonLinCorr[0][1] = { -1.02185e-01, -1.17548e-01};
2387 moduleHGNonLinCorr[0][2] = { -8.78451e-02, -1.52174e-01};
2388 moduleHGNonLinCorr[0][3] = { -1.04835e-01, -1.96514e-01};
2389 moduleHGNonLinCorr[1][0] = { -6.83115e-02, 3.57802e-02};
2390 moduleHGNonLinCorr[1][1] = { -1.08162e-01, -1.91413e-01};
2391 moduleHGNonLinCorr[1][2] = { -7.82514e-02, -1.21218e-01};
2392 moduleHGNonLinCorr[1][3] = { -2.34354e-02, -2.52033e-01};
2394 moduleLGNonLinCorr = {{ {{{0},
2644 if (moduleContainer.
size()==0)
return StatusCode::SUCCESS;
2647 if (!eventInfo.
isValid())
return StatusCode::FAILURE;
2654 return StatusCode::SUCCESS;
2659 unsigned int thisRunNumber = eventInfo->runNumber();
2661 ATH_MSG_DEBUG(
"ZDC analysis tool will be configured for run " << thisRunNumber);
2669 unsigned int calibRunNumber = thisRunNumber;
2675 catch(std::runtime_error&)
2685 unsigned int calibRunNumber = thisRunNumber;
2691 catch(std::runtime_error&)
2718 const std::vector<unsigned short>* adcUndelayLG = 0;
2719 const std::vector<unsigned short>* adcUndelayHG = 0;
2721 const std::vector<unsigned short>* adcDelayLG = 0;
2722 const std::vector<unsigned short>* adcDelayHG = 0;
2725 for (
const auto zdcModule : moduleContainer)
2728 if (zdcModule->zdcSide() == -1) side = 0;
2729 else if (zdcModule->zdcSide() == 1) side = 1;
2733 ATH_MSG_WARNING(
"Invalid side value found for module number: " << zdcModule->zdcModule() <<
", side value = " << side);
2737 if(zdcModule->zdcModule() > 4)
continue;
2739 if (zdcModule->zdcType() == 0) {
2745 adcUndelayLG = &g0dataAcc(*zdcModule);
2746 adcUndelayHG = &g1dataAcc(*zdcModule);
2759 adcUndelayLG = &g0d1dataAcc(*zdcModule);
2760 adcUndelayHG = &g1d1dataAcc(*zdcModule);
2761 adcDelayLG = &g0d0dataAcc(*zdcModule);
2762 adcDelayHG = &g1d0dataAcc(*zdcModule);
2766 adcUndelayLG = &g0d0dataAcc(*zdcModule);
2767 adcUndelayHG = &g1d0dataAcc(*zdcModule);
2768 adcDelayLG = &g0d1dataAcc(*zdcModule);
2769 adcDelayHG = &g1d1dataAcc(*zdcModule);
2775 return StatusCode::FAILURE;
2779 std::vector<float> HGUndelADCSamples(
m_numSample);
2780 std::vector<float> LGUndelADCSamples(
m_numSample);
2782 if (LGUndelADCSamples.size() < adcUndelayLG->size()) {
2783 LGUndelADCSamples.resize(adcUndelayLG->size());
2786 if (HGUndelADCSamples.size() < adcUndelayHG->size()) {
2787 HGUndelADCSamples.resize(adcUndelayHG->size());
2790 std::copy(adcUndelayLG->begin(), adcUndelayLG->end(), LGUndelADCSamples.begin());
2791 std::copy(adcUndelayHG->begin(), adcUndelayHG->end(), HGUndelADCSamples.begin());
2793 int side = (zdcModule->zdcSide() == -1) ? 0 : 1 ;
2796 m_zdcDataAnalyzer->LoadAndAnalyzeData(side, zdcModule->zdcModule(), HGUndelADCSamples, LGUndelADCSamples);
2799 std::vector<float> HGDelayADCSamples(
m_numSample);
2800 std::vector<float> LGDelayADCSamples(
m_numSample);
2801 if (adcDelayLG and adcDelayHG){
2802 std::copy(adcDelayLG->begin(), adcDelayLG->end(), LGDelayADCSamples.begin());
2803 std::copy(adcDelayHG->begin(), adcDelayHG->end(), HGDelayADCSamples.begin());
2805 ATH_MSG_ERROR(
"adcDelayLG or adcDelayHG pointers are null");
2806 return StatusCode::FAILURE;
2813 HGUndelADCSamples, LGUndelADCSamples,
2814 HGDelayADCSamples, LGDelayADCSamples);
2864 for (
const auto zdcModule : moduleContainer)
2866 int side = (zdcModule->zdcSide() == -1) ? 0 : 1 ;
2867 int mod = zdcModule->zdcModule();
2869 if(mod > 4)
continue;
2871 if (zdcModule->zdcType() == 0) {
2875 zdcModuleCalibEnergy(*zdcModule) = calibEnergy;
2876 zdcModuleCalibTime(*zdcModule) =
m_zdcDataAnalyzer->GetModuleCalibTime(side, mod);
2878 zdcModuleAmplitude(*zdcModule) =
m_zdcDataAnalyzer->GetModuleAmplitude(side, mod);
2883 zdcModuleChisq(*zdcModule) = pulseAna_p->
GetChisq();
2886 zdcModuleFitAmpError(*zdcModule) = pulseAna_p->
GetAmpError();
2887 zdcModuleFitT0(*zdcModule) = pulseAna_p->
GetFitT0();
2890 zdcModulePresample(*zdcModule) = pulseAna_p->
getPresample();
2892 zdcModuleMaxADC(*zdcModule) = pulseAna_p->
getMaxADCSub();
2893 zdcModuleMaxADCHG(*zdcModule) = pulseAna_p->
getMaxADCHG();
2894 zdcModuleMaxADCLG(*zdcModule) = pulseAna_p->
getMaxADCLG();
2896 zdcModuleAmpLGRefit(*zdcModule) = pulseAna_p->
getRefitLGAmp();
2923 for (
const auto zdc_sum: moduleSumContainer)
2925 ATH_MSG_DEBUG(
"Extracting ZDC side " << zdc_sum->zdcSide());
2927 if (zdc_sum->zdcSide()==0)
continue;
2929 int iside = (zdc_sum->zdcSide()==-1) ? 0 : 1;
2932 zdcSumUncalibSum(*zdc_sum) = uncalibSum;
2934 zdcSumUncalibSumErr(*zdc_sum) = uncalibSumErr;
2937 zdcSumCalibEnergy(*zdc_sum) = calibEnergy;
2939 zdcSumCalibEnergyErr(*zdc_sum) = calibEnergyErr;
2942 zdcSumNLCalibEnergy(*zdc_sum) = nlcalibEnergy;
2944 zdcSumNLCalibEnergyErr(*zdc_sum) = nlcalibEnergyErr;
2946 float finalEnergy = calibEnergy;
2947 zdcSumFinalEnergy(*zdc_sum) = finalEnergy;
2950 zdcSumModuleMask(*zdc_sum) = (
getModuleMask() >> (4 * iside)) & 0xF;
2953 return StatusCode::SUCCESS;