@@ -127,22 +127,23 @@ GPUdii() void GPUTPCGMO2Output::Thread<GPUTPCGMO2Output::output>(int32_t nBlocks
127127 for (int32_t iTmp = get_global_id (0 ); iTmp < nTracks; iTmp += get_global_size (0 )) {
128128 TrackTPC oTrack;
129129 const int32_t i = trackSort[iTmp].x ;
130- auto snpIn = tracks[i].GetParam ().GetSinPhi ();
130+ const auto & track = tracks[i];
131+ auto snpIn = track.GetParam ().GetSinPhi ();
131132 if (snpIn > SNPThresh) {
132133 snpIn = SNPThresh;
133134 } else if (snpIn < -SNPThresh) {
134135 snpIn = -SNPThresh;
135136 }
136- oTrack.set (tracks[i] .GetParam ().GetX (), tracks[i] .GetAlpha (),
137- {tracks[i] .GetParam ().GetY (), tracks[i] .GetParam ().GetZ (), snpIn, tracks[i] .GetParam ().GetDzDs (), tracks[i] .GetParam ().GetQPt ()},
138- {tracks[i] .GetParam ().GetCov (0 ),
139- tracks[i] .GetParam ().GetCov (1 ), tracks[i] .GetParam ().GetCov (2 ),
140- tracks[i] .GetParam ().GetCov (3 ), tracks[i] .GetParam ().GetCov (4 ), tracks[i] .GetParam ().GetCov (5 ),
141- tracks[i] .GetParam ().GetCov (6 ), tracks[i] .GetParam ().GetCov (7 ), tracks[i] .GetParam ().GetCov (8 ), tracks[i] .GetParam ().GetCov (9 ),
142- tracks[i] .GetParam ().GetCov (10 ), tracks[i] .GetParam ().GetCov (11 ), tracks[i] .GetParam ().GetCov (12 ), tracks[i] .GetParam ().GetCov (13 ), tracks[i] .GetParam ().GetCov (14 )});
137+ oTrack.set (track .GetParam ().GetX (), track .GetAlpha (),
138+ {track .GetParam ().GetY (), track .GetParam ().GetZ (), snpIn, track .GetParam ().GetDzDs (), track .GetParam ().GetQPt ()},
139+ {track .GetParam ().GetCov (0 ),
140+ track .GetParam ().GetCov (1 ), track .GetParam ().GetCov (2 ),
141+ track .GetParam ().GetCov (3 ), track .GetParam ().GetCov (4 ), track .GetParam ().GetCov (5 ),
142+ track .GetParam ().GetCov (6 ), track .GetParam ().GetCov (7 ), track .GetParam ().GetCov (8 ), track .GetParam ().GetCov (9 ),
143+ track .GetParam ().GetCov (10 ), track .GetParam ().GetCov (11 ), track .GetParam ().GetCov (12 ), track .GetParam ().GetCov (13 ), track .GetParam ().GetCov (14 )});
143144
144- oTrack.setChi2 (tracks[i] .GetParam ().GetChi2 ());
145- auto & outerPar = tracks[i] .OuterParam ();
145+ oTrack.setChi2 (track .GetParam ().GetChi2 ());
146+ auto & outerPar = track .OuterParam ();
146147 if GPUCA_RTC_CONSTEXPR (GPUCA_GET_CONSTEXPR (param.par , dodEdx)) {
147148 if (param.dodEdxEnabled ) {
148149 oTrack.setdEdx (tracksdEdx[i]);
@@ -189,13 +190,13 @@ GPUdii() void GPUTPCGMO2Output::Thread<GPUTPCGMO2Output::output>(int32_t nBlocks
189190 float t1 = 0 , t2 = 0 ;
190191 int32_t sector1 = 0 , sector2 = 0 ;
191192 const o2::tpc::ClusterNativeAccess* GPUrestrict () clusters = merger.GetConstantMem ()->ioPtrs .clustersNative ;
192- for (uint32_t j = 0 ; j < tracks[i] .NClusters (); j++) {
193- if ((trackClusters[tracks[i] .FirstClusterRef () + j].state & flagsReject) || (merger.ClusterAttachment ()[trackClusters[tracks[i] .FirstClusterRef () + j].num ] & flagsRequired) != flagsRequired) {
193+ for (uint32_t j = 0 ; j < track .NClusters (); j++) {
194+ if ((trackClusters[track .FirstClusterRef () + j].state & flagsReject) || (merger.ClusterAttachment ()[trackClusters[track .FirstClusterRef () + j].num ] & flagsRequired) != flagsRequired) {
194195 continue ;
195196 }
196- int32_t clusterIdGlobal = trackClusters[tracks[i] .FirstClusterRef () + j].num ;
197- int32_t sector = trackClusters[tracks[i] .FirstClusterRef () + j].sector ;
198- int32_t globalRow = trackClusters[tracks[i] .FirstClusterRef () + j].row ;
197+ int32_t clusterIdGlobal = trackClusters[track .FirstClusterRef () + j].num ;
198+ int32_t sector = trackClusters[track .FirstClusterRef () + j].sector ;
199+ int32_t globalRow = trackClusters[track .FirstClusterRef () + j].row ;
199200 int32_t clusterIdInRow = clusterIdGlobal - clusters->clusterOffset [sector][globalRow];
200201 clIndArr[nOutCl2] = clusterIdInRow;
201202 sectorIndexArr[nOutCl2] = sector;
@@ -210,25 +211,25 @@ GPUdii() void GPUTPCGMO2Output::Thread<GPUTPCGMO2Output::output>(int32_t nBlocks
210211 }
211212 }
212213
213- bool cce = tracks[i] .CCE () && ((sector1 < MAXSECTOR / 2 ) ^ (sector2 < MAXSECTOR / 2 ));
214+ bool cce = track .CCE () && ((sector1 < MAXSECTOR / 2 ) ^ (sector2 < MAXSECTOR / 2 ));
214215 float time0 = 0 .f , tFwd = 0 .f , tBwd = 0 .f ;
215216 if (merger.Param ().par .continuousTracking ) {
216- time0 = tracks[i] .GetParam ().GetTZOffset ();
217+ time0 = track .GetParam ().GetTZOffset ();
217218 if (cce) {
218- bool lastSide = trackClusters[tracks[i] .FirstClusterRef ()].sector < MAXSECTOR / 2 ;
219+ bool lastSide = trackClusters[track .FirstClusterRef ()].sector < MAXSECTOR / 2 ;
219220 float delta = 0 .f ;
220- for (uint32_t iCl = 1 ; iCl < tracks[i] .NClusters (); iCl++) {
221- auto & cacl1 = trackClusters[tracks[i] .FirstClusterRef () + iCl];
221+ for (uint32_t iCl = 1 ; iCl < track .NClusters (); iCl++) {
222+ auto & cacl1 = trackClusters[track .FirstClusterRef () + iCl];
222223 if (lastSide ^ (cacl1.sector < MAXSECTOR / 2 )) {
223224 auto & cl1 = clusters->clustersLinear [cacl1.num ];
224- auto & cl2 = clusters->clustersLinear [trackClusters[tracks[i] .FirstClusterRef () + iCl - 1 ].num ];
225+ auto & cl2 = clusters->clustersLinear [trackClusters[track .FirstClusterRef () + iCl - 1 ].num ];
225226 delta = CAMath::Abs (cl1.getTime () - cl2.getTime ()) * 0 .5f ;
226- if (delta < MinDelta) {
227- delta = MinDelta;
228- }
229227 break ;
230228 }
231229 }
230+ if (delta < MinDelta) {
231+ delta = MinDelta;
232+ }
232233 tFwd = tBwd = delta;
233234 } else {
234235 // estimate max/min time increments which still keep track in the physical limits of the TPC
@@ -261,7 +262,7 @@ GPUdii() void GPUTPCGMO2Output::Thread<GPUTPCGMO2Output::output>(int32_t nBlocks
261262 if (cce) {
262263 oTrack.setHasCSideClusters ();
263264 oTrack.setHasASideClusters ();
264- } else if (tracks[i] .CSide ()) {
265+ } else if (track .CSide ()) {
265266 oTrack.setHasCSideClusters ();
266267 } else {
267268 oTrack.setHasASideClusters ();
0 commit comments