@@ -65,6 +65,7 @@ using namespace o2::framework::expressions;
6565
6666struct JetSpectraEseTask {
6767 Configurable<std::string> cfgEfficiency{" cfgEfficiency" , " " , " CCDB path to efficiency" };
68+ Configurable<std::string> cfgEfficiency3D{" cfgEfficiency3D" , " " , " CCDB path to 3D efficiency" };
6869 Configurable<float > jetPtMin{" jetPtMin" , 5.0 , " minimum jet pT cut" };
6970 Configurable<float > jetR{" jetR" , 0.2 , " jet resolution parameter" };
7071 Configurable<float > randomConeR{" randomConeR" , 0.4 , " size of random Cone for estimating background fluctuations" };
@@ -147,8 +148,10 @@ struct JetSpectraEseTask {
147148
148149 Service<ccdb::BasicCCDBManager> ccdb;
149150 struct Efficiency {
150- TH1D* hEff = nullptr ;
151+ TH1F* hEff = nullptr ;
152+ TH3F* h3Eff = nullptr ;
151153 bool isLoaded = false ;
154+ bool is3D = false ;
152155 } cfg;
153156
154157 Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
@@ -414,12 +417,14 @@ struct JetSpectraEseTask {
414417 }
415418 if (doprocessMCGenTrack) {
416419 LOGF (info, " JetSpectraEseTask::init() - MCGen track" );
420+ registry.add (" mcgen/h3TrackPtGen" , " ;#it{p}_{T,track}; vtxZ; #eta" , {HistType::kTH3F , {{assocTrackPt}, {vertexZAxis}, {etaAxis}}});
417421 registry.add (" mcgen/hTrackPtGen" , " " , {HistType::kTH1F , {{assocTrackPt}}});
418422 registry.add (" mcgen/hTrackEtaGen" , " " , {HistType::kTH1F , {{etaAxis}}});
419423 registry.add (" mcgen/hTrackPhiGen" , " " , {HistType::kTH1F , {{phiAxis}}});
420424 }
421425 if (doprocessMCRecoTrack) {
422426 LOGF (info, " JetSpectraEseTask::init() - MCRec track" );
427+ registry.add (" mcrec/h3TrackPtReco" , " ;#it{p}_{T,track}; vtxZ; #eta" , {HistType::kTH3F , {{assocTrackPt}, {vertexZAxis}, {etaAxis}}});
423428 registry.add (" mcrec/hTrackPtReco" , " " , {HistType::kTH1F , {{assocTrackPt}}});
424429 registry.add (" mcrec/hTrackEtaReco" , " " , {HistType::kTH1F , {{etaAxis}}});
425430 registry.add (" mcrec/hTrackPhiReco" , " " , {HistType::kTH1F , {{phiAxis}}});
@@ -434,22 +439,37 @@ struct JetSpectraEseTask {
434439 return ;
435440 }
436441 if (!cfgEfficiency.value .empty ()) {
437- cfg.hEff = ccdb->getForTimeStamp <TH1D >(cfgEfficiency, timestamp);
442+ cfg.hEff = ccdb->getForTimeStamp <TH1F >(cfgEfficiency, timestamp);
438443 if (cfg.hEff == nullptr ) {
439444 LOGF (fatal, " Could not load track efficiency from %s" , cfgEfficiency.value .c_str ());
440445 }
441446 LOGF (info, " Loaded tracking efficiency from %s (%p)" , cfgEfficiency.value .c_str (), (void *)cfg.hEff );
442447 }
448+ if (!cfgEfficiency3D.value .empty ()) {
449+ cfg.h3Eff = ccdb->getForTimeStamp <TH3F>(cfgEfficiency3D, timestamp);
450+ if (cfg.h3Eff == nullptr ) {
451+ LOGF (fatal, " Could not load track efficiency from %s" , cfgEfficiency3D.value .c_str ());
452+ }
453+ LOGF (info, " Loaded 3D tracking efficiency from %s (%p)" , cfgEfficiency3D.value .c_str (), (void *)cfg.h3Eff );
454+ cfg.is3D = true ;
455+ }
443456 cfg.isLoaded = true ;
444457 return ;
445458 }
446459
447460 template <typename TTrack>
448- double getEfficiency (TTrack track)
461+ double getEfficiency (TTrack track, auto vtxZ )
449462 {
450463 double eff{1.0 };
451- if (cfg.hEff )
452- eff = cfg.hEff ->GetBinContent (cfg.hEff ->FindBin (track.pt ()));
464+ if (cfg.is3D ) {
465+ if (cfg.h3Eff ) {
466+ eff = cfg.h3Eff ->GetBinContent (cfg.h3Eff ->FindBin (track.pt (), track.eta (), vtxZ));
467+ }
468+ } else {
469+ if (cfg.hEff ) {
470+ eff = cfg.hEff ->GetBinContent (cfg.hEff ->FindBin (track.pt ()));
471+ }
472+ }
453473 if (eff == 0 )
454474 return -1 .;
455475 else
@@ -528,7 +548,7 @@ struct JetSpectraEseTask {
528548 for (const auto & track : tracks) {
529549 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
530550 continue ;
531- double weff = getEfficiency (track);
551+ double weff = getEfficiency (track, collision. posZ () );
532552 if (weff < 0 )
533553 continue ;
534554 auto deta = track.eta () - jet.eta ();
@@ -538,7 +558,7 @@ struct JetSpectraEseTask {
538558 }
539559 }
540560 for (const auto & track : tracks) {
541- double weff = getEfficiency (track);
561+ double weff = getEfficiency (track, collision. posZ () );
542562 if (weff < 0 )
543563 continue ;
544564 registry.fill (HIST (" trackQA/before/hTrackPt" ), centrality, track.pt (), weff);
@@ -626,7 +646,7 @@ struct JetSpectraEseTask {
626646 for (const auto & track : tracks2) {
627647 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
628648 continue ;
629- double weff = getEfficiency (track);
649+ double weff = getEfficiency (track, c2. posZ () );
630650 if (weff < 0 )
631651 continue ;
632652 auto deta = track.eta () - jet.eta ();
@@ -636,7 +656,7 @@ struct JetSpectraEseTask {
636656 }
637657
638658 for (const auto & track : tracks2) {
639- double weff = getEfficiency (track);
659+ double weff = getEfficiency (track, c2. posZ () );
640660 if (weff < 0 )
641661 continue ;
642662 registry.fill (HIST (" trackQA/before/hTrackPtMixed" ), centrality, track.pt (), weff);
@@ -907,6 +927,7 @@ struct JetSpectraEseTask {
907927 continue ;
908928 }
909929
930+ registry.fill (HIST (" mcgen/h3TrackPtGen" ), particle.pt (), collision.posZ (), particle.eta ());
910931 registry.fill (HIST (" mcgen/hTrackPtGen" ), particle.pt ());
911932 registry.fill (HIST (" mcgen/hTrackEtaGen" ), particle.eta ());
912933 registry.fill (HIST (" mcgen/hTrackPhiGen" ), particle.phi ());
@@ -972,6 +993,7 @@ struct JetSpectraEseTask {
972993 }
973994 seenMcParticles.push_back (particle.globalIndex ());
974995
996+ registry.fill (HIST (" mcrec/h3TrackPtReco" ), track.pt (), collision.posZ (), track.eta ());
975997 registry.fill (HIST (" mcrec/hTrackPtReco" ), track.pt ());
976998 registry.fill (HIST (" mcrec/hTrackEtaReco" ), track.eta ());
977999 registry.fill (HIST (" mcrec/hTrackPhiReco" ), track.phi ());
0 commit comments