Skip to content

Commit f319082

Browse files
committed
Update on invariant mass calls
1 parent 3758ad8 commit f319082

File tree

1 file changed

+43
-30
lines changed

1 file changed

+43
-30
lines changed

PWGHF/HFC/TableProducer/correlatorD0Hadrons.cxx

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)