diff --git a/PWGEM/Dilepton/Core/Dilepton.h b/PWGEM/Dilepton/Core/Dilepton.h index 02893baf071..4bdbeda0c97 100644 --- a/PWGEM/Dilepton/Core/Dilepton.h +++ b/PWGEM/Dilepton/Core/Dilepton.h @@ -512,6 +512,7 @@ struct Dilepton { used_trackIds_per_col.clear(); used_trackIds_per_col.shrink_to_fit(); + map_mixed_eventId_to_globalBC.clear(); delete h2sp_resolution; } diff --git a/PWGEM/Dilepton/Core/DileptonHadronMPC.h b/PWGEM/Dilepton/Core/DileptonHadronMPC.h index 3aa08563b00..04021b3f0c3 100644 --- a/PWGEM/Dilepton/Core/DileptonHadronMPC.h +++ b/PWGEM/Dilepton/Core/DileptonHadronMPC.h @@ -459,6 +459,7 @@ struct DileptonHadronMPC { used_trackIds_per_col.clear(); used_trackIds_per_col.shrink_to_fit(); + map_mixed_eventId_to_globalBC.clear(); } void addhistograms() diff --git a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h index 9dd902396b4..023fafc3a73 100644 --- a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h +++ b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h @@ -309,10 +309,10 @@ struct Pi0EtaToGammaGamma { delete emh2; emh2 = 0x0; - used_photonIds.clear(); - used_photonIds.shrink_to_fit(); - used_dileptonIds.clear(); - used_dileptonIds.shrink_to_fit(); + used_photonIds_per_col.clear(); + used_photonIds_per_col.shrink_to_fit(); + used_dileptonIds_per_col.clear(); + used_dileptonIds_per_col.shrink_to_fit(); map_mixed_eventId_to_globalBC.clear(); } @@ -534,11 +534,10 @@ struct Pi0EtaToGammaGamma { o2::framework::Partition>> positrons = o2::aod::emprimaryelectron::sign > int8_t(0) && dileptoncuts.cfg_min_pt_track < o2::aod::track::pt&& nabs(o2::aod::track::eta) < dileptoncuts.cfg_max_eta_track; o2::framework::Partition>> electrons = o2::aod::emprimaryelectron::sign < int8_t(0) && dileptoncuts.cfg_min_pt_track < o2::aod::track::pt && nabs(o2::aod::track::eta) < dileptoncuts.cfg_max_eta_track; - // using MyEMH = o2::aod::pwgem::dilepton::utils::EventMixingHandler, std::pair, o2::aod::pwgem::dilepton::utils::EMTrack>; o2::aod::pwgem::dilepton::utils::EventMixingHandler, std::pair, o2::aod::pwgem::dilepton::utils::EMTrack>* emh1 = nullptr; o2::aod::pwgem::dilepton::utils::EventMixingHandler, std::pair, o2::aod::pwgem::dilepton::utils::EMTrack>* emh2 = nullptr; - std::vector> used_photonIds; // - std::vector> used_dileptonIds; // + std::vector used_photonIds_per_col; // + std::vector> used_dileptonIds_per_col; // std::map, uint64_t> map_mixed_eventId_to_globalBC; template @@ -649,16 +648,13 @@ struct Pi0EtaToGammaGamma { RotationBackground>(v12, v1, v2, photons2_per_collision, g1.globalIndex(), g2.globalIndex(), weight); } - std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); - std::pair pair_tmp_id2 = std::make_pair(ndf, g2.globalIndex()); - - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id1) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g1.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, g1.globalIndex(), collision.globalIndex(), g1.globalIndex(), g1.pt(), g1.eta(), g1.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id1); + used_photonIds_per_col.emplace_back(g1.globalIndex()); } - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id2) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g2.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, g2.globalIndex(), collision.globalIndex(), g2.globalIndex(), g2.pt(), g2.eta(), g2.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id2); + used_photonIds_per_col.emplace_back(g2.globalIndex()); } ndiphoton++; } // end of pairing loop @@ -702,15 +698,14 @@ struct Pi0EtaToGammaGamma { fRegistry.fill(HIST("Pair/same/hs"), veeg.M(), veeg.Pt(), weight); - std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); - std::tuple tuple_tmp_id2 = std::make_tuple(ndf, collision.globalIndex(), pos2.trackId(), ele2.trackId()); - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id1) == used_photonIds.end()) { + std::pair tuple_tmp_id2 = std::make_pair(pos2.trackId(), ele2.trackId()); + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g1.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, g1.globalIndex(), collision.globalIndex(), -1, g1.pt(), g1.eta(), g1.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id1); + used_photonIds_per_col.emplace_back(g1.globalIndex()); } - if (std::find(used_dileptonIds.begin(), used_dileptonIds.end(), tuple_tmp_id2) == used_dileptonIds.end()) { + if (std::find(used_dileptonIds_per_col.begin(), used_dileptonIds_per_col.end(), tuple_tmp_id2) == used_dileptonIds_per_col.end()) { emh2->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, -1, collision.globalIndex(), -1, v_ee.Pt(), v_ee.Eta(), v_ee.Phi(), v_ee.M())); - used_dileptonIds.emplace_back(tuple_tmp_id2); + used_dileptonIds_per_col.emplace_back(tuple_tmp_id2); } ndiphoton++; } // end of dielectron loop @@ -732,21 +727,23 @@ struct Pi0EtaToGammaGamma { fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), weight); - std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); - std::pair pair_tmp_id2 = std::make_pair(ndf, g2.globalIndex()); - - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id1) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g1.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, g1.globalIndex(), collision.globalIndex(), -1, g1.pt(), g1.eta(), g1.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id1); + used_photonIds_per_col.emplace_back(g1.globalIndex()); } - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id2) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g2.globalIndex()) == used_photonIds_per_col.end()) { emh2->AddTrackToEventPool(key_df_collision, o2::aod::pwgem::dilepton::utils::EMTrack(-1, g2.globalIndex(), collision.globalIndex(), -1, g2.pt(), g2.eta(), g2.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id2); + used_photonIds_per_col.emplace_back(g2.globalIndex()); } ndiphoton++; } // end of pairing loop } // end of pairing in same event + used_photonIds_per_col.clear(); + used_photonIds_per_col.shrink_to_fit(); + used_dileptonIds_per_col.clear(); + used_dileptonIds_per_col.shrink_to_fit(); + // event mixing if (!cfgDoMix || !(ndiphoton > 0)) { continue; diff --git a/PWGEM/PhotonMeson/Core/TaggingPi0.h b/PWGEM/PhotonMeson/Core/TaggingPi0.h index 986a79b34bd..855ea2b09bd 100644 --- a/PWGEM/PhotonMeson/Core/TaggingPi0.h +++ b/PWGEM/PhotonMeson/Core/TaggingPi0.h @@ -19,40 +19,41 @@ #ifndef PWGEM_PHOTONMESON_CORE_TAGGINGPI0_H_ #define PWGEM_PHOTONMESON_CORE_TAGGINGPI0_H_ +#include "PWGEM/Dilepton/Utils/EMTrack.h" +#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h" +#include "PWGEM/Dilepton/Utils/EventMixingHandler.h" +#include "PWGEM/PhotonMeson/Core/DalitzEECut.h" +#include "PWGEM/PhotonMeson/Core/EMCPhotonCut.h" +#include "PWGEM/PhotonMeson/Core/EMPhotonEventCut.h" +#include "PWGEM/PhotonMeson/Core/PHOSPhotonCut.h" +#include "PWGEM/PhotonMeson/Core/V0PhotonCut.h" +#include "PWGEM/PhotonMeson/DataModel/gammaTables.h" +#include "PWGEM/PhotonMeson/Utils/EventHistograms.h" +#include "PWGEM/PhotonMeson/Utils/PairUtilities.h" + +#include "Common/Core/RecoDecay.h" + +#include "CCDB/BasicCCDBManager.h" +#include "DataFormatsParameters/GRPMagField.h" +#include "DataFormatsParameters/GRPObject.h" +#include "DetectorsBase/GeometryManager.h" +#include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisDataModel.h" +#include "Framework/AnalysisTask.h" +#include "Framework/runDataProcessing.h" + +#include "Math/Vector4D.h" +#include "TString.h" + +#include +#include #include #include -#include #include -#include +#include #include #include -#include -#include - -#include "TString.h" -#include "Math/Vector4D.h" -#include "Framework/runDataProcessing.h" -#include "Framework/AnalysisTask.h" -#include "Framework/AnalysisDataModel.h" -#include "Framework/ASoAHelpers.h" - -#include "DetectorsBase/GeometryManager.h" -#include "DataFormatsParameters/GRPObject.h" -#include "DataFormatsParameters/GRPMagField.h" -#include "CCDB/BasicCCDBManager.h" - -#include "Common/Core/RecoDecay.h" -#include "PWGEM/PhotonMeson/DataModel/gammaTables.h" -#include "PWGEM/PhotonMeson/Core/V0PhotonCut.h" -#include "PWGEM/PhotonMeson/Core/DalitzEECut.h" -#include "PWGEM/PhotonMeson/Core/PHOSPhotonCut.h" -#include "PWGEM/PhotonMeson/Core/EMCPhotonCut.h" -#include "PWGEM/PhotonMeson/Core/EMPhotonEventCut.h" -#include "PWGEM/PhotonMeson/Utils/PairUtilities.h" -#include "PWGEM/Dilepton/Utils/EMTrack.h" -#include "PWGEM/Dilepton/Utils/EventMixingHandler.h" -#include "PWGEM/PhotonMeson/Utils/EventHistograms.h" -#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h" +#include using namespace o2; using namespace o2::aod; @@ -306,10 +307,10 @@ struct TaggingPi0 { delete emh2; emh2 = 0x0; - used_photonIds.clear(); - used_photonIds.shrink_to_fit(); - used_dileptonIds.clear(); - used_dileptonIds.shrink_to_fit(); + used_photonIds_per_col.clear(); + used_photonIds_per_col.shrink_to_fit(); + used_dileptonIds_per_col.clear(); + used_dileptonIds_per_col.shrink_to_fit(); map_mixed_eventId_to_globalBC.clear(); } @@ -453,14 +454,14 @@ struct TaggingPi0 { using MyEMH = o2::aod::pwgem::dilepton::utils::EventMixingHandler, std::pair, EMTrack>; MyEMH* emh1 = nullptr; MyEMH* emh2 = nullptr; - std::vector> used_photonIds; // - std::vector> used_dileptonIds; // + std::vector used_photonIds_per_col; // + std::vector> used_dileptonIds_per_col; // std::map, uint64_t> map_mixed_eventId_to_globalBC; template void runPairing(TCollisions const& collisions, TPhotons1 const& photons1, TPhotons2 const& photons2, - TSubInfos1 const& /*subinfos1*/, TSubInfos2 const& /*subinfos2*/, + TSubInfos1 const&, TSubInfos2 const&, TPreslice1 const& perCollision1, TPreslice2 const& perCollision2, TCut1 const& cut1, TCut2 const& cut2) { @@ -571,15 +572,14 @@ struct TaggingPi0 { ROOT::Math::PtEtaPhiMVector veeg = v_gamma + v_pos + v_ele; fRegistry.fill(HIST("Pair/same/hMvsPt"), veeg.M(), v_gamma.Pt(), weight); - std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); - std::tuple tuple_tmp_id2 = std::make_tuple(ndf, collision.globalIndex(), pos2.trackId(), ele2.trackId()); - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id1) == used_photonIds.end()) { + std::pair tuple_tmp_id2 = std::make_pair(pos2.trackId(), ele2.trackId()); + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g1.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, EMTrack(-1, g1.globalIndex(), collision.globalIndex(), -1, g1.pt(), g1.eta(), g1.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id1); + used_photonIds_per_col.emplace_back(g1.globalIndex()); } - if (std::find(used_dileptonIds.begin(), used_dileptonIds.end(), tuple_tmp_id2) == used_dileptonIds.end()) { + if (std::find(used_dileptonIds_per_col.begin(), used_dileptonIds_per_col.end(), tuple_tmp_id2) == used_dileptonIds_per_col.end()) { emh2->AddTrackToEventPool(key_df_collision, EMTrack(-1, -1, collision.globalIndex(), -1, v_ee.Pt(), v_ee.Eta(), v_ee.Phi(), v_ee.M())); - used_dileptonIds.emplace_back(tuple_tmp_id2); + used_dileptonIds_per_col.emplace_back(tuple_tmp_id2); } ndiphoton++; } // end of dielectron loop @@ -598,21 +598,23 @@ struct TaggingPi0 { fRegistry.fill(HIST("Pair/same/hMvsPt"), v12.M(), v1.Pt(), weight); - std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); - std::pair pair_tmp_id2 = std::make_pair(ndf, g2.globalIndex()); - - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id1) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g1.globalIndex()) == used_photonIds_per_col.end()) { emh1->AddTrackToEventPool(key_df_collision, EMTrack(-1, g1.globalIndex(), collision.globalIndex(), -1, g1.pt(), g1.eta(), g1.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id1); + used_photonIds_per_col.emplace_back(g1.globalIndex()); } - if (std::find(used_photonIds.begin(), used_photonIds.end(), pair_tmp_id2) == used_photonIds.end()) { + if (std::find(used_photonIds_per_col.begin(), used_photonIds_per_col.end(), g2.globalIndex()) == used_photonIds_per_col.end()) { emh2->AddTrackToEventPool(key_df_collision, EMTrack(-1, g2.globalIndex(), collision.globalIndex(), -1, g2.pt(), g2.eta(), g2.phi(), 0)); - used_photonIds.emplace_back(pair_tmp_id2); + used_photonIds_per_col.emplace_back(g2.globalIndex()); } ndiphoton++; } // end of pairing loop } // end of pairing in same event + used_photonIds_per_col.clear(); + used_photonIds_per_col.shrink_to_fit(); + used_dileptonIds_per_col.clear(); + used_dileptonIds_per_col.shrink_to_fit(); + // event mixing if (!cfgDoMix || !(ndiphoton > 0)) { continue;