]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/tracking-ca/AliHLTTPCCAGBTracker.h
Completely reworked version of TPC CA tracker (Sergey)
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAGBTracker.h
CommitLineData
d54804bf 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
00d07bcd 11#include "AliHLTTPCCADef.h"
12#include <iostream.h>
d54804bf 13
14class AliHLTTPCCATracker;
15class AliHLTTPCCAGBTrack;
16class AliHLTTPCCAGBHit;
17class TParticle;
18class TProfile;
eb30eb49 19class AliHLTTPCCATrackParam;
d54804bf 20
21/**
22 * @class AliHLTTPCCAGBTracker
23 *
24 * Global Cellular Automaton-based HLT tracker for TPC detector
25 * The class reconstructs tracks in the whole TPC
26 * It calls the AliHLTTPCCATracker slice tracker and constructs
27 * the global TPC tracks by merging the slice tracks
28 *
29 * The tracker is designed stand-alone.
30 * It will be integrated to the HLT framework via AliHLTTPCCAGBTrackerComponent interface,
31 * and to off-line framework via TPC/AliTPCtrackerCA class
32 * The class is under construction.
33 *
34 */
00d07bcd 35class AliHLTTPCCAGBTracker
d54804bf 36{
37
38public:
39
40 AliHLTTPCCAGBTracker();
41 AliHLTTPCCAGBTracker(const AliHLTTPCCAGBTracker&);
42 AliHLTTPCCAGBTracker &operator=(const AliHLTTPCCAGBTracker&);
43
00d07bcd 44 ~AliHLTTPCCAGBTracker();
d54804bf 45
46 void StartEvent();
47 void SetNSlices( Int_t N );
48 void SetNHits( Int_t nHits );
49
eb30eb49 50 void ReadHit( Float_t x, Float_t y, Float_t z,
51 Float_t ErrY, Float_t ErrZ, Float_t amp,
52 Int_t ID, Int_t iSlice, Int_t iRow );
d54804bf 53
54 void FindTracks();
55 void Merging();
56 AliHLTTPCCATracker *Slices(){ return fSlices; }
57 AliHLTTPCCAGBHit *Hits(){ return fHits; }
58 Int_t NHits() const { return fNHits; }
59 Int_t NSlices() const { return fNSlices; }
eb30eb49 60 Double_t Time() const { return fTime; }
d54804bf 61 Double_t StatTime( Int_t iTimer ) const { return fStatTime[iTimer]; }
62 Int_t StatNEvents() const { return fStatNEvents; }
63 Int_t NTracks() const { return fNTracks; }
64 AliHLTTPCCAGBTrack *Tracks(){ return fTracks; }
65 Int_t *TrackHits() {return fTrackHits; }
eb30eb49 66 void GetErrors2( AliHLTTPCCAGBHit &h, AliHLTTPCCATrackParam &t, Float_t &Err2Y, Float_t &Err2Z );
67 void GetErrors2( Int_t iSlice, Int_t iRow, AliHLTTPCCATrackParam &t, Float_t &Err2Y, Float_t &Err2Z );
68
00d07bcd 69 void WriteSettings( ostream &out ) const;
eb30eb49 70 void ReadSettings( istream &in );
00d07bcd 71 void WriteEvent( ostream &out ) const;
eb30eb49 72 void ReadEvent( istream &in );
00d07bcd 73 void WriteTracks( ostream &out ) const;
eb30eb49 74 void ReadTracks( istream &in );
d54804bf 75
76protected:
77
78 AliHLTTPCCATracker *fSlices; //* array of slice trackers
79 Int_t fNSlices; //* N slices
80 AliHLTTPCCAGBHit *fHits; //* hit array
81 Int_t fNHits; //* N hits in event
82 Int_t *fTrackHits; //* track->hits reference array
83 AliHLTTPCCAGBTrack *fTracks; //* array of tracks
84 Int_t fNTracks; //* N tracks
85
86 struct AliHLTTPCCAGBSliceTrackInfo{
87 Int_t fPrevNeighbour; //* neighbour in the previous slide
88 Int_t fNextNeighbour; //* neighbour in the next slide
89 Bool_t fUsed; //* is the slice track used by global tracks
90 };
91
92 AliHLTTPCCAGBSliceTrackInfo **fSliceTrackInfos; //* additional information for slice tracks
00d07bcd 93 Double_t fTime; //* total time
eb30eb49 94 Double_t fStatTime[20]; //* timers
d54804bf 95 Int_t fStatNEvents; //* n events proceed
00d07bcd 96 Int_t fFirstSliceHit[100]; // hit array
d54804bf 97
d54804bf 98};
99
100#endif