LCOV - code coverage report
Current view: top level - HLT/TPCLib/tracking-ca - AliHLTTPCCAStartHitsFinder.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 28 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 1 0.0 %

          Line data    Source code
       1             : // @(#) $Id: AliHLTTPCCAStartHitsFinder.cxx 27042 2008-07-02 12:06:02Z richterm $
       2             : // **************************************************************************
       3             : // This file is property of and copyright by the ALICE HLT Project          *
       4             : // ALICE Experiment at CERN, All rights reserved.                           *
       5             : //                                                                          *
       6             : // Primary Authors: Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de> *
       7             : //                  Ivan Kisel <kisel@kip.uni-heidelberg.de>                *
       8             : //                  for The ALICE HLT Project.                              *
       9             : //                                                                          *
      10             : // Permission to use, copy, modify and distribute this software and its     *
      11             : // documentation strictly for non-commercial purposes is hereby granted     *
      12             : // without fee, provided that the above copyright notice appears in all     *
      13             : // copies and that both the copyright notice and this permission notice     *
      14             : // appear in the supporting documentation. The authors make no claims       *
      15             : // about the suitability of this software for any purpose. It is            *
      16             : // provided "as is" without express or implied warranty.                    *
      17             : //                                                                          *
      18             : //***************************************************************************
      19             : 
      20             : #include "AliHLTTPCCAStartHitsFinder.h"
      21             : #include "AliHLTTPCCATracker.h"
      22             : #include "AliHLTTPCCAMath.h"
      23             : 
      24             : GPUdi() void AliHLTTPCCAStartHitsFinder::Thread
      25             : ( int /*nBlocks*/, int nThreads, int iBlock, int iThread, int iSync,
      26             :   GPUsharedref() MEM_LOCAL(AliHLTTPCCASharedMemory) &s, GPUconstant() MEM_CONSTANT(AliHLTTPCCATracker) &tracker )
      27             : {
      28             :   // find start hits for tracklets
      29             : 
      30           0 :   if ( iSync == 0 ) {
      31           0 :     if ( iThread == 0 ) {
      32           0 :       s.fNRows = tracker.Param().NRows();
      33           0 :       s.fIRow = iBlock + 1;
      34           0 :       s.fNRowStartHits = 0;
      35           0 :       if ( s.fIRow <= s.fNRows - 4 ) {
      36           0 :         s.fNHits = tracker.Row( s.fIRow ).NHits();
      37           0 :         if ( s.fNHits >= ALIHLTTPCCASTARTHITSFINDER_MAX_FROWSTARTHITS ) s.fNHits = ALIHLTTPCCASTARTHITSFINDER_MAX_FROWSTARTHITS - 1;
      38           0 :       } else s.fNHits = -1;
      39             :     }
      40           0 :   } else if ( iSync == 1 ) {
      41             : #ifdef HLTCA_GPUCODE
      42             :     GPUsharedref() volatile int *xxx = &(s.fIRow);
      43             :     GPUglobalref() const MEM_GLOBAL(AliHLTTPCCARow) &row = tracker.Row( *xxx );
      44             :         GPUglobalref() const MEM_GLOBAL(AliHLTTPCCARow) &rowUp = tracker.Row( (*xxx) + 2 );
      45             : #else
      46           0 :     const AliHLTTPCCARow &row = tracker.Row( s.fIRow );
      47           0 :         const AliHLTTPCCARow &rowUp = tracker.Row( s.fIRow + 2 );
      48             : #endif
      49           0 :     for ( int ih = iThread; ih < s.fNHits; ih += nThreads ) {
      50           0 :       if (tracker.HitLinkDownData(row, ih) < 0 && tracker.HitLinkUpData(row, ih) >= 0 && tracker.HitLinkUpData(rowUp, tracker.HitLinkUpData(row, ih)) >= 0) {
      51           0 :         int oldNRowStartHits = CAMath::AtomicAddShared( &s.fNRowStartHits, 1 );
      52             : #ifdef HLTCA_GPUCODE
      53             :         s.fRowStartHits[oldNRowStartHits].Set( *xxx, ih );
      54             : #else
      55           0 :         s.fRowStartHits[oldNRowStartHits].Set( s.fIRow, ih );
      56             : #endif
      57           0 :       }
      58             :     }
      59           0 :   } else if ( iSync == 2 ) {
      60           0 :     if ( iThread == 0 ) {
      61           0 :           int nOffset = CAMath::AtomicAdd( tracker.NTracklets(), s.fNRowStartHits );
      62             : #ifdef HLTCA_GPUCODE
      63             :           if (nOffset + s.fNRowStartHits >= HLTCA_GPU_MAX_TRACKLETS)
      64             :           {
      65             :                 tracker.GPUParameters()->fGPUError = HLTCA_GPU_ERROR_TRACKLET_OVERFLOW;
      66             :                 CAMath::AtomicExch( tracker.NTracklets(), 0 );
      67             :                 nOffset = 0;
      68             :           }
      69             : #endif
      70           0 :       s.fNOldStartHits = nOffset;
      71             : #ifdef HLTCA_GPU_SORT_STARTHITS
      72             :       GPUsharedref() volatile int *yyy = &(s.fIRow);
      73             :           tracker.RowStartHitCountOffset()[*yyy].x = s.fNRowStartHits;
      74             :           tracker.RowStartHitCountOffset()[*yyy].y = nOffset;
      75             : #endif
      76           0 :     }
      77           0 :   } else if ( iSync == 3 ) {
      78             : #ifdef HLTCA_GPU_SORT_STARTHITS
      79             :         GPUglobalref() AliHLTTPCCAHitId *const startHits = tracker.TrackletTmpStartHits();
      80             : #else
      81           0 :     GPUglobalref() AliHLTTPCCAHitId *const startHits = tracker.TrackletStartHits();
      82             : #endif
      83           0 :     for ( int ish = iThread; ish < s.fNRowStartHits; ish += nThreads ) {
      84           0 :       startHits[s.fNOldStartHits+ish] = s.fRowStartHits[ish];
      85             :     }
      86           0 :   }
      87           0 : }
      88             : 

Generated by: LCOV version 1.11