1 // Script to create reconstruction parameters and store them into CDB
2 // Author: Yuri Kharlov
7 #include "TControlBar.h"
10 #include "AliEMCALRecParam.h"
11 #include "AliCDBMetaData.h"
13 #include "AliCDBEntry.h"
14 #include "AliCDBManager.h"
15 #include "AliCDBStorage.h"
19 void AliEMCALSetRecParamCDB(AliRecoParam::EventSpecie_t default = AliRecoParam::kLowMult)
22 // Create an object AliEMCALRecParam and store it to OCDB
24 //Activate CDB storage
25 AliCDBManager* cdb = AliCDBManager::Instance();
26 if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
28 // Create reconstruction parameter object and set parameter values
29 TObjArray* recParamArray = new TObjArray();
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);
43 //Add other options here, if desired, for
44 //Cosmic, LowMult and HighMult type events
45 //and add them to the array
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);
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);
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);
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);
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);
96 if(default & param->GetEventSpecie()) {
97 param->SetAsDefault();
103 AliError("The default reconstruction parameters are not set! Exiting...");
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);
114 AliCDBId id("EMCAL/Calib/RecoParam",0,AliCDBRunRange::Infinity());
115 cdb->GetDefaultStorage()->Put(recParamArray, id, md);
120 //-----------------------------------------------------------------------------
121 AliEMCALRecParam* GetHighMultiplicityParameters()
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();
127 //AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
129 AliEMCALRecParam* params = AliEMCALRecParam::GetDefaultParameters();
130 //params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
131 params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
134 params->SetClusteringThreshold(0.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
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
156 // as a first step, all array elements are initialized to 0.0
158 for (i = 0; i < 6; i++) {
159 params->SetGammaEnergyProb(i,0.);
160 params->SetHadronEnergyProb(i,0.);
161 params->SetPiZeroEnergyProb(i,0.);
163 for (j = 0; j < 6; j++) {
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.);
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);
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);
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);
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.);
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);
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);
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);
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.);
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.);
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.);
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.);
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);
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);
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);
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);
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.);
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);
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);
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);
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);
303 //-----------------------------------------------------------------------------
304 AliEMCALRecParam* GetLowMultiplicityParameters()
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();
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
320 //PID parameters for pp implemented
321 // as a first step, all array elements are initialized to 0.0
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.);
332 params->SetGammaEnergyProb(i,0.); // not yet implemented
333 params->SetHadronEnergyProb(i,0.);
334 params->SetPiZeroEnergyProb(i,0.); // not yet implemented
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);
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);
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);
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.);
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);
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);
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);
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.);
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);
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);
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);
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);
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);
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);
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);
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.);
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);
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);
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.);
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);
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);