1717#include < Framework/AnalysisDataModel.h>
1818
1919#include < vector>
20+ #include < string>
21+ #include < utility>
2022
2123#include " EventFiltering/Zorro.h"
2224#include " EventFiltering/ZorroSummary.h"
3032#include " Common/DataModel/TrackSelectionTables.h"
3133#include " Common/DataModel/EventSelection.h"
3234#include " Common/DataModel/Centrality.h"
35+ #include " Common/DataModel/PIDResponseITS.h"
3336#include " Common/CCDB/ctpRateFetcher.h"
3437
3538#include " DetectorsBase/Propagator.h"
@@ -98,6 +101,9 @@ struct singleTrackSelector {
98101 Produces<o2::aod::SingleTrackSels> tableRow;
99102 Produces<o2::aod::SingleTrkExtras> tableRowExtra;
100103 Produces<o2::aod::SinglePIDEls> tableRowPIDEl;
104+ Produces<o2::aod::SinglePIDsITSPi> tableRowPIDITSPi;
105+ Produces<o2::aod::SinglePIDsITSKa> tableRowPIDITSKa;
106+ Produces<o2::aod::SinglePIDsITSPr> tableRowPIDITSPr;
101107 Produces<o2::aod::SingleTrkMCs> tableRowMC;
102108
103109 Filter eventFilter = (applyEvSel.node() == 0 ) ||
@@ -187,8 +193,8 @@ struct singleTrackSelector {
187193 d_bz = 0.1 * d_bz;
188194 }
189195
190- template <bool isMC, typename Trks >
191- inline void fillTrackTables (Trks const & tracks)
196+ template <bool isMC, typename TracksType >
197+ inline void fillTrackTables (TracksType const & tracks)
192198 {
193199 bool skip_track = false ; // flag used for track rejection
194200
@@ -248,6 +254,9 @@ struct singleTrackSelector {
248254 track.beta ());
249255
250256 tableRowPIDEl (singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaEl ()));
257+ tableRowPIDITSPi (singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaPi ()));
258+ tableRowPIDITSKa (singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaKa ()));
259+ tableRowPIDITSPr (singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaPr ()));
251260
252261 if constexpr (isMC) {
253262 int origin = -1 ;
@@ -274,8 +283,15 @@ struct singleTrackSelector {
274283 }
275284 }
276285
277- void processDataRun2 (soa::Filtered<CollRun2>::iterator const & collision, soa::Filtered<Trks> const & tracks, aod::BCsWithTimestamps const &)
286+ void processDataRun2 (soa::Filtered<CollRun2>::iterator const & collision,
287+ soa::Filtered<Trks> const & tracks,
288+ aod::BCsWithTimestamps const &)
278289 {
290+
291+ auto tracksWithITSPid = soa::Attach<Trks,
292+ aod::pidits::ITSNSigmaPi,
293+ aod::pidits::ITSNSigmaKa,
294+ aod::pidits::ITSNSigmaPr>(tracks);
279295 auto bc = collision.bc_as <aod::BCsWithTimestamps>();
280296 initCCDB (bc);
281297
@@ -304,13 +320,19 @@ struct singleTrackSelector {
304320 collision.posZ (),
305321 d_bz);
306322
307- fillTrackTables<false >(tracks );
323+ fillTrackTables<false >(tracksWithITSPid );
308324 }
309325 }
310326 PROCESS_SWITCH (singleTrackSelector, processDataRun2, " process data Run2" , false );
311327
312- void processDataRun3 (soa::Filtered<CollRun3>::iterator const & collision, soa::Filtered<Trks> const & tracks, aod::BCsWithTimestamps const &)
328+ void processDataRun3 (soa::Filtered<CollRun3>::iterator const & collision,
329+ soa::Filtered<Trks> const & tracks,
330+ aod::BCsWithTimestamps const &)
313331 {
332+ auto tracksWithITSPid = soa::Attach<Trks,
333+ aod::pidits::ITSNSigmaPi,
334+ aod::pidits::ITSNSigmaKa,
335+ aod::pidits::ITSNSigmaPr>(tracks);
314336 auto bc = collision.bc_as <aod::BCsWithTimestamps>();
315337 initCCDB (bc);
316338
@@ -381,13 +403,20 @@ struct singleTrackSelector {
381403 hadronicRate,
382404 occupancy);
383405
384- fillTrackTables<false >(tracks );
406+ fillTrackTables<false >(tracksWithITSPid );
385407 }
386408 }
387409 PROCESS_SWITCH (singleTrackSelector, processDataRun3, " process data Run3" , true );
388410
389- void processMCRun2 (soa::Filtered<CollRun2>::iterator const & collision, soa::Filtered<soa::Join<Trks, aod::McTrackLabels>> const & tracks, aod::McParticles const &, aod::BCsWithTimestamps const &)
411+ void processMCRun2 (soa::Filtered<CollRun2>::iterator const & collision,
412+ soa::Filtered<soa::Join<Trks, aod::McTrackLabels>> const & tracks,
413+ aod::McParticles const &, aod::BCsWithTimestamps const &)
390414 {
415+
416+ auto tracksWithITSPid = soa::Attach<soa::Join<Trks, aod::McTrackLabels>,
417+ aod::pidits::ITSNSigmaPi,
418+ aod::pidits::ITSNSigmaKa,
419+ aod::pidits::ITSNSigmaPr>(tracks);
391420 auto bc = collision.bc_as <aod::BCsWithTimestamps>();
392421 initCCDB (bc);
393422
@@ -415,13 +444,20 @@ struct singleTrackSelector {
415444 collision.posZ (),
416445 d_bz);
417446
418- fillTrackTables<true >(tracks );
447+ fillTrackTables<true >(tracksWithITSPid );
419448 }
420449 }
421450 PROCESS_SWITCH (singleTrackSelector, processMCRun2, " process MC Run2" , false );
422451
423- void processMCRun3 (soa::Filtered<CollRun3MC>::iterator const & collision, aod::McCollisions const &, soa::Filtered<soa::Join<Trks, aod::McTrackLabels>> const & tracks, aod::McParticles const & mcParticles, aod::BCsWithTimestamps const &)
452+ void processMCRun3 (soa::Filtered<CollRun3MC>::iterator const & collision, aod::McCollisions const &,
453+ soa::Filtered<soa::Join<Trks, aod::McTrackLabels>> const & tracks,
454+ aod::McParticles const & mcParticles,
455+ aod::BCsWithTimestamps const &)
424456 {
457+ auto tracksWithITSPid = soa::Attach<soa::Join<Trks, aod::McTrackLabels>,
458+ aod::pidits::ITSNSigmaPi,
459+ aod::pidits::ITSNSigmaKa,
460+ aod::pidits::ITSNSigmaPr>(tracks);
425461 auto bc = collision.bc_as <aod::BCsWithTimestamps>();
426462 initCCDB (bc);
427463 double hadronicRate = 0 .;
@@ -483,7 +519,7 @@ struct singleTrackSelector {
483519 hadronicRate,
484520 occupancy);
485521
486- fillTrackTables<true >(tracks );
522+ fillTrackTables<true >(tracksWithITSPid );
487523
488524 if (!enable_gen_info) {
489525 return ;
0 commit comments