2828#include " SimulationDataFormat/ConstMCTruthContainer.h"
2929#include < memory>
3030
31+ #include " GPUO2InterfaceRefit.h"
32+ #include " TPCFastTransform.h"
33+ #include " TRDBase/RecoParam.h"
34+ #include " DataFormatsTPC/TrackTPC.h"
35+ #include " DataFormatsITS/TrackITS.h"
36+ #include " DataFormatsITSMFT/TopologyDictionary.h"
37+
3138namespace o2
3239{
3340namespace trd
@@ -43,6 +50,9 @@ class TRDGlobalTracking : public o2::framework::Task
4350 void fillMCTruthInfo (const TrackTRD& trk, o2::MCCompLabel lblSeed, std::vector<o2::MCCompLabel>& lblContainerTrd, std::vector<o2::MCCompLabel>& lblContainerMatch, const o2::dataformats::MCTruthContainer<o2::MCCompLabel>* trkltLabels) const ;
4451 void fillTrackTriggerRecord (const std::vector<TrackTRD>& tracks, std::vector<TrackTriggerRecord>& trigRec, const gsl::span<const o2::trd::TriggerRecord>& trackletTrigRec) const ;
4552 void run (o2::framework::ProcessingContext& pc) final ;
53+ bool refitITSTPCTRDTrack (TrackTRD& trk, float timeTRD, o2::globaltracking::RecoContainer* recoCont);
54+ bool refitTPCTRDTrack (TrackTRD& trk, float timeTRD, o2::globaltracking::RecoContainer* recoCont);
55+ bool refitTRDTrack (TrackTRD& trk, float & chi2, bool inwards);
4656 void endOfStream (o2::framework::EndOfStreamContext& ec) final ;
4757
4858 private:
@@ -54,10 +64,23 @@ class TRDGlobalTracking : public o2::framework::Task
5464 bool mTrigRecFilter {false }; // /< if true, TRD trigger records without matching ITS IR are filtered out
5565 bool mStrict {false }; // /< preliminary matching in strict mode
5666 float mTPCTBinMUS {.2f }; // /< width of a TPC time bin in us
67+ float mTPCTBinMUSInv {1 .f / mTPCTBinMUS }; // /< inverse width of a TPC time bin in 1/us
5768 float mTPCVdrift {2 .58f }; // /< TPC drift velocity (for shifting TPC tracks along Z)
5869 std::shared_ptr<o2::globaltracking::DataRequest> mDataRequest ; // /< seeding input (TPC-only, ITS-TPC or both)
5970 o2::dataformats::GlobalTrackID::mask_t mTrkMask ; // /< seeding track sources (TPC, ITS-TPC)
6071 TStopwatch mTimer ;
72+ // temporary members -> should go into processor (GPUTRDTracker or additional refit processor?)
73+ std::unique_ptr<o2::gpu::GPUO2InterfaceRefit> mTPCRefitter ; // /< TPC refitter used for TPC tracks refit during the reconstruction
74+ const o2::tpc::ClusterNativeAccess* mTPCClusterIdxStruct = nullptr ; // /< struct holding the TPC cluster indices
75+ std::unique_ptr<o2::gpu::TPCFastTransform> mTPCTransform ; // /< TPC cluster transformation
76+ RecoParam mRecoParam ; // /< parameters required for TRD reconstruction
77+ gsl::span<const Tracklet64> mTrackletsRaw ; // /< array of raw tracklets needed for TRD refit
78+ gsl::span<const CalibratedTracklet> mTrackletsCalib ; // /< array of calibrated tracklets needed for TRD refit
79+ gsl::span<const o2::tpc::TrackTPC> mTPCTracksArray ; // /< input TPC tracks used for refit
80+ gsl::span<const o2::its::TrackITS> mITSTracksArray ; // /< input ITS tracks used for refit
81+ gsl::span<const int > mITSTrackClusIdx ; // /< input ITS track cluster indices span
82+ std::vector<o2::BaseCluster<float >> mITSClustersArray ; // /< ITS clusters created in run() method from compact clusters
83+ o2::itsmft::TopologyDictionary mITSDict ; // /< cluster patterns dictionary
6184};
6285
6386// / create a processor spec
0 commit comments