@@ -208,7 +208,6 @@ void GPUTRDTracker_t<TRDTRK, PROP>::DoTracking(GPUChainTracking* chainTracking)
208208 for (int iColl = 0 ; iColl < mNCollisions ; ++iColl) {
209209 int nTrklts = 0 ;
210210 if (mProcessPerTimeFrame ) {
211- // FIXME maybe two nested if statements are not so good in terms of performance?
212211 nTrklts = (iColl < mNCollisions - 1 ) ? mTriggerRecordIndices [iColl + 1 ] - mTriggerRecordIndices [iColl] : mNTracklets - mTriggerRecordIndices [iColl];
213212 } else {
214213 nTrklts = mNTracklets ;
@@ -498,7 +497,7 @@ GPUd() void GPUTRDTracker_t<TRDTRK, PROP>::DumpTracks()
498497 GPUInfo (" There are %i tracks loaded. mNMaxTracks(%i)\n " , mNTracks , mNMaxTracks );
499498 for (int i = 0 ; i < mNTracks ; ++i) {
500499 auto * trk = &(mTracks [i]);
501- GPUInfo (" track %i: x=%f, alpha=%f, nTracklets=%i, pt=%f" , i, trk->getX (), trk->getAlpha (), trk->GetNtracklets (), trk->getPt ());
500+ GPUInfo (" track %i: x=%f, alpha=%f, nTracklets=%i, pt=%f, time=%f " , i, trk->getX (), trk->getAlpha (), trk->GetNtracklets (), trk->getPt (), trk-> getTime ());
502501 }
503502}
504503
@@ -573,7 +572,8 @@ GPUd() bool GPUTRDTracker_t<TRDTRK, PROP>::CalculateSpacePoints(int iCollision)
573572 float c2 = 1 .f / (1 .f + t2); // cos^2 (tilt)
574573 float sy2 = 0 .1f * 0 .1f ; // sigma_rphi^2, currently assume sigma_rphi = 1 mm
575574
576- for (int trkltIdx = mTrackletIndexArray [idxOffset + iDet]; trkltIdx < mTrackletIndexArray [idxOffset + iDet + 1 ]; ++trkltIdx) {
575+ int trkltIdxOffset = mTriggerRecordIndices [iCollision];
576+ for (int trkltIdx = trkltIdxOffset + mTrackletIndexArray [idxOffset + iDet]; trkltIdx < trkltIdxOffset + mTrackletIndexArray [idxOffset + iDet + 1 ]; ++trkltIdx) {
577577 int trkltZbin = mTracklets [trkltIdx].GetZbin ();
578578 float sz2 = pp->GetRowSize (trkltZbin) * pp->GetRowSize (trkltZbin) / 12 .f ; // sigma_z = l_pad/sqrt(12) TODO try a larger z error
579579 My_Float xTrkltDet[3 ] = {0 .f }; // trklt position in chamber coordinates
@@ -639,6 +639,7 @@ GPUd() bool GPUTRDTracker_t<TRDTRK, PROP>::FollowProlongation(PROP* prop, TRDTRK
639639 int candidateIdxOffset = threadId * 2 * mNCandidates ;
640640 int hypothesisIdxOffset = threadId * mNCandidates ;
641641 int trkltIdxOffset = collisionId * (kNChambers + 1 );
642+ int glbTrkltIdxOffset = mTriggerRecordIndices [collisionId];
642643
643644 auto trkWork = t;
644645 if (mNCandidates > 1 ) {
@@ -750,7 +751,7 @@ GPUd() bool GPUTRDTracker_t<TRDTRK, PROP>::FollowProlongation(PROP* prop, TRDTRK
750751 }
751752 }
752753 // first propagate track to x of tracklet
753- for (int trkltIdx = mTrackletIndexArray [trkltIdxOffset + currDet]; trkltIdx < mTrackletIndexArray [trkltIdxOffset + currDet + 1 ]; ++trkltIdx) {
754+ for (int trkltIdx = glbTrkltIdxOffset + mTrackletIndexArray [trkltIdxOffset + currDet]; trkltIdx < glbTrkltIdxOffset + mTrackletIndexArray [trkltIdxOffset + currDet + 1 ]; ++trkltIdx) {
754755 if (CAMath::Abs (trkWork->getY () - mSpacePoints [trkltIdx].mX [0 ]) > roadY || CAMath::Abs (trkWork->getZ () - mSpacePoints [trkltIdx].mX [1 ]) > roadZ) {
755756 // skip tracklets which are too far away
756757 // although the radii of space points and tracks may differ by ~ few mm the roads are large enough to allow no efficiency loss by this cut
0 commit comments