@@ -65,6 +65,9 @@ using namespace o2::aod::pwgem::dilepton::utils::pairutil;
6565using MyCollisions = soa::Join<aod::EMEvents, aod::EMEventsMult, aod::EMEventsCent, aod::EMMCEventLabels>;
6666using MyCollision = MyCollisions::iterator;
6767
68+ using MyMCCollisions = soa::Join<aod::EMMCEvents, aod::MostProbableEMEventIdsInMC>;
69+ using MyMCCollision = MyMCCollisions::iterator;
70+
6871using MyMCElectrons = soa::Join<aod::EMPrimaryElectrons, aod::EMPrimaryElectronsCov, aod::EMPrimaryElectronEMEventIds, aod::EMAmbiguousElectronSelfIds, aod::EMPrimaryElectronsPrefilterBit, aod::EMPrimaryElectronsPrefilterBitDerived, aod::EMPrimaryElectronMCLabels>;
6972using MyMCElectron = MyMCElectrons::iterator;
7073using FilteredMyMCElectrons = soa::Filtered<MyMCElectrons>;
@@ -1103,22 +1106,26 @@ struct DileptonMC {
11031106 }
11041107 fRegistry .fill (HIST (" MCEvent/before/hZvtx" ), mccollision.posZ ());
11051108
1106- auto rec_colls_per_mccoll = collisions.sliceBy (recColperMcCollision, mccollision.globalIndex ());
1107- // LOGF(info, "rec_colls_per_mccoll.size() = %d", rec_colls_per_mccoll.size());
1108- if (rec_colls_per_mccoll.size () < 1 ) {
1109- continue ;
1110- }
1109+ // auto rec_colls_per_mccoll = collisions.sliceBy(recColperMcCollision, mccollision.globalIndex());
1110+ // // LOGF(info, "rec_colls_per_mccoll.size() = %d", rec_colls_per_mccoll.size());
1111+ // if (rec_colls_per_mccoll.size() < 1) {
1112+ // continue;
1113+ // }
11111114
1112- uint32_t maxNumContrib = 0 ;
1113- int rec_col_globalIndex = -999 ;
1114- for (auto & rec_col : rec_colls_per_mccoll) {
1115- if (rec_col.numContrib () > maxNumContrib) {
1116- rec_col_globalIndex = rec_col.globalIndex ();
1117- maxNumContrib = rec_col.numContrib (); // assign mc collision to collision where the number of contibutor is lager. LF/MM recommendation
1118- }
1119- }
1115+ // uint32_t maxNumContrib = 0;
1116+ // int rec_col_globalIndex = -999;
1117+ // for (auto& rec_col : rec_colls_per_mccoll) {
1118+ // if (rec_col.numContrib() > maxNumContrib) {
1119+ // rec_col_globalIndex = rec_col.globalIndex();
1120+ // maxNumContrib = rec_col.numContrib(); // assign mc collision to collision where the number of contibutor is lager. LF/MM recommendation
1121+ // }
1122+ // }
1123+ // auto collision = collisions.rawIteratorAt(rec_col_globalIndex);
11201124
1121- auto collision = collisions.rawIteratorAt (rec_col_globalIndex);
1125+ if (mccollision.mpemeventId () < 0 ) {
1126+ continue ;
1127+ }
1128+ auto collision = collisions.rawIteratorAt (mccollision.mpemeventId ());
11221129
11231130 float centralities[3 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()};
11241131 if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) {
@@ -2101,9 +2108,9 @@ struct DileptonMC {
21012108 Partition<aod::EMMCParticles> negative_muonsMC = o2::aod::mcparticle::pdgCode == 13 ; // mu-
21022109 PresliceUnsorted<aod::EMMCParticles> perMcCollision = aod::emmcparticle::emmceventId;
21032110 PresliceUnsorted<aod::EMMCGenVectorMesons> perMcCollision_vm = aod::emmcgenvectormeson::emmceventId;
2104- PresliceUnsorted<MyCollisions> recColperMcCollision = aod::emmceventlabel::emmceventId;
2111+ // PresliceUnsorted<MyCollisions> recColperMcCollision = aod::emmceventlabel::emmceventId;
21052112
2106- void processAnalysis (FilteredMyCollisions const & collisions, aod::EMMCEvents const & mccollisions, aod::EMMCParticles const & mcparticles, TLeptons const & leptons)
2113+ void processAnalysis (FilteredMyCollisions const & collisions, MyMCCollisions const & mccollisions, aod::EMMCParticles const & mcparticles, TLeptons const & leptons)
21072114 {
21082115 // LOGF(info, "collisions.size() = %d, mccollisions.size() = %d, mcparticles.size() = %d", collisions.size(), mccollisions.size(), mcparticles.size());
21092116 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
@@ -2134,7 +2141,7 @@ struct DileptonMC {
21342141 Partition<MySmearedMuons> positive_muonsMC_smeared = o2::aod::mcparticle::pdgCode == -13 ; // mu+
21352142 Partition<MySmearedMuons> negative_muonsMC_smeared = o2::aod::mcparticle::pdgCode == 13 ; // mu-
21362143
2137- void processAnalysis_Smeared (FilteredMyCollisions const & collisions, aod::EMMCEvents const & mccollisions, TLeptons const & leptons, TSmeardMCParitlces const & mcparticles_smeared)
2144+ void processAnalysis_Smeared (FilteredMyCollisions const & collisions, MyMCCollisions const & mccollisions, TLeptons const & leptons, TSmeardMCParitlces const & mcparticles_smeared)
21382145 {
21392146 // LOGF(info, "collisions.size() = %d, mccollisions.size() = %d, mcparticles.size() = %d", collisions.size(), mccollisions.size(), mcparticles.size());
21402147 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
@@ -2160,7 +2167,7 @@ struct DileptonMC {
21602167 }
21612168 PROCESS_SWITCH (DileptonMC, processAnalysis_Smeared, " run dilepton mc analysis with smearing" , false );
21622169
2163- void processGen_VM (FilteredMyCollisions const & collisions, aod::EMMCEvents const &, aod::EMMCGenVectorMesons const & mcparticles)
2170+ void processGen_VM (FilteredMyCollisions const & collisions, MyMCCollisions const &, aod::EMMCGenVectorMesons const & mcparticles)
21642171 {
21652172 // for oemga, phi efficiency
21662173 for (auto & collision : collisions) {
@@ -2172,7 +2179,7 @@ struct DileptonMC {
21722179 if (!fEMEventCut .IsSelected (collision)) {
21732180 continue ;
21742181 }
2175- auto mccollision = collision.template emmcevent_as <aod::EMMCEvents >();
2182+ auto mccollision = collision.template emmcevent_as <MyMCCollisions >();
21762183 if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId () != cfgEventGeneratorType) {
21772184 continue ;
21782185 }
0 commit comments