4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
6 //* See cxx source for full Copyright notice *
8 #ifndef ALIHLTTPCCAGBTRACKER_H
9 #define ALIHLTTPCCAGBTRACKER_H
13 class AliHLTTPCCATracker;
14 class AliHLTTPCCAGBTrack;
15 class AliHLTTPCCAGBHit;
18 class AliHLTTPCCATrackParam;
21 * @class AliHLTTPCCAGBTracker
23 * Global Cellular Automaton-based HLT tracker for TPC detector
24 * The class reconstructs tracks in the whole TPC
25 * It calls the AliHLTTPCCATracker slice tracker and constructs
26 * the global TPC tracks by merging the slice tracks
28 * The tracker is designed stand-alone.
29 * It will be integrated to the HLT framework via AliHLTTPCCAGBTrackerComponent interface,
30 * and to off-line framework via TPC/AliTPCtrackerCA class
31 * The class is under construction.
34 class AliHLTTPCCAGBTracker:public TObject
39 AliHLTTPCCAGBTracker();
40 AliHLTTPCCAGBTracker(const AliHLTTPCCAGBTracker&);
41 AliHLTTPCCAGBTracker &operator=(const AliHLTTPCCAGBTracker&);
43 virtual ~AliHLTTPCCAGBTracker();
46 void SetNSlices( Int_t N );
47 void SetNHits( Int_t nHits );
49 void ReadHit( Float_t x, Float_t y, Float_t z,
50 Float_t ErrY, Float_t ErrZ, Float_t amp,
51 Int_t ID, Int_t iSlice, Int_t iRow );
55 AliHLTTPCCATracker *Slices(){ return fSlices; }
56 AliHLTTPCCAGBHit *Hits(){ return fHits; }
57 Int_t NHits() const { return fNHits; }
58 Int_t NSlices() const { return fNSlices; }
59 Double_t Time() const { return fTime; }
60 Double_t StatTime( Int_t iTimer ) const { return fStatTime[iTimer]; }
61 Int_t StatNEvents() const { return fStatNEvents; }
62 Int_t NTracks() const { return fNTracks; }
63 AliHLTTPCCAGBTrack *Tracks(){ return fTracks; }
64 Int_t *TrackHits() {return fTrackHits; }
65 void GetErrors2( AliHLTTPCCAGBHit &h, AliHLTTPCCATrackParam &t, Float_t &Err2Y, Float_t &Err2Z );
66 void GetErrors2( Int_t iSlice, Int_t iRow, AliHLTTPCCATrackParam &t, Float_t &Err2Y, Float_t &Err2Z );
68 void WriteSettings( ostream &out );
69 void ReadSettings( istream &in );
70 void WriteEvent( ostream &out );
71 void ReadEvent( istream &in );
72 void WriteTracks( ostream &out );
73 void ReadTracks( istream &in );
77 AliHLTTPCCATracker *fSlices; //* array of slice trackers
78 Int_t fNSlices; //* N slices
79 AliHLTTPCCAGBHit *fHits; //* hit array
80 Int_t fNHits; //* N hits in event
81 Int_t *fTrackHits; //* track->hits reference array
82 AliHLTTPCCAGBTrack *fTracks; //* array of tracks
83 Int_t fNTracks; //* N tracks
85 struct AliHLTTPCCAGBSliceTrackInfo{
86 Int_t fPrevNeighbour; //* neighbour in the previous slide
87 Int_t fNextNeighbour; //* neighbour in the next slide
88 Bool_t fUsed; //* is the slice track used by global tracks
91 AliHLTTPCCAGBSliceTrackInfo **fSliceTrackInfos; //* additional information for slice tracks
93 Double_t fStatTime[20]; //* timers
94 Int_t fStatNEvents; //* n events proceed
96 ClassDef(AliHLTTPCCAGBTracker,1) //Base class for conformal mapping tracking