@@ -87,9 +87,10 @@ struct LongrangecorrDerived {
8787 Configurable<float > cfgTpcMinNCrossedRows{" cfgTpcMinNCrossedRows" , 70 .0f , " " };
8888 Configurable<float > cfgTpcMaxChi2PerCluster{" cfgTpcMaxChi2PerCluster" , 4 .0f , " " };
8989 Configurable<float > cfgTpcMaxDcaZ{" cfgTpcMaxDcaZ" , 1 .0f , " " };
90- Configurable<float > cfgLowEffCut{" cfgLowEffCut" , 0 .001f , " Low efficiency cut" };
9190 Configurable<bool > applyEffCorr{" applyEffCorr" , true , " Enable efficiency correction" };
91+ Configurable<bool > applyAccCorr{" applyAccCorr" , false , " Enable NUA correction" };
9292 Configurable<std::string> cfgEffccdbPath{" cfgEffccdbPath" , " Users/a/abmodak/Efficiency/OO/default" , " Browse track eff object from CCDB" };
93+ Configurable<std::string> cfgAccccdbPath{" cfgAccccdbPath" , " Users/a/abmodak/Acceptance/OO/default" , " Browse track eff object from CCDB" };
9394
9495 Configurable<int > cfgMftCluster{" cfgMftCluster" , 5 , " cut on MFT Cluster" };
9596 Configurable<float > cfgMftDcaxy{" cfgMftDcaxy" , 2 .0f , " cut on DCA xy for MFT tracks" };
@@ -148,6 +149,7 @@ struct LongrangecorrDerived {
148149
149150 // corrections
150151 TH3D * hTrkEff = nullptr ;
152+ TH3D * hTrkAcc = nullptr ;
151153 bool fLoadTrkEffCorr = false ;
152154
153155 using CollsTable = aod::LRCollisions;
@@ -216,6 +218,7 @@ struct LongrangecorrDerived {
216218 histos.add (" Trig_eta" , " Trig_eta" , kTH1D , {cfgAxis.axisEtaTrig });
217219 histos.add (" Trig_eta_corrected" , " Trig_eta_corrected" , kTH1D , {cfgAxis.axisEtaTrig });
218220 histos.add (" Trig_phi" , " Trig_phi" , kTH1D , {cfgAxis.axisPhi });
221+ histos.add (" Trig_phi_corrected" , " Trig_phi_corrected" , kTH1D , {cfgAxis.axisPhi });
219222 histos.add (" Trig_etavsphi" , " Trig_etavsphi" , kTH2D , {cfgAxis.axisPhi , cfgAxis.axisEtaTrig });
220223 histos.add (" Trig_pt" , " Trig_pt" , kTH1D , {cfgAxis.axisPtTrigger });
221224 histos.add (" Trig_pt_corrected" , " Trig_pt_corrected" , kTH1D , {cfgAxis.axisPtTrigger });
@@ -274,23 +277,46 @@ struct LongrangecorrDerived {
274277 }
275278 LOGF (info, " Loaded efficiency histogram from %s (%p)" , cfgSel.cfgEffccdbPath .value .c_str (), (void *)hTrkEff);
276279 }
280+
281+ if (cfgSel.cfgAccccdbPath .value .empty () == false ) {
282+ hTrkAcc = ccdb->getForTimeStamp <TH3D >(cfgSel.cfgAccccdbPath , timestamp);
283+ if (hTrkAcc == nullptr ) {
284+ LOGF (fatal, " Could not load NUA histogram for trigger particles from %s" , cfgSel.cfgAccccdbPath .value .c_str ());
285+ }
286+ LOGF (info, " Loaded efficiency histogram from %s (%p)" , cfgSel.cfgAccccdbPath .value .c_str (), (void *)hTrkAcc);
287+ }
288+
277289 fLoadTrkEffCorr = true ;
278290 }
279291
280292 float getTrkEffCorr (float posZ, float eta, float pt)
281293 {
282- float eff = 1 .0f ;
283- if (hTrkEff) {
284- int zBin = hTrkEff->GetXaxis ()->FindBin (posZ);
285- int etaBin = hTrkEff->GetYaxis ()->FindBin (eta);
286- int ptBin = hTrkEff->GetZaxis ()->FindBin (pt);
287- eff = hTrkEff->GetBinContent (zBin, etaBin, ptBin);
288- } else {
289- eff = 1 .0f ;
294+ if (!cfgSel.applyEffCorr || !hTrkEff) {
295+ return 1.0 ;
296+ }
297+ int zBin = hTrkEff->GetXaxis ()->FindBin (posZ);
298+ int etaBin = hTrkEff->GetYaxis ()->FindBin (eta);
299+ int ptBin = hTrkEff->GetZaxis ()->FindBin (pt);
300+ float effweight = 1.0 / hTrkEff->GetBinContent (zBin, etaBin, ptBin);
301+ if (!std::isfinite (effweight) || effweight <= 0 ) {
302+ return 1.0 ;
303+ }
304+ return effweight;
305+ }
306+
307+ float getTrkAccCorr (float posZ, float eta, float phi)
308+ {
309+ if (!cfgSel.applyAccCorr || !hTrkAcc) {
310+ return 1.0 ;
290311 }
291- if (eff < cfgSel.cfgLowEffCut )
292- eff = 1.0 ;
293- return 1.0 / eff;
312+ int zBin = hTrkAcc->GetXaxis ()->FindBin (posZ);
313+ int etaBin = hTrkAcc->GetYaxis ()->FindBin (eta);
314+ int phiBin = hTrkAcc->GetZaxis ()->FindBin (phi);
315+ float nua = hTrkAcc->GetBinContent (zBin, etaBin, phiBin);
316+ if (!std::isfinite (nua) || nua <= 0 ) {
317+ return 1.0 ;
318+ }
319+ return nua;
294320 }
295321
296322 template <typename TTrack>
@@ -338,12 +364,13 @@ struct LongrangecorrDerived {
338364 }
339365
340366 template <typename TTrack>
341- void fillTrigTrackQA (TTrack const & track, float trigAmpl, float trkeff)
367+ void fillTrigTrackQA (TTrack const & track, float trigAmpl, float trkeff, float trkAcc )
342368 {
343369 histos.fill (HIST (" Trig_etavsphi" ), track.phi (), track.eta ());
344370 histos.fill (HIST (" Trig_eta" ), track.eta ());
345- histos.fill (HIST (" Trig_eta_corrected" ), track.eta (), trkeff);
346371 histos.fill (HIST (" Trig_phi" ), track.phi ());
372+ histos.fill (HIST (" Trig_eta_corrected" ), track.eta (), trkeff);
373+ histos.fill (HIST (" Trig_phi_corrected" ), track.phi (), trkAcc);
347374 if constexpr (requires { track.channelID (); }) {
348375 histos.fill (HIST (" Trig_amp" ), trigAmpl);
349376 histos.fill (HIST (" Channel_vs_Trig_amp" ), track.channelID (), trigAmpl);
@@ -419,6 +446,7 @@ struct LongrangecorrDerived {
419446 for (auto const & triggerTrack : triggers) {
420447 auto trigAmpl = 1 .0f ;
421448 auto trkeff = 1 .0f ;
449+ auto trkAcc = 1 .0f ;
422450
423451 if (!isTrackSelected (triggerTrack))
424452 continue ;
@@ -444,19 +472,25 @@ struct LongrangecorrDerived {
444472 if constexpr (step == CorrelationContainer::kCFStepCorrected ) {
445473 if constexpr (requires { triggerTrack.trackType (); }) {
446474 trkeff = getTrkEffCorr (vz, triggerTrack.eta (), triggerTrack.pt ());
475+ trkAcc = getTrkAccCorr (vz, triggerTrack.eta (), triggerTrack.phi ());
447476 } else {
448477 trkeff = 1.0 ;
478+ trkAcc = 1.0 ;
449479 }
450480 }
451481
482+ if (cfgSel.cfgVerbosity > 0 ) {
483+ LOGF (info, " NUE correction factor: %f | NUA correction factor: %f" , trkeff, trkAcc);
484+ }
485+
452486 if (!mixing) {
453- fillTrigTrackQA (triggerTrack, trigAmpl, trkeff);
487+ fillTrigTrackQA (triggerTrack, trigAmpl, trkeff, trkAcc );
454488 if constexpr (requires { triggerTrack.channelID (); }) {
455- histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, 1.0 , 1.0 , eventWeight * trigAmpl * trkeff);
489+ histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, 1.0 , 1.0 , eventWeight * trigAmpl * trkeff * trkAcc );
456490 } else if constexpr (requires { triggerTrack.invMass (); }) {
457- histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, triggerTrack.pt (), triggerTrack.invMass (), eventWeight * trigAmpl * trkeff);
491+ histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, triggerTrack.pt (), triggerTrack.invMass (), eventWeight * trigAmpl * trkeff * trkAcc );
458492 } else {
459- histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, triggerTrack.pt (), 1.0 , eventWeight * trigAmpl * trkeff);
493+ histos.fill (HIST (" Trig_hist" ), fSampleIndex , vz, multiplicity, triggerTrack.pt (), 1.0 , eventWeight * trigAmpl * trkeff * trkAcc );
460494 }
461495 }
462496 for (auto const & assoTrack : assocs) {
@@ -479,16 +513,16 @@ struct LongrangecorrDerived {
479513 float deltaEta = triggerTrack.eta () - assoTrack.eta ();
480514 if (!mixing) {
481515 fillAssocTrackQA (assoTrack, assoAmpl);
482- histos.fill (HIST (" deltaEta_deltaPhi_same" ), deltaPhi, deltaEta, eventWeight * trigAmpl * assoAmpl * trkeff);
516+ histos.fill (HIST (" deltaEta_deltaPhi_same" ), deltaPhi, deltaEta, eventWeight * trigAmpl * assoAmpl * trkeff * trkAcc );
483517 } else {
484- histos.fill (HIST (" deltaEta_deltaPhi_mixed" ), deltaPhi, deltaEta, eventWeight * trigAmpl * assoAmpl * trkeff);
518+ histos.fill (HIST (" deltaEta_deltaPhi_mixed" ), deltaPhi, deltaEta, eventWeight * trigAmpl * assoAmpl * trkeff * trkAcc );
485519 }
486520 if constexpr (requires { triggerTrack.channelID (); }) {
487- target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, 1.0 , deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl * trkeff);
521+ target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, 1.0 , deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl * trkeff * trkAcc );
488522 } else if constexpr (requires { triggerTrack.invMass (); }) {
489- target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, triggerTrack.pt (), deltaPhi, deltaEta, triggerTrack.invMass (), eventWeight * trigAmpl * assoAmpl * trkeff);
523+ target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, triggerTrack.pt (), deltaPhi, deltaEta, triggerTrack.invMass (), eventWeight * trigAmpl * assoAmpl * trkeff * trkAcc );
490524 } else {
491- target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, triggerTrack.pt (), deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl * trkeff);
525+ target->getPairHist ()->Fill (step, fSampleIndex , vz, multiplicity, triggerTrack.pt (), deltaPhi, deltaEta, 1.0 , eventWeight * trigAmpl * assoAmpl * trkeff * trkAcc );
492526 }
493527 } // associated tracks
494528 } // trigger tracks
0 commit comments