@@ -418,28 +418,33 @@ struct HfCorrelatorD0Hadrons {
418418 if (applyEfficiency != 0 ) {
419419 efficiencyWeight = 1 . / efficiencyDmeson->at (o2::analysis::findBin (binsPtEfficiencyD, candidate.pt ()));
420420 }
421+
422+ // Invariant mass of D0 and D0bar
423+ const auto invMassD0 = HfHelper::invMassD0ToPiK (candidate);
424+ const auto invMassD0bar = HfHelper::invMassD0barToKPi (candidate);
425+
421426 // ========================== Fill mass histo ================================
422427 if (candidate.isSelD0 () >= selectionFlagD0) {
423- registry.fill (HIST (" hMass" ), HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), efficiencyWeight);
424- registry.fill (HIST (" hMass1D" ), HfHelper::invMassD0ToPiK (candidate) , efficiencyWeight);
425- registry.fill (HIST (" hMassD01D" ), HfHelper::invMassD0ToPiK (candidate) , efficiencyWeight);
426- registry.fill (HIST (" hMassD0VsPtVsCent" ), HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), cent, efficiencyWeight);
428+ registry.fill (HIST (" hMass" ), invMassD0 , candidate.pt (), efficiencyWeight);
429+ registry.fill (HIST (" hMass1D" ), invMassD0 , efficiencyWeight);
430+ registry.fill (HIST (" hMassD01D" ), invMassD0 , efficiencyWeight);
431+ registry.fill (HIST (" hMassD0VsPtVsCent" ), invMassD0 , candidate.pt (), cent, efficiencyWeight);
427432 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
428433 outputMlD0[iclass] = candidate.mlProbD0 ()[classMl->at (iclass)];
429434 }
430- registry.fill (HIST (" hMLScoresVsMassVsPtVsOrigin" ), outputMlD0[0 ], outputMlD0[2 ], HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), (candidate.isSelD0bar () != 0 ) ? o2::aod::hf_correlation_d0_hadron::D0D0barBoth : o2::aod::hf_correlation_d0_hadron::D0Only);
435+ registry.fill (HIST (" hMLScoresVsMassVsPtVsOrigin" ), outputMlD0[0 ], outputMlD0[2 ], invMassD0 , candidate.pt (), (candidate.isSelD0bar () != 0 ) ? o2::aod::hf_correlation_d0_hadron::D0D0barBoth : o2::aod::hf_correlation_d0_hadron::D0Only);
431436 }
432437 if (candidate.isSelD0bar () >= selectionFlagD0bar) {
433- registry.fill (HIST (" hMass" ), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), efficiencyWeight);
434- registry.fill (HIST (" hMass1D" ), HfHelper::invMassD0barToKPi (candidate) , efficiencyWeight);
435- registry.fill (HIST (" hMassD0bar1D" ), HfHelper::invMassD0barToKPi (candidate) , efficiencyWeight);
436- registry.fill (HIST (" hMassD0VsPtVsCent" ), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), cent, efficiencyWeight);
438+ registry.fill (HIST (" hMass" ), invMassD0bar , candidate.pt (), efficiencyWeight);
439+ registry.fill (HIST (" hMass1D" ), invMassD0bar , efficiencyWeight);
440+ registry.fill (HIST (" hMassD0bar1D" ), invMassD0bar , efficiencyWeight);
441+ registry.fill (HIST (" hMassD0VsPtVsCent" ), invMassD0bar , candidate.pt (), cent, efficiencyWeight);
437442 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
438443 outputMlD0bar[iclass] = candidate.mlProbD0bar ()[classMl->at (iclass)];
439444 }
440- registry.fill (HIST (" hMLScoresVsMassVsPtVsOrigin" ), outputMlD0bar[0 ], outputMlD0bar[2 ], HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), (candidate.isSelD0 () != 0 ) ? o2::aod::hf_correlation_d0_hadron::D0D0barBoth : o2::aod::hf_correlation_d0_hadron::D0barOnly);
445+ registry.fill (HIST (" hMLScoresVsMassVsPtVsOrigin" ), outputMlD0bar[0 ], outputMlD0bar[2 ], invMassD0bar , candidate.pt (), (candidate.isSelD0 () != 0 ) ? o2::aod::hf_correlation_d0_hadron::D0D0barBoth : o2::aod::hf_correlation_d0_hadron::D0barOnly);
441446 }
442- entryD0CandRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), outputMlD0[0 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[2 ]);
447+ entryD0CandRecoInfo (invMassD0, invMassD0bar , candidate.pt (), outputMlD0[0 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[2 ]);
443448
444449 // ========================== Fill general histos ================================
445450 registry.fill (HIST (" hPtCand" ), candidate.pt ());
@@ -474,13 +479,13 @@ struct HfCorrelatorD0Hadrons {
474479 invMassDstar2 = std::sqrt ((eKPi + ePion) * (eKPi + ePion) - pSum2);
475480
476481 if (candidate.isSelD0 () >= selectionFlagD0) {
477- if ((std::abs (invMassDstar1 - HfHelper::invMassD0ToPiK (candidate) ) - softPiMass) < ptSoftPionMax) {
482+ if ((std::abs (invMassDstar1 - invMassD0 ) - softPiMass) < ptSoftPionMax) {
478483 continue ;
479484 }
480485 }
481486
482487 if (candidate.isSelD0bar () >= selectionFlagD0bar) {
483- if ((std::abs (invMassDstar2 - HfHelper::invMassD0barToKPi (candidate) ) - softPiMass) < ptSoftPionMax) {
488+ if ((std::abs (invMassDstar2 - invMassD0bar ) - softPiMass) < ptSoftPionMax) {
484489 continue ;
485490 }
486491 }
@@ -507,7 +512,7 @@ struct HfCorrelatorD0Hadrons {
507512 poolBin,
508513 correlationStatus,
509514 cent);
510- entryD0HadronRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , signalStatus);
515+ entryD0HadronRecoInfo (invMassD0, invMassD0bar , signalStatus);
511516 entryD0HadronGenInfo (false , false , 0 );
512517 entryD0HadronMlInfo (outputMlD0[0 ], outputMlD0[1 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[1 ], outputMlD0bar[2 ]);
513518 entryTrackRecoInfo (track.dcaXY (), track.dcaZ (), track.tpcNClsCrossedRows ());
@@ -577,6 +582,9 @@ struct HfCorrelatorD0Hadrons {
577582 efficiencyWeight = 1 . / efficiencyDmeson->at (o2::analysis::findBin (binsPtEfficiencyD, candidate.pt ()));
578583 }
579584
585+ const auto invMassD0 = HfHelper::invMassD0ToPiK (candidate);
586+ const auto invMassD0bar = HfHelper::invMassD0barToKPi (candidate);
587+
580588 if (std::abs (candidate.flagMcMatchRec ()) == o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) {
581589 // fill per-candidate distributions from D0/D0bar true candidates
582590 registry.fill (HIST (" hPtCandRec" ), candidate.pt ());
@@ -590,7 +598,7 @@ struct HfCorrelatorD0Hadrons {
590598 // fill invariant mass plots from D0/D0bar signal and background candidates
591599 if (candidate.isSelD0 () >= selectionFlagD0) { // only reco as D0
592600 if (candidate.flagMcMatchRec () == o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) { // also matched as D0
593- registry.fill (HIST (" hMassD0RecSig" ), HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), efficiencyWeight);
601+ registry.fill (HIST (" hMassD0RecSig" ), invMassD0 , candidate.pt (), efficiencyWeight);
594602 if (isD0Prompt) {
595603 registry.fill (HIST (" hPtCandRecSigPrompt" ), candidate.pt ());
596604 registry.fill (HIST (" hPtVsMultiplicityRecPrompt" ), candidate.pt (), collision.multFT0M ());
@@ -599,17 +607,17 @@ struct HfCorrelatorD0Hadrons {
599607 registry.fill (HIST (" hPtVsMultiplicityRecNonPrompt" ), candidate.pt (), collision.multFT0M ());
600608 }
601609 } else if (candidate.flagMcMatchRec () == -o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) {
602- registry.fill (HIST (" hMassD0RecRef" ), HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), efficiencyWeight);
610+ registry.fill (HIST (" hMassD0RecRef" ), invMassD0 , candidate.pt (), efficiencyWeight);
603611 } else {
604- registry.fill (HIST (" hMassD0RecBg" ), HfHelper::invMassD0ToPiK (candidate) , candidate.pt (), efficiencyWeight);
612+ registry.fill (HIST (" hMassD0RecBg" ), invMassD0 , candidate.pt (), efficiencyWeight);
605613 }
606614 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
607615 outputMlD0[iclass] = candidate.mlProbD0 ()[classMl->at (iclass)];
608616 }
609617 }
610618 if (candidate.isSelD0bar () >= selectionFlagD0bar) { // only reco as D0bar
611619 if (candidate.flagMcMatchRec () == -o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) { // also matched as D0bar
612- registry.fill (HIST (" hMassD0barRecSig" ), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), efficiencyWeight);
620+ registry.fill (HIST (" hMassD0barRecSig" ), invMassD0bar , candidate.pt (), efficiencyWeight);
613621 if (isD0Prompt) {
614622 registry.fill (HIST (" hPtCandRecSigPrompt" ), candidate.pt ());
615623 registry.fill (HIST (" hPtVsMultiplicityRecPrompt" ), candidate.pt (), collision.multFT0M ());
@@ -618,15 +626,15 @@ struct HfCorrelatorD0Hadrons {
618626 registry.fill (HIST (" hPtVsMultiplicityRecNonPrompt" ), candidate.pt (), collision.multFT0M ());
619627 }
620628 } else if (candidate.flagMcMatchRec () == o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) {
621- registry.fill (HIST (" hMassD0barRecRef" ), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), efficiencyWeight);
629+ registry.fill (HIST (" hMassD0barRecRef" ), invMassD0bar , candidate.pt (), efficiencyWeight);
622630 } else {
623- registry.fill (HIST (" hMassD0barRecBg" ), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), efficiencyWeight);
631+ registry.fill (HIST (" hMassD0barRecBg" ), invMassD0bar , candidate.pt (), efficiencyWeight);
624632 }
625633 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
626634 outputMlD0bar[iclass] = candidate.mlProbD0bar ()[classMl->at (iclass)];
627635 }
628636 }
629- entryD0CandRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , candidate.pt (), outputMlD0[0 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[2 ]);
637+ entryD0CandRecoInfo (invMassD0, invMassD0bar , candidate.pt (), outputMlD0[0 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[2 ]);
630638 entryD0CandGenInfo (isD0Prompt);
631639
632640 // ===================== Define parameters for soft pion removal ========================
@@ -665,13 +673,13 @@ struct HfCorrelatorD0Hadrons {
665673 invMassDstar2 = std::sqrt ((eKPi + ePion) * (eKPi + ePion) - pSum2);
666674
667675 if (candidate.isSelD0 () >= selectionFlagD0) {
668- if ((std::abs (invMassDstar1 - HfHelper::invMassD0ToPiK (candidate) ) - softPiMass) < ptSoftPionMax) {
676+ if ((std::abs (invMassDstar1 - invMassD0 ) - softPiMass) < ptSoftPionMax) {
669677 continue ;
670678 }
671679 }
672680
673681 if (candidate.isSelD0bar () >= selectionFlagD0bar) {
674- if ((std::abs (invMassDstar2 - HfHelper::invMassD0barToKPi (candidate) ) - softPiMass) < ptSoftPionMax) {
682+ if ((std::abs (invMassDstar2 - invMassD0bar ) - softPiMass) < ptSoftPionMax) {
675683 continue ;
676684 }
677685 }
@@ -713,7 +721,7 @@ struct HfCorrelatorD0Hadrons {
713721 poolBin,
714722 correlationStatus,
715723 cent);
716- entryD0HadronRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , signalStatus);
724+ entryD0HadronRecoInfo (invMassD0, invMassD0bar , signalStatus);
717725 entryD0HadronMlInfo (outputMlD0[0 ], outputMlD0[1 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[1 ], outputMlD0bar[2 ]);
718726 if (track.has_mcParticle ()) {
719727 auto mcParticle = track.template mcParticle_as <aod::McParticles>();
@@ -869,6 +877,8 @@ struct HfCorrelatorD0Hadrons {
869877 }
870878
871879 // soft pion removal, signal status 1,3 for D0 and 2,3 for D0bar (SoftPi removed), signal status 11,13 for D0 and 12,13 for D0bar (only SoftPi)
880+ const auto invMassD0 = HfHelper::invMassD0ToPiK (candidate);
881+ const auto invMassD0bar = HfHelper::invMassD0barToKPi (candidate);
872882 auto ePiK = RecoDecay::e (candidate.pVectorProng0 (), massPi) + RecoDecay::e (candidate.pVectorProng1 (), massK);
873883 auto eKPi = RecoDecay::e (candidate.pVectorProng0 (), massK) + RecoDecay::e (candidate.pVectorProng1 (), massPi);
874884 double invMassDstar1 = 0 ., invMassDstar2 = 0 .;
@@ -882,15 +892,15 @@ struct HfCorrelatorD0Hadrons {
882892 float cent = 100 .; // Centrality Placeholder: will be updated later
883893
884894 if (candidate.isSelD0 () >= selectionFlagD0) {
885- if ((std::abs (invMassDstar1 - HfHelper::invMassD0ToPiK (candidate) ) - softPiMass) < ptSoftPionMax) {
895+ if ((std::abs (invMassDstar1 - invMassD0 ) - softPiMass) < ptSoftPionMax) {
886896 isSoftPiD0 = true ;
887897 }
888898 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
889899 outputMlD0[iclass] = candidate.mlProbD0 ()[classMl->at (iclass)];
890900 }
891901 }
892902 if (candidate.isSelD0bar () >= selectionFlagD0bar) {
893- if ((std::abs (invMassDstar2 - HfHelper::invMassD0barToKPi (candidate) ) - softPiMass) < ptSoftPionMax) {
903+ if ((std::abs (invMassDstar2 - invMassD0bar ) - softPiMass) < ptSoftPionMax) {
894904 isSoftPiD0bar = true ;
895905 }
896906 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
@@ -915,7 +925,7 @@ struct HfCorrelatorD0Hadrons {
915925 }
916926 bool correlationStatus = false ;
917927 entryD0HadronPair (getDeltaPhi (candidate.phi (), particleAssoc.phi ()), candidate.eta () - particleAssoc.eta (), candidate.pt (), particleAssoc.pt (), poolBin, correlationStatus, cent);
918- entryD0HadronRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , signalStatus);
928+ entryD0HadronRecoInfo (invMassD0, invMassD0bar , signalStatus);
919929 entryD0HadronGenInfo (false , false , 0 );
920930 entryD0HadronMlInfo (outputMlD0[0 ], outputMlD0[1 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[1 ], outputMlD0bar[2 ]);
921931 entryTrackRecoInfo (particleAssoc.dcaXY (), particleAssoc.dcaZ (), particleAssoc.tpcNClsCrossedRows ());
@@ -972,7 +982,10 @@ struct HfCorrelatorD0Hadrons {
972982 outputMlD0bar[iclass] = candidate.mlProbD0bar ()[classMl->at (iclass)];
973983 }
974984 }
985+
975986 // soft pion removal
987+ const auto invMassD0 = HfHelper::invMassD0ToPiK (candidate);
988+ const auto invMassD0bar = HfHelper::invMassD0barToKPi (candidate);
976989 auto ePiK = RecoDecay::e (candidate.pVectorProng0 (), massPi) + RecoDecay::e (candidate.pVectorProng1 (), massK);
977990 auto eKPi = RecoDecay::e (candidate.pVectorProng0 (), massK) + RecoDecay::e (candidate.pVectorProng1 (), massPi);
978991 double invMassDstar1 = 0 ., invMassDstar2 = 0 .;
@@ -983,13 +996,13 @@ struct HfCorrelatorD0Hadrons {
983996 invMassDstar2 = std::sqrt ((eKPi + ePion) * (eKPi + ePion) - pSum2);
984997
985998 if (candidate.isSelD0 () >= selectionFlagD0) {
986- if ((std::abs (invMassDstar1 - HfHelper::invMassD0ToPiK (candidate) ) - softPiMass) < ptSoftPionMax) {
999+ if ((std::abs (invMassDstar1 - invMassD0 ) - softPiMass) < ptSoftPionMax) {
9871000 isSoftPiD0 = true ;
9881001 }
9891002 }
9901003
9911004 if (candidate.isSelD0bar () >= selectionFlagD0bar) {
992- if ((std::abs (invMassDstar2 - HfHelper::invMassD0barToKPi (candidate) ) - softPiMass) < ptSoftPionMax) {
1005+ if ((std::abs (invMassDstar2 - invMassD0bar ) - softPiMass) < ptSoftPionMax) {
9931006 isSoftPiD0bar = true ;
9941007 }
9951008 }
@@ -1048,7 +1061,7 @@ struct HfCorrelatorD0Hadrons {
10481061 registry.fill (HIST (" hSignalStatusMERec" ), signalStatus);
10491062 bool correlationStatus = false ;
10501063 entryD0HadronPair (getDeltaPhi (candidate.phi (), particleAssoc.phi ()), candidate.eta () - particleAssoc.eta (), candidate.pt (), particleAssoc.pt (), poolBin, correlationStatus, cent);
1051- entryD0HadronRecoInfo (HfHelper::invMassD0ToPiK (candidate), HfHelper::invMassD0barToKPi (candidate) , signalStatus);
1064+ entryD0HadronRecoInfo (invMassD0, invMassD0bar , signalStatus);
10521065 entryD0HadronGenInfo (isD0Prompt, isPhysicalPrimary, trackOrigin);
10531066 entryD0HadronMlInfo (outputMlD0[0 ], outputMlD0[1 ], outputMlD0[2 ], outputMlD0bar[0 ], outputMlD0bar[1 ], outputMlD0bar[2 ]);
10541067 entryTrackRecoInfo (particleAssoc.dcaXY (), particleAssoc.dcaZ (), particleAssoc.tpcNClsCrossedRows ());
0 commit comments