compilation error fixed
[u/mrichter/AliRoot.git] / HLT / ITS / tracking / AliITStrackerHLT.h
CommitLineData
2f399afc 1#ifndef ALIITSTRACKERHLT_H
2#define ALIITSTRACKERHLT_H
3/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6
7class TTree;
8class TTreeSRedirector;
9class AliESDEvent;
6edb0fb5 10class AliESDtrack;
2f399afc 11
12class AliITSChannelStatus;
13class AliITSDetTypeRec;
87cc43e1 14class AliITSRecoParam;
2f399afc 15#include "AliHLTITSTrack.h"
16#include "AliHLTITSDetector.h"
17#include "AliHLTITSLayer.h"
18
19#include <TObjArray.h>
20
21#include "AliITSRecPoint.h"
22#include "AliTracker.h"
6edb0fb5 23#include "AliHLTITSTrack.h"
2f399afc 24
25//-------------------------------------------------------------------------
26class AliITStrackerHLT : public AliTracker {
27public:
6edb0fb5 28
29
365eee5d 30 void StartLoadClusters( Int_t NClusters );
ef6e2aa2 31 void LoadCluster( const AliITSRecPoint &cluster);
365eee5d 32 void Reconstruct( AliExternalTrackParam *tracksTPC, int nTPCTracks );
ef6e2aa2 33
365eee5d 34 AliHLTITSTrack *Tracks(){ return fTracks;}
35 Int_t NTracks(){ return fNTracks;}
36 AliHLTITSTrack *ITSOutTracks(){ return fITSOutTracks;}
37 Int_t NITSOutTracks(){ return fNITSOutTracks;}
6edb0fb5 38
2f399afc 39 Bool_t TransportToX( AliExternalTrackParam *t, double x ) const;
40 Bool_t TransportToPhiX( AliExternalTrackParam *t, double phi, double x ) const;
2f399afc 41
42 AliITStrackerHLT();
43 AliITStrackerHLT(const Char_t *geom);
44 virtual ~AliITStrackerHLT();
45 AliCluster *GetCluster(Int_t index) const;
46 virtual Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const;
47 virtual Bool_t GetTrackPointTrackingError(Int_t index,
48 AliTrackPoint& p, const AliESDtrack *t);
49 AliITSRecPoint *GetClusterLayer(Int_t layn, Int_t ncl) const
5ababfa8 50 {return fLayers[layn].GetCluster(ncl);}
2f399afc 51 Int_t GetNumberOfClustersLayer(Int_t layn) const
5ababfa8 52 {return fLayers[layn].GetNumberOfClusters();}
2f399afc 53 Int_t LoadClusters(TTree *cf);
54 void UnloadClusters();
55
56 Int_t Clusters2Tracks(AliESDEvent *event);
57 Int_t PropagateBack(AliESDEvent *event);
58 Int_t RefitInward(AliESDEvent *event);
b809e7f9 59
2f399afc 60
2f399afc 61 static Int_t CorrectForTPCtoITSDeadZoneMaterial(AliHLTITSTrack *t);
62
63
64 AliHLTITSLayer & GetLayer(Int_t layer) const;
65 AliHLTITSDetector & GetDetector(Int_t layer, Int_t n) const {return GetLayer(layer).GetDetector(n); }
66
67 void FollowProlongationTree(AliHLTITSTrack * otrack);
b7ed2eb4 68 Int_t FitOutward(AliHLTITSTrack * track );
2f399afc 69
ef6e2aa2 70 void Init();
6edb0fb5 71
72
2f399afc 73protected:
6edb0fb5 74
87cc43e1 75 const AliITSRecoParam *GetRecoParam(){ return fRecoParam; }
2f399afc 76 Bool_t ComputeRoad(AliHLTITSTrack* track,Int_t ilayer,Int_t idet,Double_t &zmin,Double_t &zmax,Double_t &ymin,Double_t &ymax) const;
77
78
79 void CookLabel(AliKalmanTrack *t,Float_t wrong) const;
80 void CookLabel(AliHLTITSTrack *t,Float_t wrong) const;
81
2f399afc 82 void BuildMaterialLUT(TString material);
83
ef6e2aa2 84 Int_t CorrectForPipeMaterial(AliHLTITSTrack *t, bool InwardDirection=1);
85 Int_t CorrectForShieldMaterial(AliHLTITSTrack *t, Int_t shieldindex, bool InwardDirection=1);
86 Int_t CorrectForLayerMaterial(AliHLTITSTrack *t, Int_t layerindex, bool InwardDirection=1);
6edb0fb5 87 void UpdateESDtrack(AliESDtrack *tESD,AliHLTITSTrack* track, ULong_t flags) const;
2f399afc 88
2f399afc 89 Bool_t LocalModuleCoord(Int_t ilayer,Int_t idet,const AliHLTITSTrack *track,
90 Float_t &xloc,Float_t &zloc) const;
9ddd097d 91
92
93
2f399afc 94// method to be used for Plane Efficiency evaluation
95
96 //
97
87cc43e1 98 const AliITSRecoParam *fRecoParam;
99
5ababfa8 100 AliHLTITSLayer* fLayers; //!
2f399afc 101
2f399afc 102 Double_t fSPDdetzcentre[4]; // centres of SPD modules in z
103
104 Int_t fUseTGeo; // use TGeo to get material budget
105
106 Float_t fxOverX0Pipe; // material budget
107 Float_t fxTimesRhoPipe; // material budget
108 Float_t fxOverX0Shield[2]; // material budget
109 Float_t fxTimesRhoShield[2]; // material budget
110 Float_t fxOverX0Layer[6]; // material budget
111 Float_t fxTimesRhoLayer[6]; // material budget
112
365eee5d 113 AliHLTITSTrack *fTracks; // array of its-updated tracks
114 AliHLTITSTrack *fITSOutTracks; // array of tracks, fitted outward with ITS only
115 int fNTracks;// n tracks
116 int fNITSOutTracks;// n out tracks
ef6e2aa2 117 double fLoadTime;
118 double fRecoTime;
119 int fNEvents;
365eee5d 120 AliITSRecPoint *fClusters;
121 int fNClusters;
ef6e2aa2 122
2f399afc 123private:
124 AliITStrackerHLT(const AliITStrackerHLT &tracker);
125 AliITStrackerHLT & operator=(const AliITStrackerHLT &tracker);
133288b9 126 ClassDef(AliITStrackerHLT,0) //HLT ITS tracker
2f399afc 127};
128
129
130
131
132/////////////////////////////////////////////////////////
133/////////////////////////////////////////////////////////
134/////////////////////////////////////////////////////////
135
136
137
138
139
140inline void AliITStrackerHLT::CookLabel(AliKalmanTrack *t,Float_t wrong) const {
141 //--------------------------------------------------------------------
142 //This function "cooks" a track label. If label<0, this track is fake.
143 //--------------------------------------------------------------------
144 Int_t tpcLabel=t->GetLabel();
145 if (tpcLabel<0) return;
146 AliTracker::CookLabel(t,wrong);
147 if (tpcLabel!=TMath::Abs(t->GetLabel())){
148 t->SetFakeRatio(1.);
149 }
150 if (tpcLabel !=t->GetLabel()) {
151 t->SetLabel(-tpcLabel);
152 }
153}
154
155
156
157#endif