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