3737#include " DetectorsBase/GeometryManager.h"
3838#include " DataFormatsParameters/GRPObject.h"
3939#include " DataFormatsParameters/GRPMagField.h"
40+ #include " DataFormatsCalibration/MeanVertexObject.h"
4041#include " CCDB/BasicCCDBManager.h"
4142#include " PWGEM/Dilepton/DataModel/lmeeMLTables.h"
4243#include " PWGEM/Dilepton/Utils/PairUtilities.h"
@@ -52,7 +53,7 @@ using namespace o2::constants::physics;
5253using MyCollisions = soa::Join<aod::Collisions, aod::EvSels>;
5354using MyCollision = MyCollisions::iterator;
5455
55- using MyTracks = soa::Join<aod::Tracks , aod::TracksCov, aod:: TracksExtra, aod::TracksDCA ,
56+ using MyTracks = soa::Join<aod::TracksIU , aod::TracksExtra, aod::TracksCovIU ,
5657 aod::pidTPCFullEl, aod::pidTPCFullMu, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
5758 aod::pidTOFFullEl, aod::pidTOFFullMu, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr, aod::pidTOFbeta>;
5859using MyTrack = MyTracks::iterator;
@@ -103,19 +104,19 @@ struct TreeCreatorElectronMLDDA {
103104 {" V0/hITSClusterSize_P_Ka" , " mean ITS cluster size vs. p;p^{ITS-TPC} (GeV/c);<ITS cluster size> #times cos(#lambda)" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {150 , 0.0 , 15 }}}},
104105 {" V0/hITSClusterSize_P_Pr" , " mean ITS cluster size vs. p;p^{ITS-TPC} (GeV/c);<ITS cluster size> #times cos(#lambda)" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {150 , 0.0 , 15 }}}},
105106
106- {" PrimaryTrack/hTPCdEdx_P" , " TPC dEdx vs. p;p^{ITS-TPC} (GeV/c);TPC dE/dx" , {HistType::kTH2F , {{500 , 0 , 5 }, {200 , 0 , 200 }}}},
107- {" PrimaryTrack/hTOFbeta_P" , " TOF beta vs. p;p^{ITS-TPC} (GeV/c);TOF #beta" , {HistType::kTH2F , {{500 , 0 , 5 }, {220 , 0 , 1.1 }}}},
108- {" PrimaryTrack/hITSClusterSize_P" , " mean ITS cluster size vs. p;p^{ITS-TPC} (GeV/c);<ITS cluster size> #times cos(#lambda)" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {150 , 0.0 , 15 }}}},
109- {" PrimaryTrack/hTPCNsigmaEl_P" , " TPC n#sigma_{e} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{e}^{TPC}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
110- {" PrimaryTrack/hTPCNsigmaMu_P" , " TPC n#sigma_{#mu} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{#mu}^{TPC}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
111- {" PrimaryTrack/hTPCNsigmaPi_P" , " TPC n#sigma_{#pi} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{#pi}^{TPC}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
112- {" PrimaryTrack/hTPCNsigmaKa_P" , " TPC n#sigma_{K} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{K}^{TPC}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
113- {" PrimaryTrack/hTPCNsigmaPr_P" , " TPC n#sigma_{p} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{p}^{TPC}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
114- {" PrimaryTrack/hTOFNsigmaEl_P" , " TOF n#sigma_{e} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{e}^{TOF}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
115- {" PrimaryTrack/hTOFNsigmaMu_P" , " TOF n#sigma_{#mu} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{#mu}^{TOF}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
116- {" PrimaryTrack/hTOFNsigmaPi_P" , " TOF n#sigma_{#pi} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{#pi}^{TOF}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
117- {" PrimaryTrack/hTOFNsigmaKa_P" , " TOF n#sigma_{K} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{K}^{TOF}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
118- {" PrimaryTrack/hTOFNsigmaPr_P" , " TOF n#sigma_{p} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{p}^{TOF}" , {HistType::kTH2F , {{500 , 0 .f , 5 .f }, {100 , -5 , +5 }}}},
107+ // {"PrimaryTrack/hTPCdEdx_P", "TPC dEdx vs. p;p^{ITS-TPC} (GeV/c);TPC dE/dx", {HistType::kTH2F, {{500, 0, 5}, {200, 0, 200}}}},
108+ // {"PrimaryTrack/hTOFbeta_P", "TOF beta vs. p;p^{ITS-TPC} (GeV/c);TOF #beta", {HistType::kTH2F, {{500, 0, 5}, {220, 0, 1.1}}}},
109+ // {"PrimaryTrack/hITSClusterSize_P", "mean ITS cluster size vs. p;p^{ITS-TPC} (GeV/c);<ITS cluster size> #times cos(#lambda)", {HistType::kTH2F, {{500, 0.f, 5.f}, {150, 0.0, 15}}}},
110+ // {"PrimaryTrack/hTPCNsigmaEl_P", "TPC n#sigma_{e} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{e}^{TPC}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
111+ // {"PrimaryTrack/hTPCNsigmaMu_P", "TPC n#sigma_{#mu} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{#mu}^{TPC}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
112+ // {"PrimaryTrack/hTPCNsigmaPi_P", "TPC n#sigma_{#pi} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{#pi}^{TPC}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
113+ // {"PrimaryTrack/hTPCNsigmaKa_P", "TPC n#sigma_{K} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{K}^{TPC}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
114+ // {"PrimaryTrack/hTPCNsigmaPr_P", "TPC n#sigma_{p} vs. p;p^{ITS-TPC} (GeV/c);n #sigma_{p}^{TPC}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
115+ // {"PrimaryTrack/hTOFNsigmaEl_P", "TOF n#sigma_{e} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{e}^{TOF}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
116+ // {"PrimaryTrack/hTOFNsigmaMu_P", "TOF n#sigma_{#mu} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{#mu}^{TOF}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
117+ // {"PrimaryTrack/hTOFNsigmaPi_P", "TOF n#sigma_{#pi} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{#pi}^{TOF}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
118+ // {"PrimaryTrack/hTOFNsigmaKa_P", "TOF n#sigma_{K} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{K}^{TOF}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
119+ // {"PrimaryTrack/hTOFNsigmaPr_P", "TOF n#sigma_{p} vs. p;p^{ITS-TOF} (GeV/c);n #sigma_{p}^{TOF}", {HistType::kTH2F, {{500, 0.f, 5.f}, {100, -5, +5}}}},
119120
120121 {" Cascade/hRxy_Xi" , " R_{xy} of cascade vs. mass;m_{#Lambda#pi};R_{xy} (cm)" , {HistType::kTH2F , {{200 , 1.2 , 1.4 }, {200 , 0 , 20 .f }}}},
121122 {" Cascade/hRxy_Omega" , " R_{xy} of cascade vs. mass;m_{#LambdaK};R_{xy} (cm)" , {HistType::kTH2F , {{200 , 1.6 , 1.8 }, {200 , 0 , 20 .f }}}},
@@ -144,6 +145,7 @@ struct TreeCreatorElectronMLDDA {
144145 Configurable<std::string> grpmagPath{" grpmagPath" , " GLO/Config/GRPMagField" , " CCDB path of the GRPMagField object" };
145146 Configurable<std::string> lutPath{" lutPath" , " GLO/Param/MatLUT" , " Path of the Lut parametrization" };
146147 Configurable<std::string> geoPath{" geoPath" , " GLO/Config/GeometryAligned" , " Path of the geometry file" };
148+ Configurable<std::string> mVtxPath {" mVtxPath" , " GLO/Calib/MeanVertex" , " Path of the mean vertex file" };
147149 Configurable<bool > skipGRPOquery{" skipGRPOquery" , true , " skip grpo query" };
148150 // Operation and minimisation criteria
149151 Configurable<double > d_bz_input{" d_bz_input" , -999 , " bz field, -999 is automatic" };
@@ -170,6 +172,7 @@ struct TreeCreatorElectronMLDDA {
170172 Configurable<float > cfg_max_chi2tpc{" cfg_max_chi2tpc" , 5.0 , " max chi2/NclsTPC" };
171173 Configurable<float > cfg_max_chi2its{" cfg_max_chi2its" , 6.0 , " max chi2/NclsITS" };
172174 Configurable<float > cfg_max_dcaxy{" cfg_max_dcaxy" , 0.3 , " max dca XY in cm" };
175+ Configurable<float > cfg_max_dcaz{" cfg_max_dcaz" , 0.3 , " max dca Z in cm" };
173176 } trackcuts;
174177
175178 struct : ConfigurableGroup {
@@ -244,7 +247,11 @@ struct TreeCreatorElectronMLDDA {
244247 int mRunNumber ;
245248 float d_bz;
246249 Service<o2::ccdb::BasicCCDBManager> ccdb;
250+ o2::base::Propagator::MatCorrType matCorr = o2::base::Propagator::MatCorrType::USEMatCorrLUT;
251+ o2::dataformats::VertexBase mVtx ;
252+ const o2::dataformats::MeanVertexObject* mMeanVtx = nullptr ;
247253 o2::base::MatLayerCylSet* lut = nullptr ;
254+ o2::dataformats::DCA mDcaInfoCov ;
248255
249256 std::mt19937 engine;
250257 std::uniform_real_distribution<float > dist01;
@@ -281,6 +288,14 @@ struct TreeCreatorElectronMLDDA {
281288 return ;
282289 }
283290
291+ // load matLUT for this timestamp
292+ if (!lut) {
293+ LOG (info) << " Loading material look-up table for timestamp: " << bc.timestamp ();
294+ lut = o2::base::MatLayerCylSet::rectifyPtrFromFile (ccdb->getForTimeStamp <o2::base::MatLayerCylSet>(lutPath, bc.timestamp ()));
295+ } else {
296+ LOG (info) << " Material look-up table already in place. Not reloading." ;
297+ }
298+
284299 // In case override, don't proceed, please - no CCDB access required
285300 if (d_bz_input > -990 ) {
286301 d_bz = d_bz_input;
@@ -289,6 +304,8 @@ struct TreeCreatorElectronMLDDA {
289304 grpmag.setL3Current (30000 .f / (d_bz / 5 .0f ));
290305 }
291306 o2::base::Propagator::initFieldFromGRP (&grpmag);
307+ o2::base::Propagator::Instance ()->setMatLUT (lut);
308+ mMeanVtx = ccdb->getForTimeStamp <o2::dataformats::MeanVertexObject>(mVtxPath , bc.timestamp ());
292309 mRunNumber = bc.runNumber ();
293310 return ;
294311 }
@@ -300,6 +317,8 @@ struct TreeCreatorElectronMLDDA {
300317 grpo = ccdb->getForTimeStamp <o2::parameters::GRPObject>(grpPath, run3grp_timestamp);
301318 if (grpo) {
302319 o2::base::Propagator::initFieldFromGRP (grpo);
320+ o2::base::Propagator::Instance ()->setMatLUT (lut);
321+ mMeanVtx = ccdb->getForTimeStamp <o2::dataformats::MeanVertexObject>(mVtxPath , bc.timestamp ());
303322 // Fetch magnetic field from ccdb for current collision
304323 d_bz = grpo->getNominalL3Field ();
305324 LOG (info) << " Retrieved GRP for timestamp " << run3grp_timestamp << " with magnetic field of " << d_bz << " kZG" ;
@@ -309,16 +328,13 @@ struct TreeCreatorElectronMLDDA {
309328 LOG (fatal) << " Got nullptr from CCDB for path " << grpmagPath << " of object GRPMagField and " << grpPath << " of object GRPObject for timestamp " << run3grp_timestamp;
310329 }
311330 o2::base::Propagator::initFieldFromGRP (grpmag);
331+ o2::base::Propagator::Instance ()->setMatLUT (lut);
332+ mMeanVtx = ccdb->getForTimeStamp <o2::dataformats::MeanVertexObject>(mVtxPath , bc.timestamp ());
312333 // Fetch magnetic field from ccdb for current collision
313334 d_bz = std::lround (5 .f * grpmag->getL3Current () / 30000 .f );
314335 LOG (info) << " Retrieved GRP for timestamp " << run3grp_timestamp << " with magnetic field of " << d_bz << " kZG" ;
315336 }
316337 mRunNumber = bc.runNumber ();
317-
318- if (useMatCorrType == 2 ) {
319- // setMatLUT only after magfield has been initalized (setMatLUT has implicit and problematic init field call if not)
320- o2::base::Propagator::Instance ()->setMatLUT (lut);
321- }
322338 }
323339
324340 template <int il0, int il1, typename TTrack>
@@ -339,21 +355,13 @@ struct TreeCreatorElectronMLDDA {
339355 }
340356 }
341357
342- template <typename TTrack>
343- bool isSelectedTrack (TTrack const & track)
358+ template <typename TCollision, typename TTrack>
359+ bool isSelectedTrack (TCollision const & collision, TTrack const & track)
344360 {
345- if (std::fabs (track.eta ()) > trackcuts.cfg_max_eta || track.pt () < trackcuts.cfg_min_pt ) {
346- return false ;
347- }
348-
349361 if (!track.hasITS () || !track.hasTPC ()) {
350362 return false ;
351363 }
352364
353- if (std::fabs (track.dcaXY ()) > trackcuts.cfg_max_dcaxy ) {
354- return false ;
355- }
356-
357365 if (track.itsNCls () < trackcuts.cfg_min_ncluster_its ) {
358366 return false ;
359367 }
@@ -379,23 +387,36 @@ struct TreeCreatorElectronMLDDA {
379387 if (track.tpcFractionSharedCls () > trackcuts.cfg_max_frac_shared_clusters_tpc ) {
380388 return false ;
381389 }
382- return true ;
383- }
384390
385- template <typename TTrack>
386- bool isSelectedV0Leg (TTrack const & track)
387- {
388- if (std::fabs (track.eta ()) > v0cuts.cfg_max_eta || track.pt () < v0cuts.cfg_min_pt ) {
391+ mDcaInfoCov .set (999 , 999 , 999 , 999 , 999 );
392+ auto track_par_cov_recalc = getTrackParCov (track);
393+ track_par_cov_recalc.setPID (track.pidForTracking ());
394+ mVtx .setPos ({collision.posX (), collision.posY (), collision.posZ ()});
395+ mVtx .setCov (collision.covXX (), collision.covXY (), collision.covYY (), collision.covXZ (), collision.covYZ (), collision.covZZ ());
396+ o2::base::Propagator::Instance ()->propagateToDCABxByBz (mVtx , track_par_cov_recalc, 2 .f , matCorr, &mDcaInfoCov );
397+ float dcaXY = mDcaInfoCov .getY ();
398+ float dcaZ = mDcaInfoCov .getZ ();
399+
400+ if (std::fabs (track_par_cov_recalc.getEta ()) > trackcuts.cfg_max_eta || track_par_cov_recalc.getPt () < trackcuts.cfg_min_pt ) {
389401 return false ;
390402 }
391403
392- if (!track.hasITS () || !track.hasTPC ()) {
404+ if (std::fabs (dcaXY) > trackcuts.cfg_max_dcaxy ) {
405+ return false ;
406+ }
407+ if (std::fabs (dcaZ) > trackcuts.cfg_max_dcaz ) {
393408 return false ;
394409 }
395410
396- // if (std::fabs(track.dcaXY()) < v0cuts.cfg_min_dcaxy_v0leg) { // this is applied in filter.
397- // return false;
398- // }
411+ return true ;
412+ }
413+
414+ template <typename TCollision, typename TTrack>
415+ bool isSelectedV0Leg (TCollision const & collision, TTrack const & track)
416+ {
417+ if (!track.hasITS () || !track.hasTPC ()) {
418+ return false ;
419+ }
399420
400421 if (track.itsNCls () < v0cuts.cfg_min_ncluster_its ) {
401422 return false ;
@@ -422,6 +443,24 @@ struct TreeCreatorElectronMLDDA {
422443 if (track.tpcFractionSharedCls () > v0cuts.cfg_max_frac_shared_clusters_tpc ) {
423444 return false ;
424445 }
446+
447+ mDcaInfoCov .set (999 , 999 , 999 , 999 , 999 );
448+ auto track_par_cov_recalc = getTrackParCov (track);
449+ track_par_cov_recalc.setPID (track.pidForTracking ());
450+ mVtx .setPos ({collision.posX (), collision.posY (), collision.posZ ()});
451+ mVtx .setCov (collision.covXX (), collision.covXY (), collision.covYY (), collision.covXZ (), collision.covYZ (), collision.covZZ ());
452+ o2::base::Propagator::Instance ()->propagateToDCABxByBz (mVtx , track_par_cov_recalc, 2 .f , matCorr, &mDcaInfoCov );
453+ float dcaXY = mDcaInfoCov .getY ();
454+ // float dcaZ = mDcaInfoCov.getZ();
455+
456+ if (std::fabs (track_par_cov_recalc.getEta ()) > v0cuts.cfg_max_eta || track_par_cov_recalc.getPt () < v0cuts.cfg_min_pt ) {
457+ return false ;
458+ }
459+
460+ if (std::fabs (dcaXY) < v0cuts.cfg_min_dcaxy_v0leg ) { // this is applied in filter.
461+ return false ;
462+ }
463+
425464 return true ;
426465 }
427466
@@ -477,9 +516,18 @@ struct TreeCreatorElectronMLDDA {
477516 void fillTrackTable (TCollision const & collision, TTrack const & track, const int pidlabel, const int tracktype)
478517 {
479518 if (std::find (stored_trackIds.begin (), stored_trackIds.end (), track.globalIndex ()) == stored_trackIds.end ()) {
519+ mDcaInfoCov .set (999 , 999 , 999 , 999 , 999 );
520+ auto track_par_cov_recalc = getTrackParCov (track);
521+ track_par_cov_recalc.setPID (track.pidForTracking ());
522+ mVtx .setPos ({collision.posX (), collision.posY (), collision.posZ ()});
523+ mVtx .setCov (collision.covXX (), collision.covXY (), collision.covYY (), collision.covXZ (), collision.covYZ (), collision.covZZ ());
524+ o2::base::Propagator::Instance ()->propagateToDCABxByBz (mVtx , track_par_cov_recalc, 2 .f , matCorr, &mDcaInfoCov );
525+ float dcaXY = mDcaInfoCov .getY ();
526+ float dcaZ = mDcaInfoCov .getZ ();
527+
480528 emprimarytracks (collision.globalIndex (), collision.posZ (), collision.numContrib (),
481529 track.pt (), track.eta (), track.phi (), track.tgl (), track.signed1Pt (),
482- track. dcaXY (), track. dcaZ (), track. cYY (), track. cZZ (), track. cZY (),
530+ dcaXY, dcaZ, track_par_cov_recalc. getSigmaY2 (), track_par_cov_recalc. getSigmaZ2 (), track_par_cov_recalc. getSigmaZY (),
483531 track.tpcNClsFindable (), track.tpcNClsFound (), track.tpcNClsCrossedRows (),
484532 track.tpcChi2NCl (), track.tpcInnerParam (),
485533 track.tpcSignal (), track.tpcNSigmaEl (), track.tpcNSigmaMu (), track.tpcNSigmaPi (), track.tpcNSigmaKa (), track.tpcNSigmaPr (),
@@ -520,7 +568,7 @@ struct TreeCreatorElectronMLDDA {
520568 for (const auto & v0 : v0s_coll) {
521569 auto pos = v0.template posTrack_as <MyTracks>();
522570 auto neg = v0.template negTrack_as <MyTracks>();
523- if (!isSelectedV0Leg (pos) || !isSelectedV0Leg (neg)) {
571+ if (!isSelectedV0Leg (collision, pos) || !isSelectedV0Leg (collision, neg)) {
524572 continue ;
525573 }
526574 if (pos.sign () * neg.sign () > 0 ) {
@@ -596,7 +644,7 @@ struct TreeCreatorElectronMLDDA {
596644 auto posTracks_per_coll = posTracks->sliceByCached (o2::aod::track::collisionId, collision.globalIndex (), cache);
597645 auto negTracks_per_coll = negTracks->sliceByCached (o2::aod::track::collisionId, collision.globalIndex (), cache);
598646 for (const auto & [pos, neg] : combinations (CombinationsFullIndexPolicy (posTracks_per_coll, negTracks_per_coll))) {
599- if (!isSelectedTrack (pos) || !isSelectedTrack (neg)) {
647+ if (!isSelectedTrack (collision, pos) || !isSelectedTrack (collision, neg)) {
600648 continue ;
601649 }
602650
@@ -632,7 +680,7 @@ struct TreeCreatorElectronMLDDA {
632680 auto bachelor = cascade.template bachelor_as <MyTracks>();
633681 auto pos = cascade.template posTrack_as <MyTracks>();
634682 auto neg = cascade.template negTrack_as <MyTracks>();
635- if (!isSelectedV0Leg (pos) || !isSelectedV0Leg (neg) || !isSelectedV0Leg (bachelor)) {
683+ if (!isSelectedV0Leg (collision, pos) || !isSelectedV0Leg (collision, neg) || !isSelectedV0Leg (collision, bachelor)) {
636684 continue ;
637685 }
638686
@@ -713,26 +761,25 @@ struct TreeCreatorElectronMLDDA {
713761 }
714762 } // end of cascade loop
715763
716- auto tracks_coll = tracks.sliceBy (perCollision_track, collision.globalIndex ());
717- for (const auto & track : tracks_coll) {
718- if (!isSelectedTrack (track)) {
719- continue ;
720- }
721-
722- registry.fill (HIST (" PrimaryTrack/hTPCdEdx_P" ), track.p (), track.tpcSignal ());
723- registry.fill (HIST (" PrimaryTrack/hTOFbeta_P" ), track.p (), track.beta ());
724- registry.fill (HIST (" PrimaryTrack/hITSClusterSize_P" ), track.p (), meanClusterSizeITS<0 , 7 >(track) * std::cos (std::atan (track.tgl ())));
725- registry.fill (HIST (" PrimaryTrack/hTPCNsigmaEl_P" ), track.p (), track.tpcNSigmaEl ());
726- registry.fill (HIST (" PrimaryTrack/hTOFNsigmaEl_P" ), track.p (), track.tofNSigmaEl ());
727- registry.fill (HIST (" PrimaryTrack/hTPCNsigmaMu_P" ), track.p (), track.tpcNSigmaMu ());
728- registry.fill (HIST (" PrimaryTrack/hTOFNsigmaMu_P" ), track.p (), track.tofNSigmaMu ());
729- registry.fill (HIST (" PrimaryTrack/hTPCNsigmaPi_P" ), track.p (), track.tpcNSigmaPi ());
730- registry.fill (HIST (" PrimaryTrack/hTOFNsigmaPi_P" ), track.p (), track.tofNSigmaPi ());
731- registry.fill (HIST (" PrimaryTrack/hTPCNsigmaKa_P" ), track.p (), track.tpcNSigmaKa ());
732- registry.fill (HIST (" PrimaryTrack/hTOFNsigmaKa_P" ), track.p (), track.tofNSigmaKa ());
733- registry.fill (HIST (" PrimaryTrack/hTPCNsigmaPr_P" ), track.p (), track.tpcNSigmaPr ());
734- registry.fill (HIST (" PrimaryTrack/hTOFNsigmaPr_P" ), track.p (), track.tofNSigmaPr ());
735- } // end of track loop
764+ // auto tracks_coll = tracks.sliceBy(perCollision_track, collision.globalIndex());
765+ // for (const auto& track : tracks_coll) {
766+ // if (!isSelectedTrack(collision, track)) {
767+ // continue;
768+ // }
769+ // registry.fill(HIST("PrimaryTrack/hTPCdEdx_P"), track.p(), track.tpcSignal());
770+ // registry.fill(HIST("PrimaryTrack/hTOFbeta_P"), track.p(), track.beta());
771+ // registry.fill(HIST("PrimaryTrack/hITSClusterSize_P"), track.p(), meanClusterSizeITS<0, 7>(track) * std::cos(std::atan(track.tgl())));
772+ // registry.fill(HIST("PrimaryTrack/hTPCNsigmaEl_P"), track.p(), track.tpcNSigmaEl());
773+ // registry.fill(HIST("PrimaryTrack/hTOFNsigmaEl_P"), track.p(), track.tofNSigmaEl());
774+ // registry.fill(HIST("PrimaryTrack/hTPCNsigmaMu_P"), track.p(), track.tpcNSigmaMu());
775+ // registry.fill(HIST("PrimaryTrack/hTOFNsigmaMu_P"), track.p(), track.tofNSigmaMu());
776+ // registry.fill(HIST("PrimaryTrack/hTPCNsigmaPi_P"), track.p(), track.tpcNSigmaPi());
777+ // registry.fill(HIST("PrimaryTrack/hTOFNsigmaPi_P"), track.p(), track.tofNSigmaPi());
778+ // registry.fill(HIST("PrimaryTrack/hTPCNsigmaKa_P"), track.p(), track.tpcNSigmaKa());
779+ // registry.fill(HIST("PrimaryTrack/hTOFNsigmaKa_P"), track.p(), track.tofNSigmaKa());
780+ // registry.fill(HIST("PrimaryTrack/hTPCNsigmaPr_P"), track.p(), track.tpcNSigmaPr());
781+ // registry.fill(HIST("PrimaryTrack/hTOFNsigmaPr_P"), track.p(), track.tofNSigmaPr());
782+ // } // end of track loop
736783
737784 } // end of collision loop
738785 stored_trackIds.clear ();
0 commit comments