]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TOF/TOFPreprocessor.C
Removing the fake copy constructors and assignment operator, moving their declaration...
[u/mrichter/AliRoot.git] / TOF / TOFPreprocessor.C
CommitLineData
ccc28861 1/*
2$Id$
3*/
4
5// This class runs the test TOF preprocessor
6// It uses AliTestShuttle to simulate a full Shuttle process
7
8// The input data is created in the functions
9// CreateDCSAliasMap() creates input that would in the same way come from DCS
10// ReadDCSAliasMap() reads from a file
11// CreateInputFilesMap() creates a list of local files, that can be accessed by the shuttle
12
13void TOFPreprocessor()
14{
15 gSystem->Load("$ALICE/SHUTTLE/TestShuttle/libTestShuttle.so");
16
17 // initialize location of CDB
18 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
19
20 // create AliTestShuttle instance
21 AliTestShuttle* shuttle = new AliTestShuttle(0, 0, 1000);
22
23 // Generation of "fake" input DCS data
24 TMap* dcsAliasMap = CreateDCSAliasMap();
25
26 // now give the alias map to the shuttle
27 shuttle->SetDCSInput(dcsAliasMap);
28
29 // processing files. for the time being, the files are local.
5abdf772 30 shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "DELAYS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Total.root");
31 shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "RUNLevel", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Partial.root");
ccc28861 32
33 // instantiation of the preprocessor
124a2863 34 AliPreprocessor* pp = new AliTOFPreprocessor(shuttle);
ccc28861 35
36 // preprocessing
37 shuttle->Process();
38
39 // checking the file which should have been created
40 AliCDBEntry* entry = AliCDBManager::Instance()->Get("TOF/Calib/OnlineDelay", 0);
41 if (!entry)
42 {
43 printf("The file is not there. Something went wrong.\n");
44 return;
45 }
46
47 AliTOFDataDCS* output = dynamic_cast<AliTOFDataDCS*> (entry->GetObject());
48 // If everything went fine, draw the result
49 if (output)
50 output->Draw();
51
52}
53
54TMap* CreateDCSAliasMap()
55{
56 // Creates a DCS structure
57 // The structure is the following:
124a2863 58 // TMap (key --> value)
59 // <DCSAlias> --> <valueList>
60 // <DCSAlias> is a string
61 // <valueList> is a TObjArray of AliDCSValue
ccc28861 62
ccc28861 63
64 TMap* aliasMap = new TMap;
65 aliasMap->SetOwner(1);
66
67 TRandom random;
68 TDatime *datime = new TDatime();
69 Int_t time = datime->GetTime();
70 Int_t date = datime->GetDate();
71 Int_t pid = gSystem->GetPid();
72 delete datime;
73 Int_t iseed = TMath::Abs(10000 * pid + time - date);
74
124a2863 75 Float_t tentHVv=6500, tentHVi=80, tentLVv=2.7, tentLVi=4.5,
76 tentLVv33=3.3, tentLVv50=5.0, tentLVv48=48,
77 tentLVi33=100, tentLVi50=3.0, tentLVi48=10,
78 tentFEEthr=1.0, tentFEEtfeac=25, tentFEEttrm=45,
79 tentTemp=25, tentPress=900;
80 Float_t sigmaHVv=10, sigmaHVi=10, sigmaLVv=0.2, sigmaLVi=1.0,
81 sigmaLVv33=0.1, sigmaLVv50=0.1, sigmaLVv48=1,
82 sigmaLVi33=10, sigmaLVi50=0.5, sigmaLVi48=2,
83 sigmaFEEthr=0.1, sigmaFEEtfeac=10, sigmaFEEttrm=4,
84 sigmaTemp=1, sigmaPress=10;
ccc28861 85
86 Float_t tent=0, sigma=0, thr=0;
124a2863 87 Int_t NAliases=10514, NHV=90, NLV=576, NLV33=72, NLV50=72, NLV48=72, NFEEthr=1152, NFEEtfeac=576, NFEEttrm=6840, NT=1, NP=1;
ccc28861 88
89 for(int nAlias=0;nAlias<NAliases;nAlias++) {
90
91 TObjArray* valueSet = new TObjArray;
92 valueSet->SetOwner(1);
93
124a2863 94 TString sindex;
ccc28861 95 TString aliasName;
96 if (nAlias<NHV){
124a2863 97 aliasName = "tof_hv_vp_";
98 sindex.Form("%02i",nAlias);
99 aliasName += sindex;
100 //aliasName += nAlias;
ccc28861 101 tent=tentHVv;
102 sigma=sigmaHVv;
103 // thr=thrHVv;
104 }
105 else if (nAlias<NHV*2){
124a2863 106 // aliasName = "HVvneg";
107 //aliasName += nAlias-NHV;
108 aliasName = "tof_hv_vn_";
109 sindex.Form("%02i",nAlias-NHV);
110 aliasName += sindex;
ccc28861 111 tent=-tentHVv;
112 sigma=-sigmaHVv;
113 //thr=-thrHVv;
114 }
115 else if (nAlias<NHV*3){
124a2863 116 // aliasName = "HVcpos";
117 //aliasName += nAlias-2*NHV;
118 aliasName = "tof_hv_ip_";
119 sindex.Form("%02i",nAlias-2*NHV);
120 aliasName += sindex;
121 tent=tentHVi;
122 sigma=sigmaHVi;
ccc28861 123 //thr=thrHVc;
124 }
125 else if (nAlias<NHV*4){
124a2863 126 // aliasName = "HVcneg";
127 //aliasName += nAlias-3*NHV;
128 aliasName = "tof_hv_in_";
129 sindex.Form("%02i",nAlias-3*NHV);
130 aliasName += sindex;
131 tent=-tentHVi;
132 sigma=-sigmaHVi;
ccc28861 133 //thr=-thrHVc;
134 }
135 else if (nAlias<NHV*4+NLV){
124a2863 136 // aliasName = "LVv";
137 //aliasName += nAlias-4*NHV;
138 aliasName = "tof_lv_vfea_";
139 sindex.Form("%03i",nAlias-4*NHV);
140 aliasName += sindex;
ccc28861 141 tent=tentLVv;
142 sigma=sigmaLVv;
143 //thr=thrLVv;
144 }
145 else if (nAlias<NHV*4+2*NLV){
124a2863 146 // aliasName = "LVc";
147 //aliasName += nAlias-(4*NHV+NLV);
148 aliasName = "tof_lv_ifea_";
149 sindex.Form("%03i",nAlias-(4*NHV+NLV));
150 aliasName += sindex;
151 tent=tentLVi;
152 sigma=sigmaLVi;
ccc28861 153 //thr=thrLVc;
154 }
124a2863 155 else if (nAlias<NHV*4+2*NLV+NLV33){
156 // aliasName = "LVc";
157 //aliasName += nAlias-(4*NHV+NLV);
158 aliasName = "tof_lv_v33_";
159 sindex.Form("%02i",nAlias-(4*NHV+2*NLV));
160 aliasName += sindex;
161 tent=tentLVv33;
162 sigma=sigmaLVv33;
163 //thr=thrLVc;
164 }
165 else if (nAlias<NHV*4+2*NLV+2*NLV33){
166 // aliasName = "LVc";
167 //aliasName += nAlias-(4*NHV+NLV);
168 aliasName = "tof_lv_i33_";
169 sindex.Form("%02i",nAlias-(4*NHV+2*NLV+NLV33));
170 aliasName += sindex;
171 tent=tentLVi33;
172 sigma=sigmaLVi33;
173 //thr=thrLVc;
174 }
175 else if (nAlias<NHV*4+2*NLV+2*NLV33+NLV50){
176 // aliasName = "LVc";
177 //aliasName += nAlias-(4*NHV+NLV);
178 aliasName = "tof_lv_v50_";
179 sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33));
180 aliasName += sindex;
181 tent=tentLVv50;
182 sigma=sigmaLVv50;
183 //thr=thrLVc;
184 }
185 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50){
186 // aliasName = "LVc";
187 //aliasName += nAlias-(4*NHV+NLV);
188 aliasName = "tof_lv_i50_";
189 sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+NLV50));
190 aliasName += sindex;
191 tent=tentLVi50;
192 sigma=sigmaLVi50;
193 //thr=thrLVc;
194 }
195 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+NLV48){
196 // aliasName = "LVc";
197 //aliasName += nAlias-(4*NHV+NLV);
198 aliasName = "tof_lv_v48_";
199 sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50));
200 aliasName += sindex;
201 tent=tentLVv48;
202 sigma=sigmaLVv48;
203 //thr=thrLVc;
204 }
205 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48){
206 // aliasName = "LVc";
207 //aliasName += nAlias-(4*NHV+NLV);
208 aliasName = "tof_lv_i48_";
209 sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+NLV48));
210 aliasName += sindex;
211 tent=tentLVi48;
212 sigma=sigmaLVi48;
213 //thr=thrLVc;
214 }
215 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr){
216 // aliasName = "FEEthr";
217 //aliasName += nAlias-(4*NHV+2*NLV-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48));
218 aliasName = "tof_fee_th_";
219 sindex.Form("%04i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48));
220 aliasName += sindex;
ccc28861 221 tent=tentFEEthr;
222 sigma=sigmaFEEthr;
223 //thr=thrFEEthr;
224 }
124a2863 225 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac){
226 //cout << " nalias fee temp = " << nAlias << endl;
227 // aliasName = "FEEt";
228 //aliasName += nAlias-(4*NHV+2*NLV+NFEEthr);
229 aliasName = "tof_fee_tfeac_";
230 sindex.Form("%03i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr));
231 aliasName += sindex;
232 //cout << " nalias fee temp name = " << aliasName << endl;
233 tent=tentFEEtfeac;
234 sigma=sigmaFEEtfeac;
235 //thr=thrFEEthr;
236 }
237 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac+NFEEttrm){
ccc28861 238 //cout << " nalias fee temp = " << nAlias << endl;
124a2863 239 // aliasName = "FEEt";
240 //aliasName += nAlias-(4*NHV+2*NLV+NFEEthr);
241 aliasName = "tof_fee_ttrm_";
242 sindex.Form("%04i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac));
243 aliasName += sindex;
ccc28861 244 //cout << " nalias fee temp name = " << aliasName << endl;
124a2863 245 tent=tentFEEttrm;
246 sigma=sigmaFEEttrm;
ccc28861 247 //thr=thrFEEthr;
248 }
124a2863 249 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac+NFEEttrm+1){
250 cout << " putting temperature" << endl;
251 aliasName = "temperature";
ccc28861 252 tent=tentTemp;
253 sigma=sigmaTemp;
254 //thr=thrTemp;
255 }
124a2863 256 else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac+NFEEttrm+2){
257 cout << " putting pressure" << endl;
258 aliasName = "pressure";
ccc28861 259 tent=tentPress;
260 sigma=sigmaPress;
261 //thr=thrPress;
262 }
263
264
265 // gauss generation of values
266 for (int timeStamp=0;timeStamp<1000;timeStamp+=10){
267 Float_t gaussvalue = (Float_t) (random.Gaus(tent,sigma));
268 if (TMath::Abs(gaussvalue-tent)>sigma){
269 AliDCSValue* dcsVal = new AliDCSValue(gaussvalue, timeStamp);
270 valueSet->Add(dcsVal);
271 }
272 }
273
274 aliasMap->Add(new TObjString(aliasName), valueSet);
275 }
276
277 return aliasMap;
278}
279
280TMap* ReadDCSAliasMap()
281{
282 // Open a file that contains DCS input data
283 // The CDB framework is used to open the file, this means the file is located
284 // in $ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB/<detector>/DCS/Data
285 // The file contains an AliCDBEntry that contains a TMap with the DCS structure.
286 // An explanation of the structure can be found in CreateDCSAliasMap()
287
288 AliCDBEntry *entry = AliCDBManager::Instance()->Get("TOF/DCS/Data", 0);
289 return dynamic_cast<TMap*> (entry->GetObject());
290}
291
292void WriteDCSAliasMap()
293{
294 // This writes the output from CreateDCSAliasMap to a CDB file
295
296 TMap* dcsAliasMap = CreateDCSAliasMap();
297
298 AliCDBMetaData metaData;
299 metaData.SetBeamPeriod(0);
300 metaData.SetResponsible("Chiara");
301 metaData.SetComment("Test object for TOFPreprocessor.C");
302
303 AliCDBId id("TOF/DCS/Data", 0, 0);
304
305 // initialize location of CDB
306 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
307
308 AliCDBManager::Instance()->Put(dcsAliasMap, id, &metaData);
309}