4242#include < chrono>
4343#include " DataFormatsTPC/PIDResponse.h"
4444#include " DataFormatsITS/TrackITS.h"
45+ #include " DataFormatsTRD/TrackTRD.h"
46+ #include " DataFormatsTRD/Tracklet64.h"
4547#include " TROOT.h"
4648#include " ReconstructionDataFormats/MatchInfoTOF.h"
4749#include " DataFormatsTOF/Cluster.h"
@@ -177,6 +179,7 @@ class TPCTimeSeries : public Task
177179 auto tracksITSTPC = mTPCOnly ? gsl::span<o2::dataformats::TrackTPCITS>() : recoData.getTPCITSTracks ();
178180 auto tracksITS = mTPCOnly ? gsl::span<o2::its::TrackITS>() : recoData.getITSTracks ();
179181
182+
180183 // getting the vertices
181184 auto vertices = mTPCOnly ? gsl::span<o2::dataformats::PrimaryVertex>() : recoData.getPrimaryVertices ();
182185 auto primMatchedTracks = mTPCOnly ? gsl::span<o2::dataformats::VtxTrackIndex>() : recoData.getPrimaryVertexMatchedTracks (); // Global ID's for associated tracks
@@ -187,6 +190,15 @@ class TPCTimeSeries : public Task
187190 if (mBufferDCA .mOccupancyMapTPC .size () > mMaxOccupancyHistBins ) {
188191 mBufferDCA .mOccupancyMapTPC .resize (mMaxOccupancyHistBins );
189192 }
193+ // / TRD tracklets
194+ const auto & tracksTRD = mTPCOnly ? gsl::span<o2::trd::TrackTRD>() : recoData.getITSTPCTRDTracks <o2::trd::TrackTRD>();
195+ const auto & trklets = mTPCOnly ? gsl::span<const o2::trd::Tracklet64>():recoData.getTRDTracklets ();
196+ std::unordered_map<unsigned int , unsigned int > indicesTRDTPC; // TPC track index -> TRD-TPC track index.
197+ // loop over all TRD tracks and map them to TPC tracks
198+ for (int i = 0 ; i < tracksTRD.size (); ++i) {
199+ // auto trackTPC = tracksTRD[i].getRefTPC().getIndex();
200+ // if (trackTPC >= 0) indicesTRDTPC[trackTPC] = i;
201+ }
190202
191203 // TOF clusters
192204 const auto & tofClusters = mTPCOnly ? gsl::span<o2::tof::Cluster>() : recoData.getTOFClusters ();
@@ -464,7 +476,7 @@ class TPCTimeSeries : public Task
464476 auto myThread = [&](int iThread) {
465477 for (size_t i = iThread; i < loopEnd; i += mNThreads ) {
466478 if (acceptTrack (tracksTPC[i])) {
467- fillDCA (tracksTPC, tracksITSTPC, vertices, i, iThread, indicesITSTPC, tracksITS, idxTPCTrackToTOFCluster, tofClusters);
479+ fillDCA (tracksTPC, tracksITSTPC, vertices, i, iThread, indicesITSTPC, tracksITS, idxTPCTrackToTOFCluster, tofClusters, indicesTRDTPC, tracksTRD, trklets );
468480 }
469481 }
470482 };
@@ -481,7 +493,7 @@ class TPCTimeSeries : public Task
481493 auto myThread = [&](int iThread) {
482494 for (size_t i = iThread; i < loopEnd; i += mNThreads ) {
483495 if (acceptTrack (tracksTPC[i])) {
484- fillDCA (tracksTPC, tracksITSTPC, vertices, i, iThread, indicesITSTPC, tracksITS, idxTPCTrackToTOFCluster, tofClusters);
496+ fillDCA (tracksTPC, tracksITSTPC, vertices, i, iThread, indicesITSTPC, tracksITS, idxTPCTrackToTOFCluster, tofClusters, indicesTRDTPC,tracksTRD, trklets );
485497 }
486498 }
487499 };
@@ -1117,7 +1129,8 @@ class TPCTimeSeries : public Task
11171129 return isGoodTrack;
11181130 }
11191131
1120- void fillDCA (const gsl::span<const TrackTPC> tracksTPC, const gsl::span<const o2::dataformats::TrackTPCITS> tracksITSTPC, const gsl::span<const o2::dataformats::PrimaryVertex> vertices, const int iTrk, const int iThread, const std::unordered_map<unsigned int , std::array<int , 2 >>& indicesITSTPC, const gsl::span<const o2::its::TrackITS> tracksITS, const std::vector<std::tuple<int , float , float , o2::track::TrackLTIntegral, double , float , unsigned int >>& idxTPCTrackToTOFCluster, const gsl::span<const o2::tof::Cluster> tofClusters)
1132+ void fillDCA (const gsl::span<const TrackTPC> tracksTPC, const gsl::span<const o2::dataformats::TrackTPCITS> tracksITSTPC, const gsl::span<const o2::dataformats::PrimaryVertex> vertices, const int iTrk, const int iThread, const std::unordered_map<unsigned int , std::array<int , 2 >>& indicesITSTPC, const gsl::span<const o2::its::TrackITS> tracksITS, const std::vector<std::tuple<int , float , float , o2::track::TrackLTIntegral, double , float , unsigned int >>& idxTPCTrackToTOFCluster, const gsl::span<const o2::tof::Cluster> tofClusters,
1133+ const std::unordered_map<unsigned int ,unsigned int > indicesTRDTPC,const gsl::span<const o2::trd::TrackTRD> tracksTRD,gsl::span<const o2::trd::Tracklet64> trackletsTRD)
11211134 {
11221135 const auto & trackFull = tracksTPC[iTrk];
11231136 const bool isGoodTrack = checkTrack (trackFull);
@@ -1353,6 +1366,9 @@ class TPCTimeSeries : public Task
13531366 tpcZDeltaAtTOF = signSide * (o2::tpc::ParameterElectronics::Instance ().ZbinWidth * trackFull.getTime0 () - vertex.getTimeStamp ().getTimeStamp ()) * mVDrift - trackTmpOut.getZ () + tofCl.getZ ();
13541367 }
13551368 }
1369+ // get TRD tracklet
1370+ std::vector<o2::trd::Tracklet64> trdTracklets;
1371+ int nTRDTracklets = 0 ;
13561372
13571373 // get delta parameter between inner and outer
13581374 float deltaTPCParamInOutTgl = trackFull.getTgl () - trackFull.getParamOut ().getTgl ();
0 commit comments