LCOV - code coverage report
Current view: top level - TOF/TOFbase - AliTOFDataDCS.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 268 0.4 %
Date: 2016-06-14 17:26:59 Functions: 1 15 6.7 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       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             :  **************************************************************************/
      15             : 
      16             : /*
      17             : $Log: AliTOFDataDCS.cxx,v $
      18             : Revision 1.9  2007/05/04 14:02:45  decaro
      19             : AliTOFDataDCS::Draw(Option_t *) method declared const: compiling warning suppression
      20             : 
      21             : Revision 1.8  2007/05/03 09:45:09  decaro
      22             : Coding convention: RN11 violation -> suppression
      23             : 
      24             : Revision 1.7  2007/05/02 14:09:39  arcelli
      25             : Retrieval of Env. Temperature removed (will get it from the GRP)
      26             : 
      27             : Revision 1.6  2007/04/04 17:19:19  arcelli
      28             : Moved some printout to debug level
      29             : 
      30             : Revision 1.5  2007/02/20 15:57:00  decaro
      31             : Raw data update: to read the TOF raw data defined in UNPACKED mode
      32             : 
      33             : Revision 1.4  2007/02/19 15:41:55  decaro
      34             : Coding convention: few corrections
      35             : 
      36             : Revision 1.3  2007/01/24 11:19:58  arcelli
      37             : Modify ProcessData to return a logical (CZ)
      38             : 
      39             : Revision 1.2  2006/12/18 18:17:38  arcelli
      40             : Updated Aliases for DCS TOF datapoints (C.Zampolli)
      41             : 
      42             : Revision 1.1  2006/10/26 09:10:52  arcelli
      43             : Class for handling the TOF DCS data in the Shuttle (C.Zampolli)
      44             : 
      45             : */  
      46             : 
      47             : // AliTOFDataDCS class
      48             : // main aim to introduce the aliases for the TOF DCS
      49             : // data points to be then
      50             : // stored in the OCDB, and to process them. 
      51             : // Process() method called by TOFPrepr
      52             : 
      53             : #include "TString.h"
      54             : #include "TTimeStamp.h"
      55             : #include "TMap.h"
      56             : #include "TCanvas.h"
      57             : 
      58             : #include "AliDCSValue.h"
      59             : #include "AliLog.h"
      60             : 
      61             : #include "AliTOFDataDCS.h"
      62             : #include "AliTOFFormatDCS.h"
      63             : 
      64             : class TH2;
      65             : class AliCDBMetaData;
      66             : class TDatime;
      67             : 
      68          26 : ClassImp(AliTOFDataDCS)
      69             : 
      70             : //---------------------------------------------------------------
      71           0 : AliTOFDataDCS::AliTOFDataDCS():
      72           0 :         TObject(),
      73           0 :         fRun(0),
      74           0 :         fStartTime(0),
      75           0 :         fEndTime(0),
      76           0 :         fStartTimeDCSQuery(0),
      77           0 :         fEndTimeDCSQuery(0),
      78           0 :         fIsProcessed(kFALSE),
      79           0 :         fFDR(kFALSE)
      80           0 : {
      81             : 
      82             :   // main constructor 
      83             : 
      84           0 :   for(int i=0;i<kNHV;i++) {
      85           0 :     fHVvp[i]=0x0;
      86           0 :     fHVvn[i]=0x0;
      87           0 :     fHVip[i]=0x0;
      88           0 :     fHVin[i]=0x0;
      89             :   }
      90             :     
      91             :   
      92           0 : }
      93             : 
      94             : //---------------------------------------------------------------
      95           0 : AliTOFDataDCS::AliTOFDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t startTimeDCSQuery, UInt_t endTimeDCSQuery):
      96           0 :         TObject(),
      97           0 :         fRun(nRun),
      98           0 :         fStartTime(startTime),
      99           0 :         fEndTime(endTime),
     100           0 :         fStartTimeDCSQuery(startTimeDCSQuery),
     101           0 :         fEndTimeDCSQuery(endTimeDCSQuery),
     102           0 :         fIsProcessed(kFALSE),
     103           0 :         fFDR(kFALSE)
     104           0 : {
     105             : 
     106             :   // constructor with arguments
     107             : 
     108           0 :         AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", nRun,
     109             :         TTimeStamp(startTime).AsString(),
     110             :         TTimeStamp(endTime).AsString(), 
     111             :         TTimeStamp(startTimeDCSQuery).AsString(), 
     112             :         TTimeStamp(endTimeDCSQuery).AsString()));
     113             : 
     114           0 :         Init();
     115             : 
     116           0 : }
     117             : 
     118             : //---------------------------------------------------------------
     119             : 
     120           0 : AliTOFDataDCS::AliTOFDataDCS(const AliTOFDataDCS & data):
     121           0 :   TObject(data), 
     122           0 :   fRun(data.fRun),
     123           0 :   fStartTime(data.fStartTime),
     124           0 :   fEndTime(data.fEndTime),
     125           0 :   fStartTimeDCSQuery(data.fStartTimeDCSQuery),
     126           0 :   fEndTimeDCSQuery(data.fEndTimeDCSQuery),
     127           0 :   fIsProcessed(data.fIsProcessed),
     128           0 :   fFDR(data.fFDR)
     129             : 
     130           0 : {
     131             : 
     132             :   // copy constructor
     133             : 
     134           0 :   for(int i=0;i<kNAliases;i++) {
     135           0 :     fAliasNames[i]=data.fAliasNames[i];
     136             :   }
     137             :  
     138           0 :   for(int i=0;i<kNHV;i++) {
     139           0 :     fHVvp[i]=data.fHVvp[i];
     140           0 :     fHVvn[i]=data.fHVvn[i];
     141           0 :     fHVip[i]=data.fHVip[i];
     142           0 :     fHVin[i]=data.fHVin[i];
     143             :   }
     144             :   
     145             :     
     146           0 : }
     147             : //---------------------------------------------------------------
     148             : 
     149             : AliTOFDataDCS& AliTOFDataDCS:: operator=(const AliTOFDataDCS & data) { 
     150             : 
     151             :   // assignment operator
     152             : 
     153           0 :   if (this == &data)
     154           0 :     return *this;
     155             : 
     156           0 :   TObject::operator=(data);
     157           0 :   fRun=data.GetRun();
     158           0 :   fStartTime=data.GetStartTime();
     159           0 :   fEndTime=data.GetEndTime();
     160           0 :   fStartTimeDCSQuery=data.GetStartTimeDCSQuery();
     161           0 :   fEndTimeDCSQuery=data.GetEndTimeDCSQuery();
     162             : 
     163           0 :   for(int i=0;i<kNAliases;i++) {
     164           0 :     fAliasNames[i]=data.GetAliasName(i);
     165             :   }
     166             : 
     167           0 :   for(int i=0;i<kNHV;i++) {
     168           0 :     fHVvp[i]=data.GetHVvp(i);
     169           0 :     fHVvn[i]=data.GetHVvn(i);
     170           0 :     fHVip[i]=data.GetHVip(i);
     171           0 :     fHVin[i]=data.GetHVin(i);
     172             :   }
     173             : 
     174             : 
     175           0 :   return *this;
     176           0 : }
     177             : //---------------------------------------------------------------
     178           0 : AliTOFDataDCS::~AliTOFDataDCS() {
     179             : 
     180             :   // destructor
     181             : 
     182           0 :   for(int i=0;i<kNHV;i++) {
     183           0 :     delete fHVvp[i];
     184           0 :     fHVvp[i]=0;
     185           0 :     delete fHVvn[i];
     186           0 :     fHVvn[i]=0;
     187           0 :     delete fHVip[i];
     188           0 :     fHVip[i]=0;
     189           0 :     delete fHVin[i];
     190           0 :     fHVin[i]=0;
     191             :   }
     192             :   
     193           0 : }
     194             : 
     195             : //---------------------------------------------------------------
     196             : Bool_t AliTOFDataDCS::ProcessData(TMap& aliasMap){
     197             : 
     198             :   // method to process the data
     199             : 
     200           0 :   if(!(fAliasNames[0])) Init();
     201             : 
     202             :   Float_t val=0;
     203             :   Float_t val0=0;
     204             :   Float_t val1=0;
     205             :   Float_t time=0; 
     206             :   Float_t time0=0; 
     207             :   Float_t time1=0; 
     208           0 :   Float_t delta[2];
     209           0 :   Float_t timedelta[2];
     210             : 
     211           0 :   AliInfo(Form(" Start Time = %i",fStartTime));
     212           0 :   AliInfo(Form(" End Time = %i",fEndTime));
     213           0 :   AliInfo(Form(" Start Time DCS Query= %i",fStartTimeDCSQuery));
     214           0 :   AliInfo(Form(" End Time DCS Query= %i",fEndTimeDCSQuery));
     215             : 
     216           0 :   if (fEndTime==fStartTime){
     217           0 :     AliError(Form(" Run with null time length: start time = %i = end time = %i",fStartTime,fEndTime));
     218           0 :     return kFALSE;
     219             :   }
     220             : 
     221             :   TObjArray *aliasArr;
     222             :   AliDCSValue* aValue;
     223             :   AliDCSValue* aValue0;
     224             :   AliDCSValue* aValue1;
     225             : 
     226             :   // starting loop on aliases
     227           0 :   for(int j=0; j<kNAliases; j++){
     228           0 :     for (Int_t k=0;k<2;k++) {
     229           0 :       delta[k]=0;
     230           0 :       timedelta[k]=0;
     231             :     }
     232             :     //AliInfo(Form("j = %i, with alias = %s",j,fAliasNames[j].Data()));
     233           0 :     aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
     234           0 :     if(!aliasArr){
     235           0 :       AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
     236           0 :       if (!fFDR){
     237           0 :         return kFALSE;    // returning only in case we are not in a FDR run
     238             :       }
     239             :       else {
     240             :         continue;
     241             :       }
     242             :     }
     243             : 
     244           0 :     Introduce(j, aliasArr);
     245             :     
     246           0 :     if(aliasArr->GetEntries()==0){
     247           0 :       AliError(Form("Alias %s has no entries! Nothing will be stored",
     248             :                     fAliasNames[j].Data()));
     249           0 :       continue;
     250             :     }
     251           0 :     if(aliasArr->GetEntries() == 1){
     252           0 :       AliWarning(Form("Alias %s has just %d entries! Only first value will be stored",
     253             :                     fAliasNames[j].Data(),aliasArr->GetEntries()));
     254           0 :       aValue0 = (AliDCSValue*) aliasArr->At(0);
     255           0 :       val0 = aValue0->GetFloat();
     256           0 :       time0 = (Float_t) (aValue0->GetTimeStamp());
     257           0 :       if (j<kNHV){
     258           0 :         fHVvp[j]->SetFloat(0,val0);
     259           0 :         fHVvp[j]->SetTimeStampFloat(0,time0);
     260           0 :       }
     261           0 :       else if (j<kNHV*2){
     262           0 :         fHVvn[j-kNHV]->SetFloat(0,val0);
     263           0 :         fHVvn[j-kNHV]->SetTimeStampFloat(0,time0);
     264           0 :       }
     265           0 :       else if (j<kNHV*3){
     266           0 :         fHVip[j-2*kNHV]->SetFloat(0,val0);
     267           0 :         fHVip[j-2*kNHV]->SetTimeStampFloat(0,time0);
     268           0 :       }
     269           0 :       else if (j<kNHV*4){
     270           0 :         fHVin[j-3*kNHV]->SetFloat(0,val0);
     271           0 :         fHVin[j-3*kNHV]->SetTimeStampFloat(0,time0);
     272           0 :       }
     273             :       continue;
     274             :     }
     275           0 :     if(aliasArr->GetEntries()==2){
     276           0 :       AliWarning(Form("Alias %s has just %d entries! Storing first and second entry only and the delta between these two",
     277             :                     fAliasNames[j].Data(),aliasArr->GetEntries()));
     278           0 :       aValue0 = (AliDCSValue*) aliasArr->At(0);
     279           0 :       val0 = aValue0->GetFloat();
     280           0 :       time0 = (Float_t) (aValue0->GetTimeStamp());
     281           0 :       aValue1 = (AliDCSValue*) aliasArr->At(1);
     282           0 :       val1 = aValue1->GetFloat();
     283           0 :       time1 = (Float_t) (aValue1->GetTimeStamp());
     284           0 :       if (j<kNHV){
     285           0 :         fHVvp[j]->SetFloat(0,val0);
     286           0 :         fHVvp[j]->SetTimeStampFloat(0,time0);
     287           0 :         fHVvp[j]->SetFloat(1,val1);
     288           0 :         fHVvp[j]->SetTimeStampFloat(1,time1);
     289           0 :         fHVvp[j]->SetDelta(0,TMath::Abs(val1-val0));
     290           0 :         fHVvp[j]->SetTimeStampDelta(0,time1-time0);
     291           0 :       }
     292           0 :       else if (j<kNHV*2){
     293           0 :         fHVvn[j-kNHV]->SetFloat(0,val0);
     294           0 :         fHVvn[j-kNHV]->SetTimeStampFloat(0,time0);
     295           0 :         fHVvn[j-kNHV]->SetFloat(1,val1);
     296           0 :         fHVvn[j-kNHV]->SetTimeStampFloat(1,time1);
     297           0 :         fHVvn[j-kNHV]->SetDelta(0,TMath::Abs(val1-val0));
     298           0 :         fHVvn[j-kNHV]->SetTimeStampDelta(0,time1-time0);
     299           0 :       }
     300           0 :       else if (j<kNHV*3){
     301           0 :         fHVip[j-2*kNHV]->SetFloat(0,val0);
     302           0 :         fHVip[j-2*kNHV]->SetTimeStampFloat(0,time0);
     303           0 :         fHVip[j-2*kNHV]->SetFloat(1,val1);
     304           0 :         fHVip[j-2*kNHV]->SetTimeStampFloat(1,time1);
     305           0 :         fHVip[j-2*kNHV]->SetDelta(0,TMath::Abs(val1-val0));
     306           0 :         fHVip[j-2*kNHV]->SetTimeStampDelta(0,time1-time0);
     307           0 :       }
     308           0 :       else if (j<kNHV*4){
     309           0 :         fHVin[j-3*kNHV]->SetFloat(0,val0);
     310           0 :         fHVin[j-3*kNHV]->SetTimeStampFloat(0,time0);
     311           0 :         fHVin[j-3*kNHV]->SetFloat(1,val1);
     312           0 :         fHVin[j-3*kNHV]->SetTimeStampFloat(1,time1);
     313           0 :         fHVin[j-3*kNHV]->SetDelta(0,TMath::Abs(val1-val0));
     314           0 :         fHVin[j-3*kNHV]->SetTimeStampDelta(0,time1-time0);
     315           0 :       }
     316             :       continue;
     317             :     }
     318             :     
     319           0 :     TIter iterarray(aliasArr);
     320             :     
     321           0 :     Int_t nentries = aliasArr->GetEntries();
     322           0 :     Int_t deltaTimeStamp = (Int_t) nentries/3;
     323           0 :     Int_t deltaTimeStamp1 = (Int_t) nentries/2;
     324             : 
     325             :     // filling aliases with 10 floats+1 Usign
     326             :     Int_t index = 0;
     327           0 :     for (Int_t k=0;k<3;k++){
     328           0 :       index = deltaTimeStamp*k;
     329           0 :       if (k==0) {
     330             :         index=0;
     331           0 :       }
     332           0 :       else if (k==1) {
     333             :         index=deltaTimeStamp1;
     334           0 :       } 
     335           0 :       else if (k==2) {
     336           0 :         index=nentries-1; 
     337           0 :       }
     338           0 :       aValue = (AliDCSValue*) aliasArr->At(index);
     339           0 :       val = aValue->GetFloat();
     340           0 :       time = (Float_t) (aValue->GetTimeStamp());
     341           0 :       if (j<kNHV){
     342           0 :         fHVvp[j]->SetFloat(k,val);
     343           0 :         fHVvp[j]->SetTimeStampFloat(k,time);
     344           0 :       }
     345           0 :       else if (j<kNHV*2){
     346           0 :         fHVvn[j-kNHV]->SetFloat(k,val);
     347           0 :         fHVvn[j-kNHV]->SetTimeStampFloat(k,time);
     348           0 :       }
     349           0 :       else if (j<kNHV*3){
     350           0 :         fHVip[j-2*kNHV]->SetFloat(k,val);
     351           0 :         fHVip[j-2*kNHV]->SetTimeStampFloat(k,time);
     352           0 :       }
     353           0 :       else if (j<kNHV*4){
     354           0 :         fHVin[j-3*kNHV]->SetFloat(k,val);
     355           0 :         fHVin[j-3*kNHV]->SetTimeStampFloat(k,time);
     356           0 :       }
     357             :     }
     358             :   
     359             :     //computing the most significant variations
     360             : 
     361             :     //Float_t timeDiff = (Float_t)(fEndTime-fStartTime);
     362           0 :     Float_t timeDiff = (Float_t)(fEndTimeDCSQuery-fStartTimeDCSQuery);
     363           0 :     Int_t deltamin = (Int_t)(60/timeDiff*nentries); //sampling every minute
     364           0 :     Int_t klast = nentries-deltamin;
     365             :       
     366           0 :     for (Int_t k=0;k<klast;k++){
     367           0 :       aValue = (AliDCSValue*) aliasArr->At(k);
     368           0 :       aValue1 = (AliDCSValue*) aliasArr->At(k+deltamin);
     369           0 :       val = aValue->GetFloat();
     370           0 :       val1 = aValue1->GetFloat();
     371           0 :       if (delta[0]<=TMath::Abs(val1-val)) {
     372           0 :         delta[0]=TMath::Abs(val1-val);
     373           0 :         timedelta[0] = (Float_t)k;
     374           0 :       }
     375           0 :       if (delta[1]<=delta[0]) {
     376             :         Float_t temp = delta[1];
     377           0 :         Float_t timetemp = timedelta[1];
     378           0 :         delta[1]=delta[0];
     379           0 :         delta[0]=temp;
     380           0 :         timedelta[1]=timedelta[0];
     381           0 :         timedelta[0]=timetemp;
     382           0 :       }
     383             :     }
     384             :     
     385           0 :     for (Int_t kk=0;kk<2;kk++){
     386           0 :       if (j<kNHV){
     387           0 :         fHVvp[j]->SetDelta(kk,delta[kk]);
     388           0 :         fHVvp[j]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]);
     389           0 :       }
     390           0 :       else if (j<kNHV*2){
     391           0 :         fHVvn[j-kNHV]->SetDelta(kk,delta[kk]);
     392           0 :         fHVvn[j-kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]);
     393           0 :       }
     394           0 :       else if (j<kNHV*3){
     395           0 :         fHVip[j-2*kNHV]->SetDelta(kk,delta[kk]);
     396           0 :         fHVip[j-2*kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]);
     397           0 :       }
     398           0 :       else if (j<kNHV*4){
     399           0 :         fHVin[j-3*kNHV]->SetDelta(kk,delta[kk]);
     400           0 :         fHVin[j-3*kNHV]->SetTimeStampDelta(kk,(Float_t)timedelta[kk]);
     401           0 :       }
     402             :     }
     403           0 :   }
     404             :   
     405           0 :   fIsProcessed=kTRUE;
     406             : 
     407           0 :   return kTRUE;
     408           0 : }
     409             : 
     410             : //---------------------------------------------------------------
     411             : void AliTOFDataDCS::Init(){
     412             : 
     413             :   // initialization of aliases and DCS data
     414             : 
     415           0 :   TString sindex;
     416           0 :   for(int i=0;i<kNAliases;i++){
     417             :     //HV, v
     418           0 :     if (i<kNHV){
     419           0 :         fAliasNames[i] = "tof_hv_vp_";
     420           0 :         sindex.Form("%02i",i);
     421           0 :         fAliasNames[i] += sindex;
     422           0 :         fHVvp[i] = new AliTOFFormatDCS();
     423           0 :     }
     424           0 :     else if (i<kNHV*2){
     425           0 :         fAliasNames[i] = "tof_hv_vn_";
     426           0 :         sindex.Form("%02i",i-kNHV);
     427           0 :         fAliasNames[i] += sindex;
     428           0 :         fHVvn[i-kNHV] = new AliTOFFormatDCS();
     429           0 :     }
     430             :     //HV, i
     431           0 :     else if (i<kNHV*3){
     432           0 :         fAliasNames[i] = "tof_hv_ip_";
     433           0 :         sindex.Form("%02i",i-2*kNHV);
     434           0 :         fAliasNames[i] += sindex;
     435           0 :         fHVip[i-2*kNHV] = new AliTOFFormatDCS();
     436           0 :     }
     437           0 :     else if (i<kNHV*4){
     438           0 :         fAliasNames[i] = "tof_hv_in_";
     439           0 :         sindex.Form("%02i",i-3*kNHV);
     440           0 :         fAliasNames[i] += sindex;
     441           0 :         fHVin[i-3*kNHV] = new AliTOFFormatDCS();
     442           0 :     }
     443             :   }
     444           0 : }
     445             : 
     446             : 
     447             : //---------------------------------------------------------------
     448             : void AliTOFDataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)const
     449             : {
     450             : 
     451             :   // method to introduce new aliases
     452             : 
     453             :   int entries=0;
     454           0 :   entries = aliasArr->GetEntries();
     455             :   int nal=0;
     456             :   nal=numAlias;
     457           0 :   AliDebug(2,Form("************ Alias: %s **********",fAliasNames[numAlias].Data()));
     458           0 :   AliDebug(2,Form("        %d DP values collected",entries));
     459             : 
     460           0 : }
     461             : 
     462             : //---------------------------------------------------------------
     463             : void AliTOFDataDCS::Draw(const Option_t* /*option*/)
     464             : {
     465             :   // Draw all histos and graphs
     466             : 
     467           0 :   if(!fIsProcessed) return;
     468             : 
     469             :   TCanvas *ch;
     470           0 :   TString canvasHistoName="Histos";
     471           0 :   ch=new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600);
     472           0 :   ch->cd();
     473             : 
     474             :   // to be implemented
     475             : 
     476           0 : }
     477             : 

Generated by: LCOV version 1.11