]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/src/AliL3ConfMapper.h
This commit was generated by cvs2svn to compensate for changes in r3176,
[u/mrichter/AliRoot.git] / HLT / src / AliL3ConfMapper.h
1 #ifndef ALIL3_ConfMapper
2 #define ALIL3_ConfMapper
3
4 #include "AliL3RootTypes.h"
5
6 #include "AliL3SpacePointData.h"
7
8 class AliL3ConfMapPoint;
9 class AliL3ConfMapTrack;
10 class AliL3Vertex;
11 class AliL3TrackArray;
12
13 struct AliL3ConfMapContainer 
14 {
15   void *first;
16   void *last;
17 };
18
19 class AliL3ConfMapper {
20
21  private:
22
23   Bool_t fBench; //run-time measurements)
24
25   Int_t nTracks; //number of tracks build.
26
27   //  AliTPCParam *fParam;   
28   AliL3Vertex *fVertex; //!
29   Bool_t fParamSet;
30   Bool_t fVertexFinder;  //Include vertexfinding or not (latter case vertex=(0,0,0))
31
32   AliL3ConfMapPoint **fHits;  //!
33   AliL3ConfMapPoint *fHit;  //!
34   AliL3TrackArray *fTrack;  //!
35   Double_t fMaxDca;      //cut value for momentum fit
36   
37   AliL3ConfMapContainer *fVolume;  //!  Segment volume
38   AliL3ConfMapContainer *fRow;     //!  Row volume
39
40    //Number of cells (segments)
41   Int_t  fNumRowSegment;          // Total number of padrows
42   Int_t  fNumPhiSegment;          // number of phi segments 
43   Int_t  fNumEtaSegment;          // number of eta segments
44   Int_t  fNumRowSegmentPlusOne;
45   Int_t  fNumPhiSegmentPlusOne;
46   Int_t  fNumEtaSegmentPlusOne;
47   Int_t  fNumPhiEtaSegmentPlusOne;
48   Int_t  fBounds;         
49   Int_t  fPhiHitsOutOfRange;
50   Int_t  fEtaHitsOutOfRange;
51
52   //tracking range:
53   Float_t fPhiMin; //MinPhi angle to consider
54   Float_t fPhiMax; //MaxPhi angle to consider
55   Float_t fEtaMin; //MinEta to consider
56   Float_t fEtaMax; //MaxEta to consider
57   Int_t fRowMin;   //Minimum row to consider
58   Int_t fRowMax;   //Maximum row to consider
59
60   Bool_t fVertexConstraint;       //vertex constraint (true or false)
61   Int_t fTrackletLength[2];       //minimal length of tracks 
62   Int_t fRowScopeTracklet[2];     //number of row segments to look for the next point of a tracklet
63   Int_t fRowScopeTrack[2];        //number of row segments to look for the next point of a track
64   Int_t fMinPoints[2];            //minimum number of points on one track
65   
66   // Cuts
67   Double_t fMaxAngleTracklet[2];  //limit of angle between to pieces of a tracklet
68   Int_t fMaxDist;                 //maximum distance between two hits 
69   Double_t fHitChi2Cut;           //Maximum hit chi2
70   Double_t fGoodHitChi2;          //Chi2 to stop looking for next hit
71   Double_t fTrackChi2Cut;         //Maximum track chi2
72   Double_t fGoodDist;             //In segment building, distance consider good enough
73   Double_t fMaxPhi;
74   Double_t fMaxEta;
75
76   // Tracking informtion
77   Int_t fMainVertexTracks; //number of tracks coming from the main vertex
78   Int_t fClustersUnused;   //number of unused clusters
79
80   static Double_t todeg;
81   static Double_t pi;
82   static Double_t twopi;
83
84   //setter:
85   void SetMinPoints(Int_t f,Bool_t vertex_constraint) {fMinPoints[(Int_t)vertex_constraint] = f; }  
86   void SetVertexConstraint(Bool_t f) {fVertexConstraint =f;}
87   
88   void SetTrackletLength(Int_t f,Bool_t vert) {fTrackletLength[(Int_t)vert]=f;}
89   void SetRowScopeTrack(Int_t f, Bool_t vertex_constraint)         { fRowScopeTrack[(Int_t)vertex_constraint] = f; }     // sets one row scope for tracks
90   void SetRowScopeTracklet(Int_t f, Bool_t vertex_constraint)      { fRowScopeTracklet[(Int_t)vertex_constraint] = f; }  // sets one row scope for tracklets
91   void SetMaxAngleTracklet(Double_t f, Bool_t vertex_constraint)   { fMaxAngleTracklet[(Int_t)vertex_constraint] = f; }  // sets one angle cut
92
93   void SetPointers();
94   Double_t CpuTime();
95
96  public:
97
98   AliL3ConfMapper();
99   //  AliL3ConfMapper(AliTPCParam *param,AliL3Vertex *vertex,Bool_t bench=(Bool_t)false);
100   virtual ~AliL3ConfMapper();
101   
102   void InitSector(Int_t sector,Int_t *rowrange=0,Float_t *etarange=0);
103   void SetVertex(AliL3Vertex *vertex){fVertex = vertex;}
104   void MainVertexTracking_a();
105   void MainVertexTracking_b();
106   void MainVertexTracking();
107   void NonVertexTracking();
108   void MainVertexSettings(Int_t trackletlength, Int_t tracklength, 
109                           Int_t rowscopetracklet, Int_t rowscopetrack,Double_t maxphi=0.1,Double_t maxeta=0.1);
110   void NonVertexSettings(Int_t trackletlength, Int_t tracklength, 
111                          Int_t rowscopetracklet, Int_t rowscopetrack);
112   Bool_t ReadHits(UInt_t count, AliL3SpacePointData* hits );
113   void ClusterLoop();
114   void CreateTrack(AliL3ConfMapPoint *hit);
115   AliL3ConfMapPoint *GetNextNeighbor(AliL3ConfMapPoint *start_hit,AliL3ConfMapTrack *track=NULL);
116   Int_t EvaluateHit(AliL3ConfMapPoint *start_hit,AliL3ConfMapPoint *hit,AliL3ConfMapTrack *track);
117
118   Double_t CalcDistance(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const;
119   Double_t TrackletAngle(const AliL3ConfMapTrack *track,Int_t n=3) const;
120   Bool_t VerifyRange(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const;
121   Int_t FillTracks();
122   
123   //getters
124   Int_t GetNumberOfTracks() {return nTracks;}
125   AliL3TrackArray *GetTracks() {return fTrack;}
126   Double_t GetMaxDca()  const {return fMaxDca;}
127   AliL3Vertex* GetVertex() const
128           {
129           return fVertex;
130           }
131
132   //setters
133   void SetTrackCuts(Double_t hitChi2Cut, Double_t goodHitChi2, Int_t trackChi2Cut, Int_t maxdist); 
134   void SetTrackletCuts(Double_t maxangle,Double_t goodDist,Bool_t vertex_constraint);   //Set cut of tracklet for the given vertex_constraint
135   void SetNSegments(Int_t f,Int_t g) {fNumPhiSegment=f,fNumEtaSegment=g;} //Set number of subvolumes (#segments in (phi,eta)
136   void SetParamDone(Bool_t f) {fParamSet = (Bool_t)f;}
137   void SetMaxDca(Double_t f) {fMaxDca = f;}
138
139   ClassDef(AliL3ConfMapper,1) //Base class for conformal mapping tracking
140 };
141
142 #endif