]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCATrackletConstructor.h
Temporary protection if one runs raw->sdigits for the real data.
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCATrackletConstructor.h
1 //-*- Mode: C++ -*-
2 // ************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project        *
4 // ALICE Experiment at CERN, All rights reserved.                         *
5 // See cxx source for full Copyright notice                               *
6 //                                                                        *
7 //*************************************************************************
8
9 #ifndef ALIHLTTPCCATRACKLETCONSTRUCTOR_H
10 #define ALIHLTTPCCATRACKLETCONSTRUCTOR_H
11
12 #ifdef HLTCA_GPUCODE
13 #define HLTCA_GPU_USE_INT short
14 #else
15 #define HLTCA_GPU_USE_INT int
16 #endif //HLTCA_GPUCODE
17
18 #include "AliHLTTPCCADef.h"
19 #include "AliHLTTPCCAGPUConfig.h"
20 #include "AliHLTTPCCATrackParam.h"
21
22 /**
23  * @class AliHLTTPCCATrackletConstructor
24  *
25  */
26 class AliHLTTPCCATracker;
27
28 class AliHLTTPCCATrackletConstructor
29 {
30   public:
31
32     class   AliHLTTPCCASharedMemory
33     {
34       friend class AliHLTTPCCATrackletConstructor; // friend class
35       public:
36 #if !defined(HLTCA_GPUCODE)
37         AliHLTTPCCASharedMemory()
38                         : fNextTrackletFirst(0), fNextTrackletCount(0), fNextTrackletNoDummy(0), fNextTrackletStupidDummy(0), fNextTrackletFirstRun(0), fNTracklets(0), fSliceDone(0) {}
39
40         AliHLTTPCCASharedMemory( const AliHLTTPCCASharedMemory& /*dummy*/ )
41                         : fNextTrackletFirst(0), fNextTrackletCount(0), fNextTrackletNoDummy(0), fNextTrackletStupidDummy(0), fNextTrackletFirstRun(0), fNTracklets(0), fSliceDone(0) {}
42         AliHLTTPCCASharedMemory& operator=( const AliHLTTPCCASharedMemory& /*dummy*/ ) { return *this; }
43 #endif //HLTCA_GPUCODE
44
45       protected:
46 #ifdef HLTCA_GPU_PREFETCHDATA
47         uint4 fData[2][ALIHLTTPCCATRACKLET_CONSTRUCTOR_TEMP_MEM / 4]; // temp memory
48                 AliHLTTPCCARow fRow[2]; // rows
49 #else
50       AliHLTTPCCARow fRows[HLTCA_ROW_COUNT]; // rows
51 #endif //HLTCA_GPU_PREFETCHDATA
52       int fNextTrackletFirst; //! to be commented by D.Rohr
53       int fNextTrackletCount; //! to be commented by D.Rohr
54       int fNextTrackletNoDummy; //! to be commented by D.Rohr
55       int fNextTrackletStupidDummy; //! to be commented by D.Rohr
56       int fNextTrackletFirstRun; //! to be commented by D.Rohr
57       int fNTracklets; // n tracklets
58       int fSliceDone; //! to be commented by D.Rohr
59
60       int fStartRows[HLTCA_GPU_THREAD_COUNT / HLTCA_GPU_WARP_SIZE + 1]; // start rows
61       int fEndRows[HLTCA_GPU_THREAD_COUNT / HLTCA_GPU_WARP_SIZE + 1]; // end rows
62
63 #ifdef HLTCA_GPU_TRACKLET_CONSTRUCTOR_DO_PROFILE
64       int fMaxSync; //! to be commented by D.Rohr
65 #endif //HLTCA_GPU_TRACKLET_CONSTRUCTOR_DO_PROFILE
66
67       int fTrackletStoreCount[2][HLTCA_ROW_COUNT / HLTCA_GPU_SCHED_ROW_STEP + 1];//! to be commented by D.Rohr
68     };
69
70     class  AliHLTTPCCAThreadMemory
71     {
72       friend class AliHLTTPCCATrackletConstructor; //! friend class
73       public:
74 #if !defined(HLTCA_GPUCODE)
75         AliHLTTPCCAThreadMemory()
76             : fItr( 0 ), fFirstRow( 0 ), fLastRow( 0 ), fStartRow( 0 ), fEndRow( 0 ), fCurrIH( 0 ), fGo( 0 ), fCurrentData( 0 ), fStage( 0 ), fNHits( 0 ), fNMissed( 0 ), fLastY( 0 ), fLastZ( 0 ) {}
77
78         AliHLTTPCCAThreadMemory( const AliHLTTPCCAThreadMemory& /*dummy*/ )
79             : fItr( 0 ), fFirstRow( 0 ), fLastRow( 0 ), fStartRow( 0 ), fEndRow( 0 ), fCurrIH( 0 ), fGo( 0 ), fCurrentData( 0 ), fStage( 0 ), fNHits( 0 ), fNMissed( 0 ), fLastY( 0 ), fLastZ( 0 ) {}
80         AliHLTTPCCAThreadMemory& operator=( const AliHLTTPCCAThreadMemory& /*dummy*/ ) { return *this; }
81 #endif //!HLTCA_GPUCODE
82
83       protected:
84         int fItr; // track index
85         int fFirstRow;  // first row index
86         int fLastRow; // last row index
87         int fStartRow;  // first row index
88         int fEndRow;  // first row index
89         int fCurrIH; // indef of the current hit
90         bool fGo; // do fit/searching flag
91         bool fCurrentData; // index of the current memory array
92         int fStage; // reco stage
93         int fNHits; // n track hits
94         int fNMissed; // n missed hits during search
95         float fLastY; // Y of the last fitted cluster
96         float fLastZ; // Z of the last fitted cluster
97     };
98
99         struct AliHLTTPCCAGPUTempMemory
100         {
101           AliHLTTPCCAThreadMemory fThreadMem;// thread memory
102           AliHLTTPCCATrackParam fParam;// parameters
103         };
104
105         GPUd() static void InitTracklet ( AliHLTTPCCATrackParam &tParam );
106
107     GPUd() static void ReadData( int iThread, AliHLTTPCCASharedMemory &s, AliHLTTPCCAThreadMemory &r, AliHLTTPCCATracker &tracker, int iRow );
108
109     GPUd() static void UpdateTracklet
110     ( int nBlocks, int nThreads, int iBlock, int iThread,
111       AliHLTTPCCASharedMemory &s, AliHLTTPCCAThreadMemory &r, AliHLTTPCCATracker &tracker, AliHLTTPCCATrackParam &tParam, int iRow );
112
113     GPUd() static void StoreTracklet
114     ( int nBlocks, int nThreads, int iBlock, int iThread,
115       AliHLTTPCCASharedMemory &s, AliHLTTPCCAThreadMemory &r, AliHLTTPCCATracker &tracker, AliHLTTPCCATrackParam &tParam );
116
117 #ifdef HLTCA_GPUCODE
118         GPUd() static void AliHLTTPCCATrackletConstructorGPU(AliHLTTPCCATracker *pTracker);
119         GPUd() static void AliHLTTPCCATrackletConstructorGPUPP(AliHLTTPCCATracker *pTracker);
120         GPUd() static int FetchTracklet(AliHLTTPCCATracker &tracker, AliHLTTPCCASharedMemory &sMem, int Reverse, int RowBlock, int &mustInit);
121         GPUd() static void AliHLTTPCCATrackletConstructorInit(int iTracklet, AliHLTTPCCATracker &tracke);
122         GPUd() static void CopyTrackletTempData( AliHLTTPCCAThreadMemory &rMemSrc, AliHLTTPCCAThreadMemory &rMemDst, AliHLTTPCCATrackParam &tParamSrc, AliHLTTPCCATrackParam &tParamDst);
123 #else
124         GPUd() static void AliHLTTPCCATrackletConstructorCPU(AliHLTTPCCATracker &tracker);
125 #endif //HLTCA_GPUCODE
126
127     GPUd() static bool SAVE() { return 1; }
128
129 #if defined(HLTCA_GPUCODE)
130     //GPUhd() inline int NMemThreads() { return 128; }
131 #define TRACKLET_CONSTRUCTOR_NMEMTHREDS HLTCA_GPU_TRACKLET_CONSTRUCTOR_NMEMTHREDS
132 #else
133     //GPUhd() inline int NMemThreads() { return 1; }
134 #define TRACKLET_CONSTRUCTOR_NMEMTHREDS 1
135 #endif //!HLTCA_GPUCODE
136
137 };
138
139 #endif //ALIHLTTPCCATRACKLETCONSTRUCTOR_H