Skip to content

Commit fa680c7

Browse files
authored
[PWGEM/Dilepton] reduce memory consumption in createResolutionMap.cxx (#11505)
1 parent 926b979 commit fa680c7

File tree

1 file changed

+53
-31
lines changed

1 file changed

+53
-31
lines changed

PWGEM/Dilepton/Tasks/createResolutionMap.cxx

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ struct CreateResolutionMap {
7373
// Configurable<bool> cfg_reject_fake_match_its_tpc_tof{"cfg_reject_fake_match_its_tpc_tof", false, "flag to reject fake match between ITS-TPC-TOF"};
7474
Configurable<bool> cfg_reject_fake_match_mft_mch{"cfg_reject_fake_match_mft_mch", false, "flag to reject fake match between MFT-MCH"};
7575

76-
ConfigurableAxis ConfPtGenBins{"ConfPtGenBins", {VARIABLE_WIDTH, 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90, 5.00, 5.50, 6.00, 6.50, 7.00, 7.50, 8.00, 8.50, 9.00, 9.50, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00}, "gen. pT bins for output histograms"};
76+
ConfigurableAxis ConfPtGenBins{"ConfPtGenBins", {VARIABLE_WIDTH, 0.00, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90, 5.00, 5.50, 6.00, 6.50, 7.00, 7.50, 8.00, 8.50, 9.00, 9.50, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00}, "gen. pT bins for output histograms"};
7777
ConfigurableAxis ConfCentBins{"ConfCentBins", {VARIABLE_WIDTH, 0, 10, 30, 50, 110}, "centrality (%) bins for output histograms"};
7878

7979
ConfigurableAxis ConfEtaCBGenBins{"ConfEtaCBGenBins", {30, -1.5, +1.5}, "gen. eta bins at midrapidity for output histograms"};
8080
ConfigurableAxis ConfEtaFWDGenBins{"ConfEtaFWDGenBins", {40, -5.5, -1.5}, "gen. eta bins at forward rapidity for output histograms"};
8181
ConfigurableAxis ConfPhiGenBins{"ConfPhiGenBins", {72, 0, 2.f * M_PI}, "gen. eta bins at forward rapidity for output histograms"};
8282

8383
ConfigurableAxis ConfRelDeltaPtBins{"ConfRelDeltaPtBins", {200, -1.f, +1.f}, "rel. dpt for output histograms"};
84-
ConfigurableAxis ConfDeltaEtaBins{"ConfDeltaEtaBins", {200, -0.5f, +0.5f}, "deta bins for output histograms"};
85-
ConfigurableAxis ConfDeltaPhiBins{"ConfDeltaPhiBins", {200, -0.5f, +0.5f}, "dphi bins for output histograms"};
84+
ConfigurableAxis ConfDeltaEtaBins{"ConfDeltaEtaBins", {200, -0.2f, +0.2f}, "deta bins for output histograms"};
85+
ConfigurableAxis ConfDeltaPhiBins{"ConfDeltaPhiBins", {200, -0.2f, +0.2f}, "dphi bins for output histograms"};
8686

8787
Configurable<bool> cfgFillTHnSparse{"cfgFillTHnSparse", true, "fill THnSparse for output"};
8888
Configurable<bool> cfgFillTH2{"cfgFillTH2", false, "fill TH2 for output"};
@@ -212,9 +212,11 @@ struct CreateResolutionMap {
212212
const AxisSpec axis_dphi{ConfDeltaPhiBins, "#varphi_{l}^{gen} - #varphi_{l}^{rec} (rad.)"};
213213
const AxisSpec axis_charge_gen{3, -1.5, +1.5, "true sign"};
214214

215-
registry.add("Event/Electron/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
216-
registry.add("Event/Muon/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
217-
215+
// registry.add("Event/Electron/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
216+
// registry.add("Event/Electron/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
217+
if (doprocessGen) {
218+
registry.add("Event/hGenID", "generator ID;generator ID;Number of mc collisions", kTH1F, {{7, -1.5, 5.5}}, true);
219+
}
218220
if (cfgFillTH2) {
219221
registry.add("Electron/hPt", "rec. p_{T,l};p_{T,l} (GeV/c)", kTH1F, {{1000, 0, 10}}, false);
220222
registry.add("Electron/hEtaPhi", "rec. #eta vs. #varphi;#varphi_{l} (rad.);#eta_{l}", kTH2F, {{90, 0, 2 * M_PI}, {100, -5, +5}}, false);
@@ -685,7 +687,7 @@ struct CreateResolutionMap {
685687
using MyCollisions = Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
686688
using MyCollision = MyCollisions::iterator;
687689

688-
using MyTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TracksCov, aod::McTrackLabels>;
690+
using MyTracks = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::McTrackLabels>;
689691
using MyTrack = MyTracks::iterator;
690692

691693
using MyFwdTracks = soa::Join<aod::FwdTracks, aod::FwdTracksCov, aod::McFwdTrackLabels>;
@@ -765,19 +767,22 @@ struct CreateResolutionMap {
765767
continue;
766768
}
767769

768-
auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
769-
if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId() != cfgEventGeneratorType) {
770-
continue;
771-
}
772-
773770
float centrality = std::array{collision.centFT0M(), collision.centFT0A(), collision.centFT0C()}[cfgCentEstimator];
774-
registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
771+
// auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
772+
// registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
775773

776774
auto tracks_per_coll = tracks.sliceBy(perCollision_mid, collision.globalIndex());
777775
for (const auto& track : tracks_per_coll) {
778776
if (!track.has_mcParticle()) {
779777
continue;
780778
}
779+
780+
auto mctrack = track.template mcParticle_as<aod::McParticles>();
781+
auto mccollision_from_mctrack = mctrack.template mcCollision_as<aod::McCollisions>();
782+
if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId() != cfgEventGeneratorType) {
783+
continue;
784+
}
785+
781786
fillElectron(collision, track, centrality);
782787
} // end of track loop
783788
} // end of collision loop
@@ -799,20 +804,21 @@ struct CreateResolutionMap {
799804
continue;
800805
}
801806

802-
auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
803-
if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId() != cfgEventGeneratorType) {
804-
continue;
805-
}
806-
807807
float centrality = std::array{collision.centFT0M(), collision.centFT0A(), collision.centFT0C()}[cfgCentEstimator];
808-
registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
808+
// auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
809+
// registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
809810

810811
auto trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
811812
for (const auto& trackId : trackIdsThisCollision) {
812813
auto track = trackId.template track_as<MyTracks>();
813814
if (!track.has_mcParticle()) {
814815
continue;
815816
}
817+
auto mctrack = track.template mcParticle_as<aod::McParticles>();
818+
auto mccollision_from_mctrack = mctrack.template mcCollision_as<aod::McCollisions>();
819+
if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId() != cfgEventGeneratorType) {
820+
continue;
821+
}
816822
fillElectron(collision, track, centrality);
817823
} // end of track loop
818824
} // end of collision loop
@@ -836,13 +842,9 @@ struct CreateResolutionMap {
836842
continue;
837843
}
838844

839-
auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
840-
if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId() != cfgEventGeneratorType) {
841-
continue;
842-
}
843-
844845
float centrality = std::array{collision.centFT0M(), collision.centFT0A(), collision.centFT0C()}[cfgCentEstimator];
845-
registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
846+
// auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
847+
// registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
846848

847849
auto sa_muons_per_coll = sa_muons->sliceByCached(o2::aod::fwdtrack::collisionId, collision.globalIndex(), cache);
848850
auto global_muons_per_coll = global_muons->sliceByCached(o2::aod::fwdtrack::collisionId, collision.globalIndex(), cache);
@@ -851,13 +853,24 @@ struct CreateResolutionMap {
851853
if (!muon.has_mcParticle()) {
852854
continue;
853855
}
856+
857+
auto mctrack = muon.template mcParticle_as<aod::McParticles>();
858+
auto mccollision_from_mctrack = mctrack.template mcCollision_as<aod::McCollisions>();
859+
if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId() != cfgEventGeneratorType) {
860+
continue;
861+
}
854862
fillMuon(collision, muon, centrality);
855863
} // end of standalone muon loop
856864

857865
for (const auto& muon : global_muons_per_coll) {
858866
if (!muon.has_mcParticle()) {
859867
continue;
860868
}
869+
auto mctrack = muon.template mcParticle_as<aod::McParticles>();
870+
auto mccollision_from_mctrack = mctrack.template mcCollision_as<aod::McCollisions>();
871+
if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId() != cfgEventGeneratorType) {
872+
continue;
873+
}
861874
fillMuon(collision, muon, centrality);
862875
} // end of global muon loop
863876

@@ -880,25 +893,34 @@ struct CreateResolutionMap {
880893
continue;
881894
}
882895

883-
auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
884-
if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId() != cfgEventGeneratorType) {
885-
continue;
886-
}
887-
888896
float centrality = std::array{collision.centFT0M(), collision.centFT0A(), collision.centFT0C()}[cfgCentEstimator];
889-
registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
897+
// auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
898+
// registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
890899

891900
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
892901
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
893902
auto muon = fwdtrackId.template fwdtrack_as<MyFwdTracks>();
894903
if (!muon.has_mcParticle()) {
895904
continue;
896905
}
906+
auto mctrack = muon.template mcParticle_as<aod::McParticles>();
907+
auto mccollision_from_mctrack = mctrack.template mcCollision_as<aod::McCollisions>();
908+
if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId() != cfgEventGeneratorType) {
909+
continue;
910+
}
897911
fillMuon(collision, muon, centrality);
898912
} // end of fwdtrack loop
899913
} // end of collision loop
900914
}
901915
PROCESS_SWITCH(CreateResolutionMap, processMuonTTCA, "create resolution map for muon at forward rapidity", false);
916+
917+
void processGen(aod::McCollisions const& mcCollisions)
918+
{
919+
for (const auto& mccollision : mcCollisions) {
920+
registry.fill(HIST("Event/hGenID"), mccollision.getSubGeneratorId());
921+
}
922+
}
923+
PROCESS_SWITCH(CreateResolutionMap, processGen, "process generated info", true);
902924
};
903925
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
904926
{

0 commit comments

Comments
 (0)