ROOT logo
/**************************************************************************
 * 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.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------------------
//                AliGRPDCS class
//   This class deals with the DCS related info of the GRP
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//    Modified: Ernesto.Lopez.Torres@cern.ch  CEADEN-CERN
//-----------------------------------------------------------------
#include "Riostream.h"
#include "TError.h"

#include "AliGRPDCS.h"
#include "AliDCSValue.h"
#include "AliLog.h"

class TObjString;

#include <TObjArray.h>

ClassImp(AliGRPDCS)

//_______________________________________________________________
AliGRPDCS::AliGRPDCS():
  TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray())
{
  // default constructor
  
}

//_______________________________________________________________
AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
  TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
  // constructor
  fDCSArray = dcsArray;
}

//___________________________________________________________________________
AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
  TObject(grpDcs), 
  fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime), 
  fDCSArray(grpDcs.fDCSArray)
{
  //copy constructor

  //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessDCS(Int_t iType)
{
  // process the dcs dps
  if(!fDCSArray->GetEntries()) {
    Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
    return 0;
  }

  // 1:Bool - 2:Char - 3:Int - 4:UInt - 5:Float
  TString fDCSDataPointValue;
  switch (iType) {
    case 1: {
      fDCSDataPointValue += ProcessBoolean();
      break;
    }
    case 2: {
      fDCSDataPointValue += ProcessChar();
      break;
    }
    case 3: {
      fDCSDataPointValue += ProcessInt();
      break;
    }
    case 4: {
      fDCSDataPointValue += ProcessUInt();
      break;
    }
    case 5: {
      fDCSDataPointValue += ProcessFloat();
      break;
    }
//  case 6: {
//    fDCSDataPointValue += ProcessString();
//    break;
//  }
    default: {
      Error("AliGRPDCS::ProcessDCS", "Unknown type!!!" );
      break;
    }
  }//switch

  //cout<<fDCSDataPointValue.Data()<<endl;
  return fDCSDataPointValue.Data();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessBoolean()
{
  Bool_t fDCSBool = kTRUE;
  Bool_t previousBool = kTRUE;

  AliDCSValue *v = 0x0;

  for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
    v = (AliDCSValue *)fDCSArray->At(iCount);
    if ((v->GetTimeStamp() < fStartTime) || (v->GetTimeStamp() > fStopTime)) {
      AliError(Form("DCS values for the parameter outside the queried interval"));
      continue;
    }
    fDCSBool = v->GetBool();
    if (iCount > 0) {
      if (fDCSBool != previousBool)
	AliError(Form("DCS values for the parameter changed from %d to %d within the queried interval", (Int_t)previousBool, (Int_t)fDCSBool));
    }
    previousBool = fDCSBool;
  }

  TString fDCSDataPointValue = (fDCSBool)? "1" : "0";

  return fDCSDataPointValue.Data();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessInt()
{
  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
  Int_t iCounts = 0;
  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
    AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
      fFDCSArraySum += v->GetInt();
      iCounts += 1;
    }
  }
  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
  else fFDCSArrayMean = -10.;
 
  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;

  return fDCSDataPointValue.Data();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessUInt()
{
  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
  Int_t iCounts = 0;
  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
    AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
      fFDCSArraySum += v->GetUInt();
      iCounts += 1;
    }
  }
  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
  else fFDCSArrayMean = -10.;
   
  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;

  return fDCSDataPointValue.Data();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessFloat()
{
  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
  Int_t iCounts = 0;
  //printf("Entries: %d\n",fDCSArray->GetEntries());
  //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
    AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
      fFDCSArraySum += v->GetFloat();
      iCounts += 1;
    }
  }
  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
  else fFDCSArrayMean = -10.;
   
  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;

  return fDCSDataPointValue.Data();
}

//_______________________________________________________________
const char* AliGRPDCS::ProcessChar()
{
  TString fDCSString;

  AliDCSValue *v = 0x0;

  //printf("Entries: %d\n",fDCSArray->GetEntries());
  //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
  
  for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
    v = (AliDCSValue *)fDCSArray->At(iCount);
    if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime)) 
      AliError(Form("DCS values for the parameter changed within the queried interval"));
    if (v->GetTimeStamp() > fStopTime) continue;
    fDCSString = v->GetChar();
  }
  
  TString fDCSDataPointValue = fDCSString;
  
  return fDCSDataPointValue.Data();
}

/*
//_______________________________________________________________
const char* AliGRPDCS::ProcessString()
{
  TString fDCSString;

  AliDCSValue *v = 0x0;

  //printf("Entries: %d\n",fDCSArray->GetEntries());
  //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
  
  for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
    v = (TObjString *)fDCSArray->At(iCount);
    if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime)) 
      AliError(Form("DCS values for the parameter changed within the queried interval"));
    if (v->GetTimeStamp() > fStopTime) continue;
    fDCSString = v->GetChar(); // FIXME  should be something like v->GetString()
  }
  
  TString fDCSDataPointValue = fDCSString;
  //cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;

  return fDCSDataPointValue.Data();
}
*/
 AliGRPDCS.cxx:1
 AliGRPDCS.cxx:2
 AliGRPDCS.cxx:3
 AliGRPDCS.cxx:4
 AliGRPDCS.cxx:5
 AliGRPDCS.cxx:6
 AliGRPDCS.cxx:7
 AliGRPDCS.cxx:8
 AliGRPDCS.cxx:9
 AliGRPDCS.cxx:10
 AliGRPDCS.cxx:11
 AliGRPDCS.cxx:12
 AliGRPDCS.cxx:13
 AliGRPDCS.cxx:14
 AliGRPDCS.cxx:15
 AliGRPDCS.cxx:16
 AliGRPDCS.cxx:17
 AliGRPDCS.cxx:18
 AliGRPDCS.cxx:19
 AliGRPDCS.cxx:20
 AliGRPDCS.cxx:21
 AliGRPDCS.cxx:22
 AliGRPDCS.cxx:23
 AliGRPDCS.cxx:24
 AliGRPDCS.cxx:25
 AliGRPDCS.cxx:26
 AliGRPDCS.cxx:27
 AliGRPDCS.cxx:28
 AliGRPDCS.cxx:29
 AliGRPDCS.cxx:30
 AliGRPDCS.cxx:31
 AliGRPDCS.cxx:32
 AliGRPDCS.cxx:33
 AliGRPDCS.cxx:34
 AliGRPDCS.cxx:35
 AliGRPDCS.cxx:36
 AliGRPDCS.cxx:37
 AliGRPDCS.cxx:38
 AliGRPDCS.cxx:39
 AliGRPDCS.cxx:40
 AliGRPDCS.cxx:41
 AliGRPDCS.cxx:42
 AliGRPDCS.cxx:43
 AliGRPDCS.cxx:44
 AliGRPDCS.cxx:45
 AliGRPDCS.cxx:46
 AliGRPDCS.cxx:47
 AliGRPDCS.cxx:48
 AliGRPDCS.cxx:49
 AliGRPDCS.cxx:50
 AliGRPDCS.cxx:51
 AliGRPDCS.cxx:52
 AliGRPDCS.cxx:53
 AliGRPDCS.cxx:54
 AliGRPDCS.cxx:55
 AliGRPDCS.cxx:56
 AliGRPDCS.cxx:57
 AliGRPDCS.cxx:58
 AliGRPDCS.cxx:59
 AliGRPDCS.cxx:60
 AliGRPDCS.cxx:61
 AliGRPDCS.cxx:62
 AliGRPDCS.cxx:63
 AliGRPDCS.cxx:64
 AliGRPDCS.cxx:65
 AliGRPDCS.cxx:66
 AliGRPDCS.cxx:67
 AliGRPDCS.cxx:68
 AliGRPDCS.cxx:69
 AliGRPDCS.cxx:70
 AliGRPDCS.cxx:71
 AliGRPDCS.cxx:72
 AliGRPDCS.cxx:73
 AliGRPDCS.cxx:74
 AliGRPDCS.cxx:75
 AliGRPDCS.cxx:76
 AliGRPDCS.cxx:77
 AliGRPDCS.cxx:78
 AliGRPDCS.cxx:79
 AliGRPDCS.cxx:80
 AliGRPDCS.cxx:81
 AliGRPDCS.cxx:82
 AliGRPDCS.cxx:83
 AliGRPDCS.cxx:84
 AliGRPDCS.cxx:85
 AliGRPDCS.cxx:86
 AliGRPDCS.cxx:87
 AliGRPDCS.cxx:88
 AliGRPDCS.cxx:89
 AliGRPDCS.cxx:90
 AliGRPDCS.cxx:91
 AliGRPDCS.cxx:92
 AliGRPDCS.cxx:93
 AliGRPDCS.cxx:94
 AliGRPDCS.cxx:95
 AliGRPDCS.cxx:96
 AliGRPDCS.cxx:97
 AliGRPDCS.cxx:98
 AliGRPDCS.cxx:99
 AliGRPDCS.cxx:100
 AliGRPDCS.cxx:101
 AliGRPDCS.cxx:102
 AliGRPDCS.cxx:103
 AliGRPDCS.cxx:104
 AliGRPDCS.cxx:105
 AliGRPDCS.cxx:106
 AliGRPDCS.cxx:107
 AliGRPDCS.cxx:108
 AliGRPDCS.cxx:109
 AliGRPDCS.cxx:110
 AliGRPDCS.cxx:111
 AliGRPDCS.cxx:112
 AliGRPDCS.cxx:113
 AliGRPDCS.cxx:114
 AliGRPDCS.cxx:115
 AliGRPDCS.cxx:116
 AliGRPDCS.cxx:117
 AliGRPDCS.cxx:118
 AliGRPDCS.cxx:119
 AliGRPDCS.cxx:120
 AliGRPDCS.cxx:121
 AliGRPDCS.cxx:122
 AliGRPDCS.cxx:123
 AliGRPDCS.cxx:124
 AliGRPDCS.cxx:125
 AliGRPDCS.cxx:126
 AliGRPDCS.cxx:127
 AliGRPDCS.cxx:128
 AliGRPDCS.cxx:129
 AliGRPDCS.cxx:130
 AliGRPDCS.cxx:131
 AliGRPDCS.cxx:132
 AliGRPDCS.cxx:133
 AliGRPDCS.cxx:134
 AliGRPDCS.cxx:135
 AliGRPDCS.cxx:136
 AliGRPDCS.cxx:137
 AliGRPDCS.cxx:138
 AliGRPDCS.cxx:139
 AliGRPDCS.cxx:140
 AliGRPDCS.cxx:141
 AliGRPDCS.cxx:142
 AliGRPDCS.cxx:143
 AliGRPDCS.cxx:144
 AliGRPDCS.cxx:145
 AliGRPDCS.cxx:146
 AliGRPDCS.cxx:147
 AliGRPDCS.cxx:148
 AliGRPDCS.cxx:149
 AliGRPDCS.cxx:150
 AliGRPDCS.cxx:151
 AliGRPDCS.cxx:152
 AliGRPDCS.cxx:153
 AliGRPDCS.cxx:154
 AliGRPDCS.cxx:155
 AliGRPDCS.cxx:156
 AliGRPDCS.cxx:157
 AliGRPDCS.cxx:158
 AliGRPDCS.cxx:159
 AliGRPDCS.cxx:160
 AliGRPDCS.cxx:161
 AliGRPDCS.cxx:162
 AliGRPDCS.cxx:163
 AliGRPDCS.cxx:164
 AliGRPDCS.cxx:165
 AliGRPDCS.cxx:166
 AliGRPDCS.cxx:167
 AliGRPDCS.cxx:168
 AliGRPDCS.cxx:169
 AliGRPDCS.cxx:170
 AliGRPDCS.cxx:171
 AliGRPDCS.cxx:172
 AliGRPDCS.cxx:173
 AliGRPDCS.cxx:174
 AliGRPDCS.cxx:175
 AliGRPDCS.cxx:176
 AliGRPDCS.cxx:177
 AliGRPDCS.cxx:178
 AliGRPDCS.cxx:179
 AliGRPDCS.cxx:180
 AliGRPDCS.cxx:181
 AliGRPDCS.cxx:182
 AliGRPDCS.cxx:183
 AliGRPDCS.cxx:184
 AliGRPDCS.cxx:185
 AliGRPDCS.cxx:186
 AliGRPDCS.cxx:187
 AliGRPDCS.cxx:188
 AliGRPDCS.cxx:189
 AliGRPDCS.cxx:190
 AliGRPDCS.cxx:191
 AliGRPDCS.cxx:192
 AliGRPDCS.cxx:193
 AliGRPDCS.cxx:194
 AliGRPDCS.cxx:195
 AliGRPDCS.cxx:196
 AliGRPDCS.cxx:197
 AliGRPDCS.cxx:198
 AliGRPDCS.cxx:199
 AliGRPDCS.cxx:200
 AliGRPDCS.cxx:201
 AliGRPDCS.cxx:202
 AliGRPDCS.cxx:203
 AliGRPDCS.cxx:204
 AliGRPDCS.cxx:205
 AliGRPDCS.cxx:206
 AliGRPDCS.cxx:207
 AliGRPDCS.cxx:208
 AliGRPDCS.cxx:209
 AliGRPDCS.cxx:210
 AliGRPDCS.cxx:211
 AliGRPDCS.cxx:212
 AliGRPDCS.cxx:213
 AliGRPDCS.cxx:214
 AliGRPDCS.cxx:215
 AliGRPDCS.cxx:216
 AliGRPDCS.cxx:217
 AliGRPDCS.cxx:218
 AliGRPDCS.cxx:219
 AliGRPDCS.cxx:220
 AliGRPDCS.cxx:221
 AliGRPDCS.cxx:222
 AliGRPDCS.cxx:223
 AliGRPDCS.cxx:224
 AliGRPDCS.cxx:225
 AliGRPDCS.cxx:226
 AliGRPDCS.cxx:227
 AliGRPDCS.cxx:228
 AliGRPDCS.cxx:229
 AliGRPDCS.cxx:230
 AliGRPDCS.cxx:231
 AliGRPDCS.cxx:232
 AliGRPDCS.cxx:233
 AliGRPDCS.cxx:234
 AliGRPDCS.cxx:235
 AliGRPDCS.cxx:236
 AliGRPDCS.cxx:237
 AliGRPDCS.cxx:238
 AliGRPDCS.cxx:239
 AliGRPDCS.cxx:240
 AliGRPDCS.cxx:241
 AliGRPDCS.cxx:242
 AliGRPDCS.cxx:243
 AliGRPDCS.cxx:244
 AliGRPDCS.cxx:245