]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/tracking/AliITStrackerHLT.h
compilation warnings corrected,
[u/mrichter/AliRoot.git] / HLT / ITS / tracking / AliITStrackerHLT.h
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
7 class TTree;
8 class TTreeSRedirector;
9 class AliESDEvent;
10
11
12 class AliITSChannelStatus;
13 class AliITSDetTypeRec;
14 #include "AliHLTITSTrack.h" 
15 #include "AliHLTITSDetector.h"
16 #include "AliHLTITSLayer.h"
17
18 #include <TObjArray.h>
19
20 #include "AliITSRecPoint.h"
21 #include "AliTracker.h"
22
23
24 //-------------------------------------------------------------------------
25 class AliITStrackerHLT : public AliTracker {
26 public:
27   Bool_t TransportToX( AliExternalTrackParam *t, double x ) const;
28   Bool_t TransportToPhiX( AliExternalTrackParam *t, double phi, double x ) const;
29   Bool_t UpdateMy( AliExternalTrackParam *t, double y, double z, double err2y, double err2z ) const;
30   void GetClusterErrors2( Int_t layer, const AliITSRecPoint *cluster, AliHLTITSTrack* track, double &err2Y, double &err2Z ) const ;
31
32   AliITStrackerHLT();
33   AliITStrackerHLT(const Char_t *geom);
34   virtual ~AliITStrackerHLT();
35   AliCluster *GetCluster(Int_t index) const;
36   virtual Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const;
37   virtual Bool_t GetTrackPointTrackingError(Int_t index, 
38                         AliTrackPoint& p, const AliESDtrack *t);
39   AliITSRecPoint *GetClusterLayer(Int_t layn, Int_t ncl) const
40                   {return fgLayers[layn].GetCluster(ncl);}
41   Int_t GetNumberOfClustersLayer(Int_t layn) const 
42                         {return fgLayers[layn].GetNumberOfClusters();}
43   Int_t LoadClusters(TTree *cf);
44   void UnloadClusters();
45   
46   Int_t Clusters2Tracks(AliESDEvent *event);
47   Int_t PropagateBack(AliESDEvent *event);
48   Int_t RefitInward(AliESDEvent *event);
49
50   void SetLayersNotToSkip(const Int_t *l);
51
52   Double_t GetPredictedChi2MI(AliHLTITSTrack* track, const AliITSRecPoint *cluster,Int_t layer);
53   Int_t UpdateMI(AliHLTITSTrack* track, const AliITSRecPoint* cl,Double_t chi2,Int_t layer) const;  
54   void SetDetTypeRec(const AliITSDetTypeRec *detTypeRec) {fkDetTypeRec = detTypeRec; ReadBadFromDetTypeRec(); }
55
56   TTreeSRedirector *GetDebugStreamer() {return fDebugStreamer;}
57   static Int_t CorrectForTPCtoITSDeadZoneMaterial(AliHLTITSTrack *t);
58
59
60   AliHLTITSLayer    & GetLayer(Int_t layer) const;
61   AliHLTITSDetector & GetDetector(Int_t layer, Int_t n) const {return GetLayer(layer).GetDetector(n); }
62  
63   void FollowProlongationTree(AliHLTITSTrack * otrack);
64
65 protected:
66   Bool_t ComputeRoad(AliHLTITSTrack* track,Int_t ilayer,Int_t idet,Double_t &zmin,Double_t &zmax,Double_t &ymin,Double_t &ymax) const;
67   
68   
69   void CookLabel(AliKalmanTrack *t,Float_t wrong) const;
70   void CookLabel(AliHLTITSTrack *t,Float_t wrong) const;
71
72   void       SignDeltas(const TObjArray *clusterArray, Float_t zv);
73   void BuildMaterialLUT(TString material);
74   
75   Int_t CorrectForPipeMaterial(AliHLTITSTrack *t, TString direction="inward");
76   Int_t CorrectForShieldMaterial(AliHLTITSTrack *t, TString shield, TString direction="inward");
77   Int_t CorrectForLayerMaterial(AliHLTITSTrack *t, Int_t layerindex, Double_t oldGlobXYZ[3], TString direction="inward");
78   void UpdateESDtrack(AliHLTITSTrack* track, ULong_t flags) const;
79   void ReadBadFromDetTypeRec();
80   
81   Int_t CheckDeadZone(AliHLTITSTrack *track,Int_t ilayer,Int_t idet,Double_t dz,Double_t dy,Bool_t noClusters=kFALSE) const;
82   Bool_t LocalModuleCoord(Int_t ilayer,Int_t idet,const AliHLTITSTrack *track,
83                           Float_t &xloc,Float_t &zloc) const;
84 // method to be used for Plane Efficiency evaluation
85
86   // 
87
88   static AliHLTITSLayer fgLayers[AliITSgeomTGeo::kNLayers];// ITS layers
89   
90   AliESDEvent  * fEsd;                   //! pointer to the ESD event
91   Double_t fSPDdetzcentre[4];            // centres of SPD modules in z
92   
93   Int_t fUseTGeo;                        // use TGeo to get material budget
94
95   Float_t fxOverX0Pipe;                  // material budget
96   Float_t fxTimesRhoPipe;                // material budget
97   Float_t fxOverX0Shield[2];             // material budget
98   Float_t fxTimesRhoShield[2];           // material budget
99   Float_t fxOverX0Layer[6];              // material budget
100   Float_t fxTimesRhoLayer[6];            // material budget
101
102   TTreeSRedirector *fDebugStreamer;      //!debug streamer
103   AliITSChannelStatus *fITSChannelStatus;//! bitmaps with channel status for SPD and SDD
104   const AliITSDetTypeRec *fkDetTypeRec;         //! ITS det type rec, from AliITSReconstructor
105
106 private:
107   AliITStrackerHLT(const AliITStrackerHLT &tracker);
108   AliITStrackerHLT & operator=(const AliITStrackerHLT &tracker);  
109   ClassDef(AliITStrackerHLT,0)   //HLT ITS tracker
110 };
111
112
113
114
115 /////////////////////////////////////////////////////////
116 /////////////////////////////////////////////////////////
117 /////////////////////////////////////////////////////////
118
119
120
121
122
123 inline void AliITStrackerHLT::CookLabel(AliKalmanTrack *t,Float_t wrong) const {
124   //--------------------------------------------------------------------
125   //This function "cooks" a track label. If label<0, this track is fake.
126   //--------------------------------------------------------------------
127    Int_t tpcLabel=t->GetLabel();
128    if (tpcLabel<0) return;
129    AliTracker::CookLabel(t,wrong);
130    if (tpcLabel!=TMath::Abs(t->GetLabel())){
131      t->SetFakeRatio(1.);
132    }
133    if (tpcLabel !=t->GetLabel()) {
134      t->SetLabel(-tpcLabel);      
135    }
136 }
137
138
139
140 #endif