]>
Commit | Line | Data |
---|---|---|
4fdaad1e | 1 | // -*- Mode: C++ -*- |
a6c02c85 | 2 | // @(#) $Id$ |
4aa41877 | 3 | // Original: AliHLTTrackArray.h,v 1.7 2004/06/11 16:06:33 loizides |
a6c02c85 | 4 | #ifndef ALIHLTTPCTRACKARRAY_H |
5 | #define ALIHLTTPCTRACKARRAY_H | |
6 | ||
4fdaad1e | 7 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
8 | * See cxx source for full Copyright notice */ | |
9 | ||
10 | /** @file AliHLTTPCTrackArray.h | |
11 | @author Uli Frankenfeld, maintained by Matthias Richter | |
12 | @date | |
13 | @brief Array of AliHLTTPCTracks | |
14 | */ | |
15 | ||
a6c02c85 | 16 | #include "AliHLTTPCRootTypes.h" |
17 | ||
18 | class AliHLTTPCConfMapTrack; | |
19 | class AliHLTTPCTrack; | |
20 | class AliHLTTPCTrackSegmentData; | |
21 | ||
4fdaad1e | 22 | /** |
23 | * @class AliHLTTPCTrackArray | |
24 | * Array of AliHLTTrack objects. | |
25 | * The class implements a dynamic array and handler methods. | |
26 | */ | |
a6c02c85 | 27 | class AliHLTTPCTrackArray { |
a6c02c85 | 28 | public: |
4fdaad1e | 29 | /** default constructor */ |
a6c02c85 | 30 | AliHLTTPCTrackArray(); |
4fdaad1e | 31 | /** |
32 | * constructor | |
33 | * @param ntrack initial size | |
34 | */ | |
a6c02c85 | 35 | AliHLTTPCTrackArray(Int_t ntrack); |
4fdaad1e | 36 | /** |
37 | * constructor | |
38 | * @param tracktype string describing type, one of | |
39 | * - AliHLTTPCTrack -> 't' | |
40 | * - AliHLTTPCConfMapTrack -> 'c' | |
41 | * - AliHLTTPCHoughTrack -> 'h' | |
42 | * - AliHLTTPCModelTrack -> 'm' | |
43 | * @param ntrack initial size | |
44 | */ | |
a6c02c85 | 45 | AliHLTTPCTrackArray(char* tracktype,Int_t ntrack); |
4fdaad1e | 46 | /** |
47 | * constructor | |
48 | * @param tracktype string describing type, one of | |
49 | * - AliHLTTPCTrack -> 't' | |
50 | * - AliHLTTPCConfMapTrack -> 'c' | |
51 | * - AliHLTTPCHoughTrack -> 'h' | |
52 | * - AliHLTTPCModelTrack -> 'm' | |
53 | */ | |
a6c02c85 | 54 | AliHLTTPCTrackArray(char* tracktype); |
4fdaad1e | 55 | /** destructor */ |
a6c02c85 | 56 | virtual ~AliHLTTPCTrackArray(); |
4fdaad1e | 57 | |
58 | /** | |
59 | * Get type of track. | |
60 | * @return one of | |
61 | * - 't' -> AliHLTTPCTrack | |
62 | * - 'c' -> AliHLTTPCConfMapTrack | |
63 | * - 'h' -> AliHLTTPCHoughTrack | |
64 | * - 'm' -> AliHLTTPCModelTrack | |
65 | */ | |
a6c02c85 | 66 | Int_t GetTrackType(){return fTrackType;} |
4fdaad1e | 67 | |
68 | /** | |
69 | * Get size of the array. | |
70 | * @return size of the array | |
71 | */ | |
a6c02c85 | 72 | Int_t GetSize() const {return fSize;} |
4fdaad1e | 73 | |
74 | /** | |
75 | * Set size. | |
76 | * If the current size is smaller, the array is grown to the new size. | |
77 | * @return kTRUE if the array was grown, kFALSE otherwise | |
78 | */ | |
a6c02c85 | 79 | Bool_t SetSize(Int_t newsize=2000); |
80 | ||
81 | Int_t GetNPresent() const {return (fNTracks- fNAbsent);} | |
82 | Int_t GetNTracks() const {return fNTracks;} | |
83 | AliHLTTPCTrack *NextTrack(); | |
84 | AliHLTTPCTrack *GetCheckedTrack(Int_t t){if(fIsPresent[t]) return fTrack[t]; return 0;} | |
85 | AliHLTTPCTrack *GetTrack(Int_t t){return fTrack[t];} | |
86 | ||
87 | void Remove(Int_t track); | |
88 | void RemoveLast() {fNTracks--;} | |
89 | void Compress(); | |
90 | void Reset(); | |
91 | void QSort(); | |
92 | void QSort( AliHLTTPCTrack **a, Int_t first, Int_t last); | |
93 | Int_t TrackCompare(AliHLTTPCTrack *a, AliHLTTPCTrack *b) const; | |
94 | ||
4fdaad1e | 95 | /** |
96 | * Fill track array from track segment array. | |
97 | * Reads the track from an array of AliHLTTrackSegmentData. The coordinates | |
98 | * are transformed to global coordinates if the slice parameter is specified. | |
99 | * In that case to internal slice variable is set to zero. | |
100 | * @param ntracks size of the input array | |
101 | * @param tr array of AliHLTTrackSegmentData | |
102 | * @param slice slice no to transform the tracks to | |
103 | * @param bTransform transform to global coordinates if 1 | |
104 | */ | |
105 | void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr,Int_t slice=-1, Int_t bTransform=1); | |
106 | ||
a6c02c85 | 107 | UInt_t WriteTracks(AliHLTTPCTrackSegmentData* tr); //Write tracks |
108 | UInt_t WriteTracks(UInt_t & ntracks,AliHLTTPCTrackSegmentData* tr); //Write tracks | |
109 | UInt_t GetOutSize(); | |
110 | UInt_t GetOutCount(){return (UInt_t) GetNPresent();} | |
111 | void AddTracks(AliHLTTPCTrackArray *newtrack,Bool_t remove_old=kTRUE,Int_t slice=-1);//add all Tracks to this | |
112 | void AddLast(AliHLTTPCTrack *track); | |
113 | ||
3cde846d | 114 | AliHLTTPCTrack* operator[](int index); |
115 | ||
4fdaad1e | 116 | private: |
8f8bf0af | 117 | /** copy constructor prohibited */ |
118 | AliHLTTPCTrackArray(const AliHLTTPCTrackArray&); | |
119 | /** assignment operator prohibited */ | |
120 | AliHLTTPCTrackArray& operator=(const AliHLTTPCTrackArray&); | |
4fdaad1e | 121 | |
122 | Char_t fTrackType; //track type | |
123 | Int_t fSize; //size of arra | |
124 | Bool_t *fIsPresent;//! | |
125 | Int_t fNAbsent; //ntracks absent | |
126 | ||
127 | AliHLTTPCTrack **fTrack;//! | |
128 | Int_t fNTracks; //ntracks in | |
129 | ||
130 | UInt_t WriteConfMapTracks(AliHLTTPCTrackSegmentData* tr); | |
131 | void DeleteArray(); | |
132 | ||
3cde846d | 133 | ClassDef(AliHLTTPCTrackArray,2) //Track array class |
a6c02c85 | 134 | }; |
135 | ||
136 | #endif |