1616#ifndef ALICEO2_ITS_TRACKITS_H
1717#define ALICEO2_ITS_TRACKITS_H
1818
19+ #include < cstdint>
1920#include < vector>
2021
2122#include " GPUCommonDef.h"
2223#include " ReconstructionDataFormats/Track.h"
2324#include " CommonDataFormat/RangeReference.h"
25+ #include " CommonDataFormat/TimeStamp.h"
2426
2527namespace o2
2628{
@@ -35,12 +37,12 @@ namespace its
3537class TrackITS : public o2 ::track::TrackParCov
3638{
3739 enum UserBits {
38- kNextROF = 1 << 28 ,
3940 kSharedClusters = 1 << 29
4041 };
4142
4243 using Cluster = o2::itsmft::Cluster;
4344 using ClusRefs = o2::dataformats::RangeRefComp<4 >;
45+ using Timestamp = o2::dataformats::TimeStampWithError<uint32_t , uint16_t >;
4446
4547 public:
4648 using o2::track::TrackParCov::TrackParCov; // inherit base constructors
@@ -93,6 +95,9 @@ class TrackITS : public o2::track::TrackParCov
9395
9496 bool isBetter (const TrackITS& best, float maxChi2) const ;
9597
98+ auto & getTimeStamp () { return mTime ; }
99+ const auto & getTimeStamp () const { return mTime ; }
100+
96101 GPUhdi () o2::track::TrackParCov& getParamIn () { return *this ; }
97102 GPUhdi () const o2::track::TrackParCov& getParamIn () const { return *this ; }
98103
@@ -122,8 +127,6 @@ class TrackITS : public o2::track::TrackParCov
122127 }
123128 int getNFakeClusters () const ;
124129
125- void setNextROFbit (bool toggle = true ) { mClusterSizes = toggle ? (mClusterSizes | kNextROF ) : (mClusterSizes & ~kNextROF ); }
126- bool hasHitInNextROF () const { return mClusterSizes & kNextROF ; }
127130 void setSharedClusters (bool toggle = true ) { mClusterSizes = toggle ? (mClusterSizes | kSharedClusters ) : (mClusterSizes & ~kSharedClusters ); }
128131 bool hasSharedClusters () const { return mClusterSizes & kSharedClusters ; }
129132
@@ -157,9 +160,10 @@ class TrackITS : public o2::track::TrackParCov
157160 ClusRefs mClusRef ; // /< references on clusters
158161 float mChi2 = 0 .; // /< Chi2 for this track
159162 uint32_t mPattern = 0 ; // /< layers pattern
160- unsigned int mClusterSizes = 0u ;
163+ uint32_t mClusterSizes = 0u ; // /< packed clamped cluster size
164+ Timestamp mTime ; // /< track time stamp with error in BC, defined asymmetrical start + range in BCs
161165
162- ClassDefNV (TrackITS, 6 );
166+ ClassDefNV (TrackITS, 7 );
163167};
164168
165169class TrackITSExt : public TrackITS
@@ -169,15 +173,13 @@ class TrackITSExt : public TrackITS
169173 static constexpr int MaxClusters = 16 ; // / Prepare for overlaps and new detector configurations
170174 using TrackITS::TrackITS; // inherit base constructors
171175
172- GPUh () TrackITSExt(o2::track::TrackParCov&& parCov, short ncl, float chi2,
173- o2::track::TrackParCov&& outer, std::array<int , MaxClusters> cls)
176+ GPUh () TrackITSExt(o2::track::TrackParCov&& parCov, short ncl, float chi2, o2::track::TrackParCov&& outer, std::array<int , MaxClusters> cls)
174177 : TrackITS(parCov, chi2, outer), mIndex {cls}
175178 {
176179 setNumberOfClusters (ncl);
177180 }
178181
179- GPUh () TrackITSExt(o2::track::TrackParCov& parCov, short ncl, float chi2, std::uint32_t rof,
180- o2::track::TrackParCov& outer, std::array<int , MaxClusters> cls)
182+ GPUh () TrackITSExt(o2::track::TrackParCov& parCov, short ncl, float chi2, o2::track::TrackParCov& outer, std::array<int , MaxClusters> cls)
181183 : TrackITS(parCov, chi2, outer), mIndex {cls}
182184 {
183185 setNumberOfClusters (ncl);
@@ -212,7 +214,7 @@ class TrackITSExt : public TrackITS
212214
213215 private:
214216 std::array<int , MaxClusters> mIndex = {-1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 }; // /< Indices of associated clusters
215- ClassDefNV (TrackITSExt, 2 );
217+ ClassDefNV (TrackITSExt, 3 );
216218};
217219} // namespace its
218220} // namespace o2
0 commit comments