Skip to content

Commit 71cc8fc

Browse files
[PWGHF] Avoid filling trigger particle info table for each SE pair (#13141)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 06f892b commit 71cc8fc

File tree

3 files changed

+74
-45
lines changed

3 files changed

+74
-45
lines changed

PWGHF/HFC/DataModel/DerivedDataCorrelationTables.h

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,21 +141,42 @@ DECLARE_SOA_TABLE(HfcRedTrigBases, "AOD", "HFCREDTRIGBASE", //! Table with trigg
141141
soa::Index<>,
142142
aod::hf_correl_charm_had_reduced::HfcRedCorrCollId,
143143
aod::hf_correl_charm_had_reduced::PhiTrig,
144-
aod::hf_correl_charm_had_reduced::EtaTrig,
145-
aod::hf_correl_charm_had_reduced::PtTrig);
144+
aod::hf_correl_charm_had_reduced::EtaTrig);
146145

147146
DECLARE_SOA_TABLE(HfcRedTrigCharms, "AOD", "HFCREDTRIGCHARM", //! Table with Same Event Charm-Hadron pairs information
147+
aod::hf_correl_charm_had_reduced::PtTrig,
148148
aod::hf_correl_charm_had_reduced::InvMassTrig,
149149
aod::hf_correl_charm_had_reduced::BdtScore0Trig,
150150
aod::hf_correl_charm_had_reduced::BdtScore1Trig);
151151

152152
DECLARE_SOA_TABLE(HfcRedTrigTracks, "AOD", "HFCREDTRIGTRACK", //! Table with Same Event Charm-Hadron pairs information
153+
aod::hf_correl_charm_had_reduced::PtTrig,
153154
aod::hf_correl_charm_had_reduced::NTpcCrossedRowsTrig,
154155
aod::hf_correl_charm_had_reduced::ItsClsMapTrig,
155156
aod::hf_correl_charm_had_reduced::ItsNClsTrig,
156157
aod::hf_correl_charm_had_reduced::DcaXYTrig,
157158
aod::hf_correl_charm_had_reduced::DcaZTrig);
158159

160+
namespace hf_correl_charm_had_reduced
161+
{
162+
DECLARE_SOA_INDEX_COLUMN(HfcRedTrigCharm, hfcRedTrigCharm); //! Same Event pair index
163+
DECLARE_SOA_INDEX_COLUMN(HfcRedTrigTrack, hfcRedTrigTrack); //! Same Event pair index
164+
} // namespace hf_correl_charm_had_reduced
165+
166+
DECLARE_SOA_TABLE(HfcRedSEChBases, "AOD", "HFCREDSECHBASE", //! Table with Same Event Trig-Assoc pairs
167+
aod::hf_correl_charm_had_reduced::HfcRedCorrCollId,
168+
aod::hf_correl_charm_had_reduced::HfcRedTrigCharmId,
169+
aod::hf_correl_charm_had_reduced::PtAssoc,
170+
aod::hf_correl_charm_had_reduced::DeltaEta,
171+
aod::hf_correl_charm_had_reduced::DeltaPhi);
172+
173+
DECLARE_SOA_TABLE(HfcRedSEHadBases, "AOD", "HFCREDSEHADBASE", //! Table with Same Event Trig-Assoc pairs
174+
aod::hf_correl_charm_had_reduced::HfcRedCorrCollId,
175+
aod::hf_correl_charm_had_reduced::HfcRedTrigTrackId,
176+
aod::hf_correl_charm_had_reduced::PtAssoc,
177+
aod::hf_correl_charm_had_reduced::DeltaEta,
178+
aod::hf_correl_charm_had_reduced::DeltaPhi);
179+
159180
DECLARE_SOA_TABLE(HfcRedAssBases, "AOD", "HFCREDASSBASE", //! Table with associated candidate base info
160181
soa::Index<>,
161182
aod::hf_correl_charm_had_reduced::HfcRedCorrCollId,
@@ -170,13 +191,6 @@ DECLARE_SOA_TABLE(HfcRedAssTracks, "AOD", "HFCREDASSTRACK", //! Table with Same
170191
aod::hf_correl_charm_had_reduced::DcaXYAssoc,
171192
aod::hf_correl_charm_had_reduced::DcaZAssoc);
172193

173-
DECLARE_SOA_TABLE(HfcRedSEBases, "AOD", "HFCREDSEBASE", //! Table with Same Event Trig-Assoc pairs
174-
aod::hf_correl_charm_had_reduced::HfcRedCorrCollId,
175-
aod::hf_correl_charm_had_reduced::PtTrig,
176-
aod::hf_correl_charm_had_reduced::PtAssoc,
177-
aod::hf_correl_charm_had_reduced::DeltaEta,
178-
aod::hf_correl_charm_had_reduced::DeltaPhi);
179-
180194
DECLARE_SOA_TABLE(HfcRedSEChHads, "AOD", "HFCREDSECHHAD", //! Correlation pairs information Same Event
181195
aod::hf_correl_charm_had_reduced::PoolBin,
182196
aod::hf_correl_charm_had_reduced::PtTrig,

PWGHF/HFC/TableProducer/correlatorFlowCharmHadronsReduced.cxx

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ struct HfCorrelatorFlowCharmHadronsReduced {
116116

117117
int poolBins{0};
118118

119-
using SameEvtPairsChHad = soa::Filtered<soa::Join<aod::HfcRedSEBases, aod::HfcRedTrigCharms, aod::HfcRedAssTracks>>;
120-
using SameEvtPairsHadHad = soa::Filtered<soa::Join<aod::HfcRedSEBases, aod::HfcRedTrigTracks, aod::HfcRedAssTracks>>;
119+
using SameEvtPairsChHad = soa::Filtered<soa::Join<aod::HfcRedSEChBases, aod::HfcRedAssTracks>>;
120+
using SameEvtPairsHadHad = soa::Filtered<soa::Join<aod::HfcRedSEHadBases, aod::HfcRedAssTracks>>;
121121
using AssocTracks = soa::Filtered<soa::Join<aod::HfcRedAssBases, aod::HfcRedAssTracks>>;
122122
using TrigCharmCands = soa::Join<aod::HfcRedTrigBases, aod::HfcRedTrigCharms>;
123123

@@ -261,14 +261,15 @@ struct HfCorrelatorFlowCharmHadronsReduced {
261261
/// \param trigCands are the selected trigger candidates
262262
/// \param assocTracks are the selected associated tracks
263263
/// \param binPolicy is the binning policy for the correlation
264-
template <bool fillSparses, bool fillTables, typename TPair, typename TBinningType>
264+
template <bool fillSparses, bool fillTables, typename TPair, typename TTrigCand, typename TBinningType>
265265
void fillSameEvent(TPair const& pair,
266+
TTrigCand const& trigCand,
266267
TBinningType binPolicy)
267268
{
268269
auto collision = pair.template hfcRedCorrColl_as<o2::aod::HfcRedCorrColls>();
269-
double ptTrig = pair.ptTrig();
270-
if constexpr (requires { pair.bdtScore0Trig(); }) { // ML selection on bkg score for Charm-Had case
271-
if (!isSelBdtBkgScoreCut(pair, ptTrig)) {
270+
double ptTrig = trigCand.ptTrig();
271+
if constexpr (requires { trigCand.bdtScore0Trig(); }) { // ML selection on bkg score for Charm-Had case
272+
if (!isSelBdtBkgScoreCut(trigCand, ptTrig)) {
272273
return;
273274
}
274275
}
@@ -282,21 +283,21 @@ struct HfCorrelatorFlowCharmHadronsReduced {
282283
registry.fill(HIST("hPoolBinTrigSE"), poolBin);
283284
registry.fill(HIST("hPoolBinAssocSE"), poolBin);
284285
if constexpr (fillTables) {
285-
if constexpr (requires { pair.bdtScore0Trig(); }) { // Separate Charm-Had and Had-Had cases
286+
if constexpr (requires { trigCand.bdtScore0Trig(); }) { // Separate Charm-Had and Had-Had cases
286287
rowPairSECharmHads(poolBin, ptTrig, pair.ptAssoc(), pair.deltaEta(), pair.deltaPhi(),
287-
pair.invMassTrig(), pair.bdtScore0Trig(), pair.bdtScore1Trig(),
288+
trigCand.invMassTrig(), trigCand.bdtScore0Trig(), trigCand.bdtScore1Trig(),
288289
pair.nTpcCrossedRowsAssoc(), pair.itsClsMapAssoc(), pair.itsNClsAssoc(), pair.dcaXYAssoc(), pair.dcaZAssoc());
289290
} else {
290291
rowPairSEHadHads(poolBin, ptTrig, pair.ptAssoc(), pair.deltaEta(), pair.deltaPhi(),
291-
pair.nTpcCrossedRowsTrig(), pair.itsClsMapTrig(), pair.itsNClsTrig(), pair.dcaXYTrig(), pair.dcaZTrig(),
292+
trigCand.nTpcCrossedRowsTrig(), trigCand.itsClsMapTrig(), trigCand.itsNClsTrig(), trigCand.dcaXYTrig(), trigCand.dcaZTrig(),
292293
pair.nTpcCrossedRowsAssoc(), pair.itsClsMapAssoc(), pair.itsNClsAssoc(), pair.dcaXYAssoc(), pair.dcaZAssoc());
293294
}
294295
rowCollInfos(collision.multiplicity(), collision.numPvContrib(), collision.centrality());
295296
}
296297
if constexpr (fillSparses) {
297-
if constexpr (requires { pair.bdtScore0Trig(); }) { // Separate Charm-Had and Had-Had cases
298+
if constexpr (requires { trigCand.bdtScore0Trig(); }) { // Separate Charm-Had and Had-Had cases
298299
registry.fill(HIST("hSparseCorrelationsSECharmHad"), poolBin, ptTrig, pair.ptAssoc(), pair.deltaEta(),
299-
pair.deltaPhi(), pair.invMassTrig(), pair.bdtScore0Trig(), pair.bdtScore1Trig());
300+
pair.deltaPhi(), trigCand.invMassTrig(), trigCand.bdtScore0Trig(), trigCand.bdtScore1Trig());
300301
} else {
301302
registry.fill(HIST("hSparseCorrelationsSEHadHad"), poolBin, ptTrig, pair.ptAssoc(), pair.deltaEta(), pair.deltaPhi());
302303
}
@@ -370,53 +371,61 @@ struct HfCorrelatorFlowCharmHadronsReduced {
370371
}
371372

372373
void processSameEventCharmHadWMultMix(SameEvtPairsChHad::iterator const& pair,
374+
aod::HfcRedTrigCharms const&,
373375
aod::HfcRedCorrColls const&)
374376
{
377+
auto trigCand = pair.template hfcRedTrigCharm_as<aod::HfcRedTrigCharms>();
375378
if (fillSparses && fillTables) {
376-
fillSameEvent<true, true>(pair, binPolicyPosZMult);
379+
fillSameEvent<true, true>(pair, trigCand, binPolicyPosZMult);
377380
} else if (fillSparses) {
378-
fillSameEvent<true, false>(pair, binPolicyPosZMult);
381+
fillSameEvent<true, false>(pair, trigCand, binPolicyPosZMult);
379382
} else if (fillTables) {
380-
fillSameEvent<false, true>(pair, binPolicyPosZMult);
383+
fillSameEvent<false, true>(pair, trigCand, binPolicyPosZMult);
381384
}
382385
}
383386
PROCESS_SWITCH(HfCorrelatorFlowCharmHadronsReduced, processSameEventCharmHadWMultMix, "Process Same Event for Charm-Had with multiplicity pools", true);
384387

385388
void processSameEventHadHadWMultMix(SameEvtPairsHadHad::iterator const& pair,
389+
aod::HfcRedTrigTracks const&,
386390
aod::HfcRedCorrColls const&)
387391
{
392+
auto trigCand = pair.template hfcRedTrigTrack_as<aod::HfcRedTrigTracks>();
388393
if (fillSparses && fillTables) {
389-
fillSameEvent<true, true>(pair, binPolicyPosZMult);
394+
fillSameEvent<true, true>(pair, trigCand, binPolicyPosZMult);
390395
} else if (fillSparses) {
391-
fillSameEvent<true, false>(pair, binPolicyPosZMult);
396+
fillSameEvent<true, false>(pair, trigCand, binPolicyPosZMult);
392397
} else if (fillTables) {
393-
fillSameEvent<false, true>(pair, binPolicyPosZMult);
398+
fillSameEvent<false, true>(pair, trigCand, binPolicyPosZMult);
394399
}
395400
}
396401
PROCESS_SWITCH(HfCorrelatorFlowCharmHadronsReduced, processSameEventHadHadWMultMix, "Process Same Event for Had-Had with multiplicity pools", false);
397402

398403
void processSameEventCharmHadWCentMix(SameEvtPairsChHad::iterator const& pair,
404+
aod::HfcRedTrigCharms const&,
399405
aod::HfcRedCorrColls const&)
400406
{
407+
auto trigCand = pair.template hfcRedTrigCharm_as<aod::HfcRedTrigCharms>();
401408
if (fillSparses && fillTables) {
402-
fillSameEvent<true, true>(pair, binPolicyPosZCent);
409+
fillSameEvent<true, true>(pair, trigCand, binPolicyPosZCent);
403410
} else if (fillSparses) {
404-
fillSameEvent<true, false>(pair, binPolicyPosZCent);
411+
fillSameEvent<true, false>(pair, trigCand, binPolicyPosZCent);
405412
} else if (fillTables) {
406-
fillSameEvent<false, true>(pair, binPolicyPosZCent);
413+
fillSameEvent<false, true>(pair, trigCand, binPolicyPosZCent);
407414
}
408415
}
409416
PROCESS_SWITCH(HfCorrelatorFlowCharmHadronsReduced, processSameEventCharmHadWCentMix, "Process Same Event for Charm-Had with centrality pools", true);
410417

411418
void processSameEventHadHadWCentMix(SameEvtPairsHadHad::iterator const& pair,
419+
aod::HfcRedTrigTracks const&,
412420
aod::HfcRedCorrColls const&)
413421
{
422+
auto trigCand = pair.template hfcRedTrigTrack_as<aod::HfcRedTrigTracks>();
414423
if (fillSparses && fillTables) {
415-
fillSameEvent<true, true>(pair, binPolicyPosZCent);
424+
fillSameEvent<true, true>(pair, trigCand, binPolicyPosZCent);
416425
} else if (fillSparses) {
417-
fillSameEvent<true, false>(pair, binPolicyPosZCent);
426+
fillSameEvent<true, false>(pair, trigCand, binPolicyPosZCent);
418427
} else if (fillTables) {
419-
fillSameEvent<false, true>(pair, binPolicyPosZCent);
428+
fillSameEvent<false, true>(pair, trigCand, binPolicyPosZCent);
420429
}
421430
}
422431
PROCESS_SWITCH(HfCorrelatorFlowCharmHadronsReduced, processSameEventHadHadWCentMix, "Process Same Event for Had-Had with centrality pools", false);

PWGHF/HFC/TableProducer/derivedDataCreatorCorrelationsReduced.cxx

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,14 @@ enum CandType {
6262

6363
/// Code to select collisions with at least one Ds meson
6464
struct HfDerivedDataCreatorCorrelationsReduced {
65-
Produces<aod::HfcRedCorrColls> rowCollisions; // Table with reduced collision info
66-
Produces<aod::HfcRedSEBases> rowSEPairs; // Table with same-event pairs info
67-
Produces<aod::HfcRedAssBases> rowAssocBases; // Table with associated candidate base info
68-
Produces<aod::HfcRedAssTracks> rowAssocTrkSels; // Table with associated track selection info
69-
Produces<aod::HfcRedTrigBases> rowTrigBases; // Table with base trigger candidate info
70-
Produces<aod::HfcRedTrigCharms> rowTrigCharms; // Table with charm trigger candidate selection info
71-
Produces<aod::HfcRedTrigTracks> rowTrigHads; // Table with hadron trigger candidate selection info
65+
Produces<aod::HfcRedCorrColls> rowCollisions; // Table with reduced collision info
66+
Produces<aod::HfcRedSEChBases> rowSECharmHadPairs; // Table with same-event pairs info
67+
Produces<aod::HfcRedSEHadBases> rowSEHadHadPairs; // Table with same-event pairs info
68+
Produces<aod::HfcRedAssBases> rowAssocBases; // Table with associated candidate base info
69+
Produces<aod::HfcRedAssTracks> rowAssocTrkSels; // Table with associated track selection info
70+
Produces<aod::HfcRedTrigBases> rowTrigBases; // Table with base trigger candidate info
71+
Produces<aod::HfcRedTrigCharms> rowTrigCharms; // Table with charm trigger candidate selection info
72+
Produces<aod::HfcRedTrigTracks> rowTrigHads; // Table with hadron trigger candidate selection info
7273

7374
Configurable<int> centEstimator{"centEstimator", 2, "Centrality estimation (FT0A: 1, FT0C: 2, FT0M: 3, FV0A: 4)"};
7475
Configurable<int> selectionFlag{"selectionFlag", 15, "Selection Flag for hadron (ML score tables are required to run the task)"};
@@ -320,6 +321,13 @@ struct HfDerivedDataCreatorCorrelationsReduced {
320321
double trigCandPt = trigCand.pt();
321322
registry.fill(HIST("hPhiVsPtTrig"), RecoDecay::constrainAngle(trigCand.phi(), -o2::constants::math::PIHalf), trigCandPt);
322323
registry.fill(HIST("hEtaVsPtTrig"), trigCand.eta(), trigCandPt);
324+
if constexpr (candType == CandType::Hadron) {
325+
rowTrigHads(trigCandPt, trigCand.tpcNClsCrossedRows(), trigCand.itsClusterMap(), trigCand.itsNCls(), trigCand.dcaXY(), trigCand.dcaZ());
326+
} else {
327+
std::array<float, 2> outputMl = getCandMlScores<candType>(trigCand);
328+
rowTrigCharms(trigCandPt, getCandMass<candType>(trigCand), outputMl[0], outputMl[1]);
329+
}
330+
323331
for (const auto& assTrk : assTrks) {
324332
double assTrkPt = assTrk.pt();
325333
if (usePtDiffDcaXYCut) {
@@ -347,13 +355,11 @@ struct HfDerivedDataCreatorCorrelationsReduced {
347355
registry.fill(HIST("hDcaZVsPtAssoc"), assTrk.dcaZ(), assTrkPt);
348356

349357
double deltaPhi = RecoDecay::constrainAngle(assTrk.phi() - trigCand.phi(), -o2::constants::math::PIHalf);
350-
rowSEPairs(rowCollisions.lastIndex(), trigCandPt, assTrkPt, deltaEta, deltaPhi);
351358
rowAssocTrkSels(assTrk.tpcNClsCrossedRows(), assTrk.itsClusterMap(), assTrk.itsNCls(), assTrk.dcaXY(), assTrk.dcaZ());
352359
if constexpr (candType == CandType::Hadron) {
353-
rowTrigHads(trigCand.tpcNClsCrossedRows(), trigCand.itsClusterMap(), trigCand.itsNCls(), trigCand.dcaXY(), trigCand.dcaZ());
360+
rowSEHadHadPairs(rowCollisions.lastIndex(), rowTrigHads.lastIndex(), assTrkPt, deltaEta, deltaPhi);
354361
} else {
355-
std::array<float, 2> outputMl = getCandMlScores<candType>(trigCand);
356-
rowTrigCharms(getCandMass<candType>(trigCand), outputMl[0], outputMl[1]);
362+
rowSECharmHadPairs(rowCollisions.lastIndex(), rowTrigCharms.lastIndex(), assTrkPt, deltaEta, deltaPhi);
357363
}
358364
}
359365
}
@@ -369,8 +375,8 @@ struct HfDerivedDataCreatorCorrelationsReduced {
369375
registry.fill(HIST("hEtaVsPtTrig"), trigCand.eta(), trigCand.pt());
370376

371377
std::array<float, 2> outputMl = getCandMlScores<candType>(trigCand);
372-
rowTrigBases(rowCollisions.lastIndex(), trigCand.phi(), trigCand.eta(), trigCand.pt());
373-
rowTrigCharms(getCandMass<candType>(trigCand), outputMl[0], outputMl[1]);
378+
rowTrigBases(rowCollisions.lastIndex(), trigCand.phi(), trigCand.eta());
379+
rowTrigCharms(trigCand.pt(), getCandMass<candType>(trigCand), outputMl[0], outputMl[1]);
374380
}
375381
}
376382

0 commit comments

Comments
 (0)