1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 //-----------------------------------------------------------------
20 // This class deals with the DCS related info of the GRP
21 // Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
22 //-----------------------------------------------------------------
24 #include "AliGRPDCS.h"
25 #include "AliDCSValue.h"
30 #include <TObjArray.h>
34 //_______________________________________________________________
35 AliGRPDCS::AliGRPDCS():
36 TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
37 // default constructor
41 //_______________________________________________________________
42 AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
43 TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
48 //___________________________________________________________________________
49 AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
53 if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
56 //_______________________________________________________________
57 const char* AliGRPDCS::ProcessDCS(Int_t iType) {
58 // process the dcs dps
59 //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
60 TString fDCSDataPointValue;
63 fDCSDataPointValue += ProcessInt();
67 fDCSDataPointValue += ProcessUInt();
71 fDCSDataPointValue += ProcessFloat();
75 fDCSDataPointValue += ProcessString();
79 fDCSDataPointValue += ProcessBoolean();
85 return fDCSDataPointValue.Data();
88 //_______________________________________________________________
89 const char* AliGRPDCS::ProcessInt() {
90 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
92 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
93 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
94 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
95 fFDCSArraySum += v->GetInt();
99 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
100 else fFDCSArrayMean = -10.;
102 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
104 return fDCSDataPointValue.Data();
107 //_______________________________________________________________
108 const char* AliGRPDCS::ProcessUInt() {
109 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
111 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
112 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
113 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
114 fFDCSArraySum += v->GetUInt();
118 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
119 else fFDCSArrayMean = -10.;
121 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
123 return fDCSDataPointValue.Data();
126 //_______________________________________________________________
127 const char* AliGRPDCS::ProcessFloat() {
128 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
130 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
131 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
132 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
133 fFDCSArraySum += v->GetFloat();
137 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
138 else fFDCSArrayMean = -10.;
140 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
142 return fDCSDataPointValue.Data();
145 //_______________________________________________________________
146 const char* AliGRPDCS::ProcessString() {
147 TString fDCSString, fDCSTemp;
148 Bool_t kFound = kFALSE;
151 AliDCSValue *v = 0x0;
153 v = (AliDCSValue *)fDCSArray->At(iCount);
155 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
157 fDCSTemp = v->GetChar();
158 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
159 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
160 if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
161 fDCSString = v1->GetChar();
162 if(fDCSTemp != fDCSString) AliFatal("DCS data point value changed within the run!!!");
165 TString fDCSDataPointValue = fDCSString;
167 return fDCSDataPointValue.Data();
170 //_______________________________________________________________
171 const char* AliGRPDCS::ProcessBoolean() {
172 Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
173 Bool_t kFound = kFALSE;
176 AliDCSValue *v = 0x0;
178 v = (AliDCSValue *)fDCSArray->At(iCount);
180 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
182 fDCSTemp = v->GetBool();
183 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
184 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
185 if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
186 fDCSBool = v1->GetBool();
187 if(fDCSTemp != fDCSBool) AliFatal("DCS data point value changed within the run!!!");
190 TString fDCSDataPointValue = fDCSBool;
192 return fDCSDataPointValue.Data();