3535#include < Framework/InitContext.h>
3636#include < Framework/Logger.h>
3737#include < Framework/O2DatabasePDGPlugin.h>
38- #include < Framework/O2DatabasePDGPlugin.h>
3938#include < Framework/OutputObjHeader.h>
4039#include < Framework/runDataProcessing.h>
4140
@@ -61,7 +60,6 @@ using namespace o2::framework;
6160using namespace o2 ::framework::expressions;
6261
6362struct JetSpectraEseTask {
64- Configurable<std::string> cfgEfficiency{" cfgEfficiency" , " " , " CCDB path to efficiency" };
6563 Configurable<std::string> cfgEfficiency{" cfgEfficiency" , " " , " CCDB path to efficiency" };
6664 Configurable<float > jetPtMin{" jetPtMin" , 5.0 , " minimum jet pT cut" };
6765 Configurable<float > jetR{" jetR" , 0.2 , " jet resolution parameter" };
@@ -149,12 +147,6 @@ struct JetSpectraEseTask {
149147 bool isLoaded = false ;
150148 } cfg;
151149
152- Service<ccdb::BasicCCDBManager> ccdb;
153- struct Efficiency {
154- TH1D* hEff = nullptr ;
155- bool isLoaded = false ;
156- } cfg;
157-
158150 Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
159151 Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * Scaler) && nabs(aod::jet::eta) < Acceptance - jetR;
160152 Filter colFilter = nabs(aod::jcollision::posZ) < vertexZCut;
@@ -163,13 +155,11 @@ struct JetSpectraEseTask {
163155 Preslice<ChargedMCDJets> mcdjetsPerJCollision = o2::aod::jet::collisionId;
164156 Preslice<aod::JetTracks> tracksPerJCollision = o2::aod::jtrack::collisionId;
165157 Preslice<aod::JetTracksMCD> mcdTracksPerJCollision = o2::aod::jtrack::collisionId;
166- Preslice<aod::JetParticles> particlesPerJMcCollision = o2::aod::jmcparticle::mcCollisionId;
167158
168159 SliceCache cache;
169160 using BinningType = ColumnBinningPolicy<aod::jcollision::PosZ, aod::jcollision::CentFT0C>;
170161 BinningType corrBinning{{binsZVtx, binsCentrality}, true };
171162 Service<o2::framework::O2DatabasePDG> pdg;
172- Service<o2::framework::O2DatabasePDG> pdg;
173163
174164 enum class DetID { FT0C,
175165 FT0A,
@@ -420,19 +410,20 @@ struct JetSpectraEseTask {
420410 }
421411 if (doprocessMCGenTrack) {
422412 LOGF (info, " JetSpectraEseTask::init() - MCGen track" );
423- registry.add (" hTrackPtGen" , " " , {HistType::kTH1F , {{assocTrackPt}}});
424- registry.add (" hTrackEtaGen" , " " , {HistType::kTH1F , {{etaAxis}}});
425- registry.add (" hTrackPhiGen" , " " , {HistType::kTH1F , {{phiAxis}}});
413+ registry.add (" mcgen/ hTrackPtGen" , " " , {HistType::kTH1F , {{assocTrackPt}}});
414+ registry.add (" mcgen/ hTrackEtaGen" , " " , {HistType::kTH1F , {{etaAxis}}});
415+ registry.add (" mcgen/ hTrackPhiGen" , " " , {HistType::kTH1F , {{phiAxis}}});
426416 }
427417 if (doprocessMCRecoTrack) {
428418 LOGF (info, " JetSpectraEseTask::init() - MCRec track" );
429- registry.add (" hTrackPtReco" , " " , {HistType::kTH1F , {{assocTrackPt}}});
430- registry.add (" hTrackEtaReco" , " " , {HistType::kTH1F , {{etaAxis}}});
431- registry.add (" hTrackPhiReco" , " " , {HistType::kTH1F , {{phiAxis}}});
419+ registry.add (" mcrec/ hTrackPtReco" , " " , {HistType::kTH1F , {{assocTrackPt}}});
420+ registry.add (" mcrec/ hTrackEtaReco" , " " , {HistType::kTH1F , {{etaAxis}}});
421+ registry.add (" mcrec/ hTrackPhiReco" , " " , {HistType::kTH1F , {{phiAxis}}});
432422 }
433423 }
434424
435- void loadEfficiency (aod::BCsWithTimestamps::iterator const & bc)
425+ template <typename TBC>
426+ void loadEfficiency (TBC const & bc)
436427 {
437428 uint64_t timestamp = bc.timestamp ();
438429 if (cfg.isLoaded ) {
@@ -534,24 +525,15 @@ struct JetSpectraEseTask {
534525 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
535526 continue ;
536527 double weff = getEfficiency (track);
537- if (weff < 0 )
538- continue ;
539- double weff = getEfficiency (track);
540528 if (weff < 0 )
541529 continue ;
542530 auto deta = track.eta () - jet.eta ();
543531 auto dphi = RecoDecay::constrainAngle (track.phi () - jet.phi (), -o2::constants::math::PIHalf);
544532 registry.fill (HIST (" thn_jethad_corr_same" ), centrality, vCorrL, track.pt (), deta, dphi, dPhi, qPerc[0 ], weff);
545533 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);
548534 }
549535 }
550536 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);
555537 double weff = getEfficiency (track);
556538 if (weff < 0 )
557539 continue ;
@@ -561,7 +543,6 @@ struct JetSpectraEseTask {
561543 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
562544 continue ;
563545 registry.fill (HIST (" trackQA/after/hTrackPt" ), centrality, track.pt (), weff);
564- registry.fill (HIST (" trackQA/after/hTrackPt" ), centrality, track.pt (), weff);
565546 registry.fill (HIST (" trackQA/after/hTrackEta" ), centrality, track.eta ());
566547 registry.fill (HIST (" trackQA/after/hTrackPhi" ), centrality, track.phi ());
567548 registry.fill (HIST (" h3CenttrPhiPsi2" ), centrality, RecoDecay::constrainAngle (track.phi () - psi.psi2 , -o2::constants::math::PI), qPerc[0 ]);
@@ -576,9 +557,8 @@ struct JetSpectraEseTask {
576557 auto tracksTuple = std::make_tuple (jets, tracks);
577558 Pair<TCollisions, TJets, TTracks, BinningType> pairData{corrBinning, numberEventsMixed, -1 , collisions, tracksTuple, &cache};
578559
579-
580560 for (const auto & [c1, jets1, c2, tracks2] : pairData) {
581- auto bc = c2.template bc_as <aod::BCsWithTimestamps >();
561+ auto bc = c2.template bc_as <aod::JBCs >();
582562 loadEfficiency (bc);
583563 auto c1Tracks = tracks.sliceBy (tracksPerJCollision, c1.globalIndex ());
584564 registry.fill (HIST (" eventQA/before/hVtxZMixed" ), c1.posZ ());
@@ -638,29 +618,20 @@ struct JetSpectraEseTask {
638618 auto vCorrL = cfgrhoPhi ? corrL (jet) : vCorr;
639619 float dPhi{RecoDecay::constrainAngle (jet.phi () - psi.psi2 , -o2::constants::math::PI)};
640620
641- registry.fill (HIST (" hNtrigMixed" ), centrality, vCorrL, dPhi, qPerc[0 ]);
642621 registry.fill (HIST (" hNtrigMixed" ), centrality, vCorrL, dPhi, qPerc[0 ]);
643622 for (const auto & track : tracks2) {
644623 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
645624 continue ;
646625 double weff = getEfficiency (track);
647- if (weff < 0 )
648- continue ;
649- double weff = getEfficiency (track);
650626 if (weff < 0 )
651627 continue ;
652628 auto deta = track.eta () - jet.eta ();
653629 auto dphi = RecoDecay::constrainAngle (track.phi () - jet.phi (), -o2::constants::math::PIHalf);
654630 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);
656631 }
657632 }
658633
659634 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);
664635 double weff = getEfficiency (track);
665636 if (weff < 0 )
666637 continue ;
@@ -670,7 +641,6 @@ struct JetSpectraEseTask {
670641 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
671642 continue ;
672643 registry.fill (HIST (" trackQA/after/hTrackPtMixed" ), centrality, track.pt (), weff);
673- registry.fill (HIST (" trackQA/after/hTrackPtMixed" ), centrality, track.pt (), weff);
674644 registry.fill (HIST (" trackQA/after/hTrackEtaMixed" ), centrality, track.eta ());
675645 registry.fill (HIST (" trackQA/after/hTrackPhiMixed" ), centrality, track.phi ());
676646 }
@@ -679,7 +649,7 @@ struct JetSpectraEseTask {
679649
680650 void processESEDataCharged (soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs>::iterator const & collision,
681651 soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const & jets,
682- aod::JetTracks const & tracks, aod::BCsWithTimestamps const &)
652+ aod::JetTracks const & tracks, aod::JBCs const &)
683653 {
684654 registry.fill (HIST (" eventQA/hEventCounter" ), kFilteredInputEv );
685655 registry.fill (HIST (" eventQA/before/hVtxZ" ), collision.posZ ());
@@ -691,15 +661,15 @@ struct JetSpectraEseTask {
691661 return ;
692662 registry.fill (HIST (" eventQA/hEventCounter" ), kOccupancyCut );
693663
694- auto bc = collision.bc_as <aod::BCsWithTimestamps >();
664+ auto bc = collision.bc_as <aod::JBCs >();
695665 loadEfficiency (bc);
696666 jetSpectra (collision, jets, tracks);
697667 }
698668 PROCESS_SWITCH (JetSpectraEseTask, processESEDataCharged, " process ese collisions" , true );
699669
700670 void processESEDataChargedMixed (soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs> const & collisions,
701671 soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const & jets,
702- aod::JetTracks const & tracks, aod::BCsWithTimestamps const &)
672+ aod::JetTracks const & tracks, aod::JBCs const &)
703673 {
704674 jetMixed (collisions, jets, tracks);
705675 }
@@ -916,8 +886,10 @@ struct JetSpectraEseTask {
916886 return ;
917887 }
918888
919- auto particlesInCollision = particles.sliceBy (particlesPerJMcCollision, mcCollision.globalIndex ());
920- for (const auto & particle : particlesInCollision) {
889+ for (const auto & particle : particles) {
890+ if (particle.mcCollisionId () != mcCollision.globalIndex ()) {
891+ continue ;
892+ }
921893 if (!isChargedParticle (particle.pdgCode ())) {
922894 continue ;
923895 }
@@ -931,9 +903,9 @@ struct JetSpectraEseTask {
931903 continue ;
932904 }
933905
934- registry.fill (HIST (" hTrackPtGen" ), particle.pt ());
935- registry.fill (HIST (" hTrackEtaGen" ), particle.eta ());
936- registry.fill (HIST (" hTrackPhiGen" ), particle.phi ());
906+ registry.fill (HIST (" mcgen/ hTrackPtGen" ), particle.pt ());
907+ registry.fill (HIST (" mcgen/ hTrackEtaGen" ), particle.eta ());
908+ registry.fill (HIST (" mcgen/ hTrackPhiGen" ), particle.phi ());
937909 }
938910 }
939911 PROCESS_SWITCH (JetSpectraEseTask, processMCGenTrack, " jet MC process: Generated track" , false );
@@ -996,9 +968,9 @@ struct JetSpectraEseTask {
996968 }
997969 seenMcParticles.push_back (particle.globalIndex ());
998970
999- registry.fill (HIST (" hTrackPtReco" ), track.pt ());
1000- registry.fill (HIST (" hTrackEtaReco" ), track.eta ());
1001- registry.fill (HIST (" hTrackPhiReco" ), track.phi ());
971+ registry.fill (HIST (" mcrec/ hTrackPtReco" ), track.pt ());
972+ registry.fill (HIST (" mcrec/ hTrackEtaReco" ), track.eta ());
973+ registry.fill (HIST (" mcrec/ hTrackPhiReco" ), track.phi ());
1002974 }
1003975 }
1004976 }
@@ -1510,4 +1482,4 @@ struct JetSpectraEseTask {
15101482 return true ;
15111483 }
15121484};
1513- WorkflowSpec defineDataProcessing (ConfigContext const & cfgc) { return WorkflowSpec{adaptAnalysisTask<JetSpectraEseTask>(cfgc)}; }
1485+ WorkflowSpec defineDataProcessing (ConfigContext const & cfgc) { return WorkflowSpec{adaptAnalysisTask<JetSpectraEseTask>(cfgc)}; }
0 commit comments