From 6d6f50cbfd4dc6efd98d85ef3fb08e96db7a54e2 Mon Sep 17 00:00:00 2001 From: contrgui Date: Tue, 14 Jul 2026 14:37:09 +0200 Subject: [PATCH 1/5] Adding bc by bc trigger info and getting info from DB --- PWGUD/Tasks/upcVmRof.cxx | 73 +++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/PWGUD/Tasks/upcVmRof.cxx b/PWGUD/Tasks/upcVmRof.cxx index 2522f4ad23c..1efe853cb99 100644 --- a/PWGUD/Tasks/upcVmRof.cxx +++ b/PWGUD/Tasks/upcVmRof.cxx @@ -25,6 +25,8 @@ #include #include #include +//#include +#include #include #include #include @@ -180,10 +182,13 @@ struct UpcVmRof { std::bitset bcPatternA; std::bitset bcPatternB; std::bitset bcPatternC; + std::vector bcbIdx; + int nbcB = 0; - // constants related to ITS ROFs - static constexpr int RofPerOrbit = 6; // valid for pO, OO and PbPb in Run 3 - static constexpr int RofShift = 64; // bc shift of ITS. Valid for pO, OO and PbPb in Run 3 + // variables to store ITS ROF info + int rofPerOrbit = -1; // number of rofs per orbit + int rofLength = -1; // number of bcs per ROF + int rofShift = -1; // bc shift of ITS. // variables to store run info int runNumberBc = 0; // run number used to process BCs @@ -192,7 +197,6 @@ struct UpcVmRof { int64_t orbitsPerTF = 0; // number of orbits per TF int64_t bcSOR = 0; // first bc of the first orbit int64_t nBCsPerTF = 0; // duration of TF in bcs - int64_t nBCsPerROF = 0; // number of bcs per ROF int64_t currentTF = -1; // current time frame being looked at int64_t nTF = 0; // number of time frames in run @@ -216,16 +220,40 @@ struct UpcVmRof { Configurable maxTrkDcaZ{"maxTrkDcaZ", 2.0, "max DCA in z of track to vtx (cm)"}; Configurable tfPerBin{"tfPerBin", 10000, "timeframes per bin 1e4 means some 28 s"}; + + + //-------------------------------------------------------------------------------- + // get ITS ROF info + // code from https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tools/EventSelectionModule.h#L779-L780 + void getRofInfo() + { + auto alppar = ccdb->getForTimeStamp>("ITS/Config/AlpideParam", sor); + rofShift = alppar->roFrameBiasInBC; + rofLength = alppar->roFrameLengthInBC; + rofPerOrbit = static_cast(o2::constants::lhc::LHCMaxBunches/rofLength); + } + //-------------------------------------------------------------------------------- // get filling scheme void getFillingScheme() { + // get the info auto grplhcif = ccdb->getForTimeStamp("GLO/Config/GRPLHCIF", sor); beamPatternA = grplhcif->getBunchFilling().getBeamPattern(0); beamPatternC = grplhcif->getBunchFilling().getBeamPattern(1); bcPatternA = beamPatternA & ~beamPatternC; bcPatternB = beamPatternA & beamPatternC; bcPatternC = ~beamPatternA & beamPatternC; + // define internal indices to access the correct bin in histogram + bcbIdx.clear(); + nbcB = 0; + for (int i = 0; i < o2::constants::lhc::LHCMaxBunches; i++) { + bcbIdx.push_back(-1); + if (bcPatternB.test(i)) { + bcbIdx[i]=nbcB; + nbcB++; + } + } } // end getFillingScheme() //-------------------------------------------------------------------------------- @@ -254,7 +282,6 @@ struct UpcVmRof { auto orbitSOR = runInfo.orbitSOR; auto orbitEOR = runInfo.orbitEOR; orbitsPerTF = runInfo.orbitsPerTF; - nBCsPerROF = o2::constants::lhc::LHCMaxBunches / RofPerOrbit; bcSOR = orbitSOR * o2::constants::lhc::LHCMaxBunches; // first bc of the first orbit nBCsPerTF = orbitsPerTF * o2::constants::lhc::LHCMaxBunches; // duration of TF in bcs nTF = std::ceil((orbitEOR - orbitSOR) / orbitsPerTF); @@ -278,12 +305,13 @@ struct UpcVmRof { // compute ROF for this BC int getRof(int64_t thisBC) { - int64_t bctmp = thisBC - RofShift; + int64_t bctmp = thisBC - rofShift; if (bctmp < 0) - bctmp = o2::constants::lhc::LHCMaxBunches - RofShift - 1; - return static_cast(bctmp / nBCsPerROF); + bctmp = o2::constants::lhc::LHCMaxBunches - rofShift - 1; + return static_cast(bctmp / rofLength); } + //-------------------------------------------------------------------------------- // check flags for a bc bool checkBcFlags(const auto& bc, int run) @@ -339,15 +367,24 @@ struct UpcVmRof { bcTH1Pointers[Form("bc/%d/bcPatternC_H", run)] = bcTH1Registry.add(Form("bc/%d/bcPatternC_H", run), "Pattern of bc-C; bcID;", {HistType::kTH1D, {{o2::constants::lhc::LHCMaxBunches, -0.5, static_cast(o2::constants::lhc::LHCMaxBunches) - 0.5}}}); - // trigger info + // bc sel and tf info + int nBinsTF = static_cast(nTF/tfPerBin)+1; + int lastTFinHisto = (nBinsTF*tfPerBin)-1; // first TF is zero bcTH1Pointers[Form("bc/%d/bcSel_H", run)] = bcTH1Registry.add(Form("bc/%d/bcSel_H", run), "bc selection counter; selID; Counter", {HistType::kTH1D, {{4, -0.5, 3.5}}}); bcTH1Pointers[Form("bc/%d/tf_H", run)] = bcTH1Registry.add(Form("bc/%d/tf_H", run), "analysed time frames;TF;Counts", - {HistType::kTH1D, {{static_cast(nTF / tfPerBin), -0.5, static_cast(nTF) - 0.5}}}); + {HistType::kTH1D, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}}}); + // trigger info per rof bcTH2Pointers[Form("bc/%d/ft0Vtx_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0Vtx_H", run), "ft0Vtx triggers; TF; ROF; Counter", - {HistType::kTH2F, {{static_cast(nTF / tfPerBin), -0.5, static_cast(nTF) - 0.5}, {RofPerOrbit, -0.5, RofPerOrbit - 0.5}}}); + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {rofPerOrbit, -0.5, rofPerOrbit - 0.5}}}); bcTH2Pointers[Form("bc/%d/ft0VtxCe_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0VtxCe_H", run), "ft0VtxCe triggers; TF; ROF; Counter", - {HistType::kTH2F, {{static_cast(nTF / tfPerBin), -0.5, static_cast(nTF) - 0.5}, {RofPerOrbit, -0.5, RofPerOrbit - 0.5}}}); + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {rofPerOrbit, -0.5, rofPerOrbit - 0.5}}}); + // trigger info per bcb + bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0Vtx_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); + bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0VtxCe_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); + } // addBcHistos @@ -415,11 +452,12 @@ struct UpcVmRof { if (runNumberBc != bcAt0.runNumber()) { // new run runNumberBc = bcAt0.runNumber(); getRunInfo(runNumberBc); - addBcHistos(runNumberBc); getFillingScheme(); + getRofInfo(); + addBcHistos(runNumberBc); fillBcPatternHistos(runNumberBc); } - + //-------------------------------------------------------------------------------- for (const auto& bc : bcs) { // get info for this bc @@ -448,8 +486,11 @@ struct UpcVmRof { bool ft0ceTrg = mask[Ft0CeIdx]; if (ft0vtxTrg) { bcTH2Pointers[Form("bc/%d/ft0Vtx_H", runNumberBc)]->Fill(thisTF, thisROF); - if (ft0ceTrg) + bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); + if (ft0ceTrg) { bcTH2Pointers[Form("bc/%d/ft0VtxCe_H", runNumberBc)]->Fill(thisTF, thisROF); + bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); + } } } // loop over bcs @@ -700,7 +741,7 @@ struct UpcVmRof { } // end processCol PROCESS_SWITCH(UpcVmRof, processCols, "get collisions and track information", true); -}; // end of struct UpcVmRof + }; // end of struct UpcVmRof WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { From aebc723cb7a5afcb7e89ddd2c180a24fe5922f5b Mon Sep 17 00:00:00 2001 From: contrgui Date: Wed, 15 Jul 2026 09:09:10 +0200 Subject: [PATCH 2/5] Right include path, deleting trailing spaces and some tabs --- PWGUD/Tasks/upcVmRof.cxx | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/PWGUD/Tasks/upcVmRof.cxx b/PWGUD/Tasks/upcVmRof.cxx index 1efe853cb99..73ba4753b3d 100644 --- a/PWGUD/Tasks/upcVmRof.cxx +++ b/PWGUD/Tasks/upcVmRof.cxx @@ -25,8 +25,8 @@ #include #include #include -//#include -#include +#include +//#include #include #include #include @@ -188,7 +188,7 @@ struct UpcVmRof { // variables to store ITS ROF info int rofPerOrbit = -1; // number of rofs per orbit int rofLength = -1; // number of bcs per ROF - int rofShift = -1; // bc shift of ITS. + int rofShift = -1; // bc shift of ITS. // variables to store run info int runNumberBc = 0; // run number used to process BCs @@ -221,7 +221,7 @@ struct UpcVmRof { Configurable tfPerBin{"tfPerBin", 10000, "timeframes per bin 1e4 means some 28 s"}; - + //-------------------------------------------------------------------------------- // get ITS ROF info // code from https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tools/EventSelectionModule.h#L779-L780 @@ -250,8 +250,8 @@ struct UpcVmRof { for (int i = 0; i < o2::constants::lhc::LHCMaxBunches; i++) { bcbIdx.push_back(-1); if (bcPatternB.test(i)) { - bcbIdx[i]=nbcB; - nbcB++; + bcbIdx[i]=nbcB; + nbcB++; } } } // end getFillingScheme() @@ -311,7 +311,7 @@ struct UpcVmRof { return static_cast(bctmp / rofLength); } - + //-------------------------------------------------------------------------------- // check flags for a bc bool checkBcFlags(const auto& bc, int run) @@ -381,9 +381,9 @@ struct UpcVmRof { {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {rofPerOrbit, -0.5, rofPerOrbit - 0.5}}}); // trigger info per bcb bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0Vtx_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", - {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0VtxCe_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", - {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); } // addBcHistos @@ -457,7 +457,7 @@ struct UpcVmRof { addBcHistos(runNumberBc); fillBcPatternHistos(runNumberBc); } - + //-------------------------------------------------------------------------------- for (const auto& bc : bcs) { // get info for this bc @@ -486,11 +486,11 @@ struct UpcVmRof { bool ft0ceTrg = mask[Ft0CeIdx]; if (ft0vtxTrg) { bcTH2Pointers[Form("bc/%d/ft0Vtx_H", runNumberBc)]->Fill(thisTF, thisROF); - bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); + bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); if (ft0ceTrg) { bcTH2Pointers[Form("bc/%d/ft0VtxCe_H", runNumberBc)]->Fill(thisTF, thisROF); - bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); - } + bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", runNumberBc)]->Fill(thisTF, bcbIdx[thisBC]); + } } } // loop over bcs @@ -741,7 +741,7 @@ struct UpcVmRof { } // end processCol PROCESS_SWITCH(UpcVmRof, processCols, "get collisions and track information", true); - }; // end of struct UpcVmRof +}; // end of struct UpcVmRof WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { From 71a83e783c2d389aadddd118dabd828ee88fe318 Mon Sep 17 00:00:00 2001 From: contrgui Date: Wed, 15 Jul 2026 16:58:18 +0200 Subject: [PATCH 3/5] Small changes according to results of checks and from Vit's request --- PWGUD/Tasks/upcVmRof.cxx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/PWGUD/Tasks/upcVmRof.cxx b/PWGUD/Tasks/upcVmRof.cxx index 73ba4753b3d..d30a7360ed2 100644 --- a/PWGUD/Tasks/upcVmRof.cxx +++ b/PWGUD/Tasks/upcVmRof.cxx @@ -26,7 +26,6 @@ #include #include #include -//#include #include #include #include @@ -166,7 +165,7 @@ struct UpcVmRof { Produces fourTrkTable; // services - Service ccdb; // access to database + Service ccdb{}; // access to database // histograms HistogramRegistry bcTH1Registry{"bcTH1Registry", {}}; @@ -250,7 +249,7 @@ struct UpcVmRof { for (int i = 0; i < o2::constants::lhc::LHCMaxBunches; i++) { bcbIdx.push_back(-1); if (bcPatternB.test(i)) { - bcbIdx[i]=nbcB; + bcbIdx[i] = nbcB; nbcB++; } } @@ -712,7 +711,7 @@ struct UpcVmRof { } // ZDC info // fill output table - int recoFlag = (col.flags() & dataformats::Vertex>::Flags::UPCMode) ? 1 : 0; + int recoFlag = static_cast((col.flags() & dataformats::Vertex>::Flags::UPCMode) ? true : false); if (selTrks.size() == NTrksTwoBody) { colTH1Pointers[Form("col/%d/twoTrkTF_H", runNumberCol)]->Fill(thisTF); twoTrkTable(runNumberCol, col.posX(), col.posY(), col.posZ(), col.chi2(), thisBC, thisTF, thisROF, recoFlag, From 3980c3280832b8eb10d159d910ccf0c86a421f32 Mon Sep 17 00:00:00 2001 From: contrgui Date: Sun, 19 Jul 2026 17:40:10 +0200 Subject: [PATCH 4/5] simplifying boolean expressions and complying with formatting conventions --- PWGUD/Tasks/upcVmRof.cxx | 116 ++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 44 deletions(-) diff --git a/PWGUD/Tasks/upcVmRof.cxx b/PWGUD/Tasks/upcVmRof.cxx index d30a7360ed2..fc909be9409 100644 --- a/PWGUD/Tasks/upcVmRof.cxx +++ b/PWGUD/Tasks/upcVmRof.cxx @@ -185,9 +185,9 @@ struct UpcVmRof { int nbcB = 0; // variables to store ITS ROF info - int rofPerOrbit = -1; // number of rofs per orbit - int rofLength = -1; // number of bcs per ROF - int rofShift = -1; // bc shift of ITS. + int rofPerOrbit = -1; // number of rofs per orbit + int rofLength = -1; // number of bcs per ROF + int rofShift = -1; // bc shift of ITS. // variables to store run info int runNumberBc = 0; // run number used to process BCs @@ -209,6 +209,10 @@ struct UpcVmRof { static constexpr int NTrksTwoBody = 2; static constexpr int NTrksFourBody = 4; + // reconstruction modes + static constexpr int stdReco = 0; + static constexpr int upcReco = 1; + // information for selection collisions Configurable maxAbsPosZ{"maxAbsPosZ", 10.0, "max |Z| position of vtx"}; Configurable maxAbsTimeFT0{"maxAbsTimeFT0", 4.0, "max |time| in a FT0 side"}; @@ -229,7 +233,7 @@ struct UpcVmRof { auto alppar = ccdb->getForTimeStamp>("ITS/Config/AlpideParam", sor); rofShift = alppar->roFrameBiasInBC; rofLength = alppar->roFrameLengthInBC; - rofPerOrbit = static_cast(o2::constants::lhc::LHCMaxBunches/rofLength); + rofPerOrbit = static_cast(o2::constants::lhc::LHCMaxBunches / rofLength); } //-------------------------------------------------------------------------------- @@ -305,22 +309,24 @@ struct UpcVmRof { int getRof(int64_t thisBC) { int64_t bctmp = thisBC - rofShift; - if (bctmp < 0) + if (bctmp < 0) { bctmp = o2::constants::lhc::LHCMaxBunches - rofShift - 1; + } return static_cast(bctmp / rofLength); } - //-------------------------------------------------------------------------------- // check flags for a bc bool checkBcFlags(const auto& bc, int run) { bcTH1Pointers[Form("bc/%d/bcSel_H", run)]->Fill(0); - if (!bc.selection_bit(aod::evsel::kNoTimeFrameBorder)) + if (!bc.selection_bit(aod::evsel::kNoTimeFrameBorder)) { return false; + } bcTH1Pointers[Form("bc/%d/bcSel_H", run)]->Fill(1); - if (!bc.selection_bit(aod::evsel::kNoITSROFrameBorder)) + if (!bc.selection_bit(aod::evsel::kNoITSROFrameBorder)) { return false; + } bcTH1Pointers[Form("bc/%d/bcSel_H", run)]->Fill(2); return true; } // end checkBcFlags @@ -330,20 +336,25 @@ struct UpcVmRof { bool checkColFlags(const auto& col, int run) { colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(0); - if (!col.has_foundBC()) + if (!col.has_foundBC()) { return false; + } colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(1); - if (!col.selection_bit(aod::evsel::kNoTimeFrameBorder)) + if (!col.selection_bit(aod::evsel::kNoTimeFrameBorder)) { return false; + } colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(2); - if (!col.selection_bit(aod::evsel::kNoITSROFrameBorder)) + if (!col.selection_bit(aod::evsel::kNoITSROFrameBorder)) { return false; + } colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(3); - if (!col.selection_bit(aod::evsel::kIsVertexITSTPC)) + if (!col.selection_bit(aod::evsel::kIsVertexITSTPC)) { return false; + } colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(4); - if (!col.selection_bit(aod::evsel::kNoSameBunchPileup)) + if (!col.selection_bit(aod::evsel::kNoSameBunchPileup)) { return false; + } colTH1Pointers[Form("col/%d/colSel_H", run)]->Fill(5); // missing: add rct flags return true; @@ -367,8 +378,8 @@ struct UpcVmRof { {HistType::kTH1D, {{o2::constants::lhc::LHCMaxBunches, -0.5, static_cast(o2::constants::lhc::LHCMaxBunches) - 0.5}}}); // bc sel and tf info - int nBinsTF = static_cast(nTF/tfPerBin)+1; - int lastTFinHisto = (nBinsTF*tfPerBin)-1; // first TF is zero + int nBinsTF = static_cast(nTF / tfPerBin) + 1; + int lastTFinHisto = (nBinsTF * tfPerBin) - 1; // first TF is zero bcTH1Pointers[Form("bc/%d/bcSel_H", run)] = bcTH1Registry.add(Form("bc/%d/bcSel_H", run), "bc selection counter; selID; Counter", {HistType::kTH1D, {{4, -0.5, 3.5}}}); bcTH1Pointers[Form("bc/%d/tf_H", run)] = bcTH1Registry.add(Form("bc/%d/tf_H", run), "analysed time frames;TF;Counts", @@ -382,9 +393,7 @@ struct UpcVmRof { bcTH2Pointers[Form("bc/%d/ft0Vtx_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0Vtx_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); bcTH2Pointers[Form("bc/%d/ft0VtxCe_bcb_H", run)] = bcTH2Registry.add(Form("bc/%d/ft0VtxCe_bcb_H", run), "ft0Vtx triggers; TF; bc-B idx; Counter", - {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); - - + {HistType::kTH2F, {{nBinsTF, -0.5, static_cast(lastTFinHisto) - 0.5}, {nbcB, -0.5, nbcB - 0.5}}}); } // addBcHistos //-------------------------------------------------------------------------------- @@ -471,12 +480,14 @@ struct UpcVmRof { } // check that the bc pass the selection - if (!checkBcFlags(bc, runNumberBc)) + if (!checkBcFlags(bc, runNumberBc)) { continue; + } // consider only b-bcs - if (!bcPatternB.test(thisBC)) + if (!bcPatternB.test(thisBC)) { continue; + } bcTH1Pointers[Form("bc/%d/bcSel_H", runNumberBc)]->Fill(3); // get triggers @@ -517,26 +528,32 @@ struct UpcVmRof { int64_t thisROF = getRof(thisBC); // select collision - if (!checkColFlags(col, runNumberCol)) + if (!checkColFlags(col, runNumberCol)) { return; + } // accept only -B bcs - if (!bcPatternB.test(thisBC)) + if (!bcPatternB.test(thisBC)) { return; + } colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(10); // select on zVtx - if (std::abs(col.posZ()) > maxAbsPosZ) + if (std::abs(col.posZ()) > maxAbsPosZ) { return; + } colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(11); // select number of contributors - if (!((col.numContrib() == NTrksTwoBody) || (col.numContrib() == NTrksFourBody))) + bool isTwoContributors = (col.numContrib() == NTrksTwoBody); + bool isFourContributors = (col.numContrib() == NTrksFourBody); + if ( !isTwoContributors && !isFourContributors) { return; - if (col.numContrib() == NTrksTwoBody) { + } + if (isTwoContributors) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(16); } - if (col.numContrib() == NTrksFourBody) { + if (isFourContributors) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(18); } @@ -544,14 +561,17 @@ struct UpcVmRof { std::vector selTrks; colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(0); for (const auto& track : tracks) { - if (!track.isPVContributor()) + if (!track.isPVContributor()) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(1); - if (!track.hasITS()) + if (!track.hasITS()) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(2); - if (!track.hasTPC()) + if (!track.hasTPC()) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(3); colTH1Pointers[Form("col/%d/tpcChi2_H", runNumberCol)]->Fill(track.tpcChi2NCl()); colTH1Pointers[Form("col/%d/itsChi2_H", runNumberCol)]->Fill(track.itsChi2NCl()); @@ -559,33 +579,40 @@ struct UpcVmRof { colTH1Pointers[Form("col/%d/tpcXoF_H", runNumberCol)]->Fill(track.tpcCrossedRowsOverFindableCls()); colTH1Pointers[Form("col/%d/trkDcaZ_H", runNumberCol)]->Fill(track.dcaZ()); colTH1Pointers[Form("col/%d/trkDcaXY_H", runNumberCol)]->Fill(track.dcaXY()); - if (track.tpcChi2NCl() > maxTrkTpcChi2) + if (track.tpcChi2NCl() > maxTrkTpcChi2) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(4); - if (track.itsChi2NCl() > maxTrkItsChi2) + if (track.itsChi2NCl() > maxTrkItsChi2) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(5); - if (track.tpcNClsFindable() < minTrkTpcClusters) + if (track.tpcNClsFindable() < minTrkTpcClusters) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(6); - if (std::abs(track.dcaZ()) > maxTrkDcaZ) + if (std::abs(track.dcaZ()) > maxTrkDcaZ) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(7); float maxTrkDcaXY = 0.0105 + 0.035 / std::pow(track.pt(), 1.1); - if (std::abs(track.dcaXY()) > maxTrkDcaXY) + if (std::abs(track.dcaXY()) > maxTrkDcaXY) { continue; + } colTH1Pointers[Form("col/%d/trkSel_H", runNumberCol)]->Fill(8); selTrks.push_back(track); } - if (!(((col.numContrib() == NTrksTwoBody) && (selTrks.size() == NTrksTwoBody)) || - ((col.numContrib() == NTrksFourBody) && (selTrks.size() == NTrksFourBody)))) + bool isTwoBody = isTwoContributors && (selTrks.size() == NTrksTwoBody); + bool isFourBody = isFourContributors && (selTrks.size() == NTrksFourBody); + if (!isTwoBody && !isFourBody) { return; - + } + // selected events - if ((col.numContrib() == NTrksTwoBody) && (selTrks.size() == NTrksTwoBody)) { + if (isTwoBody) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(17); } - if ((col.numContrib() == NTrksFourBody) && (selTrks.size() == NTrksFourBody)) { + if (isFourBody) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(19); } @@ -624,10 +651,10 @@ struct UpcVmRof { } // FT0 selection // final number of selected events - if ((col.numContrib() == NTrksTwoBody) && (selTrks.size() == NTrksTwoBody)) { + if (isTwoBody) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(20); } - if ((col.numContrib() == NTrksFourBody) && (selTrks.size() == NTrksFourBody)) { + if (isFourBody) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(21); } @@ -711,8 +738,9 @@ struct UpcVmRof { } // ZDC info // fill output table - int recoFlag = static_cast((col.flags() & dataformats::Vertex>::Flags::UPCMode) ? true : false); - if (selTrks.size() == NTrksTwoBody) { + // int recoFlag = TESTBIT(col.flags(), dataformats::Vertex>::Flags::UPCMode) ? upcReco : stdReco; + const int recoFlag= (col.flags() & dataformats::Vertex>::Flags::UPCMode) ? upcReco : stdReco; + if (isTwoBody) { colTH1Pointers[Form("col/%d/twoTrkTF_H", runNumberCol)]->Fill(thisTF); twoTrkTable(runNumberCol, col.posX(), col.posY(), col.posZ(), col.chi2(), thisBC, thisTF, thisROF, recoFlag, aFT0A, aFT0C, aFV0A, aFDDA, aFDDC, tFT0A, tFT0C, tFV0A, tFDDA, tFDDC, nFT0A, nFT0C, nFV0A, nFDDA, nFDDC, @@ -722,7 +750,7 @@ struct UpcVmRof { selTrks[1].pt(), selTrks[1].eta(), selTrks[1].phi(), selTrks[1].sign(), selTrks[1].tpcNSigmaPi(), selTrks[1].tpcNSigmaEl(), selTrks[1].tpcNSigmaKa(), selTrks[1].tpcNSigmaPr()); } - if (selTrks.size() == NTrksFourBody) { + if (isFourBody) { colTH1Pointers[Form("col/%d/fourTrkTF_H", runNumberCol)]->Fill(thisTF); fourTrkTable(runNumberCol, col.posX(), col.posY(), col.posZ(), col.chi2(), thisBC, thisTF, thisROF, recoFlag, aFT0A, aFT0C, aFV0A, aFDDA, aFDDC, tFT0A, tFT0C, tFV0A, tFDDA, tFDDC, nFT0A, nFT0C, nFV0A, nFDDA, nFDDC, From d4944a6cc0cd1a23e9330b2ea2cf23f775ca932e Mon Sep 17 00:00:00 2001 From: contrgui Date: Sun, 19 Jul 2026 18:06:44 +0200 Subject: [PATCH 5/5] adding and deleting spaces, moving include two lines up --- PWGUD/Tasks/upcVmRof.cxx | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/PWGUD/Tasks/upcVmRof.cxx b/PWGUD/Tasks/upcVmRof.cxx index fc909be9409..703b6509421 100644 --- a/PWGUD/Tasks/upcVmRof.cxx +++ b/PWGUD/Tasks/upcVmRof.cxx @@ -23,9 +23,9 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -185,8 +185,8 @@ struct UpcVmRof { int nbcB = 0; // variables to store ITS ROF info - int rofPerOrbit = -1; // number of rofs per orbit - int rofLength = -1; // number of bcs per ROF + int rofPerOrbit = -1; // number of rofs per orbit + int rofLength = -1; // number of bcs per ROF int rofShift = -1; // bc shift of ITS. // variables to store run info @@ -212,7 +212,7 @@ struct UpcVmRof { // reconstruction modes static constexpr int stdReco = 0; static constexpr int upcReco = 1; - + // information for selection collisions Configurable maxAbsPosZ{"maxAbsPosZ", 10.0, "max |Z| position of vtx"}; Configurable maxAbsTimeFT0{"maxAbsTimeFT0", 4.0, "max |time| in a FT0 side"}; @@ -223,8 +223,6 @@ struct UpcVmRof { Configurable maxTrkDcaZ{"maxTrkDcaZ", 2.0, "max DCA in z of track to vtx (cm)"}; Configurable tfPerBin{"tfPerBin", 10000, "timeframes per bin 1e4 means some 28 s"}; - - //-------------------------------------------------------------------------------- // get ITS ROF info // code from https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tools/EventSelectionModule.h#L779-L780 @@ -547,7 +545,7 @@ struct UpcVmRof { // select number of contributors bool isTwoContributors = (col.numContrib() == NTrksTwoBody); bool isFourContributors = (col.numContrib() == NTrksFourBody); - if ( !isTwoContributors && !isFourContributors) { + if (!isTwoContributors && !isFourContributors) { return; } if (isTwoContributors) { @@ -603,11 +601,11 @@ struct UpcVmRof { selTrks.push_back(track); } bool isTwoBody = isTwoContributors && (selTrks.size() == NTrksTwoBody); - bool isFourBody = isFourContributors && (selTrks.size() == NTrksFourBody); + bool isFourBody = isFourContributors && (selTrks.size() == NTrksFourBody); if (!isTwoBody && !isFourBody) { return; } - + // selected events if (isTwoBody) { colTH1Pointers[Form("col/%d/colSel_H", runNumberCol)]->Fill(17); @@ -738,8 +736,7 @@ struct UpcVmRof { } // ZDC info // fill output table - // int recoFlag = TESTBIT(col.flags(), dataformats::Vertex>::Flags::UPCMode) ? upcReco : stdReco; - const int recoFlag= (col.flags() & dataformats::Vertex>::Flags::UPCMode) ? upcReco : stdReco; + const int recoFlag = (col.flags() & dataformats::Vertex>::Flags::UPCMode) ? upcReco : stdReco; if (isTwoBody) { colTH1Pointers[Form("col/%d/twoTrkTF_H", runNumberCol)]->Fill(thisTF); twoTrkTable(runNumberCol, col.posX(), col.posY(), col.posZ(), col.chi2(), thisBC, thisTF, thisROF, recoFlag,