Added to TrackerGlo possibility to fill control histos with residuals,pulls,chi2
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSURecoParam.h
1 #ifndef ALIITSURECOPARAM_H
2 #define ALIITSURECOPARAM_H
3 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliITSURecoParam.h 57215 2012-06-17 14:47:08Z masera $ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //                                                                           //
10 // Class with ITS reconstruction parameters                                  //
11 //                                                                           //
12 ///////////////////////////////////////////////////////////////////////////////
13
14 class AliITSUTrackCond;
15
16 #include <TObjArray.h>
17 #include "AliDetectorRecoParam.h"
18
19 class AliITSURecoParam : public AliDetectorRecoParam
20 {
21  public: 
22   AliITSURecoParam();
23   AliITSURecoParam(Int_t nLr);
24   virtual ~AliITSURecoParam();
25
26   static AliITSURecoParam *GetLowFluxParam();// make reco parameters for low flux env.
27   static AliITSURecoParam *GetHighFluxParam();// make reco parameters for high flux env. 
28   static AliITSURecoParam *GetCosmicTestParam();// special setting for cosmic  
29
30   Double_t    GetMaxDforV0dghtrForProlongation() const {return fMaxDforV0dghtrForProlongation;}
31   Double_t    GetMaxDForProlongation()           const {return fMaxDForProlongation;}
32   Double_t    GetMaxDZForProlongation()          const {return fMaxDZForProlongation;}
33   Double_t    GetMinPtForProlongation()          const {return fMinPtForProlongation;}
34   Double_t    GetTanLorentzAngle(Int_t lr)       const;
35   Double_t    GetSigmaY2(Int_t lr)               const;
36   Double_t    GetSigmaZ2(Int_t lr)               const;
37   Double_t    GetMaxTr2ClChi2(Int_t lr)          const;
38   Double_t    GetMissPenalty(Int_t lr)           const;
39   Bool_t      GetAllowDiagonalClusterization(Int_t lr) const;
40   //
41   Double_t    GetNSigmaRoadY()                   const {return fNSigmaRoadY;}
42   Double_t    GetNSigmaRoadZ()                   const {return fNSigmaRoadZ;}
43   //
44   Double_t    GetTPCITSWallRMin()                const {return fTPCITSWallRMin;}
45   Double_t    GetTPCITSWallRMax()                const {return fTPCITSWallRMax;}
46   Double_t    GetTPCITSWallZSpanH()              const {return fTPCITSWallZSpanH;}
47   Double_t    GetTPCITSWallMaxStep()             const {return fTPCITSWallMaxStep;}
48   TObjArray*  GetTrackingConditions()            const {return (TObjArray*)&fTrackingConditions;}
49   Int_t       GetNTrackingConditions()           const {return fTrackingConditions.GetEntriesFast();}
50   AliITSUTrackCond* GetTrackingCondition(Int_t i) const {return (AliITSUTrackCond*)fTrackingConditions[i];}
51   //
52   void        SetNLayers(Int_t n);
53   void        SetTanLorentzAngle(Int_t lr, Double_t v);
54   void        SetSigmaY2(Int_t lr, Double_t v);
55   void        SetSigmaZ2(Int_t lr, Double_t v);
56   void        SetMaxTr2ClChi2(Int_t lr, Double_t v);
57   void        SetMissPenalty(Int_t lr, Double_t v);
58   void        SetAllowDiagonalClusterization(Int_t lr, Bool_t v);
59   //
60   void        SetMaxDforV0dghtrForProlongation(Double_t v)            {fMaxDforV0dghtrForProlongation = v;}
61   void        SetMaxDForProlongation(Double_t v)                      {fMaxDForProlongation = v;}
62   void        SetMaxDZForProlongation(Double_t v)                     {fMaxDZForProlongation = v;}
63   void        SetMinPtForProlongation(Double_t v)                     {fMinPtForProlongation = v;}
64   void        SetNSigmaRoadY(Double_t v)                              {fNSigmaRoadY=v;}
65   void        SetNSigmaRoadZ(Double_t v)                              {fNSigmaRoadZ=v;}
66   //
67   void        SetTPCITSWallRMin(double v)                             {fTPCITSWallRMin = v;}
68   void        SetTPCITSWallRMax(double v)                             {fTPCITSWallRMax = v;}
69   void        SetTPCITSWallZSpanH(double v)                           {fTPCITSWallZSpanH = v;}
70   void        SetTPCITSWallMaxStep(double v)                          {fTPCITSWallMaxStep = v;}
71   //
72   void        AddTrackingCondition(AliITSUTrackCond* cond);
73   virtual void Print(Option_t *opt="")  const;
74   //
75  protected:
76   Int_t          fNLayers;          // number of layers 
77   //
78   Double_t       fMaxDforV0dghtrForProlongation; // max. rphi imp. par. cut for V0 daughter
79   Double_t       fMaxDForProlongation; // max. rphi imp. par. cut
80   Double_t       fMaxDZForProlongation; // max. 3D imp. par. cut
81   Double_t       fMinPtForProlongation; // min. pt cut
82   Double_t       fNSigmaRoadY;          // N sigmas for road in Y
83   Double_t       fNSigmaRoadZ;          // N sigmas for road in Z
84   //
85   Double_t       fTPCITSWallRMin;       // minR
86   Double_t       fTPCITSWallRMax;       // maxR
87   Double_t       fTPCITSWallZSpanH;     // half Z span
88   Double_t       fTPCITSWallMaxStep;    // max tracking step
89   //
90   Bool_t*        fAllowDiagonalClusterization; //[fNLayers] allow clusters of pixels with common corners only
91   Double_t*      fTanLorentzAngle;  //[fNLayers] Optional Lorentz angle for each layer
92   Double_t*      fSigmaY2;          //[fNLayers] addition to road width^2
93   Double_t*      fSigmaZ2;          //[fNLayers] addition to road width^2
94   Double_t*      fMaxTr2ClChi2;     //[fNLayers] max track-to-cluster chi2
95   Double_t*      fMissPenalty;      //[fNLayers] chi2 penalty for missing hit on the layer
96   //
97   TObjArray      fTrackingConditions; // array of tracking conditions for different iterations
98   //
99   static const Double_t fgkMaxDforV0dghtrForProlongation;      // default
100   static const Double_t fgkMaxDForProlongation;                // default
101   static const Double_t fgkMaxDZForProlongation;               // default
102   static const Double_t fgkMinPtForProlongation;               // default
103   static const Double_t fgkNSigmaRoadY;                        // default
104   static const Double_t fgkNSigmaRoadZ;                        // default
105   // for arrays
106   static const Double_t fgkSigmaRoadY;                         // default
107   static const Double_t fgkSigmaRoadZ;                         // default
108   static const Double_t fgkMaxTr2ClChi2;                       // default
109   static const Double_t fgkTanLorentzAngle;                    // default
110   static const Double_t fgkMissPenalty;                        // default
111   //
112   // hardwired params for TPC-ITS border layer
113   static const Double_t fgkTPCITSWallRMin;                     // minR
114   static const Double_t fgkTPCITSWallRMax;                     // maxR
115   static const Double_t fgkTPCITSWallZSpanH;                   // half Z span
116   static const Double_t fgkTPCITSWallMaxStep;                  // max tracking step
117   //
118   // clusterization options
119   static const Bool_t   fgkAllowDiagonalClusterization;        // clusters of pixels with common corners
120   //
121  private:
122   AliITSURecoParam(const AliITSURecoParam & param);
123   AliITSURecoParam & operator=(const AliITSURecoParam &param);
124
125   ClassDef(AliITSURecoParam,2) // ITS reco parameters
126 };
127
128 //_____________________________________________________________________________
129 inline Double_t AliITSURecoParam::GetTanLorentzAngle(Int_t lr) const 
130 {
131   // get tg of Lorentz Angle for the layer
132   return (lr<fNLayers)&&fTanLorentzAngle ? fTanLorentzAngle[lr]:0;
133 }
134
135 //_____________________________________________________________________________
136 inline Double_t AliITSURecoParam::GetSigmaY2(Int_t lr) const 
137 {
138   // get tg of Lorentz Angle for the layer
139   return (lr<fNLayers)&&fSigmaY2 ? fSigmaY2[lr]:fgkSigmaRoadY*fgkSigmaRoadY; //0;
140 }
141
142 //_____________________________________________________________________________
143 inline Double_t AliITSURecoParam::GetSigmaZ2(Int_t lr) const 
144 {
145   // get tg of Lorentz Angle for the layer
146   return (lr<fNLayers)&&fSigmaZ2 ? fSigmaZ2[lr]:fgkSigmaRoadZ*fgkSigmaRoadZ;//0;
147 }
148
149 //_____________________________________________________________________________
150 inline Double_t AliITSURecoParam::GetMaxTr2ClChi2(Int_t lr) const
151 {
152   // get tg of Lorentz Angle for the layer
153   return (lr<fNLayers)&&fMaxTr2ClChi2 ? fMaxTr2ClChi2[lr]:fgkMaxTr2ClChi2; //0;
154 }
155
156 //_____________________________________________________________________________
157 inline Double_t AliITSURecoParam::GetMissPenalty(Int_t lr) const
158 {
159   // get penalty for missing hit
160   return (lr<fNLayers)&&fMissPenalty ? fMissPenalty[lr]:fgkMissPenalty; //0;
161 }
162
163 //_____________________________________________________________________________
164 inline Bool_t AliITSURecoParam::GetAllowDiagonalClusterization(Int_t lr) const
165 {
166   // are diagonal clusters permitted
167   return (lr<fNLayers)&&fAllowDiagonalClusterization ? fAllowDiagonalClusterization[lr]:fgkAllowDiagonalClusterization;
168 }
169
170 #endif
171
172