@@ -112,6 +112,24 @@ struct TreeWriterTpcV0 {
112112
113113 ctpRateFetcher mRateFetcher ;
114114
115+ struct V0Daughter {
116+ double downsamplingTsalis;
117+ double mass;
118+ double maxPt4dwnsmplTsalis;
119+ double tpcNSigma;
120+ double tofNSigma;
121+ double tpcExpSignal;
122+ o2::track::PID::ID id;
123+ double dwnSmplFactor;
124+ bool isProton;
125+ };
126+
127+ struct V0Mother {
128+ int id;
129+ V0Daughter posDaughter;
130+ V0Daughter negDaughter;
131+ };
132+
115133 // / Funktion to fill skimmed tables
116134 template <bool doUseCorrecteddEdx = false , typename T, typename C, typename V0Casc>
117135 void fillSkimmedV0Table (V0Casc const & v0casc, T const & track, C const & collision, float nSigmaTPC, float nSigmaTOF, float dEdxExp, o2::track::PID::ID id, int runnumber, double dwnSmplFactor, float hadronicRate)
@@ -368,67 +386,56 @@ struct TreeWriterTpcV0 {
368386 if (!isEventSelected (collision, tracks)) {
369387 return ;
370388 }
371- auto bc = collision.bc_as <aod::BCsWithTimestamps>();
389+ const auto & bc = collision.bc_as <aod::BCsWithTimestamps>();
372390 const int runnumber = bc.runNumber ();
373- float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
391+ const float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
374392
375393 rowTPCTree.reserve (tracks.size ());
376394
377395 // / Loop over v0 candidates
378396 for (const auto & v0 : v0s) {
379- auto posTrack = v0.posTrack_as <soa::Filtered<TrksType>>();
380- auto negTrack = v0.negTrack_as <soa::Filtered<TrksType>>();
381- if (v0.v0addid () == -1 ) {
397+ if (v0.v0addid () == kUndef ) {
382398 continue ;
383399 }
384- // gamma
385- if (static_cast <bool >(posTrack.pidbit () & (1 << 0 )) && static_cast <bool >(negTrack.pidbit () & (1 << 0 ))) {
386- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons)) {
387- fillSkimmedV0Table<IsCorrecteddEdx>(v0, posTrack, collision, posTrack.tpcNSigmaEl (), posTrack.tofNSigmaEl (), posTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Electron, runnumber, dwnSmplFactor_El, hadronicRate);
388- }
389- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons)) {
390- fillSkimmedV0Table<IsCorrecteddEdx>(v0, negTrack, collision, negTrack.tpcNSigmaEl (), negTrack.tofNSigmaEl (), negTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Electron, runnumber, dwnSmplFactor_El, hadronicRate);
391- }
392- }
393- // Ks0
394- if (static_cast <bool >(posTrack.pidbit () & (1 << 1 )) && static_cast <bool >(negTrack.pidbit () & (1 << 1 ))) {
395- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
396- fillSkimmedV0Table<IsCorrecteddEdx>(v0, posTrack, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate);
397- }
398- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
399- fillSkimmedV0Table<IsCorrecteddEdx>(v0, negTrack, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate);
400- }
401- }
402- // Lambda
403- if (static_cast <bool >(posTrack.pidbit () & (1 << 2 )) && static_cast <bool >(negTrack.pidbit () & (1 << 2 ))) {
404- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons)) {
405- if (std::abs (posTrack.tofNSigmaPr ()) <= nSigmaTOFdautrack) {
406- fillSkimmedV0Table<IsCorrecteddEdx>(v0, posTrack, collision, posTrack.tpcNSigmaPr (), posTrack.tofNSigmaPr (), posTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr, hadronicRate);
407- }
408- }
409- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
410- fillSkimmedV0Table<IsCorrecteddEdx>(v0, negTrack, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate);
411- }
412- }
413- // Antilambda
414- if (static_cast <bool >(posTrack.pidbit () & (1 << 3 )) && static_cast <bool >(negTrack.pidbit () & (1 << 3 ))) {
415- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
416- fillSkimmedV0Table<IsCorrecteddEdx>(v0, posTrack, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate);
417- }
418- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons)) {
419- if (std::abs (negTrack.tofNSigmaPr ()) <= nSigmaTOFdautrack) {
420- fillSkimmedV0Table<IsCorrecteddEdx>(v0, negTrack, collision, negTrack.tpcNSigmaPr (), negTrack.tofNSigmaPr (), negTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr, hadronicRate);
400+ const auto & posTrack = v0.posTrack_as <soa::Filtered<TrksType>>();
401+ const auto & negTrack = v0.negTrack_as <soa::Filtered<TrksType>>();
402+
403+ V0Daughter elPos{downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons, posTrack.tpcNSigmaEl (), posTrack.tofNSigmaEl (), posTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Electron, dwnSmplFactor_El, false };
404+ V0Daughter elNeg{downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons, negTrack.tpcNSigmaEl (), negTrack.tofNSigmaEl (), negTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Electron, dwnSmplFactor_El, false };
405+ V0Daughter piPos{downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, dwnSmplFactor_Pi, false };
406+ V0Daughter piNeg{downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, dwnSmplFactor_Pi, false };
407+ V0Daughter prPos{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, posTrack.tpcNSigmaPr (), posTrack.tofNSigmaPr (), posTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Proton, dwnSmplFactor_Pr, true };
408+ V0Daughter prNeg{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, negTrack.tpcNSigmaPr (), negTrack.tofNSigmaPr (), negTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Proton, dwnSmplFactor_Pr, true };
409+
410+ const std::array<V0Mother, 4 > v0Mothers {
411+ V0Mother{kGamma , elPos, elNeg},
412+ V0Mother{kK0S , piPos, piNeg},
413+ V0Mother{kLambda , prPos, piNeg},
414+ V0Mother{kAntiLambda , piPos, prNeg}
415+ };
416+
417+ for (const auto & v0Mother : v0Mothers) {
418+ if (static_cast <bool >(posTrack.pidbit () & (1 << v0Mother.id )) && static_cast <bool >(negTrack.pidbit () & (1 << v0Mother.id ))) {
419+ bool isPosDaughter{true };
420+ for (const auto & daughter : {v0Mother.posDaughter , v0Mother.negDaughter }) {
421+ const auto & dauTrack = isPosDaughter ? posTrack : negTrack;
422+ if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
423+ if (!daughter.isProton || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
424+ fillSkimmedV0Table<IsCorrecteddEdx>(v0, dauTrack, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate);
425+ }
426+ }
427+ isPosDaughter = false ;
421428 }
422429 }
423- }
430+ } // v0Mothers
424431 }
425432
426433 // / Loop over cascade candidates
427434 for (const auto & casc : cascs) {
428- auto bachTrack = casc.bachelor_as <soa::Filtered<TrksType>>();
429435 if (casc.cascaddid () == kUndef ) {
430436 continue ;
431437 }
438+ const auto & bachTrack = casc.bachelor_as <soa::Filtered<TrksType>>();
432439 // Omega and antiomega
433440 if (static_cast <bool >(bachTrack.pidbit () & (1 << kOmega )) || static_cast <bool >(bachTrack.pidbit () & (1 << kAntiOmega ))) {
434441 if (downsampleTsalisCharged (bachTrack.pt (), downsamplingTsalisKaons, MassKaon, maxPt4dwnsmplTsalisKaons)) {
@@ -468,16 +475,16 @@ struct TreeWriterTpcV0 {
468475 labelTrack2TrackQA[trackId] = trackQAIndex;
469476 }
470477 for (const auto & collision : collisions) {
471- auto tracks = myTracks.sliceBy (perCollisionTracksType, collision.globalIndex ());
472- auto v0s = myV0s.sliceBy (perCollisionV0s, collision.globalIndex ());
473- auto cascs = myCascs.sliceBy (perCollisionCascs, collision.globalIndex ());
474478 // / Check event slection
479+ const auto & tracks = myTracks.sliceBy (perCollisionTracksType, collision.globalIndex ());
475480 if (!isEventSelected (collision, tracks)) {
476481 continue ;
477482 }
478- auto bc = collision.bc_as <BCType>();
483+ const auto & v0s = myV0s.sliceBy (perCollisionV0s, collision.globalIndex ());
484+ const auto & cascs = myCascs.sliceBy (perCollisionCascs, collision.globalIndex ());
485+ const auto & bc = collision.bc_as <BCType>();
479486 const int runnumber = bc.runNumber ();
480- float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
487+ const float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
481488 const int bcGlobalIndex = bc.globalIndex ();
482489 int bcTimeFrameId, bcBcInTimeFrame;
483490 if constexpr (IsWithdEdx) {
@@ -494,11 +501,11 @@ struct TreeWriterTpcV0 {
494501 }
495502 // / Loop over v0 candidates
496503 for (const auto & v0 : v0s) {
497- auto posTrack = v0.posTrack_as <TrksType>();
498- auto negTrack = v0.negTrack_as <TrksType>();
499- if (v0.v0addid () == -1 ) {
504+ if (v0.v0addid () == kUndef ) {
500505 continue ;
501506 }
507+ const auto & posTrack = v0.posTrack_as <TrksType>();
508+ const auto & negTrack = v0.negTrack_as <TrksType>();
502509 aod::TracksQA posTrackQA;
503510 aod::TracksQA negTrackQA;
504511 bool existPosTrkQA;
@@ -518,55 +525,44 @@ struct TreeWriterTpcV0 {
518525 existNegTrkQA = false ;
519526 }
520527
521- // gamma
522- if (static_cast <bool >(posTrack.pidbit () & (1 << 0 )) && static_cast <bool >(negTrack.pidbit () & (1 << 0 ))) {
523- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons)) {
524- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, posTrack, posTrackQA, existPosTrkQA, collision, posTrack.tpcNSigmaEl (), posTrack.tofNSigmaEl (), posTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Electron, runnumber, dwnSmplFactor_El, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
525- }
526- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons)) {
527- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, negTrack, negTrackQA, existNegTrkQA, collision, negTrack.tpcNSigmaEl (), negTrack.tofNSigmaEl (), negTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Electron, runnumber, dwnSmplFactor_El, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
528- }
529- }
530- // Ks0
531- if (static_cast <bool >(posTrack.pidbit () & (1 << 1 )) && static_cast <bool >(negTrack.pidbit () & (1 << 1 ))) {
532- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
533- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, posTrack, posTrackQA, existPosTrkQA, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
534- }
535- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
536- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, negTrack, negTrackQA, existNegTrkQA, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
537- }
538- }
539- // Lambda
540- if (static_cast <bool >(posTrack.pidbit () & (1 << 2 )) && static_cast <bool >(negTrack.pidbit () & (1 << 2 ))) {
541- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons)) {
542- if (std::abs (posTrack.tofNSigmaPr ()) <= nSigmaTOFdautrack) {
543- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, posTrack, posTrackQA, existPosTrkQA, collision, posTrack.tpcNSigmaPr (), posTrack.tofNSigmaPr (), posTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
544- }
545- }
546- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
547- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, negTrack, negTrackQA, existNegTrkQA, collision, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
548- }
549- }
550- // Antilambda
551- if (static_cast <bool >(posTrack.pidbit () & (1 << 3 )) && static_cast <bool >(negTrack.pidbit () & (1 << 3 ))) {
552- if (downsampleTsalisCharged (posTrack.pt (), downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions)) {
553- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, posTrack, posTrackQA, existPosTrkQA, collision, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, runnumber, dwnSmplFactor_Pi, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
554- }
555- if (downsampleTsalisCharged (negTrack.pt (), downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons)) {
556- if (std::abs (negTrack.tofNSigmaPr ()) <= nSigmaTOFdautrack) {
557- fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, negTrack, negTrackQA, existNegTrkQA, collision, negTrack.tpcNSigmaPr (), negTrack.tofNSigmaPr (), negTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Proton, runnumber, dwnSmplFactor_Pr, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
528+ V0Daughter elPos{downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons, posTrack.tpcNSigmaEl (), posTrack.tofNSigmaEl (), posTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Electron, dwnSmplFactor_El, false };
529+ V0Daughter elNeg{downsamplingTsalisElectrons, MassElectorn, maxPt4dwnsmplTsalisElectrons, negTrack.tpcNSigmaEl (), negTrack.tofNSigmaEl (), negTrack.tpcExpSignalEl (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Electron, dwnSmplFactor_El, false };
530+ V0Daughter piPos{downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions, posTrack.tpcNSigmaPi (), posTrack.tofNSigmaPi (), posTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Pion, dwnSmplFactor_Pi, false };
531+ V0Daughter piNeg{downsamplingTsalisPions, MassPion, maxPt4dwnsmplTsalisPions, negTrack.tpcNSigmaPi (), negTrack.tofNSigmaPi (), negTrack.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Pion, dwnSmplFactor_Pi, false };
532+ V0Daughter prPos{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, posTrack.tpcNSigmaPr (), posTrack.tofNSigmaPr (), posTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(posTrack)), o2::track::PID::Proton, dwnSmplFactor_Pr, true };
533+ V0Daughter prNeg{downsamplingTsalisProtons, MassProton, maxPt4dwnsmplTsalisProtons, negTrack.tpcNSigmaPr (), negTrack.tofNSigmaPr (), negTrack.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(negTrack)), o2::track::PID::Proton, dwnSmplFactor_Pr, true };
534+
535+ const std::array<V0Mother, 4 > v0Mothers {
536+ V0Mother{kGamma , elPos, elNeg},
537+ V0Mother{kK0S , piPos, piNeg},
538+ V0Mother{kLambda , prPos, piNeg},
539+ V0Mother{kAntiLambda , piPos, prNeg}
540+ };
541+
542+ for (const auto & v0Mother : v0Mothers) {
543+ if (static_cast <bool >(posTrack.pidbit () & (1 << v0Mother.id )) && static_cast <bool >(negTrack.pidbit () & (1 << v0Mother.id ))) {
544+ bool isPosDaughter{true };
545+ for (const auto & daughter : {v0Mother.posDaughter , v0Mother.negDaughter }) {
546+ const auto & dauTrack = isPosDaughter ? posTrack : negTrack;
547+ const auto & trackQA = isPosDaughter ? posTrackQA : negTrackQA;
548+ const auto & existTrkQA = isPosDaughter ? existPosTrkQA : existNegTrkQA;
549+ if (downsampleTsalisCharged (dauTrack.pt (), daughter.downsamplingTsalis , daughter.mass , daughter.maxPt4dwnsmplTsalis )) {
550+ if (!daughter.isProton || std::fabs (daughter.tofNSigma ) <= nSigmaTOFdautrack) {
551+ fillSkimmedV0TableWithTrQAGeneric<IsCorrecteddEdx, IsWithdEdx>(v0, dauTrack, trackQA, existTrkQA, collision, daughter.tpcNSigma , daughter.tofNSigma , daughter.tpcExpSignal , daughter.id , runnumber, daughter.dwnSmplFactor , hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
552+ }
553+ }
554+ isPosDaughter = false ;
558555 }
559556 }
560- }
557+ } // v0Mothers
561558 }
562559
563560 // / Loop over cascade candidates
564561 for (const auto & casc : cascs) {
565- auto bachTrack = casc.bachelor_as <TrksType>();
566562 if (casc.cascaddid () == kUndef ) {
567563 continue ;
568564 }
569-
565+ const auto & bachTrack = casc. bachelor_as <TrksType>();
570566 aod::TracksQA bachTrackQA;
571567 bool existBachTrkQA;
572568 if (labelTrack2TrackQA[bachTrack.globalIndex ()] != -1 ) {
0 commit comments