17 ATH_MSG_DEBUG(
"calling the constructor of ZdcMonitorAlgorithm");
33 float log_min = std::log10(min_value);
34 float log_max = std::log10(max_value);
37 float step = (log_max - log_min) / num_bins;
40 for (
int i = 0;
i <= num_bins; ++
i) {
41 float edge = log_min +
i *
step;
42 bin_edges.push_back(
std::pow(10, edge));
49 if (event_value < bin_edges.front() || event_value > bin_edges.back()) {
50 ATH_MSG_DEBUG(
"In calculation of inverse-bin-width event weight for the variable " << variable_name <<
", the current event value " << event_value <<
" is out of the bin range.");
51 ATH_MSG_DEBUG(
"Assign zero weight for the current event (event not filled).");
56 for (
size_t i = 0;
i < bin_edges.size() - 1; ++
i) {
57 if (event_value >= bin_edges[
i] && event_value < bin_edges[
i + 1]) {
62 ATH_MSG_WARNING(
"Warning: in calculation of inverse-bin-width event weight for the variable " << variable_name <<
", bin width containing the event value " << event_value <<
" is zero.");
63 ATH_MSG_WARNING(
"Assign zero weight for the current event (event not filled).");
70 if (event_value == bin_edges.back()) {
71 size_t last_bin_index = bin_edges.size() - 2;
72 float bin_width = bin_edges[last_bin_index + 1] - bin_edges[last_bin_index];
77 ATH_MSG_WARNING(
"Warning: in calculation of inverse-bin-width event weight for the variable " << variable_name <<
", no valid bin found for the event value " << event_value <<
".");
78 ATH_MSG_WARNING(
"Assign zero weight for the current event (event not filled).");
160 std::vector<std::string>
sides = {
"C",
"A"};
161 std::vector<std::string> modules = {
"0",
"1",
"2",
"3"};
162 std::vector<std::string>
channels = {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"};
189 <<
", first LB = " << startLB <<
", number of steps = " << nsteps);
203 ATH_MSG_DEBUG(
"calling the fillPhysicsDataHistograms function");
208 bool cur_event_ZDC_available =
true;
209 bool cur_event_RPD_available =
true;
210 bool cur_event_RPDCentroid_available =
true;
230 std::array<float, m_nDecodingErrorBits> decodingErrorBitsArr = {0, 0, 0};
232 cur_event_ZDC_available &= !zdcDecodingError;
233 cur_event_RPD_available &= !rpdDecodingError;
235 if (!zdcDecodingError && !rpdDecodingError){
236 decodingErrorBitsArr[0] += 1;
237 }
else if (zdcDecodingError){
239 decodingErrorBitsArr[1] += 1;
242 decodingErrorBitsArr[2] += 1;
245 auto zdcTool =
getGroup(
"genZdcMonTool");
262 passTrigSideA = trigDecTool->isPassed(
m_triggerSideA, TrigDefs::Physics);
263 passTrigSideC = trigDecTool->isPassed(
m_triggerSideC, TrigDefs::Physics);
276 std::array<float, m_nUCCTrigBits> uccTrigBitsArr = {0};
288 if (passUCCTrig_HELT15){
292 if (passUCCTrig_HELT20){
296 if (passUCCTrig_HELT25){
300 if (passUCCTrig_HELT35){
304 if (passUCCTrig_HELT50){
318 std::vector<float> oopoTrigBitsArr(nOOpOTriggers+2, 0.);
320 std::vector<Monitored::Scalar<bool>> oopoTrigPassBoolVec;
321 oopoTrigPassBoolVec.reserve(nOOpOTriggers);
324 oopoTrigBitsArr[0] += 1;
328 for (
int i = 0;
i < nOOpOTriggers - nOOpOL1TriggersFromCTP; ++
i) {
335 [](
char c){ return c==
'-'; },
'_' );
337 oopoTrigPassBoolVec.emplace_back(
varName, pass );
338 oopoTrigBitsArr[
i+1] += pass;
346 throw std::runtime_error(
"Trigger decision NOT retrieved for PEB stream!");
348 std::vector<uint32_t> tbp = trigDecision->
tbp();
351 int ind = ctp_id / 32;
352 int bit = ctp_id % 32;
353 const bool pass = ((tbp.at(ind) >> bit) & 1);
354 ATH_MSG_INFO(
"what's the size of xAOD::TrigDecision::tbp()? " << tbp.size());
355 std::string
varName =
"pass" + trig_name;
356 oopoTrigPassBoolVec.emplace_back(
varName, pass );
357 oopoTrigBitsArr.at(oopoTrigPassBoolVec.size()) += pass;
359 }
catch (
const std::out_of_range&
e) {
360 ATH_MSG_WARNING(
"Out of range error captured when fetching L1 trigger bits from CTP ID: " <<
e.what());
361 }
catch (
const std::runtime_error&
e) {
362 ATH_MSG_WARNING(
"Runtime error captured when fetching L1 trigger bits from CTP ID: " <<
e.what());
364 ATH_MSG_WARNING(
"Other std::exception captured when fetching L1 trigger bits from CTP ID: " <<
e.what());
366 ATH_MSG_WARNING(
"Error captured when fetching L1 trigger bits from CTP ID. Likely either no L1 trigger looked at or no L1 trigger will show to be passed.");
369 oopoTrigBitsArr[nOOpOTriggers + 1] += 1;
392 std::array<bool, 2> centroidSideValidArr;
393 std::array<bool, 2> rpdSideValidArr = {
false,
false};
394 std::array<std::vector<float>,2> rpdSubAmpVecs;
401 auto passMinZDCEnergyCutForCentroidValidEvaluation =
Monitored::Scalar<bool>(
"passMinZDCEnergyCutForCentroidValidEvaluation",
false);
406 std::array<float, 2> zdcEMModuleEnergyArr = {-1000.,-1000.};
407 std::array<float, 2> zdcEnergySumArr = {-1000,-1000.};
408 std::array<float, 2> zdcUncalibSumArr = {-1000.,-1000.};
409 std::array<float, 2> zdcAvgTimeArr = {-1000.,-1000.};
410 std::array<bool, 2> zdcModuleMaskArr = {
false,
false};
411 std::array<bool, 2> passTrigOppSideArr = {
false,
false};
412 std::array<float, 2> rpdAmplitudeCalibSum = {-1000.,-1000.};
413 std::array<float, 2> rpdMaxADCSum = {-1000.,-1000.};
415 std::array<float, m_nRpdCentroidStatusBits> centroidStatusBitsCountCurSide;
419 return StatusCode::SUCCESS;
428 zdcEnergySumTwoSidesTeV = 0.;
431 cur_event_ZDC_available &= ZdcSumCalibEnergyHandle.
isAvailable();
433 if (cur_event_ZDC_available){
434 for (
const auto zdcSum : *zdcSums) {
435 if (zdcSum->zdcSide() != 0){
436 int iside = (zdcSum->zdcSide() > 0)? 1 : 0;
438 zdcEnergySumArr[iside] = ZdcSumCalibEnergyHandle(*zdcSum);
439 zdcUncalibSumArr[iside] = ZdcSumUncalibSumHandle(*zdcSum);
440 zdcAvgTimeArr[iside] = ZdcSumAverageTimeHandle(*zdcSum);
441 zdcModuleMaskArr[iside] = ZdcSumModuleMaskHandle(*zdcSum);
443 passTrigOppSideArr[iside] = (iside == 0)? passTrigSideA : passTrigSideC;
445 zdcEnergySumTwoSidesTeV += (ZdcSumCalibEnergyHandle(*zdcSum)) / 1000.;
447 if (zdcSum->zdcSide() == 1){
448 zdcEnergySumA = ZdcSumCalibEnergyHandle(*zdcSum);
449 zdcUncalibSumA = ZdcSumUncalibSumHandle(*zdcSum);
452 zdcEnergySumC = ZdcSumCalibEnergyHandle(*zdcSum);
453 zdcUncalibSumC = ZdcSumUncalibSumHandle(*zdcSum);
459 cur_event_ZDC_available &= ZdcSumUncalibSumHandle.
isAvailable();
460 if (cur_event_ZDC_available){
461 for (
const auto zdcSum : *zdcSums) {
462 if (zdcSum->zdcSide() != 0){
463 int iside = (zdcSum->zdcSide() > 0)? 1 : 0;
464 zdcUncalibSumArr[iside] = ZdcSumUncalibSumHandle(*zdcSum);
473 cur_event_RPD_available &= RPDsideStatusHandle.
isAvailable();
474 if (cur_event_RPD_available){
475 for (
const auto zdcSum : *zdcSums) {
476 if (zdcSum->zdcSide() != 0){
477 int iside = (zdcSum->zdcSide() > 0)? 1 : 0;
478 unsigned int rpdStatusCurSide = RPDsideStatusHandle(*zdcSum);
495 cur_event_RPDCentroid_available &= RPDcentroidStatusHandle.
isAvailable();
496 if (cur_event_RPDCentroid_available){
497 for (
const auto zdcSum : *zdcSums) {
499 if (zdcSum->zdcSide() == 0){
500 rpdCosDeltaReactionPlaneAngle = RPDcosDeltaReactionPlaneAngleHandle(*zdcSum);
502 int iside = (zdcSum->zdcSide() > 0)? 1 : 0;
503 std::string side_str = (iside == 0)?
"C" :
"A";
505 rpdSubAmpVecs[iside] = RPDsubAmpHandle(*zdcSum);
506 rpdSubAmpSumCurSide = RPDsubAmpSumHandle(*zdcSum);
507 rpdXCentroidCurSide = RPDxCentroidHandle(*zdcSum);
508 rpdYCentroidCurSide = RPDyCentroidHandle(*zdcSum);
509 rpdReactionPlaneAngleCurSide = RPDreactionPlaneAngleHandle(*zdcSum);
511 unsigned int rpdCentroidStatusCurSide = RPDcentroidStatusHandle(*zdcSum);
524 centroidValidBitFloat = (centroidValid)? 0.5 : 1.5;
529 bothReactionPlaneAngleValid &= centroidValid;
530 bothHasCentroid &= curSideHasCentroid;
534 if (rpdCentroidStatusCurSide & 1 << bit){
535 centroidStatusBitsCountCurSide[bit] += 1;
538 auto centroidStatusBits =
Monitored::Collection(
"centroidStatusBits", centroidStatusBitsCountCurSide);
540 if (curSideHasCentroid){
544 fill(
m_tools[
m_ZDCSideToolIndices.at(side_str)], rpdSubAmpSumCurSide, centroidValid, passMinZDCEnergyCutForCentroidValidEvaluation, centroidValidBitFloat, rpdXCentroidCurSide, rpdYCentroidCurSide, rpdReactionPlaneAngleCurSide, centroidStatusBits,
lumiBlock,
bcid);
618 auto zdcModuleHGtoLGAmpRatioNoNonlinCorr =
Monitored::Scalar<float>(
"zdcModuleHGtoLGAmpRatioNoNonlinCorr", -1000.0);
636 std::array<float, m_nZdcStatusBits> zdcStatusBitsCount;
637 std::array<float, m_nRpdStatusBits> rpdStatusBitsCount;
641 return StatusCode::SUCCESS;
647 ATH_MSG_WARNING(
"The event run number differs from the fixed run number read from the input-file metadata!");
658 zdcHadronicEnergySumTwoSidesTeV = 0.;
660 cur_event_ZDC_available &= zdcModuleStatusHandle.
isAvailable();
661 if (cur_event_ZDC_available){
662 for (
const auto zdcMod : *zdcModules){
663 int iside = (zdcMod->zdcSide() > 0)? 1 : 0;
664 std::string side_str = (iside == 0)?
"C" :
"A";
666 if (zdcMod->zdcType() == 0){
667 int imod = zdcMod->zdcModule();
670 int status = zdcModuleStatusHandle(*zdcMod);
672 for (
int bit = 0; bit <
m_nZdcStatusBits; bit++) zdcStatusBitsCount[bit] = 0;
675 zdcStatusBitsCount[bit] += 1;
683 zdcModuleAmp = zdcModuleAmplitudeHandle(*zdcMod);
684 float zdcModuleAmpNoNonLin = zdcModuleAmpNoNonLinHandle(*zdcMod);
685 zdcModuleFitAmp = zdcModuleFitAmpHandle(*zdcMod);
686 zdcModuleMaxADC = zdcModuleMaxADCHandle(*zdcMod);
687 zdcModuleMaxADCHG = zdcModuleMaxADCHGHandle(*zdcMod);
688 zdcModuleMaxADCLG = zdcModuleMaxADCLGHandle(*zdcMod);
689 zdcModuleAmpToMaxADCRatio = (zdcModuleMaxADC == 0)? -1000. : zdcModuleFitAmp / zdcModuleMaxADC;
690 zdcModuleTime = zdcModuleTimeHandle(*zdcMod);
691 zdcModuleFitT0 = zdcModuleFitT0Handle(*zdcMod);
692 zdcModuleChisq = zdcModuleChisqHandle(*zdcMod);
693 zdcModuleCalibAmp = zdcModuleCalibEnergyHandle(*zdcMod);
694 zdcModuleCalibTime = zdcModuleCalibTimeHandle(*zdcMod);
695 zdcUncalibSumCurrentSide = zdcUncalibSumArr[iside];
696 zdcEnergySumCurrentSide = zdcEnergySumArr[iside];
697 zdcAbove20NCurrentSide = (zdcUncalibSumCurrentSide > 20 *
m_expected1N);
701 zdcModuleFract = (zdcEnergySumCurrentSide == 0)? -1000. : zdcModuleCalibAmp / zdcEnergySumCurrentSide;
703 zdcModuleFract = (zdcUncalibSumCurrentSide == 0)? -1000. : zdcModuleAmp / zdcUncalibSumCurrentSide;
707 zdcModuleChisqOverAmp = (zdcModuleFitAmp == 0)? -1000. : zdcModuleChisq / zdcModuleFitAmp;
709 zdcModuleHG = !zdcModuleLG;
711 zdcModuleFractionValid = (zdcModuleFract >= 0 && zdcModuleFract <= 1);
712 zdcModuleTimeValid = (zdcModuleTime > -100.);
713 zdcModuleHGTimeValid = zdcModuleHG && zdcModuleTimeValid;
714 zdcModuleLGTimeValid = zdcModuleLG && zdcModuleTimeValid;
717 zdcModuleFitAmpLGRefit = zdcModuleFitAmpLGRefitHandle(*zdcMod);
718 zdcModuleAmpLGRefit = zdcModuleAmpLGRefitHandle(*zdcMod);
719 zdcModuleT0LGRefit = zdcModuleT0LGRefitHandle(*zdcMod);
720 zdcModuleT0SubLGRefit = zdcModuleT0SubLGRefitHandle(*zdcMod);
721 zdcModuleChisqLGRefit = zdcModuleChisqLGRefitHandle(*zdcMod);
723 zdcModuleLGFitAmp = (zdcModuleHG)? zdcModuleFitAmpLGRefit * 1. : zdcModuleFitAmp * 1.;
725 zdcModuleHGtoLGAmpRatio = (zdcModuleLG || zdcModuleAmpLGRefit == 0)? -1000. : zdcModuleAmp * 1. / zdcModuleAmpLGRefit;
726 zdcModuleHGtoLGAmpRatioNoNonlinCorr = (zdcModuleLG || zdcModuleAmpLGRefit == 0)? -1000. : zdcModuleAmpNoNonLin * 1. / zdcModuleAmpLGRefit;
727 zdcModuleHGtoLGT0Diff = (zdcModuleLG)? -1000. : zdcModuleFitT0 - zdcModuleT0LGRefit;
732 if (imod == 0) zdcEMModuleEnergyArr[iside] = zdcModuleCalibAmp;
733 else zdcHadronicEnergySumTwoSidesTeV += zdcModuleCalibAmp / 1000.;
739 zdcHGInjPulseValid =
true;
740 zdcLGInjPulseValid =
true;
742 bool pass_first3s =
true;
751 bool retrievedLumiBlockTimes =
false;
755 if (lblbattrList==
nullptr) {
759 retrievedLumiBlockTimes =
true;
760 auto lb_stime_loc = (*lblbattrList)[
"StartTime"].data<cool::UInt63>();
761 auto lb_etime_loc = (*lblbattrList)[
"EndTime"].data<cool::UInt63>();
762 lb_stime = lb_stime_loc;
763 lb_etime = lb_etime_loc;
764 ATH_MSG_DEBUG(
"lb_stime: " << lb_stime <<
" lb_etime: " << lb_etime );
767 lb_stime /= 1000000000;
768 lb_etime /= 1000000000;
770 if (lb_etime <= lb_stime || !retrievedLumiBlockTimes){
771 ATH_MSG_WARNING(
"The LB start + end time for current event is not retrieved.");
772 ATH_MSG_WARNING(
"No event rejection at beginning of LB is implemented.");
773 }
else if(eventTime < lb_stime){
774 ATH_MSG_WARNING(
"Event time is before the start time of the current LB");
775 ATH_MSG_WARNING(
"Event time: " << eventTime <<
"; current LB: " <<
lumiBlock <<
"; start time of current LB: " << lb_stime);
776 }
else if (eventTime > lb_etime){
778 ATH_MSG_WARNING(
"Event time: " << eventTime <<
"; current LB: " <<
lumiBlock <<
"; end time of current LB: " << lb_etime);
788 zdcHGInjPulseValid &= zdcModuleHG;
808 if (injectedPulseInputVoltage > 0){
809 if (injectedPulseInputVoltage > 1 && !zdcLGInjPulseValid &&pass_first3s){
811 std::ostringstream fails;
812 std::vector<std::pair<std::string, bool>> checks = {
821 for (
const auto& [
name, pass] : checks) {
822 if (!pass) fails <<
"fail " <<
name <<
"; ";
826 <<
"; input voltage: " << injectedPulseInputVoltage
827 <<
"; LG amp: " << zdcModuleLGFitAmp
828 <<
"; side" << side_str <<
", mod" << module_str
829 <<
"; " << fails.str());
833 ATH_MSG_WARNING(
"Lumi block: " <<
lumiBlock <<
", yet input voltage is negative!! input voltage: " << injectedPulseInputVoltage);
841 int voltage_index = -1;
842 auto voltage_iter = std::find_if(injPulseVoltageSteps.begin(), injPulseVoltageSteps.end(),
843 [&](
float num) { return check_equal_within_rounding(num, injectedPulseInputVoltage); });
845 if (voltage_iter != injPulseVoltageSteps.end()) {
846 voltage_index =
std::distance(injPulseVoltageSteps.begin(), voltage_iter);
847 ATH_MSG_DEBUG(
"Found injected-pulse input voltage " << injectedPulseInputVoltage <<
" at index " <<
std::distance(injPulseVoltageSteps.begin(), voltage_iter));
849 ATH_MSG_WARNING(
"Injected-pulse input voltage " << injectedPulseInputVoltage <<
"(Lumi block: " <<
lumiBlock <<
") NOT found in voltage steps read from json.");
851 ATH_MSG_WARNING(
"Single-voltage lucrod response histograms NOT filled.");
858 if (
m_isStandalone) injectedPulseInputVoltage = zdcModuleAmp * 1. / 25000.;
859 fill(
m_tools[
m_ZDCModuleToolIndices.at(side_str).at(module_str)], VoltageIndex, zdcModuleAmp, zdcModuleFitAmp, zdcModuleMaxADC, zdcModuleMaxADCHG, zdcModuleMaxADCLG, zdcModuleAmpToMaxADCRatio, zdcModuleFract, zdcUncalibSumCurrentSide, zdcEnergySumCurrentSide, zdcModuleTime, zdcModuleFitT0, zdcModuleChisq, zdcModuleChisqOverAmp, zdcModuleChisqEventWeight, zdcModuleChisqOverAmpEventWeight, zdcModuleCalibAmp, zdcModuleCalibTime, zdcModuleLG, zdcModuleHG, zdcModuleAmpLGRefit, zdcModuleT0LGRefit, zdcModuleT0SubLGRefit, zdcModuleChisqLGRefit, zdcModuleLGFitAmp, zdcModuleHGtoLGAmpRatio, zdcModuleHGtoLGAmpRatioNoNonlinCorr, zdcModuleHGtoLGT0Diff, zdcModuleFractionValid, zdcModuleTimeValid, zdcModuleHGTimeValid, zdcModuleLGTimeValid, injectedPulseInputVoltage, zdcHGInjPulseValid, zdcLGInjPulseValid,
lumiBlock,
bcid);
864 fill(
m_tools[
m_ZDCModuleToolIndices.at(side_str).at(module_str)], zdcModuleAmp, zdcModuleMaxADC, zdcModuleMaxADCHG, zdcModuleMaxADCLG, zdcModuleAmpToMaxADCRatio, zdcModuleFract, zdcUncalibSumCurrentSide, zdcEnergySumCurrentSide, zdcAbove20NCurrentSide, zdcEnergyAboveModuleFractCut, zdcModuleTime, zdcModuleFitT0, zdcModuleChisq, zdcModuleChisqOverAmp, zdcModuleChisqEventWeight, zdcModuleChisqOverAmpEventWeight, zdcModuleCalibAmp, zdcModuleCalibTime, zdcModuleLG, zdcModuleHG, zdcModuleAmpLGRefit, zdcModuleT0LGRefit, zdcModuleT0SubLGRefit, zdcModuleChisqLGRefit, zdcModuleHGtoLGAmpRatio, zdcModuleHGtoLGAmpRatioNoNonlinCorr, zdcModuleHGtoLGT0Diff, zdcModuleFractionValid, zdcModuleTimeValid, zdcModuleHGTimeValid, zdcModuleLGTimeValid,
lumiBlock,
bcid);
884 cur_event_RPD_available &= RPDChannelStatusHandle.
isAvailable();
885 if (cur_event_RPD_available){
886 for (
const auto zdcMod : *zdcModules){
887 int iside = (zdcMod->zdcSide() > 0)? 1 : 0;
888 std::string side_str = (iside == 0)?
"C" :
"A";
890 if (zdcMod->zdcType() == 1) {
893 int ichannel = zdcMod->zdcChannel();
896 int status = RPDChannelStatusHandle(*zdcMod);
898 for (
int bit = 0; bit <
m_nRpdStatusBits; bit++) rpdStatusBitsCount[bit] = 0;
901 rpdStatusBitsCount[bit] += 1;
907 rpdChannelSubAmp = rpdSubAmpVecs[iside][ichannel];
908 rpdChannelAmplitude = RPDChannelAmplitudeHandle(*zdcMod);
909 rpdChannelMaxADC = RPDChannelMaxADCHandle(*zdcMod);
910 rpdChannelMaxSample = RPDChannelMaxSampleHandle(*zdcMod);
911 rpdChannelAmplitudeCalib = RPDChannelAmplitudeCalibHandle(*zdcMod);
912 std::vector<float> rpdChannelPileupFitParams = RPDChannelPileupExpFitParamsHandle(*zdcMod);
913 rpdChannelPileupFitSlope = rpdChannelPileupFitParams[1];
914 rpdChannelPileupFrac = RPDChannelPileupFracHandle(*zdcMod);
916 absRpdChannelAmplitude = abs(rpdChannelAmplitude);
917 zdcEMModuleEnergySameSide = zdcEMModuleEnergyArr[iside];
918 zdcEnergySumSameSide = zdcEnergySumArr[iside];
920 rpdChannelValid = curRpdChannelValid;
921 rpdChannelValidBitFloat = (curRpdChannelValid)? 0.5 : 1.5;
922 rpdChannelCentroidValid = centroidSideValidArr.at(iside);
924 rpdAmplitudeCalibSum[iside] += rpdChannelAmplitudeCalib;
925 rpdMaxADCSum[iside] += rpdChannelMaxADC;
927 fill(
m_tools[
m_RPDChannelToolIndices.at(side_str).at(channel_str)], rpdChannelSubAmp, rpdChannelAmplitude, rpdChannelAmplitudeCalib, rpdChannelMaxADC, rpdChannelMaxSample, rpdStatusBits, rpdChannelPileupFitSlope, absRpdChannelAmplitude, rpdChannelPileupFrac, zdcEMModuleEnergySameSide, zdcEnergySumSameSide, rpdChannelValid, rpdChannelValidBitFloat, rpdChannelCentroidValid,
lumiBlock,
bcid);
942 std::array<double,2> fcalEtArr = {0.,0.};
950 for (
const auto eventShape : *eventShapes){
951 int layer = eventShape->layer();
952 float eta = eventShape->etaMin();
953 float et = eventShape->et();
955 fcalEtSumTwoSides +=
et / 1000000.;
957 fcalEtA +=
et / 1000000.;
958 fcalEtArr[1] +=
et / 1000000.;
961 fcalEtC +=
et / 1000000.;
962 fcalEtArr[0] +=
et / 1000000.;
966 if (TMath::Abs(
eta) < 2.4) {
967 totalEt24 +=
et / 1000000.;
976 if (!cur_event_ZDC_available && !zdcDecodingError){
977 ATH_MSG_WARNING(
"Current event has no ZDC decoding error but ZDC aux data is not available!");
979 if (!cur_event_RPD_available && !rpdDecodingError){
980 ATH_MSG_WARNING(
"Current event has no RPD decoding error but RPD aux data is not available!");
985 if (!cur_event_ZDC_available && !cur_event_RPD_available){
986 ATH_MSG_WARNING(
"For current event, neither ZDC nor RPD data are available!");
987 return StatusCode::SUCCESS;
998 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> vars_global = {
1012 vars_global.insert(vars_global.end(), {
1015 std::ref(zdcHadronicEnergySumTwoSidesTeV),
1016 std::ref(fcalEtSumTwoSides),
1022 vars_global.insert(vars_global.end(), {
1023 std::ref(passUCCTrig_HELT15),
1024 std::ref(passUCCTrig_HELT20),
1025 std::ref(passUCCTrig_HELT25),
1026 std::ref(passUCCTrig_HELT35),
1027 std::ref(passUCCTrig_HELT50)
1032 for (
auto&
m : oopoTrigPassBoolVec) vars_global.push_back(
std::ref(
m) );
1039 fill(zdcTool, rpdCosDeltaReactionPlaneAngle, bothReactionPlaneAngleValid, bothHasCentroid);
1049 for (
int iside = 0; iside <
m_nSides; iside++){
1050 std::string side_str = (iside == 0)?
"C" :
"A";
1067 fill(
m_tools[
m_ZDCSideToolIndices.at(side_str)], passTrigOppSide, zdcEnergySumCurSide, zdcEnergySumCurSideTeV, zdcUncalibSumCurSide, zdcEMModuleEnergyCurSide, zdcAvgTimeCurSide, zdcModuleMaskCurSide, rpdAmplitudeCalibSumCurSide, rpdMaxADCSumCurSide, rpdCurSideValid, fcalEtCurSide,
lumiBlock,
bcid);
1070 for (
int iside = 0; iside <
m_nSides; iside++){
1071 std::string side_str = (iside == 0)?
"C" :
"A";
1082 fill(
m_tools[
m_ZDCSideToolIndices.at(side_str)], passTrigOppSide, zdcEnergySumCurSide, zdcEnergySumCurSideTeV, zdcUncalibSumCurSide, zdcEMModuleEnergyCurSide, zdcAvgTimeCurSide, zdcModuleMaskCurSide, fcalEtCurSide,
lumiBlock,
bcid);
1085 for (
int iside = 0; iside <
m_nSides; iside++){
1086 std::string side_str = (iside == 0)?
"C" :
"A";
1096 return StatusCode::SUCCESS;
1105 if (! eventInfo.
isValid() || eventInfo.
cptr() ==
nullptr) {
1106 ATH_MSG_WARNING(
"EventInfo handle is not valid or has null pointer!");
1107 return StatusCode::SUCCESS;
1120 return StatusCode::SUCCESS;
1122 for (
const auto zdcSum : *zdcSums) {
1123 if (zdcSum->zdcSide() == 0){
1125 ATH_MSG_WARNING(
"The global sum entry in zdc sum container can be retrieved; but it does NOT have the variable eventType written as a decoration!");
1126 return StatusCode::SUCCESS;
1130 ATH_MSG_WARNING(
"The global sum entry in zdc sum container can be retrieved; but it does NOT have the variable DAQMode written as a decoration!");
1131 return StatusCode::SUCCESS;
1134 eventType = eventTypeHandle(*zdcSum);
1135 DAQMode = DAQModeHandle(*zdcSum);
1142 ATH_MSG_WARNING(
"The zdc sum container can be retrieved from the evtStore() but");
1143 ATH_MSG_WARNING(
"Either the event type or the DAQ mode is the default unknown value");
1144 ATH_MSG_WARNING(
"Most likely, there is no global sum (side == 0) entry in the zdc sum container");
1145 return StatusCode::SUCCESS;
1152 ATH_MSG_WARNING(
"Event type should be PhysicsData/Simulation but it is NOT");
1153 return StatusCode::SUCCESS;