Skip to content

Commit 07f05eb

Browse files
joachimckhAnkur Yadav
authored andcommitted
[PWGJE] tracking efficiency (#15520)
1 parent 912af9a commit 07f05eb

File tree

1 file changed

+50
-22
lines changed

1 file changed

+50
-22
lines changed

PWGJE/Tasks/jetSpectraEseTask.cxx

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <Framework/InitContext.h>
3636
#include <Framework/Logger.h>
3737
#include <Framework/O2DatabasePDGPlugin.h>
38+
#include <Framework/O2DatabasePDGPlugin.h>
3839
#include <Framework/OutputObjHeader.h>
3940
#include <Framework/runDataProcessing.h>
4041

@@ -60,6 +61,7 @@ using namespace o2::framework;
6061
using namespace o2::framework::expressions;
6162

6263
struct JetSpectraEseTask {
64+
Configurable<std::string> cfgEfficiency{"cfgEfficiency", "", "CCDB path to efficiency"};
6365
Configurable<std::string> cfgEfficiency{"cfgEfficiency", "", "CCDB path to efficiency"};
6466
Configurable<float> jetPtMin{"jetPtMin", 5.0, "minimum jet pT cut"};
6567
Configurable<float> jetR{"jetR", 0.2, "jet resolution parameter"};
@@ -147,6 +149,12 @@ struct JetSpectraEseTask {
147149
bool isLoaded = false;
148150
} cfg;
149151

152+
Service<ccdb::BasicCCDBManager> ccdb;
153+
struct Efficiency {
154+
TH1D* hEff = nullptr;
155+
bool isLoaded = false;
156+
} cfg;
157+
150158
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
151159
Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * Scaler) && nabs(aod::jet::eta) < Acceptance - jetR;
152160
Filter colFilter = nabs(aod::jcollision::posZ) < vertexZCut;
@@ -155,11 +163,13 @@ struct JetSpectraEseTask {
155163
Preslice<ChargedMCDJets> mcdjetsPerJCollision = o2::aod::jet::collisionId;
156164
Preslice<aod::JetTracks> tracksPerJCollision = o2::aod::jtrack::collisionId;
157165
Preslice<aod::JetTracksMCD> mcdTracksPerJCollision = o2::aod::jtrack::collisionId;
166+
Preslice<aod::JetParticles> particlesPerJMcCollision = o2::aod::jmcparticle::mcCollisionId;
158167

159168
SliceCache cache;
160169
using BinningType = ColumnBinningPolicy<aod::jcollision::PosZ, aod::jcollision::CentFT0C>;
161170
BinningType corrBinning{{binsZVtx, binsCentrality}, true};
162171
Service<o2::framework::O2DatabasePDG> pdg;
172+
Service<o2::framework::O2DatabasePDG> pdg;
163173

164174
enum class DetID { FT0C,
165175
FT0A,
@@ -410,20 +420,19 @@ struct JetSpectraEseTask {
410420
}
411421
if (doprocessMCGenTrack) {
412422
LOGF(info, "JetSpectraEseTask::init() - MCGen track");
413-
registry.add("mcgen/hTrackPtGen", "", {HistType::kTH1F, {{assocTrackPt}}});
414-
registry.add("mcgen/hTrackEtaGen", "", {HistType::kTH1F, {{etaAxis}}});
415-
registry.add("mcgen/hTrackPhiGen", "", {HistType::kTH1F, {{phiAxis}}});
423+
registry.add("hTrackPtGen", "", {HistType::kTH1F, {{assocTrackPt}}});
424+
registry.add("hTrackEtaGen", "", {HistType::kTH1F, {{etaAxis}}});
425+
registry.add("hTrackPhiGen", "", {HistType::kTH1F, {{phiAxis}}});
416426
}
417427
if (doprocessMCRecoTrack) {
418428
LOGF(info, "JetSpectraEseTask::init() - MCRec track");
419-
registry.add("mcrec/hTrackPtReco", "", {HistType::kTH1F, {{assocTrackPt}}});
420-
registry.add("mcrec/hTrackEtaReco", "", {HistType::kTH1F, {{etaAxis}}});
421-
registry.add("mcrec/hTrackPhiReco", "", {HistType::kTH1F, {{phiAxis}}});
429+
registry.add("hTrackPtReco", "", {HistType::kTH1F, {{assocTrackPt}}});
430+
registry.add("hTrackEtaReco", "", {HistType::kTH1F, {{etaAxis}}});
431+
registry.add("hTrackPhiReco", "", {HistType::kTH1F, {{phiAxis}}});
422432
}
423433
}
424434

425-
template <typename TBC>
426-
void loadEfficiency(TBC const& bc)
435+
void loadEfficiency(aod::BCsWithTimestamps::iterator const& bc)
427436
{
428437
uint64_t timestamp = bc.timestamp();
429438
if (cfg.isLoaded) {
@@ -525,15 +534,24 @@ struct JetSpectraEseTask {
525534
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
526535
continue;
527536
double weff = getEfficiency(track);
537+
if (weff < 0)
538+
continue;
539+
double weff = getEfficiency(track);
528540
if (weff < 0)
529541
continue;
530542
auto deta = track.eta() - jet.eta();
531543
auto dphi = RecoDecay::constrainAngle(track.phi() - jet.phi(), -o2::constants::math::PIHalf);
532544
registry.fill(HIST("thn_jethad_corr_same"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
533545
hSameSub[lRndInd]->Fill(centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
546+
registry.fill(HIST("thn_jethad_corr_same"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
547+
hSameSub[lRndInd]->Fill(centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
534548
}
535549
}
536550
for (const auto& track : tracks) {
551+
double weff = getEfficiency(track);
552+
if (weff < 0)
553+
continue;
554+
registry.fill(HIST("trackQA/before/hTrackPt"), centrality, track.pt(), weff);
537555
double weff = getEfficiency(track);
538556
if (weff < 0)
539557
continue;
@@ -543,6 +561,7 @@ struct JetSpectraEseTask {
543561
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
544562
continue;
545563
registry.fill(HIST("trackQA/after/hTrackPt"), centrality, track.pt(), weff);
564+
registry.fill(HIST("trackQA/after/hTrackPt"), centrality, track.pt(), weff);
546565
registry.fill(HIST("trackQA/after/hTrackEta"), centrality, track.eta());
547566
registry.fill(HIST("trackQA/after/hTrackPhi"), centrality, track.phi());
548567
registry.fill(HIST("h3CenttrPhiPsi2"), centrality, RecoDecay::constrainAngle(track.phi() - psi.psi2, -o2::constants::math::PI), qPerc[0]);
@@ -557,8 +576,9 @@ struct JetSpectraEseTask {
557576
auto tracksTuple = std::make_tuple(jets, tracks);
558577
Pair<TCollisions, TJets, TTracks, BinningType> pairData{corrBinning, numberEventsMixed, -1, collisions, tracksTuple, &cache};
559578

579+
560580
for (const auto& [c1, jets1, c2, tracks2] : pairData) {
561-
auto bc = c2.template bc_as<aod::JBCs>();
581+
auto bc = c2.template bc_as<aod::BCsWithTimestamps>();
562582
loadEfficiency(bc);
563583
auto c1Tracks = tracks.sliceBy(tracksPerJCollision, c1.globalIndex());
564584
registry.fill(HIST("eventQA/before/hVtxZMixed"), c1.posZ());
@@ -618,20 +638,29 @@ struct JetSpectraEseTask {
618638
auto vCorrL = cfgrhoPhi ? corrL(jet) : vCorr;
619639
float dPhi{RecoDecay::constrainAngle(jet.phi() - psi.psi2, -o2::constants::math::PI)};
620640

641+
registry.fill(HIST("hNtrigMixed"), centrality, vCorrL, dPhi, qPerc[0]);
621642
registry.fill(HIST("hNtrigMixed"), centrality, vCorrL, dPhi, qPerc[0]);
622643
for (const auto& track : tracks2) {
623644
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
624645
continue;
625646
double weff = getEfficiency(track);
647+
if (weff < 0)
648+
continue;
649+
double weff = getEfficiency(track);
626650
if (weff < 0)
627651
continue;
628652
auto deta = track.eta() - jet.eta();
629653
auto dphi = RecoDecay::constrainAngle(track.phi() - jet.phi(), -o2::constants::math::PIHalf);
630654
registry.fill(HIST("thn_jethad_corr_mixed"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
655+
registry.fill(HIST("thn_jethad_corr_mixed"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
631656
}
632657
}
633658

634659
for (const auto& track : tracks2) {
660+
double weff = getEfficiency(track);
661+
if (weff < 0)
662+
continue;
663+
registry.fill(HIST("trackQA/before/hTrackPtMixed"), centrality, track.pt(), weff);
635664
double weff = getEfficiency(track);
636665
if (weff < 0)
637666
continue;
@@ -641,6 +670,7 @@ struct JetSpectraEseTask {
641670
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
642671
continue;
643672
registry.fill(HIST("trackQA/after/hTrackPtMixed"), centrality, track.pt(), weff);
673+
registry.fill(HIST("trackQA/after/hTrackPtMixed"), centrality, track.pt(), weff);
644674
registry.fill(HIST("trackQA/after/hTrackEtaMixed"), centrality, track.eta());
645675
registry.fill(HIST("trackQA/after/hTrackPhiMixed"), centrality, track.phi());
646676
}
@@ -649,7 +679,7 @@ struct JetSpectraEseTask {
649679

650680
void processESEDataCharged(soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs>::iterator const& collision,
651681
soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const& jets,
652-
aod::JetTracks const& tracks, aod::JBCs const&)
682+
aod::JetTracks const& tracks, aod::BCsWithTimestamps const&)
653683
{
654684
registry.fill(HIST("eventQA/hEventCounter"), kFilteredInputEv);
655685
registry.fill(HIST("eventQA/before/hVtxZ"), collision.posZ());
@@ -661,15 +691,15 @@ struct JetSpectraEseTask {
661691
return;
662692
registry.fill(HIST("eventQA/hEventCounter"), kOccupancyCut);
663693

664-
auto bc = collision.bc_as<aod::JBCs>();
694+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
665695
loadEfficiency(bc);
666696
jetSpectra(collision, jets, tracks);
667697
}
668698
PROCESS_SWITCH(JetSpectraEseTask, processESEDataCharged, "process ese collisions", true);
669699

670700
void processESEDataChargedMixed(soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs> const& collisions,
671701
soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const& jets,
672-
aod::JetTracks const& tracks, aod::JBCs const&)
702+
aod::JetTracks const& tracks, aod::BCsWithTimestamps const&)
673703
{
674704
jetMixed(collisions, jets, tracks);
675705
}
@@ -886,10 +916,8 @@ struct JetSpectraEseTask {
886916
return;
887917
}
888918

889-
for (const auto& particle : particles) {
890-
if (particle.mcCollisionId() != mcCollision.globalIndex()) {
891-
continue;
892-
}
919+
auto particlesInCollision = particles.sliceBy(particlesPerJMcCollision, mcCollision.globalIndex());
920+
for (const auto& particle : particlesInCollision) {
893921
if (!isChargedParticle(particle.pdgCode())) {
894922
continue;
895923
}
@@ -903,9 +931,9 @@ struct JetSpectraEseTask {
903931
continue;
904932
}
905933

906-
registry.fill(HIST("mcgen/hTrackPtGen"), particle.pt());
907-
registry.fill(HIST("mcgen/hTrackEtaGen"), particle.eta());
908-
registry.fill(HIST("mcgen/hTrackPhiGen"), particle.phi());
934+
registry.fill(HIST("hTrackPtGen"), particle.pt());
935+
registry.fill(HIST("hTrackEtaGen"), particle.eta());
936+
registry.fill(HIST("hTrackPhiGen"), particle.phi());
909937
}
910938
}
911939
PROCESS_SWITCH(JetSpectraEseTask, processMCGenTrack, "jet MC process: Generated track", false);
@@ -968,9 +996,9 @@ struct JetSpectraEseTask {
968996
}
969997
seenMcParticles.push_back(particle.globalIndex());
970998

971-
registry.fill(HIST("mcrec/hTrackPtReco"), track.pt());
972-
registry.fill(HIST("mcrec/hTrackEtaReco"), track.eta());
973-
registry.fill(HIST("mcrec/hTrackPhiReco"), track.phi());
999+
registry.fill(HIST("hTrackPtReco"), track.pt());
1000+
registry.fill(HIST("hTrackEtaReco"), track.eta());
1001+
registry.fill(HIST("hTrackPhiReco"), track.phi());
9741002
}
9751003
}
9761004
}

0 commit comments

Comments
 (0)