3cf595b25b84bca2d2f372fac95338493662360a
[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
29   // Create reconstruction parameter object and set parameter values
30   TObjArray* recParamArray = new TObjArray();
31
32   {
33     //default
34     AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
35     
36     //Clusterization
37     recParamDB->SetClusteringThreshold(0.5);
38     recParamDB->SetW0(4.5);
39     recParamDB->SetMinECut(0.45);
40     recParamDB->SetUnfold(kFALSE);
41     recParamDB->SetLocMaxCut(0.03);
42     
43     //Track matching
44     recParamDB->SetTrkCutX(6.0);
45     recParamDB->SetTrkCutY(6.0);
46     recParamDB->SetTrkCutZ(6.0);
47     recParamDB->SetTrkCutR(10.0);
48     recParamDB->SetTrkCutAlphaMin(-50.0);
49     recParamDB->SetTrkCutAlphaMax( 50.0);
50     recParamDB->SetTrkCutNITS(3.0);
51     recParamDB->SetTrkCutNTPC(20.0);
52     recParamDB->SetTrkCutAngle(10000.0);      // i.e. exclude this for the moment
53     
54     //PID
55     
56     // as a first step, all array elements are initialized to 0.0
57     Int_t i, j;
58     for (i = 0; i < 6; i++) {
59       for (j = 0; j < 6; j++) {
60         
61         recParamDB->SetGamma(i,j,0.);
62         recParamDB->SetHadron(i,j,0.);
63         recParamDB->SetPiZero5to10(i,j, 0.);
64         recParamDB->SetPiZero10to60(i,j,0.);
65       }
66     } 
67     
68     recParamDB->SetGamma(0,0,  0.038022);
69     recParamDB->SetGamma(0,1, -0.0001883);
70     recParamDB->SetGamma(0,2,  5.449e-06);
71     
72     recParamDB->SetGamma(1,0,  0.207313);
73     recParamDB->SetGamma(1,1, -0.000978);
74     recParamDB->SetGamma(1,2,  0.00001634);
75     
76     recParamDB->SetGamma(2,0,  0.043364);
77     recParamDB->SetGamma(2,1, -0.0002048);
78     recParamDB->SetGamma(2,2,  8.661e-06);
79     recParamDB->SetGamma(2,3, -1.353e-07);
80     
81     recParamDB->SetGamma(3,0,  0.265004);
82     recParamDB->SetGamma(3,1,  0.061298);
83     recParamDB->SetGamma(3,2, -0.003203);
84     recParamDB->SetGamma(3,3,  4.73e-05);
85     
86     recParamDB->SetGamma(4,0,  0.243579);
87     recParamDB->SetGamma(4,1, -1.614e-05);
88     
89     recParamDB->SetGamma(5,0,  0.002942);
90     recParamDB->SetGamma(5,1, -3.976e-05);
91     
92     recParamDB->SetHadron(0,0,  0.011945 / 3.);
93     recParamDB->SetHadron(0,1,  0.000386 / 3.);
94     recParamDB->SetHadron(0,2, -0.000014 / 3.);
95     recParamDB->SetHadron(0,3,  1.336e-07 / 3.);
96     
97     recParamDB->SetHadron(1,0,  0.496544);
98     recParamDB->SetHadron(1,1, -0.003226);
99     recParamDB->SetHadron(1,2,  0.00001678);
100     
101     recParamDB->SetHadron(2,0,  0.144838);
102     recParamDB->SetHadron(2,1, -0.002954);
103     recParamDB->SetHadron(2,2,  0.00008754);
104     recParamDB->SetHadron(2,3, -7.587e-07);
105     
106     recParamDB->SetHadron(3,0,  1.264461 / 7.);
107     recParamDB->SetHadron(3,1,  0.002097 / 7.);
108     
109     recParamDB->SetHadron(4,0,  0.261950);
110     recParamDB->SetHadron(4,1, -0.001078);
111     recParamDB->SetHadron(4,2,  0.00003237);
112     recParamDB->SetHadron(4,3, -3.241e-07);
113     recParamDB->SetHadron(4,4,  0.);
114     recParamDB->SetHadron(4,5,  0.);
115     recParamDB->SetHadron(5,0,  0.010317);
116     recParamDB->SetHadron(5,1,  0.);
117     recParamDB->SetHadron(5,2,  0.);
118     recParamDB->SetHadron(5,3,  0.);
119     recParamDB->SetHadron(5,4,  0.);
120     recParamDB->SetHadron(5,5,  0.);
121     
122     recParamDB->SetPiZero5to10(0,0, 0.009138);
123     recParamDB->SetPiZero5to10(0,1, 0.0006377);
124     
125     recParamDB->SetPiZero5to10(1,0, 0.08);
126     
127     recParamDB->SetPiZero5to10(2,0, -0.061119);
128     recParamDB->SetPiZero5to10(2,1,  0.019013);
129     
130     recParamDB->SetPiZero5to10(3,0,  0.2);
131     
132     recParamDB->SetPiZero5to10(4,0,  0.252044);
133     recParamDB->SetPiZero5to10(4,1, -0.002315);
134     
135     recParamDB->SetPiZero5to10(5,0,  0.002942);
136     recParamDB->SetPiZero5to10(5,1, -3.976e-05);
137     
138     recParamDB->SetPiZero10to60(0,0,  0.009138);
139     recParamDB->SetPiZero10to60(0,1,  0.0006377);
140     
141     recParamDB->SetPiZero10to60(1,0,  1.272837);
142     recParamDB->SetPiZero10to60(1,1, -0.069708);
143     recParamDB->SetPiZero10to60(1,2,  0.001568);
144     recParamDB->SetPiZero10to60(1,3, -1.162e-05);
145     
146     recParamDB->SetPiZero10to60(2,0,  0.139703);
147     recParamDB->SetPiZero10to60(2,1,  0.003687);
148     recParamDB->SetPiZero10to60(2,2, -0.000568);
149     recParamDB->SetPiZero10to60(2,3,  1.498e-05);
150     recParamDB->SetPiZero10to60(2,4, -1.174e-07);
151     
152     recParamDB->SetPiZero10to60(3,0, -0.826367);
153     recParamDB->SetPiZero10to60(3,1,  0.096951);
154     recParamDB->SetPiZero10to60(3,2, -0.002215);
155     recParamDB->SetPiZero10to60(3,3,  2.523e-05);
156     
157     recParamDB->SetPiZero10to60(4,0,  0.249890);
158     recParamDB->SetPiZero10to60(4,1, -0.000063);
159     
160     recParamDB->SetPiZero10to60(5,0,  0.002942);
161     recParamDB->SetPiZero10to60(5,1, -3.976e-05);
162     
163     // raw signal fitting
164     recParamDB->SetHighLowGainFactor(16.);
165     recParamDB->SetOrderParameter(2);
166     recParamDB->SetTau(2.35);
167     recParamDB->SetNoiseThreshold(3);
168     recParamDB->SetNPedSamples(5);
169
170         recParamDB->SetName("Default - Pb+Pb");
171         recParamDB->SetTitle("Default - Pb+Pb");
172
173     //Add to the recParamArray
174     recParamDB->SetEventSpecie(AliRecoParam::kDefault);
175     recParamArray->AddLast(recParamDB);
176   }
177
178   //Add other options here, if desired, for
179   //Cosmic, LowMult and HighMult type events
180   //and add them to the array
181
182
183   {
184     //For now, default is Pb+Pb, but let's add it again as
185     //the "high mult" version too...
186     AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
187         recParamDB->SetName("High Flux - Pb+Pb");
188         recParamDB->SetTitle("High Flux - Pb+Pb");
189     recParamDB->SetEventSpecie(AliRecoParam::kHighMult);
190     recParamArray->AddLast(recParamDB);
191   }
192
193   {
194     //Low multiplicity parameter modifications:
195     AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
196
197     recParamDB->SetClusteringThreshold(0.2); // 200 MeV
198     recParamDB->SetMinECut(0.01);  //10 MeV
199         recParamDB->SetName("Low Flux - p+p");
200         recParamDB->SetTitle("Low Flux - p+p");
201     recParamDB->SetEventSpecie(AliRecoParam::kLowMult);
202     recParamArray->AddLast(recParamDB);
203     
204   }
205
206   {
207         //Cosmic parameter modifications (same as low multiplicity):
208         AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
209                 
210         recParamDB->SetClusteringThreshold(0.2); // 200 MeV
211         recParamDB->SetMinECut(0.01);  //10 MeV
212         recParamDB->SetName("Cosmic");
213         recParamDB->SetTitle("Cosmic");
214         recParamDB->SetEventSpecie(AliRecoParam::kCosmic);
215         recParamArray->AddLast(recParamDB);
216                 
217   }
218         
219   {
220         //Calib parameter modifications (same as low multiplicity):
221         AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
222                 
223         recParamDB->SetClusteringThreshold(0.2); // 200 MeV
224         recParamDB->SetMinECut(0.01);  //10 MeV
225         recParamDB->SetName("Calibration - LED");
226         recParamDB->SetTitle("Calibration - LED");
227         recParamDB->SetEventSpecie(AliRecoParam::kCalib);
228         recParamArray->AddLast(recParamDB);
229                 
230         }
231
232   //Set the default version in the array
233   Bool_t defaultIsSet = kFALSE;
234   for(Int_t i = 0; i < recParamArray->GetEntriesFast(); i++) {
235     AliDetectorRecoParam* param = (AliDetectorRecoParam*)recParamArray->UncheckedAt(i);
236     if(!param) continue;
237     if(default & param->GetEventSpecie()) {
238       param->SetAsDefault();
239       defaultIsSet = kTRUE;
240     }
241   }
242
243   if(!defaultIsSet) {
244     AliError("The default reconstruction parameters are not set!  Exiting...");
245     return;
246   }
247
248   // Store calibration data into database  
249   AliCDBMetaData *md = new AliCDBMetaData();
250   md->SetResponsible("J. Klay");
251   md->SetComment("Reconstruction Parameters: EMCAL");
252   md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
253   md->SetBeamPeriod(0);
254   
255   AliCDBId id("EMCAL/Calib/RecoParam",0,AliCDBRunRange::Infinity());
256   cdb->GetDefaultStorage()->Put(recParamArray, id, md);
257
258   return;
259 }