]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliGRPDCS.cxx
Compatibility changes due to recent changes in the underlying classes.
[u/mrichter/AliRoot.git] / STEER / AliGRPDCS.cxx
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
16 /* $Id$ */
17
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"
25 #include "AliDCSValue.h"
26 #include "AliLog.h"
27
28 class TObjString;
29
30 #include <TObjArray.h>
31
32 ClassImp(AliGRPDCS)
33
34 //_______________________________________________________________
35 AliGRPDCS::AliGRPDCS():
36   TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
37   // default constructor
38   
39 }
40
41 //_______________________________________________________________
42 AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
43   TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
44   // constructor
45   fDCSArray = dcsArray;
46 }
47
48 //___________________________________________________________________________
49 AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
50   TObject(grpDcs) {
51   //copy constructor
52
53   if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
54 }
55
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;
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 //_______________________________________________________________
89 const char* AliGRPDCS::ProcessInt() {
90   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
91   Int_t iCounts = 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();
96       iCounts += 1;
97     }
98   }
99   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
100   else fFDCSArrayMean = -10.;
101  
102   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
103
104   return fDCSDataPointValue.Data();
105 }
106
107 //_______________________________________________________________
108 const char* AliGRPDCS::ProcessUInt() {
109   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
110   Int_t iCounts = 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();
115       iCounts += 1;
116     }
117   }
118   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
119   else fFDCSArrayMean = -10.;
120    
121   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
122
123   return fDCSDataPointValue.Data();
124 }
125
126 //_______________________________________________________________
127 const char* AliGRPDCS::ProcessFloat() {
128   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
129   Int_t iCounts = 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();
134       iCounts += 1;
135     }
136   }
137   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
138   else fFDCSArrayMean = -10.;
139    
140   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
141
142   return fDCSDataPointValue.Data();
143 }
144
145 //_______________________________________________________________
146 const char* AliGRPDCS::ProcessString() {
147   TString fDCSString, fDCSTemp;
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   }
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!!!");
163     }
164   }
165   TString fDCSDataPointValue = fDCSString;
166
167   return fDCSDataPointValue.Data();
168 }
169
170 //_______________________________________________________________
171 const char* AliGRPDCS::ProcessBoolean() {
172   Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
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   }
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!!!");
188     }
189   }
190   TString fDCSDataPointValue = fDCSBool;
191
192   return fDCSDataPointValue.Data();
193 }