1717#include " PWGJE/DataModel/Jet.h"
1818#include " PWGJE/DataModel/JetReducedData.h"
1919
20+ #include " Common/Core/TrackSelection.h"
21+ #include " Common/Core/TrackSelectionDefaults.h"
22+ #include " Common/DataModel/TrackSelectionTables.h"
23+
2024#include < Framework/ASoA.h>
2125#include < Framework/AnalysisDataModel.h>
2226#include < Framework/AnalysisHelpers.h>
@@ -54,9 +58,6 @@ DECLARE_SOA_COLUMN(E, e, float);
5458DECLARE_SOA_TABLE (SlimTracks, " AOD" , " SlimTracks" ,
5559 o2::soa::Index<>,
5660 slimtracks::SlimCollisionId,
57- slimtracks::Pt,
58- slimtracks::Eta,
59- slimtracks::Phi,
6061 slimtracks::Px,
6162 slimtracks::Py,
6263 slimtracks::Pz,
@@ -75,9 +76,6 @@ DECLARE_SOA_COLUMN(Pz, pz, float);
7576DECLARE_SOA_TABLE (SlimParticles, " AOD" , " SlimParticles" ,
7677 o2::soa::Index<>,
7778 slimparticles::SlMcCollisionId,
78- slimparticles::Pt,
79- slimparticles::Eta,
80- slimparticles::Phi,
8179 slimparticles::Px,
8280 slimparticles::Py,
8381 slimparticles::Pz);
@@ -99,11 +97,15 @@ struct SlimTablesProducer {
9997 Configurable<float > minEta{" minEta" , -0.9 , " min eta to save" };
10098 Configurable<float > maxEta{" maxEta" , 0.9 , " max eta to save" };
10199 Configurable<float > vertexZCut{" vertexZCut" , 10 .0f , " Accepted z-vertex range" };
100+ Configurable<float > trackDcaZmax{" trackDcaZmax" , 99 , " additional cut on dcaZ to PV for tracks; uniformTracks in particular don't cut on this at all" };
102101 Configurable<std::string> eventSelections{" eventSelections" , " sel8" , " Event selection" };
102+ Configurable<std::string> trackSelections{" trackSelections" , " globalTracks" , " set track selections; other option: uniformTracks" };
103+ Configurable<int > minTPCNClsCrossedRows{" minTPCNClsCrossedRows" , 80 , " min TPC crossed rows" };
103104 Configurable<bool > skipMBGapEvents{" skipMBGapEvents" , false , " flag to choose to reject min. bias gap events; jet-level rejection can also be applied at the jet finder level for jets only, here rejection is applied for collision and track process functions for the first time, and on jets in case it was set to false at the jet finder level" };
104105 Configurable<bool > applyRCTSelections{" applyRCTSelections" , true , " decide to apply RCT selections" };
105106
106107 std::vector<int > eventSelectionBits;
108+ int trackSelection = -1 ;
107109 bool doSumw2 = false ;
108110
109111 void init (InitContext&)
@@ -134,6 +136,7 @@ struct SlimTablesProducer {
134136 hMCP->GetXaxis ()->SetBinLabel (5 , " eventSelectionMC" );
135137
136138 eventSelectionBits = jetderiveddatautilities::initialiseEventSelectionBits (static_cast <std::string>(eventSelections));
139+ trackSelection = jetderiveddatautilities::initialiseTrackSelection (static_cast <std::string>(trackSelections));
137140 }
138141
139142 Produces<o2::aod::SlimCollisions> slimCollisions;
@@ -149,7 +152,8 @@ struct SlimTablesProducer {
149152 Filter particleCuts = (aod::jmcparticle::pt >= minPt && aod::jmcparticle::pt < maxPt && aod::jmcparticle::eta > minEta && aod::jmcparticle::eta < maxEta);
150153
151154 void processData (soa::Filtered<o2::aod::JetCollisions>::iterator const & collision,
152- soa::Filtered<soa::Join<aod::JetTracks, aod::JTrackExtras, aod::JTrackPIs>> const & tracks)
155+ soa::Filtered<soa::Join<aod::JetTracks, aod::JTrackExtras, aod::JTrackPIs>> const & tracks,
156+ soa::Join<aod::Tracks, aod::TracksExtra, o2::aod::TracksDCA> const &)
153157 {
154158 histos.fill (HIST (" h_collisions" ), 0.5 );
155159 float centrality = -1.0 ;
@@ -163,19 +167,27 @@ struct SlimTablesProducer {
163167 slimCollisions (collision.posZ ());
164168 auto slimCollIndex = slimCollisions.lastIndex ();
165169 for (const auto & track : tracks) {
170+ if (!jetderiveddatautilities::selectTrack (track, trackSelection) && jetderiveddatautilities::selectTrackDcaZ (track, trackDcaZmax)) {
171+ continue ;
172+ }
173+ const auto & aodTrack = track.track_as <soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>>();
174+ if (aodTrack.tpcNClsCrossedRows () < minTPCNClsCrossedRows) {
175+ continue ; // remove badly tracked
176+ }
166177 float mass = jetderiveddatautilities::mPion ;
167178 float p = track.pt () * std::cosh (track.eta ());
168179 float energy = std::sqrt (p * p + mass * mass);
169- slimTracks (slimCollIndex, track.pt (), track. eta (), track. phi (), track. px (), track.py (), track.pz (), energy);
180+ slimTracks (slimCollIndex, track.px (), track.py (), track.pz (), energy);
170181 }
171182 }
172183 PROCESS_SWITCH (SlimTablesProducer, processData, " process collisions and tracks for Data and MCD" , false );
173184
174185 void processMCD (soa::Filtered<aod::JetCollisionsMCD>::iterator const & collision,
175- soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const &, // join the weight
176- soa::Filtered<soa::Join<aod::JetTracks, aod::JTrackExtras, aod::JTrackPIs>> const & tracks)
186+ soa::Filtered<aod::JetMcCollisions> const &, // join the weight
187+ soa::Filtered<soa::Join<aod::JetTracksMCD, aod::JTrackExtras, aod::JTrackPIs>> const & tracks,
188+ soa::Join<aod::Tracks, aod::TracksExtra, o2::aod::TracksDCA> const &)
177189 {
178- float eventWeight = collision.mcCollision_as <soa::Join< aod::JetMcCollisions, aod::JMcCollisionPIs> >().weight ();
190+ float eventWeight = collision.mcCollision_as <aod::JetMcCollisions>().weight ();
179191 histos.fill (HIST (" h_mcCollMCD_counts_weight" ), 0.5 , eventWeight);
180192
181193 float centrality = -1.0 ;
@@ -189,13 +201,20 @@ struct SlimTablesProducer {
189201 return ;
190202 }
191203 histos.fill (HIST (" h_mcCollMCD_counts_weight" ), 1.5 , eventWeight);
192- auto slimCollIndex = slimCollisions.lastIndex ();
193204 slimCollisions (collision.posZ ());
205+ auto slimCollIndex = slimCollisions.lastIndex ();
194206 for (const auto & track : tracks) {
207+ if (!jetderiveddatautilities::selectTrack (track, trackSelection) && jetderiveddatautilities::selectTrackDcaZ (track, trackDcaZmax)) {
208+ continue ;
209+ }
210+ const auto & aodTrack = track.track_as <soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>>();
211+ if (aodTrack.tpcNClsCrossedRows () < minTPCNClsCrossedRows) {
212+ continue ; // remove badly tracked
213+ }
195214 float mass = jetderiveddatautilities::mPion ;
196215 float p = track.pt () * std::cosh (track.eta ());
197216 float energy = std::sqrt (p * p + mass * mass);
198- slimTracks (slimCollIndex, track.pt (), track. eta (), track. phi (), track. px (), track.py (), track.pz (), energy);
217+ slimTracks (slimCollIndex, track.px (), track.py (), track.pz (), energy);
199218 }
200219 }
201220 PROCESS_SWITCH (SlimTablesProducer, processMCD, " process collisions and tracks for MCD" , false );
@@ -230,10 +249,10 @@ struct SlimTablesProducer {
230249 return ;
231250 }
232251 histos.fill (HIST (" h_mcCollMCP_counts_weight" ), 4.5 , eventWeight);
233- auto slimMcCollIndex = slimMcCollisions.lastIndex ();
234252 slimMcCollisions (mcCollision.posZ ());
253+ auto slimMcCollIndex = slimMcCollisions.lastIndex ();
235254 for (const auto & particle : particles) {
236- slimParticles (slimMcCollIndex, particle.pt (), particle. eta (), particle. phi (), particle. px (), particle.py (), particle.pz ());
255+ slimParticles (slimMcCollIndex, particle.px (), particle.py (), particle.pz ());
237256 }
238257 }
239258 PROCESS_SWITCH (SlimTablesProducer, processMCP, " process mccollisions and mcparticles for MCD" , false );
0 commit comments