2f88762579ec1631d15812a713348747ff4e7707
[u/mrichter/AliRoot.git] / EMCAL / macros / RecParamDB / AliEMCALSetRecParamCDB.C
1 // Script to create reconstruction parameters and store them into CDB
2 // Author: Yuri Kharlov
3
4 /* $Id$ */
5
6 #if !defined(__CINT__)
7 #include "TControlBar.h"
8 #include "TString.h"
9
10 #include "AliEMCALRecParam.h"
11 #include "AliCDBMetaData.h"
12 #include "AliCDBId.h"
13 #include "AliCDBEntry.h"
14 #include "AliCDBManager.h"
15 #include "AliCDBStorage.h"
16 #endif
17
18
19 void AliEMCALSetRecParamCDB(AliRecoParam::EventSpecie_t default = AliRecoParam::kLowMult)
20 {
21   
22   // Create an object AliEMCALRecParam and store it to OCDB
23   
24   //Activate CDB storage
25   AliCDBManager* cdb = AliCDBManager::Instance();
26   if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
27   
28   // Create reconstruction parameter object and set parameter values
29   TObjArray* recParamArray = new TObjArray();
30   
31   {
32     //default
33     //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
34     AliEMCALRecParam *recParamDB = GetLowMultiplicityParameters();
35     recParamDB->SetName("Default - p+p");
36     recParamDB->SetTitle("Default - p+p");
37     //Add to the recParamArray
38     recParamDB->SetEventSpecie(AliRecoParam::kDefault);
39     recParamArray->AddLast(recParamDB);
40           
41   }
42   
43   //Add other options here, if desired, for
44   //Cosmic, LowMult and HighMult type events
45   //and add them to the array
46   
47   {
48     //For now, default is Pb+Pb, but let's add it again as
49     //the "high mult" version too...
50     //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetHighFluxParam();
51     AliEMCALRecParam *recParamDB = GetHighMultiplicityParameters();
52     recParamDB->SetName("High Flux - Pb+Pb");
53     recParamDB->SetTitle("High Flux - Pb+Pb");
54     recParamDB->SetEventSpecie(AliRecoParam::kHighMult);
55     recParamArray->AddLast(recParamDB);
56   }
57   
58   {
59     //Low multiplicity parameter modifications:
60     //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetLowFluxParam();
61     AliEMCALRecParam *recParamDB = GetLowMultiplicityParameters();
62     recParamDB->SetName("Low Flux - p+p");
63     recParamDB->SetTitle("Low Flux - p+p");
64     recParamDB->SetEventSpecie(AliRecoParam::kLowMult);
65     recParamArray->AddLast(recParamDB);
66     
67   }
68   
69   {
70     //Cosmic parameter modifications (same as low multiplicity):
71     //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetLowFluxParam();
72     AliEMCALRecParam *recParamDB = GetLowMultiplicityParameters();
73     recParamDB->SetName("Cosmic");
74     recParamDB->SetTitle("Cosmic");
75     recParamDB->SetEventSpecie(AliRecoParam::kCosmic);
76     recParamArray->AddLast(recParamDB);
77     
78   }
79   
80   {
81     //Calib parameter modifications (same as low multiplicity):
82     //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetLowFluxParam();
83     AliEMCALRecParam *recParamDB = GetLowMultiplicityParameters();
84     recParamDB->SetName("Calibration - LED");
85     recParamDB->SetTitle("Calibration - LED");
86     recParamDB->SetEventSpecie(AliRecoParam::kCalib);
87     recParamArray->AddLast(recParamDB);
88     
89   }
90   
91   //Set the default version in the array
92   Bool_t defaultIsSet = kFALSE;
93   for(Int_t i = 0; i < recParamArray->GetEntriesFast(); i++) {
94     AliDetectorRecoParam* param = (AliDetectorRecoParam*)recParamArray->UncheckedAt(i);
95     if(!param) continue;
96     if(default & param->GetEventSpecie()) {
97       param->SetAsDefault();
98       defaultIsSet = kTRUE;
99     }
100   }
101   
102   if(!defaultIsSet) {
103     AliError("The default reconstruction parameters are not set!  Exiting...");
104     return;
105   }
106   
107   // Store calibration data into database  
108   AliCDBMetaData *md = new AliCDBMetaData();
109   md->SetResponsible("J. Klay");
110   md->SetComment("Reconstruction Parameters: EMCAL");
111   md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
112   md->SetBeamPeriod(0);
113   
114   AliCDBId id("EMCAL/Calib/RecoParam",0,AliCDBRunRange::Infinity());
115   cdb->GetDefaultStorage()->Put(recParamArray, id, md);
116   
117   return;
118 }
119
120 //-----------------------------------------------------------------------------
121 AliEMCALRecParam* GetHighMultiplicityParameters()
122 {
123   //Set here the high flux/multiplicity ("Pb+Pb") parameters for the reconstruction
124   //Right now it should be the same settings as with
125   //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetHighFluxParam();
126   //or
127   //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
128   
129   AliEMCALRecParam* params =  AliEMCALRecParam::GetDefaultParameters();
130   //Clusterization
131
132   // params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
133   // params->SetClusteringThreshold(0.5);
134   // params->SetMinECut(0.45);
135
136   params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
137   params->SetClusteringThreshold(0.1); // 100 MeV                                             
138   params->SetMinECut(0.01);  //10 MeV    
139    
140   params->SetUnfold(kFALSE);
141
142   params->SetW0(4.5);
143
144   params->SetTimeCut(250e-9);//250 ns
145   params->SetTimeMin(425e-9);//425 ns
146   params->SetTimeMax(825e-9);//825 ns
147
148   //Track matching
149   params->SetTrkCutX(6.0);
150   params->SetTrkCutY(6.0);
151   params->SetTrkCutZ(6.0);
152   params->SetTrkCutR(10.0);
153   params->SetTrkCutAlphaMin(-50.0);
154   params->SetTrkCutAlphaMax( 50.0);
155   params->SetTrkCutNITS(3.0);
156   params->SetTrkCutNTPC(20.0);
157   params->SetTrkCutAngle(10000.0);      // i.e. exclude this for the moment
158   
159   //PID
160         
161   // as a first step, all array elements are initialized to 0.0
162   Int_t i, j;
163   for (i = 0; i < 6; i++) {
164     params->SetGammaEnergyProb(i,0.);
165     params->SetHadronEnergyProb(i,0.); 
166     params->SetPiZeroEnergyProb(i,0.);
167     
168     for (j = 0; j < 6; j++) {
169       
170       params->SetGamma(i,j,0.);
171       params->SetHadron(i,j,0.);
172       params->SetPiZero(i,j, 0.);
173       params->SetGamma1to10(i,j,0.);
174       params->SetHadron1to10(i,j,0.);
175     }
176   } 
177   
178   params->SetGamma(0,0, -7.656908e-01); 
179   params->SetGamma(0,1,  2.352536e-01); 
180   params->SetGamma(0,2,  1.555996e-02);
181   params->SetGamma(0,3,  2.243525e-04);
182   params->SetGamma(0,4, -2.560087e-06);
183   
184   params->SetGamma(1,0,  6.500216e+00);
185   params->SetGamma(1,1, -2.564958e-01);
186   params->SetGamma(1,2,  1.967894e-01);
187   params->SetGamma(1,3, -3.982273e-04);
188   params->SetGamma(1,4,  2.797737e-06);
189   
190   params->SetGamma(2,0,  2.416489e+00);
191   params->SetGamma(2,1, -1.601258e-01);
192   params->SetGamma(2,2,  3.126839e-02);
193   params->SetGamma(2,3,  3.387532e-04);
194   params->SetGamma(2,4, -4.089145e-06);
195   
196   params->SetGamma(3,0,  0.);
197   params->SetGamma(3,1, -2.696008e+00);
198   params->SetGamma(3,2,  6.920305e-01);
199   params->SetGamma(3,3, -2.281122e-03);
200   params->SetGamma(3,4,  0.);
201   
202   params->SetGamma(4,0,  2.281564e-01);
203   params->SetGamma(4,1, -7.575040e-02);
204   params->SetGamma(4,2,  3.813423e-01);
205   params->SetGamma(4,3, -1.243854e-04);
206   params->SetGamma(4,4,  1.232045e-06);
207   
208   params->SetGamma(5,0, -3.290107e-01);
209   params->SetGamma(5,1,  3.707545e-02);
210   params->SetGamma(5,2,  2.917397e-03);
211   params->SetGamma(5,3,  4.695306e-05);
212   params->SetGamma(5,4, -3.572981e-07);
213   
214   params->SetHadron(0,0,   1.519112e-01);
215   params->SetHadron(0,1, -8.267603e-02);
216   params->SetHadron(0,2,  1.914574e-02);
217   params->SetHadron(0,3, -2.677921e-04);
218   params->SetHadron(0,4,  5.447939e-06);
219   
220   params->SetHadron(1,0,  0.);
221   params->SetHadron(1,1, -7.549870e-02); 
222   params->SetHadron(1,2,  3.930087e-01);
223   params->SetHadron(1,3, -2.368500e-03); 
224   params->SetHadron(1,4,  0.);
225   
226   params->SetHadron(2,0,  0.);
227   params->SetHadron(2,1, -2.463152e-02);
228   params->SetHadron(2,2,  1.349257e-01);
229   params->SetHadron(2,3, -1.089440e-03);
230   params->SetHadron(2,4,  0.);
231   
232   params->SetHadron(3,0, 0.);
233   params->SetHadron(3,1, 5.101560e-01);
234   params->SetHadron(3,2, 1.458679e-01);
235   params->SetHadron(3,3, 4.903068e-04);
236   params->SetHadron(3,4, 0.);
237   
238   params->SetHadron(4,0, 0.);
239   params->SetHadron(4,1, -6.693943e-03); 
240   params->SetHadron(4,2,  2.444753e-01);
241   params->SetHadron(4,3, -5.553749e-05);
242   params->SetHadron(4,4, 0.);
243   
244   params->SetHadron(5,0, -4.414030e-01);
245   params->SetHadron(5,1, 2.292277e-01);
246   params->SetHadron(5,2, -2.433737e-02);
247   params->SetHadron(5,3,  1.758422e-03);
248   params->SetHadron(5,4, -3.001493e-05);
249   
250   params->SetPiZero(0,0,  5.072157e-01);
251   params->SetPiZero(0,1, -5.352747e-01);
252   params->SetPiZero(0,2,  8.499259e-02);
253   params->SetPiZero(0,3, -3.687401e-03);
254   params->SetPiZero(0,4,  5.482280e-05);
255   
256   params->SetPiZero(1,0,  4.590137e+02); 
257   params->SetPiZero(1,1, -7.079341e+01);
258   params->SetPiZero(1,2,  4.990735e+00);
259   params->SetPiZero(1,3, -1.241302e-01);
260   params->SetPiZero(1,4,  1.065772e-03);
261   
262   params->SetPiZero(2,0,  1.376415e+02);
263   params->SetPiZero(2,1, -3.031577e+01);
264   params->SetPiZero(2,2,  2.474338e+00);
265   params->SetPiZero(2,3, -6.903410e-02);
266   params->SetPiZero(2,4,  6.244089e-04);
267   
268   params->SetPiZero(3,0, 0.);
269   params->SetPiZero(3,1,  1.145983e+00);
270   params->SetPiZero(3,2, -2.476052e-01);
271   params->SetPiZero(3,3,  1.367373e-02);
272   params->SetPiZero(3,4, 0.);
273   
274   params->SetPiZero(4,0, -2.097586e+02);
275   params->SetPiZero(4,1,  6.300800e+01);
276   params->SetPiZero(4,2, -4.038906e+00);
277   params->SetPiZero(4,3,  1.088543e-01);
278   params->SetPiZero(4,4, -9.362485e-04);
279   
280   params->SetPiZero(5,0, -1.671477e+01); 
281   params->SetPiZero(5,1,  2.995415e+00);
282   params->SetPiZero(5,2, -6.040360e-02);
283   params->SetPiZero(5,3, -6.137459e-04);
284   params->SetPiZero(5,4,  1.847328e-05);
285   
286   // High flux ones pp 
287   
288   params->SetHadronEnergyProb(0, 0.);
289   params->SetHadronEnergyProb(1, 0.);
290   params->SetHadronEnergyProb(2,  6.188452e-02);
291   params->SetHadronEnergyProb(3,  2.030230e+00);
292   params->SetHadronEnergyProb(4, -6.402242e-02);
293   
294   // raw signal fitting
295   params->SetHighLowGainFactor(16.);
296   params->SetOrderParameter(2);
297   params->SetTau(2.35);
298   params->SetNoiseThreshold(3);
299   params->SetNPedSamples(5);
300   params->SetRemoveBadChannels(kFALSE);
301   params->SetFittingAlgorithm(0);//(AliCaloConstants::kStandard);  
302   params->SetFALTROUsage(kTRUE); 
303   params->SetLEDFit(kFALSE);   
304
305   return params ;
306 }       
307
308 //-----------------------------------------------------------------------------
309 AliEMCALRecParam* GetLowMultiplicityParameters()
310 {
311   // Set here the low flux/multiplicity ("p+p") parameters for the reconstruction
312   //Right now it should be the same settings as with
313   //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetLowFluxParam();
314   
315   AliEMCALRecParam* params =  AliEMCALRecParam::GetDefaultParameters();
316   //params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
317   params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
318   params->SetClusteringThreshold(0.1); // 100 MeV                                             
319   params->SetMinECut(0.01);  //10 MeV           
320
321   params->SetUnfold(kFALSE);
322
323   params->SetW0(4.5);
324
325   params->SetTimeCut(250e-9);//250 ns
326   params->SetTimeMin(425e-9);//425 ns
327   params->SetTimeMax(825e-9);//825 ns
328
329   //PID parameters for pp  implemented 
330   // as a first step, all array elements are initialized to 0.0
331   Int_t i, j;
332   for (i = 0; i < 6; i++) {
333     for (j = 0; j < 6; j++) {
334       params->SetGamma(i,j,0.);
335       params->SetGamma1to10(i,j,0.);
336       params->SetHadron(i,j,0.);
337       params->SetHadron1to10(i,j,0.);
338       params->SetPiZero(i,j,0.);
339       
340     }
341     params->SetGammaEnergyProb(i,0.); // not yet implemented
342     params->SetHadronEnergyProb(i,0.);
343     params->SetPiZeroEnergyProb(i,0.); // not yet implemented
344   }
345   
346   params->SetGamma(0,0, -7.656908e-01);
347   params->SetGamma(0,1,  2.352536e-01);
348   params->SetGamma(0,2,  1.555996e-02);
349   params->SetGamma(0,3,  2.243525e-04);
350   params->SetGamma(0,4, -2.560087e-06);
351   
352   params->SetGamma(1,0,  6.500216e+00);
353   params->SetGamma(1,1, -2.564958e-01);
354   params->SetGamma(1,2,  1.967894e-01);
355   params->SetGamma(1,3, -3.982273e-04);
356   params->SetGamma(1,4,  2.797737e-06);
357   
358   params->SetGamma(2,0,  2.416489e+00);
359   params->SetGamma(2,1, -1.601258e-01);
360   params->SetGamma(2,2,  3.126839e-02);
361   params->SetGamma(2,3,  3.387532e-04);
362   params->SetGamma(2,4, -4.089145e-06);
363   
364   params->SetGamma(3,0,0.);
365   params->SetGamma(3,1,-2.696008e+00); 
366   params->SetGamma(3,2, 6.920305e-01);
367   params->SetGamma(3,3,-2.281122e-03);
368   params->SetGamma(3,4,0.);
369   
370   params->SetGamma(4,0,  2.281564e-01); 
371   params->SetGamma(4,1, -7.575040e-02);
372   params->SetGamma(4,2,  3.813423e-01);
373   params->SetGamma(4,3, -1.243854e-04);
374   params->SetGamma(4,4,  1.232045e-06);
375   
376   params->SetGamma(5,0, -3.290107e-01);
377   params->SetGamma(5,1,  3.707545e-02);
378   params->SetGamma(5,2,  2.917397e-03);
379   params->SetGamma(5,3,  4.695306e-05);
380   params->SetGamma(5,4, -3.572981e-07);
381   
382   params->SetHadron(0,0,  9.482243e-01); 
383   params->SetHadron(0,1, -2.780896e-01);
384   params->SetHadron(0,2,  2.223507e-02);
385   params->SetHadron(0,3,  7.294263e-04);
386   params->SetHadron(0,4, -5.665872e-06); 
387   
388   params->SetHadron(1,0,  0.);
389   params->SetHadron(1,1,  0.);
390   params->SetHadron(1,2,  2.483298e-01);
391   params->SetHadron(1,3,  0.);
392   params->SetHadron(1,4,  0.);
393   
394   params->SetHadron(2,0, -5.601199e+00);
395   params->SetHadron(2,1,  2.097382e+00);
396   params->SetHadron(2,2, -2.307965e-01);
397   params->SetHadron(2,3,  9.206871e-03);
398   params->SetHadron(2,4, -8.887548e-05);
399   
400   params->SetHadron(3,0,  6.543101e+00);
401   params->SetHadron(3,1, -2.305203e+00);
402   params->SetHadron(3,2,  2.761673e-01);
403   params->SetHadron(3,3, -5.465855e-03);
404   params->SetHadron(3,4,  2.784329e-05);
405   
406   params->SetHadron(4,0, -2.443530e+01);
407   params->SetHadron(4,1,  8.902578e+00);
408   params->SetHadron(4,2, -5.265901e-01);
409   params->SetHadron(4,3,  2.549111e-02);
410   params->SetHadron(4,4, -2.196801e-04);
411   
412   params->SetHadron(5,0,  2.102007e-01);
413   params->SetHadron(5,1, -3.844418e-02);
414   params->SetHadron(5,2,  1.234682e-01);
415   params->SetHadron(5,3, -3.866733e-03);
416   params->SetHadron(5,4,  3.362719e-05);
417   
418   params->SetPiZero(0,0,  5.07215e-01);
419   params->SetPiZero(0,1, -5.35274e-01);
420   params->SetPiZero(0,2,  8.49925e-02);
421   params->SetPiZero(0,3, -3.68740e-03);
422   params->SetPiZero(0,4,  5.48228e-05);
423   
424   params->SetPiZero(1,0,  4.590137e+02);
425   params->SetPiZero(1,1, -7.079341e+01);
426   params->SetPiZero(1,2,  4.990735e+00);
427   params->SetPiZero(1,3, -1.241302e-01);
428   params->SetPiZero(1,4,  1.065772e-03);
429   
430   params->SetPiZero(2,0,  1.376415e+02); 
431   params->SetPiZero(2,1, -3.031577e+01);
432   params->SetPiZero(2,2,  2.474338e+00);
433   params->SetPiZero(2,3, -6.903410e-02); 
434   params->SetPiZero(2,4,  6.244089e-04);
435   
436   params->SetPiZero(3,0,  0.);
437   params->SetPiZero(3,1,  1.145983e+00);
438   params->SetPiZero(3,2, -2.476052e-01);
439   params->SetPiZero(3,3,  1.367373e-02);
440   params->SetPiZero(3,4,  0.);
441   
442   params->SetPiZero(4,0, -2.09758e+02);
443   params->SetPiZero(4,1,  6.30080e+01);
444   params->SetPiZero(4,2, -4.03890e+00);
445   params->SetPiZero(4,3,  1.08854e-01);
446   params->SetPiZero(4,4, -9.36248e-04);
447   
448   params->SetPiZero(5,0, -1.671477e+01);
449   params->SetPiZero(5,1,  2.995415e+00);
450   params->SetPiZero(5,2, -6.040360e-02);
451   params->SetPiZero(5,3,  -6.137459e-04);
452   params->SetPiZero(5,4, 1.847328e-05);
453   
454   //     params->SetHadronEnergyProb(0,0.);
455   //     params->SetHadronEnergyProb(1,0.);
456   //     params->SetHadronEnergyProb(2,1.);
457   //     params->SetHadronEnergyProb(3,0.);
458   //     params->SetHadronEnergyProb(4,0.);
459   
460   params->SetHadronEnergyProb(0,  4.767543e-02);
461   params->SetHadronEnergyProb(1, -1.537523e+00);
462   params->SetHadronEnergyProb(2,  2.956727e-01);
463   params->SetHadronEnergyProb(3, -3.051022e+01);
464   params->SetHadronEnergyProb(4, -6.036931e-02);
465
466   // raw signal fitting
467   params->SetHighLowGainFactor(16.);
468   params->SetOrderParameter(2);
469   params->SetTau(2.35);
470   params->SetNoiseThreshold(3);
471   params->SetNPedSamples(5);
472   params->SetRemoveBadChannels(kFALSE);
473   params->SetFittingAlgorithm(0);//(AliCaloConstants::kStandard);  
474   params->SetFALTROUsage(kTRUE); 
475   params->SetLEDFit(kFALSE);   
476
477   return params;
478   
479 }
480
481