Skip to content

Commit 88da7d3

Browse files
authored
Fix unbund issue at collision lever In Xic0VsMult
1 parent c3e50f5 commit 88da7d3

File tree

1 file changed

+69
-54
lines changed

1 file changed

+69
-54
lines changed

PWGHF/TableProducer/treeCreatorToXiPi.cxx

Lines changed: 69 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ DECLARE_SOA_COLUMN(TofNSigmaPiFromCharmBaryon, tofNSigmaPiFromCharmBaryon, float
158158
DECLARE_SOA_COLUMN(TofNSigmaPiFromCasc, tofNSigmaPiFromCasc, float);
159159
DECLARE_SOA_COLUMN(TofNSigmaPiFromLambda, tofNSigmaPiFromLambda, float);
160160
DECLARE_SOA_COLUMN(TofNSigmaPrFromLambda, tofNSigmaPrFromLambda, float);
161+
DECLARE_SOA_COLUMN(CollInf, collInf, int);
161162

162163
} // namespace full
163164

@@ -177,8 +178,10 @@ DECLARE_SOA_TABLE(HfToXiPiEvs, "AOD", "HFTOXIPIEV",
177178
full::CentFDDM,
178179
full::MultZeqNTracksPV);
179180

181+
DECLARE_SOA_TABLE(HfToXiPiBase, "AOD", "HFTOXIPIBASE",
182+
full::CollInf);
183+
180184
DECLARE_SOA_TABLE(HfToXiPiFulls, "AOD", "HFTOXIPIFULL",
181-
full::CollisionId,
182185
full::XPv, full::YPv, full::ZPv, collision::NumContrib, collision::Chi2,
183186
full::XDecayVtxCharmBaryon, full::YDecayVtxCharmBaryon, full::ZDecayVtxCharmBaryon,
184187
full::XDecayVtxCascade, full::YDecayVtxCascade, full::ZDecayVtxCascade,
@@ -245,6 +248,7 @@ struct HfTreeCreatorToXiPi {
245248
Produces<o2::aod::HfToXiPiFulls> rowCandidateFull;
246249
Produces<o2::aod::HfToXiPiLites> rowCandidateLite;
247250
Produces<o2::aod::HfToXiPiEvs> rowEv;
251+
Produces<o2::aod::HfToXiPiBase> rowCandidateBase;
248252

249253
Configurable<float> zPvCut{"zPvCut", 10., "Cut on absolute value of primary vertex z coordinate"};
250254

@@ -253,9 +257,8 @@ struct HfTreeCreatorToXiPi {
253257
using Cents = soa::Join<aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFDDMs>;
254258
using MyTrackTable = soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra>;
255259
using MyEventTable = soa::Join<aod::Collisions, aod::EvSels>;
256-
using MyEventTableWithCent = soa::Join<aod::Collisions, aod::EvSels, aod::PVMultZeqs, Cents>;
257260

258-
Preslice<aod::HfCandToXiPi> candXicPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
261+
Preslice<soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi>> candXicPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
259262

260263
void init(InitContext const&)
261264
{
@@ -299,11 +302,10 @@ struct HfTreeCreatorToXiPi {
299302
multZeqNTracksPV);
300303
}
301304

302-
template <typename T>
305+
template <bool useCentrality, typename T>
303306
void fillCandidate(const T& candidate, int8_t flagMc, int8_t debugMc, int8_t originMc, bool collisionMatched)
304307
{
305308
rowCandidateFull(
306-
rowEv.lastIndex(),
307309
candidate.xPv(),
308310
candidate.yPv(),
309311
candidate.zPv(),
@@ -415,17 +417,24 @@ struct HfTreeCreatorToXiPi {
415417
collisionMatched);
416418
}
417419

418-
template <typename T>
420+
template <bool useCentrality, typename T>
419421
void fillCandidateLite(const T& candidate, int8_t flagMc, int8_t originMc, bool collisionMatched)
420422
{
421423
if (candidate.resultSelections() && candidate.statusPidCharmBaryon() && candidate.statusInvMassLambda() && candidate.statusInvMassCascade() && candidate.statusInvMassCharmBaryon()) {
422424

425+
float numContrib = -999.f;
426+
float chi2 = -999.f;
427+
if constexpr (!useCentrality) {
428+
numContrib = candidate.template collision_as<MyEventTable>().numContrib();
429+
chi2 = candidate.template collision_as<MyEventTable>().chi2();
430+
}
431+
423432
rowCandidateLite(
424433
candidate.xPv(),
425434
candidate.yPv(),
426435
candidate.zPv(),
427-
candidate.template collision_as<MyEventTable>().numContrib(),
428-
candidate.template collision_as<MyEventTable>().chi2(),
436+
numContrib,
437+
chi2,
429438
candidate.xDecayVtxCharmBaryon(),
430439
candidate.yDecayVtxCharmBaryon(),
431440
candidate.zDecayVtxCharmBaryon(),
@@ -490,6 +499,9 @@ struct HfTreeCreatorToXiPi {
490499
flagMc,
491500
originMc,
492501
collisionMatched);
502+
if constexpr (useCentrality) {
503+
rowCandidateBase(rowEv.lastIndex());
504+
}
493505
}
494506
}
495507

@@ -505,31 +517,11 @@ struct HfTreeCreatorToXiPi {
505517
// Filling candidate properties
506518
rowCandidateFull.reserve(candidates.size());
507519
for (const auto& candidate : candidates) {
508-
fillCandidate(candidate, -7, -7, RecoDecay::OriginType::None, false);
520+
fillCandidate<false>(candidate, -7, -7, RecoDecay::OriginType::None, false);
509521
}
510522
}
511523
PROCESS_SWITCH(HfTreeCreatorToXiPi, processDataFull, "Process data with full information w/o centrality", true);
512524

513-
void processDataFullWithCentrality(MyEventTableWithCent const& collisions, MyTrackTable const&,
514-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi> const& candidates)
515-
{
516-
// Filling event properties
517-
rowEv.reserve(collisions.size());
518-
for (const auto& collision : collisions) {
519-
auto thisCollId = collision.globalIndex();
520-
auto groupedXicCandidates = candidates.sliceBy(candXicPerCollision, thisCollId);
521-
auto sizeTableCand = groupedXicCandidates.size();
522-
fillEvent<true>(collision, zPvCut);
523-
524-
// Filling candidate properties
525-
rowCandidateFull.reserve(sizeTableCand);
526-
for (const auto& candidate : groupedXicCandidates) {
527-
fillCandidate(candidate, -7, -7, RecoDecay::OriginType::None, false);
528-
}
529-
}
530-
}
531-
PROCESS_SWITCH(HfTreeCreatorToXiPi, processDataFullWithCentrality, "Process data with full information with centrality", false);
532-
533525
void processMcFullXic0(MyEventTable const& collisions, MyTrackTable const&,
534526
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
535527
{
@@ -542,31 +534,11 @@ struct HfTreeCreatorToXiPi {
542534
// Filling candidate properties
543535
rowCandidateFull.reserve(candidates.size());
544536
for (const auto& candidate : candidates) {
545-
fillCandidate(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originRec(), candidate.collisionMatched());
537+
fillCandidate<false>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originRec(), candidate.collisionMatched());
546538
}
547539
}
548540
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcFullXic0, "Process MC with full information for xic0 w/o centrality", false);
549541

550-
void processMcFullXic0WithCentrality(MyEventTableWithCent const& collisions, MyTrackTable const&,
551-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
552-
{
553-
// Filling event properties
554-
rowEv.reserve(collisions.size());
555-
for (const auto& collision : collisions) {
556-
auto thisCollId = collision.globalIndex();
557-
auto groupedXicCandidates = candidates.sliceBy(candXicPerCollision, thisCollId);
558-
auto sizeTableCand = groupedXicCandidates.size();
559-
fillEvent<true>(collision, zPvCut);
560-
561-
// Filling candidate properties
562-
rowCandidateFull.reserve(sizeTableCand);
563-
for (const auto& candidate : groupedXicCandidates) {
564-
fillCandidate(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originRec(), candidate.collisionMatched());
565-
}
566-
}
567-
}
568-
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcFullXic0WithCentrality, "Process MC with full information for xic0 with centrality", false);
569-
570542
void processMcFullOmegac0(MyEventTable const& collisions, MyTrackTable const&,
571543
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
572544
{
@@ -579,7 +551,7 @@ struct HfTreeCreatorToXiPi {
579551
// Filling candidate properties
580552
rowCandidateFull.reserve(candidates.size());
581553
for (const auto& candidate : candidates) {
582-
fillCandidate(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originRec(), candidate.collisionMatched());
554+
fillCandidate<false>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originRec(), candidate.collisionMatched());
583555
}
584556
}
585557
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcFullOmegac0, "Process MC with full information for omegac0", false);
@@ -596,11 +568,33 @@ struct HfTreeCreatorToXiPi {
596568
// Filling candidate properties
597569
rowCandidateLite.reserve(candidates.size());
598570
for (const auto& candidate : candidates) {
599-
fillCandidateLite(candidate, -7, RecoDecay::OriginType::None, false);
571+
fillCandidateLite<false>(candidate, -7, RecoDecay::OriginType::None, false);
600572
}
601573
}
602574
PROCESS_SWITCH(HfTreeCreatorToXiPi, processDataLite, "Process data and produce lite table version", false);
603575

576+
void processDataLiteWithCentrality(soa::Join<MyEventTable, aod::PVMultZeqs, Cents> const& collisions, MyTrackTable const&,
577+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi> const& candidates)
578+
{
579+
// Filling event properties
580+
rowEv.reserve(collisions.size());
581+
for (const auto& collision : collisions) {
582+
auto thisCollId = collision.globalIndex();
583+
auto groupedXicCandidates = candidates.sliceBy(candXicPerCollision, thisCollId);
584+
auto sizeTableCand = groupedXicCandidates.size();
585+
fillEvent<true>(collision, zPvCut);
586+
587+
// Filling candidate properties
588+
rowCandidateLite.reserve(sizeTableCand);
589+
rowCandidateBase.reserve(sizeTableCand);
590+
LOGF(debug, "Filling rec. collision %d at derived index %d", thisCollId, rowEv.lastIndex() + 1);
591+
for (const auto& candidate : groupedXicCandidates) {
592+
fillCandidateLite<true>(candidate, -7, RecoDecay::OriginType::None, false);
593+
}
594+
}
595+
}
596+
PROCESS_SWITCH(HfTreeCreatorToXiPi, processDataLiteWithCentrality, "Process data with full information with centrality", false);
597+
604598
void processMcLiteXic0(MyEventTable const& collisions, MyTrackTable const&,
605599
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
606600
{
@@ -613,11 +607,32 @@ struct HfTreeCreatorToXiPi {
613607
// Filling candidate properties
614608
rowCandidateLite.reserve(candidates.size());
615609
for (const auto& candidate : candidates) {
616-
fillCandidateLite(candidate, candidate.flagMcMatchRec(), candidate.originRec(), candidate.collisionMatched());
610+
fillCandidateLite<false>(candidate, candidate.flagMcMatchRec(), candidate.originRec(), candidate.collisionMatched());
617611
}
618612
}
619613
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcLiteXic0, "Process MC and produce lite table version for xic0", false);
620614

615+
void processMcLiteXic0WithCentrality(soa::Join<MyEventTable, aod::PVMultZeqs, Cents> const& collisions, MyTrackTable const&,
616+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
617+
{
618+
// Filling event properties
619+
rowEv.reserve(collisions.size());
620+
for (const auto& collision : collisions) {
621+
auto thisCollId = collision.globalIndex();
622+
auto groupedXicCandidates = candidates.sliceBy(candXicPerCollision, thisCollId);
623+
auto sizeTableCand = groupedXicCandidates.size();
624+
fillEvent<true>(collision, zPvCut);
625+
626+
// Filling candidate properties
627+
rowCandidateFull.reserve(sizeTableCand);
628+
rowCandidateBase.reserve(sizeTableCand);
629+
for (const auto& candidate : groupedXicCandidates) {
630+
fillCandidateLite<true>(candidate, candidate.flagMcMatchRec(), candidate.originRec(), candidate.collisionMatched());
631+
}
632+
}
633+
}
634+
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcLiteXic0WithCentrality, "Process MC with full information for xic0 with centrality", false);
635+
621636
void processMcLiteOmegac0(MyEventTable const& collisions, MyTrackTable const&,
622637
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
623638
{
@@ -630,7 +645,7 @@ struct HfTreeCreatorToXiPi {
630645
// Filling candidate properties
631646
rowCandidateLite.reserve(candidates.size());
632647
for (const auto& candidate : candidates) {
633-
fillCandidateLite(candidate, candidate.flagMcMatchRec(), candidate.originRec(), candidate.collisionMatched());
648+
fillCandidateLite<false>(candidate, candidate.flagMcMatchRec(), candidate.originRec(), candidate.collisionMatched());
634649
}
635650
}
636651
PROCESS_SWITCH(HfTreeCreatorToXiPi, processMcLiteOmegac0, "Process MC and produce lite table version for omegac0", false);

0 commit comments

Comments
 (0)