]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliGRPDCS.cxx
Correct streamer (Haavard)
[u/mrichter/AliRoot.git] / STEER / AliGRPDCS.cxx
CommitLineData
3dedb44a 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
9edefa04 16/* $Id$ */
17
3dedb44a 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//-----------------------------------------------------------------
23
24#include "AliGRPDCS.h"
3dedb44a 25#include "AliDCSValue.h"
e97cc90e 26#include "AliLog.h"
3dedb44a 27
3dedb44a 28class TObjString;
29
9edefa04 30#include <TObjArray.h>
3dedb44a 31
32ClassImp(AliGRPDCS)
33
34//_______________________________________________________________
35AliGRPDCS::AliGRPDCS():
1f9bf847 36 TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
3dedb44a 37 // default constructor
38
39}
40
41//_______________________________________________________________
1f9bf847 42AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
43 TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
3dedb44a 44 // constructor
3dedb44a 45 fDCSArray = dcsArray;
46}
47
48//___________________________________________________________________________
49AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
50 TObject(grpDcs) {
51 //copy constructor
52
53 if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
54}
55
56//_______________________________________________________________
e97cc90e 57const 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;
61 switch (iType) {
62 case 0: {
63 fDCSDataPointValue += ProcessInt();
64 break;
65 }
66 case 1: {
67 fDCSDataPointValue += ProcessUInt();
68 break;
69 }
70 case 2: {
71 fDCSDataPointValue += ProcessFloat();
72 break;
73 }
74 case 3: {
75 fDCSDataPointValue += ProcessString();
76 break;
77 }
78 case 4: {
79 fDCSDataPointValue += ProcessBoolean();
80 break;
81 }
82 default: break;
83 }//switch
84
85 return fDCSDataPointValue.Data();
86}
87
88//_______________________________________________________________
89const char* AliGRPDCS::ProcessInt() {
90 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 91 Int_t iCounts = 0;
e97cc90e 92 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
93 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 94 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
95 fFDCSArraySum += v->GetInt();
96 iCounts += 1;
97 }
e97cc90e 98 }
1f9bf847 99 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
100 else fFDCSArrayMean = -10.;
101
e97cc90e 102 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
103
104 return fDCSDataPointValue.Data();
105}
106
107//_______________________________________________________________
108const char* AliGRPDCS::ProcessUInt() {
109 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 110 Int_t iCounts = 0;
e97cc90e 111 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
112 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 113 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
114 fFDCSArraySum += v->GetUInt();
115 iCounts += 1;
116 }
e97cc90e 117 }
1f9bf847 118 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
119 else fFDCSArrayMean = -10.;
120
e97cc90e 121 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
122
123 return fDCSDataPointValue.Data();
124}
125
126//_______________________________________________________________
127const char* AliGRPDCS::ProcessFloat() {
3dedb44a 128 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 129 Int_t iCounts = 0;
3dedb44a 130 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
131 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 132 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
133 fFDCSArraySum += v->GetFloat();
134 iCounts += 1;
135 }
3dedb44a 136 }
1f9bf847 137 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
138 else fFDCSArrayMean = -10.;
139
3dedb44a 140 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
141
142 return fDCSDataPointValue.Data();
143}
144
e97cc90e 145//_______________________________________________________________
146const char* AliGRPDCS::ProcessString() {
147 TString fDCSString, fDCSTemp;
1f9bf847 148 Bool_t kFound = kFALSE;
149 Int_t iCount = 0;
150
151 AliDCSValue *v = 0x0;
152 while(!kFound) {
153 v = (AliDCSValue *)fDCSArray->At(iCount);
154 iCount += 1;
155 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
156 }
e97cc90e 157 fDCSTemp = v->GetChar();
158 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
159 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 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!!!");
163 }
e97cc90e 164 }
165 TString fDCSDataPointValue = fDCSString;
166
167 return fDCSDataPointValue.Data();
168}
169
170//_______________________________________________________________
171const char* AliGRPDCS::ProcessBoolean() {
172 Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
1f9bf847 173 Bool_t kFound = kFALSE;
174 Int_t iCount = 0;
175
176 AliDCSValue *v = 0x0;
177 while(!kFound) {
178 v = (AliDCSValue *)fDCSArray->At(iCount);
179 iCount += 1;
180 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
181 }
e97cc90e 182 fDCSTemp = v->GetBool();
183 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
184 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 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!!!");
188 }
e97cc90e 189 }
190 TString fDCSDataPointValue = fDCSBool;
191
192 return fDCSDataPointValue.Data();
193}