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 //-----------------------------------------------------------------
23 #include "Riostream.h"
26 #include "AliGRPDCS.h"
27 #include "AliDCSValue.h"
32 #include <TObjArray.h>
36 //_______________________________________________________________
37 AliGRPDCS::AliGRPDCS():
38 TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
39 // default constructor
43 //_______________________________________________________________
44 AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
45 TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
50 //___________________________________________________________________________
51 AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
53 fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime),
54 fDCSArray(grpDcs.fDCSArray) {
57 //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
60 //_______________________________________________________________
61 const char* AliGRPDCS::ProcessDCS(Int_t iType) {
62 // process the dcs dps
63 if(!fDCSArray->GetEntries()) {
64 Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
68 //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
69 TString fDCSDataPointValue;
72 fDCSDataPointValue += ProcessInt();
76 fDCSDataPointValue += ProcessUInt();
80 fDCSDataPointValue += ProcessFloat();
84 fDCSDataPointValue += ProcessString();
88 fDCSDataPointValue += ProcessBoolean();
94 //cout<<fDCSDataPointValue.Data()<<endl;
95 return fDCSDataPointValue.Data();
98 //_______________________________________________________________
99 const char* AliGRPDCS::ProcessInt() {
100 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
102 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
103 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
104 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
105 fFDCSArraySum += v->GetInt();
109 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
110 else fFDCSArrayMean = -10.;
112 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
114 return fDCSDataPointValue.Data();
117 //_______________________________________________________________
118 const char* AliGRPDCS::ProcessUInt() {
119 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
121 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
122 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
123 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
124 fFDCSArraySum += v->GetUInt();
128 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
129 else fFDCSArrayMean = -10.;
131 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
133 return fDCSDataPointValue.Data();
136 //_______________________________________________________________
137 const char* AliGRPDCS::ProcessFloat() {
138 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
140 //printf("Entries: %d\n",fDCSArray->GetEntries());
141 //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
142 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
143 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
144 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
145 fFDCSArraySum += v->GetFloat();
149 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
150 else fFDCSArrayMean = -10.;
152 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
154 return fDCSDataPointValue.Data();
157 //_______________________________________________________________
158 const char* AliGRPDCS::ProcessString() {
159 TString fDCSString, fDCSTemp;
161 AliDCSValue *v = 0x0;
163 //printf("Entries: %d\n",fDCSArray->GetEntries());
164 //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
166 for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
167 v = (AliDCSValue *)fDCSArray->At(iCount);
168 if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime))
169 AliError(Form("DCS values for the parameter changed within the queried interval"));
170 if (v->GetTimeStamp() > fStopTime) continue;
171 fDCSString = v->GetChar();
174 TString fDCSDataPointValue = fDCSString;
175 //cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
177 return fDCSDataPointValue.Data();
180 //_______________________________________________________________
181 const char* AliGRPDCS::ProcessBoolean() {
182 Bool_t fDCSBool = kTRUE;
184 AliDCSValue *v = 0x0;
186 for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
187 v = (AliDCSValue *)fDCSArray->At(iCount);
188 if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime))
189 AliError(Form("DCS values for the parameter changed within the queried interval"));
190 if (v->GetTimeStamp() > fStopTime) continue;
191 fDCSBool = v->GetBool();
194 TString fDCSDataPointValue = fDCSBool;
196 return fDCSDataPointValue.Data();