Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCASliceOutTrack.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
10 #ifndef ALIHLTTPCCASLICEOUTTRACK_H
11 #define ALIHLTTPCCASLICEOUTTRACK_H
12
13 #include "AliHLTTPCCABaseTrackParam.h"
14 #include "AliHLTTPCCASliceOutCluster.h"
15
16 /**
17  * @class AliHLTTPCCASliceOutTrack
18  * AliHLTTPCCASliceOutTrack class is used to store TPC tracks,
19  * which are reconstructed by the TPCCATracker slice tracker.
20  *
21  * The class contains:
22  * - fitted track parameters at its first row, the covariance matrix, \Chi^2, NDF (number of degrees of freedom )
23  * - n of clusters assigned to the track
24  * - clusters in corresponding cluster arrays
25  *
26  * The class is used to transport the data between AliHLTTPCCATracker{Component} and AliHLTTPCCAGBMerger{Component}
27  *
28  */
29 class AliHLTTPCCASliceOutTrack
30 {
31   public:
32
33     GPUhd() int NClusters()                    const { return fNClusters;       }
34     GPUhd() const AliHLTTPCCABaseTrackParam &Param() const { return fParam;           }
35     GPUhd() const AliHLTTPCCASliceOutCluster &Cluster( int i ) const { return fClusters[i];           }
36     GPUhd() const AliHLTTPCCASliceOutCluster* Clusters() const { return fClusters;           }
37
38     GPUhd() void SetNClusters( int v )                   { fNClusters = v;       }
39     GPUhd() void SetParam( const AliHLTTPCCABaseTrackParam &v ) { fParam = v;           }
40     GPUhd() void SetCluster( int i, const AliHLTTPCCASliceOutCluster &v ) { fClusters[i] = v;           }
41     
42     GPUhd() static int GetSize( int nClust )  { return sizeof(AliHLTTPCCASliceOutTrack)+nClust*sizeof(AliHLTTPCCASliceOutCluster) ;}
43
44         GPUhd() int  LocalTrackId()        const { return fLocalTrackId; }
45         GPUhd() void SetLocalTrackId( int v )        { fLocalTrackId = v; }
46
47     GPUhd() AliHLTTPCCASliceOutTrack *NextTrack(){
48       return ( AliHLTTPCCASliceOutTrack*)( ((char*)this) + GetSize( fNClusters ) );
49     }
50
51     GPUhd() const AliHLTTPCCASliceOutTrack *GetNextTrack() const{
52       return ( AliHLTTPCCASliceOutTrack*)( ((char*)this) + GetSize( fNClusters ) );
53     }
54
55         GPUhd() static int MaxTrackId() { return(fgkMaxTrackIdInSlice); }
56
57   private:
58
59     AliHLTTPCCABaseTrackParam fParam; //* fitted track parameters at its innermost cluster
60     int fNClusters;             //* number of track clusters
61         int fLocalTrackId;                      //See AliHLTPCCATrack.h
62 #ifdef HLTCA_STANDALONE
63     AliHLTTPCCASliceOutCluster fClusters[1]; //* track clusters
64 #else
65     AliHLTTPCCASliceOutCluster fClusters[0]; //* track clusters
66 #endif
67         static const int fgkMaxTrackIdInSlice = 4096;
68 };
69
70
71 #endif