@@ -106,43 +106,51 @@ struct MCGeneratorStudies {
106106 o2::emcal::Geometry::GetInstanceFromRunNumber (300000 );
107107 }
108108
109- PresliceUnsorted<aod::McParticles> perMcCollision = aod::mcparticle::mcCollisionId;
109+ PresliceUnsorted<MyMCCollisions> perFoundBC = aod::evsel::foundBCId;
110+ Preslice<aod::McCollisions> MCCollperBC = aod::mccollision::bcId;
111+ Preslice<aod::McParticles> perMcCollision = aod::mcparticle::mcCollisionId;
110112
111- void process (MyBCs::iterator const & bc , MyMCCollisions const & collisions, aod::McCollisions const & mcCollisions, aod::McParticles const & mcParticles)
113+ void process (MyBCs const & bcs , MyMCCollisions const & collisions, aod::McCollisions const & mcCollisions, aod::McParticles const & mcParticles)
112114 {
113115
114- mHistManager .fill (HIST (" NCollisionsMCCollisions" ), collisions.size (), mcCollisions.size ());
115- mHistManager .fill (HIST (" hBCCounter" ), 1 );
116+ for (const auto & bc : bcs) {
116117
117- if (bc.selection_bit (aod::evsel::kIsTriggerTVX )) { // Count BCs with TVX trigger with and without a collision, as well as the generated particles within
118+ auto collisionsInFoundBC = collisions.sliceBy (perFoundBC, bc.globalIndex ());
119+ auto MCCollisionsBC = mcCollisions.sliceBy (MCCollperBC, bc.globalIndex ());
118120
119- mHistManager .fill (HIST (" NTVXCollisionsMCCollisions" ), collisions.size (), mcCollisions.size ());
121+ mHistManager .fill (HIST (" NCollisionsMCCollisions" ), collisionsInFoundBC.size (), MCCollisionsBC.size ());
122+ mHistManager .fill (HIST (" hBCCounter" ), 1 );
120123
121- mHistManager . fill ( HIST ( " hBCCounter " ), 2 );
124+ if (bc. selection_bit (aod::evsel:: kIsTriggerTVX )) { // Count BCs with TVX trigger with and without a collision, as well as the generated particles within
122125
123- bool bcHasCollision = collisions .size () > 0 ;
126+ mHistManager . fill ( HIST ( " NTVXCollisionsMCCollisions " ), collisionsInFoundBC .size (), mcCollisions. size ()) ;
124127
125- if (bcHasCollision)
126- mHistManager .fill (HIST (" hBCCounter" ), 3 );
128+ mHistManager .fill (HIST (" hBCCounter" ), 2 );
127129
128- for ( auto & mcCollision : mcCollisions) {
130+ bool bcHasCollision = collisionsInFoundBC. size () > 0 ;
129131
130- auto mcParticles_inColl = mcParticles.sliceBy (perMcCollision, mcCollision.globalIndex ());
132+ if (bcHasCollision)
133+ mHistManager .fill (HIST (" hBCCounter" ), 3 );
131134
132- for (auto & mcParticle : mcParticles_inColl) {
133- if (mcParticle.pdgCode () != 0 && mcParticle.pdgCode () != mSelectedParticleCode )
134- continue ;
135- if (fabs (mcParticle.y ()) > mRapidityCut )
136- continue ;
137- if (!mcParticle.isPhysicalPrimary () && !mcParticle.producedByGenerator ())
138- continue ;
139- if (mRequireGammaGammaDecay && !isGammaGammaDecay (mcParticle, mcParticles))
140- continue ;
135+ for (auto & mcCollision : MCCollisionsBC) {
141136
142- mHistManager . fill ( HIST ( " Yield_BC_T " ), mcParticle. pt ());
137+ auto mcParticles_inColl = mcParticles. sliceBy (perMcCollision, mcCollision. globalIndex ());
143138
144- if (bcHasCollision)
145- mHistManager .fill (HIST (" Yield_BC_TC" ), mcParticle.pt ());
139+ for (auto & mcParticle : mcParticles_inColl) {
140+ if (mcParticle.pdgCode () != 0 && mcParticle.pdgCode () != mSelectedParticleCode )
141+ continue ;
142+ if (fabs (mcParticle.y ()) > mRapidityCut )
143+ continue ;
144+ if (!mcParticle.isPhysicalPrimary () && !mcParticle.producedByGenerator ())
145+ continue ;
146+ if (mRequireGammaGammaDecay && !isGammaGammaDecay (mcParticle, mcParticles))
147+ continue ;
148+
149+ mHistManager .fill (HIST (" Yield_BC_T" ), mcParticle.pt ());
150+
151+ if (bcHasCollision)
152+ mHistManager .fill (HIST (" Yield_BC_TC" ), mcParticle.pt ());
153+ }
146154 }
147155 }
148156 }
0 commit comments