L3 becomes HLT
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCTrackArray.h
1 // @(#) $Id$
2 // Original: AliHLTTrackArray.h,v 1.7 2004/06/11 16:06:33 loizides 
3 #ifndef ALIHLTTPCTRACKARRAY_H
4 #define ALIHLTTPCTRACKARRAY_H
5
6 #include "AliHLTTPCRootTypes.h"
7
8 class AliHLTTPCConfMapTrack;
9 class AliHLTTPCTrack;
10 class AliHLTTPCTrackSegmentData;
11
12 class AliHLTTPCTrackArray {
13
14  private:
15
16   Char_t fTrackType; //track type
17   Int_t fSize; //size of arra
18   Bool_t *fIsPresent;//!
19   Int_t fNAbsent; //ntracks absent
20
21   AliHLTTPCTrack **fTrack;//!
22   Int_t fNTracks; //ntracks in
23
24   UInt_t WriteConfMapTracks(AliHLTTPCTrackSegmentData* tr); 
25   void DeleteArray();
26
27  public:
28   AliHLTTPCTrackArray();
29   AliHLTTPCTrackArray(Int_t ntrack);
30   AliHLTTPCTrackArray(char* tracktype,Int_t ntrack);
31   AliHLTTPCTrackArray(char* tracktype);
32   virtual ~AliHLTTPCTrackArray();
33   Int_t GetTrackType(){return fTrackType;}
34   Int_t GetSize() const {return fSize;}
35   Bool_t SetSize(Int_t newsize=2000);
36
37   Int_t GetNPresent() const {return (fNTracks- fNAbsent);}
38   Int_t GetNTracks() const {return fNTracks;}
39   AliHLTTPCTrack *NextTrack();
40   AliHLTTPCTrack *GetCheckedTrack(Int_t t){if(fIsPresent[t]) return fTrack[t]; return 0;}
41   AliHLTTPCTrack *GetTrack(Int_t t){return fTrack[t];}
42
43   void Remove(Int_t track); 
44   void RemoveLast() {fNTracks--;}
45   void Compress();
46   void Reset();
47   void QSort();
48   void QSort( AliHLTTPCTrack **a, Int_t first, Int_t last);
49   Int_t TrackCompare(AliHLTTPCTrack *a, AliHLTTPCTrack *b) const;
50
51   void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr,Int_t slice); //Fill tracks and transform
52   void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr); //Fill tracks
53   UInt_t WriteTracks(AliHLTTPCTrackSegmentData* tr); //Write tracks
54   UInt_t WriteTracks(UInt_t & ntracks,AliHLTTPCTrackSegmentData* tr); //Write tracks
55   UInt_t GetOutSize();
56   UInt_t GetOutCount(){return (UInt_t) GetNPresent();}
57   void AddTracks(AliHLTTPCTrackArray *newtrack,Bool_t remove_old=kTRUE,Int_t slice=-1);//add all Tracks to this 
58   void AddLast(AliHLTTPCTrack *track);
59
60   ClassDef(AliHLTTPCTrackArray,1) //Track array class
61 };
62
63 #endif