1616
1717#include " PWGHF/HFC/DataModel/CorrelationTables.h"
1818#include " PWGHF/HFL/DataModel/ElectronSelectionTable.h"
19+ #include " PWGJE/DataModel/EMCALClusters.h"
1920
2021#include " Common/CCDB/TriggerAliases.h"
2122#include " Common/Core/RecoDecay.h"
@@ -62,7 +63,7 @@ struct HfCorrelatorHfeHadrons {
6263 // Event Selection
6364 Configurable<float > zPvPosMax{" zPvPosMax" , 10 ., " Maximum z of the primary vertex (cm)" };
6465 Configurable<bool > isRun3{" isRun3" , true , " Data is from Run3 or Run2" };
65-
66+ Configurable< bool > skipNoEmcClusters{ " skipNoEmcClusters " , false , " Skip events with no EMCal clusters " };
6667 Configurable<int > numberEventsMixed{" numberEventsMixed" , 5 , " number of events mixed in ME process" };
6768 Configurable<float > invMassEEMax{" invMassEEMax" , 0 .14f , " max Invariant Mass for Photonic electron" };
6869 // Associated Hadron selection
@@ -211,12 +212,17 @@ struct HfCorrelatorHfeHadrons {
211212 }
212213
213214 // Electron-hadron Correlation
214- template <bool IsMc, typename TracksType, typename ElectronType, typename CollisionType, typename BcType, typename McParticlesType>
215- void fillCorrelation (CollisionType const & collision, ElectronType const & electrons, TracksType const & tracks, BcType const &, McParticlesType const &)
215+ template <bool IsMc, typename TracksType, typename ElectronType, typename EmcClusterType, typename CollisionType, typename BcType, typename McParticlesType>
216+ void fillCorrelation (CollisionType const & collision, ElectronType const & electrons, TracksType const & tracks, EmcClusterType const & emcClusters, BcType const &, McParticlesType const &)
216217 {
217218 if (!(isRun3 ? collision.sel8 () : (collision.sel7 () && collision.alias_bit (kINT7 )))) {
218219 return ;
219220 }
221+ // skip events with no clusters
222+ if (emcClusters.size () == 0 && skipNoEmcClusters) {
223+ return ;
224+ }
225+
220226 int poolBin = corrBinning.getBin (std::make_tuple (collision.posZ (), collision.multFT0M ()));
221227 auto bc = collision.template bc_as <BcType>();
222228 int gCollisionId = collision.globalIndex ();
@@ -240,7 +246,11 @@ struct HfCorrelatorHfeHadrons {
240246 if (!selAssoHadron (hTrack)) {
241247 continue ;
242248 }
249+ if (!skipEventTableFilling) {
250+ registry.fill (HIST (" hptHadron" ), hTrack.pt ());
243251
252+ entryHadron (hTrack.phi (), hTrack.eta (), hTrack.pt (), poolBin, gCollisionId , timeStamp);
253+ }
244254 // Mc rec hadron efficiency
245255 if constexpr (IsMc) {
246256 if (hTrack.has_mcParticle ()) {
@@ -275,7 +285,6 @@ struct HfCorrelatorHfeHadrons {
275285 double ptElectron = -999 ;
276286 double phiElectron = -999 ;
277287 double etaElectron = -999 ;
278- int cntEle = 0 ;
279288 for (const auto & eTrack : electrons) {
280289 ptElectron = eTrack.ptTrack ();
281290 phiElectron = eTrack.phiTrack ();
@@ -289,9 +298,7 @@ struct HfCorrelatorHfeHadrons {
289298 double etaHadron = -999 ;
290299 double phiHadron = -999 ;
291300 // EMCal electron
292- if (eTrack.isEmcal () && requireEmcal) {
293- acceptElectron = true ;
294- } else if (!eTrack.isEmcal () && !requireEmcal) {
301+ if (eTrack.isEmcal () == requireEmcal) {
295302 acceptElectron = true ;
296303 }
297304
@@ -375,15 +382,9 @@ struct HfCorrelatorHfeHadrons {
375382 }
376383
377384 entryElectronHadronPair (deltaPhi, deltaEta, ptElectron, ptHadron, eTrack.eopEl (), eTrack.m02El (), eTrack.tpcNSigmaElTrack (), eTrack.tofNSigmaElTrack (), eTrack.tpcNClsCrRowsTrack (), eTrack.tpcCrRowsRatioTrack (), eTrack.itsChi2NClTrack (), eTrack.tpcChi2NClTrack (), eTrack.dcaXYTrack (), eTrack.dcaZTrack (), hTrack.tpcNClsCrossedRows (), hTrack.tpcCrossedRowsOverFindableCls (), hTrack.itsChi2NCl (), hTrack.tpcChi2NCl (), hTrack.dcaXY (), hTrack.dcaZ (), poolBin, nElHadLSCorr, nElHadUSCorr);
378- if (!skipEventTableFilling) {
379- if (cntEle == 0 ) {
380- registry.fill (HIST (" hptHadron" ), hTrack.pt ());
381385
382- entryHadron (hTrack.phi (), hTrack.eta (), hTrack.pt (), poolBin, gCollisionId , timeStamp);
383- }
384- }
385386 } // end Hadron Track loop
386- cntEle++;
387+
387388 } // end Electron loop
388389 }
389390
@@ -451,10 +452,10 @@ struct HfCorrelatorHfeHadrons {
451452
452453 void processData (TableCollision const & collision,
453454 aod::HfCorrSelEl const & electrons,
454- TableTracks const & tracks,
455+ TableTracks const & tracks, aod::EMCALClusters const & emcClusters,
455456 aod::BCsWithTimestamps const & bcs)
456457 {
457- fillCorrelation<false >(collision, electrons, tracks, bcs, 0 );
458+ fillCorrelation<false >(collision, electrons, tracks, emcClusters, bcs, 0 );
458459 }
459460
460461 PROCESS_SWITCH (HfCorrelatorHfeHadrons, processData, " Process for Data" , false );
@@ -463,10 +464,10 @@ struct HfCorrelatorHfeHadrons {
463464
464465 void processMcRec (McTableCollision const & mcCollision,
465466 aod::HfCorrSelEl const & mcElectrons,
466- McTableTracks const & mcTracks,
467+ McTableTracks const & mcTracks, aod::EMCALClusters const & emcClusters,
467468 aod::BCsWithTimestamps const & bcs, aod::McParticles const & mcParticle)
468469 {
469- fillCorrelation<true >(mcCollision, mcElectrons, mcTracks, bcs, mcParticle);
470+ fillCorrelation<true >(mcCollision, mcElectrons, mcTracks, emcClusters, bcs, mcParticle);
470471 }
471472
472473 PROCESS_SWITCH (HfCorrelatorHfeHadrons, processMcRec, " Process MC Reco mode" , true );
0 commit comments