]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliGRPDCS.cxx
Splitting of the QA maker into simulation and reconstruction dependent parts (Yves)
[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 #include "Riostream.h"
24 #include "TError.h"
25
26 #include "AliGRPDCS.h"
27 #include "AliDCSValue.h"
28 #include "AliLog.h"
29
30 class TObjString;
31
32 #include <TObjArray.h>
33
34 ClassImp(AliGRPDCS)
35
36 //_______________________________________________________________
37 AliGRPDCS::AliGRPDCS():
38   TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
39   // default constructor
40   
41 }
42
43 //_______________________________________________________________
44 AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
45   TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
46   // constructor
47   fDCSArray = dcsArray;
48 }
49
50 //___________________________________________________________________________
51 AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
52   TObject(grpDcs), 
53   fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime), 
54   fDCSArray(grpDcs.fDCSArray) {
55   //copy constructor
56
57   //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
58 }
59
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!!!");
65     return 0;
66   }
67
68   //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
69   TString fDCSDataPointValue;
70   switch (iType) {
71   case 0: {
72     fDCSDataPointValue += ProcessInt();
73     break;
74   }
75   case 1: {
76     fDCSDataPointValue += ProcessUInt();
77     break;
78   }
79   case 2: {
80     fDCSDataPointValue += ProcessFloat();
81     break;
82   }
83   case 3: {
84     fDCSDataPointValue += ProcessString();
85     break;
86   }
87   case 4: {
88     fDCSDataPointValue += ProcessBoolean();
89     break;
90   }
91   default: break;
92   }//switch
93
94   //cout<<fDCSDataPointValue.Data()<<endl;
95   return fDCSDataPointValue.Data();
96 }
97
98 //_______________________________________________________________
99 const char* AliGRPDCS::ProcessInt() {
100   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
101   Int_t iCounts = 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();
106       iCounts += 1;
107     }
108   }
109   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
110   else fFDCSArrayMean = -10.;
111  
112   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
113
114   return fDCSDataPointValue.Data();
115 }
116
117 //_______________________________________________________________
118 const char* AliGRPDCS::ProcessUInt() {
119   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
120   Int_t iCounts = 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();
125       iCounts += 1;
126     }
127   }
128   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
129   else fFDCSArrayMean = -10.;
130    
131   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
132
133   return fDCSDataPointValue.Data();
134 }
135
136 //_______________________________________________________________
137 const char* AliGRPDCS::ProcessFloat() {
138   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
139   Int_t iCounts = 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();
146       iCounts += 1;
147     }
148   }
149   if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
150   else fFDCSArrayMean = -10.;
151    
152   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
153
154   return fDCSDataPointValue.Data();
155 }
156
157 //_______________________________________________________________
158 const char* AliGRPDCS::ProcessString() {
159   TString fDCSString, fDCSTemp;
160
161   AliDCSValue *v = 0x0;
162
163   //printf("Entries: %d\n",fDCSArray->GetEntries());
164   //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
165   
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();    
172   }
173   
174   TString fDCSDataPointValue = fDCSString;
175   //cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
176
177   return fDCSDataPointValue.Data();
178 }
179
180 //_______________________________________________________________
181 const char* AliGRPDCS::ProcessBoolean() {
182   Bool_t fDCSBool = kTRUE;
183
184   AliDCSValue *v = 0x0;
185
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();    
192   }
193
194   TString fDCSDataPointValue = fDCSBool;
195
196   return fDCSDataPointValue.Data();
197 }