@@ -91,6 +91,12 @@ struct JetSpectraEseTask {
9191 Configurable<float > trackEtaMax{" trackEtaMax" , 0.9 , " maximum eta acceptance for tracks" };
9292 Configurable<float > trackPtMin{" trackPtMin" , 0.15 , " minimum pT acceptance for tracks" };
9393 Configurable<float > trackPtMax{" trackPtMax" , 200.0 , " maximum pT acceptance for tracks" };
94+ Configurable<float > trackDCAzMax{" trackDCAzMax" , 2.0 , " maximum DCAz for tracks" };
95+ Configurable<float > cfgNTPCXrows{" cfgNTPCXrows" , 70 , " minimum number of crossed rows in the TPC for tracks" };
96+ Configurable<float > cfgNTPCCls{" cfgNTPCCls" , 50 , " minimum number of clusters in the TPC for tracks" };
97+ Configurable<float > cfgChi2PrTPCcls{" cfgChi2PrTPCcls" , 2.5 , " cut for chi2 per TPC cluster for tracks" };
98+ Configurable<float > cfgChi2PrITScls{" cfgChi2PrITScls" , 36 , " cut for chi2 per ITS cluster for tracks" };
99+
94100 Configurable<float > trackPtMinRhoPhi{" trackPtMinRhoPhi" , 0.2 , " minimum pT acceptance for tracks used in rho(phi) calculation" };
95101 Configurable<float > trackPtMaxRhoPhi{" trackPtMaxRhoPhi" , 5.0 , " maximum pT acceptance for tracks used in rho(phi) calculation" };
96102
@@ -137,13 +143,16 @@ struct JetSpectraEseTask {
137143 ConfigurableAxis binsCentrality{" binsCentrality" , {VARIABLE_WIDTH, 0.0 , 10 ., 30 ., 50 , 70 ., 100 .}, " Mixing bins - centrality" };
138144 ConfigurableAxis binsZVtx{" binsZVtx" , {VARIABLE_WIDTH, -10 .0f , -2 .5f , 2 .5f , 10 .0f }, " Mixing bins - z-vertex" };
139145
146+ Configurable<bool > applyRCTSelections{" applyRCTSelections" , true , " apply RCT selections" };
147+ Configurable<bool > skipMBGapEvents{" skipMBGapEvents" , false , " flag to choose to reject min. bias gap events" };
148+
140149 HistogramRegistry registry{" registry" , {}, OutputObjHandlingPolicy::AnalysisObject, false , false };
141150
142151 std::vector<int > eventSelectionBits;
143152 int trackSelection{-1 };
144153
145- static constexpr float Scaler = 100 .0f ;
146- static constexpr float Acceptance = 0 .9f ;
154+ static constexpr float RScale = 100 .0f ;
155+ static constexpr float EtaAcceptance = 0 .9f ;
147156 static constexpr float LowFT0Cut = 1e-8 ;
148157
149158 Service<ccdb::BasicCCDBManager> ccdb;
@@ -155,13 +164,15 @@ struct JetSpectraEseTask {
155164 } cfg;
156165
157166 Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
158- Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * Scaler ) && nabs(aod::jet::eta) < Acceptance - jetR;
167+ Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * RScale ) && nabs(aod::jet::eta) < EtaAcceptance - jetR;
159168 Filter colFilter = nabs(aod::jcollision::posZ) < vertexZCut;
160169 Filter mcCollisionFilter = nabs(aod::jmccollision::posZ) < vertexZCut;
161170 using ChargedMCDJets = soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets, aod::ChargedMCDetectorLevelJetEventWeights>>;
162171 Preslice<ChargedMCDJets> mcdjetsPerJCollision = o2::aod::jet::collisionId;
163172 Preslice<aod::JetTracks> tracksPerJCollision = o2::aod::jtrack::collisionId;
164173 Preslice<aod::JetTracksMCD> mcdTracksPerJCollision = o2::aod::jtrack::collisionId;
174+
175+ using ETracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection>;
165176
166177 SliceCache cache;
167178 using BinningType = ColumnBinningPolicy<aod::jcollision::PosZ, aod::jcollision::CentFT0C>;
@@ -551,6 +562,8 @@ struct JetSpectraEseTask {
551562 for (const auto & track : tracks) {
552563 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
553564 continue ;
565+ if (!isTrackSelected (track.template track_as <ETracks>()))
566+ continue ;
554567 double weff = getEfficiency (track, collision.posZ ());
555568 if (weff < 0 )
556569 continue ;
@@ -569,6 +582,8 @@ struct JetSpectraEseTask {
569582 registry.fill (HIST (" trackQA/before/hTrackPhi" ), centrality, track.phi ());
570583 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
571584 continue ;
585+ if (!isTrackSelected (track.template track_as <ETracks>()))
586+ continue ;
572587 registry.fill (HIST (" trackQA/after/hTrackPt" ), centrality, track.pt (), weff);
573588 registry.fill (HIST (" trackQA/after/hTrackEta" ), centrality, track.eta ());
574589 registry.fill (HIST (" trackQA/after/hTrackPhi" ), centrality, track.phi ());
@@ -591,9 +606,9 @@ struct JetSpectraEseTask {
591606 registry.fill (HIST (" eventQA/before/hVtxZMixed" ), c1.posZ ());
592607 registry.fill (HIST (" eventQA/before/hVtxZMixed2" ), c2.posZ ());
593608 registry.fill (HIST (" eventQA/hEventCounterMixed" ), kFilteredInputEv );
594- if (!jetderiveddatautilities::selectCollision (c1, eventSelectionBits))
609+ if (!jetderiveddatautilities::selectCollision (c1, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
595610 continue ;
596- if (!jetderiveddatautilities::selectCollision (c2, eventSelectionBits))
611+ if (!jetderiveddatautilities::selectCollision (c2, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
597612 continue ;
598613 registry.fill (HIST (" eventQA/hEventCounterMixed" ), kEventSel );
599614 if (cfgEvSelOccupancy && !isOccupancyAccepted (c1))
@@ -649,6 +664,8 @@ struct JetSpectraEseTask {
649664 for (const auto & track : tracks2) {
650665 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
651666 continue ;
667+ if (!isTrackSelected (track.template track_as <ETracks>()))
668+ continue ;
652669 double weff = getEfficiency (track, c2.posZ ());
653670 if (weff < 0 )
654671 continue ;
@@ -667,6 +684,8 @@ struct JetSpectraEseTask {
667684 registry.fill (HIST (" trackQA/before/hTrackPhiMixed" ), centrality, track.phi ());
668685 if (!jetderiveddatautilities::selectTrack (track, trackSelection))
669686 continue ;
687+ if (!isTrackSelected (track.template track_as <ETracks>()))
688+ continue ;
670689 registry.fill (HIST (" trackQA/after/hTrackPtMixed" ), centrality, track.pt (), weff);
671690 registry.fill (HIST (" trackQA/after/hTrackEtaMixed" ), centrality, track.eta ());
672691 registry.fill (HIST (" trackQA/after/hTrackPhiMixed" ), centrality, track.phi ());
@@ -676,11 +695,11 @@ struct JetSpectraEseTask {
676695
677696 void processESEDataCharged (soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs>::iterator const & collision,
678697 soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const & jets,
679- aod::JetTracks const & tracks, aod::JBCs const &)
698+ soa::Join< aod::JetTracks, aod::JTrackPIs> const & tracks, aod::JBCs const &, ETracks const &)
680699 {
681700 registry.fill (HIST (" eventQA/hEventCounter" ), kFilteredInputEv );
682701 registry.fill (HIST (" eventQA/before/hVtxZ" ), collision.posZ ());
683- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits))
702+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
684703 return ;
685704 registry.fill (HIST (" eventQA/hEventCounter" ), kEventSel );
686705
@@ -696,7 +715,7 @@ struct JetSpectraEseTask {
696715
697716 void processESEDataChargedMixed (soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs> const & collisions,
698717 soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const & jets,
699- aod::JetTracks const & tracks, aod::JBCs const &)
718+ soa::Join< aod::JetTracks, aod::JTrackPIs> const & tracks, aod::JBCs const &, ETracks const &)
700719 {
701720 jetMixed (collisions, jets, tracks);
702721 }
@@ -707,7 +726,7 @@ struct JetSpectraEseTask {
707726 aod::JetTracks const &)
708727 {
709728
710- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits))
729+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
711730 return ;
712731
713732 if (cfgEvSelOccupancy && !isOccupancyAccepted (collision))
@@ -737,7 +756,7 @@ struct JetSpectraEseTask {
737756 registry.fill (HIST (" hPsiOccupancy" ), collision.centFT0M (), psi.psi2 , occupancy);
738757 registry.fill (HIST (" hOccupancy" ), collision.centFT0M (), occupancy);
739758
740- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits))
759+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
741760 return ;
742761 registry.fill (HIST (" hEventCounterOcc" ), count++);
743762 registry.fill (HIST (" hOccupancyEv" ), collision.centFT0M (), occupancy);
@@ -788,7 +807,7 @@ struct JetSpectraEseTask {
788807 centrality = col.centFT0M ();
789808 if (cfgEvSelOccupancy && !isOccupancyAccepted (col))
790809 fOccupancy = false ;
791- if (!jetderiveddatautilities::selectCollision (col, eventSelectionBits))
810+ if (!jetderiveddatautilities::selectCollision (col, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
792811 eventSel = false ;
793812 }
794813 if (cfgEvSelOccupancy && !fOccupancy )
@@ -814,7 +833,7 @@ struct JetSpectraEseTask {
814833 {
815834 float counter{0 .5f };
816835 registry.fill (HIST (" mcd/hEventCounter" ), counter++);
817- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits))
836+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
818837 return ;
819838 registry.fill (HIST (" mcd/hEventCounter" ), counter++);
820839 if (cfgEvSelOccupancy && !isOccupancyAccepted (collision))
@@ -863,7 +882,7 @@ struct JetSpectraEseTask {
863882 }
864883 registry.fill (HIST (" mcm/hMCDMatchedEventCounter" ), secCount++);
865884
866- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits))
885+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections ))
867886 return ;
868887 registry.fill (HIST (" mcm/hMCDMatchedEventCounter" ), secCount++);
869888
@@ -911,7 +930,7 @@ struct JetSpectraEseTask {
911930 if (!(std::abs (collision.posZ ()) < vertexZCut)) {
912931 return ;
913932 }
914- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
933+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections )) {
915934 return ;
916935 }
917936 if (cfgEvSelOccupancy && !isOccupancyAccepted (collision)) {
@@ -949,8 +968,8 @@ struct JetSpectraEseTask {
949968 PROCESS_SWITCH (JetSpectraEseTask, processMCGenTrack, " jet MC process: Generated track" , false );
950969 void processMCRecoTrack (soa::Filtered<soa::Join<aod::JetMcCollisions, aod::BkgChargedMcRhos>>::iterator const & mcCollision,
951970 soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
952- aod::JetTracksMCD const & tracks,
953- aod::JetParticles const &)
971+ soa::Join< aod::JetTracksMCD, aod::JTrackPIs> const & tracks,
972+ aod::JetParticles const &, ETracks const & )
954973 {
955974 if (mcCollision.size () < 1 ) {
956975 return ;
@@ -967,7 +986,7 @@ struct JetSpectraEseTask {
967986 if (!(std::abs (collision.posZ ()) < vertexZCut)) {
968987 continue ;
969988 }
970- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
989+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections )) {
971990 continue ;
972991 }
973992 if (cfgEvSelOccupancy && !isOccupancyAccepted (collision)) {
@@ -984,6 +1003,9 @@ struct JetSpectraEseTask {
9841003 if (!jetderiveddatautilities::selectTrack (track, trackSelection)) {
9851004 continue ;
9861005 }
1006+ if (!isTrackSelected (track.template track_as <ETracks>())) {
1007+ continue ;
1008+ }
9871009 if (!track.has_mcParticle ()) {
9881010 continue ;
9891011 }
@@ -1237,7 +1259,7 @@ struct JetSpectraEseTask {
12371259 template <typename TCollisions, typename TJets, typename TTracks>
12381260 void bkgFluctuationsRandomCone (TCollisions const & collision, TJets const & jets, TTracks const & tracks)
12391261 {
1240- if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
1262+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections )) {
12411263 return ;
12421264 }
12431265 if (cfgEvSelOccupancy && !isOccupancyAccepted (collision))
@@ -1484,6 +1506,35 @@ struct JetSpectraEseTask {
14841506 }
14851507 return true ;
14861508 }
1509+ template <bool fill=false , typename TTrack>
1510+ bool isTrackSelected (TTrack const & track)
1511+ {
1512+ // if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
1513+ // return false;
1514+ // }
1515+ if (track.pt () < trackPtMin || track.pt () >= trackPtMax) {
1516+ return false ;
1517+ }
1518+ if (track.eta () <= trackEtaMin || track.eta () >= trackEtaMax) {
1519+ return false ;
1520+ }
1521+ if (track.tpcNClsCrossedRows () <= cfgNTPCXrows) {
1522+ return false ;
1523+ }
1524+ if (track.tpcNClsFound () <= cfgNTPCCls) {
1525+ return false ;
1526+ }
1527+ if (std::fabs (track.dcaZ ()) >= trackDCAzMax) {
1528+ return false ;
1529+ }
1530+ if (track.tpcChi2NCl () > cfgChi2PrTPCcls) {
1531+ return false ;
1532+ }
1533+ if (track.itsChi2NCl () > cfgChi2PrITScls) {
1534+ return false ;
1535+ }
1536+ return true ;
1537+ }
14871538
14881539 template <typename TTracks, typename TJets>
14891540 bool isAcceptedJet (TJets const & jet, bool mcLevelIsParticleLevel = false )
@@ -1520,5 +1571,5 @@ struct JetSpectraEseTask {
15201571 }
15211572 return true ;
15221573 }
1523- };
1574+ };
15241575WorkflowSpec defineDataProcessing (ConfigContext const & cfgc) { return WorkflowSpec{adaptAnalysisTask<JetSpectraEseTask>(cfgc)}; }
0 commit comments