@@ -114,6 +114,9 @@ struct CorrelationTask {
114114 registry.add (" yields" , " centrality vs pT vs eta" , {HistType::kTH3F , {{100 , 0 , 100 , " centrality" }, {40 , 0 , 20 , " p_{T}" }, {100 , -2 , 2 , " #eta" }}});
115115 registry.add (" etaphi" , " centrality vs eta vs phi" , {HistType::kTH3F , {{100 , 0 , 100 , " centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , 2 * M_PI, " #varphi" }}});
116116
117+ const int maxMixBin = axisMultiplicity->size () * axisVertex->size ();
118+ registry.add (" eventcount" , " bin" , {HistType::kTH1F , {{maxMixBin + 2 , -2.5 , -0.5 + maxMixBin, " bin" }}});
119+
117120 mPairCuts .SetHistogramRegistry (®istry);
118121
119122 if (cfgPairCut->get (" Photon" ) > 0 || cfgPairCut->get (" K0" ) > 0 || cfgPairCut->get (" Lambda" ) > 0 || cfgPairCut->get (" Phi" ) > 0 || cfgPairCut->get (" Rho" ) > 0 ) {
@@ -151,15 +154,6 @@ struct CorrelationTask {
151154
152155 long now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now ().time_since_epoch ()).count ();
153156 ccdb->setCreatedNotAfter (now); // TODO must become global parameter from the train creation time
154-
155- if (cfgEfficiencyTrigger.value .empty () == false ) {
156- cfg.mEfficiencyTrigger = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyTrigger, now);
157- LOGF (info, " Loaded efficiency histogram for trigger particles from %s (%p)" , cfgEfficiencyTrigger.value .c_str (), (void *)cfg.mEfficiencyTrigger );
158- }
159- if (cfgEfficiencyAssociated.value .empty () == false ) {
160- cfg.mEfficiencyAssociated = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyAssociated, now);
161- LOGF (info, " Loaded efficiency histogram for associated particles from %s (%p)" , cfgEfficiencyAssociated.value .c_str (), (void *)cfg.mEfficiencyAssociated );
162- }
163157 }
164158
165159 template <typename TCollision, typename TTracks>
@@ -265,12 +259,19 @@ struct CorrelationTask {
265259 {
266260 // TODO will go to CCDBConfigurable
267261 auto bc = collision.bc_as <aod::BCsWithTimestamps>();
262+
268263 if (cfgEfficiencyTrigger.value .empty () == false ) {
269264 cfg.mEfficiencyTrigger = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyTrigger, bc.timestamp ());
265+ if (cfg.mEfficiencyTrigger == nullptr ) {
266+ LOGF (fatal, " Could not load efficiency histogram for trigger particles from %s" , cfgEfficiencyTrigger.value .c_str ());
267+ }
270268 LOGF (info, " Loaded efficiency histogram for trigger particles from %s (%p)" , cfgEfficiencyTrigger.value .c_str (), (void *)cfg.mEfficiencyTrigger );
271269 }
272270 if (cfgEfficiencyAssociated.value .empty () == false ) {
273271 cfg.mEfficiencyAssociated = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyAssociated, bc.timestamp ());
272+ if (cfg.mEfficiencyAssociated == nullptr ) {
273+ LOGF (fatal, " Could not load efficiency histogram for associated particles from %s" , cfgEfficiencyAssociated.value .c_str ());
274+ }
274275 LOGF (info, " Loaded efficiency histogram for associated particles from %s (%p)" , cfgEfficiencyAssociated.value .c_str (), (void *)cfg.mEfficiencyAssociated );
275276 }
276277
@@ -282,6 +283,7 @@ struct CorrelationTask {
282283 if (fillCollisionAOD (same, collision, centrality) == false ) {
283284 return ;
284285 }
286+ registry.fill (HIST (" eventcount" ), -2 );
285287 fillQA (collision, centrality, tracks);
286288 fillCorrelations (same, tracks, tracks, centrality, collision.posZ (), bSign);
287289 }
@@ -295,6 +297,7 @@ struct CorrelationTask {
295297 const auto centrality = collision.centV0M ();
296298
297299 same->fillEvent (centrality, CorrelationContainer::kCFStepReconstructed );
300+ registry.fill (HIST (" eventcount" ), -2 );
298301 fillQA (collision, centrality, tracks);
299302 fillCorrelations (same, tracks, tracks, centrality, collision.posZ (), bSign);
300303 }
@@ -316,9 +319,11 @@ struct CorrelationTask {
316319 LOGF (info, " processMixedAOD: Mixed collisions bin: %d pair: %d (%f), %d (%f)" , collision1.bin (), collision1.index (), collision1.posZ (), collision2.index (), collision2.posZ ());
317320
318321 // TODO in principle these should be already checked on hash level, because in this way we don't check collision 2
322+ // TODO not correct because event-level histograms on collision1 are filled for each pair
319323 if (fillCollisionAOD (mixed, collision1, collision1.centV0M ()) == false ) {
320324 continue ;
321325 }
326+ registry.fill (HIST (" eventcount" ), collision1.bin ());
322327
323328 auto it1 = slicer.begin ();
324329 auto it2 = slicer.begin ();
@@ -342,6 +347,7 @@ struct CorrelationTask {
342347
343348 // LOGF(info, "Tracks: %d and %d entries", tracks1.size(), tracks2.size());
344349
350+ // TODO mixed event weight missing
345351 fillCorrelations (mixed, tracks1, tracks2, collision1.centV0M (), collision1.posZ (), bSign);
346352 }
347353 }
@@ -362,6 +368,7 @@ struct CorrelationTask {
362368
363369 LOGF (info, " processMixedDerived: Mixed collisions bin: %d pair: %d (%f), %d (%f)" , collision1.bin (), collision1.index (), collision1.posZ (), collision2.index (), collision2.posZ ());
364370
371+ registry.fill (HIST (" eventcount" ), collision1.bin ());
365372 mixed->fillEvent (collision1.centV0M (), CorrelationContainer::kCFStepReconstructed );
366373
367374 auto it1 = slicer.begin ();
0 commit comments