Skip to content

Commit 80c80ac

Browse files
authored
[PWGEM/Dilepton] remove unnecessary Preslice (#12073)
1 parent acd3f34 commit 80c80ac

File tree

3 files changed

+65
-31
lines changed

3 files changed

+65
-31
lines changed

PWGEM/Dilepton/DataModel/dileptonTables.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ using EMPrimaryTracks = EMPrimaryTracks_000;
725725
// iterators
726726
using EMPrimaryTrack = EMPrimaryTracks::iterator;
727727

728-
DECLARE_SOA_TABLE(EMPrimaryTrackEMEventIds, "AOD", "PRMTRACKEMEVENTID", emprimarytrack::EMEventId); // To be joined with EMPrimaryTracks table at analysis level.
728+
DECLARE_SOA_TABLE(EMPrimaryTrackEMEventIds, "AOD", "PRMTRKEMEVENTID", emprimarytrack::EMEventId); // To be joined with EMPrimaryTracks table at analysis level.
729729
// iterators
730730
using EMPrimaryTrackEMEventId = EMPrimaryTrackEMEventIds::iterator;
731731

PWGEM/Dilepton/TableProducer/filterEoI.cxx

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// Please write to: daiki.sekihata@cern.ch
1616

1717
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
18+
#include "PWGEM/PhotonMeson/DataModel/gammaTables.h"
1819

1920
#include "Framework/ASoAHelpers.h"
2021
#include "Framework/AnalysisDataModel.h"
@@ -30,32 +31,39 @@ struct filterEoI {
3031
enum SubSystem {
3132
kElectron = 0x1,
3233
kFwdMuon = 0x2,
34+
kPCM = 0x4,
3335
};
3436
Produces<o2::aod::EMEoIs> emeoi;
35-
Configurable<int> minNElectrons{"minNElectrons", 1, "min number of e+ and e- at midrapidity"};
36-
Configurable<int> minNMuons{"minNMuons", 1, "min number of mu+ and mu- at forward rapidity"};
37+
Configurable<int> minNElectrons{"minNElectrons", 1, "min number of e+ or e- at midrapidity"};
38+
Configurable<int> minNMuons{"minNMuons", 1, "min number of mu+ or mu- at forward rapidity"};
39+
Configurable<int> minNV0s{"minNV0s", 1, "min number of v0 photons at midrapidity"};
3740

3841
HistogramRegistry fRegistry{"output"};
3942
void init(o2::framework::InitContext&)
4043
{
41-
auto hEventCounter = fRegistry.add<TH1>("hEventCounter", "hEventCounter", kTH1D, {{5, 0.5f, 5.5f}});
44+
auto hEventCounter = fRegistry.add<TH1>("hEventCounter", "hEventCounter", kTH1D, {{8, 0.5f, 8.5f}});
4245
hEventCounter->GetXaxis()->SetBinLabel(1, "all");
4346
hEventCounter->GetXaxis()->SetBinLabel(2, "event with electron");
4447
hEventCounter->GetXaxis()->SetBinLabel(3, "event with forward muon");
45-
hEventCounter->GetXaxis()->SetBinLabel(4, "event with electron or forward muon");
46-
hEventCounter->GetXaxis()->SetBinLabel(5, "event with electron and forward muon");
48+
hEventCounter->GetXaxis()->SetBinLabel(4, "event with v0");
49+
hEventCounter->GetXaxis()->SetBinLabel(5, "event with electron or forward muon");
50+
hEventCounter->GetXaxis()->SetBinLabel(6, "event with electron and forward muon");
51+
hEventCounter->GetXaxis()->SetBinLabel(7, "event with electron or forward muon or v0");
52+
hEventCounter->GetXaxis()->SetBinLabel(8, "event with electron and forward muon and v0");
4753
}
4854

4955
SliceCache cache;
5056
Preslice<aod::EMPrimaryElectrons> perCollision_el = aod::emprimaryelectron::collisionId;
5157
Preslice<aod::EMPrimaryMuons> perCollision_mu = aod::emprimarymuon::collisionId;
58+
Preslice<aod::V0PhotonsKF> perCollision_v0 = aod::v0photonkf::collisionId;
5259

53-
template <uint8_t system, typename TCollisions, typename TElectrons, typename TMuons>
54-
void selectEoI(TCollisions const& collisions, TElectrons const& electrons, TMuons const& muons)
60+
template <uint8_t system, typename TCollisions, typename TElectrons, typename TMuons, typename TV0s>
61+
void selectEoI(TCollisions const& collisions, TElectrons const& electrons, TMuons const& muons, TV0s const& v0s)
5562
{
5663
for (const auto& collision : collisions) {
5764
bool does_electron_exist = false;
5865
bool does_fwdmuon_exist = false;
66+
bool does_pcm_exist = false;
5967
fRegistry.fill(HIST("hEventCounter"), 1);
6068

6169
if constexpr (static_cast<bool>(system & kElectron)) {
@@ -72,15 +80,28 @@ struct filterEoI {
7280
fRegistry.fill(HIST("hEventCounter"), 3);
7381
}
7482
}
83+
if constexpr (static_cast<bool>(system & kPCM)) {
84+
auto v0s_coll = v0s.sliceBy(perCollision_v0, collision.globalIndex());
85+
if (v0s_coll.size() >= minNV0s) {
86+
does_pcm_exist = true;
87+
fRegistry.fill(HIST("hEventCounter"), 4);
88+
}
89+
}
7590

7691
if (does_electron_exist || does_fwdmuon_exist) {
77-
fRegistry.fill(HIST("hEventCounter"), 4);
92+
fRegistry.fill(HIST("hEventCounter"), 5);
7893
}
7994
if (does_electron_exist && does_fwdmuon_exist) {
80-
fRegistry.fill(HIST("hEventCounter"), 5);
95+
fRegistry.fill(HIST("hEventCounter"), 6);
96+
}
97+
if (does_electron_exist || does_fwdmuon_exist || does_pcm_exist) {
98+
fRegistry.fill(HIST("hEventCounter"), 7);
99+
}
100+
if (does_electron_exist && does_fwdmuon_exist && does_pcm_exist) {
101+
fRegistry.fill(HIST("hEventCounter"), 8);
81102
}
82103

83-
emeoi(does_electron_exist || does_fwdmuon_exist);
104+
emeoi(does_electron_exist || does_fwdmuon_exist || does_pcm_exist);
84105

85106
} // end of collision loop
86107

@@ -89,19 +110,31 @@ struct filterEoI {
89110
void process_Electron(aod::Collisions const& collisions, aod::EMPrimaryElectrons const& electrons)
90111
{
91112
const uint8_t sysflag = kElectron;
92-
selectEoI<sysflag>(collisions, electrons, nullptr);
113+
selectEoI<sysflag>(collisions, electrons, nullptr, nullptr);
93114
}
94115

95116
void process_FwdMuon(aod::Collisions const& collisions, aod::EMPrimaryMuons const& muons)
96117
{
97118
const uint8_t sysflag = kFwdMuon;
98-
selectEoI<sysflag>(collisions, nullptr, muons);
119+
selectEoI<sysflag>(collisions, nullptr, muons, nullptr);
99120
}
100121

101122
void process_Electron_FwdMuon(aod::Collisions const& collisions, aod::EMPrimaryElectrons const& electrons, aod::EMPrimaryMuons const& muons)
102123
{
103124
const uint8_t sysflag = kElectron | kFwdMuon;
104-
selectEoI<sysflag>(collisions, electrons, muons);
125+
selectEoI<sysflag>(collisions, electrons, muons, nullptr);
126+
}
127+
128+
void process_PCM(aod::Collisions const& collisions, aod::V0PhotonsKF const& v0s)
129+
{
130+
const uint8_t sysflag = kPCM;
131+
selectEoI<sysflag>(collisions, nullptr, nullptr, v0s);
132+
}
133+
134+
void process_Electron_FwdMuon_PCM(aod::Collisions const& collisions, aod::EMPrimaryElectrons const& electrons, aod::EMPrimaryMuons const& muons, aod::V0PhotonsKF const& v0s)
135+
{
136+
const uint8_t sysflag = kElectron | kFwdMuon | kPCM;
137+
selectEoI<sysflag>(collisions, electrons, muons, v0s);
105138
}
106139

107140
void processDummy(aod::Collisions const& collisions)
@@ -113,7 +146,9 @@ struct filterEoI {
113146

114147
PROCESS_SWITCH(filterEoI, process_Electron, "create filter bit for Electron", false);
115148
PROCESS_SWITCH(filterEoI, process_FwdMuon, "create filter bit for Forward Muon", false);
149+
PROCESS_SWITCH(filterEoI, process_PCM, "create filter bit for PCM", false);
116150
PROCESS_SWITCH(filterEoI, process_Electron_FwdMuon, "create filter bit for Electron, FwdMuon", false);
151+
PROCESS_SWITCH(filterEoI, process_Electron_FwdMuon_PCM, "create filter bit for Electron, FwdMuon, PCM", false);
117152
PROCESS_SWITCH(filterEoI, processDummy, "processDummy", true);
118153
};
119154
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ struct skimmerPrimaryMuon {
203203
return true;
204204
}
205205

206-
template <typename TCollision, typename TFwdTrack, typename TFwdTracks, typename TMFTTracks>
207-
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TFwdTracks const&, TMFTTracks const&, const bool isAmbiguous)
206+
template <typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack>
207+
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, const bool isAmbiguous)
208208
{
209209
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT) {
210210
return;
@@ -381,12 +381,11 @@ struct skimmerPrimaryMuon {
381381

382382
SliceCache cache;
383383

384-
PresliceUnsorted<aod::FwdTracks> perMFTTrack = o2::aod::fwdtrack::matchMFTTrackId;
385384
Preslice<aod::FwdTracks> perCollision = o2::aod::fwdtrack::collisionId;
386385
Preslice<aod::FwdTrackAssoc> fwdtrackIndicesPerCollision = aod::track_association::collisionId;
387386
PresliceUnsorted<aod::FwdTrackAssoc> fwdtrackIndicesPerFwdTrack = aod::track_association::fwdtrackId;
388387

389-
void processRec_SA(MyCollisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&)
388+
void processRec_SA(MyCollisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const&, aod::BCsWithTimestamps const&)
390389
{
391390
for (const auto& collision : collisions) {
392391
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
@@ -401,13 +400,13 @@ struct skimmerPrimaryMuon {
401400
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
402401
continue;
403402
}
404-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, false);
403+
fillFwdTrackTable<MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, false);
405404
} // end of fwdtrack loop
406405
} // end of collision loop
407406
}
408407
PROCESS_SWITCH(skimmerPrimaryMuon, processRec_SA, "process reconstructed info", false);
409408

410-
void processRec_TTCA(MyCollisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
409+
void processRec_TTCA(MyCollisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const&, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
411410
{
412411
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
413412
for (const auto& fwdtrack : fwdtracks) {
@@ -430,14 +429,14 @@ struct skimmerPrimaryMuon {
430429
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
431430
continue;
432431
}
433-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, mapAmb[fwdtrack.globalIndex()]);
432+
fillFwdTrackTable<MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mapAmb[fwdtrack.globalIndex()]);
434433
} // end of fwdtrack loop
435434
} // end of collision loop
436435
mapAmb.clear();
437436
}
438437
PROCESS_SWITCH(skimmerPrimaryMuon, processRec_TTCA, "process reconstructed info", false);
439438

440-
void processRec_SA_SWT(MyCollisionsWithSWT const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&)
439+
void processRec_SA_SWT(MyCollisionsWithSWT const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const&, aod::BCsWithTimestamps const&)
441440
{
442441
for (const auto& collision : collisions) {
443442
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
@@ -456,13 +455,13 @@ struct skimmerPrimaryMuon {
456455
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
457456
continue;
458457
}
459-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, false);
458+
fillFwdTrackTable<MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, false);
460459
} // end of fwdtrack loop
461460
} // end of collision loop
462461
}
463462
PROCESS_SWITCH(skimmerPrimaryMuon, processRec_SA_SWT, "process reconstructed info only with standalone", false);
464463

465-
void processRec_TTCA_SWT(MyCollisionsWithSWT const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
464+
void processRec_TTCA_SWT(MyCollisionsWithSWT const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const&, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
466465
{
467466
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
468467
for (const auto& fwdtrack : fwdtracks) {
@@ -487,14 +486,14 @@ struct skimmerPrimaryMuon {
487486
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
488487
continue;
489488
}
490-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, mapAmb[fwdtrack.globalIndex()]);
489+
fillFwdTrackTable<MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mapAmb[fwdtrack.globalIndex()]);
491490
} // end of fwdtrack loop
492491
} // end of collision loop
493492
mapAmb.clear();
494493
}
495494
PROCESS_SWITCH(skimmerPrimaryMuon, processRec_TTCA_SWT, "process reconstructed info", false);
496495

497-
void processMC_SA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, MyFwdTracksMC const& fwdtracks, MFTTracksMC const& mfttracks, aod::BCsWithTimestamps const&)
496+
void processMC_SA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, MyFwdTracksMC const& fwdtracks, MFTTracksMC const&, aod::BCsWithTimestamps const&)
498497
{
499498
for (const auto& collision : collisions) {
500499
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
@@ -514,13 +513,13 @@ struct skimmerPrimaryMuon {
514513
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
515514
continue;
516515
}
517-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, false);
516+
fillFwdTrackTable<MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, false);
518517
} // end of fwdtrack loop
519518
} // end of collision loop
520519
}
521520
PROCESS_SWITCH(skimmerPrimaryMuon, processMC_SA, "process reconstructed and MC info", false);
522521

523-
void processMC_TTCA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, MyFwdTracksMC const& fwdtracks, MFTTracksMC const& mfttracks, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
522+
void processMC_TTCA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, MyFwdTracksMC const& fwdtracks, MFTTracksMC const&, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
524523
{
525524
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
526525
for (const auto& fwdtrack : fwdtracks) {
@@ -548,7 +547,7 @@ struct skimmerPrimaryMuon {
548547
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
549548
continue;
550549
}
551-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, mapAmb[fwdtrack.globalIndex()]);
550+
fillFwdTrackTable<MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mapAmb[fwdtrack.globalIndex()]);
552551
} // end of fwdtrack loop
553552
} // end of collision loop
554553
mapAmb.clear();
@@ -606,8 +605,8 @@ struct associateSameMFT {
606605
em_same_mft_ids(self_Ids);
607606
self_Ids.clear();
608607
self_Ids.shrink_to_fit();
609-
} else { // for standalone muons
610-
em_same_mft_ids(std::vector<int>{}); // empty
608+
} else {
609+
em_same_mft_ids(std::vector<int>{}); // empty for standalone muons
611610
}
612611
} // end of muon loop
613612
}

0 commit comments

Comments
 (0)