]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSURecoParam.cxx
Made chi2-cut, road definitions AliITSUTrackCond and layer dependent
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSURecoParam.cxx
1 /**************************************************************************
2  * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 #include "AliITSURecoParam.h"
17 #include "AliLog.h"
18 #include "AliITSUTrackCond.h"
19
20 ///////////////////////////////////////////////////////////////////////////////
21 //                                                                           //
22 // Class with ITS reconstruction parameters                                  //
23 //                                                                           //
24 ///////////////////////////////////////////////////////////////////////////////
25
26 ClassImp(AliITSURecoParam)
27
28
29 const Double_t AliITSURecoParam::fgkMaxDforV0dghtrForProlongation = 30;
30 const Double_t AliITSURecoParam::fgkMaxDForProlongation           = 40; 
31 const Double_t AliITSURecoParam::fgkMaxDZForProlongation          = 60;      
32 const Double_t AliITSURecoParam::fgkMinPtForProlongation          = 0.0; 
33 const Double_t AliITSURecoParam::fgkSigmaRoadY                    = 20.E-4;//1000e-4;
34 const Double_t AliITSURecoParam::fgkSigmaRoadZ                    = 20.E-4;//1000e-4;
35 const Double_t AliITSURecoParam::fgkTanLorentzAngle               = 0;
36 const Bool_t   AliITSURecoParam::fgkAllowDiagonalClusterization   = kFALSE;
37 //
38 // hardwired params for TPC-ITS border layer
39 const Double_t AliITSURecoParam::fgkTPCITSWallRMin                = 50.;
40 const Double_t AliITSURecoParam::fgkTPCITSWallRMax                = 80.;
41 const Double_t AliITSURecoParam::fgkTPCITSWallZSpanH              = 250.;
42 const Double_t AliITSURecoParam::fgkTPCITSWallMaxStep             = 6.;
43
44
45 //
46 //_____________________________________________________________________________
47 AliITSURecoParam::AliITSURecoParam()
48   :  fNLayers(0)
49   ,fMaxDforV0dghtrForProlongation(fgkMaxDforV0dghtrForProlongation)
50   ,fMaxDForProlongation(fgkMaxDForProlongation)
51   ,fMaxDZForProlongation(fgkMaxDZForProlongation)
52   ,fMinPtForProlongation(fgkMinPtForProlongation)
53      //
54   ,fTPCITSWallRMin(fgkTPCITSWallRMin)
55   ,fTPCITSWallRMax(fgkTPCITSWallRMax)
56   ,fTPCITSWallZSpanH(fgkTPCITSWallZSpanH)
57   ,fTPCITSWallMaxStep(fgkTPCITSWallMaxStep)
58      //
59   ,fAllowDiagonalClusterization(0)
60   ,fTanLorentzAngle(0)
61   ,fSigmaY2(0)
62   ,fSigmaZ2(0)
63   ,fTrackingConditions(0)
64 {
65   // def c-tor
66   SetName("ITS");
67   SetTitle("ITS");
68 }
69
70 //_____________________________________________________________________________
71 AliITSURecoParam::AliITSURecoParam(Int_t nLr)
72   :  fNLayers(0)
73   ,fMaxDforV0dghtrForProlongation(fgkMaxDforV0dghtrForProlongation)
74   ,fMaxDForProlongation(fgkMaxDForProlongation)
75   ,fMaxDZForProlongation(fgkMaxDZForProlongation)
76   ,fMinPtForProlongation(fgkMinPtForProlongation)
77      //
78   ,fTPCITSWallRMin(fgkTPCITSWallRMin)
79   ,fTPCITSWallRMax(fgkTPCITSWallRMax)
80   ,fTPCITSWallZSpanH(fgkTPCITSWallZSpanH)
81   ,fTPCITSWallMaxStep(fgkTPCITSWallMaxStep)
82      //
83   ,fAllowDiagonalClusterization(0)
84   ,fTanLorentzAngle(0)
85   ,fSigmaY2(0)
86   ,fSigmaZ2(0)
87   ,fTrackingConditions(0)
88 {
89   // def c-tor
90   SetName("ITS");
91   SetTitle("ITS");
92   SetNLayers(nLr);
93 }
94
95 //_____________________________________________________________________________
96 AliITSURecoParam::~AliITSURecoParam() 
97 {
98   // destructor
99   delete[] fTanLorentzAngle;
100   delete[] fSigmaY2;
101   delete[] fSigmaZ2;
102   delete[] fAllowDiagonalClusterization;
103   fTrackingConditions.Delete();
104 }
105
106 //_____________________________________________________________________________
107 AliITSURecoParam *AliITSURecoParam::GetHighFluxParam() 
108 {
109   // make default reconstruction  parameters for hig  flux env.
110   AliITSURecoParam *param = new AliITSURecoParam(); 
111   //
112   // put here params
113   return param;
114 }
115
116 //_____________________________________________________________________________
117 AliITSURecoParam *AliITSURecoParam::GetLowFluxParam() 
118 {
119   // make default reconstruction  parameters for low  flux env.
120   AliITSURecoParam *param = new AliITSURecoParam();
121   // put here params
122   return param;
123 }
124
125 //_____________________________________________________________________________
126 AliITSURecoParam *AliITSURecoParam::GetCosmicTestParam() 
127 {
128   // make default reconstruction  parameters for cosmics
129   AliITSURecoParam *param = new AliITSURecoParam();
130   // put here params
131   return param;
132 }
133
134 //_____________________________________________________________________________
135 void  AliITSURecoParam::SetNLayers(Int_t n)
136 {
137   // set n layers and init all layer dependent arrays
138   if (fNLayers>0) AliFatal(Form("Number of layers was already set to %d",fNLayers));
139   if (n<1) n = 1; // in case we want to have dummy params
140   fNLayers = n;
141   fTanLorentzAngle = new Double_t[n];
142   fSigmaY2 = new Double_t[n];
143   fSigmaZ2 = new Double_t[n];
144   fAllowDiagonalClusterization = new Bool_t[n];
145   //
146   for (int i=n;i--;) {
147     fAllowDiagonalClusterization[i] = fgkAllowDiagonalClusterization;
148     fTanLorentzAngle[i] = fgkTanLorentzAngle;
149     fSigmaY2[i] = fgkSigmaRoadY*fgkSigmaRoadY;
150     fSigmaZ2[i] = fgkSigmaRoadZ*fgkSigmaRoadZ;
151   }
152   //
153 }
154
155 //_____________________________________________________________________________
156 void  AliITSURecoParam::SetTanLorentzAngle(Int_t lr, Double_t v)
157 {
158   // set Lorentz angle value
159   if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
160   fTanLorentzAngle[lr] = v;
161 }
162
163 //_____________________________________________________________________________
164 void  AliITSURecoParam::SetSigmaY2(Int_t lr, Double_t v)
165 {
166   // set Lorentz angle value
167   if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
168   fSigmaY2[lr] = v;
169 }
170
171 //_____________________________________________________________________________
172 void  AliITSURecoParam::SetSigmaZ2(Int_t lr, Double_t v)
173 {
174   // set Lorentz angle value
175   if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
176   fSigmaZ2[lr] = v;
177 }
178
179 //_____________________________________________________________________________
180 void  AliITSURecoParam::SetAllowDiagonalClusterization(Int_t lr, Bool_t v)
181 {
182   // set Lorentz angle value
183   if (lr>=fNLayers) AliFatal(Form("Number of defined layers is %d",fNLayers));
184   fAllowDiagonalClusterization[lr] = v;
185 }
186
187 //========================================================================
188 //_____________________________________________________________________________
189 void AliITSURecoParam::Print(Option_t *) const
190 {
191   // print params
192   printf("%s: %s %s\n",ClassName(),GetName(),GetTitle());
193   printf("%-30s\t%f\n","fMaxDforV0dghtrForProlongation",fMaxDforV0dghtrForProlongation);
194   printf("%-30s\t%f\n","fMaxDForProlongation",fMaxDForProlongation); 
195   printf("%-30s\t%f\n","fMaxDZForProlongation",fMaxDZForProlongation);
196   printf("%-30s\t%f\n","fMinPtForProlongation",fMinPtForProlongation);
197   //
198   printf("TPC-ITS wall: %.3f<R<%.3f DZ/2=%.3f MaxStep=%.3f\n",
199          fTPCITSWallRMin,fTPCITSWallRMax,fTPCITSWallZSpanH,fTPCITSWallMaxStep);
200   //
201   printf("N.Layers: %d\n",fNLayers);
202   if (fNLayers>0) {
203     printf("Layer-wise data:\n");
204     printf("%-30s\t:","fTanLorentzAngle");  for (int i=0;i<fNLayers;i++) printf(" %+.2e",fTanLorentzAngle[i]); printf("\n");
205     printf("%-30s\t:","fSigmaY2");          for (int i=0;i<fNLayers;i++) printf(" %+.2e",fSigmaY2[i]); printf("\n");
206     printf("%-30s\t:","fSigmaZ2");          for (int i=0;i<fNLayers;i++) printf(" %+.2e",fSigmaZ2[i]); printf("\n");
207   }
208   //
209   int nTrCond = GetNTrackingConditions();
210   printf("%d tracking conditions defined\n",nTrCond);
211   for (int itc=0;itc<nTrCond;itc++) {
212     printf("Tracking condition %d\n",itc);
213     GetTrackingCondition(itc)->Print();
214   }
215 }
216
217 //__________________________________________________
218 void  AliITSURecoParam::AddTrackingCondition(AliITSUTrackCond* cond)
219 {
220   // Add new tracking condition
221   fTrackingConditions.AddLast(cond);
222 }