1313//
1414// Authors: Nima Zardoshti
1515
16+ #include < string>
17+
1618#include " Framework/ASoA.h"
1719#include " Framework/AnalysisDataModel.h"
1820#include " Framework/AnalysisTask.h"
@@ -101,12 +103,24 @@ struct JetFinderQATask {
101103 Configurable<float > triggeredJetsRadius{" triggeredJetsRadius" , 0.6 , " resolution parameter for triggered jets" };
102104 Configurable<float > vertexZCut{" vertexZCut" , 10 .0f , " Accepted z-vertex range" };
103105 Configurable<std::vector<double >> jetRadii{" jetRadii" , std::vector<double >{0.2 , 0.3 , 0.4 , 0.5 , 0.6 }, " jet resolution parameters" };
104- Configurable<float > etaMin{" etaMin" , -0.9 , " minimum eta acceptance" };
105- Configurable<float > etaMax{" etaMax" , 0.9 , " maximum eta acceptance" };
106+ Configurable<float > trackEtaMin{" trackEtaMin" , -0.9 , " minimum eta acceptance for tracks" };
107+ Configurable<float > trackEtaMax{" trackEtaMax" , 0.9 , " maximum eta acceptance for tracks" };
108+ Configurable<float > trackPtMin{" trackPtMin" , -0.9 , " minimum pT acceptance for tracks" };
109+ Configurable<float > trackPtMax{" trackPtMax" , 0.9 , " maximum pT acceptance for tracks" };
110+ Configurable<std::string> trackSelections{" trackSelections" , " globalTracks" , " set track selections" };
111+ std::string trackSelection;
112+ std::vector<double > minJetPt;
113+ std::vector<double > jetRadiiValues;
106114
107115 void init (o2::framework::InitContext&)
108116 {
117+ trackSelection = static_cast <std::string>(trackSelections);
118+ jetRadiiValues = (std::vector<double >)jetRadii;
119+ for (auto iJetRadius = 0 ; iJetRadius < jetRadiiValues.size (); iJetRadius++) {
120+ minJetPt.push_back (0.0 );
121+ }
109122 auto jetRadiiBins = (std::vector<double >)jetRadii;
123+ jetRadiiBins.push_back (jetRadiiBins[jetRadiiBins.size () - 1 ] + 0.1 );
110124 registry.add (" h3_jet_radius_jet_pt_collision" , " jet radius;#it{p}_{T,jet} (GeV/#it{c});collision trigger status" , {HistType::kTH3F , {{jetRadiiBins, " " }, {200 , 0 ., 200 .}, {2 , 0.0 , 2.0 }}});
111125 registry.add (" h3_jet_radius_jet_eta_collision" , " jet radius;#eta_{jet};collision trigger status" , {HistType::kTH3F , {{jetRadiiBins, " " }, {100 , -1.0 , 1.0 }, {2 , 0.0 , 2.0 }}});
112126 registry.add (" h3_jet_radius_jet_phi_collision" , " jet radius;#phi_{jet};collision trigger status" , {HistType::kTH3F , {{jetRadiiBins, " " }, {80 , -1.0 , 7 .}, {2 , 0.0 , 2.0 }}});
@@ -121,6 +135,23 @@ struct JetFinderQATask {
121135
122136 using JetTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection>;
123137
138+ template <typename T>
139+ bool selectTrack (T const & track)
140+ {
141+ if (trackSelection == " globalTracks" && !track.isGlobalTrackWoPtEta ()) {
142+ return false ;
143+ }
144+ if (trackSelection == " globalTracks" && (track.pt () < trackPtMin || track.pt () >= trackPtMax || track.eta () < trackEtaMin || track.eta () >= trackEtaMax)) {
145+ return false ;
146+ }
147+ if (trackSelection == " QualityTracks" && !track.isQualityTrack ()) {
148+ return false ;
149+ }
150+ if (trackSelection == " hybridTracksJE" && !track.trackCutFlagFb5 ()) { // isQualityTrack
151+ return false ;
152+ }
153+ return true ;
154+ }
124155 template <typename T>
125156 void fillHistograms (T const & jet, float weight = 1.0 )
126157 {
@@ -275,36 +306,52 @@ struct JetFinderQATask {
275306 if (collision.hasJetChHighPt () >= 1 )
276307 registry.fill (HIST (" h_collision_trigger_events" ), 3.5 ); // events with triggered jets
277308
309+ for (auto iJetRadius = 0 ; iJetRadius < jetRadiiValues.size (); iJetRadius++) {
310+ minJetPt[iJetRadius] = 0.0 ;
311+ }
278312 for (auto & jet : jets) {
279- for (float pt = jet.pt (); pt < 200.0 ; pt += 1.0 ) {
280- registry.fill (HIST (" h2_jet_radius_jet_pT_triggered" ), jet.r () / 100.0 , pt); // print out this line
313+ for (auto iJetRadius = 0 ; iJetRadius < jetRadiiValues.size (); iJetRadius++) {
314+ if (jet.r () == round (jetRadiiValues[iJetRadius] * 100 .0f )) {
315+ for (double pt = jet.pt (); pt > minJetPt[iJetRadius]; pt -= 1.0 ) {
316+ registry.fill (HIST (" h2_jet_radius_jet_pT_triggered" ), jet.r () / 100.0 , pt);
317+ }
318+ if (jet.pt () > minJetPt[iJetRadius]) {
319+ minJetPt[iJetRadius] = jet.pt ();
320+ }
321+ break ;
322+ }
281323 }
282- if ((jet.eta () < (etaMin + jet.r () / 100.0 )) || (jet.eta () < (etaMax - jet.r () / 100.0 )))
324+
325+ if ((jet.eta () < (trackEtaMin + jet.r () / 100.0 )) || (jet.eta () > (trackEtaMax - jet.r () / 100.0 ))) {
283326 continue ;
284- registry.fill (HIST (" h3_jet_radius_jet_pt_collision" ), jet.r () / 100.0 , jet.pt (), collision.hasJetChHighPt ()); // print out this line
285- registry.fill (HIST (" h3_jet_radius_jet_eta_collision" ), jet.r () / 100.0 , jet.eta (), collision.hasJetChHighPt ()); // print out this line
286- registry.fill (HIST (" h3_jet_radius_jet_phi_collision" ), jet.r () / 100.0 , jet.phi (), collision.hasJetChHighPt ()); // print out this line
327+ }
328+ registry.fill (HIST (" h3_jet_radius_jet_pt_collision" ), jet.r () / 100.0 , jet.pt (), collision.hasJetChHighPt ());
329+ registry.fill (HIST (" h3_jet_radius_jet_eta_collision" ), jet.r () / 100.0 , jet.eta (), collision.hasJetChHighPt ());
330+ registry.fill (HIST (" h3_jet_radius_jet_phi_collision" ), jet.r () / 100.0 , jet.phi (), collision.hasJetChHighPt ());
287331
288332 for (auto & constituent : jet.template tracks_as <JetTracks>()) {
289- registry.fill (HIST (" h3_jet_radius_jet_pt_track_pt_MB" ), jet.r () / 100.0 , jet.pt (), constituent.pt ()); // print out this line
290- registry.fill (HIST (" h3_jet_radius_jet_pt_track_eta_MB" ), jet.r () / 100.0 , jet.pt (), constituent.eta ()); // print out this line
291- registry.fill (HIST (" h3_jet_radius_jet_pt_track_phi_MB" ), jet.r () / 100.0 , jet.pt (), constituent.phi ()); // print out this line
333+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_pt_MB" ), jet.r () / 100.0 , jet.pt (), constituent.pt ());
334+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_eta_MB" ), jet.r () / 100.0 , jet.pt (), constituent.eta ());
335+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_phi_MB" ), jet.r () / 100.0 , jet.pt (), constituent.phi ());
292336 if (collision.hasJetChHighPt () >= 1 ) {
293- registry.fill (HIST (" h3_jet_radius_jet_pt_track_pt_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.pt ()); // print out this line
294- registry.fill (HIST (" h3_jet_radius_jet_pt_track_eta_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.eta ()); // print out this line
295- registry.fill (HIST (" h3_jet_radius_jet_pt_track_phi_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.phi ()); // print out this line
337+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_pt_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.pt ());
338+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_eta_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.eta ());
339+ registry.fill (HIST (" h3_jet_radius_jet_pt_track_phi_Triggered" ), jet.r () / 100.0 , jet.pt (), constituent.phi ());
296340 }
297341 }
298342 }
299343
300344 for (auto & track : tracks) {
301- registry.fill (HIST (" h_track_pt_MB" ), track.pt ()); // print out this line
302- registry.fill (HIST (" h_track_eta_MB" ), track.eta ()); // print out this line
303- registry.fill (HIST (" h_track_phi_MB" ), track.phi ()); // print out this line
345+ if (!selectTrack (track)) {
346+ continue ;
347+ }
348+ registry.fill (HIST (" h_track_pt_MB" ), track.pt ());
349+ registry.fill (HIST (" h_track_eta_MB" ), track.eta ());
350+ registry.fill (HIST (" h_track_phi_MB" ), track.phi ());
304351 if (collision.hasJetChHighPt () >= 1 ) {
305- registry.fill (HIST (" h_track_pt_Triggered" ), track.pt ()); // print out this line
306- registry.fill (HIST (" h_track_eta_Triggered" ), track.eta ()); // print out this line
307- registry.fill (HIST (" h_track_phi_Triggered" ), track.phi ()); // print out this line
352+ registry.fill (HIST (" h_track_pt_Triggered" ), track.pt ());
353+ registry.fill (HIST (" h_track_eta_Triggered" ), track.eta ());
354+ registry.fill (HIST (" h_track_phi_Triggered" ), track.phi ());
308355 }
309356 }
310357 }
0 commit comments