3 // Original: AliHLTTrackArray.h,v 1.7 2004/06/11 16:06:33 loizides
4 #ifndef ALIHLTTPCTRACKARRAY_H
5 #define ALIHLTTPCTRACKARRAY_H
7 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
8 * See cxx source for full Copyright notice */
10 /** @file AliHLTTPCTrackArray.h
11 @author Uli Frankenfeld, maintained by Matthias Richter
13 @brief Array of AliHLTTPCTracks
16 #include "AliHLTTPCRootTypes.h"
18 class AliHLTTPCConfMapTrack;
20 class AliHLTTPCTrackSegmentData;
23 * @class AliHLTTPCTrackArray
24 * Array of AliHLTTrack objects.
25 * The class implements a dynamic array and handler methods.
27 class AliHLTTPCTrackArray {
29 /** default constructor */
30 AliHLTTPCTrackArray();
33 * @param ntrack initial size
35 AliHLTTPCTrackArray(Int_t ntrack);
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
45 AliHLTTPCTrackArray(char* tracktype,Int_t ntrack);
48 * @param tracktype string describing type, one of
49 * - AliHLTTPCTrack -> 't'
50 * - AliHLTTPCConfMapTrack -> 'c'
51 * - AliHLTTPCHoughTrack -> 'h'
52 * - AliHLTTPCModelTrack -> 'm'
54 AliHLTTPCTrackArray(char* tracktype);
55 /** not a valid copy constructor, defined according to effective C++ style */
56 AliHLTTPCTrackArray(const AliHLTTPCTrackArray&);
57 /** not a valid assignment op, but defined according to effective C++ style */
58 AliHLTTPCTrackArray& operator=(const AliHLTTPCTrackArray&);
60 virtual ~AliHLTTPCTrackArray();
65 * - 't' -> AliHLTTPCTrack
66 * - 'c' -> AliHLTTPCConfMapTrack
67 * - 'h' -> AliHLTTPCHoughTrack
68 * - 'm' -> AliHLTTPCModelTrack
70 Int_t GetTrackType(){return fTrackType;}
73 * Get size of the array.
74 * @return size of the array
76 Int_t GetSize() const {return fSize;}
80 * If the current size is smaller, the array is grown to the new size.
81 * @return kTRUE if the array was grown, kFALSE otherwise
83 Bool_t SetSize(Int_t newsize=2000);
85 Int_t GetNPresent() const {return (fNTracks- fNAbsent);}
86 Int_t GetNTracks() const {return fNTracks;}
87 AliHLTTPCTrack *NextTrack();
88 AliHLTTPCTrack *GetCheckedTrack(Int_t t){if(fIsPresent[t]) return fTrack[t]; return 0;}
89 AliHLTTPCTrack *GetTrack(Int_t t){return fTrack[t];}
91 void Remove(Int_t track);
92 void RemoveLast() {fNTracks--;}
96 void QSort( AliHLTTPCTrack **a, Int_t first, Int_t last);
97 Int_t TrackCompare(AliHLTTPCTrack *a, AliHLTTPCTrack *b) const;
100 * Fill track array from track segment array.
101 * Reads the track from an array of AliHLTTrackSegmentData. The coordinates
102 * are transformed to global coordinates if the slice parameter is specified.
103 * In that case to internal slice variable is set to zero.
104 * @param ntracks size of the input array
105 * @param tr array of AliHLTTrackSegmentData
106 * @param slice slice no to transform the tracks to
107 * @param bTransform transform to global coordinates if 1
109 void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr,Int_t slice=-1, Int_t bTransform=1);
111 UInt_t WriteTracks(AliHLTTPCTrackSegmentData* tr); //Write tracks
112 UInt_t WriteTracks(UInt_t & ntracks,AliHLTTPCTrackSegmentData* tr); //Write tracks
114 UInt_t GetOutCount(){return (UInt_t) GetNPresent();}
115 void AddTracks(AliHLTTPCTrackArray *newtrack,Bool_t remove_old=kTRUE,Int_t slice=-1);//add all Tracks to this
116 void AddLast(AliHLTTPCTrack *track);
118 AliHLTTPCTrack* operator[](int index);
122 Char_t fTrackType; //track type
123 Int_t fSize; //size of arra
124 Bool_t *fIsPresent;//!
125 Int_t fNAbsent; //ntracks absent
127 AliHLTTPCTrack **fTrack;//!
128 Int_t fNTracks; //ntracks in
130 UInt_t WriteConfMapTracks(AliHLTTPCTrackSegmentData* tr);
133 ClassDef(AliHLTTPCTrackArray,2) //Track array class