Line data Source code
1 : /****************************************************
2 :
3 : AliACORDEDataDCS class
4 : create to make a pointer to the
5 : ACORDE data DCS points
6 :
7 : Author: Pedro Gonzalez (CIEMAT, Madrid)
8 : ACORDE-DCS creator: Mario Ivan Martinez Hdez
9 : <mim@fcfm.buap.mx>
10 :
11 : Last update: June 13th 2014 from Mario RodrÃguez Cahuantzi (CINVESTAV, mrodriguez@fis.cinvestav.mx)
12 : ==> wrong ACORDE aliases for AMANDA fixed (https://alice.its.cern.ch/jira/browse/ALIROOT-5479)
13 : -- old alias: ACO_HV_MODULE[0..59]_VMON
14 : -- new alias: ACO_HV_MODULE[0..59]_INSIDE_VMON ()/ ACO_HV_MODULE[0..59]_OUTSIDE_VMON
15 :
16 : Last update: Fix of coding violations
17 : Mario Rodriguez C. (FCFM-BUAP)
18 : <mrodrigu@mail.cern.ch>
19 :
20 : *****************************************************/
21 : #include "AliACORDEDataDCS.h"
22 :
23 : #include "AliCDBMetaData.h"
24 : #include "AliDCSValue.h"
25 : #include "AliLog.h"
26 :
27 : #include <TTimeStamp.h>
28 : #include <TObjString.h>
29 : #include <TH2F.h>
30 : #include <TProfile.h>
31 : #include <TGraph.h>
32 : #include <TDatime.h>
33 : #include <TStyle.h>
34 : #include <TCanvas.h>
35 :
36 12 : ClassImp(AliACORDEDataDCS)
37 :
38 : //---------------------------------------------------------------
39 0 : AliACORDEDataDCS::AliACORDEDataDCS():
40 0 : TObject(),
41 0 : fRun(0),
42 0 : fStartTime(0),
43 0 : fEndTime(0),
44 0 : fGraphs("TGraph",kNGraphs),
45 0 : fFunc(0),
46 0 : fIsProcessed(kFALSE)
47 0 : {
48 0 : for(int i=0;i<kNHistos;i++)
49 : {
50 0 : fHv[i]=0x0;
51 0 : fMean[i] = fWidth[i] = 0.0;
52 : }
53 :
54 0 : }
55 :
56 : //---------------------------------------------------------------
57 0 : AliACORDEDataDCS::AliACORDEDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime):
58 0 : TObject(),
59 0 : fRun(nRun),
60 0 : fStartTime(startTime),
61 0 : fEndTime(endTime),
62 0 : fGraphs("TGraph",kNGraphs),
63 0 : fFunc(0),
64 0 : fIsProcessed(kFALSE)
65 0 : {
66 : // Init of class AliACORDEDataDCS
67 : // Gettin the TimeStamp an put it on a string
68 :
69 0 : AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
70 : TTimeStamp(startTime).AsString(),
71 : TTimeStamp(endTime).AsString()));
72 :
73 :
74 0 : Init();
75 :
76 0 : }
77 :
78 : //---------------------------------------------------------------
79 0 : AliACORDEDataDCS::~AliACORDEDataDCS() {
80 :
81 0 : for(int i=0;i<kNHistos;i++)
82 : {
83 0 : delete fHv[i]; fHv[i]=0;
84 : }
85 0 : fGraphs.Clear("C");
86 0 : fFunc=0;
87 0 : }
88 : //---------------------------------------------------------------
89 :
90 0 : AliACORDEDataDCS::AliACORDEDataDCS(const AliACORDEDataDCS & data):
91 0 : TObject(),
92 0 : fRun(0),
93 0 : fStartTime(0),
94 0 : fEndTime(0),
95 0 : fGraphs("TGraph",kNGraphs),
96 0 : fFunc(0),
97 0 : fIsProcessed(kFALSE)
98 0 : {
99 : // Setting the initial values
100 : // fRUn, Start of Run, End of Run, IsProcessed
101 :
102 0 : fRun=data.fRun;
103 0 : fStartTime=data.fStartTime;
104 0 : fEndTime=data.fEndTime;
105 0 : fFunc=data.fFunc;
106 0 : fIsProcessed=data.fIsProcessed;
107 :
108 :
109 0 : for(int i=0;i<kNAliases;i++){fAliasNames[i] = data.fAliasNames[i];}
110 :
111 0 : for(int i=0;i<kNHistos;i++)
112 : {
113 0 : fHv[i]=data.fHv[i];
114 0 : fMean[i]=data.fMean[i];
115 0 : fWidth[i]=data.fWidth[i];
116 : }
117 :
118 :
119 :
120 :
121 0 : }
122 : //--------------------------------------------------------------
123 : AliACORDEDataDCS& AliACORDEDataDCS:: operator=(const AliACORDEDataDCS & data) {
124 :
125 : // use ctor copy
126 :
127 0 : if (&data == this) return *this;
128 :
129 0 : new (this) AliACORDEDataDCS(data);
130 0 : return *this;
131 :
132 0 : }
133 : //---------------------------------------------------------------
134 : void AliACORDEDataDCS::ProcessData(TMap& aliasMap)
135 : {
136 : // Process of the data from the aliases DCS-data points
137 :
138 0 : if(!(fHv[0])) Init();
139 :
140 : TObjArray *aliasArr;
141 : AliDCSValue* aValue;
142 :
143 0 : for(int j=0; j<kNAliases; j++)
144 : {
145 0 : aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
146 0 : if(!aliasArr)
147 : {
148 0 : AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
149 0 : continue;
150 : }
151 0 : Introduce(j, aliasArr);
152 :
153 0 : if(aliasArr->GetEntries()<2)
154 : {
155 0 : AliError(Form("Alias %s has just %d entries!",
156 : fAliasNames[j].Data(),aliasArr->GetEntries()));
157 0 : continue;
158 : }
159 :
160 0 : TIter iterarray(aliasArr);
161 :
162 0 : Double_t *time = new Double_t[aliasArr->GetEntries()];
163 0 : Double_t *val = new Double_t[aliasArr->GetEntries()];
164 :
165 : UInt_t ne=0;
166 :
167 0 : while ((aValue = (AliDCSValue*) iterarray.Next()))
168 : {
169 0 : val[ne] = aValue->GetFloat();
170 0 : time[ne] = (Double_t) (aValue->GetTimeStamp());
171 0 : fHv[j]->Fill(val[ne]);
172 0 : ne++;
173 : }
174 :
175 :
176 :
177 0 : CreateGraph(j, aliasArr->GetEntries(), time, val);
178 0 : delete[] val;
179 0 : delete[] time;
180 0 : }
181 :
182 :
183 : // calculate mean and rms of the first two histos
184 0 : for(int i=0;i<kNHistos;i++)
185 : {
186 0 : fMean[i] = fHv[i]->GetMean();
187 0 : fWidth[i] = fHv[i]->GetRMS();
188 : }
189 :
190 :
191 0 : fIsProcessed=kTRUE;
192 :
193 :
194 0 : }
195 :
196 : //---------------------------------------------------------------
197 : void AliACORDEDataDCS::Init()
198 : {
199 : // Init of AliACORDEDatDCS procedure
200 : // Loop over the aliases
201 :
202 0 : TH1::AddDirectory(kFALSE);
203 :
204 0 : fGraphs.SetOwner(1);
205 :
206 0 : TString aliasName;
207 :
208 0 : for(int i=0;i<kNAliases;i++){
209 0 : if (i<kNAliases/2)
210 : {
211 0 : aliasName.Form("ACO_HV_MODULE%02d_INSIDE_VMON",i); //!::: first 60 entries for inside PMT's
212 : }else
213 : {
214 0 : aliasName.Form("ACO_HV_MODULE%02d_OUTSIDE_VMON",i-60); //!::: last 60 entries for outside PMT's
215 : }
216 0 : fAliasNames[i] = aliasName;
217 : }
218 :
219 0 : for(int i=0;i<kNHistos;i++)
220 : {
221 0 : fHv[i] = new TH1F(fAliasNames[i].Data(),fAliasNames[i].Data(), 20, kHvMin, kHvMax);
222 0 : fHv[i]->GetXaxis()->SetTitle("Hv");
223 : }
224 0 : }
225 :
226 : //---------------------------------------------------------------
227 : void AliACORDEDataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)
228 : {
229 :
230 0 : int entries=aliasArr->GetEntries();
231 0 : AliInfo(Form("************ Alias: %s **********",fAliasNames[numAlias].Data()));
232 0 : AliInfo(Form(" %d DP values collected",entries));
233 :
234 0 : }
235 :
236 : //---------------------------------------------------------------
237 : void AliACORDEDataDCS::CreateGraph(int i, int dim, const Double_t *x, const Double_t *y)
238 : {
239 : // Create the plots for the ACORDE DCS
240 :
241 0 : TGraph *gr = new(fGraphs[fGraphs.GetEntriesFast()]) TGraph(dim, x, y);
242 :
243 0 : gr->GetXaxis()->SetTimeDisplay(1);
244 0 : gr->SetTitle(fAliasNames[i].Data());
245 :
246 0 : AliInfo(Form("Array entries: %d",fGraphs.GetEntriesFast()));
247 :
248 :
249 0 : }
250 :
251 : //---------------------------------------------------------------
252 : void AliACORDEDataDCS::Draw(const Option_t* /*option*/)
253 : {
254 : // Draw all histos and graphs
255 :
256 0 : if(!fIsProcessed) return;
257 :
258 0 : TString canvasHistoName;
259 0 : TCanvas *ch[10];
260 :
261 0 : for (int i=0;i<10;i++)
262 : {
263 0 : canvasHistoName.Form("ACO_HV_MODULE");
264 0 : ch[i]=new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600);
265 0 : ch[i]->Divide(2,3);
266 :
267 0 : for(int j=0;j<6;j++)
268 : {
269 0 : ch[i]->cd(j+1);
270 0 : ((TGraph*) fGraphs.UncheckedAt(i*6+j))->SetMarkerStyle(20);
271 0 : ((TGraph*) fGraphs.UncheckedAt(i*6+j))->Draw("alp");
272 : }
273 :
274 : }
275 :
276 :
277 0 : }
278 :
|