]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliGRPDCS.cxx
First version of kdtree (Alexander, Marian)
[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//-----------------------------------------------------------------
d18640d0 23#include "Riostream.h"
24#include "TError.h"
3dedb44a 25
26#include "AliGRPDCS.h"
3dedb44a 27#include "AliDCSValue.h"
e97cc90e 28#include "AliLog.h"
3dedb44a 29
3dedb44a 30class TObjString;
31
9edefa04 32#include <TObjArray.h>
3dedb44a 33
34ClassImp(AliGRPDCS)
35
36//_______________________________________________________________
37AliGRPDCS::AliGRPDCS():
1f9bf847 38 TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
3dedb44a 39 // default constructor
40
41}
42
43//_______________________________________________________________
1f9bf847 44AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
45 TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
3dedb44a 46 // constructor
3dedb44a 47 fDCSArray = dcsArray;
48}
49
50//___________________________________________________________________________
51AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
d18640d0 52 TObject(grpDcs),
53 fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime) {
3dedb44a 54 //copy constructor
55
56 if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
57}
58
59//_______________________________________________________________
e97cc90e 60const char* AliGRPDCS::ProcessDCS(Int_t iType) {
61 // process the dcs dps
d18640d0 62 if(!fDCSArray->GetEntries()) {
63 Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
64 return 0;
65 }
66
e97cc90e 67 //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
68 TString fDCSDataPointValue;
69 switch (iType) {
70 case 0: {
71 fDCSDataPointValue += ProcessInt();
72 break;
73 }
74 case 1: {
75 fDCSDataPointValue += ProcessUInt();
76 break;
77 }
78 case 2: {
79 fDCSDataPointValue += ProcessFloat();
80 break;
81 }
82 case 3: {
83 fDCSDataPointValue += ProcessString();
d18640d0 84 cout<<fDCSDataPointValue.Data()<<endl;
e97cc90e 85 break;
86 }
87 case 4: {
88 fDCSDataPointValue += ProcessBoolean();
89 break;
90 }
91 default: break;
92 }//switch
93
d18640d0 94 cout<<fDCSDataPointValue.Data()<<endl;
e97cc90e 95 return fDCSDataPointValue.Data();
96}
97
98//_______________________________________________________________
99const char* AliGRPDCS::ProcessInt() {
100 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 101 Int_t iCounts = 0;
e97cc90e 102 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
103 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 104 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
105 fFDCSArraySum += v->GetInt();
106 iCounts += 1;
107 }
e97cc90e 108 }
1f9bf847 109 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
110 else fFDCSArrayMean = -10.;
111
e97cc90e 112 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
113
114 return fDCSDataPointValue.Data();
115}
116
117//_______________________________________________________________
118const char* AliGRPDCS::ProcessUInt() {
119 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 120 Int_t iCounts = 0;
e97cc90e 121 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
122 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 123 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
124 fFDCSArraySum += v->GetUInt();
125 iCounts += 1;
126 }
e97cc90e 127 }
1f9bf847 128 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
129 else fFDCSArrayMean = -10.;
130
e97cc90e 131 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
132
133 return fDCSDataPointValue.Data();
134}
135
136//_______________________________________________________________
137const char* AliGRPDCS::ProcessFloat() {
3dedb44a 138 Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
1f9bf847 139 Int_t iCounts = 0;
3dedb44a 140 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
141 AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 142 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
143 fFDCSArraySum += v->GetFloat();
144 iCounts += 1;
145 }
3dedb44a 146 }
1f9bf847 147 if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
148 else fFDCSArrayMean = -10.;
149
3dedb44a 150 TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
151
152 return fDCSDataPointValue.Data();
153}
154
e97cc90e 155//_______________________________________________________________
156const char* AliGRPDCS::ProcessString() {
157 TString fDCSString, fDCSTemp;
1f9bf847 158 Bool_t kFound = kFALSE;
159 Int_t iCount = 0;
160
161 AliDCSValue *v = 0x0;
d18640d0 162
163 printf("Entries: %d\n",fDCSArray->GetEntries());
164 printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
165
1f9bf847 166 while(!kFound) {
167 v = (AliDCSValue *)fDCSArray->At(iCount);
168 iCount += 1;
d18640d0 169 cout<<"Time: "<<v->GetTimeStamp()<<endl;
1f9bf847 170 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
171 }
e97cc90e 172 fDCSTemp = v->GetChar();
d18640d0 173 cout<<"Found: "<<kFound<<" - String: "<<fDCSTemp.Data()<<endl;
e97cc90e 174 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
175 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 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!!!");
179 }
e97cc90e 180 }
181 TString fDCSDataPointValue = fDCSString;
d18640d0 182 cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
e97cc90e 183
184 return fDCSDataPointValue.Data();
185}
186
187//_______________________________________________________________
188const char* AliGRPDCS::ProcessBoolean() {
189 Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
1f9bf847 190 Bool_t kFound = kFALSE;
191 Int_t iCount = 0;
192
193 AliDCSValue *v = 0x0;
194 while(!kFound) {
195 v = (AliDCSValue *)fDCSArray->At(iCount);
196 iCount += 1;
197 if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
198 }
e97cc90e 199 fDCSTemp = v->GetBool();
200 for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
201 AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
1f9bf847 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!!!");
205 }
e97cc90e 206 }
207 TString fDCSDataPointValue = fDCSBool;
208
209 return fDCSDataPointValue.Data();
210}