Skip to content

Commit 02ba117

Browse files
committed
Add tree
1 parent 0ddc4fa commit 02ba117

File tree

8 files changed

+982
-243
lines changed

8 files changed

+982
-243
lines changed

ALICE3/DataModel/A3DecayFinderTables.h

Lines changed: 97 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -126,42 +126,42 @@ DECLARE_SOA_COLUMN(NProngsContributorsPV, nProngsContributorsPV, uint8_t);
126126
DECLARE_SOA_COLUMN(BitmapProngsContributorsPV, bitmapProngsContributorsPV, uint8_t); //! bitmap with booleans indicating prongs contributing to the primary-vertex reconstruction
127127

128128
/// prong PID nsigma
129-
DECLARE_SOA_COLUMN(NSigTrkPi0, nSigTrkPi0, float); //!
130-
DECLARE_SOA_COLUMN(NSigTrkKa0, nSigTrkKa0, float); //!
131-
DECLARE_SOA_COLUMN(NSigTrkPr0, nSigTrkPr0, float); //!
132-
DECLARE_SOA_COLUMN(NSigTrkPi1, nSigTrkPi1, float); //!
133-
DECLARE_SOA_COLUMN(NSigTrkKa1, nSigTrkKa1, float); //!
134-
DECLARE_SOA_COLUMN(NSigTrkPr1, nSigTrkPr1, float); //!
135-
DECLARE_SOA_COLUMN(NSigTrkPi2, nSigTrkPi2, float); //!
136-
DECLARE_SOA_COLUMN(NSigTrkKa2, nSigTrkKa2, float); //!
137-
DECLARE_SOA_COLUMN(NSigTrkPr2, nSigTrkPr2, float); //!
138-
DECLARE_SOA_COLUMN(NSigRichPi0, nSigRichPi0, float); //!
139-
DECLARE_SOA_COLUMN(NSigRichKa0, nSigRichKa0, float); //!
140-
DECLARE_SOA_COLUMN(NSigRichPr0, nSigRichPr0, float); //!
141-
DECLARE_SOA_COLUMN(NSigRichPi1, nSigRichPi1, float); //!
142-
DECLARE_SOA_COLUMN(NSigRichKa1, nSigRichKa1, float); //!
143-
DECLARE_SOA_COLUMN(NSigRichPr1, nSigRichPr1, float); //!
144-
DECLARE_SOA_COLUMN(NSigRichPi2, nSigRichPi2, float); //!
145-
DECLARE_SOA_COLUMN(NSigRichKa2, nSigRichKa2, float); //!
146-
DECLARE_SOA_COLUMN(NSigRichPr2, nSigRichPr2, float); //!
147-
DECLARE_SOA_COLUMN(NSigInnTofPi0, nSigInnTofPi0, float); //!
148-
DECLARE_SOA_COLUMN(NSigInnTofKa0, nSigInnTofKa0, float); //!
149-
DECLARE_SOA_COLUMN(NSigInnTofPr0, nSigInnTofPr0, float); //!
150-
DECLARE_SOA_COLUMN(NSigInnTofPi1, nSigInnTofPi1, float); //!
151-
DECLARE_SOA_COLUMN(NSigInnTofKa1, nSigInnTofKa1, float); //!
152-
DECLARE_SOA_COLUMN(NSigInnTofPr1, nSigInnTofPr1, float); //!
153-
DECLARE_SOA_COLUMN(NSigInnTofPi2, nSigInnTofPi2, float); //!
154-
DECLARE_SOA_COLUMN(NSigInnTofKa2, nSigInnTofKa2, float); //!
155-
DECLARE_SOA_COLUMN(NSigInnTofPr2, nSigInnTofPr2, float); //!
156-
DECLARE_SOA_COLUMN(NSigOutTofPi0, nSigOutTofPi0, float); //!
157-
DECLARE_SOA_COLUMN(NSigOutTofKa0, nSigOutTofKa0, float); //!
158-
DECLARE_SOA_COLUMN(NSigOutTofPr0, nSigOutTofPr0, float); //!
159-
DECLARE_SOA_COLUMN(NSigOutTofPi1, nSigOutTofPi1, float); //!
160-
DECLARE_SOA_COLUMN(NSigOutTofKa1, nSigOutTofKa1, float); //!
161-
DECLARE_SOA_COLUMN(NSigOutTofPr1, nSigOutTofPr1, float); //!
162-
DECLARE_SOA_COLUMN(NSigOutTofPi2, nSigOutTofPi2, float); //!
163-
DECLARE_SOA_COLUMN(NSigOutTofKa2, nSigOutTofKa2, float); //!
164-
DECLARE_SOA_COLUMN(NSigOutTofPr2, nSigOutTofPr2, float); //!
129+
DECLARE_SOA_COLUMN(NSigTrkPi0, nSigTrkPi0, float); //!
130+
DECLARE_SOA_COLUMN(NSigTrkKa0, nSigTrkKa0, float); //!
131+
DECLARE_SOA_COLUMN(NSigTrkPr0, nSigTrkPr0, float); //!
132+
DECLARE_SOA_COLUMN(NSigTrkPi1, nSigTrkPi1, float); //!
133+
DECLARE_SOA_COLUMN(NSigTrkKa1, nSigTrkKa1, float); //!
134+
DECLARE_SOA_COLUMN(NSigTrkPr1, nSigTrkPr1, float); //!
135+
DECLARE_SOA_COLUMN(NSigTrkPi2, nSigTrkPi2, float); //!
136+
DECLARE_SOA_COLUMN(NSigTrkKa2, nSigTrkKa2, float); //!
137+
DECLARE_SOA_COLUMN(NSigTrkPr2, nSigTrkPr2, float); //!
138+
DECLARE_SOA_COLUMN(NSigRichPi0, nSigRichPi0, float); //!
139+
DECLARE_SOA_COLUMN(NSigRichKa0, nSigRichKa0, float); //!
140+
DECLARE_SOA_COLUMN(NSigRichPr0, nSigRichPr0, float); //!
141+
DECLARE_SOA_COLUMN(NSigRichPi1, nSigRichPi1, float); //!
142+
DECLARE_SOA_COLUMN(NSigRichKa1, nSigRichKa1, float); //!
143+
DECLARE_SOA_COLUMN(NSigRichPr1, nSigRichPr1, float); //!
144+
DECLARE_SOA_COLUMN(NSigRichPi2, nSigRichPi2, float); //!
145+
DECLARE_SOA_COLUMN(NSigRichKa2, nSigRichKa2, float); //!
146+
DECLARE_SOA_COLUMN(NSigRichPr2, nSigRichPr2, float); //!
147+
DECLARE_SOA_COLUMN(NSigInnTofPi0, nSigInnTofPi0, float); //!
148+
DECLARE_SOA_COLUMN(NSigInnTofKa0, nSigInnTofKa0, float); //!
149+
DECLARE_SOA_COLUMN(NSigInnTofPr0, nSigInnTofPr0, float); //!
150+
DECLARE_SOA_COLUMN(NSigInnTofPi1, nSigInnTofPi1, float); //!
151+
DECLARE_SOA_COLUMN(NSigInnTofKa1, nSigInnTofKa1, float); //!
152+
DECLARE_SOA_COLUMN(NSigInnTofPr1, nSigInnTofPr1, float); //!
153+
DECLARE_SOA_COLUMN(NSigInnTofPi2, nSigInnTofPi2, float); //!
154+
DECLARE_SOA_COLUMN(NSigInnTofKa2, nSigInnTofKa2, float); //!
155+
DECLARE_SOA_COLUMN(NSigInnTofPr2, nSigInnTofPr2, float); //!
156+
DECLARE_SOA_COLUMN(NSigOutTofPi0, nSigOutTofPi0, float); //!
157+
DECLARE_SOA_COLUMN(NSigOutTofKa0, nSigOutTofKa0, float); //!
158+
DECLARE_SOA_COLUMN(NSigOutTofPr0, nSigOutTofPr0, float); //!
159+
DECLARE_SOA_COLUMN(NSigOutTofPi1, nSigOutTofPi1, float); //!
160+
DECLARE_SOA_COLUMN(NSigOutTofKa1, nSigOutTofKa1, float); //!
161+
DECLARE_SOA_COLUMN(NSigOutTofPr1, nSigOutTofPr1, float); //!
162+
DECLARE_SOA_COLUMN(NSigOutTofPi2, nSigOutTofPi2, float); //!
163+
DECLARE_SOA_COLUMN(NSigOutTofKa2, nSigOutTofKa2, float); //!
164+
DECLARE_SOA_COLUMN(NSigOutTofPr2, nSigOutTofPr2, float); //!
165165

166166
// candidate properties
167167
DECLARE_SOA_DYNAMIC_COLUMN(Pt, pt, //!
@@ -204,13 +204,9 @@ DECLARE_SOA_DYNAMIC_COLUMN(ImpactParameterXY, impactParameterXY, //!
204204
[](float xVtxP, float yVtxP, float zVtxP, float xVtxS, float yVtxS, float zVtxS, float px, float py, float pz) -> float { return RecoDecay::impParXY(std::array{xVtxP, yVtxP, zVtxP}, std::array{xVtxS, yVtxS, zVtxS}, std::array{px, py, pz}); });
205205

206206
// ML scores columns
207-
DECLARE_SOA_COLUMN(MlScore0MassHypo0, mlScore0MassHypo0, float); //!
208-
DECLARE_SOA_COLUMN(MlScore1MassHypo0, mlScore1MassHypo0, float); //!
209-
DECLARE_SOA_COLUMN(MlScore2MassHypo0, mlScore2MassHypo0, float); //!
210-
DECLARE_SOA_COLUMN(MlScore0MassHypo1, mlScore0MassHypo1, float); //!
211-
DECLARE_SOA_COLUMN(MlScore1MassHypo1, mlScore1MassHypo1, float); //!
212-
DECLARE_SOA_COLUMN(MlScore2MassHypo1, mlScore2MassHypo1, float); //!
213-
207+
DECLARE_SOA_COLUMN(MlScore0, mlScore0, float); //!
208+
DECLARE_SOA_COLUMN(MlScore1, mlScore1, float); //!
209+
DECLARE_SOA_COLUMN(MlScore2, mlScore2, float); //!
214210
} // namespace a3_hf_cand
215211

216212
// general columns
@@ -396,30 +392,68 @@ DECLARE_SOA_TABLE(Alice3Cand3Ps, "AOD", "ALICE3CAND3P", //!
396392
a3_hf_cand::PxProng2, a3_hf_cand::PyProng2, a3_hf_cand::PzProng2>,
397393
a3_hf_cand_3prong::E<a3_hf_cand_3prong::Px, a3_hf_cand_3prong::Py, a3_hf_cand_3prong::Pz>
398394
);
399-
400-
// // extended table with expression columns that can be used as arguments of dynamic columns
401-
// DECLARE_SOA_EXTENDED_TABLE_USER(Alice3Ext3Ps, Alice3Cand3Ps, "ALICE3EXT3P", //!
402-
// a3_hf_cand_3prong::Px, a3_hf_cand_3prong::Py, a3_hf_cand_3prong::Pz);
403-
404-
// using Alice3Cand3Ps = Alice3Ext3Ps;
405395

406396
namespace a3_hf_sel_3prong
407397
{
408-
DECLARE_SOA_COLUMN(IsSelCandMassHypo0, isSelCandMassHypo0, bool); //!
409-
DECLARE_SOA_COLUMN(IsSelCandMassHypo1, isSelCandMassHypo1, bool); //!
398+
DECLARE_SOA_COLUMN(IsSel, isSel, bool); //!
399+
400+
// PID selection
401+
enum PidSelections {
402+
None = 0,
403+
// Per-prong selections
404+
TrkProng0,
405+
RichProng0,
406+
InTofProng0,
407+
OutTofProng0,
408+
TrkProng1,
409+
RichProng1,
410+
InTofProng1,
411+
OutTofProng1,
412+
TrkProng2,
413+
RichProng2,
414+
InTofProng2,
415+
OutTofProng2,
416+
// Single-system selections
417+
AllTrk,
418+
AllRich,
419+
AllInTof,
420+
AllOutTof,
421+
// Two-system combinations
422+
AllTrkAndRich,
423+
AllTrkAndInTof,
424+
AllTrkAndOutTof,
425+
AllRichAndInTof,
426+
AllRichAndOutTof,
427+
AllInTofAndOutTof,
428+
// Three-system combinations
429+
AllTrkAndRichAndInTof,
430+
AllTrkAndRichAndOutTof,
431+
AllTrkAndInTofAndOutTof,
432+
AllRichAndInTofAndOutTof,
433+
// All four systems
434+
AllTrkAndRichAndInTofAndOutTof,
435+
NPidSelections
436+
};
437+
DECLARE_SOA_COLUMN(PidBitMask, pidBitMask, uint32_t); //!
410438
} // namespace a3_hf_sel_3prong
411439
DECLARE_SOA_TABLE(Alice3Sel3Ps, "AOD", "ALICE3SEL3P", //!
412-
a3_hf_sel_3prong::IsSelCandMassHypo0,
413-
a3_hf_sel_3prong::IsSelCandMassHypo1);
440+
a3_hf_sel_3prong::IsSel,
441+
a3_hf_sel_3prong::PidBitMask);
414442

415-
namespace a3_hf_mc_truth_3prong
443+
namespace a3_mc_truth
416444
{
417-
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int); //! 0 for bkg, 1 for true particle, 2 for true antiparticle // TODO: add prompt/non-prompt
418-
DECLARE_SOA_COLUMN(FlagMcRec, mcTruthInfo, int); //! 0 for bkg, 1 for true particle, 2 for true antiparticle // TODO: add prompt/non-prompt
419-
} // namespace a3_hf_mc_truth_3prong
420-
DECLARE_SOA_TABLE(Alice3McTruth3Ps, "AOD", "ALICE3MCTRUTH3P", //!
421-
a3_hf_mc_truth_3prong::OriginMcRec,
422-
a3_hf_mc_truth_3prong::FlagMcRec); //!
445+
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int);
446+
DECLARE_SOA_COLUMN(FlagMcRec, flagMcRec, int);
447+
DECLARE_SOA_COLUMN(OriginMcGen, originMcGen, int);
448+
DECLARE_SOA_COLUMN(FlagMcGen, flagMcGen, int);
449+
} // namespace a3_mc_truth
450+
DECLARE_SOA_TABLE(Alice3McRecFlags, "AOD", "ALICE3MCRECFLAG", //!
451+
a3_mc_truth::OriginMcRec,
452+
a3_mc_truth::FlagMcRec);
453+
454+
DECLARE_SOA_TABLE(Alice3McGenFlags, "AOD", "ALICE3MCGENFLAG", //!
455+
a3_mc_truth::OriginMcGen,
456+
a3_mc_truth::FlagMcGen);
423457

424458
DECLARE_SOA_TABLE(Alice3PidLcs, "AOD", "ALICE3PIDLC", //!
425459
a3_hf_cand::NSigTrkPr0,
@@ -436,12 +470,9 @@ DECLARE_SOA_TABLE(Alice3PidLcs, "AOD", "ALICE3PIDLC", //!
436470
a3_hf_cand::NSigOutTofPi2);
437471

438472
DECLARE_SOA_TABLE(Alice3Ml3Ps, "AOD", "ALICE3ML3P", //!
439-
a3_hf_cand::MlScore0MassHypo0,
440-
a3_hf_cand::MlScore1MassHypo0,
441-
a3_hf_cand::MlScore2MassHypo0,
442-
a3_hf_cand::MlScore0MassHypo1,
443-
a3_hf_cand::MlScore1MassHypo1,
444-
a3_hf_cand::MlScore2MassHypo1);
473+
a3_hf_cand::MlScore0,
474+
a3_hf_cand::MlScore1,
475+
a3_hf_cand::MlScore2);
445476

446477
} // namespace o2::aod
447478

ALICE3/TableProducer/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,9 @@ o2physics_add_dpl_workflow(alice3-correlatorddbar
4949
o2physics_add_dpl_workflow(alice3-selector-3prong
5050
SOURCES alice3-selector3prong.cxx
5151
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter O2Physics::MLCore
52+
COMPONENT_NAME Analysis)
53+
54+
o2physics_add_dpl_workflow(alice3-tree-creator-3prong
55+
SOURCES alice3-treecreator3prong.cxx
56+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter O2Physics::MLCore
5257
COMPONENT_NAME Analysis)

ALICE3/TableProducer/alice3-decayfinder.cxx

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "ALICE3/DataModel/OTFRICH.h"
4949
#include "ALICE3/DataModel/RICH.h"
5050
#include "ALICE3/DataModel/A3DecayFinderTables.h"
51+
#include "ALICE3/utils/mcParticlesInfo.h"
5152

5253
using namespace o2;
5354
using namespace o2::framework;
@@ -60,32 +61,34 @@ using std::array;
6061
#define bitoff(var, nbit) ((var) &= ~(static_cast<uint32_t>(1) << (nbit))) //((a) &= ~(1ULL<<(b)))
6162
// #define bitcheck(var, nbit) ((var) & (static_cast<uint32_t>(1) << (nbit)))
6263

63-
enum Particle {
64-
Lc = 0,
65-
AntiLc = 1
66-
};
64+
// enum Particle {
65+
// Lc = 0,
66+
// AntiLc = 1
67+
// };
6768

68-
enum MassHypo {
69-
Main = 1,
70-
Swapped = -1
71-
};
69+
// enum MassHypo {
70+
// Main = 1,
71+
// Swapped = -1
72+
// };
7273

7374
// For MC association in pre-selection
7475
// using FullTracksExt = soa::Join<aod::Tracks, aod::TracksCov>;
7576
// using labeledTracks = soa::Join<aod::Tracks, aod::McTrackLabels>;
7677
// using tofTracks = soa::Join<aod::Tracks, aod::UpgradeTofs>;
7778
// using richTracks = soa::Join<aod::Tracks, aod::RICHs>;
7879
using Alice3tracksWPid = soa::Join<aod::Tracks, aod::TracksCov, aod::Alice3DecayMaps, aod::McTrackLabels, aod::TracksDCA, aod::UpgradeTrkPids, aod::UpgradeTofs, aod::UpgradeRichs>;
80+
using namespace o2::a3_mc_parts_info;
7981

8082
struct alice3decayFinder {
8183
SliceCache cache;
8284

83-
Produces<aod::Alice3D0Meson> candidateD0meson; // contains D0 and D0bar selected candidates (separated, i.e. each row with a single mass hypothesis)
84-
Produces<aod::Alice3D0Sel> selectionOutcome; // flags for isSelD0 and isSelD0bar
85-
Produces<aod::Alice3D0MCTruth> mcTruthOutcome; // contains MC truth info (is true D0, true D0bar, or bkg)
86-
Produces<aod::Alice3Cand3Ps> candidate3Prong; // contains Lc selected candidates
87-
Produces<aod::Alice3McTruth3Ps> mcTruth3Prong; // contains MC truth info (is true Lc, or bkg)
88-
Produces<aod::Alice3PidLcs> pidInfo3prong; // contains PID info for Lc candidates
85+
Produces<aod::Alice3D0Meson> candidateD0meson; // contains D0 and D0bar selected candidates (separated, i.e. each row with a single mass hypothesis)
86+
Produces<aod::Alice3D0Sel> selectionOutcome; // flags for isSelD0 and isSelD0bar
87+
Produces<aod::Alice3D0MCTruth> mcTruthOutcome; // contains MC truth info (is true D0, true D0bar, or bkg)
88+
Produces<aod::Alice3Cand3Ps> candidate3Prong; // contains Lc selected candidates
89+
Produces<aod::Alice3McRecFlags> mcRecFlags; // contains MC truth info (is true Lc, or bkg)
90+
Produces<aod::Alice3PidLcs> pidInfoLcDaugs; // contains PID info for Lc candidates
91+
Produces<aod::Alice3McGenFlags> mcGenFlags; // contains MC gen info for 3-prong candidates
8992

9093
// Vertexing
9194
Configurable<bool> propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"};
@@ -242,7 +245,7 @@ struct alice3decayFinder {
242245
float errorDecayLength; // normalized 3D decay length
243246
float errorDecayLengthXY; // normalized 3D decay length
244247
float chi2PCA; // normalized 3D decay length
245-
int mcTruth; // 0 = bkg, 1 = particle, 2 = antiparticle
248+
int flagMc; // 0 = bkg, pdg code for signal
246249
int origin; // 1 = prompt, 2 = non-prompt
247250
} cand3prong;
248251

@@ -336,6 +339,7 @@ struct alice3decayFinder {
336339
template <Particle Cand, typename TTrackType>
337340
bool buildDecayCandidateThreeBody(aod::Collision const& collision, TTrackType const& prong0, TTrackType const& prong1, TTrackType const& prong2, aod::McParticles const& mcParticles)
338341
{
342+
LOG(info) << "Building 3-prong candidate";
339343
// get the collision primary vertex
340344
auto primaryVertex = getPrimaryVertex(collision);
341345
auto covMatrixPV = primaryVertex.getCov();
@@ -432,15 +436,14 @@ struct alice3decayFinder {
432436
// MC truth check
433437
int8_t sign = 0;
434438
auto arrayDaughters = std::array{prong0, prong1, prong2};
439+
LOG(info) << "Particle mother pdg: " << getPartPdg(Cand);
440+
LOG(info) << "Particle daughter pdgs: " << getPartDaugs(Cand)[0] << ", " << getPartDaugs(Cand)[1] << ", " << getPartDaugs(Cand)[2];
435441
int indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, getPartPdg(Cand), getPartDaugs(Cand), true, &sign, 2);
442+
auto motherPart = mcParticles.rawIteratorAt(indexRec);
436443
if (indexRec < 0) {
437-
cand3prong.mcTruth = 0; // bkg
444+
cand3prong.flagMc = 0; // bkg
438445
} else {
439-
if (sign > 0) {
440-
cand3prong.mcTruth = 1; // Particle
441-
} else {
442-
cand3prong.mcTruth = 2; // AntiParticle
443-
}
446+
cand3prong.flagMc = motherPart.pdgCode(); // Particle
444447
}
445448
LOG(info) << "MC matching 3, indexRec: " << indexRec;
446449

@@ -588,17 +591,17 @@ struct alice3decayFinder {
588591
}
589592
}
590593
if (doprocessFindLc) {
591-
histos.add("h2dGenLc", "h2dGenLc", kTH2F, {axisPt, axisEta});
592-
histos.add("h2dGenLcbar", "h2dGenLcbar", kTH2F, {axisPt, axisEta});
593-
histos.add("h3dRec3Prong", "h2dRecLc", kTH3F, {axisPt, axisEta, axisLcMass});
594-
histos.add("h3dRec3Prongbar", "h2dRecLcbar", kTH3F, {axisPt, axisEta, axisLcMass});
594+
histos.add("h2dGen3Prong", "h2dGen3Prong", kTH2F, {axisPt, axisEta});
595+
histos.add("h2dGen3ProngBar", "h2dGen3ProngBar", kTH2F, {axisPt, axisEta});
596+
histos.add("h3dRec3Prong", "h3dRec3Prong", kTH3F, {axisPt, axisEta, axisLcMass});
597+
// histos.add("h3dRec3Prongbar", "h3dRec3Prongbar", kTH3F, {axisPt, axisEta, axisLcMass});
595598

596599
histos.add("hMass3Prong", "hMass3Prong", kTH1F, {axisLcMass});
597-
histos.add("hMass3Prongbar", "hMass3Prongbar", kTH1F, {axisLcMass});
600+
// histos.add("hMass3Prongbar", "hMass3Prongbar", kTH1F, {axisLcMass});
598601

599602
if (doDCAplotsD) {
600603
histos.add("hDCA3ProngDaughters", "hDCA3ProngDaughters", kTH1D, {axisDCADaughters});
601-
histos.add("hDCALcbarDaughters", "hDCALcbarDaughters", kTH1D, {axisDCA});
604+
// histos.add("hDCALcbarDaughters", "hDCALcbarDaughters", kTH1D, {axisDCA});
602605
histos.add("h2dDCAxyVsPtPiPlusFrom3P", "h2dDCAxyVsPtPiPlusFrom3P", kTH2F, {axisPt, axisDCA});
603606
histos.add("h2dDCAxyVsPtPiMinusFrom3P", "h2dDCAxyVsPtPiMinusFrom3P", kTH2F, {axisPt, axisDCA});
604607
histos.add("h2dDCAxyVsPtKaPlusFrom3P", "h2dDCAxyVsPtKaPlusFrom3P", kTH2F, {axisPt, axisDCA});
@@ -653,10 +656,14 @@ struct alice3decayFinder {
653656
}
654657
}
655658
if (doprocessFindLc) {
656-
for (auto const& mcParticle : trueLc)
657-
histos.fill(HIST("h2dGenLc"), mcParticle.pt(), mcParticle.eta());
658-
for (auto const& mcParticle : trueLcbar)
659-
histos.fill(HIST("h2dGenLcbar"), mcParticle.pt(), mcParticle.eta());
659+
for (auto const& mcParticle : trueLc) {
660+
mcGenFlags(mcParticle.pdgCode(), 1);
661+
histos.fill(HIST("h2dGen3Prong"), mcParticle.pt(), mcParticle.eta());
662+
}
663+
for (auto const& mcParticle : trueLcbar) {
664+
histos.fill(HIST("h2dGen3ProngBar"), mcParticle.pt(), mcParticle.eta());
665+
mcGenFlags(mcParticle.pdgCode(), 1);
666+
}
660667
}
661668
}
662669

@@ -980,7 +987,7 @@ struct alice3decayFinder {
980987
void fillPidTable(TProng const& prong0, TProng const& prong1, TProng const& prong2)
981988
{
982989
if constexpr (Cand == Particle::Lc || Cand == Particle::AntiLc) {
983-
pidInfo3prong(prong0.nSigmaTrkPr(), prong0.nSigmaProtonRich(), prong0.nSigmaProtonInnerTOF(), prong0.nSigmaProtonOuterTOF(),
990+
pidInfoLcDaugs(prong0.nSigmaTrkPr(), prong0.nSigmaProtonRich(), prong0.nSigmaProtonInnerTOF(), prong0.nSigmaProtonOuterTOF(),
984991
prong1.nSigmaTrkKa(), prong1.nSigmaKaonRich(), prong1.nSigmaKaonInnerTOF(), prong1.nSigmaKaonOuterTOF(),
985992
prong2.nSigmaTrkPi(), prong2.nSigmaPionRich(), prong2.nSigmaPionInnerTOF(), prong2.nSigmaPionOuterTOF());
986993
} else {
@@ -992,7 +999,7 @@ struct alice3decayFinder {
992999
template<Particle Cand, MassHypo Hypo, typename TProng>
9931000
void fill3ProngTable(aod::Collision const& collision, TProng const& prongs0, TProng const& prongs1, TProng const& prongs2, aod::McParticles const& mcParticles)
9941001
{
995-
LOG(info) << "Filling 3-prong candidates ...";
1002+
// LOG(info) << "Filling 3-prong candidates with nprongs0: " << prongs0.size() << ", nprongs1: " << prongs1.size() << ", nprongs2: " << prongs2.size();
9961003
for (auto const& prong0 : prongs0) {
9971004
for (auto const& prong2 : prongs2) {
9981005
if (prong2.globalIndex() == prong0.globalIndex())
@@ -1035,12 +1042,12 @@ struct alice3decayFinder {
10351042
static_cast<int>(Hypo) * static_cast<int>(Cand),
10361043
candPx, candPy, candPz
10371044
);
1038-
mcTruth3Prong(cand3prong.mcTruth, cand3prong.origin); // placeholder for prompt/non-prompt
1045+
mcRecFlags(cand3prong.flagMc, cand3prong.origin); // placeholder for prompt/non-prompt
10391046
fillPidTable<Cand>(prong0, prong1, prong2);
10401047
}
10411048
}
10421049
}
1043-
LOG(info) << "3-prong candidates filled.";
1050+
// LOG(info) << "3-prong candidates filled.";
10441051
}
10451052
//*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*
10461053

0 commit comments

Comments
 (0)