From 91ad882f20527d020a7c3ecb9d76c8f2c9022dca Mon Sep 17 00:00:00 2001 From: ariffero Date: Wed, 13 May 2026 14:50:39 +0200 Subject: [PATCH 1/4] Add RCT flag checks in UPCCandidateProducer --- PWGUD/TableProducer/UPCCandidateProducer.cxx | 40 ++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/PWGUD/TableProducer/UPCCandidateProducer.cxx b/PWGUD/TableProducer/UPCCandidateProducer.cxx index d58c98ac587..cf314e7fb58 100644 --- a/PWGUD/TableProducer/UPCCandidateProducer.cxx +++ b/PWGUD/TableProducer/UPCCandidateProducer.cxx @@ -19,6 +19,7 @@ #include "PWGUD/DataModel/UDTables.h" #include "Common/CCDB/EventSelectionParams.h" +#include "Common/CCDB/RCTSelectionFlags.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/PIDResponseTOF.h" #include "Common/DataModel/PIDResponseTPC.h" @@ -57,6 +58,7 @@ using namespace o2::framework; using namespace o2::framework::expressions; +using namespace o2::aod::rctsel; struct UpcCandProducer { bool fDoMC{false}; @@ -91,6 +93,9 @@ struct UpcCandProducer { std::vector fwdSelectors; std::vector barrelSelectors; + // RCT flag checker + RCTFlagsChecker myRCTChecker; + // skimmer flags // choose a source of signal MC events Configurable fSignalGenID{"signalGenID", 1, "Signal generator ID"}; @@ -125,9 +130,15 @@ struct UpcCandProducer { Configurable fRequireNoTimeFrameBorder{"requireNoTimeFrameBorder", true, "Require kNoTimeFrameBorder selection bit"}; Configurable fRequireNoITSROFrameBorder{"requireNoITSROFrameBorder", true, "Require kNoITSROFrameBorder selection bit"}; + Configurable rctLabel{"rctLabel", "CBT_muon", "RCT label to use, options: CBT, CBT_hadronPID, CBT_electronPID, CBT_calo, CBT_muon, CBT_muon_glo"}; + Configurable checkZDC{"checkZDC", false, "Consider ZDC quality"}; + Configurable useLAasBad{"useLAasBad", false, "Consider Lim acc flag as Bad"}; + // QA histograms HistogramRegistry histRegistry{"HistRegistry", {}, OutputObjHandlingPolicy::AnalysisObject}; + using CollisionsSels = o2::soa::Join; + using BCsWithBcSels = o2::soa::Join; using ForwardTracks = o2::soa::Join; @@ -146,6 +157,9 @@ struct UpcCandProducer { upcCuts = (UPCCutparHolder)inputCuts; + // initialize RCT flag checker + myRCTChecker.init(rctLabel.value, checkZDC.value, useLAasBad.value); + const AxisSpec axisTrgCounters{10, 0.5, 10.5, ""}; histRegistry.add("hCountersTrg", "", kTH1F, {axisTrgCounters}); histRegistry.get(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(1, "TCE"); @@ -179,6 +193,11 @@ struct UpcCandProducer { histRegistry.get(HIST("BarrelsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kBarrelSelTPCChi2 + 1, "TPCChi2"); histRegistry.get(HIST("BarrelsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kBarrelSelDCAXY + 1, "DCAXY"); histRegistry.get(HIST("BarrelsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kBarrelSelDCAZ + 1, "DCAZ"); + + histRegistry.add("RCTSelCounter", "RCTSelCounter", kTH1F, {{3, 0.5, 3.5}}); + histRegistry.get(HIST("RCTSelCounter"))->GetXaxis()->SetBinLabel(1, "Before RCT sel"); + histRegistry.get(HIST("RCTSelCounter"))->GetXaxis()->SetBinLabel(2, "After RCT sel"); + histRegistry.get(HIST("RCTSelCounter"))->GetXaxis()->SetBinLabel(3, "RCT rejected"); } template @@ -682,6 +701,13 @@ struct UpcCandProducer { uint64_t trackBC = 0; if (trk.has_collision()) { const auto& col = trk.collision(); + auto bcRCT = col.bc_as(); + histRegistry.get(HIST("RCTSelCounter"))->Fill(1); + if(!myRCTChecker(bcRCT)){ + histRegistry.get(HIST("RCTSelCounter"))->Fill(3); + continue; + } + histRegistry.get(HIST("RCTSelCounter"))->Fill(2); nContrib = col.numContrib(); trackBC = col.bc_as().globalBC(); hasTrackBC = true; @@ -725,6 +751,13 @@ struct UpcCandProducer { if (!trk.has_collision()) continue; const auto& col = trk.collision(); + auto bcRCT = col.bc_as(); + histRegistry.get(HIST("RCTSelCounter"))->Fill(1); + if(!myRCTChecker(bcRCT)){ + histRegistry.get(HIST("RCTSelCounter"))->Fill(3); + continue; + } + histRegistry.get(HIST("RCTSelCounter"))->Fill(2); nContrib = col.numContrib(); trackBC = col.bc_as().globalBC(); hasTrackBC = true; @@ -765,6 +798,13 @@ struct UpcCandProducer { if (!trk.has_collision()) continue; const auto& col = trk.collision(); + auto bcRCT = col.bc_as(); + histRegistry.get(HIST("RCTSelCounter"))->Fill(1); + if(!myRCTChecker(bcRCT)){ + histRegistry.get(HIST("RCTSelCounter"))->Fill(3); + continue; + } + histRegistry.get(HIST("RCTSelCounter"))->Fill(2); nContrib = col.numContrib(); trackBC = col.bc_as().globalBC(); const auto& bc = col.bc_as(); From d8e63d35e02133759dcb5a680133d4317661051c Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 14 May 2026 15:56:31 +0000 Subject: [PATCH 2/4] Please consider the following formatting changes --- PWGUD/TableProducer/UPCCandidateProducer.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGUD/TableProducer/UPCCandidateProducer.cxx b/PWGUD/TableProducer/UPCCandidateProducer.cxx index cf314e7fb58..32df951c4d6 100644 --- a/PWGUD/TableProducer/UPCCandidateProducer.cxx +++ b/PWGUD/TableProducer/UPCCandidateProducer.cxx @@ -703,7 +703,7 @@ struct UpcCandProducer { const auto& col = trk.collision(); auto bcRCT = col.bc_as(); histRegistry.get(HIST("RCTSelCounter"))->Fill(1); - if(!myRCTChecker(bcRCT)){ + if (!myRCTChecker(bcRCT)) { histRegistry.get(HIST("RCTSelCounter"))->Fill(3); continue; } @@ -753,7 +753,7 @@ struct UpcCandProducer { const auto& col = trk.collision(); auto bcRCT = col.bc_as(); histRegistry.get(HIST("RCTSelCounter"))->Fill(1); - if(!myRCTChecker(bcRCT)){ + if (!myRCTChecker(bcRCT)) { histRegistry.get(HIST("RCTSelCounter"))->Fill(3); continue; } @@ -800,7 +800,7 @@ struct UpcCandProducer { const auto& col = trk.collision(); auto bcRCT = col.bc_as(); histRegistry.get(HIST("RCTSelCounter"))->Fill(1); - if(!myRCTChecker(bcRCT)){ + if (!myRCTChecker(bcRCT)) { histRegistry.get(HIST("RCTSelCounter"))->Fill(3); continue; } From e4c7d9006cf84a69fc688c1696863bb9143f3c5e Mon Sep 17 00:00:00 2001 From: ariffero Date: Thu, 14 May 2026 18:03:35 +0200 Subject: [PATCH 3/4] Fix MegaLinter errors --- PWGUD/TableProducer/UPCCandidateProducer.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGUD/TableProducer/UPCCandidateProducer.cxx b/PWGUD/TableProducer/UPCCandidateProducer.cxx index 32df951c4d6..80642313a7c 100644 --- a/PWGUD/TableProducer/UPCCandidateProducer.cxx +++ b/PWGUD/TableProducer/UPCCandidateProducer.cxx @@ -55,6 +55,7 @@ #include #include #include +#include using namespace o2::framework; using namespace o2::framework::expressions; From bc01fb76ce7935c128a973196e4602e0585118c1 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 14 May 2026 16:06:45 +0000 Subject: [PATCH 4/4] Please consider the following formatting changes --- PWGUD/TableProducer/UPCCandidateProducer.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGUD/TableProducer/UPCCandidateProducer.cxx b/PWGUD/TableProducer/UPCCandidateProducer.cxx index 80642313a7c..1dac593260f 100644 --- a/PWGUD/TableProducer/UPCCandidateProducer.cxx +++ b/PWGUD/TableProducer/UPCCandidateProducer.cxx @@ -51,11 +51,11 @@ #include #include #include +#include #include #include #include #include -#include using namespace o2::framework; using namespace o2::framework::expressions;