LCOV - code coverage report
Current view: top level - STEER/CDB - AliGRPDCS.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 82 1.2 %
Date: 2016-06-14 17:26:59 Functions: 1 13 7.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             : /* $Id$ */
      17             : 
      18             : //-----------------------------------------------------------------
      19             : //                AliGRPDCS class
      20             : //   This class deals with the DCS related info of the GRP
      21             : //   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
      22             : //    Modified: Ernesto.Lopez.Torres@cern.ch  CEADEN-CERN
      23             : //-----------------------------------------------------------------
      24             : #include "Riostream.h"
      25             : #include "TError.h"
      26             : 
      27             : #include "AliGRPDCS.h"
      28             : #include "AliDCSValue.h"
      29             : #include "AliLog.h"
      30             : 
      31             : class TObjString;
      32             : 
      33             : #include <TObjArray.h>
      34             : 
      35         128 : ClassImp(AliGRPDCS)
      36             : 
      37             : //_______________________________________________________________
      38             : AliGRPDCS::AliGRPDCS():
      39           0 :   TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray())
      40           0 : {
      41             :   // default constructor
      42             :   
      43           0 : }
      44             : 
      45             : //_______________________________________________________________
      46             : AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
      47           0 :   TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
      48             :   // constructor
      49           0 :   fDCSArray = dcsArray;
      50           0 : }
      51             : 
      52             : //___________________________________________________________________________
      53             : AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
      54           0 :   TObject(grpDcs), 
      55           0 :   fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime), 
      56           0 :   fDCSArray(grpDcs.fDCSArray)
      57           0 : {
      58             :   //copy constructor
      59             : 
      60             :   //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
      61           0 : }
      62             : 
      63             : //_______________________________________________________________
      64             : TString AliGRPDCS::ProcessDCS(Int_t iType)
      65             : {
      66             :   // process the dcs dps
      67           0 :   if(!fDCSArray->GetEntries()) {
      68           0 :     Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
      69           0 :     return TString();
      70             :   }
      71             : 
      72             :   // 1:Bool - 2:Char - 3:Int - 4:UInt - 5:Float
      73           0 :   TString fDCSDataPointValue;
      74           0 :   switch (iType) {
      75             :     case 1: {
      76           0 :       fDCSDataPointValue += ProcessBoolean();
      77           0 :       break;
      78             :     }
      79             :     case 2: {
      80           0 :       fDCSDataPointValue += ProcessChar();
      81           0 :       break;
      82             :     }
      83             :     case 3: {
      84           0 :       fDCSDataPointValue += ProcessInt();
      85           0 :       break;
      86             :     }
      87             :     case 4: {
      88           0 :       fDCSDataPointValue += ProcessUInt();
      89           0 :       break;
      90             :     }
      91             :     case 5: {
      92           0 :       fDCSDataPointValue += ProcessFloat();
      93           0 :       break;
      94             :     }
      95             : //  case 6: {
      96             : //    fDCSDataPointValue += ProcessString();
      97             : //    break;
      98             : //  }
      99             :     default: {
     100           0 :       Error("AliGRPDCS::ProcessDCS", "Unknown type!!!" );
     101             :       break;
     102             :     }
     103             :   }//switch
     104             : 
     105             :   //cout<<fDCSDataPointValue.Data()<<endl;
     106           0 :   return fDCSDataPointValue;
     107           0 : }
     108             : 
     109             : //_______________________________________________________________
     110             : TString AliGRPDCS::ProcessBoolean()
     111             : {
     112             :   Bool_t fDCSBool = kTRUE;
     113             :   Bool_t previousBool = kTRUE;
     114             : 
     115             :   AliDCSValue *v = 0x0;
     116             : 
     117           0 :   for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
     118           0 :     v = (AliDCSValue *)fDCSArray->At(iCount);
     119           0 :     if ((v->GetTimeStamp() < fStartTime) || (v->GetTimeStamp() > fStopTime)) {
     120           0 :       AliError(Form("DCS values for the parameter outside the queried interval"));
     121           0 :       continue;
     122             :     }
     123           0 :     fDCSBool = v->GetBool();
     124           0 :     if (iCount > 0) {
     125           0 :       if (fDCSBool != previousBool)
     126           0 :         AliError(Form("DCS values for the parameter changed from %d to %d within the queried interval", (Int_t)previousBool, (Int_t)fDCSBool));
     127             :     }
     128           0 :     previousBool = fDCSBool;
     129           0 :   }
     130             : 
     131           0 :   return (fDCSBool)? "1" : "0";
     132           0 : }
     133             : 
     134             : //_______________________________________________________________
     135             : TString AliGRPDCS::ProcessInt()
     136             : {
     137             :   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
     138             :   Int_t iCounts = 0;
     139           0 :   for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
     140           0 :     AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
     141           0 :     if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
     142           0 :       fFDCSArraySum += v->GetInt();
     143           0 :       iCounts += 1;
     144           0 :     }
     145             :   }
     146           0 :   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
     147             :   else fFDCSArrayMean = -10.;
     148             :  
     149           0 :   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
     150             :   //return fDCSDataPointValue.Data()
     151             :   // return string from root circular buffer, do not return local pointer
     152           0 :   return Form("%s",fDCSDataPointValue.Data());
     153           0 : }
     154             : 
     155             : //_______________________________________________________________
     156             : TString AliGRPDCS::ProcessUInt()
     157             : {
     158             :   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
     159             :   Int_t iCounts = 0;
     160           0 :   for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
     161           0 :     AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
     162           0 :     if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
     163           0 :       fFDCSArraySum += v->GetUInt();
     164           0 :       iCounts += 1;
     165           0 :     }
     166             :   }
     167           0 :   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
     168             :   else fFDCSArrayMean = -10.;
     169             :    
     170           0 :   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
     171             :   //return fDCSDataPointValue.Data();
     172             :   // return string from root circular buffer, do not return local pointer
     173           0 :   return Form("%s",fDCSDataPointValue.Data());
     174             : 
     175             : 
     176           0 : }
     177             : 
     178             : //_______________________________________________________________
     179             : TString AliGRPDCS::ProcessFloat()
     180             : {
     181             :   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
     182             :   Int_t iCounts = 0;
     183             :   //printf("Entries: %d\n",fDCSArray->GetEntries());
     184             :   //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
     185           0 :   for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
     186           0 :     AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
     187           0 :     if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
     188           0 :       fFDCSArraySum += v->GetFloat();
     189           0 :       iCounts += 1;
     190           0 :     }
     191             :   }
     192           0 :   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
     193             :   else fFDCSArrayMean = -10.;
     194             :    
     195           0 :   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
     196             :   //  return fDCSDataPointValue.Data();
     197             :   // return string from root circular buffer, do not return local pointer
     198           0 :   return Form("%s",fDCSDataPointValue.Data());
     199             :   
     200           0 : }
     201             : 
     202             : //_______________________________________________________________
     203             : TString AliGRPDCS::ProcessChar()
     204             : {
     205           0 :   TString fDCSString;
     206             : 
     207             :   AliDCSValue *v = 0x0;
     208             : 
     209             :   //printf("Entries: %d\n",fDCSArray->GetEntries());
     210             :   //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
     211             :   
     212           0 :   for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
     213           0 :     v = (AliDCSValue *)fDCSArray->At(iCount);
     214           0 :     if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime)) 
     215           0 :       AliError(Form("DCS values for the parameter changed within the queried interval"));
     216           0 :     if (v->GetTimeStamp() > fStopTime) continue;
     217           0 :     fDCSString = v->GetChar();
     218             :   }
     219             :   
     220           0 :   TString fDCSDataPointValue = fDCSString;
     221             :   
     222             :   return fDCSDataPointValue;
     223           0 : }
     224             : 
     225             : /*
     226             : //_______________________________________________________________
     227             : TString AliGRPDCS::ProcessString()
     228             : {
     229             :   TString fDCSString;
     230             : 
     231             :   AliDCSValue *v = 0x0;
     232             : 
     233             :   //printf("Entries: %d\n",fDCSArray->GetEntries());
     234             :   //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
     235             :   
     236             :   for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
     237             :     v = (TObjString *)fDCSArray->At(iCount);
     238             :     if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime)) 
     239             :       AliError(Form("DCS values for the parameter changed within the queried interval"));
     240             :     if (v->GetTimeStamp() > fStopTime) continue;
     241             :     fDCSString = v->GetChar(); // FIXME  should be something like v->GetString()
     242             :   }
     243             :   
     244             :   TString fDCSDataPointValue = fDCSString;
     245             :   //cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
     246             : 
     247             :   return fDCSDataPointValue.Data();
     248             : }
     249             : */

Generated by: LCOV version 1.11