@@ -82,6 +82,7 @@ struct JFlucEfficiencyTask {
8282 ((requireGlobalTrackInFilter()) ||
8383 (aod::track::isGlobalTrackSDD == (uint8_t ) true ));
8484
85+ Configurable<int > cfgCentBinsForMC{" cfgCentBinsForMC" , 1 , " Centrality bins for MC, 0: off, 1: on" };
8586 Configurable<bool > cfgEfficiencyFromData{" cfgEfficiencyFromData" , false , " Calculate efficiency using data events as reference" };
8687 Configurable<int > cfgVerbosity{" cfgVerbosity" , 0 , " Verbosity level" };
8788
@@ -167,7 +168,7 @@ struct JFlucEfficiencyTask {
167168
168169 void processMC (soa::Filtered<aod::CFMcCollisions>::iterator const & mcCollision, soa::Filtered<aod::CFMcParticles> const & mcParticles)
169170 {
170- float centrality = mcCollision.multiplicity ();
171+ float centrality = mcCollision.multiplicity (); // multiplicity: number of primary particles TODO: apply percentiles
171172
172173 for (const auto & particle : mcParticles) {
173174 if (!particle.isPhysicalPrimary ()) {
@@ -205,16 +206,6 @@ struct JFlucEfficiencyTask {
205206 }
206207 }
207208
208- template <typename TCollision, typename TTracks>
209- void fillQA (const TCollision& /* collision*/ , float multiplicity, const TTracks& tracks)
210- {
211- registry.fill (HIST (" multiplicity" ), multiplicity);
212- for (const auto & track : tracks) {
213- registry.fill (HIST (" yields" ), multiplicity, track.pt (), track.eta ());
214- registry.fill (HIST (" etaphi" ), track.eta (), track.phi ());
215- }
216- }
217-
218209 // NOTE SmallGroups includes soa::Filtered always
219210 Preslice<aod::CFTracksWithLabel> perCollision = aod::cftrack::cfCollisionId;
220211 void processEfficiency (soa::Filtered<aod::CFMcCollisions>::iterator const & mcCollision,
@@ -224,8 +215,17 @@ struct JFlucEfficiencyTask {
224215 {
225216 try {
226217 // Count MC events and fill MC z-vertex with centrality
218+ auto multiplicity = mcCollision.multiplicity ();
219+ if (cfgCentBinsForMC > 0 ) {
220+ if (collisions.size () == 0 ) {
221+ return ;
222+ }
223+ for (const auto & collision : collisions) {
224+ multiplicity = collision.multiplicity ();
225+ }
226+ }
227227 registry.fill (HIST (" hEventCounterMC" ), 0 );
228- registry.fill (HIST (" hZVertexMC" ), mcCollision.posZ (), mcCollision. multiplicity () );
228+ registry.fill (HIST (" hZVertexMC" ), mcCollision.posZ (), multiplicity);
229229
230230 if (debugMode) {
231231 LOGF (info, " Processing MC collision %d at z = %.3f" , mcCollision.globalIndex (), mcCollision.posZ ());
@@ -237,22 +237,22 @@ struct JFlucEfficiencyTask {
237237 continue ;
238238
239239 // Fill generated particle histograms
240- registry.fill (HIST (" hPtGen" ), mcParticle.pt (), mcCollision. multiplicity () );
241- registry.fill (HIST (" hEtaGen" ), mcParticle.eta (), mcCollision. multiplicity () );
240+ registry.fill (HIST (" hPtGen" ), mcParticle.pt (), multiplicity);
241+ registry.fill (HIST (" hEtaGen" ), mcParticle.eta (), multiplicity);
242242
243243 if (mcParticle.sign () > 0 ) {
244- registry.fill (HIST (" hPtGenPos" ), mcParticle.pt (), mcCollision. multiplicity () );
244+ registry.fill (HIST (" hPtGenPos" ), mcParticle.pt (), multiplicity);
245245 } else if (mcParticle.sign () < 0 ) {
246- registry.fill (HIST (" hPtGenNeg" ), mcParticle.pt (), mcCollision. multiplicity () );
246+ registry.fill (HIST (" hPtGenNeg" ), mcParticle.pt (), multiplicity);
247247 }
248248
249249 if (cfgEfficiencyFromData) {
250- registry.fill (HIST (" hPtGenData" ), mcParticle.pt (), mcCollision. multiplicity () );
251- registry.fill (HIST (" hEtaGenData" ), mcParticle.eta (), mcCollision. multiplicity () );
250+ registry.fill (HIST (" hPtGenData" ), mcParticle.pt (), multiplicity);
251+ registry.fill (HIST (" hEtaGenData" ), mcParticle.eta (), multiplicity);
252252 if (mcParticle.sign () > 0 ) {
253- registry.fill (HIST (" hPtGenDataPos" ), mcParticle.pt (), mcCollision. multiplicity () );
253+ registry.fill (HIST (" hPtGenDataPos" ), mcParticle.pt (), multiplicity);
254254 } else if (mcParticle.sign () < 0 ) {
255- registry.fill (HIST (" hPtGenDataNeg" ), mcParticle.pt (), mcCollision. multiplicity () );
255+ registry.fill (HIST (" hPtGenDataNeg" ), mcParticle.pt (), multiplicity);
256256 }
257257 }
258258 }
0 commit comments