Skip to content

Commit 4262144

Browse files
authored
[PWGHF] Update correlatorHfeHadrons.cxx and electronSelectionWithTpcEmcal.cxx: group BCsWithTimestamps in MC rec and add invariant mass column (#13241)
1 parent af5ec8d commit 4262144

File tree

3 files changed

+59
-24
lines changed

3 files changed

+59
-24
lines changed

PWGHF/HFC/TableProducer/correlatorHfeHadrons.cxx

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ struct HfCorrelatorHfeHadrons {
6666
Configurable<bool> isRun3{"isRun3", true, "Data is from Run3 or Run2"};
6767

6868
Configurable<int> numberEventsMixed{"numberEventsMixed", 5, "number of events mixed in ME process"};
69+
Configurable<float> invMassEEMax{"invMassEEMax", 0.14f, "max Invariant Mass for Photonic electron"};
6970
// Associated Hadron selection
7071
Configurable<float> ptTrackMin{"ptTrackMin", 0.1f, "Transverse momentum range for associated hadron tracks"};
7172
Configurable<float> etaTrackMax{"etaTrackMax", 0.8f, "Eta range for associated hadron tracks"};
@@ -106,6 +107,7 @@ struct HfCorrelatorHfeHadrons {
106107
ConfigurableAxis binsPt{"binsPt", {50, 0.0, 50}, "#it{p_{T}}(GeV/#it{c})"};
107108
ConfigurableAxis binsPoolBin{"binsPoolBin", {9, 0., 9.}, "PoolBin"};
108109
ConfigurableAxis binsNSigma{"binsNSigma", {30, -15., 15.}, "#it{#sigma_{TPC}}"};
110+
ConfigurableAxis binsMass{"binsMass", {100, 0.0, 2.0}, "Mass (GeV/#it{c}^{2}); entries"};
109111

110112
HistogramRegistry registry{
111113
"registry",
@@ -117,11 +119,17 @@ struct HfCorrelatorHfeHadrons {
117119
AxisSpec axisDeltaEta = {binsDeltaEta, "#Delta #eta = #eta_{Electron}- #eta_{Hadron}"};
118120
AxisSpec axisDeltaPhi = {binsDeltaPhi, "#Delta #varphi = #varphi_{Electron}- #varphi_{Hadron}"};
119121
AxisSpec axisPt = {binsPt, "#it{p_{T}}(GeV/#it{c})"};
122+
AxisSpec axisMass = {binsMass, "Mass (GeV/#it{c}^{2}); entries"};
123+
120124
AxisSpec const axisPoolBin = {binsPoolBin, "PoolBin"};
121125
AxisSpec axisNSigma = {binsNSigma, "it{#sigma_{TPC}}"};
122126

123127
registry.add("hZvertex", "z vertex", {HistType::kTH1D, {axisPosZ}});
124128
registry.add("hNevents", "No of events", {HistType::kTH1D, {{3, 1, 4}}});
129+
registry.add("hLikeMass", "Like mass", {HistType::kTH1D, {{axisMass}}});
130+
registry.add("hUnLikeMass", "unLike mass", {HistType::kTH1D, {{axisMass}}});
131+
registry.add("hLikeSignPt", "Like sign Momentum ", {HistType::kTH1D, {{axisPt}}});
132+
registry.add("hUnLikeSignPt", "UnLike sign Momentum", {HistType::kTH1D, {{axisPt}}});
125133
registry.add("hInclusiveEHCorrel", "Sparse for Delta phi and Delta eta Inclusive Electron with Hadron;p_{T}^{e} (GeV#it{/c});p_{T}^{h} (GeV#it{/c});#Delta#varphi;#Delta#eta;", {HistType::kTHnSparseF, {{axisPt}, {axisPt}, {axisDeltaPhi}, {axisDeltaEta}}});
126134
registry.add("hLSEHCorrel", "Sparse for Delta phi and Delta eta Like sign Electron pair with Hadron;p_{T}^{e} (GeV#it{/c});p_{T}^{h} (GeV#it{/c});#Delta#varphi;#Delta#eta;", {HistType::kTHnSparseF, {{axisPt}, {axisPt}, {axisDeltaPhi}, {axisDeltaEta}}});
127135
registry.add("hULSEHCorrel", "Sparse for Delta phi and Delta eta UnLike sign Electron pair with Hadron;p_{T}^{e} (GeV#it{/c});p_{T}^{h} (GeV#it{/c});#Delta#varphi;#Delta#eta;", {HistType::kTHnSparseF, {{axisPt}, {axisPt}, {axisDeltaPhi}, {axisDeltaEta}}});
@@ -168,13 +176,13 @@ struct HfCorrelatorHfeHadrons {
168176

169177
// Electron-hadron Correlation
170178
template <typename TracksType, typename ElectronType, typename CollisionType, typename BcType>
171-
void fillCorrelation(CollisionType const& collision, ElectronType const& electron, TracksType const& tracks, BcType const&)
179+
void fillCorrelation(CollisionType const& collision, ElectronType const& electrons, TracksType const& tracks, BcType const&)
172180
{
173181
if (!(isRun3 ? collision.sel8() : (collision.sel7() && collision.alias_bit(kINT7)))) {
174182
return;
175183
}
176184
int poolBin = corrBinning.getBin(std::make_tuple(collision.posZ(), collision.multFT0M()));
177-
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
185+
auto bc = collision.template bc_as<BcType>();
178186
int gCollisionId = collision.globalIndex();
179187
int64_t timeStamp = bc.timestamp();
180188

@@ -205,7 +213,7 @@ struct HfCorrelatorHfeHadrons {
205213
double phiElectron = -999;
206214
double etaElectron = -999;
207215

208-
for (const auto& eTrack : electron) {
216+
for (const auto& eTrack : electrons) {
209217
ptElectron = eTrack.ptTrack();
210218
phiElectron = eTrack.phiTrack();
211219
etaElectron = eTrack.etaTrack();
@@ -237,18 +245,32 @@ struct HfCorrelatorHfeHadrons {
237245
registry.fill(HIST("hptElectron"), ptElectron);
238246
int nElectronLS = 0;
239247
int nElectronUS = 0;
248+
float massLike = 0;
249+
float massUnLike = 0;
240250
if (eTrack.nElPairLS() > 0) {
241251
for (int i = 0; i < eTrack.nElPairLS(); ++i) {
252+
massLike = eTrack.invariantMassEE();
242253

243-
++nElectronLS;
244254
registry.fill(HIST("hLSElectronBin"), poolBin);
255+
registry.fill(HIST("hLikeMass"), massLike);
256+
257+
if (massLike <= invMassEEMax) {
258+
++nElectronLS;
259+
registry.fill(HIST("hLikeSignPt"), eTrack.ptTrack());
260+
}
245261
}
246262
}
247263
if (eTrack.nElPairUS() > 0) {
248264
for (int i = 0; i < eTrack.nElPairUS(); ++i) {
265+
massUnLike = eTrack.invariantMassEE();
249266

250-
++nElectronUS;
251267
registry.fill(HIST("hULSElectronBin"), poolBin);
268+
registry.fill(HIST("hUnLikeMass"), massUnLike);
269+
270+
if (massUnLike <= invMassEEMax) {
271+
++nElectronUS;
272+
registry.fill(HIST("hLikeSignPt"), eTrack.ptTrack());
273+
}
252274
}
253275
}
254276

@@ -281,16 +303,18 @@ struct HfCorrelatorHfeHadrons {
281303
int nElHadUSCorr = 0;
282304
if (eTrack.nElPairLS() > 0) {
283305
for (int i = 0; i < eTrack.nElPairLS(); ++i) {
284-
285-
++nElHadLSCorr;
286-
registry.fill(HIST("hLSEHCorrel"), ptElectron, ptHadron, deltaPhi, deltaEta);
306+
if (eTrack.invariantMassEE() <= invMassEEMax) {
307+
++nElHadLSCorr;
308+
registry.fill(HIST("hLSEHCorrel"), ptElectron, ptHadron, deltaPhi, deltaEta);
309+
}
287310
}
288311
}
289312
if (eTrack.nElPairUS() > 0) {
290313
for (int i = 0; i < eTrack.nElPairUS(); ++i) {
291-
292-
registry.fill(HIST("hULSEHCorrel"), ptElectron, ptHadron, deltaPhi, deltaEta);
293-
++nElHadUSCorr;
314+
if (eTrack.invariantMassEE() <= invMassEEMax) {
315+
registry.fill(HIST("hULSEHCorrel"), ptElectron, ptHadron, deltaPhi, deltaEta);
316+
++nElHadUSCorr;
317+
}
294318
}
295319
}
296320
entryElectronHadronPair(deltaPhi, deltaEta, ptElectron, ptHadron, poolBin, nElHadLSCorr, nElHadUSCorr);
@@ -363,26 +387,28 @@ struct HfCorrelatorHfeHadrons {
363387
// ======= Process starts for Data, Same event ============
364388

365389
void processData(TableCollision const& collision,
366-
aod::HfCorrSelEl const& electron,
367-
TableTracks const& tracks, aod::BCsWithTimestamps const& bc)
390+
aod::HfCorrSelEl const& electrons,
391+
TableTracks const& tracks,
392+
aod::BCsWithTimestamps const& bcs)
368393
{
369-
fillCorrelation(collision, electron, tracks, bc);
394+
fillCorrelation(collision, electrons, tracks, bcs);
370395
}
371396

372397
PROCESS_SWITCH(HfCorrelatorHfeHadrons, processData, "Process for Data", true);
373398

374399
// ======= Process starts for McRec, Same event ============
375400

376401
void processMcRec(McTableCollision const& mcCollision,
377-
aod::HfCorrSelEl const& mcElectron,
378-
McTableTracks const& mcTracks)
402+
aod::HfCorrSelEl const& mcElectrons,
403+
McTableTracks const& mcTracks,
404+
aod::BCsWithTimestamps const& bcs)
379405
{
380-
fillCorrelation(mcCollision, mcElectron, mcTracks, 0);
406+
fillCorrelation(mcCollision, mcElectrons, mcTracks, bcs);
381407
}
382408

383409
PROCESS_SWITCH(HfCorrelatorHfeHadrons, processMcRec, "Process MC Reco mode", false);
384410

385-
void processMcGen(McGenTableCollision const& mcCollision, aod::McParticles const& mcParticles, aod::HfMcGenSelEl const& electron)
411+
void processMcGen(McGenTableCollision const& mcCollision, aod::McParticles const& mcParticles, aod::HfMcGenSelEl const& electrons)
386412
{
387413

388414
BinningTypeMcGen const corrBinningMcGen{{zBins, multBinsMcGen}, true};
@@ -407,7 +433,7 @@ struct HfCorrelatorHfeHadrons {
407433
double phiElectron = 0;
408434
double etaElectron = 0;
409435

410-
for (const auto& electronMc : electron) {
436+
for (const auto& electronMc : electrons) {
411437
double ptHadron = 0;
412438
double phiHadron = 0;
413439
double etaHadron = 0;
@@ -486,6 +512,7 @@ struct HfCorrelatorHfeHadrons {
486512
}
487513
}
488514
PROCESS_SWITCH(HfCorrelatorHfeHadrons, processMcRecMixedEvent, "Process Mixed Event MC Reco mode", false);
515+
489516
void processMcGenMixedEvent(McGenTableCollisions const& mcCollision, aod::HfMcGenSelEl const& electrons, aod::McParticles const& mcParticles)
490517
{
491518

@@ -539,6 +566,7 @@ struct HfCorrelatorHfeHadrons {
539566
}
540567
PROCESS_SWITCH(HfCorrelatorHfeHadrons, processMcGenMixedEvent, "Process Mixed Event MC Gen mode", false);
541568
};
569+
542570
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
543571
{
544572
return WorkflowSpec{

PWGHF/HFL/DataModel/ElectronSelectionTable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ DECLARE_SOA_COLUMN(PhiTrack, phiTrack, float); //! azimuth of th
8585
DECLARE_SOA_COLUMN(PtTrack, ptTrack, float); //! transverse momentum of the electron track
8686
DECLARE_SOA_COLUMN(TpcNSigmaElTrack, tpcNSigmaElTrack, float); //! tpcNSigma of the electron track(TPC PID)
8787
DECLARE_SOA_COLUMN(TofNSigmaElTrack, tofNSigmaElTrack, float); //! tofNSigma of the electron track(TOF PID)
88+
DECLARE_SOA_COLUMN(InvariantMassEE, invariantMassEE, float); //! invariant mass of the non-Hfelectron
8889
DECLARE_SOA_COLUMN(NElPairLS, nElPairLS, int); //! Number of Like sign electron pair
8990
DECLARE_SOA_COLUMN(NElPairUS, nElPairUS, int); //! Number of UnLike sign electron pair
9091
DECLARE_SOA_COLUMN(IsEmcal, isEmcal, bool); //! electron information
@@ -98,6 +99,7 @@ DECLARE_SOA_TABLE(HfCorrSelEl, "AOD", "HfCORRSELEL", //! Electron Informations
9899
hf_corr_sel_electron::PtTrack,
99100
hf_corr_sel_electron::TpcNSigmaElTrack,
100101
hf_corr_sel_electron::TofNSigmaElTrack,
102+
hf_corr_sel_electron::InvariantMassEE,
101103
hf_corr_sel_electron::NElPairLS,
102104
hf_corr_sel_electron::NElPairUS,
103105
hf_corr_sel_electron::IsEmcal);

PWGHF/HFL/TableProducer/electronSelectionWithTpcEmcal.cxx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ struct HfElectronSelectionWithTpcEmcal {
6161
Produces<aod::HfCorrSelEl> hfElectronSelection;
6262
Produces<aod::HfMcGenSelEl> hfGenElectronSel;
6363

64+
// select the emcal or dcal acceptance
6465
enum EMCalRegion {
6566
NoAcceptance = 0,
6667
EMCalAcceptance = 1,
@@ -71,6 +72,10 @@ struct HfElectronSelectionWithTpcEmcal {
7172
KFParticle kfNonHfe;
7273
Configurable<bool> fillEmcClusterInfo{"fillEmcClusterInfo", true, "Fill histograms with EMCal cluster info before and after track match"};
7374
Configurable<bool> fillTrackInfo{"fillTrackInfo", true, "Fill histograms with Track Information info before track match"};
75+
Configurable<bool> skipNoEmcClusters{"skipNoEmcClusters", false, "Skip events with no EMCal clusters"};
76+
77+
// select the emcal or dcal acceptance
78+
Configurable<int> emcalRegion{"emcalRegion", 0, "Select EMCal region for filling histograms (see EMCalRegion enum)"};
7479

7580
// Event Selection
7681
Configurable<float> zPvPosMax{"zPvPosMax", 10., "Maximum z of the primary vertex (cm)"};
@@ -138,7 +143,6 @@ struct HfElectronSelectionWithTpcEmcal {
138143
PresliceUnsorted<o2::aod::EMCALMatchedTracks> perClusterMatchedTracks = o2::aod::emcalmatchedtrack::trackId;
139144

140145
// configurable axis
141-
142146
ConfigurableAxis binsPosZ{"binsPosZ", {100, -10., 10.}, "primary vertex z coordinate"};
143147
ConfigurableAxis binsEta{"binsEta", {100, -2.0, 2.}, "#it{#eta}"};
144148
ConfigurableAxis binsPhi{"binsPhi", {32, 0.0, o2::constants::math::TwoPI}, "#it{#varphi}"};
@@ -181,6 +185,7 @@ struct HfElectronSelectionWithTpcEmcal {
181185
AxisSpec axisDeltaPhi = {binsDeltaPhi, "#Delta #varphi = #varphi_{trk}- #varphi_{cluster}"};
182186

183187
registry.add("hZvertex", "z vertex", {HistType::kTH1D, {axisPosZ}});
188+
registry.add("hNeventsAfterPassEmcal", "No of events pass the Emcal", {HistType::kTH1D, {{3, 1, 4}}});
184189
registry.add("hNevents", "No of events", {HistType::kTH1D, {{3, 1, 4}}});
185190
registry.add("hLikeMass", "Like mass", {HistType::kTH1D, {{axisMass}}});
186191
registry.add("hUnLikeMass", "unLike mass", {HistType::kTH1D, {{axisMass}}});
@@ -370,7 +375,7 @@ struct HfElectronSelectionWithTpcEmcal {
370375
}
371376
}
372377
// Pass multiplicities and other required parameters for this electron
373-
hfElectronSelection(electron.collisionId(), electron.globalIndex(), electron.eta(), electron.phi(), electron.pt(), electron.tpcNSigmaEl(), electron.tofNSigmaEl(), nElPairsLS, nElPairsUS, isEMcal);
378+
hfElectronSelection(electron.collisionId(), electron.globalIndex(), electron.eta(), electron.phi(), electron.pt(), electron.tpcNSigmaEl(), electron.tofNSigmaEl(), invMassElectron, nElPairsLS, nElPairsUS, isEMcal);
374379
}
375380
// Electron Identification
376381
template <bool IsMc, typename TracksType, typename EmcClusterType, typename MatchType, typename CollisionType, typename ParticleType>
@@ -380,14 +385,14 @@ struct HfElectronSelectionWithTpcEmcal {
380385
return;
381386
}
382387

383-
registry.fill(HIST("hNevents"), 1);
388+
registry.fill(HIST("hNevents"), emcalRegion.value);
384389

385390
// skip events with no clusters
386-
if (emcClusters.size() == 0) {
391+
if (emcClusters.size() == 0 && skipNoEmcClusters) {
387392
return;
388393
}
389394
registry.fill(HIST("hZvertex"), collision.posZ());
390-
395+
registry.fill(HIST("hNeventsAfterPassEmcal"), static_cast<int>(emcalRegion));
391396
/////////////////////////////////
392397
// EMCal cluster info before match ///
393398
///////////////////////////////

0 commit comments

Comments
 (0)