/************************************************************************** * 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: AliTOFDataDCS.cxx,v $ Revision 1.9 2007/05/04 14:02:45 decaro AliTOFDataDCS::Draw(Option_t *) method declared const: compiling warning suppression Revision 1.8 2007/05/03 09:45:09 decaro Coding convention: RN11 violation -> suppression Revision 1.7 2007/05/02 14:09:39 arcelli Retrieval of Env. Temperature removed (will get it from the GRP) Revision 1.6 2007/04/04 17:19:19 arcelli Moved some printout to debug level Revision 1.5 2007/02/20 15:57:00 decaro Raw data update: to read the TOF raw data defined in UNPACKED mode Revision 1.4 2007/02/19 15:41:55 decaro Coding convention: few corrections Revision 1.3 2007/01/24 11:19:58 arcelli Modify ProcessData to return a logical (CZ) Revision 1.2 2006/12/18 18:17:38 arcelli Updated Aliases for DCS TOF datapoints (C.Zampolli) Revision 1.1 2006/10/26 09:10:52 arcelli Class for handling the TOF DCS data in the Shuttle (C.Zampolli) */ // AliTOFDataDCS class // main aim to introduce the aliases for the TOF DCS // data points to be then // stored in the OCDB, and to process them. // Process() method called by TOFPrepr #include "TString.h" #include "TTimeStamp.h" #include "TMap.h" #include "TCanvas.h" #include "AliDCSValue.h" #include "AliLog.h" #include "AliTOFDataDCS.h" #include "AliTOFFormatDCS.h" class TH2; class AliCDBMetaData; class TDatime; ClassImp(AliTOFDataDCS) //--------------------------------------------------------------- AliTOFDataDCS::AliTOFDataDCS(): TObject(), fRun(0), fStartTime(0), fEndTime(0), fStartTimeDCSQuery(0), fEndTimeDCSQuery(0), fIsProcessed(kFALSE), fFDR(kFALSE) { // main constructor for(int i=0;iGetEntries()==0){ AliError(Form("Alias %s has no entries! Nothing will be stored", fAliasNames[j].Data())); continue; } if(aliasArr->GetEntries() == 1){ AliWarning(Form("Alias %s has just %d entries! Only first value will be stored", fAliasNames[j].Data(),aliasArr->GetEntries())); aValue0 = (AliDCSValue*) aliasArr->At(0); val0 = aValue0->GetFloat(); time0 = (Float_t) (aValue0->GetTimeStamp()); if (jSetFloat(0,val0); fHVvp[j]->SetTimeStampFloat(0,time0); } else if (jSetFloat(0,val0); fHVvn[j-kNHV]->SetTimeStampFloat(0,time0); } else if (jSetFloat(0,val0); fHVip[j-2*kNHV]->SetTimeStampFloat(0,time0); } else if (jSetFloat(0,val0); fHVin[j-3*kNHV]->SetTimeStampFloat(0,time0); } continue; } if(aliasArr->GetEntries()==2){ AliWarning(Form("Alias %s has just %d entries! Storing first and second entry only and the delta between these two", fAliasNames[j].Data(),aliasArr->GetEntries())); aValue0 = (AliDCSValue*) aliasArr->At(0); val0 = aValue0->GetFloat(); time0 = (Float_t) (aValue0->GetTimeStamp()); aValue1 = (AliDCSValue*) aliasArr->At(1); val1 = aValue1->GetFloat(); time1 = (Float_t) (aValue1->GetTimeStamp()); if (jSetFloat(0,val0); fHVvp[j]->SetTimeStampFloat(0,time0); fHVvp[j]->SetFloat(1,val1); fHVvp[j]->SetTimeStampFloat(1,time1); fHVvp[j]->SetDelta(0,TMath::Abs(val1-val0)); fHVvp[j]->SetTimeStampDelta(0,time1-time0); } else if (jSetFloat(0,val0); fHVvn[j-kNHV]->SetTimeStampFloat(0,time0); fHVvn[j-kNHV]->SetFloat(1,val1); fHVvn[j-kNHV]->SetTimeStampFloat(1,time1); fHVvn[j-kNHV]->SetDelta(0,TMath::Abs(val1-val0)); fHVvn[j-kNHV]->SetTimeStampDelta(0,time1-time0); } else if (jSetFloat(0,val0); fHVip[j-2*kNHV]->SetTimeStampFloat(0,time0); fHVip[j-2*kNHV]->SetFloat(1,val1); fHVip[j-2*kNHV]->SetTimeStampFloat(1,time1); fHVip[j-2*kNHV]->SetDelta(0,TMath::Abs(val1-val0)); fHVip[j-2*kNHV]->SetTimeStampDelta(0,time1-time0); } else if (jSetFloat(0,val0); fHVin[j-3*kNHV]->SetTimeStampFloat(0,time0); fHVin[j-3*kNHV]->SetFloat(1,val1); fHVin[j-3*kNHV]->SetTimeStampFloat(1,time1); fHVin[j-3*kNHV]->SetDelta(0,TMath::Abs(val1-val0)); fHVin[j-3*kNHV]->SetTimeStampDelta(0,time1-time0); } continue; } TIter iterarray(aliasArr); Int_t nentries = aliasArr->GetEntries(); Int_t deltaTimeStamp = (Int_t) nentries/3; Int_t deltaTimeStamp1 = (Int_t) nentries/2; // filling aliases with 10 floats+1 Usign Int_t index = 0; for (Int_t k=0;k<3;k++){ index = deltaTimeStamp*k; if (k==0) { index=0; } else if (k==1) { index=deltaTimeStamp1; } else if (k==2) { index=nentries-1; } aValue = (AliDCSValue*) aliasArr->At(index); val = aValue->GetFloat(); time = (Float_t) (aValue->GetTimeStamp()); if (jSetFloat(k,val); fHVvp[j]->SetTimeStampFloat(k,time); } else if (jSetFloat(k,val); fHVvn[j-kNHV]->SetTimeStampFloat(k,time); } else if (jSetFloat(k,val); fHVip[j-2*kNHV]->SetTimeStampFloat(k,time); } else if (jSetFloat(k,val); fHVin[j-3*kNHV]->SetTimeStampFloat(k,time); } } //computing the most significant variations //Float_t timeDiff = (Float_t)(fEndTime-fStartTime); Float_t timeDiff = (Float_t)(fEndTimeDCSQuery-fStartTimeDCSQuery); Int_t deltamin = (Int_t)(60/timeDiff*nentries); //sampling every minute Int_t klast = nentries-deltamin; for (Int_t k=0;kAt(k); aValue1 = (AliDCSValue*) aliasArr->At(k+deltamin); val = aValue->GetFloat(); val1 = aValue1->GetFloat(); if (delta[0]<=TMath::Abs(val1-val)) { delta[0]=TMath::Abs(val1-val); timedelta[0] = (Float_t)k; } if (delta[1]<=delta[0]) { Float_t temp = delta[1]; Float_t timetemp = timedelta[1]; delta[1]=delta[0]; delta[0]=temp; timedelta[1]=timedelta[0]; timedelta[0]=timetemp; } } for (Int_t kk=0;kk<2;kk++){ if (jSetDelta(kk,delta[kk]); fHVvp[j]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]); } else if (jSetDelta(kk,delta[kk]); fHVvn[j-kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]); } else if (jSetDelta(kk,delta[kk]); fHVip[j-2*kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]); } else if (jSetDelta(kk,delta[kk]); fHVin[j-3*kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]); } } } fIsProcessed=kTRUE; return kTRUE; } //--------------------------------------------------------------- void AliTOFDataDCS::Init(){ // initialization of aliases and DCS data TString sindex; for(int i=0;iGetEntries(); int nal=0; nal=numAlias; AliDebug(2,Form("************ Alias: %s **********",fAliasNames[numAlias].Data())); AliDebug(2,Form(" %d DP values collected",entries)); } //--------------------------------------------------------------- void AliTOFDataDCS::Draw(const Option_t* /*option*/) { // Draw all histos and graphs if(!fIsProcessed) return; TCanvas *ch; TString canvasHistoName="Histos"; ch=new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600); ch->cd(); // to be implemented }