]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/macros/RecParamDB/AliEMCALSetRecParamCDB.C
fill the fraction of cell energy in cluster in case of unfolding ON
[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   //params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
131   params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
132   
133   //Clusterization
134   params->SetClusteringThreshold(0.5);
135   params->SetW0(4.5);
136   params->SetMinECut(0.45);
137   params->SetUnfold(kTRUE);
138   params->SetLocMaxCut(0.03);
139   params->SetTimeCut(250e-9);//250 ns
140   params->SetTimeMin(425e-9);//425 ns
141   params->SetTimeMax(825e-9);//825 ns
142
143   //Track matching
144   params->SetTrkCutX(6.0);
145   params->SetTrkCutY(6.0);
146   params->SetTrkCutZ(6.0);
147   params->SetTrkCutR(10.0);
148   params->SetTrkCutAlphaMin(-50.0);
149   params->SetTrkCutAlphaMax( 50.0);
150   params->SetTrkCutNITS(3.0);
151   params->SetTrkCutNTPC(20.0);
152   params->SetTrkCutAngle(10000.0);      // i.e. exclude this for the moment
153   
154   //PID
155         
156   // as a first step, all array elements are initialized to 0.0
157   Int_t i, j;
158   for (i = 0; i < 6; i++) {
159     params->SetGammaEnergyProb(i,0.);
160     params->SetHadronEnergyProb(i,0.); 
161     params->SetPiZeroEnergyProb(i,0.);
162     
163     for (j = 0; j < 6; j++) {
164       
165       params->SetGamma(i,j,0.);
166       params->SetHadron(i,j,0.);
167       params->SetPiZero(i,j, 0.);
168       params->SetGamma1to10(i,j,0.);
169       params->SetHadron1to10(i,j,0.);
170     }
171   } 
172   
173   params->SetGamma(0,0, -7.656908e-01); 
174   params->SetGamma(0,1,  2.352536e-01); 
175   params->SetGamma(0,2,  1.555996e-02);
176   params->SetGamma(0,3,  2.243525e-04);
177   params->SetGamma(0,4, -2.560087e-06);
178   
179   params->SetGamma(1,0,  6.500216e+00);
180   params->SetGamma(1,1, -2.564958e-01);
181   params->SetGamma(1,2,  1.967894e-01);
182   params->SetGamma(1,3, -3.982273e-04);
183   params->SetGamma(1,4,  2.797737e-06);
184   
185   params->SetGamma(2,0,  2.416489e+00);
186   params->SetGamma(2,1, -1.601258e-01);
187   params->SetGamma(2,2,  3.126839e-02);
188   params->SetGamma(2,3,  3.387532e-04);
189   params->SetGamma(2,4, -4.089145e-06);
190   
191   params->SetGamma(3,0,  0.);
192   params->SetGamma(3,1, -2.696008e+00);
193   params->SetGamma(3,2,  6.920305e-01);
194   params->SetGamma(3,3, -2.281122e-03);
195   params->SetGamma(3,4,  0.);
196   
197   params->SetGamma(4,0,  2.281564e-01);
198   params->SetGamma(4,1, -7.575040e-02);
199   params->SetGamma(4,2,  3.813423e-01);
200   params->SetGamma(4,3, -1.243854e-04);
201   params->SetGamma(4,4,  1.232045e-06);
202   
203   params->SetGamma(5,0, -3.290107e-01);
204   params->SetGamma(5,1,  3.707545e-02);
205   params->SetGamma(5,2,  2.917397e-03);
206   params->SetGamma(5,3,  4.695306e-05);
207   params->SetGamma(5,4, -3.572981e-07);
208   
209   params->SetHadron(0,0,   1.519112e-01);
210   params->SetHadron(0,1, -8.267603e-02);
211   params->SetHadron(0,2,  1.914574e-02);
212   params->SetHadron(0,3, -2.677921e-04);
213   params->SetHadron(0,4,  5.447939e-06);
214   
215   params->SetHadron(1,0,  0.);
216   params->SetHadron(1,1, -7.549870e-02); 
217   params->SetHadron(1,2,  3.930087e-01);
218   params->SetHadron(1,3, -2.368500e-03); 
219   params->SetHadron(1,4,  0.);
220   
221   params->SetHadron(2,0,  0.);
222   params->SetHadron(2,1, -2.463152e-02);
223   params->SetHadron(2,2,  1.349257e-01);
224   params->SetHadron(2,3, -1.089440e-03);
225   params->SetHadron(2,4,  0.);
226   
227   params->SetHadron(3,0, 0.);
228   params->SetHadron(3,1, 5.101560e-01);
229   params->SetHadron(3,2, 1.458679e-01);
230   params->SetHadron(3,3, 4.903068e-04);
231   params->SetHadron(3,4, 0.);
232   
233   params->SetHadron(4,0, 0.);
234   params->SetHadron(4,1, -6.693943e-03); 
235   params->SetHadron(4,2,  2.444753e-01);
236   params->SetHadron(4,3, -5.553749e-05);
237   params->SetHadron(4,4, 0.);
238   
239   params->SetHadron(5,0, -4.414030e-01);
240   params->SetHadron(5,1, 2.292277e-01);
241   params->SetHadron(5,2, -2.433737e-02);
242   params->SetHadron(5,3,  1.758422e-03);
243   params->SetHadron(5,4, -3.001493e-05);
244   
245   params->SetPiZero(0,0,  5.072157e-01);
246   params->SetPiZero(0,1, -5.352747e-01);
247   params->SetPiZero(0,2,  8.499259e-02);
248   params->SetPiZero(0,3, -3.687401e-03);
249   params->SetPiZero(0,4,  5.482280e-05);
250   
251   params->SetPiZero(1,0,  4.590137e+02); 
252   params->SetPiZero(1,1, -7.079341e+01);
253   params->SetPiZero(1,2,  4.990735e+00);
254   params->SetPiZero(1,3, -1.241302e-01);
255   params->SetPiZero(1,4,  1.065772e-03);
256   
257   params->SetPiZero(2,0,  1.376415e+02);
258   params->SetPiZero(2,1, -3.031577e+01);
259   params->SetPiZero(2,2,  2.474338e+00);
260   params->SetPiZero(2,3, -6.903410e-02);
261   params->SetPiZero(2,4,  6.244089e-04);
262   
263   params->SetPiZero(3,0, 0.);
264   params->SetPiZero(3,1,  1.145983e+00);
265   params->SetPiZero(3,2, -2.476052e-01);
266   params->SetPiZero(3,3,  1.367373e-02);
267   params->SetPiZero(3,4, 0.);
268   
269   params->SetPiZero(4,0, -2.097586e+02);
270   params->SetPiZero(4,1,  6.300800e+01);
271   params->SetPiZero(4,2, -4.038906e+00);
272   params->SetPiZero(4,3,  1.088543e-01);
273   params->SetPiZero(4,4, -9.362485e-04);
274   
275   params->SetPiZero(5,0, -1.671477e+01); 
276   params->SetPiZero(5,1,  2.995415e+00);
277   params->SetPiZero(5,2, -6.040360e-02);
278   params->SetPiZero(5,3, -6.137459e-04);
279   params->SetPiZero(5,4,  1.847328e-05);
280   
281   // High flux ones pp 
282   
283   params->SetHadronEnergyProb(0, 0.);
284   params->SetHadronEnergyProb(1, 0.);
285   params->SetHadronEnergyProb(2,  6.188452e-02);
286   params->SetHadronEnergyProb(3,  2.030230e+00);
287   params->SetHadronEnergyProb(4, -6.402242e-02);
288   
289   // raw signal fitting
290   params->SetHighLowGainFactor(16.);
291   params->SetOrderParameter(2);
292   params->SetTau(2.35);
293   params->SetNoiseThreshold(3);
294   params->SetNPedSamples(5);
295   params->SetRemoveBadChannels(kFALSE);
296   params->SetFittingAlgorithm(0);//(AliCaloConstants::kStandard);  
297   params->SetFALTROUsage(kTRUE); 
298   params->SetLEDFit(kFALSE);   
299
300   return params ;
301 }       
302
303 //-----------------------------------------------------------------------------
304 AliEMCALRecParam* GetLowMultiplicityParameters()
305 {
306   // Set here the low flux/multiplicity ("p+p") parameters for the reconstruction
307   //Right now it should be the same settings as with
308   //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetLowFluxParam();
309   
310   AliEMCALRecParam* params =  AliEMCALRecParam::GetDefaultParameters();
311   //params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
312   params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
313   params->SetUnfold(kTRUE);
314   params->SetClusteringThreshold(0.1); // 100 MeV                                             
315   params->SetMinECut(0.01);  //10 MeV           
316   params->SetTimeCut(250e-9);//250 ns
317   params->SetTimeMin(425e-9);//425 ns
318   params->SetTimeMax(825e-9);//825 ns
319
320   //PID parameters for pp  implemented 
321   // as a first step, all array elements are initialized to 0.0
322   Int_t i, j;
323   for (i = 0; i < 6; i++) {
324     for (j = 0; j < 6; j++) {
325       params->SetGamma(i,j,0.);
326       params->SetGamma1to10(i,j,0.);
327       params->SetHadron(i,j,0.);
328       params->SetHadron1to10(i,j,0.);
329       params->SetPiZero(i,j,0.);
330       
331     }
332     params->SetGammaEnergyProb(i,0.); // not yet implemented
333     params->SetHadronEnergyProb(i,0.);
334     params->SetPiZeroEnergyProb(i,0.); // not yet implemented
335   }
336   
337   params->SetGamma(0,0, -7.656908e-01);
338   params->SetGamma(0,1,  2.352536e-01);
339   params->SetGamma(0,2,  1.555996e-02);
340   params->SetGamma(0,3,  2.243525e-04);
341   params->SetGamma(0,4, -2.560087e-06);
342   
343   params->SetGamma(1,0,  6.500216e+00);
344   params->SetGamma(1,1, -2.564958e-01);
345   params->SetGamma(1,2,  1.967894e-01);
346   params->SetGamma(1,3, -3.982273e-04);
347   params->SetGamma(1,4,  2.797737e-06);
348   
349   params->SetGamma(2,0,  2.416489e+00);
350   params->SetGamma(2,1, -1.601258e-01);
351   params->SetGamma(2,2,  3.126839e-02);
352   params->SetGamma(2,3,  3.387532e-04);
353   params->SetGamma(2,4, -4.089145e-06);
354   
355   params->SetGamma(3,0,0.);
356   params->SetGamma(3,1,-2.696008e+00); 
357   params->SetGamma(3,2, 6.920305e-01);
358   params->SetGamma(3,3,-2.281122e-03);
359   params->SetGamma(3,4,0.);
360   
361   params->SetGamma(4,0,  2.281564e-01); 
362   params->SetGamma(4,1, -7.575040e-02);
363   params->SetGamma(4,2,  3.813423e-01);
364   params->SetGamma(4,3, -1.243854e-04);
365   params->SetGamma(4,4,  1.232045e-06);
366   
367   params->SetGamma(5,0, -3.290107e-01);
368   params->SetGamma(5,1,  3.707545e-02);
369   params->SetGamma(5,2,  2.917397e-03);
370   params->SetGamma(5,3,  4.695306e-05);
371   params->SetGamma(5,4, -3.572981e-07);
372   
373   params->SetHadron(0,0,  9.482243e-01); 
374   params->SetHadron(0,1, -2.780896e-01);
375   params->SetHadron(0,2,  2.223507e-02);
376   params->SetHadron(0,3,  7.294263e-04);
377   params->SetHadron(0,4, -5.665872e-06); 
378   
379   params->SetHadron(1,0,  0.);
380   params->SetHadron(1,1,  0.);
381   params->SetHadron(1,2,  2.483298e-01);
382   params->SetHadron(1,3,  0.);
383   params->SetHadron(1,4,  0.);
384   
385   params->SetHadron(2,0, -5.601199e+00);
386   params->SetHadron(2,1,  2.097382e+00);
387   params->SetHadron(2,2, -2.307965e-01);
388   params->SetHadron(2,3,  9.206871e-03);
389   params->SetHadron(2,4, -8.887548e-05);
390   
391   params->SetHadron(3,0,  6.543101e+00);
392   params->SetHadron(3,1, -2.305203e+00);
393   params->SetHadron(3,2,  2.761673e-01);
394   params->SetHadron(3,3, -5.465855e-03);
395   params->SetHadron(3,4,  2.784329e-05);
396   
397   params->SetHadron(4,0, -2.443530e+01);
398   params->SetHadron(4,1,  8.902578e+00);
399   params->SetHadron(4,2, -5.265901e-01);
400   params->SetHadron(4,3,  2.549111e-02);
401   params->SetHadron(4,4, -2.196801e-04);
402   
403   params->SetHadron(5,0,  2.102007e-01);
404   params->SetHadron(5,1, -3.844418e-02);
405   params->SetHadron(5,2,  1.234682e-01);
406   params->SetHadron(5,3, -3.866733e-03);
407   params->SetHadron(5,4,  3.362719e-05);
408   
409   params->SetPiZero(0,0,  5.07215e-01);
410   params->SetPiZero(0,1, -5.35274e-01);
411   params->SetPiZero(0,2,  8.49925e-02);
412   params->SetPiZero(0,3, -3.68740e-03);
413   params->SetPiZero(0,4,  5.48228e-05);
414   
415   params->SetPiZero(1,0,  4.590137e+02);
416   params->SetPiZero(1,1, -7.079341e+01);
417   params->SetPiZero(1,2,  4.990735e+00);
418   params->SetPiZero(1,3, -1.241302e-01);
419   params->SetPiZero(1,4,  1.065772e-03);
420   
421   params->SetPiZero(2,0,  1.376415e+02); 
422   params->SetPiZero(2,1, -3.031577e+01);
423   params->SetPiZero(2,2,  2.474338e+00);
424   params->SetPiZero(2,3, -6.903410e-02); 
425   params->SetPiZero(2,4,  6.244089e-04);
426   
427   params->SetPiZero(3,0,  0.);
428   params->SetPiZero(3,1,  1.145983e+00);
429   params->SetPiZero(3,2, -2.476052e-01);
430   params->SetPiZero(3,3,  1.367373e-02);
431   params->SetPiZero(3,4,  0.);
432   
433   params->SetPiZero(4,0, -2.09758e+02);
434   params->SetPiZero(4,1,  6.30080e+01);
435   params->SetPiZero(4,2, -4.03890e+00);
436   params->SetPiZero(4,3,  1.08854e-01);
437   params->SetPiZero(4,4, -9.36248e-04);
438   
439   params->SetPiZero(5,0, -1.671477e+01);
440   params->SetPiZero(5,1,  2.995415e+00);
441   params->SetPiZero(5,2, -6.040360e-02);
442   params->SetPiZero(5,3,  -6.137459e-04);
443   params->SetPiZero(5,4, 1.847328e-05);
444   
445   //     params->SetHadronEnergyProb(0,0.);
446   //     params->SetHadronEnergyProb(1,0.);
447   //     params->SetHadronEnergyProb(2,1.);
448   //     params->SetHadronEnergyProb(3,0.);
449   //     params->SetHadronEnergyProb(4,0.);
450   
451   params->SetHadronEnergyProb(0,  4.767543e-02);
452   params->SetHadronEnergyProb(1, -1.537523e+00);
453   params->SetHadronEnergyProb(2,  2.956727e-01);
454   params->SetHadronEnergyProb(3, -3.051022e+01);
455   params->SetHadronEnergyProb(4, -6.036931e-02);
456
457   // raw signal fitting
458   params->SetHighLowGainFactor(16.);
459   params->SetOrderParameter(2);
460   params->SetTau(2.35);
461   params->SetNoiseThreshold(3);
462   params->SetNPedSamples(5);
463   params->SetRemoveBadChannels(kFALSE);
464   params->SetFittingAlgorithm(0);//(AliCaloConstants::kStandard);  
465   params->SetFALTROUsage(kTRUE); 
466   params->SetLEDFit(kFALSE);   
467
468   return params;
469   
470 }
471
472