1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 $Log: AliT0DataDCS.cxx,v $
19 Fetching data points from DCS, calculating mean and storing data to Reference DB
22 Preliminary test version (T.Malkiewicz)
25 #include "AliT0DataDCS.h"
27 #include "AliCDBMetaData.h"
28 #include "AliDCSValue.h"
31 #include <TTimeStamp.h>
32 #include <TObjString.h>
41 // declaring DCS aliases for T0
42 // fetching T0 data points from DCS,
43 // calculating mean values for the entire run
44 // and storing the result to Reference DB
46 ClassImp(AliT0DataDCS)
48 //---------------------------------------------------------------
49 AliT0DataDCS::AliT0DataDCS():
54 fStartTimeDCSQuery(0),
59 for(Int_t i=0;i<kScalers;i++)
64 for(Int_t i=0;i<kHV;i++)
71 for(Int_t i=0;i<kLV;i++)
78 for(Int_t i=0;i<kTRM;i++)
82 for(Int_t i=0;i<kDRM;i++)
88 //---------------------------------------------------------------
89 AliT0DataDCS::AliT0DataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery):
92 fStartTime(startTime),
94 fStartTimeDCSQuery(startTimeDCSQuery),
95 fEndTimeDCSQuery(endTimeDCSQuery),
99 for(Int_t i=0;i<kScalers;i++)
102 fScalerSecMean[i]=0.;
104 for(Int_t i=0;i<kHV;i++)
111 for(Int_t i=0;i<kLV;i++)
118 for(Int_t i=0;i<kTRM;i++)
122 for(Int_t i=0;i<kDRM;i++)
127 AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", nRun,
128 TTimeStamp(startTime).AsString(),
129 TTimeStamp(endTime).AsString(),
130 TTimeStamp(startTimeDCSQuery).AsString(),
131 TTimeStamp(endTimeDCSQuery).AsString()));
136 //---------------------------------------------------------------
138 AliT0DataDCS::AliT0DataDCS(const AliT0DataDCS & data):
143 fStartTimeDCSQuery(0),
152 fStartTime=data.fStartTime;
153 fEndTime=data.fEndTime;
154 fStartTimeDCSQuery=data.fStartTimeDCSQuery;
155 fEndTimeDCSQuery=data.fEndTimeDCSQuery;
156 fIsProcessed=data.fIsProcessed;
159 for(int i=0;i<kNAliases;i++)
161 fAliasNames[i]=data.fAliasNames[i];
164 for(Int_t i=0;i<kScalers;i++)
166 fScalerMean[i]=data.fScalerMean[i];
167 fScalerSecMean[i]=data.fScalerSecMean[i];
169 for(Int_t i=0;i<kHV;i++)
171 fHViA[i]=data.fHViA[i];
172 fHVvA[i]=data.fHVvA[i];
173 fHViC[i]=data.fHViC[i];
174 fHVvC[i]=data.fHVvC[i];
176 for(Int_t i=0;i<kLV;i++)
178 fLViA[i]=data.fLViA[i];
179 fLVvA[i]=data.fLVvA[i];
180 fLViC[i]=data.fLViC[i];
181 fLVvC[i]=data.fLVvC[i];
183 for(Int_t i=0;i<kTRM;i++)
185 fTRM[i]=data.fTRM[i];
187 for(Int_t i=0;i<kDRM;i++)
189 fDRM[i]=data.fDRM[i];
192 //---------------------------------------------------------------
194 AliT0DataDCS& AliT0DataDCS:: operator=(const AliT0DataDCS & data) {
196 // assignment operator
198 this->fRun=data.fRun;
199 this->fStartTime=data.fStartTime;
200 this->fEndTime=data.fEndTime;
201 this->fStartTimeDCSQuery=data.fStartTimeDCSQuery;
202 this->fEndTimeDCSQuery=data.fEndTimeDCSQuery;
204 for(int i=0;i<kNAliases;i++)
206 this->fAliasNames[i]=data.fAliasNames[i];
212 //---------------------------------------------------------------
213 AliT0DataDCS::~AliT0DataDCS()
217 //---------------------------------------------------------------
218 Bool_t AliT0DataDCS::ProcessData(TMap& aliasMap)
220 Int_t t0_scaler[kScalers];
221 Int_t t0_scaler_sec[kScalers];
222 Int_t aliasEntr[kNAliases];
223 Float_t t0_a_hv_imon[kHV];
224 Float_t t0_a_hv_vmon[kHV];
225 Float_t t0_a_lv_imon[kLV];
226 Float_t t0_a_lv_vmon[kLV];
227 Float_t t0_c_hv_imon[kHV];
228 Float_t t0_c_hv_vmon[kHV];
229 Float_t t0_c_lv_imon[kLV];
230 Float_t t0_c_lv_vmon[kLV];
231 Float_t t0_a_cfd_thre[kCFD];
232 Float_t t0_a_cfd_walk[kCFD];
233 Float_t t0_c_cfd_thre[kCFD];
234 Float_t t0_c_cfd_walk[kCFD];
235 Float_t t0_ac_trm[kTRM];
236 Float_t t0_ac_drm[kDRM];
240 for(Int_t k=0; k<kScalers; k++)
246 for(Int_t k=0; k<kHV; k++)
253 for(Int_t k=0; k<kHV; k++)
260 for(Int_t k=0; k<kCFD; k++)
267 for(Int_t k=0; k<kTRM; k++)
271 for(Int_t k=0; k<kDRM; k++)
276 // here starts the main loop
277 for(Int_t j=0; j<kNAliases; j++)
280 for (Int_t k=0;k<32;k++)
286 aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
289 AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
292 Introduce(j, aliasArr);
293 if(aliasArr->GetEntries()<2)
295 AliError(Form("Alias %s has just %d entries!",
296 fAliasNames[j].Data(),aliasArr->GetEntries()));
301 aliasEntr[j] = aliasArr->GetEntries();
302 for(Int_t l=0; l<aliasEntr[j]; l++)
304 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
305 t0_scaler[j]+= aValue->GetUInt();
307 fScalerMean[j] = t0_scaler[j] / aliasEntr[j];
309 else if (j < 2*kScalers)
311 aliasEntr[j] = aliasArr->GetEntries();
312 for(Int_t l=0; l<aliasEntr[j]; l++)
314 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
315 t0_scaler_sec[j-kScalers]+= aValue->GetUInt();
317 fScalerSecMean[j-kScalers] = t0_scaler_sec[j-kScalers] / aliasEntr[j];
319 else if (j < 2*kScalers+kHV)
321 aliasEntr[j] = aliasArr->GetEntries();
322 for(Int_t l=0; l<aliasEntr[j]; l++)
324 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
325 t0_a_hv_imon[j-2*kScalers]+= aValue->GetFloat();
327 fHViA[j-2*kScalers] = t0_a_hv_imon[j-2*kScalers] / aliasEntr[j];
329 else if (j < 2*kScalers+2*kHV)
331 aliasEntr[j] = aliasArr->GetEntries();
332 for(Int_t l=0; l<aliasEntr[j]; l++)
334 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
335 t0_a_hv_vmon[j-(2*kScalers+kHV)]+= aValue->GetFloat();
337 fHVvA[j-(2*kScalers+kHV)] = t0_a_hv_vmon[j-(2*kScalers+kHV)] / aliasEntr[j];
339 else if (j < 2*kScalers+2*kHV+kLV)
341 aliasEntr[j] = aliasArr->GetEntries();
342 for(Int_t l=0; l<aliasEntr[j]; l++)
344 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
345 t0_a_lv_imon[j-(2*kScalers+2*kHV)]+= aValue->GetFloat();
347 fLViA[j-(2*kScalers+2*kHV)] = t0_a_lv_imon[j-(2*kScalers+2*kHV)] / aliasEntr[j];
349 else if (j < 2*kScalers+2*kHV+2*kLV)
351 aliasEntr[j] = aliasArr->GetEntries();
352 for(Int_t l=0; l<aliasEntr[j]; l++)
354 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
355 t0_a_lv_vmon[j-(2*kScalers+2*kHV+kLV)]+= aValue->GetFloat();
357 fLVvA[j-(2*kScalers+2*kHV+kLV)] = t0_a_lv_vmon[j-(2*kScalers+2*kHV+kLV)] / aliasEntr[j];
359 else if (j < 2*kScalers+3*kHV+2*kLV)
361 aliasEntr[j] = aliasArr->GetEntries();
362 for(Int_t l=0; l<aliasEntr[j]; l++)
364 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
365 t0_c_hv_imon[j-(2*kScalers+2*kHV+2*kLV)]+= aValue->GetFloat();
367 fHViC[j-(2*kScalers+2*kHV+2*kLV)] = t0_c_hv_imon[j-(2*kScalers+2*kHV+2*kLV)] / aliasEntr[j];
369 else if (j < 2*kScalers+4*kHV+2*kLV)
371 aliasEntr[j] = aliasArr->GetEntries();
372 for(Int_t l=0; l<aliasEntr[j]; l++)
374 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
375 t0_c_hv_vmon[j-(2*kScalers+3*kHV+2*kLV)]+= aValue->GetFloat();
377 fHVvC[j-(2*kScalers+3*kHV+2*kLV)] = t0_c_hv_vmon[j-(2*kScalers+3*kHV+2*kLV)] / aliasEntr[j];
379 else if (j < 2*kScalers+4*kHV+3*kLV)
381 aliasEntr[j] = aliasArr->GetEntries();
382 for(Int_t l=0; l<aliasEntr[j]; l++)
384 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
385 t0_c_lv_imon[j-(2*kScalers+4*kHV+2*kLV)]+= aValue->GetFloat();
387 fLViC[j-(2*kScalers+4*kHV+2*kLV)] = t0_c_lv_imon[j-(2*kScalers+4*kHV+2*kLV)] / aliasEntr[j];
389 else if (j < 2*kScalers+4*kHV+4*kLV)
391 aliasEntr[j] = aliasArr->GetEntries();
392 for(Int_t l=0; l<aliasEntr[j]; l++)
394 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
395 t0_c_lv_vmon[j-(2*kScalers+4*kHV+3*kLV)]+= aValue->GetFloat();
397 fLVvC[j-(2*kScalers+4*kHV+3*kLV)] = t0_c_lv_vmon[j-(2*kScalers+4*kHV+3*kLV)] / aliasEntr[j];
399 else if (j < 2*kScalers+4*kHV+4*kLV+kCFD)
401 aliasEntr[j] = aliasArr->GetEntries();
402 for(Int_t l=0; l<aliasEntr[j]; l++)
404 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
405 t0_a_cfd_thre[j-(2*kScalers+4*kHV+4*kLV)]+= aValue->GetFloat();
407 fCFDtA[j-(2*kScalers+4*kHV+4*kLV)] = t0_a_cfd_thre[j-(2*kScalers+4*kHV+4*kLV)] / aliasEntr[j];
409 else if (j < 2*kScalers+4*kHV+4*kLV+2*kCFD)
411 aliasEntr[j] = aliasArr->GetEntries();
412 for(Int_t l=0; l<aliasEntr[j]; l++)
414 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
415 t0_a_cfd_walk[j-(2*kScalers+4*kHV+4*kLV+kCFD)]+= aValue->GetFloat();
417 fCFDwA[j-(2*kScalers+4*kHV+4*kLV+kCFD)] = t0_a_cfd_walk[j-(2*kScalers+4*kHV+4*kLV+kCFD)] / aliasEntr[j];
419 else if (j < 2*kScalers+4*kHV+4*kLV+3*kCFD)
421 aliasEntr[j] = aliasArr->GetEntries();
422 for(Int_t l=0; l<aliasEntr[j]; l++)
424 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
425 t0_c_cfd_thre[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)]+= aValue->GetFloat();
427 fCFDtC[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)] = t0_c_cfd_thre[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)] / aliasEntr[j];
429 else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD)
431 aliasEntr[j] = aliasArr->GetEntries();
432 for(Int_t l=0; l<aliasEntr[j]; l++)
434 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
435 t0_c_cfd_walk[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)]+= aValue->GetFloat();
437 fCFDwC[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)] = t0_c_cfd_walk[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)] / aliasEntr[j];
439 else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)
441 aliasEntr[j] = aliasArr->GetEntries();
442 for(Int_t l=0; l<aliasEntr[j]; l++)
444 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
445 t0_ac_trm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)]+= aValue->GetFloat();
447 fTRM[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)] = t0_ac_trm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)] / aliasEntr[j];
449 else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM)
451 aliasEntr[j] = aliasArr->GetEntries();
452 for(Int_t l=0; l<aliasEntr[j]; l++)
454 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
455 t0_ac_drm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)]+= aValue->GetFloat();
457 fDRM[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)] = t0_ac_drm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)] / aliasEntr[j];
461 aliasEntr[j] = aliasArr->GetEntries();
462 for(Int_t l=0; l<aliasEntr[j]; l++)
464 AliDCSValue *aValue=dynamic_cast<AliDCSValue*> (aliasArr->At(l));
465 t0_atten += aValue->GetInt();
467 fAtten = t0_atten / aliasEntr[j];
474 //---------------------------------------------------------------
475 void AliT0DataDCS::Init()
478 for(int i=0;i<kNAliases;i++)
482 fAliasNames[i] = "t00_ac_scaler_";
483 sindex.Form("%02d",i);
484 fAliasNames[i] += sindex;
486 else if (i < 2*kScalers)
488 fAliasNames[i] = "t00_ac_scaler_sec_";
489 sindex.Form("%02d",i-kScalers);
490 fAliasNames[i] += sindex;
492 else if (i < 2*kScalers+kHV)
494 fAliasNames[i] = "t00_a_hv_imon_";
495 sindex.Form("%02d",i-2*kScalers);
496 fAliasNames[i] += sindex;
498 else if (i < 2*kScalers+2*kHV)
500 fAliasNames[i] = "t00_a_hv_vmon_";
501 sindex.Form("%02d",i-(2*kScalers+kHV));
502 fAliasNames[i] += sindex;
504 else if (i < 2*kScalers+2*kHV+kLV)
506 fAliasNames[i] = "t00_a_lv_imon_";
507 sindex.Form("%02d",i-(2*kScalers+2*kHV));
508 fAliasNames[i] += sindex;
510 else if (i < 2*kScalers+2*kHV+2*kLV)
512 fAliasNames[i] = "t00_a_lv_vmon_";
513 sindex.Form("%02d",i-(2*kScalers+2*kHV+kLV));
514 fAliasNames[i] += sindex;
516 else if (i < 2*kScalers+3*kHV+2*kLV)
518 fAliasNames[i] = "t00_c_hv_imon_";
519 sindex.Form("%02d",i-(2*kScalers+2*kHV+2*kLV));
520 fAliasNames[i] += sindex;
522 else if (i < 2*kScalers+4*kHV+2*kLV)
524 fAliasNames[i] = "t00_c_hv_vmon_";
525 sindex.Form("%02d",i-(2*kScalers+3*kHV+2*kLV));
526 fAliasNames[i] += sindex;
528 else if (i < 2*kScalers+4*kHV+3*kLV)
530 fAliasNames[i] = "t00_c_lv_imon_";
531 sindex.Form("%02d",i-(2*kScalers+4*kHV+2*kLV));
532 fAliasNames[i] += sindex;
534 else if (i < 2*kScalers+4*kHV+4*kLV)
536 fAliasNames[i] = "t00_c_lv_vmon_";
537 sindex.Form("%02d",i-(2*kScalers+4*kHV+3*kLV));
538 fAliasNames[i] += sindex;
540 else if (i < 2*kScalers+4*kHV+4*kLV+kCFD)
542 fAliasNames[i] = "t00_a_cfd_thre_";
543 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV));
544 fAliasNames[i] += sindex;
546 else if (i < 2*kScalers+4*kHV+4*kLV+2*kCFD)
548 fAliasNames[i] = "t00_a_cfd_walk_";
549 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV+kCFD));
550 fAliasNames[i] += sindex;
552 else if (i < 2*kScalers+4*kHV+4*kLV+3*kCFD)
554 fAliasNames[i] = "t00_c_cfd_thre_";
555 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV+2*kCFD));
556 fAliasNames[i] += sindex;
558 else if (i < 2*kScalers+4*kHV+4*kLV+4*kCFD)
560 fAliasNames[i] = "t00_c_cfd_walk_";
561 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV+3*kCFD));
562 fAliasNames[i] += sindex;
564 else if (i < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)
566 fAliasNames[i] = "t00_ac_trm_";
567 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV+4*kCFD));
568 fAliasNames[i] += sindex;
570 else if (i < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM)
572 fAliasNames[i] = "t00_ac_drm_";
573 sindex.Form("%02d",i-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM));
574 fAliasNames[i] += sindex;
578 fAliasNames[i] = "t00_ac_atten";
585 //---------------------------------------------------------------
586 void AliT0DataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)const
589 int entries=aliasArr->GetEntries();
590 AliInfo(Form("************ Alias: %s **********",fAliasNames[numAlias].Data()));
591 AliInfo(Form(" %d DP values collected",entries));