Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliGRPRecoParam.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 "AliGRPRecoParam.h"
17
18 ///////////////////////////////////////////////////////////////////////////////
19 //                                                                           //
20 // Class with GRP reconstruction parameters                                  //
21 // Origin: andrea.dainese@lnl.infn.it                                        //
22 //                                                                           //
23 ///////////////////////////////////////////////////////////////////////////////
24
25
26
27 ClassImp(AliGRPRecoParam)
28
29 //_____________________________________________________________________________
30 AliGRPRecoParam::AliGRPRecoParam() : AliDetectorRecoParam(),
31 fMostProbablePt(0.350),
32 fVertexerTracksConstraintITS(kTRUE),
33 fVertexerTracksConstraintTPC(kTRUE),
34 fVertexerTracksNCuts(12),
35 fVertexerTracksITSdcacut(0.1),
36 fVertexerTracksITSdcacutIter0(0.1),
37 fVertexerTracksITSmaxd0z0(0.5),
38 fVertexerTracksITSminCls(5),
39 fVertexerTracksITSmintrks(1),
40 fVertexerTracksITSnsigma(3.),
41 fVertexerTracksITSnindetfitter(100.),
42 fVertexerTracksITSmaxtgl(1000.), 
43 fVertexerTracksITSfidR(3.),
44 fVertexerTracksITSfidZ(30.),
45 fVertexerTracksITSalgo(1.),
46 fVertexerTracksITSalgoIter0(4.),
47 fVertexerTracksTPCdcacut(0.1),
48 fVertexerTracksTPCdcacutIter0(1.0),
49 fVertexerTracksTPCmaxd0z0(5.),
50 fVertexerTracksTPCminCls(10),
51 fVertexerTracksTPCmintrks(1),
52 fVertexerTracksTPCnsigma(3.),
53 fVertexerTracksTPCnindetfitter(0.1),
54 fVertexerTracksTPCmaxtgl(1.5), 
55 fVertexerTracksTPCfidR(3.),
56 fVertexerTracksTPCfidZ(30.),
57 fVertexerTracksTPCalgo(1.),
58 fVertexerTracksTPCalgoIter0(4.)
59 {
60   //
61   // constructor
62   //
63   SetName("GRP");
64   SetTitle("GRP");
65 }
66
67 //_____________________________________________________________________________
68 AliGRPRecoParam::~AliGRPRecoParam() 
69 {
70   //
71   // destructor
72   //  
73 }
74
75 AliGRPRecoParam::AliGRPRecoParam(const AliGRPRecoParam& par) :
76   AliDetectorRecoParam(par),
77   fMostProbablePt(par.fMostProbablePt),
78   fVertexerTracksConstraintITS(par.fVertexerTracksConstraintITS),
79   fVertexerTracksConstraintTPC(par.fVertexerTracksConstraintTPC),
80   fVertexerTracksNCuts(par.fVertexerTracksNCuts),
81   fVertexerTracksITSdcacut(par.fVertexerTracksITSdcacut),
82   fVertexerTracksITSdcacutIter0(par.fVertexerTracksITSdcacutIter0),
83   fVertexerTracksITSmaxd0z0(par.fVertexerTracksITSmaxd0z0),
84   fVertexerTracksITSminCls(par.fVertexerTracksITSminCls),
85   fVertexerTracksITSmintrks(par.fVertexerTracksITSmintrks),
86   fVertexerTracksITSnsigma(par.fVertexerTracksITSnsigma),
87   fVertexerTracksITSnindetfitter(par.fVertexerTracksITSnindetfitter),
88   fVertexerTracksITSmaxtgl(par.fVertexerTracksITSmaxtgl), 
89   fVertexerTracksITSfidR(par.fVertexerTracksITSfidR),
90   fVertexerTracksITSfidZ(par.fVertexerTracksITSfidZ),
91   fVertexerTracksITSalgo(par.fVertexerTracksITSalgo),
92   fVertexerTracksITSalgoIter0(par.fVertexerTracksITSalgoIter0),
93   fVertexerTracksTPCdcacut(par.fVertexerTracksTPCdcacut),
94   fVertexerTracksTPCdcacutIter0(par.fVertexerTracksTPCdcacutIter0),
95   fVertexerTracksTPCmaxd0z0(par.fVertexerTracksTPCmaxd0z0),
96   fVertexerTracksTPCminCls(par.fVertexerTracksTPCminCls),
97   fVertexerTracksTPCmintrks(par.fVertexerTracksTPCmintrks),
98   fVertexerTracksTPCnsigma(par.fVertexerTracksTPCnsigma),
99   fVertexerTracksTPCnindetfitter(par.fVertexerTracksTPCnindetfitter),
100   fVertexerTracksTPCmaxtgl(par.fVertexerTracksTPCmaxtgl), 
101   fVertexerTracksTPCfidR(par.fVertexerTracksTPCfidR),
102   fVertexerTracksTPCfidZ(par.fVertexerTracksTPCfidZ),
103   fVertexerTracksTPCalgo(par.fVertexerTracksTPCalgo),
104   fVertexerTracksTPCalgoIter0(par.fVertexerTracksTPCalgoIter0)
105 {
106   // copy constructor
107 }
108
109 //_____________________________________________________________________________
110 AliGRPRecoParam& AliGRPRecoParam::operator = (const AliGRPRecoParam& par)
111 {
112   // assignment operator
113
114   if(&par == this) return *this;
115
116   this->~AliGRPRecoParam();
117   new(this) AliGRPRecoParam(par);
118   return *this;
119 }
120
121 //_____________________________________________________________________________
122 AliGRPRecoParam *AliGRPRecoParam::GetHighFluxParam() 
123 {
124   //
125   // make default reconstruction  parameters for hig  flux env.
126   //
127   AliGRPRecoParam *param = new AliGRPRecoParam();
128
129   // to speed up the vertexing in PbPb
130   param->fVertexerTracksITSalgoIter0 = 1.;
131   param->fVertexerTracksTPCalgoIter0 = 1.;
132
133   return param;
134 }
135 //_____________________________________________________________________________
136 AliGRPRecoParam *AliGRPRecoParam::GetLowFluxParam() 
137 {
138   //
139   // make default reconstruction  parameters for low  flux env.
140   //
141   AliGRPRecoParam *param = new AliGRPRecoParam();
142
143   return param;
144 }
145 //_____________________________________________________________________________
146 AliGRPRecoParam *AliGRPRecoParam::GetCosmicTestParam() 
147 {
148   //
149   // make default reconstruction  parameters for cosmics env.
150   //
151   AliGRPRecoParam *param = new AliGRPRecoParam();
152
153   param->SetVertexerTracksConstraintITS(kFALSE);
154   param->SetVertexerTracksConstraintTPC(kFALSE);
155   param->SetMostProbablePt(3.0);
156
157   return param;
158 }
159 //_____________________________________________________________________________
160 void AliGRPRecoParam::GetVertexerTracksCuts(Int_t mode,Double_t *cuts) const {
161   //
162   // get cuts for ITS (0) or TPC (1) mode
163   //
164   if(mode==1) {
165     cuts[0] = fVertexerTracksTPCdcacut;
166     cuts[1] = fVertexerTracksTPCdcacutIter0;
167     cuts[2] = fVertexerTracksTPCmaxd0z0;
168     cuts[3] = fVertexerTracksTPCminCls;
169     cuts[4] = fVertexerTracksTPCmintrks;
170     cuts[5] = fVertexerTracksTPCnsigma;
171     cuts[6] = fVertexerTracksTPCnindetfitter;
172     cuts[7] = fVertexerTracksTPCmaxtgl; 
173     cuts[8] = fVertexerTracksTPCfidR;
174     cuts[9] = fVertexerTracksTPCfidZ;
175     cuts[10]= fVertexerTracksTPCalgo;
176     cuts[11]= fVertexerTracksTPCalgoIter0;
177   } else {
178     cuts[0] = fVertexerTracksITSdcacut;
179     cuts[1] = fVertexerTracksITSdcacutIter0;
180     cuts[2] = fVertexerTracksITSmaxd0z0;
181     cuts[3] = fVertexerTracksITSminCls;
182     cuts[4] = fVertexerTracksITSmintrks;
183     cuts[5] = fVertexerTracksITSnsigma;
184     cuts[6] = fVertexerTracksITSnindetfitter;
185     cuts[7] = fVertexerTracksITSmaxtgl; 
186     cuts[8] = fVertexerTracksITSfidR;
187     cuts[9] = fVertexerTracksITSfidZ;
188     cuts[10]= fVertexerTracksITSalgo;
189     cuts[11]= fVertexerTracksITSalgoIter0;
190   }
191
192   return;
193 }
194 //_____________________________________________________________________________
195 void AliGRPRecoParam::SetVertexerTracksCuts(Int_t mode,Int_t ncuts,Double_t cuts[12]) {
196   //
197   // set cuts for ITS (0) or TPC (1) mode
198   //
199   if(ncuts!=fVertexerTracksNCuts) {
200     printf("AliGRPRecoParam: Number of AliVertexerTracks cuts is %d\n",fVertexerTracksNCuts);
201     return;
202   }
203
204   if(mode==1) {
205     fVertexerTracksTPCdcacut = cuts[0];
206     fVertexerTracksTPCdcacutIter0 = cuts[1];
207     fVertexerTracksTPCmaxd0z0 = cuts[2];
208     fVertexerTracksTPCminCls = cuts[3];
209     fVertexerTracksTPCmintrks = cuts[4];
210     fVertexerTracksTPCnsigma = cuts[5];
211     fVertexerTracksTPCnindetfitter = cuts[6];
212     fVertexerTracksTPCmaxtgl = cuts[7]; 
213     fVertexerTracksTPCfidR = cuts[8];
214     fVertexerTracksTPCfidZ = cuts[9];
215     fVertexerTracksTPCalgo = cuts[10];
216     fVertexerTracksTPCalgoIter0 = cuts[11];
217   } else {
218     fVertexerTracksITSdcacut = cuts[0];
219     fVertexerTracksITSdcacutIter0 = cuts[1];
220     fVertexerTracksITSmaxd0z0 = cuts[2];
221     fVertexerTracksITSminCls = cuts[3];
222     fVertexerTracksITSmintrks = cuts[4];
223     fVertexerTracksITSnsigma = cuts[5];
224     fVertexerTracksITSnindetfitter = cuts[6];
225     fVertexerTracksITSmaxtgl = cuts[7]; 
226     fVertexerTracksITSfidR = cuts[8];
227     fVertexerTracksITSfidZ = cuts[9];
228     fVertexerTracksITSalgo = cuts[10];
229     fVertexerTracksITSalgoIter0 = cuts[11];
230   }
231
232   return;
233 }