Skip to content

Commit bd0d7df

Browse files
author
Mattia Faggin
committed
Propagate changes to code related to D*+ analyses.
BEWARE: PID info stored only for D0-daughters tracks, while soft-pion track is not considered. Modifications done on core code - DataModel/CandidateReconstructionTables.h - TableProducer/candidateCreatorDstar.cxx - TableProducer/candidateSelectorDstarToD0Pi.cxx Analysis tasks + following code where modifications are needed: - [ MODIFIED ] TableProducer/treeCreatorDstarToD0Pi.cxx Analysis tasks + following code where modifications are not needed (no explicit call of Lc-daughter PID): - [not modified] HFC/DataModel/CorrelationTables.h (*) - [not modified] HFC/TableProducer/correlatorDstarHadrons.cxx (*) - [not modified] D2H/Tasks/taskCharmPolarisation.cxx - [not modified] D2H/Tasks/taskDstarToD0Pi.cxx - [not modified] D2H/Tasks/taskDirectedFlowCharmHadrons.cxx - [not modified] D2H/TableProducer/dataCreatorCharmResoReduced.cxx (*) (*) any PID post-calibration for the associated/bachelor tracks needs to be added, if PID is used
1 parent de9d5c4 commit bd0d7df

File tree

4 files changed

+51
-37
lines changed

4 files changed

+51
-37
lines changed

PWGHF/DataModel/CandidateReconstructionTables.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2376,6 +2376,7 @@ DECLARE_SOA_EXTENDED_TABLE_USER(HfD0FromDstarExt, HfD0FromDstarBase, "HFD0FRMDST
23762376
hf_cand_dstar::PxD0, hf_cand_dstar::PyD0, hf_cand_dstar::PzD0);
23772377

23782378
using HfD0FromDstar = HfD0FromDstarExt;
2379+
using HfD0FromDstarWPid = soa::Join<HfD0FromDstar, HfProng0PidPi, HfProng0PidKa, HfProng1PidPi, HfProng1PidKa>;
23792380

23802381
DECLARE_SOA_TABLE(HfCandDstarBase, "AOD", "HFCANDDSTRBASE",
23812382
o2::soa::Index<>,

PWGHF/TableProducer/candidateCreatorDstar.cxx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
3636
#include "PWGHF/Utils/utilsBfieldCCDB.h"
3737
#include "PWGHF/Utils/utilsEvSelHf.h"
38+
#include "PWGHF/Utils/utilsPid.h"
3839
#include "PWGHF/Utils/utilsTrkCandHf.h"
3940

4041
using namespace o2;
@@ -43,6 +44,7 @@ using namespace o2::hf_trkcandsel;
4344
using namespace o2::hf_centrality;
4445
using namespace o2::constants::physics;
4546
using namespace o2::framework;
47+
using namespace o2::aod::pid_tpc_tof_utils;
4648

4749
namespace o2::aod
4850
{
@@ -53,6 +55,10 @@ using HfDstarsWithPvRefitInfo = soa::Join<aod::HfDstars, aod::HfPvRefitDstar>;
5355
struct HfCandidateCreatorDstar {
5456
Produces<aod::HfD0FromDstarBase> rowCandD0Base;
5557
Produces<aod::HfCandDstarBase> rowCandDstarBase;
58+
Produces<aod::HfProng0PidPi> rowProng0PidPi;
59+
Produces<aod::HfProng0PidKa> rowProng0PidKa;
60+
Produces<aod::HfProng1PidPi> rowProng1PidPi;
61+
Produces<aod::HfProng1PidKa> rowProng1PidKa;
5662

5763
Configurable<bool> fillHistograms{"fillHistograms", true, "fill histograms"};
5864

@@ -82,6 +88,8 @@ struct HfCandidateCreatorDstar {
8288
static constexpr float CmToMicrometers = 10000.; // from cm to µm
8389
double massPi, massK, massD0;
8490

91+
using TracksWCovExtraPidPiKa = soa::Join<aod::TracksWCovExtra, aod::TracksPidPi, aod::PidTpcTofFullPi, aod::TracksPidKa, aod::PidTpcTofFullKa>;
92+
8593
AxisSpec ptAxis = {100, 0., 2.0, "#it{p}_{T} (GeV/#it{c}"};
8694
AxisSpec dcaAxis = {200, -500., 500., "#it{d}_{xy,z} (#mum)"};
8795

@@ -195,8 +203,8 @@ struct HfCandidateCreatorDstar {
195203

196204
auto trackPi = rowTrackIndexDstar.template prong0_as<aod::TracksWCov>();
197205
auto prongD0 = rowTrackIndexDstar.template prongD0_as<aod::Hf2Prongs>();
198-
auto trackD0Prong0 = prongD0.template prong0_as<aod::TracksWCov>();
199-
auto trackD0Prong1 = prongD0.template prong1_as<aod::TracksWCov>();
206+
auto trackD0Prong0 = prongD0.template prong0_as<TracksWCovExtraPidPiKa>();
207+
auto trackD0Prong1 = prongD0.template prong1_as<TracksWCovExtraPidPiKa>();
200208

201209
// Extracts primary vertex position and covariance matrix from a collision
202210
auto primaryVertex = getPrimaryVertex(collision);
@@ -346,6 +354,11 @@ struct HfCandidateCreatorDstar {
346354
std::sqrt(impactParameter0.getSigmaZ2()), std::sqrt(impactParameter1.getSigmaZ2()),
347355
prongD0.prong0Id(), prongD0.prong1Id(),
348356
prongD0.hfflag());
357+
// fill candidate D0 prong PID rows
358+
fillProngPid<HfProngSpecies::Pion>(trackD0Prong0, rowProng0PidPi);
359+
fillProngPid<HfProngSpecies::Kaon>(trackD0Prong0, rowProng0PidKa);
360+
fillProngPid<HfProngSpecies::Pion>(trackD0Prong1, rowProng1PidPi);
361+
fillProngPid<HfProngSpecies::Kaon>(trackD0Prong1, rowProng1PidKa);
349362

350363
if (fillHistograms) {
351364
registry.fill(HIST("QA/hPtD0"), ptD0);

PWGHF/TableProducer/candidateSelectorDstarToD0Pi.cxx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ struct HfCandidateSelectorDstarToD0Pi {
108108

109109
using TracksSel = soa::Join<aod::TracksWDcaExtra, aod::TracksPidPi, aod::PidTpcTofFullPi, aod::TracksPidKa, aod::PidTpcTofFullKa>;
110110
// using TracksSel = soa::Join<aod::Tracks, aod::TracksPidPi, aod::TracksPidKa>;
111-
using HfFullDstarCandidate = soa::Join<aod::HfD0FromDstar, aod::HfCandDstars>;
111+
using HfFullDstarCandidate = soa::Join<aod::HfD0FromDstarWPid, aod::HfCandDstars>;
112112

113113
AxisSpec axisBdtScore{100, 0.f, 1.f};
114114
AxisSpec axisSelStatus{2, -0.5f, 1.5f};
@@ -418,15 +418,15 @@ struct HfCandidateSelectorDstarToD0Pi {
418418
int pidTrackNegPion = -1;
419419

420420
if (usePidTpcAndTof) {
421-
pidTrackPosKaon = selectorKaon.statusTpcAndTof(candDstar.prong0_as<TracksSel>());
422-
pidTrackPosPion = selectorPion.statusTpcAndTof(candDstar.prong0_as<TracksSel>());
423-
pidTrackNegKaon = selectorKaon.statusTpcAndTof(candDstar.prong1_as<TracksSel>());
424-
pidTrackNegPion = selectorPion.statusTpcAndTof(candDstar.prong1_as<TracksSel>());
421+
pidTrackPosKaon = selectorKaon.statusTpcAndTof(candDstar.prong0_as<TracksSel>(), candDstar.nSigTpcKa0(), candDstar.nSigTofKa0());
422+
pidTrackPosPion = selectorPion.statusTpcAndTof(candDstar.prong0_as<TracksSel>(), candDstar.nSigTpcPi0(), candDstar.nSigTofPi0());
423+
pidTrackNegKaon = selectorKaon.statusTpcAndTof(candDstar.prong1_as<TracksSel>(), candDstar.nSigTpcKa1(), candDstar.nSigTofKa1());
424+
pidTrackNegPion = selectorPion.statusTpcAndTof(candDstar.prong1_as<TracksSel>(), candDstar.nSigTpcKa1(), candDstar.nSigTofKa1());
425425
} else {
426-
pidTrackPosKaon = selectorKaon.statusTpcOrTof(candDstar.prong0_as<TracksSel>());
427-
pidTrackPosPion = selectorPion.statusTpcOrTof(candDstar.prong0_as<TracksSel>());
428-
pidTrackNegKaon = selectorKaon.statusTpcOrTof(candDstar.prong1_as<TracksSel>());
429-
pidTrackNegPion = selectorPion.statusTpcOrTof(candDstar.prong1_as<TracksSel>());
426+
pidTrackPosKaon = selectorKaon.statusTpcOrTof(candDstar.prong0_as<TracksSel>(), candDstar.nSigTpcKa0(), candDstar.nSigTofKa0());
427+
pidTrackPosPion = selectorPion.statusTpcOrTof(candDstar.prong0_as<TracksSel>(), candDstar.nSigTpcPi0(), candDstar.nSigTofPi0());
428+
pidTrackNegKaon = selectorKaon.statusTpcOrTof(candDstar.prong1_as<TracksSel>(), candDstar.nSigTpcKa1(), candDstar.nSigTofKa1());
429+
pidTrackNegPion = selectorPion.statusTpcOrTof(candDstar.prong1_as<TracksSel>(), candDstar.nSigTpcKa1(), candDstar.nSigTofKa1());
430430
}
431431

432432
int pidDstar = -1;

PWGHF/TableProducer/treeCreatorDstarToD0Pi.cxx

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ struct HfTreeCreatorDstarToD0Pi {
255255
Configurable<float> downSampleBkgFactor{"downSampleBkgFactor", 1., "Fraction of background candidates to keep for ML trainings"};
256256
Configurable<float> ptMaxForDownSample{"ptMaxForDownSample", 10., "Maximum pt for the application of the downsampling factor"};
257257

258-
using CandDstarWSelFlag = soa::Filtered<soa::Join<aod::HfD0FromDstar, aod::HfCandDstars, aod::HfSelDstarToD0Pi>>;
259-
using CandDstarWSelFlagMcRec = soa::Filtered<soa::Join<aod::HfD0FromDstar, aod::HfCandDstars, aod::HfSelDstarToD0Pi, aod::HfCandDstarMcRec>>;
258+
using CandDstarWSelFlag = soa::Filtered<soa::Join<aod::HfD0FromDstarWPid, aod::HfCandDstars, aod::HfSelDstarToD0Pi>>;
259+
using CandDstarWSelFlagMcRec = soa::Filtered<soa::Join<aod::HfD0FromDstarWPid, aod::HfCandDstars, aod::HfSelDstarToD0Pi, aod::HfCandDstarMcRec>>;
260260
using TracksWPid = soa::Join<aod::Tracks, aod::TracksPidPi, aod::PidTpcTofFullPi, aod::TracksPidKa, aod::PidTpcTofFullKa>;
261261
using CandDstarMcGen = soa::Filtered<soa::Join<aod::McParticles, aod::HfCandDstarMcGen>>;
262262

@@ -360,18 +360,18 @@ struct HfTreeCreatorDstarToD0Pi {
360360
impParameterNormalisedProng0,
361361
impParameterNormalisedProng1,
362362
candidate.normalisedImpParamSoftPi(),
363-
prong0.tpcNSigmaPi(),
364-
prong0.tpcNSigmaKa(),
365-
prong0.tofNSigmaPi(),
366-
prong0.tofNSigmaKa(),
367-
prong0.tpcTofNSigmaPi(),
368-
prong0.tpcTofNSigmaKa(),
369-
prong1.tpcNSigmaPi(),
370-
prong1.tpcNSigmaKa(),
371-
prong1.tofNSigmaPi(),
372-
prong1.tofNSigmaKa(),
373-
prong1.tpcTofNSigmaPi(),
374-
prong1.tpcTofNSigmaKa(),
363+
candidate.nSigTpcPi0(),
364+
candidate.nSigTpcKa0(),
365+
candidate.nSigTofPi0(),
366+
candidate.nSigTofKa0(),
367+
candidate.tpcTofNSigmaPi0(),
368+
candidate.tpcTofNSigmaKa0(),
369+
candidate.nSigTpcPi1(),
370+
candidate.nSigTpcKa1(),
371+
candidate.nSigTofPi1(),
372+
candidate.nSigTofKa1(),
373+
candidate.tpcTofNSigmaPi1(),
374+
candidate.tpcTofNSigmaKa1(),
375375
prongSoftPi.tpcNSigmaPi(),
376376
prongSoftPi.tpcNSigmaKa(),
377377
prongSoftPi.tofNSigmaPi(),
@@ -429,18 +429,18 @@ struct HfTreeCreatorDstarToD0Pi {
429429
candidate.errorImpactParameter0(),
430430
candidate.errorImpactParameter1(),
431431
candidate.errorImpParamSoftPi(),
432-
prong0.tpcNSigmaPi(),
433-
prong0.tpcNSigmaKa(),
434-
prong0.tofNSigmaPi(),
435-
prong0.tofNSigmaKa(),
436-
prong0.tpcTofNSigmaPi(),
437-
prong0.tpcTofNSigmaKa(),
438-
prong1.tpcNSigmaPi(),
439-
prong1.tpcNSigmaKa(),
440-
prong1.tofNSigmaPi(),
441-
prong1.tofNSigmaKa(),
442-
prong1.tpcTofNSigmaPi(),
443-
prong1.tpcTofNSigmaKa(),
432+
candidate.nSigTpcPi0(),
433+
candidate.nSigTpcKa0(),
434+
candidate.nSigTofPi0(),
435+
candidate.nSigTofKa0(),
436+
candidate.tpcTofNSigmaPi0(),
437+
candidate.tpcTofNSigmaKa0(),
438+
candidate.nSigTpcPi1(),
439+
candidate.nSigTpcKa1(),
440+
candidate.nSigTofPi1(),
441+
candidate.nSigTofKa1(),
442+
candidate.tpcTofNSigmaPi1(),
443+
candidate.tpcTofNSigmaKa1(),
444444
prongSoftPi.tpcNSigmaPi(),
445445
prongSoftPi.tpcNSigmaKa(),
446446
prongSoftPi.tofNSigmaPi(),

0 commit comments

Comments
 (0)