@@ -158,6 +158,7 @@ DECLARE_SOA_COLUMN(TofNSigmaPiFromCharmBaryon, tofNSigmaPiFromCharmBaryon, float
158158DECLARE_SOA_COLUMN (TofNSigmaPiFromCasc, tofNSigmaPiFromCasc, float );
159159DECLARE_SOA_COLUMN (TofNSigmaPiFromLambda, tofNSigmaPiFromLambda, float );
160160DECLARE_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+
180184DECLARE_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