AliRoot Core  3dc7879 (3dc7879)
AliGRPDCS.cxx
Go to the documentation of this file.
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 ClassImp(AliGRPDCS)
36 
37 //_______________________________________________________________
39  TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray())
40 {
41  // default constructor
42 
43 }
44 
45 //_______________________________________________________________
46 AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
47  TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
48  // constructor
49  fDCSArray = dcsArray;
50 }
51 
52 //___________________________________________________________________________
54  TObject(grpDcs),
55  fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime),
56  fDCSArray(grpDcs.fDCSArray)
57 {
58  //copy constructor
59 
60  //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
61 }
62 
63 //_______________________________________________________________
64 TString AliGRPDCS::ProcessDCS(Int_t iType)
65 {
66  // process the dcs dps
67  if(!fDCSArray->GetEntries()) {
68  Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
69  return TString();
70  }
71 
72  // 1:Bool - 2:Char - 3:Int - 4:UInt - 5:Float
73  TString fDCSDataPointValue;
74  switch (iType) {
75  case 1: {
76  fDCSDataPointValue += ProcessBoolean();
77  break;
78  }
79  case 2: {
80  fDCSDataPointValue += ProcessChar();
81  break;
82  }
83  case 3: {
84  fDCSDataPointValue += ProcessInt();
85  break;
86  }
87  case 4: {
88  fDCSDataPointValue += ProcessUInt();
89  break;
90  }
91  case 5: {
92  fDCSDataPointValue += ProcessFloat();
93  break;
94  }
95 // case 6: {
96 // fDCSDataPointValue += ProcessString();
97 // break;
98 // }
99  default: {
100  Error("AliGRPDCS::ProcessDCS", "Unknown type!!!" );
101  break;
102  }
103  }//switch
104 
105  //cout<<fDCSDataPointValue.Data()<<endl;
106  return fDCSDataPointValue;
107 }
108 
109 //_______________________________________________________________
111 {
112  Bool_t fDCSBool = kTRUE;
113  Bool_t previousBool = kTRUE;
114 
115  AliDCSValue *v = 0x0;
116 
117  for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
118  v = (AliDCSValue *)fDCSArray->At(iCount);
119  if ((v->GetTimeStamp() < fStartTime) || (v->GetTimeStamp() > fStopTime)) {
120  AliError(Form("DCS values for the parameter outside the queried interval"));
121  continue;
122  }
123  fDCSBool = v->GetBool();
124  if (iCount > 0) {
125  if (fDCSBool != previousBool)
126  AliError(Form("DCS values for the parameter changed from %d to %d within the queried interval", (Int_t)previousBool, (Int_t)fDCSBool));
127  }
128  previousBool = fDCSBool;
129  }
130 
131  return (fDCSBool)? "1" : "0";
132 }
133 
134 //_______________________________________________________________
136 {
137  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
138  Int_t iCounts = 0;
139  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
140  AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
141  if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
142  fFDCSArraySum += v->GetInt();
143  iCounts += 1;
144  }
145  }
146  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
147  else fFDCSArrayMean = -10.;
148 
149  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
150  //return fDCSDataPointValue.Data()
151  // return string from root circular buffer, do not return local pointer
152  return Form("%s",fDCSDataPointValue.Data());
153 }
154 
155 //_______________________________________________________________
157 {
158  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
159  Int_t iCounts = 0;
160  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
161  AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
162  if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
163  fFDCSArraySum += v->GetUInt();
164  iCounts += 1;
165  }
166  }
167  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
168  else fFDCSArrayMean = -10.;
169 
170  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
171  //return fDCSDataPointValue.Data();
172  // return string from root circular buffer, do not return local pointer
173  return Form("%s",fDCSDataPointValue.Data());
174 
175 
176 }
177 
178 //_______________________________________________________________
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  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
186  AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
187  if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
188  fFDCSArraySum += v->GetFloat();
189  iCounts += 1;
190  }
191  }
192  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
193  else fFDCSArrayMean = -10.;
194 
195  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
196  // return fDCSDataPointValue.Data();
197  // return string from root circular buffer, do not return local pointer
198  return Form("%s",fDCSDataPointValue.Data());
199 
200 }
201 
202 //_______________________________________________________________
204 {
205  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  for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
213  v = (AliDCSValue *)fDCSArray->At(iCount);
214  if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime))
215  AliError(Form("DCS values for the parameter changed within the queried interval"));
216  if (v->GetTimeStamp() > fStopTime) continue;
217  fDCSString = v->GetChar();
218  }
219 
220  TString fDCSDataPointValue = fDCSString;
221 
222  return fDCSDataPointValue;
223 }
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 */
TObjArray * fDCSArray
Definition: AliGRPDCS.h:37
TString ProcessChar()
Definition: AliGRPDCS.cxx:203
#define TObjArray
UInt_t GetUInt() const
UInt_t fStopTime
Definition: AliGRPDCS.h:36
TString ProcessUInt()
Definition: AliGRPDCS.cxx:156
TString ProcessFloat()
Definition: AliGRPDCS.cxx:179
TString ProcessBoolean()
Definition: AliGRPDCS.cxx:110
Float_t GetFloat() const
UInt_t fStartTime
Definition: AliGRPDCS.h:36
TString ProcessDCS(Int_t iType)
Definition: AliGRPDCS.cxx:64
Char_t GetChar() const
Bool_t GetBool() const
Int_t GetInt() const
UInt_t GetTimeStamp() const
Definition: AliDCSValue.h:55
TString ProcessInt()
Definition: AliGRPDCS.cxx:135
#define AliError(message)
Definition: AliLog.h:591