Skip to content

Commit 6dd5396

Browse files
scattarualibuild
andauthored
[PWGHF] Added multiplicity in efficiency correction (#12939)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 88ae9c2 commit 6dd5396

File tree

4 files changed

+319
-122
lines changed

4 files changed

+319
-122
lines changed

PWGHF/HFC/DataModel/CorrelationTables.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,15 @@ namespace hf_correlation_ds_hadron
232232
{
233233
DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); //! DeltaPhi between Ds and Hadrons
234234
DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! DeltaEta between Ds and Hadrons
235-
DECLARE_SOA_COLUMN(PtD, ptD, float); //! Transverse momentum of Ds
236-
DECLARE_SOA_COLUMN(PtHadron, ptHadron, float); //! Transverse momentum of Hadron
235+
DECLARE_SOA_COLUMN(SignedPtD, signedPtD, float); //! Transverse momentum of Ds
236+
DECLARE_SOA_COLUMN(SignedPtHadron, signedPtHadron, float); //! Transverse momentum of Hadron
237237
DECLARE_SOA_COLUMN(MD, mD, float); //! Invariant mass of Ds
238238
DECLARE_SOA_COLUMN(MlScoreBkg, mlScoreBkg, float); //! ML background score for Ds selection
239239
DECLARE_SOA_COLUMN(MlScorePrompt, mlScorePrompt, float); //! ML prompt score for Ds selection
240240
DECLARE_SOA_COLUMN(TrackDcaXY, trackDcaXY, float); //! DCA xy of the track
241241
DECLARE_SOA_COLUMN(TrackDcaZ, trackDcaZ, float); //! DCA z of the track
242242
DECLARE_SOA_COLUMN(PoolBin, poolBin, int); //! Pool Bin for the MixedEvent
243+
DECLARE_SOA_COLUMN(NumPvContrib, numPvContrib, uint16_t); //! number PV contributors
243244
DECLARE_SOA_COLUMN(TrackTPCNClsCrossedRows, trackTPCNClsCrossedRows, int); //! Number of crossed TPC Rows
244245
DECLARE_SOA_COLUMN(TrackOrigin, trackOrigin, int); //! Number of crossed TPC Rows
245246
DECLARE_SOA_COLUMN(IsSignal, isSignal, bool); //! Used in MC-Rec, Ds Signal
@@ -251,9 +252,10 @@ DECLARE_SOA_COLUMN(IsPhysicalPrimary, isPhysicalPrimary, bool); //! U
251252
DECLARE_SOA_TABLE(DsHadronPair, "AOD", "DSHPAIR", //! Ds-Hadrons pairs Information
252253
aod::hf_correlation_ds_hadron::DeltaPhi,
253254
aod::hf_correlation_ds_hadron::DeltaEta,
254-
aod::hf_correlation_ds_hadron::PtD,
255-
aod::hf_correlation_ds_hadron::PtHadron,
256-
aod::hf_correlation_ds_hadron::PoolBin);
255+
aod::hf_correlation_ds_hadron::SignedPtD,
256+
aod::hf_correlation_ds_hadron::SignedPtHadron,
257+
aod::hf_correlation_ds_hadron::PoolBin,
258+
aod::hf_correlation_ds_hadron::NumPvContrib);
257259

258260
DECLARE_SOA_TABLE(DsHadronRecoInfo, "AOD", "DSHRECOINFO", //! Ds-Hadrons pairs Reconstructed Information
259261
aod::hf_correlation_ds_hadron::MD,
@@ -271,9 +273,10 @@ DECLARE_SOA_TABLE(DsHadronMlInfo, "AOD", "DSHMLINFO", //! Ds-Hadrons pairs Machi
271273

272274
DECLARE_SOA_TABLE(DsCandRecoInfo, "AOD", "DSCANDRECOINFO", //! Ds candidates Reconstructed Information
273275
aod::hf_correlation_ds_hadron::MD,
274-
aod::hf_correlation_ds_hadron::PtD,
276+
aod::hf_correlation_ds_hadron::SignedPtD,
275277
aod::hf_correlation_ds_hadron::MlScorePrompt,
276-
aod::hf_correlation_ds_hadron::MlScoreBkg);
278+
aod::hf_correlation_ds_hadron::MlScoreBkg,
279+
aod::hf_correlation_ds_hadron::NumPvContrib);
277280

278281
DECLARE_SOA_TABLE(DsCandGenInfo, "AOD", "DSCANDGENOINFO", //! Ds candidates Generated Information
279282
aod::hf_correlation_ds_hadron::IsPrompt);

PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,11 @@ struct HfCorrelatorDsHadrons {
216216
using SelCollisionsWithDs = soa::Filtered<soa::Join<aod::Collisions, aod::Mults, aod::EvSels, aod::DmesonSelection>>; // collisionFilter applied
217217
// using SelCollisionsWithDsWithMc = soa::Filtered<soa::Join<aod::Collisions, aod::Mults, aod::EvSels, aod::DmesonSelection, aod::McCollisionLabels>>; // collisionFilter applied
218218
using SelCollisionsMc = soa::Join<aod::McCollisions, aod::MultsExtraMC>;
219-
using CandDsData = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfMlDsToKKPi>>; // flagDsFilter applied
220-
using CandDsMcReco = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfMlDsToKKPi, aod::HfCand3ProngMcRec>>; // flagDsFilter applied
221-
using CandDsMcGen = soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>; // flagDsFilter applied
222-
using MyTracksData = soa::Filtered<soa::Join<aod::TracksWDca, aod::TrackSelection, aod::TracksExtra>>; // trackFilter applied
223-
using TracksWithMc = soa::Filtered<soa::Join<aod::TracksWDca, aod::TrackSelection, aod::TracksExtra, o2::aod::McTrackLabels>>; // trackFilter applied
219+
using CandDsData = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfMlDsToKKPi>>; // flagDsFilter applied
220+
using CandDsMcReco = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfMlDsToKKPi, aod::HfCand3ProngMcRec>>; // flagDsFilter applied
221+
using CandDsMcGen = soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>; // flagDsFilter applied
222+
using MyTracksData = soa::Filtered<soa::Join<aod::TracksWDca, aod::TrackSelection, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>>; // trackFilter applied
223+
using TracksWithMc = soa::Filtered<soa::Join<aod::TracksWDca, aod::TrackSelection, aod::TracksExtra, o2::aod::McTrackLabels, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>>; // trackFilter applied
224224

225225
Filter collisionFilter = aod::hf_selection_dmeson_collision::dmesonSel == true;
226226
Filter flagDsFilter = ((o2::aod::hf_track_index::hfflag & static_cast<uint8_t>(1 << aod::hf_cand_3prong::DecayType::DsToKKPi)) != static_cast<uint8_t>(0)) && (aod::hf_sel_candidate_ds::isSelDsToKKPi >= selectionFlagDs || aod::hf_sel_candidate_ds::isSelDsToPiKK >= selectionFlagDs);
@@ -430,13 +430,13 @@ struct HfCorrelatorDsHadrons {
430430
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
431431
outputMl[iclass] = candidate.mlProbDsToKKPi()[classMl->at(iclass)];
432432
}
433-
entryDsCandRecoInfo(hfHelper.invMassDsToKKPi(candidate), candidate.pt(), outputMl[0], outputMl[2]);
433+
entryDsCandRecoInfo(hfHelper.invMassDsToKKPi(candidate), candidate.pt(), outputMl[0], outputMl[2], collision.numContrib());
434434
} else if (candidate.isSelDsToPiKK() >= selectionFlagDs) {
435435
fillHistoPiKK(candidate, efficiencyWeightD);
436436
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
437437
outputMl[iclass] = candidate.mlProbDsToPiKK()[classMl->at(iclass)];
438438
}
439-
entryDsCandRecoInfo(hfHelper.invMassDsToPiKK(candidate), candidate.pt(), outputMl[0], outputMl[2]);
439+
entryDsCandRecoInfo(hfHelper.invMassDsToPiKK(candidate), candidate.pt(), outputMl[0], outputMl[2], collision.numContrib());
440440
}
441441
if (candidate.isSelDsToKKPi() >= selectionFlagDs && candidate.isSelDsToPiKK() >= selectionFlagDs) {
442442
registry.fill(HIST("hCountSelectionStatusDsToKKPiAndToPiKK"), 0.);
@@ -459,7 +459,8 @@ struct HfCorrelatorDsHadrons {
459459
track.eta() - candidate.eta(),
460460
candidate.pt(),
461461
track.pt(),
462-
poolBin);
462+
poolBin,
463+
collision.numContrib());
463464
entryDsHadronRecoInfo(hfHelper.invMassDsToKKPi(candidate), false, false);
464465
// entryDsHadronGenInfo(false, false, 0);
465466
entryDsHadronMlInfo(outputMl[0], outputMl[2]);
@@ -469,7 +470,8 @@ struct HfCorrelatorDsHadrons {
469470
track.eta() - candidate.eta(),
470471
candidate.pt(),
471472
track.pt(),
472-
poolBin);
473+
poolBin,
474+
collision.numContrib());
473475
entryDsHadronRecoInfo(hfHelper.invMassDsToPiKK(candidate), false, false);
474476
// entryDsHadronGenInfo(false, false, 0);
475477
entryDsHadronMlInfo(outputMl[0], outputMl[2]);
@@ -530,7 +532,7 @@ struct HfCorrelatorDsHadrons {
530532
registry.fill(HIST("hMassDsMcRecSig"), hfHelper.invMassDsToKKPi(candidate), candidate.pt(), efficiencyWeightD);
531533
registry.fill(HIST("hMassDsVsPtMcRec"), hfHelper.invMassDsToKKPi(candidate), candidate.pt(), efficiencyWeightD);
532534
registry.fill(HIST("hSelectionStatusDsToKKPiMcRec"), candidate.isSelDsToKKPi());
533-
entryDsCandRecoInfo(hfHelper.invMassDsToKKPi(candidate), candidate.pt(), outputMl[0], outputMl[2]);
535+
entryDsCandRecoInfo(hfHelper.invMassDsToKKPi(candidate), candidate.pt(), outputMl[0], outputMl[2], collision.numContrib());
534536
entryDsCandGenInfo(isDsPrompt);
535537
} else if (candidate.isSelDsToPiKK() >= selectionFlagDs) {
536538
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
@@ -540,7 +542,7 @@ struct HfCorrelatorDsHadrons {
540542
registry.fill(HIST("hMassDsMcRecSig"), hfHelper.invMassDsToPiKK(candidate), candidate.pt(), efficiencyWeightD);
541543
registry.fill(HIST("hMassDsVsPtMcRec"), hfHelper.invMassDsToPiKK(candidate), candidate.pt(), efficiencyWeightD);
542544
registry.fill(HIST("hSelectionStatusDsToPiKKMcRec"), candidate.isSelDsToPiKK());
543-
entryDsCandRecoInfo(hfHelper.invMassDsToPiKK(candidate), candidate.pt(), outputMl[0], outputMl[2]);
545+
entryDsCandRecoInfo(hfHelper.invMassDsToPiKK(candidate), candidate.pt(), outputMl[0], outputMl[2], collision.numContrib());
544546
entryDsCandGenInfo(isDsPrompt);
545547
}
546548
} else {
@@ -582,7 +584,8 @@ struct HfCorrelatorDsHadrons {
582584
track.eta() - candidate.eta(),
583585
candidate.pt(),
584586
track.pt(),
585-
poolBin);
587+
poolBin,
588+
collision.numContrib());
586589
entryDsHadronRecoInfo(hfHelper.invMassDsToKKPi(candidate), isDsSignal, isDecayChan);
587590
entryDsHadronMlInfo(outputMl[0], outputMl[2]);
588591
if (track.has_mcParticle()) {
@@ -607,7 +610,8 @@ struct HfCorrelatorDsHadrons {
607610
track.eta() - candidate.eta(),
608611
candidate.pt(),
609612
track.pt(),
610-
poolBin);
613+
poolBin,
614+
collision.numContrib());
611615
entryDsHadronRecoInfo(hfHelper.invMassDsToPiKK(candidate), isDsSignal, isDecayChan);
612616
entryDsHadronMlInfo(outputMl[0], outputMl[2]);
613617
if (track.has_mcParticle()) {
@@ -743,7 +747,8 @@ struct HfCorrelatorDsHadrons {
743747
particleAssoc.eta() - particle.eta(),
744748
particle.pt(),
745749
particleAssoc.pt(),
746-
poolBin);
750+
poolBin,
751+
0);
747752
entryDsHadronRecoInfo(MassDS, true, isDecayChan);
748753
entryDsHadronGenInfo(isDsPrompt, particleAssoc.isPhysicalPrimary(), trackOrigin);
749754
}
@@ -847,7 +852,8 @@ struct HfCorrelatorDsHadrons {
847852
pAssoc.eta() - cand.eta(),
848853
cand.pt(),
849854
pAssoc.pt(),
850-
poolBin);
855+
poolBin,
856+
c1.numContrib());
851857
entryDsHadronRecoInfo(hfHelper.invMassDsToKKPi(cand), false, false);
852858
// entryDsHadronGenInfo(false, false, 0);
853859
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
@@ -861,7 +867,8 @@ struct HfCorrelatorDsHadrons {
861867
pAssoc.eta() - cand.eta(),
862868
cand.pt(),
863869
pAssoc.pt(),
864-
poolBin);
870+
poolBin,
871+
c1.numContrib());
865872
entryDsHadronRecoInfo(hfHelper.invMassDsToPiKK(cand), false, false);
866873
// entryDsHadronGenInfo(false, false, 0);
867874
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
@@ -937,7 +944,8 @@ struct HfCorrelatorDsHadrons {
937944
pAssoc.eta() - candidate.eta(),
938945
candidate.pt(),
939946
pAssoc.pt(),
940-
poolBin);
947+
poolBin,
948+
c1.numContrib());
941949
entryDsHadronRecoInfo(hfHelper.invMassDsToKKPi(candidate), isDsSignal, isDecayChan);
942950
entryDsHadronGenInfo(isDsPrompt, isPhysicalPrimary, trackOrigin);
943951
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
@@ -950,7 +958,8 @@ struct HfCorrelatorDsHadrons {
950958
pAssoc.eta() - candidate.eta(),
951959
candidate.pt(),
952960
pAssoc.pt(),
953-
poolBin);
961+
poolBin,
962+
c1.numContrib());
954963
entryDsHadronRecoInfo(hfHelper.invMassDsToPiKK(candidate), isDsSignal, isDecayChan);
955964
entryDsHadronGenInfo(isDsPrompt, isPhysicalPrimary, trackOrigin);
956965
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
@@ -993,7 +1002,8 @@ struct HfCorrelatorDsHadrons {
9931002
particleAssoc.eta() - candidate.eta(),
9941003
candidate.pt(),
9951004
particleAssoc.pt(),
996-
poolBin);
1005+
poolBin,
1006+
0);
9971007
entryDsHadronRecoInfo(MassDS, true, true);
9981008
entryDsHadronGenInfo(isDsPrompt, particleAssoc.isPhysicalPrimary(), trackOrigin);
9991009
}

PWGHF/HFC/TableProducer/correlatorDsHadronsReduced.cxx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ struct HfCorrelatorDsHadronsReduced {
126126
registry.fill(HIST("hDsPoolBin"), poolBin);
127127
registry.fill(HIST("hPhiVsPtCand"), RecoDecay::constrainAngle(candidate.phiCand(), -PIHalf), candidate.ptCand());
128128
registry.fill(HIST("hEtaVsPtCand"), candidate.etaCand(), candidate.ptCand());
129-
entryDsCandRecoInfo(candidate.invMassDs(), candidate.ptCand(), candidate.bdtScorePrompt(), candidate.bdtScoreBkg());
129+
entryDsCandRecoInfo(candidate.invMassDs(), candidate.ptCand(), candidate.bdtScorePrompt(), candidate.bdtScoreBkg(), collision.numPvContrib());
130130
for (const auto& track : tracksThisColl) {
131131
// Removing Ds daughters by checking track indices
132132
if ((candidate.prong0Id() == track.originTrackId()) || (candidate.prong1Id() == track.originTrackId()) || (candidate.prong2Id() == track.originTrackId())) {
@@ -140,7 +140,8 @@ struct HfCorrelatorDsHadronsReduced {
140140
track.etaAssocTrack() - candidate.etaCand(),
141141
candidate.ptCand(),
142142
track.ptAssocTrack(),
143-
poolBin);
143+
poolBin,
144+
collision.numPvContrib());
144145
entryDsHadronRecoInfo(candidate.invMassDs(), false, false);
145146
entryDsHadronMlInfo(candidate.bdtScorePrompt(), candidate.bdtScoreBkg());
146147
entryTrackRecoInfo(track.dcaXY(), track.dcaZ(), track.nTpcCrossedRows());
@@ -202,7 +203,8 @@ struct HfCorrelatorDsHadronsReduced {
202203
pAssoc.etaAssocTrack() - cand.etaCand(),
203204
cand.ptCand(),
204205
pAssoc.ptAssocTrack(),
205-
poolBin);
206+
poolBin,
207+
c1.numPvContrib());
206208
entryDsHadronRecoInfo(cand.invMassDs(), false, false);
207209
// entryDsHadronGenInfo(false, false, 0);
208210
}

0 commit comments

Comments
 (0)