Skip to content

Commit 08fc165

Browse files
Use SCRP
1 parent 5e572ca commit 08fc165

File tree

11 files changed

+166
-65
lines changed

11 files changed

+166
-65
lines changed

GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ using namespace o2::tpc;
2525

2626
GPUd() void GPUTPCGMSectorTrack::Set(const GPUTPCGMMerger* merger, const GPUTPCTrack* sectorTr, float alpha, int32_t sector)
2727
{
28-
const GPUTPCBaseTrackParam& t = sectorTr->Param();
28+
GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> t = sectorTr->Param();
2929
mOrigTrack = sectorTr;
3030
mParam.mX = t.GetX();
3131
mParam.mY = t.GetY();

GPU/GPUTracking/SectorTracker/GPUTPCBaseTrackParam.h

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@
2121
namespace o2::gpu
2222
{
2323

24+
template <template <template <class> class> class S, template <class> class F>
25+
struct BaseCRTP { };
26+
27+
template <template <template <class> class> class S>
28+
struct BaseCRTP<S, wrapper::value> {
29+
using Derived = S<wrapper::value>;
30+
constexpr operator S<wrapper::reference>() { return {{}, static_cast<Derived*>(this)->mX, static_cast<Derived*>(this)->mC, static_cast<Derived*>(this)->mZOffset, static_cast<Derived*>(this)->mP}; };
31+
constexpr operator S<wrapper::const_reference>() const { return {{}, static_cast<const Derived*>(this)->mX, static_cast<const Derived*>(this)->mC, static_cast<const Derived*>(this)->mZOffset, static_cast<const Derived*>(this)->mP}; };
32+
};
33+
34+
template <template <template <class> class> class S>
35+
struct BaseCRTP<S, wrapper::reference> {
36+
using Derived = S<wrapper::reference>;
37+
constexpr operator S<wrapper::const_reference>() const { return {{}, static_cast<const Derived*>(this)->mX, static_cast<const Derived*>(this)->mC, static_cast<const Derived*>(this)->mZOffset, static_cast<const Derived*>(this)->mP}; };
38+
};
39+
2440
/**
2541
* @class GPUTPCBaseTrackParam
2642
*
@@ -29,13 +45,7 @@ namespace o2::gpu
2945
* This class is used for transfer between tracker and merger and does not contain the covariance matrice
3046
*/
3147
template <template <class> class F>
32-
struct GPUTPCBaseTrackParamSkeleton {
33-
template <template <class> class F_new>
34-
GPUd() operator GPUTPCBaseTrackParamSkeleton<F_new>() const { return {mX, mC, mZOffset, mP}; }
35-
36-
template <template <class> class F_new>
37-
GPUd() operator GPUTPCBaseTrackParamSkeleton<F_new>() { return {mX, mC, mZOffset, mP}; }
38-
48+
struct GPUTPCBaseTrackParamSkeleton : BaseCRTP<GPUTPCBaseTrackParamSkeleton, F> {
3949
GPUd() float X() const { return mX; }
4050
GPUd() float Y() const { return mP[0]; }
4151
GPUd() float Z() const { return mP[1]; }

GPU/GPUTracking/SectorTracker/GPUTPCTrack.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class GPUTPCTrackSkeleton
4040
GPUhd() int32_t NHits() const { return mNHits; }
4141
GPUhd() int32_t LocalTrackId() const { return mLocalTrackId; }
4242
GPUhd() int32_t FirstHitID() const { return mFirstHitID; }
43-
GPUhd() const GPUTPCBaseTrackParam& Param() const { return mParam; }
43+
GPUhd() GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> Param() const { return mParam; }
4444

4545
GPUhd() void SetNHits(int32_t v) { mNHits = v; }
4646
GPUhd() void SetLocalTrackId(int32_t v) { mLocalTrackId = v; }
@@ -71,10 +71,10 @@ class GPUTPCTrackSkeleton
7171
}
7272

7373
private:
74-
int32_t mFirstHitID; // index of the first track cell in the track->cell pointer array
75-
int32_t mNHits; // number of track cells
76-
int32_t mLocalTrackId; // Id of local track this extrapolated track belongs to, index of this track itself if it is a local track
77-
GPUTPCBaseTrackParam mParam; // track parameters
74+
F<int32_t> mFirstHitID; // index of the first track cell in the track->cell pointer array
75+
F<int32_t> mNHits; // number of track cells
76+
F<int32_t> mLocalTrackId; // Id of local track this extrapolated track belongs to, index of this track itself if it is a local track
77+
GPUTPCBaseTrackParamSkeleton<F> mParam; // track parameters
7878

7979
private:
8080
};

GPU/GPUTracking/SectorTracker/GPUTPCTrackLinearisation.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ class GPUTPCTrackLinearisation
4141

4242
GPUd() GPUTPCTrackLinearisation(const GPUTPCTrackParam& t);
4343

44+
GPUd() GPUTPCTrackLinearisation(GPUTPCTrackParamSkeleton<wrapper::const_reference> t);
45+
4446
GPUd() void Set(float SinPhi1, float CosPhi1, float DzDs1, float QPt1);
4547

4648
GPUd() float SinPhi() const { return mSinPhi; }
@@ -78,6 +80,19 @@ GPUdi() GPUTPCTrackLinearisation::GPUTPCTrackLinearisation(const GPUTPCTrackPara
7880
}
7981
}
8082

83+
GPUdi() GPUTPCTrackLinearisation::GPUTPCTrackLinearisation(GPUTPCTrackParamSkeleton<wrapper::const_reference> t) : mSinPhi(t.SinPhi()), mCosPhi(0), mDzDs(t.DzDs()), mQPt(t.QPt())
84+
{
85+
if (mSinPhi > GPUCA_MAX_SIN_PHI) {
86+
mSinPhi = GPUCA_MAX_SIN_PHI;
87+
} else if (mSinPhi < -GPUCA_MAX_SIN_PHI) {
88+
mSinPhi = -GPUCA_MAX_SIN_PHI;
89+
}
90+
mCosPhi = CAMath::Sqrt(1 - mSinPhi * mSinPhi);
91+
if (t.SignCosPhi() < 0) {
92+
mCosPhi = -mCosPhi;
93+
}
94+
}
95+
8196
GPUdi() void GPUTPCTrackLinearisation::Set(float SinPhi1, float CosPhi1, float DzDs1, float QPt1)
8297
{
8398
SetSinPhi(SinPhi1);

GPU/GPUTracking/SectorTracker/GPUTPCTrackParam.cxx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using namespace o2::gpu;
3131
//
3232

3333
template <template <class> class F>
34-
GPUd() float GPUTPCTrackParamSkeleton<F>::GetDist2(const GPUTPCTrackParamSkeleton<F>& GPUrestrict() t) const
34+
GPUd() float GPUTPCTrackParamSkeleton<F>::GetDist2(GPUTPCTrackParamSkeleton<wrapper::const_reference> t) const
3535
{
3636
// get squared distance between tracks
3737

@@ -42,7 +42,7 @@ GPUd() float GPUTPCTrackParamSkeleton<F>::GetDist2(const GPUTPCTrackParamSkeleto
4242
}
4343

4444
template <template <class> class F>
45-
GPUd() float GPUTPCTrackParamSkeleton<F>::GetDistXZ2(const GPUTPCTrackParamSkeleton<F>& GPUrestrict() t) const
45+
GPUd() float GPUTPCTrackParamSkeleton<F>::GetDistXZ2(GPUTPCTrackParamSkeleton<wrapper::const_reference> t) const
4646
{
4747
// get squared distance between tracks in X&Z
4848

@@ -332,7 +332,6 @@ template <template <class> class F>
332332
GPUd() bool GPUTPCTrackParamSkeleton<F>::TransportToXWithMaterial(float x, GPUTPCTrackFitParam& GPUrestrict() par, float Bz, float maxSinPhi)
333333
{
334334
//* Transport the track parameters to X=x taking into account material budget
335-
336335
GPUTPCTrackLinearisation t0(*this);
337336
return TransportToXWithMaterial(x, t0, par, Bz, maxSinPhi);
338337
}
@@ -878,3 +877,5 @@ GPUd() int32_t GPUTPCTrackParamSkeleton<F>::GetPropagatedYZ(float bz, float x, f
878877
}
879878

880879
template class GPUTPCTrackParamSkeleton<wrapper::value>;
880+
template class GPUTPCTrackParamSkeleton<wrapper::reference>;
881+
template class GPUTPCTrackParamSkeleton<wrapper::const_reference>;

GPU/GPUTracking/SectorTracker/GPUTPCTrackParam.h

Lines changed: 109 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,23 @@
2222

2323
namespace o2::gpu
2424
{
25+
26+
template <template <template <class> class> class S, template <class> class F>
27+
struct CRTP { };
28+
29+
template <template <template <class> class> class S>
30+
struct CRTP<S, wrapper::value> {
31+
using Derived = S<wrapper::value>;
32+
constexpr operator S<wrapper::reference>() { return {{}, static_cast<Derived*>(this)->mParam, static_cast<Derived*>(this)->mSignCosPhi, static_cast<Derived*>(this)->mChi2, static_cast<Derived*>(this)->mNDF}; };
33+
constexpr operator S<wrapper::const_reference>() const { return {{}, static_cast<const Derived*>(this)->mParam, static_cast<const Derived*>(this)->mSignCosPhi, static_cast<const Derived*>(this)->mChi2, static_cast<const Derived*>(this)->mNDF}; };
34+
};
35+
36+
template <template <template <class> class> class S>
37+
struct CRTP<S, wrapper::reference> {
38+
using Derived = S<wrapper::reference>;
39+
constexpr operator S<wrapper::const_reference>() const { return {{}, static_cast<const Derived*>(this)->mParam, static_cast<const Derived*>(this)->mSignCosPhi, static_cast<const Derived*>(this)->mChi2, static_cast<const Derived*>(this)->mNDF}; };
40+
};
41+
2542
class GPUTPCTrackLinearisation;
2643

2744
/**
@@ -32,16 +49,66 @@ class GPUTPCTrackLinearisation;
3249
*
3350
*/
3451
template <template <class> class F>
35-
class GPUTPCTrackParamSkeleton
52+
class GPUTPCTrackParamSkeleton : public CRTP<GPUTPCTrackParamSkeleton, F>
3653
{
3754
public:
55+
3856
struct GPUTPCTrackFitParam {
3957
float bethe, e, theta2, EP2, sigmadE2, k22, k33, k43, k44; // parameters
4058
};
4159

42-
GPUd() const GPUTPCBaseTrackParam& GetParam() const { return mParam; }
43-
GPUd() void SetParam(const GPUTPCBaseTrackParam& v) { mParam = v; }
44-
GPUd() void InitParam();
60+
GPUd() GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> GetParam() const { return mParam; }
61+
GPUd() void SetParam(GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> v) {
62+
mParam.mX = v.mX;
63+
mParam.mC[0] = v.mC[0];
64+
mParam.mC[1] = v.mC[1];
65+
mParam.mC[2] = v.mC[2];
66+
mParam.mC[3] = v.mC[3];
67+
mParam.mC[4] = v.mC[4];
68+
mParam.mC[5] = v.mC[5];
69+
mParam.mC[6] = v.mC[6];
70+
mParam.mC[7] = v.mC[7];
71+
mParam.mC[8] = v.mC[8];
72+
mParam.mC[9] = v.mC[9];
73+
mParam.mC[10] = v.mC[10];
74+
mParam.mC[11] = v.mC[11];
75+
mParam.mC[12] = v.mC[12];
76+
mParam.mC[13] = v.mC[13];
77+
mParam.mC[14] = v.mC[14];
78+
mParam.mZOffset = v.mZOffset;
79+
mParam.mP[0] = v.mP[0];
80+
mParam.mP[1] = v.mP[1];
81+
mParam.mP[2] = v.mP[2];
82+
mParam.mP[3] = v.mP[3];
83+
mParam.mP[4] = v.mP[4];
84+
}
85+
86+
GPUd() void InitParam()
87+
{
88+
// Initialize Tracklet Parameters using default values
89+
SetSinPhi(0);
90+
SetDzDs(0);
91+
SetQPt(0);
92+
SetSignCosPhi(1);
93+
SetChi2(0);
94+
SetNDF(-3);
95+
SetCov(0, 1);
96+
SetCov(1, 0);
97+
SetCov(2, 1);
98+
SetCov(3, 0);
99+
SetCov(4, 0);
100+
SetCov(5, 1);
101+
SetCov(6, 0);
102+
SetCov(7, 0);
103+
SetCov(8, 0);
104+
SetCov(9, 1);
105+
SetCov(10, 0);
106+
SetCov(11, 0);
107+
SetCov(12, 0);
108+
SetCov(13, 0);
109+
SetCov(14, 1000.f);
110+
SetZOffset(0);
111+
}
45112

46113
GPUd() float X() const { return mParam.X(); }
47114
GPUd() float Y() const { return mParam.Y(); }
@@ -94,8 +161,8 @@ class GPUTPCTrackParamSkeleton
94161
GPUd() void SetChi2(float v) { mChi2 = v; }
95162
GPUd() void SetNDF(int32_t v) { mNDF = v; }
96163

97-
GPUd() float GetDist2(const GPUTPCTrackParamSkeleton<F>& t) const;
98-
GPUd() float GetDistXZ2(const GPUTPCTrackParamSkeleton<F>& t) const;
164+
GPUd() float GetDist2(GPUTPCTrackParamSkeleton<wrapper::const_reference> t) const;
165+
GPUd() float GetDistXZ2(GPUTPCTrackParamSkeleton<wrapper::const_reference> t) const;
99166

100167
GPUd() float GetS(float x, float y, float Bz) const;
101168

@@ -142,11 +209,11 @@ class GPUTPCTrackParamSkeleton
142209
GPUd() void Print() const;
143210

144211
#ifndef GPUCA_GPUCODE
145-
private:
212+
//private:
146213
#endif //! GPUCA_GPUCODE
147214
GPUTPCBaseTrackParamSkeleton<F> mParam; // Track Parameters
148215

149-
private:
216+
//private:
150217
// WARNING, Track Param Data is copied in the GPU Tracklet Constructor element by element instead of using copy constructor!!!
151218
// This is neccessary for performance reasons!!!
152219
// Changes to Elements of this class therefore must also be applied to TrackletConstructor!!!
@@ -155,35 +222,42 @@ class GPUTPCTrackParamSkeleton
155222
F<int32_t> mNDF; // the Number of Degrees of Freedom
156223
};
157224

225+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetParam(GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> v) = delete;
226+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::InitParam() = delete;
227+
228+
template <> GPUhd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetPar(int32_t i, float v) = delete;
229+
template <> GPUhd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetCov(int32_t i, float v) = delete;
230+
231+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetX(float v) = delete;
232+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetY(float v) = delete;
233+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetZ(float v) = delete;
234+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetSinPhi(float v) = delete;
235+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetDzDs(float v) = delete;
236+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetQPt(float v) = delete;
237+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetZOffset(float v) = delete;
238+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetSignCosPhi(float v) = delete;
239+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetChi2(float v) = delete;
240+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::SetNDF(int32_t v) = delete;
241+
242+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToX(float x, float Bz, float maxSinPhi) = delete;
243+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToXWithMaterial(float x, float Bz, float maxSinPhi) = delete;
244+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToX(float x, GPUTPCTrackLinearisation& t0, float Bz, float maxSinPhi, float* DL) = delete;
245+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToX(float x, float sinPhi0, float cosPhi0, float Bz, float maxSinPhi) = delete;
246+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToXWithMaterial(float x, GPUTPCTrackLinearisation& t0, GPUTPCTrackFitParam& par, float Bz, float maxSinPhi) = delete;
247+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::TransportToXWithMaterial(float x, GPUTPCTrackFitParam& par, float Bz, float maxSinPhi) = delete;
248+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::CalculateFitParameters(GPUTPCTrackFitParam& par, float mass) = delete;
249+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::CorrectForMeanMaterial(float xOverX0, float xTimesRho, const GPUTPCTrackFitParam& par) = delete;
250+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::Rotate(float alpha, float maxSinPhi) = delete;
251+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::Rotate(float alpha, GPUTPCTrackLinearisation& t0, float maxSinPhi) = delete;
252+
template <> GPUd() bool GPUTPCTrackParamSkeleton<wrapper::const_reference>::Filter(float y, float z, float err2Y, float err2Z, float maxSinPhi, bool paramOnly) = delete;
253+
254+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::ShiftZ(float z1, float z2, float x1, float x2, float bz, float defaultZOffsetOverR) = delete;
255+
template <> GPUd() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::ConstrainZ(float& z, int32_t sector, float& z0, float& lastZ) = delete;
256+
257+
template <> GPUdi() void GPUTPCTrackParamSkeleton<wrapper::const_reference>::ConstrainSinPhi(float limit) = delete;
258+
158259
using GPUTPCTrackParam = GPUTPCTrackParamSkeleton<wrapper::value>;
159260

160-
template <>
161-
GPUdi() void GPUTPCTrackParam::InitParam()
162-
{
163-
// Initialize Tracklet Parameters using default values
164-
SetSinPhi(0);
165-
SetDzDs(0);
166-
SetQPt(0);
167-
SetSignCosPhi(1);
168-
SetChi2(0);
169-
SetNDF(-3);
170-
SetCov(0, 1);
171-
SetCov(1, 0);
172-
SetCov(2, 1);
173-
SetCov(3, 0);
174-
SetCov(4, 0);
175-
SetCov(5, 1);
176-
SetCov(6, 0);
177-
SetCov(7, 0);
178-
SetCov(8, 0);
179-
SetCov(9, 1);
180-
SetCov(10, 0);
181-
SetCov(11, 0);
182-
SetCov(12, 0);
183-
SetCov(13, 0);
184-
SetCov(14, 1000.f);
185-
SetZOffset(0);
186-
}
187261
} // namespace o2::gpu
188262

189263
#endif // GPUTPCTRACKPARAM_H

GPU/GPUTracking/SectorTracker/GPUTPCTracker.cxx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,12 @@ GPUhd() void* GPUTPCTracker::SetPointersTracklets(void* mem)
112112
{
113113
computePointerWithAlignment(mem, mTracklets.mFirstRow, mNMaxTracklets);
114114
computePointerWithAlignment(mem, mTracklets.mLastRow, mNMaxTracklets);
115-
computePointerWithAlignment(mem, mTracklets.mParam, mNMaxTracklets);
115+
116+
computePointerWithAlignment(mem, mTracklets.mParam.mX, mNMaxTracklets);
117+
computePointerWithAlignment(mem, mTracklets.mParam.mC, mNMaxTracklets);
118+
computePointerWithAlignment(mem, mTracklets.mParam.mZOffset, mNMaxTracklets);
119+
computePointerWithAlignment(mem, mTracklets.mParam.mP, mNMaxTracklets);
120+
116121
computePointerWithAlignment(mem, mTracklets.mHitWeight, mNMaxTracklets);
117122
computePointerWithAlignment(mem, mTracklets.mFirstHit, mNMaxTracklets);
118123
computePointerWithAlignment(mem, mTrackletRowHits, mNMaxRowHits);

GPU/GPUTracking/SectorTracker/GPUTPCTracker.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ class GPUTPCRow;
3838
class GPUTPCTracker : public GPUProcessor
3939
{
4040
public:
41-
template <class T> using pointer = T*;
42-
template <class T> using const_reference = const T&;
4341

4442
#ifndef GPUCA_GPUCODE_DEVICE
4543
GPUTPCTracker() = default;
@@ -82,13 +80,13 @@ class GPUTPCTracker : public GPUProcessor
8280
return (mCommonMem);
8381
}
8482

85-
GPUdi() static void GetErrors2Seeding(const GPUParam& param, char sector, int32_t iRow, const GPUTPCTrackParam& t, float time, float& ErrY2, float& ErrZ2)
83+
GPUdi() static void GetErrors2Seeding(const GPUParam& param, char sector, int32_t iRow, GPUTPCTrackParamSkeleton<wrapper::const_reference> t, float time, float& ErrY2, float& ErrZ2)
8684
{
8785
// param.GetClusterErrors2(sector, iRow, param.GetContinuousTracking() != 0. ? 125.f : t.Z(), t.SinPhi(), t.DzDs(), time, 0.f, 0.f, ErrY2, ErrZ2);
8886
param.GetClusterErrorsSeeding2(sector, iRow, param.par.continuousTracking != 0.f ? 125.f : t.Z(), t.SinPhi(), t.DzDs(), time, ErrY2, ErrZ2);
8987
}
9088

91-
GPUdi() void GetErrors2Seeding(int32_t iRow, const GPUTPCTrackParam& t, float time, float& ErrY2, float& ErrZ2) const
89+
GPUdi() void GetErrors2Seeding(int32_t iRow, GPUTPCTrackParamSkeleton<wrapper::const_reference> t, float time, float& ErrY2, float& ErrZ2) const
9290
{
9391
// Param().GetClusterErrors2(mISector, iRow, Param().GetContinuousTracking() != 0. ? 125.f : t.Z(), t.SinPhi(), t.DzDs(), time, 0.f, 0.f, ErrY2, ErrZ2);
9492
Param().GetClusterErrorsSeeding2(mISector, iRow, Param().par.continuousTracking != 0.f ? 125.f : t.Z(), t.SinPhi(), t.DzDs(), time, ErrY2, ErrZ2);
@@ -192,13 +190,13 @@ class GPUTPCTracker : public GPUProcessor
192190
return {
193191
mTracklets.mFirstRow[i],
194192
mTracklets.mLastRow[i],
195-
mTracklets.mParam[i],
193+
{{}, mTracklets.mParam.mX[i], mTracklets.mParam.mC[i], mTracklets.mParam.mZOffset[i], mTracklets.mParam.mP[i]},
196194
mTracklets.mHitWeight[i],
197195
mTracklets.mFirstHit[i]
198196
};
199197
}
200198

201-
GPUhd() GPUglobalref() GPUTPCTracklet_pointer Tracklets() const { return mTracklets; }
199+
GPUhd() GPUglobalref() GPUTPCTrackletSkeleton<wrapper::pointer> Tracklets() const { return mTracklets; }
202200
GPUhd() GPUglobalref() calink* TrackletRowHits() const { return mTrackletRowHits; }
203201

204202
GPUhd() GPUglobalref() GPUAtomic(uint32_t) * NTracks() const { return &mCommonMem->nTracks; }
@@ -252,7 +250,7 @@ class GPUTPCTracker : public GPUProcessor
252250
// event
253251
GPUglobalref() commonMemoryStruct* mCommonMem = nullptr; // common event memory
254252
GPUglobalref() GPUTPCHitId* mTrackletStartHits = nullptr; // start hits for the tracklets
255-
GPUglobalref() GPUTPCTracklet_pointer mTracklets;// tracklets
253+
GPUglobalref() GPUTPCTrackletSkeleton<wrapper::pointer> mTracklets; // tracklets
256254
GPUglobalref() calink* mTrackletRowHits = nullptr; // Hits for each Tracklet in each row
257255
GPUglobalref() GPUTPCTrackSkeleton<wrapper::value>* mTracks = nullptr; // reconstructed tracks
258256
GPUglobalref() GPUTPCHitId* mTrackHits = nullptr; // array of track hit numbers

GPU/GPUTracking/SectorTracker/GPUTPCTrackerDump.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ void GPUTPCTracker::DumpTrackHits(std::ostream& out)
101101
if (Tracks()[j].NHits() == 0) {
102102
continue;
103103
}
104-
const GPUTPCBaseTrackParam& p = Tracks()[j].Param();
104+
GPUTPCBaseTrackParamSkeleton<wrapper::const_reference> p = Tracks()[j].Param();
105105
out << " " << j << " x " << p.GetX() << " offset " << p.GetZOffset() << " y " << p.GetY() << " z " << p.GetZ() << " snp " << p.GetSinPhi() << " tgl " << p.GetDzDs() << " qpt " << p.GetQPt() << " - ";
106106
for (int32_t k = 0; k < 15; k++) {
107107
out << p.GetCov(k) << " ";

0 commit comments

Comments
 (0)