Skip to content

Commit 151f946

Browse files
Update taskCharmHadronsTrackFemtoDream.cxx
1 parent a220fa8 commit 151f946

File tree

1 file changed

+44
-10
lines changed

1 file changed

+44
-10
lines changed

PWGHF/HFC/Tasks/taskCharmHadronsTrackFemtoDream.cxx

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ struct HfTaskCharmHadronsTrackFemtoDream {
339339

340340
/// Compute the charm hadron candidates mass with the daughter masses
341341
/// assumes the candidate is either a D+ or Λc+ or D0 or Dstar
342-
template <DecayChannel Channel, typename Candidate>
342+
template <DecayChannel Channel, bool ReturnDaughMass, typename Candidate>
343343
float getCharmHadronMass(const Candidate& cand)
344344
{
345345
float invMass = 0.0f;
@@ -370,12 +370,26 @@ struct HfTaskCharmHadronsTrackFemtoDream {
370370
}
371371
// D* → D0π (PDG: 413)
372372
if constexpr (Channel == DecayChannel::DstarToD0Pi) {
373-
invMass = cand.m(std::array{MassPiPlus, MassKPlus, MassPiPlus});
374-
return invMass;
373+
float mDstar = 0.f;
374+
float mD0 = 0.f;
375+
376+
if (cand.charge() > 0.f) {
377+
mDstar = cand.m(std::array{MassPiPlus, MassKPlus, MassPiPlus});
378+
mD0 = cand.mDaughD0(std::array{MassPiPlus, MassKPlus});
379+
} else {
380+
mDstar = cand.m(std::array{MassKPlus, MassPiPlus, MassPiPlus});
381+
mD0 = cand.mDaughD0(std::array{MassKPlus, MassPiPlus});
382+
}
383+
384+
if constexpr (ReturnDaughMass) {
385+
return mD0;
386+
} else {
387+
return mDstar - mD0;
388+
}
375389
}
376390

377391
// Add more channels as needed
378-
return invMass;
392+
return 0.f;
379393
}
380394

381395
template <DecayChannel Channel, typename Candidate, typename Track>
@@ -437,7 +451,11 @@ struct HfTaskCharmHadronsTrackFemtoDream {
437451
massCharmTrk = {MassPiPlus, MassKPlus, MassPiPlus, trackMassHyp};
438452
} else if constexpr (Channel == DecayChannel::DstarToD0Pi) {
439453
// D* → D0π
440-
massCharmTrk = {MassPiPlus, MassKPlus, MassPiPlus, trackMassHyp};
454+
if (cand.candidateSelFlag() == 1) {
455+
massCharmTrk = {MassPiPlus, MassKPlus, MassPiPlus, trackMassHyp};
456+
} else {
457+
massCharmTrk = {MassKPlus, MassPiPlus, MassPiPlus, trackMassHyp};
458+
}
441459
}
442460

443461
return static_cast<float>(RecoDecay::m(pVecCharmTrk, massCharmTrk));
@@ -500,7 +518,7 @@ struct HfTaskCharmHadronsTrackFemtoDream {
500518
if (kstar > highkstarCut) {
501519
continue;
502520
}
503-
float invMass = getCharmHadronMass<Channel>(p2);
521+
float invMass = getCharmHadronMass<Channel, false>(p2);
504522

505523
if (invMass < charmSel.charmHadMinInvMass || invMass > charmSel.charmHadMaxInvMass) {
506524
continue;
@@ -626,7 +644,7 @@ struct HfTaskCharmHadronsTrackFemtoDream {
626644
continue;
627645
}
628646

629-
float invMass = getCharmHadronMass<Channel>(p2);
647+
float invMass = getCharmHadronMass<Channel, false>(p2);
630648

631649
if (invMass < charmSel.charmHadMinInvMass || invMass > charmSel.charmHadMaxInvMass) {
632650
continue;
@@ -691,14 +709,14 @@ struct HfTaskCharmHadronsTrackFemtoDream {
691709

692710
// ---- Fill Charm-Hadron Table ----
693711
for (auto const& part : sliceCharmHad) {
694-
float invMass = getCharmHadronMass<Channel>(part);
712+
float invMass = getCharmHadronMass<Channel, false>(part);
695713
registryCharmHadronQa.fill(
696714
HIST("CharmHadronQA/hPtVsMass"),
697715
part.pt(), invMass);
698716

699717
timeStamp = part.timeStamp();
700718

701-
if constexpr (Channel == DecayChannel::DplusToPiKPi || Channel == DecayChannel::LcToPKPi || Channel == DecayChannel::DstarToD0Pi) {
719+
if constexpr (Channel == DecayChannel::DplusToPiKPi || Channel == DecayChannel::LcToPKPi) {
702720

703721
rowFemtoResultCharm3Prong(
704722
col.globalIndex(),
@@ -728,9 +746,25 @@ struct HfTaskCharmHadronsTrackFemtoDream {
728746
part.bdtBkg(),
729747
part.bdtPrompt(),
730748
part.bdtFD());
749+
} else if constexpr (Channel == DecayChannel::DstarToD0Pi) {
750+
float invMassD0 = getCharmHadronMass<Channel, true>(part);
751+
rowFemtoResultCharmDstar(
752+
col.globalIndex(),
753+
timeStamp,
754+
invMass,
755+
invMassD0,
756+
part.pt(),
757+
part.eta(),
758+
part.phi(),
759+
part.prong0Id(),
760+
part.prong1Id(),
761+
part.prong2Id(),
762+
part.charge(),
763+
part.bdtBkg(),
764+
part.bdtPrompt(),
765+
part.bdtFD());
731766
}
732767
}
733-
734768
// ---- Fill Track Table ----
735769
for (auto const& part : sliceTrk1) {
736770
allTrackHisto.fillQA<IsMc, true>(

0 commit comments

Comments
 (0)