@@ -163,7 +163,6 @@ DECLARE_SOA_COLUMN(TofNSigmaPrFromLambda, tofNSigmaPrFromLambda, float);
163163
164164DECLARE_SOA_TABLE (HfToXiPiEvs, " AOD" , " HFTOXIPIEV" ,
165165 full::IsEventSel8, full::IsEventSelZ,
166- full::CollisionId,
167166 full::McCollisionId,
168167 collision::NumContrib,
169168 collision::PosX,
@@ -214,7 +213,6 @@ DECLARE_SOA_TABLE(HfToXiPiFulls, "AOD", "HFTOXIPIFULL",
214213 full::FlagMcMatchRec, full::DebugMcRec, full::OriginRec, full::CollisionMatched);
215214
216215DECLARE_SOA_TABLE (HfToXiPiLites, " AOD" , " HFTOXIPILITE" ,
217- full::CollisionId,
218216 full::XPv, full::YPv, full::ZPv, collision::NumContrib, collision::Chi2,
219217 full::XDecayVtxCharmBaryon, full::YDecayVtxCharmBaryon, full::ZDecayVtxCharmBaryon,
220218 full::XDecayVtxCascade, full::YDecayVtxCascade, full::ZDecayVtxCascade,
@@ -249,11 +247,16 @@ struct HfTreeCreatorToXiPi {
249247 Produces<o2::aod::HfToXiPiEvs> rowEv;
250248
251249 Configurable<float > zPvCut{" zPvCut" , 10 ., " Cut on absolute value of primary vertex z coordinate" };
252- Configurable<bool > useCentrality{" useCentrality" , false , " Decide whether to use centrality information" };
253250
254- using Cents = soa::Join<aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFDDMs>;
255- using MyEventTable = soa::Join<aod::Collisions, aod::EvSels, aod::PVMultZeqs, Cents>;
256- using MyTrackTable = soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra>;
251+ // HfHelper hfHelper;
252+ SliceCache cache;
253+ // using SelectedCandidates = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelLc>>;
254+ // Preslice<SelectedCandidates> candidatesPerCollision = aod::hf_cand::collisionId;
255+ Preslice<aod::HfCandToXiPi> candXicPerCollision = aod::hf_cand_xic0_omegac0::collisionId;
256+
257+ using Cents = soa::Join<aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFDDMs >;
258+ using MyTrackTable = soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra >;
259+ using MyEventTable = soa::Join<aod::Collisions, aod::EvSels, aod::PVMultZeqs, Cents >;
257260
258261 void init (InitContext const &)
259262 {
@@ -262,7 +265,7 @@ struct HfTreeCreatorToXiPi {
262265 }
263266 }
264267
265- template <typename T>
268+ template <bool useCentrality, typename T>
266269 void fillEvent (const T& collision, float cutZPv)
267270 {
268271 float centFT0A = -1 .f ;
@@ -280,7 +283,6 @@ struct HfTreeCreatorToXiPi {
280283
281284 rowEv (
282285 collision.sel8 (), std::abs (collision.posZ ()) < cutZPv,
283- collision.globalIndex (),
284286 -1 ,
285287 collision.numContrib (),
286288 collision.posX (),
@@ -300,7 +302,7 @@ struct HfTreeCreatorToXiPi {
300302 void fillCandidate (const T& candidate, int8_t flagMc, int8_t debugMc, int8_t originMc, bool collisionMatched)
301303 {
302304 rowCandidateFull (
303- candidate. collisionId (),
305+ rowEv. lastIndex (),
304306 candidate.xPv (),
305307 candidate.yPv (),
306308 candidate.zPv (),
@@ -418,7 +420,6 @@ struct HfTreeCreatorToXiPi {
418420 if (candidate.resultSelections () && candidate.statusPidCharmBaryon () && candidate.statusInvMassLambda () && candidate.statusInvMassCascade () && candidate.statusInvMassCharmBaryon ()) {
419421
420422 rowCandidateLite (
421- candidate.collisionId (),
422423 candidate.xPv (),
423424 candidate.yPv (),
424425 candidate.zPv (),
@@ -497,7 +498,7 @@ struct HfTreeCreatorToXiPi {
497498 // Filling event properties
498499 rowEv.reserve (collisions.size ());
499500 for (const auto & collision : collisions) {
500- fillEvent (collision, zPvCut);
501+ fillEvent< false > (collision, zPvCut);
501502 }
502503
503504 // Filling candidate properties
@@ -506,15 +507,35 @@ struct HfTreeCreatorToXiPi {
506507 fillCandidate (candidate, -7 , -7 , RecoDecay::OriginType::None, false );
507508 }
508509 }
509- PROCESS_SWITCH (HfTreeCreatorToXiPi, processDataFull, " Process data with full information" , true );
510+ PROCESS_SWITCH (HfTreeCreatorToXiPi, processDataFull, " Process data with full information w/o centrality" , true );
511+
512+ void processDataFullWithCentrality (MyEventTable const & collisions, MyTrackTable const &,
513+ soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi> const & candidates)
514+ {
515+ // Filling event properties
516+ rowEv.reserve (collisions.size ());
517+ for (const auto & collision : collisions) {
518+ auto thisCollId = collision.globalIndex ();
519+ auto groupedXicCandidates = candidates.sliceBy (candXicPerCollision, thisCollId);
520+ auto sizeTableCand = groupedXicCandidates.size ();
521+ fillEvent<true >(collision, zPvCut);
522+
523+ // Filling candidate properties
524+ rowCandidateFull.reserve (sizeTableCand);
525+ for (const auto & candidate : groupedXicCandidates) {
526+ fillCandidate (candidate, -7 , -7 , RecoDecay::OriginType::None, false );
527+ }
528+ }
529+ }
530+ PROCESS_SWITCH (HfTreeCreatorToXiPi, processDataFullWithCentrality, " Process data with full information with centrality" , false );
510531
511532 void processMcFullXic0 (MyEventTable const & collisions, MyTrackTable const &,
512533 soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const & candidates)
513534 {
514535 // Filling event properties
515536 rowEv.reserve (collisions.size ());
516537 for (const auto & collision : collisions) {
517- fillEvent (collision, zPvCut);
538+ fillEvent< false > (collision, zPvCut);
518539 }
519540
520541 // Filling candidate properties
@@ -523,15 +544,35 @@ struct HfTreeCreatorToXiPi {
523544 fillCandidate (candidate, candidate.flagMcMatchRec (), candidate.debugMcRec (), candidate.originRec (), candidate.collisionMatched ());
524545 }
525546 }
526- PROCESS_SWITCH (HfTreeCreatorToXiPi, processMcFullXic0, " Process MC with full information for xic0" , false );
547+ PROCESS_SWITCH (HfTreeCreatorToXiPi, processMcFullXic0, " Process MC with full information for xic0 w/o centrality" , false );
548+
549+ void processMcFullXic0WithCentrality (MyEventTable const & collisions, MyTrackTable const &,
550+ soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const & candidates)
551+ {
552+ // Filling event properties
553+ rowEv.reserve (collisions.size ());
554+ for (const auto & collision : collisions) {
555+ auto thisCollId = collision.globalIndex ();
556+ auto groupedXicCandidates = candidates.sliceBy (candXicPerCollision, thisCollId);
557+ auto sizeTableCand = groupedXicCandidates.size ();
558+ fillEvent<true >(collision, zPvCut);
559+
560+ // Filling candidate properties
561+ rowCandidateFull.reserve (sizeTableCand);
562+ for (const auto & candidate : groupedXicCandidates) {
563+ fillCandidate (candidate, candidate.flagMcMatchRec (), candidate.debugMcRec (), candidate.originRec (), candidate.collisionMatched ());
564+ }
565+ }
566+ }
567+ PROCESS_SWITCH (HfTreeCreatorToXiPi, processMcFullXic0WithCentrality, " Process MC with full information for xic0 with centrality" , false );
527568
528569 void processMcFullOmegac0 (MyEventTable const & collisions, MyTrackTable const &,
529570 soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const & candidates)
530571 {
531572 // Filling event properties
532573 rowEv.reserve (collisions.size ());
533574 for (const auto & collision : collisions) {
534- fillEvent (collision, zPvCut);
575+ fillEvent< false > (collision, zPvCut);
535576 }
536577
537578 // Filling candidate properties
@@ -548,7 +589,7 @@ struct HfTreeCreatorToXiPi {
548589 // Filling event properties
549590 rowEv.reserve (collisions.size ());
550591 for (const auto & collision : collisions) {
551- fillEvent (collision, zPvCut);
592+ fillEvent< false > (collision, zPvCut);
552593 }
553594
554595 // Filling candidate properties
@@ -565,7 +606,7 @@ struct HfTreeCreatorToXiPi {
565606 // Filling event properties
566607 rowEv.reserve (collisions.size ());
567608 for (const auto & collision : collisions) {
568- fillEvent (collision, zPvCut);
609+ fillEvent< false > (collision, zPvCut);
569610 }
570611
571612 // Filling candidate properties
@@ -582,7 +623,7 @@ struct HfTreeCreatorToXiPi {
582623 // Filling event properties
583624 rowEv.reserve (collisions.size ());
584625 for (const auto & collision : collisions) {
585- fillEvent (collision, zPvCut);
626+ fillEvent< false > (collision, zPvCut);
586627 }
587628
588629 // Filling candidate properties
0 commit comments