]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCAGBTracker.h
989f4ce03e6bbcbd3fb0993fa823baf6e2ab6d53
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAGBTracker.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
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                               *
7
8 #ifndef ALIHLTTPCCAGBTRACKER_H
9 #define ALIHLTTPCCAGBTRACKER_H
10
11 #include "TObject.h"
12
13 class AliHLTTPCCATracker;
14 class AliHLTTPCCAGBTrack;
15 class AliHLTTPCCAGBHit;
16 class TParticle;
17 class TProfile;
18 class AliHLTTPCCATrackParam;
19
20 /**
21  * @class AliHLTTPCCAGBTracker
22  * 
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 
27  *
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.
32  *
33  */
34 class AliHLTTPCCAGBTracker:public TObject
35 {
36
37 public:
38
39   AliHLTTPCCAGBTracker();
40   AliHLTTPCCAGBTracker(const AliHLTTPCCAGBTracker&);
41   AliHLTTPCCAGBTracker &operator=(const AliHLTTPCCAGBTracker&);
42
43   virtual ~AliHLTTPCCAGBTracker();
44
45   void StartEvent();
46   void SetNSlices( Int_t N );
47   void SetNHits( Int_t nHits );
48
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 );
52
53   void FindTracks();
54   void Merging();
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 );
67
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 );
74
75 protected:
76
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
84
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
89   };
90
91   AliHLTTPCCAGBSliceTrackInfo **fSliceTrackInfos; //* additional information for slice tracks
92   Double_t fTime;
93   Double_t fStatTime[20]; //* timers 
94   Int_t fStatNEvents;    //* n events proceed
95
96   ClassDef(AliHLTTPCCAGBTracker,1) //Base class for conformal mapping tracking
97 };
98
99 #endif