Skip to content

Commit dffb22f

Browse files
author
Mattia Faggin
committed
Propagate changes to code related to Ds analyses.
Modifications done on core code - PWGHF/Core/HfMlResponseDsToKKPi.h - PWGHF/TableProducer/candidateSelectorDsToKKPi.cxx Analysis tasks + following code where modifications are needed: - [ MODIFIED ] PWGHF/TableProducer/treeCreatorDsToKKPi.cxx Analysis tasks + following code where modifications are not needed (no explicit call of Lc-daughter PID): - [not modified] PWGHF/HFC/Tasks/taskCorrelationDsHadrons.cxx - [not modified] PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx - [not modified] PWGHF/D2H/Tasks/taskDs.cxx
1 parent 9743ac4 commit dffb22f

File tree

3 files changed

+90
-79
lines changed

3 files changed

+90
-79
lines changed

PWGHF/Core/HfMlResponseDsToKKPi.h

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@
8181
break; \
8282
}
8383

84+
// Variation of CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(OBJECT, FEATURE, GETTER1, GETTER2)
85+
// where GETTER1 and GETTER2 are methods of the OBJECT
86+
#define CHECK_AND_FILL_VEC_DS_SIGNED(OBJECT, FEATURE, GETTER1, GETTER2) \
87+
case static_cast<uint8_t>(InputFeaturesDsToKKPi::FEATURE): { \
88+
if (caseDsToKKPi) { \
89+
inputFeatures.emplace_back(OBJECT.GETTER1()); \
90+
} else { \
91+
inputFeatures.emplace_back(OBJECT.GETTER2()); \
92+
} \
93+
break; \
94+
}
95+
8496
namespace o2::analysis
8597
{
8698
enum class InputFeaturesDsToKKPi : uint8_t {
@@ -148,9 +160,8 @@ class HfMlResponseDsToKKPi : public HfMlResponse<TypeOutputScore>
148160
/// \param prong2 is the candidate's prong2
149161
/// \param caseDsToKKPi used to divide the case DsToKKPi from DsToPiKK
150162
/// \return inputFeatures vector
151-
template <typename T1, typename T2>
152-
std::vector<float> getInputFeatures(T1 const& candidate,
153-
T2 const& prong0, T2 const& prong1, T2 const& prong2, bool const& caseDsToKKPi)
163+
template <typename T1>
164+
std::vector<float> getInputFeatures(T1 const& candidate, bool const& caseDsToKKPi)
154165
{
155166
std::vector<float> inputFeatures;
156167

@@ -174,33 +185,33 @@ class HfMlResponseDsToKKPi : public HfMlResponse<TypeOutputScore>
174185
CHECK_AND_FILL_VEC_DS(impactParameterZ0);
175186
CHECK_AND_FILL_VEC_DS(impactParameterZ1);
176187
CHECK_AND_FILL_VEC_DS(impactParameterZ2);
177-
// TPC PID variables
178-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTpcPi0, tpcNSigmaPi);
179-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTpcPi1, tpcNSigmaPi);
180-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTpcPi2, tpcNSigmaPi);
181-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTpcKa0, tpcNSigmaKa);
182-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTpcKa1, tpcNSigmaKa);
183-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTpcKa2, tpcNSigmaKa);
184-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTofPi0, tofNSigmaPi);
185-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTofPi1, tofNSigmaPi);
186-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTofPi2, tofNSigmaPi);
187-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTofKa0, tofNSigmaKa);
188-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTofKa1, tofNSigmaKa);
189-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTofKa2, tofNSigmaKa);
190-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong0, prong2, nSigTpcKaExpKa0, tpcNSigmaKa);
191-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong2, prong0, nSigTpcPiExpPi2, tpcNSigmaPi);
192-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong0, prong2, nSigTofKaExpKa0, tofNSigmaKa);
193-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong2, prong0, nSigTofPiExpPi2, tofNSigmaPi);
188+
// TPC and TOF PID variables
189+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcPi0, nSigTpcPi0);
190+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcPi1, nSigTpcPi1);
191+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcPi2, nSigTpcPi2);
192+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcKa0, nSigTpcKa0);
193+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcKa1, nSigTpcKa1);
194+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcKa2, nSigTpcKa2);
195+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofPi0, nSigTofPi0);
196+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofPi1, nSigTofPi1);
197+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofPi2, nSigTofPi2);
198+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofKa0, nSigTofKa0);
199+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofKa1, nSigTofKa1);
200+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTofKa2, nSigTofKa2);
201+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTpcKaExpKa0, nSigTpcKa0, nSigTpcKa2);
202+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTpcPiExpPi2, nSigTpcPi2, nSigTpcPi0);
203+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTofKaExpKa0, nSigTofKa0, nSigTofKa2);
204+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTofPiExpPi2, nSigTofPi2, nSigTofPi0);
194205

195206
// Combined PID variables
196-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTpcTofPi0, tpcTofNSigmaPi);
197-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTpcTofPi1, tpcTofNSigmaPi);
198-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTpcTofPi2, tpcTofNSigmaPi);
199-
CHECK_AND_FILL_VEC_DS_FULL(prong0, nSigTpcTofKa0, tpcTofNSigmaKa);
200-
CHECK_AND_FILL_VEC_DS_FULL(prong1, nSigTpcTofKa1, tpcTofNSigmaKa);
201-
CHECK_AND_FILL_VEC_DS_FULL(prong2, nSigTpcTofKa2, tpcTofNSigmaKa);
202-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong0, prong2, nSigTpcTofKaExpKa0, tpcTofNSigmaKa);
203-
CHECK_AND_FILL_VEC_DS_OBJECT_SIGNED(prong2, prong0, nSigTpcTofPiExpPi2, tpcTofNSigmaPi);
207+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofPi0, tpcTofNSigmaPi0);
208+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofPi1, tpcTofNSigmaPi1);
209+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofPi2, tpcTofNSigmaPi2);
210+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofKa0, tpcTofNSigmaKa0);
211+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofKa1, tpcTofNSigmaKa1);
212+
CHECK_AND_FILL_VEC_DS_FULL(candidate, nSigTpcTofKa2, tpcTofNSigmaKa2);
213+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTpcTofKaExpKa0, tpcTofNSigmaKa0, tpcTofNSigmaKa2);
214+
CHECK_AND_FILL_VEC_DS_SIGNED(candidate, nSigTpcTofPiExpPi2, tpcTofNSigmaPi2, tpcTofNSigmaPi0);
204215

205216
// Ds specific variables
206217
CHECK_AND_FILL_VEC_DS_HFHELPER_SIGNED(candidate, absCos3PiK, absCos3PiKDsToKKPi, absCos3PiKDsToPiKK);

PWGHF/TableProducer/candidateSelectorDsToKKPi.cxx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ struct HfCandidateSelectorDsToKKPi {
251251
return true;
252252
}
253253

254-
void process(aod::HfCand3Prong const& candidates,
254+
void process(aod::HfCand3ProngWPid const& candidates,
255255
TracksSel const&)
256256
{
257257
// looping over 3-prong candidates
@@ -320,17 +320,17 @@ struct HfCandidateSelectorDsToKKPi {
320320
int pidTrackNegKaon = -1;
321321

322322
if (usePidTpcAndTof) {
323-
pidTrackPos1Pion = selectorPion.statusTpcAndTof(trackPos1);
324-
pidTrackPos1Kaon = selectorKaon.statusTpcAndTof(trackPos1);
325-
pidTrackPos2Pion = selectorPion.statusTpcAndTof(trackPos2);
326-
pidTrackPos2Kaon = selectorKaon.statusTpcAndTof(trackPos2);
327-
pidTrackNegKaon = selectorKaon.statusTpcAndTof(trackNeg);
323+
pidTrackPos1Pion = selectorPion.statusTpcAndTof(trackPos1, candidate.nSigTpcPi0(), candidate.nSigTofPi0());
324+
pidTrackPos1Kaon = selectorKaon.statusTpcAndTof(trackPos1, candidate.nSigTpcKa0(), candidate.nSigTofKa0());
325+
pidTrackPos2Pion = selectorPion.statusTpcAndTof(trackPos2, candidate.nSigTpcPi2(), candidate.nSigTofPi2());
326+
pidTrackPos2Kaon = selectorKaon.statusTpcAndTof(trackPos2, candidate.nSigTpcKa2(), candidate.nSigTofKa2());
327+
pidTrackNegKaon = selectorKaon.statusTpcAndTof(trackNeg, candidate.nSigTpcKa1(), candidate.nSigTofKa1());
328328
} else {
329-
pidTrackPos1Pion = selectorPion.statusTpcOrTof(trackPos1);
330-
pidTrackPos1Kaon = selectorKaon.statusTpcOrTof(trackPos1);
331-
pidTrackPos2Pion = selectorPion.statusTpcOrTof(trackPos2);
332-
pidTrackPos2Kaon = selectorKaon.statusTpcOrTof(trackPos2);
333-
pidTrackNegKaon = selectorKaon.statusTpcOrTof(trackNeg);
329+
pidTrackPos1Pion = selectorPion.statusTpcOrTof(trackPos1, candidate.nSigTpcPi0(), candidate.nSigTofPi0());
330+
pidTrackPos1Kaon = selectorKaon.statusTpcOrTof(trackPos1, candidate.nSigTpcKa0(), candidate.nSigTofKa0());
331+
pidTrackPos2Pion = selectorPion.statusTpcOrTof(trackPos2, candidate.nSigTpcPi2(), candidate.nSigTofPi2());
332+
pidTrackPos2Kaon = selectorKaon.statusTpcOrTof(trackPos2, candidate.nSigTpcKa2(), candidate.nSigTofKa2());
333+
pidTrackNegKaon = selectorKaon.statusTpcOrTof(trackNeg, candidate.nSigTpcKa1(), candidate.nSigTofKa1());
334334
}
335335

336336
bool pidDsToKKPi = !(pidTrackPos1Kaon == TrackSelectorPID::Rejected ||
@@ -364,11 +364,11 @@ struct HfCandidateSelectorDsToKKPi {
364364
bool isSelectedMlDsToPiKK = false;
365365

366366
if (topolDsToKKPi && pidDsToKKPi) {
367-
std::vector<float> inputFeaturesDsToKKPi = hfMlResponse.getInputFeatures(candidate, trackPos1, trackNeg, trackPos2, true);
367+
std::vector<float> inputFeaturesDsToKKPi = hfMlResponse.getInputFeatures(candidate, true);
368368
isSelectedMlDsToKKPi = hfMlResponse.isSelectedMl(inputFeaturesDsToKKPi, candidate.pt(), outputMlDsToKKPi);
369369
}
370370
if (topolDsToPiKK && pidDsToPiKK) {
371-
std::vector<float> inputFeaturesDsToPiKK = hfMlResponse.getInputFeatures(candidate, trackPos1, trackNeg, trackPos2, false);
371+
std::vector<float> inputFeaturesDsToPiKK = hfMlResponse.getInputFeatures(candidate, false);
372372
isSelectedMlDsToPiKK = hfMlResponse.isSelectedMl(inputFeaturesDsToPiKK, candidate.pt(), outputMlDsToPiKK);
373373
}
374374

PWGHF/TableProducer/treeCreatorDsToKKPi.cxx

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,8 @@ struct HfTreeCreatorDsToKKPi {
248248

249249
HfHelper hfHelper;
250250

251-
using CandDsData = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi>>;
252-
using CandDsMcReco = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfCand3ProngMcRec>>;
251+
using CandDsData = soa::Filtered<soa::Join<aod::HfCand3ProngWPid, aod::HfSelDsToKKPi>>;
252+
using CandDsMcReco = soa::Filtered<soa::Join<aod::HfCand3ProngWPid, aod::HfSelDsToKKPi, aod::HfCand3ProngMcRec>>;
253253
using CandDsMcGen = soa::Filtered<soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>>;
254254
using TracksWPid = soa::Join<aod::Tracks, aod::TracksPidPi, aod::PidTpcTofFullPi, aod::TracksPidKa, aod::PidTpcTofFullKa>;
255255

@@ -344,24 +344,24 @@ struct HfTreeCreatorDsToKKPi {
344344
candidate.impactParameter0(),
345345
candidate.impactParameter1(),
346346
candidate.impactParameter2(),
347-
prong0.tpcNSigmaPi(),
348-
prong0.tpcNSigmaKa(),
349-
prong0.tofNSigmaPi(),
350-
prong0.tofNSigmaKa(),
351-
prong0.tpcTofNSigmaPi(),
352-
prong0.tpcTofNSigmaKa(),
353-
prong1.tpcNSigmaPi(),
354-
prong1.tpcNSigmaKa(),
355-
prong1.tofNSigmaPi(),
356-
prong1.tofNSigmaKa(),
357-
prong1.tpcTofNSigmaPi(),
358-
prong1.tpcTofNSigmaKa(),
359-
prong2.tpcNSigmaPi(),
360-
prong2.tpcNSigmaKa(),
361-
prong2.tofNSigmaPi(),
362-
prong2.tofNSigmaKa(),
363-
prong2.tpcTofNSigmaPi(),
364-
prong2.tpcTofNSigmaKa(),
347+
candidate.nSigTpcPi0(),
348+
candidate.nSigTpcKa0(),
349+
candidate.nSigTofPi0(),
350+
candidate.nSigTofKa0(),
351+
candidate.tpcTofNSigmaPi0(),
352+
candidate.tpcTofNSigmaKa0(),
353+
candidate.nSigTpcPi1(),
354+
candidate.nSigTpcKa1(),
355+
candidate.nSigTofPi1(),
356+
candidate.nSigTofKa1(),
357+
candidate.tpcTofNSigmaPi1(),
358+
candidate.tpcTofNSigmaKa1(),
359+
candidate.nSigTpcPi2(),
360+
candidate.nSigTpcKa2(),
361+
candidate.nSigTofPi2(),
362+
candidate.nSigTofKa2(),
363+
candidate.tpcTofNSigmaPi2(),
364+
candidate.tpcTofNSigmaKa2(),
365365
massHypo == 0 ? candidate.isSelDsToKKPi() : -1,
366366
massHypo == 1 ? candidate.isSelDsToPiKK() : -1,
367367
invMassDs,
@@ -412,24 +412,24 @@ struct HfTreeCreatorDsToKKPi {
412412
candidate.impactParameter0(),
413413
candidate.impactParameter1(),
414414
candidate.impactParameter2(),
415-
prong0.tpcNSigmaPi(),
416-
prong0.tpcNSigmaKa(),
417-
prong0.tofNSigmaPi(),
418-
prong0.tofNSigmaKa(),
419-
prong0.tpcTofNSigmaPi(),
420-
prong0.tpcTofNSigmaKa(),
421-
prong1.tpcNSigmaPi(),
422-
prong1.tpcNSigmaKa(),
423-
prong1.tofNSigmaPi(),
424-
prong1.tofNSigmaKa(),
425-
prong1.tpcTofNSigmaPi(),
426-
prong1.tpcTofNSigmaKa(),
427-
prong2.tpcNSigmaPi(),
428-
prong2.tpcNSigmaKa(),
429-
prong2.tofNSigmaPi(),
430-
prong2.tofNSigmaKa(),
431-
prong2.tpcTofNSigmaPi(),
432-
prong2.tpcTofNSigmaKa(),
415+
candidate.nSigTpcPi0(),
416+
candidate.nSigTpcKa0(),
417+
candidate.nSigTofPi0(),
418+
candidate.nSigTofKa0(),
419+
candidate.tpcTofNSigmaPi0(),
420+
candidate.tpcTofNSigmaKa0(),
421+
candidate.nSigTpcPi1(),
422+
candidate.nSigTpcKa1(),
423+
candidate.nSigTofPi1(),
424+
candidate.nSigTofKa1(),
425+
candidate.tpcTofNSigmaPi1(),
426+
candidate.tpcTofNSigmaKa1(),
427+
candidate.nSigTpcPi2(),
428+
candidate.nSigTpcKa2(),
429+
candidate.nSigTofPi2(),
430+
candidate.nSigTofKa2(),
431+
candidate.tpcTofNSigmaPi2(),
432+
candidate.tpcTofNSigmaKa2(),
433433
massHypo == 0 ? candidate.isSelDsToKKPi() : -1,
434434
massHypo == 1 ? candidate.isSelDsToPiKK() : -1,
435435
candidate.xSecondaryVertex(),

0 commit comments

Comments
 (0)