@@ -171,15 +171,15 @@ struct HfCandidateCreatorXic0XicpToHadronic {
171171
172172 void init (InitContext const &)
173173 {
174- std::vector<bool > allProcesses{doprocessXic0WithDCAFitterNoCent, doprocessXic0WithKFParticleNoCent, doprocessXicpWithDCAFitterNoCent, doprocessXicpWithKFParticleNoCent, doprocessCollisionsNoCent};
174+ // std::vector<bool> allProcesses{doprocessXic0WithDCAFitterNoCent, doprocessXic0WithKFParticleNoCent, doprocessXicpWithDCAFitterNoCent, doprocessXicpWithKFParticleNoCent, doprocessCollisionsNoCent};
175175 std::vector<bool > processesXic0{doprocessXic0WithDCAFitterNoCent, doprocessXic0WithKFParticleNoCent};
176176 std::vector<bool > processesXicp{doprocessXicpWithDCAFitterNoCent, doprocessXicpWithKFParticleNoCent};
177177 std::vector<bool > processesCollMonitoring{doprocessCollisionsNoCent};
178178
179179 // Exit if workflow is not configured correctly - None of the workflows were enablec
180- if (std::accumulate (allProcesses.begin (), allProcesses.end (), 0 ) == 0 ) {
181- LOGP (fatal, " No process function enabled or More than one process function enabled. Select one process function" );
182- }
180+ // if (std::accumulate(allProcesses.begin(), allProcesses.end(), 0) == 0) {
181+ // LOGP(fatal, "No process function enabled or More than one process function enabled. Select one process function");
182+ // }
183183
184184 // Exit if workflow is not configured correctly - More than one process enabled for Xic0
185185 if (std::accumulate (processesXic0.begin (), processesXic0.end (), 0 ) > 1 ) {
@@ -192,7 +192,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
192192 }
193193
194194 // Exit if workflow is not configured correctly - More than one process enabled for collision monitoring
195- if (std::accumulate (processesCollMonitoring.begin (), processesCollMonitoring.end (), 1 ) > 1 ) {
195+ if (std::accumulate (processesCollMonitoring.begin (), processesCollMonitoring.end (), 0 ) > 1 ) {
196196 LOGP (fatal, " More than one process fucntion for CollMonitoring was enabled. Please choose only one process function" );
197197 }
198198
@@ -347,7 +347,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
347347 }
348348 auto casc = cascAodElement.cascData_as <CascFull>();
349349 auto trackCharmBachelor = cand.prong0_as <TracksWCovDcaExtraPidPrPi>();
350- auto cascCharge = casc.sign () > 0 ? 1 : -1 ;
350+ auto chargeCasc = casc.sign () > 0 ? 1 : -1 ;
351351
352352 if (configs.doCascadePreselection ) {
353353 if (std::abs (casc.dcaXYCascToPV ()) > configs.dcaXYToPVCascadeMax ) {
@@ -391,9 +391,9 @@ struct HfCandidateCreatorXic0XicpToHadronic {
391391 }
392392
393393 o2::track::TrackParCov trackCasc;
394- if (cascCharge < 0 ) { // Xi-
394+ if (chargeCasc < 0 ) { // Xi-
395395 trackCasc = o2::track::TrackParCov (vertexCasc, pVecCasc, covCasc, -1 , true );
396- } else if (cascCharge >0 ) { // Xi+
396+ } else if (chargeCasc >0 ) { // Xi+
397397 trackCasc = o2::track::TrackParCov (vertexCasc, pVecCasc, covCasc, 1 , true );
398398 } else {
399399 continue ;
@@ -462,32 +462,26 @@ struct HfCandidateCreatorXic0XicpToHadronic {
462462 auto errorDecayLengthXY = std::sqrt (getRotatedCovMatrixXX (covMatrixPV, phi, 0 .) + getRotatedCovMatrixXX (covMatrixSV, phi, 0 .));
463463
464464 // ------------------------------Get PID Information-----------------------------
465+ // Charm Bachelor Pion
465466 float nSigTpcPiFromXic0 = trackCharmBachelor.tpcNSigmaPi ();
466467 float nSigTofPiFromXic0 = trackCharmBachelor.tofNSigmaPi ();
467-
468+ // Bachelor pion
468469 auto trackPionFromXi = casc.bachelor_as <TracksWCovDcaExtraPidPrPi>();
469470 float nSigTpcBachelorPi = trackPionFromXi.tpcNSigmaPi ();
470471 float nSigTofBachelorPi = trackPionFromXi.tofNSigmaPi ();
472+ // V0 daughters
473+ auto trackPosLambdaDaughter = casc.posTrack_as <TracksWCovDcaExtraPidPrPi>(); // If charge of cascade is negative, this should be track of proton
474+ auto trackNegLambdaDaughter = casc.negTrack_as <TracksWCovDcaExtraPidPrPi>(); // If charge of cascade is negative, this shoud be track of pion
471475
472- auto trackPosLambdaDaughter = casc.posTrack_as <TracksWCovDcaExtraPidPrPi>();
473- auto trackNegLambdaDaughter = casc.negTrack_as <TracksWCovDcaExtraPidPrPi>();
474- float pPiFromLambda, pPrFromLambda;
475- float nSigTpcPiFromLambda, nSigTofPiFromLambda, nSigTpcPrFromLambda, nSigTofPrFromLambda;
476- if (cascCharge < 0 ) { // Xi- -> Lambda0 + Pi- -> (Pr + Pi-) + Pi-
477- pPiFromLambda = trackNegLambdaDaughter.p ();
478- nSigTpcPiFromLambda = trackNegLambdaDaughter.tpcNSigmaPi ();
479- nSigTofPiFromLambda = trackNegLambdaDaughter.tofNSigmaPi ();
480- pPrFromLambda = trackPosLambdaDaughter.p ();
481- nSigTpcPrFromLambda = trackPosLambdaDaughter.tpcNSigmaPr ();
482- nSigTofPrFromLambda = trackPosLambdaDaughter.tofNSigmaPr ();
483- } else { // Xi+ -> anit-lambda0 + Pi+ -> (anti-Pr + Pi+) + pi+
484- pPiFromLambda = trackPosLambdaDaughter.p ();
485- nSigTpcPiFromLambda = trackPosLambdaDaughter.tpcNSigmaPi ();
486- nSigTofPiFromLambda = trackPosLambdaDaughter.tofNSigmaPi ();
487- pPrFromLambda = trackNegLambdaDaughter.p ();
488- nSigTpcPrFromLambda = trackNegLambdaDaughter.tpcNSigmaPr ();
489- nSigTofPrFromLambda = trackNegLambdaDaughter.tofNSigmaPr ();
490- }
476+ auto trackProtonFromLambda = chargeCasc < 0 ? trackPosLambdaDaughter : trackNegLambdaDaughter;
477+ auto trackPionFromLambda = chargeCasc < 0 ? trackNegLambdaDaughter : trackPosLambdaDaughter;
478+
479+ float pPrFromLambda = trackProtonFromLambda.p ();
480+ float nSigTpcPrFromLambda = trackProtonFromLambda.tpcNSigmaPr ();
481+ float nSigTofPrFromLambda = trackProtonFromLambda.tofNSigmaPr ();
482+ float pPiFromLambda = trackPionFromLambda.p ();
483+ float nSigTpcPiFromLambda = trackPionFromLambda.tpcNSigmaPi ();
484+ float nSigTofPiFromLambda = trackPionFromLambda.tofNSigmaPi ();
491485
492486 // ------------------------------Fill QA histograms-----------------------------
493487 if (configs.fillHistograms ) {
@@ -523,7 +517,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
523517 /* Decay length error */
524518 errorDecayLength, errorDecayLengthXY,
525519 /* Chi2CPA, InvMass, cascade charge */
526- chi2SV, massXiPi, cascCharge ,
520+ chi2SV, massXiPi, chargeCasc ,
527521 /* Cascade, charm bachelor's momentum */
528522 pVecXi[0 ], pVecXi[1 ], pVecXi[2 ],
529523 pVecPi[0 ], pVecPi[1 ], pVecPi[2 ],
@@ -580,8 +574,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
580574 continue ;
581575 }
582576 auto casc = cascAodElement.kfCascData_as <KFCascFull>(); // -> Need to understand this
583- auto trackCharmBachelor = cand.prong0_as <TracksWCovDcaExtraPidPrPi>();
584- auto cascCharge = casc.sign () > 0 ? 1 : -1 ;
577+ auto chargeCasc = casc.sign () > 0 ? 1 : -1 ;
585578
586579 if (configs.doCascadePreselection ) {
587580 if (std::abs (casc.dcaXYCascToPV ()) > configs.dcaXYToPVCascadeMax ) {
@@ -591,7 +584,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
591584 continue ;
592585 }
593586 }
594-
587+
595588 if (configs.fillHistograms ) {
596589 registry.fill (HIST (" hCandCounter" ), CascPreSel);
597590 registry.fill (HIST (" hXiMassAfterConstrain" ), casc.mXi ());
@@ -624,6 +617,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
624617 KFParticle kfPv (kfpVertex); // -> For calculation of DCAs to PV
625618
626619 // convert charm bachelor pion tracks into KFParticle object
620+ auto trackCharmBachelor = cand.prong0_as <TracksWCovDcaExtraPidPrPi>();
627621 KFPTrack kfpTrackCharmBachelor = createKFPTrackFromTrack (trackCharmBachelor);
628622 KFParticle kfCharmBachelor (kfpTrackCharmBachelor, kPiPlus );
629623
@@ -739,34 +733,26 @@ struct HfCandidateCreatorXic0XicpToHadronic {
739733 float kfDecayLengthXYNormalised = ldlXYFromKF (kfXic0, kfPv);
740734
741735 // -----Get PID information-----
736+ // Charm Bachelor pion
742737 float nSigTpcPiFromXic0 = trackCharmBachelor.tpcNSigmaPi ();
743738 float nSigTofPiFromXic0 = trackCharmBachelor.tofNSigmaPi ();
744739 // Bachelor pion(pion from cascade decay)
745740 auto trackPionFromXi = casc.bachelor_as <TracksWCovDcaExtraPidPrPi>();
746741 float nSigTpcBachelorPi = trackPionFromXi.tpcNSigmaPi ();
747742 float nSigTofBachelorPi = trackPionFromXi.tofNSigmaPi ();
748743 // V0 daughters
749- auto trackPosLambdaDaughter = casc.posTrack_as <TracksWCovDcaExtraPidPrPi>();
750- auto trackNegLambdaDaughter = casc.negTrack_as <TracksWCovDcaExtraPidPrPi>();
751- float pPiFromLambda, pPrFromLambda;
752- float nSigTpcPiFromLambda, nSigTofPiFromLambda;
753- float nSigTpcPrFromLambda, nSigTofPrFromLambda;
754- if (casc.sign () < 0 ) { // xi- -> lambda pi- -> (p pi-)pi-
755- // FIXME If this hypothesis is correct, bachelor pion's sign should be negative -> Please check!
756- pPrFromLambda = trackPosLambdaDaughter.p ();
757- pPiFromLambda = trackNegLambdaDaughter.p ();
758- nSigTpcPrFromLambda = trackPosLambdaDaughter.tpcNSigmaPr ();
759- nSigTofPrFromLambda = trackPosLambdaDaughter.tofNSigmaPr ();
760- nSigTpcPiFromLambda = trackNegLambdaDaughter.tpcNSigmaPi ();
761- nSigTofPiFromLambda = trackNegLambdaDaughter.tofNSigmaPi ();
762- } else { // xi+ -> lambda pi+ -> (anti-p pi+)pi+
763- pPrFromLambda = trackNegLambdaDaughter.p ();
764- pPiFromLambda = trackPosLambdaDaughter.p ();
765- nSigTpcPrFromLambda = trackNegLambdaDaughter.tpcNSigmaPr ();
766- nSigTofPrFromLambda = trackNegLambdaDaughter.tofNSigmaPr ();
767- nSigTpcPiFromLambda = trackPosLambdaDaughter.tpcNSigmaPi ();
768- nSigTofPiFromLambda = trackPosLambdaDaughter.tofNSigmaPi ();
769- }
744+ auto trackPosLambdaDaughter = casc.posTrack_as <TracksWCovDcaExtraPidPrPi>(); // If charge of cascade is negative, this should be track of proton
745+ auto trackNegLambdaDaughter = casc.negTrack_as <TracksWCovDcaExtraPidPrPi>(); // If charge of cascade is negative, this shoud be track of pion
746+
747+ auto trackProtonFromLambda = chargeCasc < 0 ? trackPosLambdaDaughter : trackNegLambdaDaughter;
748+ auto trackPionFromLambda = chargeCasc < 0 ? trackNegLambdaDaughter : trackPosLambdaDaughter;
749+
750+ float pPrFromLambda = trackProtonFromLambda.p ();
751+ float nSigTpcPrFromLambda = trackProtonFromLambda.tpcNSigmaPr ();
752+ float nSigTofPrFromLambda = trackProtonFromLambda.tofNSigmaPr ();
753+ float pPiFromLambda = trackPionFromLambda.p ();
754+ float nSigTpcPiFromLambda = trackPionFromLambda.tpcNSigmaPi ();
755+ float nSigTofPiFromLambda = trackPionFromLambda.tofNSigmaPi ();
770756
771757 // ------------------------------Calculate physical quantities and fill candidate table------------------------------
772758 if (configs.fillHistograms ) {
@@ -803,7 +789,7 @@ struct HfCandidateCreatorXic0XicpToHadronic {
803789 /* DecayLength error*/
804790 errKfDecayLength, errKfDecayLengthXY,
805791 /* Chi2 of Geo from KF method, Invmass, cascade charge*/
806- chi2GeoXic0, massXiPi, cascCharge ,
792+ chi2GeoXic0, massXiPi, chargeCasc ,
807793 /* Cascade, charm bachelor's momentum*/
808794 kfXi.GetPx (), kfXi.GetPy (), kfXi.GetPz (),
809795 kfCharmBachelor.GetPx (), kfCharmBachelor.GetPy (), kfCharmBachelor.GetPz (),
@@ -1322,9 +1308,9 @@ struct HfCandidateCreatorXic0XicpToHadronic {
13221308 auto trackNegLambdaDaughter = casc.negTrack_as <TracksWCovDcaExtraPidPrPi>();
13231309 float pPiFromLambda, pPrFromLambda, nSigTpcPiFromLambda, nSigTofPiFromLambda, nSigTpcPrFromLambda, nSigTofPrFromLambda;
13241310
1325- auto cascCharge = casc.sign () > 0 ? 1 : -1 ;
1311+ auto chargeCasc = casc.sign () > 0 ? 1 : -1 ;
13261312
1327- if (cascCharge < 0 ) {
1313+ if (chargeCasc < 0 ) {
13281314 pPiFromLambda = trackNegLambdaDaughter.p ();
13291315 nSigTpcPiFromLambda = trackNegLambdaDaughter.tpcNSigmaPi ();
13301316 nSigTofPiFromLambda = trackNegLambdaDaughter.tofNSigmaPi ();
0 commit comments