/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ /* $Log: AliT0DataDCS.cxx,v $ Revision 2008/01/30 Fetching data points from DCS, calculating mean and storing data to Reference DB Version 1.1 2006/10 Preliminary test version (T.Malkiewicz) */ #include "AliT0DataDCS.h" #include "AliCDBMetaData.h" #include "AliDCSValue.h" #include "AliLog.h" #include #include // AliT0DataDCS class // declaring DCS aliases for T0 // fetching T0 data points from DCS, // calculating mean values for the entire run // and storing the result to Reference DB ClassImp(AliT0DataDCS) //--------------------------------------------------------------- AliT0DataDCS::AliT0DataDCS(): TObject(), fRun(0), fStartTime(0), fEndTime(0), fStartTimeDCSQuery(0), fEndTimeDCSQuery(0), fAtten(0.), fMPDcentA(0), fMPDcentC(0), fMPDsemiCentA(0), fMPDsemiCentC(0), fTVDCtop(0), fTVDCbottom(0), fMPDmode(0), fIsProcessed(kFALSE) { // default constructor // for(Int_t i=0;ifRun=data.fRun; this->fStartTime=data.fStartTime; this->fEndTime=data.fEndTime; this->fStartTimeDCSQuery=data.fStartTimeDCSQuery; this->fEndTimeDCSQuery=data.fEndTimeDCSQuery; for(int i=0;ifAliasNames[i]=data.fAliasNames[i]; } return *this; } //--------------------------------------------------------------- AliT0DataDCS::~AliT0DataDCS() { } //--------------------------------------------------------------- Bool_t AliT0DataDCS::ProcessData(TMap& aliasMap) { //process DCS data UInt_t t0Scaler[kScalers]; UInt_t t0ScalerSec[kScalers]; Int_t aliasEntr[kNAliases]; Float_t t0AhvImon[kHV]; Float_t t0AHVvmon[kHV]; Float_t t0AlvImon[kLV]; Float_t t0AlvVmon[kLV]; Float_t t0ChvImon[kHV]; Float_t t0ChvVmon[kHV]; Float_t t0ClvImon[kLV]; Float_t t0ClvVmon[kLV]; Float_t t0AcfdThre[kCFD]; Float_t t0AcfdWalk[kCFD]; Float_t t0CcfdThre[kCFD]; Float_t t0CcfdWalk[kCFD]; Float_t t0ACtrm[kTRM]; Float_t t0ACdrm[kDRM]; Float_t t0atten=0.; Int_t t0MPDcentA=0; Int_t t0MPDcentC=0; Int_t t0MPDsemiCentA=0; Int_t t0MPDsemiCentC=0; Int_t t0TVDCtop=0; Int_t t0TVDCbottom=0; Int_t t0MPDmode=0; TObjArray *aliasArr; for(Int_t k=0; kGetEntries()<2) { AliError(Form("Alias %s has just %d entries!", fAliasNames[j].Data(),aliasArr->GetEntries())); continue; } if (j < kScalers) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0Scaler[j]+= (UInt_t) aValue->GetFloat(); } fScalerMean[j] = ((UInt_t) t0Scaler[j])/((UInt_t) aliasEntr[j]); } else if (j < 2*kScalers) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ScalerSec[j-kScalers]+= (UInt_t) aValue->GetFloat(); } fScalerSecMean[j-kScalers] = ((UInt_t) t0ScalerSec[j-kScalers])/((UInt_t) aliasEntr[j]); } else if (j < 2*kScalers+kHV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AhvImon[j-2*kScalers]+= aValue->GetFloat(); } fHViA[j-2*kScalers] = t0AhvImon[j-2*kScalers] / aliasEntr[j]; } else if (j < 2*kScalers+2*kHV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AHVvmon[j-(2*kScalers+kHV)]+= aValue->GetFloat(); } fHVvA[j-(2*kScalers+kHV)] = t0AHVvmon[j-(2*kScalers+kHV)] / aliasEntr[j]; } else if (j < 2*kScalers+2*kHV+kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AlvImon[j-(2*kScalers+2*kHV)]+= aValue->GetFloat(); } fLViA[j-(2*kScalers+2*kHV)] = t0AlvImon[j-(2*kScalers+2*kHV)] / aliasEntr[j]; } else if (j < 2*kScalers+2*kHV+2*kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AlvVmon[j-(2*kScalers+2*kHV+kLV)]+= aValue->GetFloat(); } fLVvA[j-(2*kScalers+2*kHV+kLV)] = t0AlvVmon[j-(2*kScalers+2*kHV+kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+3*kHV+2*kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ChvImon[j-(2*kScalers+2*kHV+2*kLV)]+= aValue->GetFloat(); } fHViC[j-(2*kScalers+2*kHV+2*kLV)] = t0ChvImon[j-(2*kScalers+2*kHV+2*kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+2*kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ChvVmon[j-(2*kScalers+3*kHV+2*kLV)]+= aValue->GetFloat(); } fHVvC[j-(2*kScalers+3*kHV+2*kLV)] = t0ChvVmon[j-(2*kScalers+3*kHV+2*kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+3*kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ClvImon[j-(2*kScalers+4*kHV+2*kLV)]+= aValue->GetFloat(); } fLViC[j-(2*kScalers+4*kHV+2*kLV)] = t0ClvImon[j-(2*kScalers+4*kHV+2*kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ClvVmon[j-(2*kScalers+4*kHV+3*kLV)]+= aValue->GetFloat(); } fLVvC[j-(2*kScalers+4*kHV+3*kLV)] = t0ClvVmon[j-(2*kScalers+4*kHV+3*kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+kCFD) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AcfdThre[j-(2*kScalers+4*kHV+4*kLV)]+= aValue->GetFloat(); } fCFDtA[j-(2*kScalers+4*kHV+4*kLV)] = t0AcfdThre[j-(2*kScalers+4*kHV+4*kLV)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+2*kCFD) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0AcfdWalk[j-(2*kScalers+4*kHV+4*kLV+kCFD)]+= aValue->GetFloat(); } fCFDwA[j-(2*kScalers+4*kHV+4*kLV+kCFD)] = t0AcfdWalk[j-(2*kScalers+4*kHV+4*kLV+kCFD)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+3*kCFD) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0CcfdThre[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)]+= aValue->GetFloat(); } fCFDtC[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)] = t0CcfdThre[j-(2*kScalers+4*kHV+4*kLV+2*kCFD)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0CcfdWalk[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)]+= aValue->GetFloat(); } fCFDwC[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)] = t0CcfdWalk[j-(2*kScalers+4*kHV+4*kLV+3*kCFD)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ACtrm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)]+= aValue->GetFloat(); } fTRM[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)] = t0ACtrm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0ACdrm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)]+= aValue->GetFloat(); } fDRM[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)] = t0ACdrm[j-(2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM)] / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0atten += aValue->GetFloat(); } fAtten = t0atten /((Float_t) aliasEntr[j]); } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+2*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0MPDcentA += Int_t(aValue->GetFloat()); } if(aliasEntr[j]!=0) fMPDcentA = t0MPDcentA / aliasEntr[j]; } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+3*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0MPDcentC += (Int_t) aValue->GetFloat(); } fMPDcentC = ((Int_t) t0MPDcentC) /((Int_t) aliasEntr[j]); } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+4*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0MPDsemiCentA += (Int_t) aValue->GetFloat(); } fMPDsemiCentA = ((Int_t) t0MPDsemiCentA) /((Int_t) aliasEntr[j]); } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+5*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0MPDsemiCentC += (Int_t) aValue->GetFloat(); } fMPDsemiCentC = ((Int_t) t0MPDsemiCentC)/ ((Int_t) aliasEntr[j]); } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+6*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0TVDCtop += (Int_t) aValue->GetFloat(); } fTVDCtop = ((Int_t) t0TVDCtop)/((Int_t) aliasEntr[j]); } else if (j < 2*kScalers+4*kHV+4*kLV+4*kCFD+kTRM+kDRM+7*kAtten) { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0TVDCbottom += (Int_t) aValue->GetFloat(); } fTVDCbottom = ((Int_t) t0TVDCbottom) /((Int_t) aliasEntr[j]); } else { aliasEntr[j] = aliasArr->GetEntries(); for(Int_t l=0; l (aliasArr->At(l)); t0MPDmode += (Int_t) aValue->GetFloat(); } fMPDmode = ((Int_t) t0MPDmode)/((Int_t) aliasEntr[j]); } } fIsProcessed=kTRUE; return kTRUE; } //--------------------------------------------------------------- void AliT0DataDCS::Init() { // initialize all DP aliases TString sindex; for(int i=0;iGetEntries(); AliInfo(Form("************ Alias: %s **********",fAliasNames[numAlias].Data())); AliInfo(Form(" %d DP values collected",entries)); } //--------------------------------------------------------------- void AliT0DataDCS::PrintfArray(const char *label, const Float_t *array, Int_t numElements) const { //print all elements of array printf("%s: \n",label); for(Int_t i=0;i