Skip to content

Commit 6f2d9f7

Browse files
committed
Merge branch 'master' into hf-data-model
2 parents 82057d5 + f5b37a2 commit 6f2d9f7

File tree

85 files changed

+6163
-3934
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+6163
-3934
lines changed

ALICE3/DataModel/OTFMulticharm.h

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -75,31 +75,6 @@ DECLARE_SOA_COLUMN(XicProperLength, xicProperLength, float);
7575
DECLARE_SOA_COLUMN(XicDistanceFromPV, xicDistanceFromPV, float);
7676
DECLARE_SOA_COLUMN(XiccProperLength, xiccProperLength, float);
7777

78-
// PID
79-
DECLARE_SOA_COLUMN(Pi1cTofDeltaInner, pi1cTofDeltaInner, float);
80-
DECLARE_SOA_COLUMN(Pi1cTofNSigmaInner, pi1cTofNSigmaInner, float);
81-
DECLARE_SOA_COLUMN(Pi1cTofDeltaOuter, pi1cTofDeltaOuter, float);
82-
DECLARE_SOA_COLUMN(Pi1cTofNSigmaOuter, pi1cTofNSigmaOuter, float);
83-
DECLARE_SOA_COLUMN(Pi1cHasRichSignal, pi1cHasRichSignal, bool);
84-
DECLARE_SOA_COLUMN(Pi1cRichNSigma, pi1cRichNSigma, float);
85-
DECLARE_SOA_COLUMN(Pi1cPdgCode, pi1cPdgCode, int);
86-
87-
DECLARE_SOA_COLUMN(Pi2cTofDeltaInner, pi2cTofDeltaInner, float);
88-
DECLARE_SOA_COLUMN(Pi2cTofNSigmaInner, pi2cTofNSigmaInner, float);
89-
DECLARE_SOA_COLUMN(Pi2cTofDeltaOuter, pi2cTofDeltaOuter, float);
90-
DECLARE_SOA_COLUMN(Pi2cTofNSigmaOuter, pi2cTofNSigmaOuter, float);
91-
DECLARE_SOA_COLUMN(Pi2cHasRichSignal, pi2cHasRichSignal, bool);
92-
DECLARE_SOA_COLUMN(Pi2cRichNSigma, pi2cRichNSigma, float);
93-
DECLARE_SOA_COLUMN(Pi2cPdgCode, pi2cPdgCode, int);
94-
95-
DECLARE_SOA_COLUMN(PiccTofDeltaInner, piccTofDeltaInner, float);
96-
DECLARE_SOA_COLUMN(PiccTofNSigmaInner, piccTofNSigmaInner, float);
97-
DECLARE_SOA_COLUMN(PiccTofDeltaOuter, piccTofDeltaOuter, float);
98-
DECLARE_SOA_COLUMN(PiccTofNSigmaOuter, piccTofNSigmaOuter, float);
99-
DECLARE_SOA_COLUMN(PiccHasRichSignal, piccHasRichSignal, bool);
100-
DECLARE_SOA_COLUMN(PiccRichNSigma, piccRichNSigma, float);
101-
DECLARE_SOA_COLUMN(PiccPdgCode, piccPdgCode, int);
102-
10378
// Daughter info
10479
DECLARE_SOA_COLUMN(PosPt, posPt, float);
10580
DECLARE_SOA_COLUMN(PosEta, posEta, float);
@@ -159,31 +134,6 @@ DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
159134
otfmulticharm::PiccPt,
160135
otfmulticharm::LUTConfigId);
161136

162-
DECLARE_SOA_TABLE(MCharmPID, "AOD", "MCharmPID",
163-
otfmulticharm::Pi1cTofDeltaInner,
164-
otfmulticharm::Pi1cTofNSigmaInner,
165-
otfmulticharm::Pi1cTofDeltaOuter,
166-
otfmulticharm::Pi1cTofNSigmaOuter,
167-
otfmulticharm::Pi1cHasRichSignal,
168-
otfmulticharm::Pi1cRichNSigma,
169-
otfmulticharm::Pi1cPdgCode,
170-
171-
otfmulticharm::Pi2cTofDeltaInner,
172-
otfmulticharm::Pi2cTofNSigmaInner,
173-
otfmulticharm::Pi2cTofDeltaOuter,
174-
otfmulticharm::Pi2cTofNSigmaOuter,
175-
otfmulticharm::Pi2cHasRichSignal,
176-
otfmulticharm::Pi2cRichNSigma,
177-
otfmulticharm::Pi2cPdgCode,
178-
179-
otfmulticharm::PiccTofDeltaInner,
180-
otfmulticharm::PiccTofNSigmaInner,
181-
otfmulticharm::PiccTofDeltaOuter,
182-
otfmulticharm::PiccTofNSigmaOuter,
183-
otfmulticharm::PiccHasRichSignal,
184-
otfmulticharm::PiccRichNSigma,
185-
otfmulticharm::PiccPdgCode);
186-
187137
DECLARE_SOA_TABLE(MCharmExtra, "AOD", "MCharmExtra",
188138
otfmulticharm::BachPt,
189139
otfmulticharm::BachEta,

ALICE3/TableProducer/alice3MulticharmFinder.cxx

Lines changed: 197 additions & 156 deletions
Large diffs are not rendered by default.

ALICE3/TableProducer/alice3strangenessFinder.cxx

Lines changed: 251 additions & 82 deletions
Large diffs are not rendered by default.

ALICE3/Tasks/alice3-dilepton.cxx

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
/// \author s.scheid@cern.ch, daiki.sekihata@cern.ch
1515
///
1616

17+
#include "ALICE3/DataModel/OTFCollision.h"
1718
#include "ALICE3/DataModel/OTFRICH.h"
1819
#include "ALICE3/DataModel/OTFTOF.h"
1920
#include "ALICE3/DataModel/tracksAlice3.h"
@@ -24,6 +25,7 @@
2425
#include <Framework/AnalysisDataModel.h>
2526
#include <Framework/AnalysisTask.h>
2627
#include <Framework/HistogramRegistry.h>
28+
#include <Framework/O2DatabasePDGPlugin.h>
2729
#include <Framework/runDataProcessing.h>
2830

2931
#include <Math/Vector4D.h>
@@ -54,6 +56,8 @@ struct Alice3Dilepton {
5456
SliceCache cache_mc;
5557
SliceCache cache_rec;
5658

59+
Service<o2::framework::O2DatabasePDG> inspdg;
60+
5761
Configurable<int> pdg{"pdg", 11, "pdg code for analysis. dielectron:11, dimuon:13"};
5862
Configurable<bool> requireHFEid{"requireHFEid", true, "Require HFE identification for both leptons"};
5963
Configurable<float> ptMin{"pt-min", 0.f, "Lower limit in pT"};
@@ -68,6 +72,7 @@ struct Alice3Dilepton {
6872
Configurable<float> nSigmaPionCutInnerTOF{"nSigmaPionCutInnerTOF", 3., "Pion exclusion in inner TOF"};
6973
Configurable<float> nSigmaElectronRich{"nSigmaElectronRich", 3., "Electron inclusion RICH"};
7074
Configurable<float> nSigmaPionRich{"nSigmaPionRich", 3., "Pion exclusion RICH"};
75+
Configurable<int> otfConfig{"otfConfig", 0, "OTF configuration flag"};
7176

7277
HistogramRegistry registry{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7378

@@ -100,6 +105,7 @@ struct Alice3Dilepton {
100105
registry.add("Generated/Particle/prodVy", "Particle Prod. Vertex Y", kTH1F, {axisPrody});
101106
registry.add("Generated/Particle/prodVz", "Particle Prod. Vertex Z", kTH1F, {axisProdz});
102107
registry.add("Generated/Particle/ParticlesPerEvent", "Particles per event", kTH1F, {{100, 0, 100}});
108+
registry.add("Generated/Particle/ParticlesFit", "Charged Particles in Fit acceptance per event", kTH1F, {{15000, 0, 15000}});
103109

104110
registry.add("Generated/Pair/ULS/Tried", "Pair tries", kTH1F, {{10, -0.5, 9.5}});
105111
registry.add("Generated/Pair/ULS/Mass", "Pair Mass", kTH1F, {axisM});
@@ -601,7 +607,19 @@ struct Alice3Dilepton {
601607

602608
auto mcParticles_per_coll = mcParticles.sliceBy(perMCCollision, mccollision.globalIndex());
603609
int nParticlesInEvent = 0;
610+
int nParticlesFIT = 0;
604611
for (const auto& mcParticle : mcParticles_per_coll) {
612+
if (mcParticle.isPhysicalPrimary()) {
613+
if ((2.2 < mcParticle.eta() && mcParticle.eta() < 5.0) || (-3.4 < mcParticle.eta() && mcParticle.eta() < -2.3)) {
614+
auto pdgParticle = inspdg->GetParticle(mcParticle.pdgCode());
615+
if (pdgParticle) {
616+
float charge = pdgParticle->Charge() / 3.f; // Charge in units of |e|
617+
if (std::abs(charge) >= 1.) {
618+
nParticlesFIT++;
619+
}
620+
}
621+
}
622+
}
605623
if (std::abs(mcParticle.pdgCode()) != pdg) {
606624
continue;
607625
}
@@ -624,6 +642,7 @@ struct Alice3Dilepton {
624642

625643
} // end of mc particle loop
626644
registry.fill(HIST("Generated/Particle/ParticlesPerEvent"), nParticlesInEvent);
645+
registry.fill(HIST("Generated/Particle/ParticlesFit"), nParticlesFIT);
627646

628647
auto neg_mcParticles_coll = neg_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
629648
auto pos_mcParticles_coll = pos_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
@@ -636,18 +655,22 @@ struct Alice3Dilepton {
636655
} // end of processGen
637656

638657
using MyTracksMC = soa::Join<aod::Tracks, aod::TracksCov, aod::TracksDCA, aod::McTrackLabels, aod::UpgradeTofs, aod::UpgradeTofMCs, aod::UpgradeRichs, aod::TracksAlice3>;
658+
using Alice3Collision = soa::Join<aod::Collisions, aod::OTFLUTConfigId>;
659+
639660
// Filter trackFilter = etaMin < o2::aod::track::eta &&
640661
// o2::aod::track::eta < etaMax &&
641662
// ptMin < o2::aod::track::pt &&
642663
// o2::aod::track::pt < ptMax &&
643664
// o2::aod::track_alice3::isReconstructed == selectReconstructed;
644665
Filter trackFilter = o2::aod::track_alice3::isReconstructed == selectReconstructed;
645666
using MyFilteredTracksMC = soa::Filtered<MyTracksMC>;
667+
Filter configFilter = (aod::upgrade_collision::lutConfigId == otfConfig);
668+
using MyFilteredAlice3Collision = soa::Filtered<Alice3Collision>;
646669
Preslice<MyFilteredTracksMC> perCollision = aod::track::collisionId;
647670
Partition<MyFilteredTracksMC> posTracks = o2::aod::track::signed1Pt > 0.f;
648671
Partition<MyFilteredTracksMC> negTracks = o2::aod::track::signed1Pt < 0.f;
649672

650-
void processRec(const o2::aod::Collisions& collisions,
673+
void processRec(MyFilteredAlice3Collision const& collisions,
651674
MyFilteredTracksMC const& tracks,
652675
const o2::aod::McCollisions&,
653676
const aod::McParticles& mcParticles)

ALICE3/Tasks/alice3Multicharm.cxx

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ using namespace o2::ml;
6464
using namespace o2::framework;
6565
using namespace o2::framework::expressions;
6666

67-
using MultiCharmTracksPID = soa::Join<aod::MCharmCores, aod::MCharmPID>;
68-
using MultiCharmTracksFull = soa::Join<aod::MCharmCores, aod::MCharmPID, aod::MCharmExtra>;
67+
using MultiCharmTracksPID = soa::Join<aod::MCharmCores, aod::MCharmIndices>;
68+
using MultiCharmTracksFull = soa::Join<aod::MCharmCores, aod::MCharmIndices, aod::MCharmExtra>;
6969

7070
struct Alice3Multicharm {
7171
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -179,44 +179,6 @@ struct Alice3Multicharm {
179179
hMCharmBuilding->GetXaxis()->SetBinLabel(21, "xiccMaxProperLength");
180180
hMCharmBuilding->GetXaxis()->SetBinLabel(22, "xicMinDecayDistanceFromPV");
181181

182-
if (doprocessXiccPID || doprocessXiccExtra) {
183-
auto hPdgCodes = histos.add<TH2>("PIDQA/hPdgCodes", "hPdgCodes", kTH2D, {{3, 0.5, 3.5}, {7, 0.5, 7.5}});
184-
hPdgCodes->GetXaxis()->SetBinLabel(1, "pi1c");
185-
hPdgCodes->GetXaxis()->SetBinLabel(2, "pi2c");
186-
hPdgCodes->GetXaxis()->SetBinLabel(3, "picc");
187-
hPdgCodes->GetYaxis()->SetBinLabel(1, "el");
188-
hPdgCodes->GetYaxis()->SetBinLabel(2, "mu");
189-
hPdgCodes->GetYaxis()->SetBinLabel(3, "pi");
190-
hPdgCodes->GetYaxis()->SetBinLabel(4, "ka");
191-
hPdgCodes->GetYaxis()->SetBinLabel(5, "pr");
192-
hPdgCodes->GetYaxis()->SetBinLabel(6, "xi");
193-
hPdgCodes->GetYaxis()->SetBinLabel(7, "other");
194-
pdgToBin.insert({kElectron, 1});
195-
pdgToBin.insert({kMuonMinus, 2});
196-
pdgToBin.insert({kPiPlus, 3});
197-
pdgToBin.insert({kKPlus, 4});
198-
pdgToBin.insert({kProton, 5});
199-
pdgToBin.insert({kXiMinus, 6});
200-
201-
histos.add("PIDQA/hInnerTofTimeDeltaPi1c", "hInnerTofTimeDeltaPi1c; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
202-
histos.add("PIDQA/hInnerTofTimeDeltaPi2c", "hInnerTofTimeDeltaPi2c; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
203-
histos.add("PIDQA/hInnerTofTimeDeltaPicc", "hInnerTofTimeDeltaPicc; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
204-
histos.add("PIDQA/hOuterTofTimeDeltaPi1c", "hOuterTofTimeDeltaPi1c; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
205-
histos.add("PIDQA/hOuterTofTimeDeltaPi2c", "hOuterTofTimeDeltaPi2c; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
206-
histos.add("PIDQA/hOuterTofTimeDeltaPicc", "hOuterTofTimeDeltaPicc; Reco - expected pion (ps)", kTH1D, {axisTofTrackDelta});
207-
208-
histos.add("PIDQA/hInnerTofNSigmaPi1c", "hInnerTofNSigmaPi1c; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
209-
histos.add("PIDQA/hOuterTofNSigmaPi1c", "hOuterTofNSigmaPi1c; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
210-
histos.add("PIDQA/hInnerTofNSigmaPi2c", "hInnerTofNSigmaPi2c; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
211-
histos.add("PIDQA/hOuterTofNSigmaPi2c", "hOuterTofNSigmaPi2c; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
212-
histos.add("PIDQA/hInnerTofNSigmaPicc", "hInnerTofNSigmaPicc; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
213-
histos.add("PIDQA/hOuterTofNSigmaPicc", "hOuterTofNSigmaPicc; TOF NSigma pion", kTH2D, {axisPt, axisNSigma});
214-
215-
histos.add("PIDQA/hRichNSigmaPi1c", "hRichNSigmaPi1c; RICH NSigma pion", kTH2D, {axisPt, axisNSigma});
216-
histos.add("PIDQA/hRichNSigmaPi2c", "hRichNSigmaPi2c; RICH NSigma pion", kTH2D, {axisPt, axisNSigma});
217-
histos.add("PIDQA/hRichNSigmaPicc", "hRichNSigmaPicc; RICH NSigma pion", kTH2D, {axisPt, axisNSigma});
218-
}
219-
220182
if (doprocessXiccExtra) {
221183
histos.add("XiccProngs/h3dPos", "h3dPos; Xicc pT (GeV/#it(c)); Pos pT (GeV/#it(c)); Pos #eta", kTH3D, {axisPt, axisPt, axisEta});
222184
histos.add("XiccProngs/h3dNeg", "h3dNeg; Xicc pT (GeV/#it(c)); Neg pT (GeV/#it(c)); Neg #eta", kTH3D, {axisPt, axisPt, axisEta});
@@ -282,12 +244,6 @@ struct Alice3Multicharm {
282244
}
283245
}
284246

285-
int getBin(const std::map<int, int>& pdgToBin, int pdg)
286-
{
287-
auto it = pdgToBin.find(pdg);
288-
return (it != pdgToBin.end()) ? it->second : 7;
289-
}
290-
291247
template <typename TMCharmCands>
292248
void genericProcessXicc(TMCharmCands const& xiccCands)
293249
{
@@ -502,34 +458,6 @@ struct Alice3Multicharm {
502458
histos.fill(HIST("SelectionQA/hPi2cPt"), xiccCand.pi2cPt());
503459
histos.fill(HIST("SelectionQA/hPiccPt"), xiccCand.piccPt());
504460

505-
if constexpr (requires { xiccCand.pi1cTofDeltaInner(); }) { // if pid table
506-
histos.fill(HIST("PIDQA/hInnerTofTimeDeltaPi1c"), xiccCand.pi1cTofDeltaInner());
507-
histos.fill(HIST("PIDQA/hInnerTofTimeDeltaPi2c"), xiccCand.pi2cTofDeltaInner());
508-
histos.fill(HIST("PIDQA/hInnerTofTimeDeltaPicc"), xiccCand.piccTofDeltaInner());
509-
histos.fill(HIST("PIDQA/hOuterTofTimeDeltaPi1c"), xiccCand.pi1cTofDeltaOuter());
510-
histos.fill(HIST("PIDQA/hOuterTofTimeDeltaPi2c"), xiccCand.pi2cTofDeltaOuter());
511-
histos.fill(HIST("PIDQA/hOuterTofTimeDeltaPicc"), xiccCand.piccTofDeltaOuter());
512-
histos.fill(HIST("PIDQA/hInnerTofNSigmaPi1c"), xiccCand.pi1cPt(), xiccCand.pi1cTofNSigmaInner());
513-
histos.fill(HIST("PIDQA/hOuterTofNSigmaPi1c"), xiccCand.pi1cPt(), xiccCand.pi1cTofNSigmaOuter());
514-
histos.fill(HIST("PIDQA/hInnerTofNSigmaPi2c"), xiccCand.pi2cPt(), xiccCand.pi2cTofNSigmaInner());
515-
histos.fill(HIST("PIDQA/hOuterTofNSigmaPi2c"), xiccCand.pi2cPt(), xiccCand.pi2cTofNSigmaOuter());
516-
histos.fill(HIST("PIDQA/hInnerTofNSigmaPicc"), xiccCand.piccPt(), xiccCand.piccTofNSigmaInner());
517-
histos.fill(HIST("PIDQA/hOuterTofNSigmaPicc"), xiccCand.piccPt(), xiccCand.piccTofNSigmaOuter());
518-
if (xiccCand.pi1cHasRichSignal()) {
519-
histos.fill(HIST("PIDQA/hRichNSigmaPi1c"), xiccCand.pi1cPt(), xiccCand.pi1cRichNSigma());
520-
}
521-
if (xiccCand.pi2cHasRichSignal()) {
522-
histos.fill(HIST("PIDQA/hRichNSigmaPi2c"), xiccCand.pi2cPt(), xiccCand.pi2cRichNSigma());
523-
}
524-
if (xiccCand.piccHasRichSignal()) {
525-
histos.fill(HIST("PIDQA/hRichNSigmaPicc"), xiccCand.piccPt(), xiccCand.piccRichNSigma());
526-
}
527-
528-
histos.fill(HIST("PIDQA/hPdgCodes"), 1, getBin(pdgToBin, std::abs(xiccCand.pi1cPdgCode())));
529-
histos.fill(HIST("PIDQA/hPdgCodes"), 2, getBin(pdgToBin, std::abs(xiccCand.pi2cPdgCode())));
530-
histos.fill(HIST("PIDQA/hPdgCodes"), 3, getBin(pdgToBin, std::abs(xiccCand.piccPdgCode())));
531-
}
532-
533461
if constexpr (requires { xiccCand.negPt(); }) { // if extra table
534462
histos.fill(HIST("XiccProngs/h3dNeg"), xiccCand.xiccPt(), xiccCand.negPt(), xiccCand.negEta());
535463
histos.fill(HIST("XiccProngs/h3dPos"), xiccCand.xiccPt(), xiccCand.posPt(), xiccCand.posEta());
@@ -552,18 +480,12 @@ struct Alice3Multicharm {
552480
genericProcessXicc(multiCharmTracks);
553481
}
554482

555-
void processXiccPID(soa::Filtered<MultiCharmTracksPID> const& multiCharmTracks)
556-
{
557-
genericProcessXicc(multiCharmTracks);
558-
}
559-
560483
void processXiccExtra(soa::Filtered<MultiCharmTracksFull> const& multiCharmTracks)
561484
{
562485
genericProcessXicc(multiCharmTracks);
563486
}
564487

565488
PROCESS_SWITCH(Alice3Multicharm, processXicc, "find Xicc baryons", true);
566-
PROCESS_SWITCH(Alice3Multicharm, processXiccPID, "find Xicc baryons with more QA from PID information", false);
567489
PROCESS_SWITCH(Alice3Multicharm, processXiccExtra, "find Xicc baryons with all QA", false);
568490
};
569491

ALICE3/Tasks/alice3Strangeness.cxx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,10 +246,12 @@ struct Alice3Strangeness {
246246
{
247247
// if(collision.lutConfigId()!=idGeometry)
248248
// return;
249+
float collisionZ = collision.posZ();
250+
histos.fill(HIST("hPVz"), collisionZ);
249251
for (auto const& v0 : v0Candidates) {
250-
bool isK0 = (v0.mK0Short() - o2::constants::physics::MassK0Short) < selectionValues.acceptedK0MassWindow;
251-
bool isLambda = (v0.mLambda() - o2::constants::physics::MassLambda0) < selectionValues.acceptedLambdaMassWindow;
252-
bool isAntiLambda = (v0.mAntiLambda() - o2::constants::physics::MassLambda0) < selectionValues.acceptedLambdaMassWindow;
252+
bool isK0 = std::abs(v0.mK0Short() - o2::constants::physics::MassK0Short) < selectionValues.acceptedK0MassWindow;
253+
bool isLambda = std::abs(v0.mLambda() - o2::constants::physics::MassLambda0) < selectionValues.acceptedLambdaMassWindow;
254+
bool isAntiLambda = std::abs(v0.mAntiLambda() - o2::constants::physics::MassLambda0) < selectionValues.acceptedLambdaMassWindow;
253255

254256
histos.fill(HIST("reconstructedCandidates/hArmeterosBeforeAllSelections"), v0.alpha(), v0.qtArm());
255257
histos.fill(HIST("hV0CandidateCounter"), 0.5);

Common/Tools/EventSelectionModule.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ class BcSelectionModule
159159
int mTimeFrameStartBorderMargin = 300; // default value
160160
int mTimeFrameEndBorderMargin = 4000; // default value
161161
std::string strLPMProductionTag = ""; // MC production tag to be retrieved from AO2D metadata
162+
std::string strPassName = ""; // RecoPassName (for data) or AnchorPassName (for MC) from metadata
162163
bool isMC = false;
163164

164165
TriggerAliases* aliases = nullptr;
@@ -195,8 +196,9 @@ class BcSelectionModule
195196
return;
196197
}
197198
}
198-
strLPMProductionTag = metadataInfo.get("LPMProductionTag"); // to extract info from ccdb by the tag
199199
isMC = metadataInfo.isMC();
200+
strLPMProductionTag = metadataInfo.get("LPMProductionTag"); // to extract info from ccdb by the tag
201+
strPassName = metadataInfo.get(isMC ? "AnchorPassName" : "RecoPassName");
200202

201203
// add counter
202204
histos.add("bcselection/hCounterInvalidBCTimestamp", "", o2::framework::kTH1D, {{1, 0., 1.}});
@@ -279,8 +281,15 @@ class BcSelectionModule
279281
// QC info
280282
std::map<std::string, std::string> metadata;
281283
metadata["run"] = Form("%d", run);
284+
metadata["passName"] = strPassName;
285+
LOGP(info, "accessing pass-specific rct object for run={} and passName={} from ccdb", run, strPassName);
282286
ccdb->setFatalWhenNull(0);
283287
mapRCT = ccdb->template getSpecific<std::map<uint64_t, uint32_t>>("RCT/Flags/RunFlags", ts, metadata);
288+
if (mapRCT == nullptr) {
289+
LOGP(info, "pass-specific rct object missing... trying the latest");
290+
metadata.erase("passName");
291+
mapRCT = ccdb->template getSpecific<std::map<uint64_t, uint32_t>>("RCT/Flags/RunFlags", ts, metadata);
292+
}
284293
ccdb->setFatalWhenNull(1);
285294
if (mapRCT == nullptr) {
286295
LOGP(info, "rct object missing... inserting dummy rct flags");

0 commit comments

Comments
 (0)