Skip to content

Commit 948a4b3

Browse files
authored
PWGHF: add sign of soft pion in D* table to avoid to access the track table (#4481)
1 parent b0f6d04 commit 948a4b3

4 files changed

Lines changed: 19 additions & 18 deletions

File tree

PWGHF/D2H/Tasks/taskCharmPolarisation.cxx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,8 @@ struct TaskPolarisationCharmHadrons {
120120
}; // end init
121121

122122
/// \param candidates are the selected candidates
123-
/// \param tracks are the tracks
124123
template <uint8_t channel, bool withMl, typename Cand>
125-
void runPolarisationAnalysis(Cand const& candidate, Tracks const& tracks)
124+
void runPolarisationAnalysis(Cand const& candidate)
126125
{
127126

128127
// loop over mass hypotheses
@@ -146,9 +145,8 @@ struct TaskPolarisationCharmHadrons {
146145
pyCharmHad = candidate.pyDstar();
147146
pzCharmHad = candidate.pzDstar();
148147
massDau = massPi; // (*)
149-
auto prongSoftPi = candidate.template prongPi_as<aod::Tracks>();
150-
invMassCharmHad = (prongSoftPi.sign() > 0) ? candidate.invMassDstar() : candidate.invMassAntiDstar();
151-
invMassCharmHadForSparse = (prongSoftPi.sign() > 0) ? (invMassCharmHad - candidate.invMassD0()) : (invMassCharmHad - candidate.invMassD0Bar()); // different for D*
148+
invMassCharmHad = (candidate.signSoftPi() > 0) ? candidate.invMassDstar() : candidate.invMassAntiDstar();
149+
invMassCharmHadForSparse = (candidate.signSoftPi() > 0) ? (invMassCharmHad - candidate.invMassD0()) : (invMassCharmHad - candidate.invMassD0Bar()); // different for D*
152150
rapidity = candidate.y(massDstar);
153151
if constexpr (withMl) {
154152
outputMl[0] = -1.; // not yet implemented in the selector
@@ -233,14 +231,14 @@ struct TaskPolarisationCharmHadrons {
233231
/////////////////////////
234232

235233
// Dstar with rectangular cuts
236-
void processDstar(soa::Filtered<CandDstarWSelFlag>::iterator const& dstarCandidate, Tracks const& tracks)
234+
void processDstar(soa::Filtered<CandDstarWSelFlag>::iterator const& dstarCandidate)
237235
{
238-
runPolarisationAnalysis<charm_polarisation::DecayChannel::DstarToDzeroPi, false>(dstarCandidate, tracks);
236+
runPolarisationAnalysis<charm_polarisation::DecayChannel::DstarToDzeroPi, false>(dstarCandidate);
239237
}
240238
PROCESS_SWITCH(TaskPolarisationCharmHadrons, processDstar, "Process Dstar candidates without ML", true);
241239

242240
// Dstar with ML cuts
243-
void processDstarWithMl(soa::Filtered<CandDstarWSelFlag>::iterator const&, Tracks const&)
241+
void processDstarWithMl(soa::Filtered<CandDstarWSelFlag>::iterator const&)
244242
{
245243
// DUMMY
246244
}
@@ -251,16 +249,16 @@ struct TaskPolarisationCharmHadrons {
251249
////////////////////////////
252250

253251
// Lc->pKpi with rectangular cuts
254-
void processLcToPKPi(soa::Filtered<CandLcToPKPiWSelFlag>::iterator const& lcCandidate, Tracks const& tracks)
252+
void processLcToPKPi(soa::Filtered<CandLcToPKPiWSelFlag>::iterator const& lcCandidate)
255253
{
256-
runPolarisationAnalysis<charm_polarisation::DecayChannel::LcToPKPi, false>(lcCandidate, tracks);
254+
runPolarisationAnalysis<charm_polarisation::DecayChannel::LcToPKPi, false>(lcCandidate);
257255
}
258256
PROCESS_SWITCH(TaskPolarisationCharmHadrons, processLcToPKPi, "Process Lc candidates without ML", false);
259257

260258
// Lc->pKpi with ML cuts
261-
void processLcToPKPiWithMl(soa::Filtered<soa::Join<CandLcToPKPiWSelFlag, aod::HfMlLcToPKPi>>::iterator const& lcCandidate, Tracks const& tracks)
259+
void processLcToPKPiWithMl(soa::Filtered<soa::Join<CandLcToPKPiWSelFlag, aod::HfMlLcToPKPi>>::iterator const& lcCandidate)
262260
{
263-
runPolarisationAnalysis<charm_polarisation::DecayChannel::LcToPKPi, true>(lcCandidate, tracks);
261+
runPolarisationAnalysis<charm_polarisation::DecayChannel::LcToPKPi, true>(lcCandidate);
264262
}
265263
PROCESS_SWITCH(TaskPolarisationCharmHadrons, processLcToPKPiWithMl, "Process Lc candidates with ML", false);
266264
};

PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ struct HfTaskDstarToD0Pi {
119119
registry.add("QA/hPtVsYNonPromptDstarGen", "MC Matched Non-Prompt D* Candidates at Generator Level; #it{p}_{T} of D*; #it{y}", {HistType::kTH2F, {{vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {100, -5., 5.}}});
120120
}
121121

122-
void process(aod::Tracks const&,
123-
CandDstarWSelFlag const&)
122+
void process(CandDstarWSelFlag const&)
124123
{
125124
for (const auto& candDstar : rowsSelectedCandDstar) {
126125
auto yDstar = candDstar.y(constants::physics::MassDStar);
@@ -155,16 +154,16 @@ struct HfTaskDstarToD0Pi {
155154
auto invD0 = candDstar.invMassD0();
156155
auto invD0Bar = candDstar.invMassD0Bar();
157156

158-
auto prongSoftPi = candDstar.prongPi_as<aod::Tracks>();
159-
if (prongSoftPi.sign() > 0) {
157+
auto signDstar = candDstar.signSoftPi();
158+
if (signDstar) {
160159
registry.fill(HIST("Yield/hDeltaInvMassDstar2D"), (invDstar - invD0), candDstar.pt());
161160
registry.fill(HIST("Yield/hInvMassD0"), invD0, candDstar.ptD0());
162161
registry.fill(HIST("Yield/hDeltaInvMassDstar1D"), (invDstar - invD0));
163162
registry.fill(HIST("Yield/hInvMassDstar"), invDstar);
164163
// filling pt of two pronges of D0
165164
registry.fill(HIST("QA/hPtProng0D0"), candDstar.ptProng0());
166165
registry.fill(HIST("QA/hPtProng1D0"), candDstar.ptProng1());
167-
} else if (prongSoftPi.sign() < 0) {
166+
} else if (signDstar) {
168167
registry.fill(HIST("Yield/hDeltaInvMassDstar2D"), (invAntiDstar - invD0Bar), candDstar.pt());
169168
registry.fill(HIST("Yield/hInvMassD0"), invD0Bar, candDstar.ptD0());
170169
registry.fill(HIST("Yield/hDeltaInvMassDstar1D"), (invAntiDstar - invD0Bar));

PWGHF/DataModel/CandidateReconstructionTables.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,6 +1556,7 @@ DECLARE_SOA_DYNAMIC_COLUMN(NormalisedImpParamSoftPi, normalisedImpParamSoftPi,
15561556
DECLARE_SOA_COLUMN(PxSoftPi, pxSoftPi, float);
15571557
DECLARE_SOA_COLUMN(PySoftPi, pySoftPi, float);
15581558
DECLARE_SOA_COLUMN(PzSoftPi, pzSoftPi, float);
1559+
DECLARE_SOA_COLUMN(SignSoftPi, signSoftPi, int8_t);
15591560
// Dstar momenta
15601561
DECLARE_SOA_EXPRESSION_COLUMN(PxDstar, pxDstar, float, 1.f * aod::hf_cand::pxProng0 + 1.f * aod::hf_cand::pxProng1 + 1.f * aod::hf_cand_dstar::pxSoftPi);
15611562
DECLARE_SOA_EXPRESSION_COLUMN(PyDstar, pyDstar, float, 1.f * aod::hf_cand::pyProng0 + 1.f * aod::hf_cand::pyProng1 + 1.f * aod::hf_cand_dstar::pySoftPi);
@@ -1658,6 +1659,7 @@ DECLARE_SOA_TABLE(HfCandDstarBase, "AOD", "HFCANDDSTRBASE",
16581659
hf_track_index::ProngD0Id, // Index column points to Hf2Prongs table filled by indexSkimcreator
16591660
// Softpi
16601661
hf_cand_dstar::PxSoftPi, hf_cand_dstar::PySoftPi, hf_cand_dstar::PzSoftPi,
1662+
hf_cand_dstar::SignSoftPi,
16611663
hf_cand_dstar::ImpParamSoftPi, hf_cand_dstar::ErrorImpParamSoftPi,
16621664
// Two pronges of D0
16631665
hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0,

PWGHF/TableProducer/candidateCreatorDstar.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,10 @@ struct HfCandidateCreatorDstar {
255255
// D0 pt magnitude
256256
auto ptD0 = RecoDecay::pt(pVecD0);
257257

258-
// Soft pi momentum vector
258+
// Soft pi momentum vector and sign
259259
std::array<float, 3> pVecSoftPi;
260260
trackPiParVar.getPxPyPzGlo(pVecSoftPi);
261+
int8_t signSoftPi = static_cast<int8_t>(trackPi.sign());
261262

262263
// D* pt magnitude
263264
auto ptDstar = RecoDecay::pt(pVecD0, pVecSoftPi);
@@ -267,6 +268,7 @@ struct HfCandidateCreatorDstar {
267268
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
268269
rowTrackIndexDstar.prong0Id(), rowTrackIndexDstar.prongD0Id(),
269270
pVecSoftPi[0], pVecSoftPi[1], pVecSoftPi[2],
271+
signSoftPi,
270272
impactParameterPi.getY(), std::sqrt(impactParameterPi.getSigmaY2()),
271273
pVecD0Prong0[0], pVecD0Prong0[1], pVecD0Prong0[2],
272274
pVecD0Prong1[0], pVecD0Prong1[1], pVecD0Prong1[2]);

0 commit comments

Comments
 (0)