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) {
56 if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
59 //_______________________________________________________________
60 const char* AliGRPDCS::ProcessDCS(Int_t iType) {
61 // process the dcs dps
62 if(!fDCSArray->GetEntries()) {
63 Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
67 //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
68 TString fDCSDataPointValue;
71 fDCSDataPointValue += ProcessInt();
75 fDCSDataPointValue += ProcessUInt();
79 fDCSDataPointValue += ProcessFloat();
83 fDCSDataPointValue += ProcessString();
84 cout<<fDCSDataPointValue.Data()<<endl;
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 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
141 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
142 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
143 fFDCSArraySum += v->GetFloat();
147 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
148 else fFDCSArrayMean = -10.;
150 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
152 return fDCSDataPointValue.Data();
155 //_______________________________________________________________
156 const char* AliGRPDCS::ProcessString() {
157 TString fDCSString, fDCSTemp;
158 Bool_t kFound = kFALSE;
161 AliDCSValue *v = 0x0;
163 printf("Entries: %d\n",fDCSArray->GetEntries());
164 printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
167 v = (AliDCSValue *)fDCSArray->At(iCount);
169 cout<<"Time: "<<v->GetTimeStamp()<<endl;
170 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
172 fDCSTemp = v->GetChar();
173 cout<<"Found: "<<kFound<<" - String: "<<fDCSTemp.Data()<<endl;
174 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
175 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
176 if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
177 fDCSString = v1->GetChar();
178 if(fDCSTemp != fDCSString) AliFatal("DCS data point value changed within the run!!!");
181 TString fDCSDataPointValue = fDCSString;
182 cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
184 return fDCSDataPointValue.Data();
187 //_______________________________________________________________
188 const char* AliGRPDCS::ProcessBoolean() {
189 Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
190 Bool_t kFound = kFALSE;
193 AliDCSValue *v = 0x0;
195 v = (AliDCSValue *)fDCSArray->At(iCount);
197 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
199 fDCSTemp = v->GetBool();
200 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
201 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
202 if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
203 fDCSBool = v1->GetBool();
204 if(fDCSTemp != fDCSBool) AliFatal("DCS data point value changed within the run!!!");
207 TString fDCSDataPointValue = fDCSBool;
209 return fDCSDataPointValue.Data();