]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/testITSU/MakeITSRecoParam.C
Removing printout (Davide)
[u/mrichter/AliRoot.git] / ITS / UPGRADE / testITSU / MakeITSRecoParam.C
CommitLineData
f8a27611 1void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult, const char* cdbURI="local://") {
2//========================================================================
3//
42c3d4bd 4// Steering macro for ITSU reconstruction parameters
f8a27611 5//
42c3d4bd 6// Contact: ruben.shahoyan@cern.ch
f8a27611 7//
8//========================================================================
f8a27611 9 const char* macroname = "MakeITSRecoParam.C";
10 //
42c3d4bd 11 enum {kBit0=0x1<<0,kBit1=0x1<<1,kBit2=0x1<<2,kBit3=0x1<<3,kBit4=0x1<<4,kBit5=0x1<<5,kBit6=0x1<<6,kBit7=0x7<<2,kBit8=0x1<<8};
12 //
13 //
f8a27611 14 gSystem->Load("libITSUpgradeBase.so");
15 gSystem->Load("libITSUpgradeSim.so");
16 gSystem->Load("libITSUpgradeRec.so");
17 //
18 // Activate CDB storage and load geometry from CDB
19 AliCDBManager* cdb = AliCDBManager::Instance();
20 cdb->SetDefaultStorage(cdbURI);
42c3d4bd 21 AliITSUTrackCond* trcond = 0;
f8a27611 22 int nLr = 7;
14ba4e91 23
f8a27611 24 TObjArray *recoParamArray = new TObjArray();
25 //
26 {
27 AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetCosmicTestParam();
28 //
29 itsRecoParam->SetNLayers(nLr);
30 //
31 //******************************************************************
32 itsRecoParam->SetEventSpecie(AliRecoParam::kCosmic);
33 itsRecoParam->SetTitle("Cosmic");
34 recoParamArray->AddLast(itsRecoParam);
35 }
36 //
70f61d86 37 const Bool_t kAllowDiagCl = kFALSE;
6cb10ec2 38 const Bool_t kUseLUT[3] = {kTRUE,kTRUE,kFALSE}; // use TGeo mat.queries only for RefitInward
70f61d86 39 //
097e4cdf 40 // long tracks
14ba4e91 41 /*
42 // tuned for 20x20 pixels with x/x0= 0.3,0.3,0.3,0.5,0.5,0.5,0.5% CDR setup
43 //
097e4cdf 44 int c0nBranch[7] = {5,10,15,4,6,6,10}; // max branching for the seed on layer
45 int c0nCands[7] = {10,20,45,20,45,15,10}; // max candidates for the TPC seed
46 float c0tr2clChi2[7] = {20,25,30,40,45,45,70}; // cut on cluster to track chi2
47 float c0gloChi2[7] = {6, 10,20,40,70,70,70}; // cut on seed global norm chi2
48 float c0missPen[7] = {2.,2.,2.,2.,2.,2.,2.}; // missing cluster penalty
5e3587be 49 float c0maxChi2SA[14] = {0.,0.,0.,0.,2.,3.,8., 10.,10.,10.,10.,10.,10.,10.}; // chi2SA vs Nclus
097e4cdf 50 float c0maxChi2Match = 10.;
14ba4e91 51 */
097e4cdf 52 //
14ba4e91 53 // /*
54 // tuned for 20x20 pixels with x/x0= 0.3,0.3,0.3,0.5,0.5,0.5,0.5% TDR5 setup
55 int c0nBranch[7] = {3,9,15,4,5,7,10}; // max branching for the seed on layer
56 int c0nCands[7] = {10,15,45,20,60,20,10}; // max candidates for the TPC seed
57 float c0tr2clChi2[7] = {20,25,30,40,45,45,70}; // cut on cluster to track chi2
58 float c0gloChi2[7] = {6,10,20,30,60,60,70}; // cut on seed global norm chi2
59 float c0missPen[7] = {2.,2.,2.,2.,2.,2.,2.}; // missing cluster penalty
60 float c0maxChi2SA[14] = {0.,0.,0.,0.,2.5,5.,10., 20.,20.,20.,20.,20.,20.,20.}; // chi2SA vs Nclus
61 float c0maxChi2Match = 10.;
62 // */
63
64
097e4cdf 65 // short tracks from decays
14ba4e91 66 /*
67 // tuned for 20x20 pixels with x/x0= 0.3,0.3,0.3,0.5,0.5,0.5,0.5% CDR setup
097e4cdf 68 int c1nBranch[7] = {0,0,0,4,6,6,10}; // max branching for the seed on layer
69 int c1nCands[7] = {0,0,0,20,45,15,10}; // max candidates for the TPC seed
70 float c1tr2clChi2[7] = {0,0,0,20,20,20,30}; // cut on cluster to track chi2
71 float c1gloChi2[7] = {0,0,0,16,40,30,30}; // cut on seed global norm chi2
72 float c1missPen[7] = {0.,0.,0.,2.,2.,2.,2.}; // missing cluster penalty
5e3587be 73 float c1maxChi2SA[14] = {0.,0.,0.,7.,8.,8.,8., 10.,10.,10.,10.,10.,10.,10.}; // chi2SA vs Nclus
097e4cdf 74 float c1maxChi2Match = 8.;
14ba4e91 75 */
76
77 // short tracks from decays
78 int c1nBranch[7] = {0,0,0,4,6,6,10}; // max branching for the seed on layer
1318fc42 79 int c1nCands[7] = {0,0,0,5,5,5,8}; // max candidates for the TPC seed
14ba4e91 80 float c1tr2clChi2[7] = {0,0,0,20,20,20,30}; // cut on cluster to track chi2
81 float c1gloChi2[7] = {0,0,0,16,40,35,30}; // cut on seed global norm chi2
82 float c1missPen[7] = {0.,0.,0.,2.,2.,2.,2.}; // missing cluster penalty
83 float c1maxChi2SA[14] = {0.,0.,0.,5.,13.,13.,18., 10.,10.,10.,10.,10.,10.,10.}; // chi2SA vs Nclus
84 float c1maxChi2Match = 10.;
097e4cdf 85
70f61d86 86 //
87 /*
88 // tuned for 20x33 pixels
097e4cdf 89 int c0nBranch[7] = {5,10,15,4,6,6,10}; // max branching for the seed on layer
90 int c0nCands[7] = {10,20,25,20,30,15,20}; // max candidates for the TPC seed
91 float c0tr2clChi2[7] = {20,20,25,25,25,30,40}; // cut on cluster to track chi2
92 float c0gloChi2[7] = {9, 10,15,20,30,30,30}; // cut on seed global norm chi2
93 float c0missPen[7] = {2.,2.,2.,2.,2.,2.,2.}; // missing cluster penalty
5e3587be 94 float c0maxChi2SA[14] = {0.,0.,0.,0.,12.,13.,18., 20.,20.,20.,20.,20.,20.,20.}; // chi2SA vs Nclus
097e4cdf 95 float c0maxChi2Match = 10.;
70f61d86 96 */
1318fc42 97 // very short tracks from decays
98 int c2nBranch[7] = {0,0,0,0,0,6,10}; // max branching for the seed on layer
99 int c2nCands[7] = {0,0,0,0,0,5,8}; // max candidates for the TPC seed
100 float c2tr2clChi2[7] = {0,0,0,0,0,15,20}; // cut on cluster to track chi2
101 float c2gloChi2[7] = {0,0,0,0,0,15,20}; // cut on seed global norm chi2
102 float c2missPen[7] = {0.,0.,0.,0.,0.,2.,2.}; // missing cluster penalty
103 float c2maxChi2SA[14] = {0.,5.,5.,5.,13.,13.,18., 10.,10.,10.,10.,10.,10.,10.}; // chi2SA vs Nclus, meaningless for 2 point tracks
104 float c2maxChi2Match = 6.;
105
70f61d86 106
ee58ce21 107 //
f8a27611 108 {
109 AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetLowFluxParam();
110 //
111 itsRecoParam->SetNLayers(nLr);
112 //
113 //******************************************************************
114 itsRecoParam->SetEventSpecie(AliRecoParam::kLowMult);
115 itsRecoParam->SetTitle("LowMult");
116 recoParamArray->AddLast(itsRecoParam);
42c3d4bd 117 //******************************************************************
70f61d86 118 for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
6cb10ec2 119 for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
ee58ce21 120 //
42c3d4bd 121 // Add tracking conditions >>>
122 trCond = new AliITSUTrackCond();
123 trCond->SetNLayers(nLr);
097e4cdf 124 trCond->SetMaxITSTPCMatchChi2(c0maxChi2Match);
ee54014a 125 //
d99994b2 126 // to exclude some layer use trCon->ExcludeLayer(lrID);
127 //
ee54014a 128 for (int i=0;i<nLr;i++) {
097e4cdf 129 trCond->SetMaxBranches(i,c0nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
130 trCond->SetMaxCandidates(i,c0nCands[i]); // each tpc track may have at most nCands prolongations
131 trCond->SetMaxTr2ClChi2(i,c0tr2clChi2[i]); // cut on cluster to track chi2
132 trCond->SetMaxChi2GloNrm(i,c0gloChi2[i]); // cut on cluster to track global chi2
133 trCond->SetMissPenalty(i,c0missPen[i]); // missing cluster penalty
ee54014a 134 }
5e3587be 135 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c0maxChi2SA[i-1]);
38997c3c 136 //
42c3d4bd 137 trCond->AddNewCondition(5); // min hits
70f61d86 138 trCond->AddGroupPattern( kBit0|kBit1|kBit2, 2); // at least 2 hits in 3 inner layers
139 trCond->AddGroupPattern( kBit3|kBit4 , 1); // at least 1 hit in 2 middle layers
140 trCond->AddGroupPattern( kBit5|kBit6 , 1); // at least 1 hit in 2 outer layers
ee54014a 141 //
142 trCond->Init();
143 //
42c3d4bd 144 itsRecoParam->AddTrackingCondition(trCond);
097e4cdf 145 //-----------------------------------------------------------
146 // short tracks
147 trCond = new AliITSUTrackCond();
148 trCond->SetNLayers(nLr);
149 //
150 trCond->ExcludeLayer(0);
151 trCond->ExcludeLayer(1);
152 trCond->ExcludeLayer(2);
153 //
154 trCond->SetMaxITSTPCMatchChi2(c1maxChi2Match);
097e4cdf 155 //
156 // to exclude some layer use trCon->ExcludeLayer(lrID);
157 //
158 for (int i=0;i<nLr;i++) {
159 trCond->SetMaxBranches(i,c1nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
160 trCond->SetMaxCandidates(i,c1nCands[i]); // each tpc track may have at most nCands prolongations
161 trCond->SetMaxTr2ClChi2(i,c1tr2clChi2[i]); // cut on cluster to track chi2
162 trCond->SetMaxChi2GloNrm(i,c1gloChi2[i]); // cut on cluster to track global chi2
163 trCond->SetMissPenalty(i,c1missPen[i]); // missing cluster penalty
097e4cdf 164 }
5e3587be 165 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c1maxChi2SA[i-1]);
097e4cdf 166 //
167 trCond->AddNewCondition(4); // min hits
168 trCond->AddGroupPattern( kBit3|kBit4|kBit5|kBit6, 4); // at least 1 hit in 2 outer layers
169 //
170 trCond->Init();
171 //
1318fc42 172 itsRecoParam->AddTrackingCondition(trCond);
173 // Add tracking conditions <<<
174 //-----------------------------------------------------------
175 // very short tracks
176 trCond = new AliITSUTrackCond();
177 trCond->SetNLayers(nLr);
178 //
179 trCond->ExcludeLayer(0);
180 trCond->ExcludeLayer(1);
181 trCond->ExcludeLayer(2);
182 trCond->ExcludeLayer(3);
183 trCond->ExcludeLayer(4);
184 //
185 trCond->SetMaxITSTPCMatchChi2(c2maxChi2Match);
186 //
187 // to exclude some layer use trCon->ExcludeLayer(lrID);
188 //
189 for (int i=0;i<nLr;i++) {
190 trCond->SetMaxBranches(i,c2nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
191 trCond->SetMaxCandidates(i,c2nCands[i]); // each tpc track may have at most nCands prolongations
192 trCond->SetMaxTr2ClChi2(i,c2tr2clChi2[i]); // cut on cluster to track chi2
193 trCond->SetMaxChi2GloNrm(i,c2gloChi2[i]); // cut on cluster to track global chi2
194 trCond->SetMissPenalty(i,c2missPen[i]); // missing cluster penalty
195 }
196 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c2maxChi2SA[i-1]);
197 //
198 trCond->AddNewCondition(2); // min hits
199 trCond->AddGroupPattern( kBit5|kBit6, 2);
200 //
201 trCond->Init();
202 //
097e4cdf 203 itsRecoParam->AddTrackingCondition(trCond);
ee58ce21 204 // Add tracking conditions <<<
f8a27611 205 }
206 {
207 AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetHighFluxParam();
208 //
209 itsRecoParam->SetNLayers(nLr);
210 //
211 //******************************************************************
212 itsRecoParam->SetEventSpecie(AliRecoParam::kHighMult);
213 itsRecoParam->SetTitle("HighMult");
214 recoParamArray->AddLast(itsRecoParam);
42c3d4bd 215 //******************************************************************
70f61d86 216 for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
6cb10ec2 217 for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
ee54014a 218 //
42c3d4bd 219 // Add tracking conditions >>>
220 trCond = new AliITSUTrackCond();
221 trCond->SetNLayers(nLr);
097e4cdf 222 trCond->SetMaxITSTPCMatchChi2(c0maxChi2Match);
ee54014a 223 //
224 for (int i=0;i<nLr;i++) {
097e4cdf 225 trCond->SetMaxBranches(i,c0nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
226 trCond->SetMaxCandidates(i,c0nCands[i]); // each tpc track may have at most nCands prolongations
227 trCond->SetMaxTr2ClChi2(i,c0tr2clChi2[i]); // cut on cluster to track chi2
228 trCond->SetMaxChi2GloNrm(i,c0gloChi2[i]); // cut on cluster to track global chi2
229 trCond->SetMissPenalty(i,c0missPen[i]); // missing cluster penalty
ee54014a 230 }
5e3587be 231 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c0maxChi2SA[i-1]);
ee54014a 232 //
42c3d4bd 233 trCond->AddNewCondition(5); // min hits
70f61d86 234 trCond->AddGroupPattern( kBit0|kBit1|kBit2, 2); // at least 2 hits in 3 inner layers
235 trCond->AddGroupPattern( kBit3|kBit4 , 1); // at least 1 hit in 2 middle layers
236 trCond->AddGroupPattern( kBit5|kBit6 , 1); // at least 1 hit in 2 outer layers
ee54014a 237 //
238 trCond->Init();
239 //
42c3d4bd 240 itsRecoParam->AddTrackingCondition(trCond);
097e4cdf 241 //-----------------------------------------------------------
242 // short tracks
243 trCond = new AliITSUTrackCond();
244 trCond->SetNLayers(nLr);
245 //
246 trCond->ExcludeLayer(0);
247 trCond->ExcludeLayer(1);
248 trCond->ExcludeLayer(2);
249 //
250 trCond->SetMaxITSTPCMatchChi2(c1maxChi2Match);
097e4cdf 251 //
252 // to exclude some layer use trCon->ExcludeLayer(lrID);
253 //
254 for (int i=0;i<nLr;i++) {
255 trCond->SetMaxBranches(i,c1nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
256 trCond->SetMaxCandidates(i,c1nCands[i]); // each tpc track may have at most nCands prolongations
257 trCond->SetMaxTr2ClChi2(i,c1tr2clChi2[i]); // cut on cluster to track chi2
258 trCond->SetMaxChi2GloNrm(i,c1gloChi2[i]); // cut on cluster to track global chi2
259 trCond->SetMissPenalty(i,c1missPen[i]); // missing cluster penalty
097e4cdf 260 }
5e3587be 261 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c1maxChi2SA[i-1]);
097e4cdf 262 //
263 trCond->AddNewCondition(4); // min hits
264 trCond->AddGroupPattern( kBit3|kBit4|kBit5|kBit6, 4);
265 //
266 trCond->Init();
267 //
268 itsRecoParam->AddTrackingCondition(trCond);
ee58ce21 269 // Add tracking conditions <<<
42c3d4bd 270 //
1318fc42 271 //-----------------------------------------------------------
272 // very short tracks
273 trCond = new AliITSUTrackCond();
274 trCond->SetNLayers(nLr);
275 //
276 trCond->ExcludeLayer(0);
277 trCond->ExcludeLayer(1);
278 trCond->ExcludeLayer(2);
279 trCond->ExcludeLayer(3);
280 trCond->ExcludeLayer(4);
281 //
282 trCond->SetMaxITSTPCMatchChi2(c2maxChi2Match);
283 //
284 // to exclude some layer use trCon->ExcludeLayer(lrID);
285 //
286 for (int i=0;i<nLr;i++) {
287 trCond->SetMaxBranches(i,c2nBranch[i]); // each seed propagated to given layer can produce max nBranch branches
288 trCond->SetMaxCandidates(i,c2nCands[i]); // each tpc track may have at most nCands prolongations
289 trCond->SetMaxTr2ClChi2(i,c2tr2clChi2[i]); // cut on cluster to track chi2
290 trCond->SetMaxChi2GloNrm(i,c2gloChi2[i]); // cut on cluster to track global chi2
291 trCond->SetMissPenalty(i,c2missPen[i]); // missing cluster penalty
292 }
293 for (int i=1;i<=2*nLr;i++) trCond->SetMaxITSSAChi2(i,c2maxChi2SA[i-1]);
294 //
295 trCond->AddNewCondition(2); // min hits
296 trCond->AddGroupPattern( kBit5|kBit6, 2);
297 //
298 trCond->Init();
299 //
300 itsRecoParam->AddTrackingCondition(trCond);
301 // Add tracking conditions <<<
f8a27611 302 }
303 //
304 // Set the default
305 Bool_t defaultIsSet = kFALSE;
306 for(Int_t i =0; i < recoParamArray->GetEntriesFast(); i++) {
307 AliDetectorRecoParam *param = (AliDetectorRecoParam *)recoParamArray->UncheckedAt(i);
308 if (!param) continue;
309 if (default & param->GetEventSpecie()) {
310 param->SetAsDefault();
311 defaultIsSet = kTRUE;
312 }
313 }
314
315 if (!defaultIsSet) {
316 Error(macroname,"The default reconstruction parameters are not set! Exiting...");
317 return;
318 }
319
320 // save in CDB storage
321 AliCDBMetaData *md= new AliCDBMetaData();
322 md->SetResponsible("Andrea Dainese");
323 md->SetComment("Reconstruction parameters ITS.");
324 md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
325 md->SetBeamPeriod(0);
326 AliCDBId id("ITS/Calib/RecoParam",0,AliCDBRunRange::Infinity());
327 cdb->GetDefaultStorage()->Put(recoParamArray,id, md);
328 //
329 return;
330}
331