2323#include " GPUCommonMath.h"
2424#include " GPUCommonAlgorithm.h"
2525#include " GPUConstantMem.h"
26+ #include " GPUTRDRecoParam.h"
2627
2728using namespace o2 ::gpu;
2829
@@ -92,7 +93,7 @@ void* GPUTRDTracker_t<TRDTRK, PROP>::SetPointersTracks(void* base)
9293}
9394
9495template <class TRDTRK , class PROP >
95- GPUTRDTracker_t<TRDTRK, PROP>::GPUTRDTracker_t() : mR (nullptr ), mIsInitialized (false ), mGenerateSpacePoints (false ), mProcessPerTimeFrame (false ), mNAngleHistogramBins (25 ), mAngleHistogramRange (50 ), mMemoryPermanent (-1 ), mMemoryTracklets (-1 ), mMemoryTracks (-1 ), mNMaxCollisions (0 ), mNMaxTracks (0 ), mNMaxSpacePoints (0 ), mTracks (nullptr ), mTrackAttribs (nullptr ), mNCandidates (1 ), mNTracks (0 ), mNEvents (0 ), mMaxBackendThreads (100 ), mTrackletIndexArray (nullptr ), mHypothesis (nullptr ), mCandidates (nullptr ), mSpacePoints (nullptr ), mGeo (nullptr ), mRPhiA2 ( 0 ), mRPhiB ( 0 ), mRPhiC2 ( 0 ), mDyA2 ( 0 ), mDyB ( 0 ), mDyC2 ( 0 ), mAngleToDyA ( 0 ), mAngleToDyB ( 0 ), mAngleToDyC ( 0 ), mDebugOutput (false ), mMaxEta (0 .84f ), mRoadZ (18 .f), mZCorrCoefNRC (1 .4f ), mTPCVdrift (2 .58f ), mTPCTDriftOffset (0 .f), mDebug (new GPUTRDTrackerDebug<TRDTRK>())
96+ GPUTRDTracker_t<TRDTRK, PROP>::GPUTRDTracker_t() : mR (nullptr ), mIsInitialized (false ), mGenerateSpacePoints (false ), mProcessPerTimeFrame (false ), mNAngleHistogramBins (25 ), mAngleHistogramRange (50 ), mMemoryPermanent (-1 ), mMemoryTracklets (-1 ), mMemoryTracks (-1 ), mNMaxCollisions (0 ), mNMaxTracks (0 ), mNMaxSpacePoints (0 ), mTracks (nullptr ), mTrackAttribs (nullptr ), mNCandidates (1 ), mNTracks (0 ), mNEvents (0 ), mMaxBackendThreads (100 ), mTrackletIndexArray (nullptr ), mHypothesis (nullptr ), mCandidates (nullptr ), mSpacePoints (nullptr ), mGeo (nullptr ), mRecoParam ( nullptr ), mDebugOutput (false ), mMaxEta (0 .84f ), mRoadZ (18 .f), mZCorrCoefNRC (1 .4f ), mTPCVdrift (2 .58f ), mTPCTDriftOffset (0 .f), mDebug (new GPUTRDTrackerDebug<TRDTRK>())
9697{
9798 // --------------------------------------------------------------------
9899 // Default constructor
@@ -114,9 +115,8 @@ void GPUTRDTracker_t<TRDTRK, PROP>::InitializeProcessor()
114115 // --------------------------------------------------------------------
115116 // Initialise tracker
116117 // --------------------------------------------------------------------
117-
118+ mRecoParam = GetConstantMem ()-> calibObjects . trdRecoParam ;
118119 UpdateGeometry ();
119-
120120 mDebug ->ExpandVectors ();
121121 mIsInitialized = true ;
122122}
@@ -131,42 +131,6 @@ void GPUTRDTracker_t<TRDTRK, PROP>::UpdateGeometry()
131131 if (!mGeo ) {
132132 GPUFatal (" TRD geometry must be provided externally" );
133133 }
134- float Bz = Param ().bzkG ;
135- float resRPhiIdeal2 = Param ().rec .trd .trkltResRPhiIdeal * Param ().rec .trd .trkltResRPhiIdeal ;
136- GPUInfo (" Initializing with B-field: %f kG" , Bz);
137- if (CAMath::Abs (CAMath::Abs (Bz) - 2 ) < 0 .1f ) {
138- // magnetic field +-0.2 T
139- if (Bz > 0 ) {
140- GPUInfo (" Loading error parameterization for Bz = +2 kG" );
141- mRPhiA2 = resRPhiIdeal2, mRPhiB = -1 .43e-2f , mRPhiC2 = 4 .55e-2f ;
142- mDyA2 = 1 .225e-3f , mDyB = -9 .8e-3f , mDyC2 = 3 .88e-2f ;
143- mAngleToDyA = -0 .1f , mAngleToDyB = 1 .89f , mAngleToDyC = -0 .4f ;
144- } else {
145- GPUInfo (" Loading error parameterization for Bz = -2 kG" );
146- mRPhiA2 = resRPhiIdeal2, mRPhiB = 1 .43e-2f , mRPhiC2 = 4 .55e-2f ;
147- mDyA2 = 1 .225e-3f , mDyB = 9 .8e-3f , mDyC2 = 3 .88e-2f ;
148- mAngleToDyA = 0 .1f , mAngleToDyB = 1 .89f , mAngleToDyC = 0 .4f ;
149- }
150- } else if (CAMath::Abs (CAMath::Abs (Bz) - 5 ) < 0 .1f ) {
151- // magnetic field +-0.5 T
152- if (Bz > 0 ) {
153- GPUInfo (" Loading error parameterization for Bz = +5 kG" );
154- mRPhiA2 = resRPhiIdeal2, mRPhiB = 0 .125f , mRPhiC2 = 0 .0961f ;
155- mDyA2 = 1 .681e-3f , mDyB = 0 .15f , mDyC2 = 0 .1849f ;
156- mAngleToDyA = 0 .13f , mAngleToDyB = 2 .43f , mAngleToDyC = -0 .58f ;
157- } else {
158- GPUInfo (" Loading error parameterization for Bz = -5 kG" );
159- mRPhiA2 = resRPhiIdeal2, mRPhiB = -0 .14f , mRPhiC2 = 0 .1156f ;
160- mDyA2 = 2 .209e-3f , mDyB = -0 .15f , mDyC2 = 0 .2025f ;
161- mAngleToDyA = -0 .15f , mAngleToDyB = 2 .34f , mAngleToDyC = 0 .56f ;
162- }
163- } else {
164- // magnetic field 0 T or another value which is not covered by the error parameterizations
165- // using default values instead
166- GPUWarning (" No error parameterization available for Bz = %.2f kG. Keeping default value (sigma_y = const. = 1cm)" , Bz);
167- mRPhiA2 = 1 .f ;
168- }
169-
170134 // obtain average radius of TRD chambers
171135 float x0[kNLayers ] = {300 .2f , 312 .8f , 325 .4f , 338 .0f , 350 .6f , 363 .2f }; // used as default value in case no transformation matrix can be obtained
172136 auto * matrix = mGeo ->GetClusterMatrix (0 );
@@ -967,7 +931,7 @@ GPUd() void GPUTRDTracker_t<TRDTRK, PROP>::RecalcTrkltCov(const float tilt, cons
967931 // --------------------------------------------------------------------
968932 float t2 = tilt * tilt; // tan^2 (tilt)
969933 float c2 = 1 .f / (1 .f + t2); // cos^2 (tilt)
970- float sy2 = GetRPhiRes (snp);
934+ float sy2 = mRecoParam -> getRPhiRes (snp);
971935 float sz2 = rowSize * rowSize / 12 .f ;
972936 cov[0 ] = c2 * (sy2 + t2 * sz2);
973937 cov[1 ] = c2 * tilt * (sz2 - sy2);
@@ -977,8 +941,8 @@ GPUd() void GPUTRDTracker_t<TRDTRK, PROP>::RecalcTrkltCov(const float tilt, cons
977941template <class TRDTRK , class PROP >
978942GPUd () float GPUTRDTracker_t<TRDTRK, PROP>::GetAngularPull(float dYtracklet, float snp) const
979943{
980- float dYtrack = ConvertAngleToDy (snp);
981- float dYresolution = GetAngularResolution (snp);
944+ float dYtrack = mRecoParam -> convertAngleToDy (snp);
945+ float dYresolution = mRecoParam -> getDyRes (snp);
982946 if (dYresolution < 1e-6f ) {
983947 return 999 .f ;
984948 }
0 commit comments