1717
1818#include " GPUTPCBaseTrackParam.h"
1919#include " GPUTPCDef.h"
20+ // #include "wrapper.h"
2021
2122namespace o2 ::gpu
2223{
@@ -27,14 +28,13 @@ namespace o2::gpu
2728 * The class is dedicated for internal use by the GPUTPCTracker algorithm.
2829 * The track parameters at both ends are stored separately in the GPUTPCEndPoint class
2930 */
30- class GPUTPCTrack
31+ template <template <class > class F >
32+ class GPUTPCTrackSkeleton
3133{
3234 public:
3335#if !defined(GPUCA_GPUCODE)
34- GPUTPCTrack () : mFirstHitID(0 ), mNHits(0 ), mLocalTrackId(-1 ), mParam()
35- {
36- }
37- ~GPUTPCTrack () = default ;
36+ GPUTPCTrackSkeleton ();
37+ ~GPUTPCTrackSkeleton () = default ;
3838#endif // ! GPUCA_GPUCODE
3939
4040 GPUhd () int32_t NHits () const { return mNHits ; }
@@ -45,8 +45,30 @@ class GPUTPCTrack
4545 GPUhd () void SetNHits (int32_t v) { mNHits = v; }
4646 GPUhd () void SetLocalTrackId (int32_t v) { mLocalTrackId = v; }
4747 GPUhd () void SetFirstHitID (int32_t v) { mFirstHitID = v; }
48-
49- GPUhd () void SetParam (const GPUTPCBaseTrackParam& v) { mParam = v; }
48+ GPUhd () void SetParam (GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> v) {
49+ mParam .mX = v.mX ;
50+ mParam .mC [0 ] = v.mC [0 ];
51+ mParam .mC [1 ] = v.mC [1 ];
52+ mParam .mC [2 ] = v.mC [2 ];
53+ mParam .mC [3 ] = v.mC [3 ];
54+ mParam .mC [4 ] = v.mC [4 ];
55+ mParam .mC [5 ] = v.mC [5 ];
56+ mParam .mC [6 ] = v.mC [6 ];
57+ mParam .mC [7 ] = v.mC [7 ];
58+ mParam .mC [8 ] = v.mC [8 ];
59+ mParam .mC [9 ] = v.mC [9 ];
60+ mParam .mC [10 ] = v.mC [10 ];
61+ mParam .mC [11 ] = v.mC [11 ];
62+ mParam .mC [12 ] = v.mC [12 ];
63+ mParam .mC [13 ] = v.mC [13 ];
64+ mParam .mC [14 ] = v.mC [14 ];
65+ mParam .mZOffset = v.mZOffset ;
66+ mParam .mP [0 ] = v.mP [0 ];
67+ mParam .mP [1 ] = v.mP [1 ];
68+ mParam .mP [2 ] = v.mP [2 ];
69+ mParam .mP [3 ] = v.mP [3 ];
70+ mParam .mP [4 ] = v.mP [4 ];
71+ }
5072
5173 private:
5274 int32_t mFirstHitID ; // index of the first track cell in the track->cell pointer array
@@ -56,6 +78,16 @@ class GPUTPCTrack
5678
5779 private:
5880};
81+
82+ #if !defined(GPUCA_GPUCODE)
83+ template <>
84+ GPUTPCTrackSkeleton<wrapper::value>::GPUTPCTrackSkeleton() : mFirstHitID (0 ), mNHits (0 ), mLocalTrackId (-1 ), mParam ()
85+ {
86+ }
87+ #endif // ! GPUCA_GPUCODE
88+
89+ using GPUTPCTrack = GPUTPCTrackSkeleton<wrapper::value>;
90+
5991} // namespace o2::gpu
6092
6193#endif // GPUTPCTRACK_H
0 commit comments