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;
6061using namespace o2 ::framework::expressions;
6162
6263struct 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