source: trunk/MagicSoft/Mars/macros/CCDataCheck.C@ 3214

Last change on this file since 3214 was 3214, checked in by reyes, 21 years ago
*** empty log message ***
File size: 46.8 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Raquel de los Reyes, 02/2004 <mailto:reyes@gae.ucm.es>
19!
20! Copyright: MAGIC Software Development, 2000-2004
21!
22!
23\* ======================================================================== *//////////////////////////////////////////////////////////////////////////////
24//
25// This macro made the check of the central control files (.rep files).
26// It displays 9 tabs:
27// - Drive system
28// - HV of power supplies and HV settings
29// - DC of power supplies and several camera related status plots
30// - LV power supplies
31// - Cooling system
32// - Trigger system
33// - Trigger macrocells
34// - Weather station
35//
36////////////////////////////////////////////////////////////////////////////
37
38void CCDataCheck(const TString filename="CC_2004_02_11.root", const TString directory="../")
39{
40
41 //
42 // Check of the raw files
43 //
44// MStatusDisplay *d = new MStatusDisplay;
45// d->SetTitle(filename);
46// d->SetLogStream(&gLog, kTRUE); // Disables output to stdout
47
48 //
49 // Create a empty Parameter List and an empty Task List
50 // The tasklist is identified in the eventloop by its name
51 //
52 MParList plist;
53
54 MTaskList tlist;
55 plist.AddToList(&tlist);
56
57 //
58 // Now setup the tasks and tasklist:
59 // ---------------------------------
60 //
61
62 // Set all the MHVsTime classes:
63 // Drive system
64 MHVsTime hZd("MReportDrive.fNominalZd");
65 hZd.SetName("Zd");
66 MHVsTime hAz("MReportDrive.fNominalAz");
67 hAz.SetName("Az");
68 MHVsTime hDState("MReportDrive.fState");
69 hDState.SetName("State");
70 // HV power supplies
71 MHVsTime hHVA("MCameraHV.fVoltageA");
72 hHVA.SetName("HVA");
73 MHVsTime hHVB("MCameraHV.fVoltageB");
74 hHVB.SetName("HVB");
75 MHVsTime hCA("MCameraHV.fCurrentA");
76 hCA.SetName("CA");
77 MHVsTime hCB("MCameraHV.fCurrentB");
78 hCB.SetName("CB");
79 // LV power supplies
80 MHVsTime hLVTemp("MCameraLV.fTemp");
81 hLVTemp.SetName("LVTemp");
82 MHVsTime hLVHum("MCameraLV.fHumidity");
83 hLVHum.SetName("LVHum");
84 MHVsTime hLVStatus("MCameraHV.fStatus");
85 hLVStatus.SetName("LVStatus");
86 MHVsTime hLVRPS("MCameraLV.fRequestPowerSupply");
87 hLVRPS.SetName("LVRPS");
88 // Cooling system
89 MHVsTime hTCenter("MCameraCooling.fTempCenter");
90 hTCenter.SetName("TCenter");
91 MHVsTime hTWall("MCameraCooling.fTempWall");
92 hTWall.SetName("TWall");
93 MHVsTime hTWater("MCameraCooling.fTempWater");
94 hTWater.SetName("TWater");
95 MHVsTime hTOptLink("MCameraCooling.fTempOptLink");
96 hTOptLink.SetName("TOptLink");
97 MHVsTime hHWall("MCameraCooling.fHumWall");
98 hHWall.SetName("HWall");
99 MHVsTime hHCenter("MCameraCooling.fHumCenter");
100 hHCenter.SetName("HCenter");
101 // Weather station
102 MHVsTime hCCHum("MReportCC.fHumidity");
103 hCCHum.SetName("CCHum");
104 MHVsTime hCCTemp("MReportCC.fTemperature");
105 hCCTemp.SetName("CCTemp");
106 MHVsTime hCCWS("MReportCC.fWindSpeed");
107 hCCWS.SetName("CCWS");
108 MHVsTime hCCSR("MReportCC.fSolarRadiation");
109 hCCSR.SetName("CCSR");
110 // Trigger system
111 MHVsTime hTrigBL2("MReportTrigger.fL2BeforePrescaler");
112 hTrigBL2.SetName("TrigBL2");
113 MHVsTime hTrigAL2("MReportTrigger.fL2AfterPrescaler");
114 hTrigAL2.SetName("TrigAL2");
115 MHVsTime hTrigStatus("MReportTrigger.fState");
116 hTrigStatus.SetName("TrigStatus");
117 // Camera status
118 MHVsTime hCamStatus("MReportCamera.fState");
119 hCamStatus.SetName("CamStatus");
120 MHVsTime hCamSentStatus("MReportCamera.fStatus");
121 hCamSentStatus.SetName("CamSentStatus");
122 MHVsTime hCamStatusDC("MReportCamera.fStatusDC");
123 hCamStatusDC.SetName("CamDCStatus");
124 MHVsTime hHVStatus("MCameraHV.fStatus");
125 hHVStatus.SetName("HVStatus");
126 MHVsTime hLidsStatus("MCameraLids.fStatus");
127 hLidsStatus.SetName("LidsStatus");
128 MHVsTime hCoolStatus("MCameraCooling.fStatus");
129 hCoolStatus.SetName("CoolingStatus");
130 MHVsTime hCamMean("MCameraHV.fMean");
131 hCamMean.SetName("CameraMean");
132
133 // Reads the trees of the root file and the analysed branches
134 MReadReports read;
135 read.AddTree("Drive");
136 read.AddTree("Camera");
137 read.AddTree("CC");
138 read.AddTree("Trigger");
139 read.AddFile(directory+filename); // after the reading of the trees!!!
140 read.AddToBranchList("MReportDrive.*");
141 read.AddToBranchList("MCameraHV.*");
142 read.AddToBranchList("MCameraLV.*");
143 read.AddToBranchList("MCameraCooling.*");
144 read.AddToBranchList("MReportCC.*");
145 read.AddToBranchList("MReportTrigger.*");
146 read.AddToBranchList("MReportCamera.*");
147 read.AddToBranchList("MCameraLids.*");
148
149 MGeomApply geomapl;
150 tlist.AddToList(&geomapl);
151
152 // Set of MHCamEvents classes
153 MHCamEvent HVdisplay("CamHV","Camera mean HV settings");
154 HVdisplay.SetBit(MHCamera::kVariance);
155 plist.AddToList(&HVdisplay);
156
157 // Set of MHPixVsTime classes (Trigger macroscells)
158 MHPixVsTime htrigmc1(0,"TrigMacrocell1");
159 htrigmc1.SetNameTime("MTimeTrigger");
160 plist.AddToList(&htrigmc1);
161 MHPixVsTime htrigmc2(1,"TrigMacrocell2");
162 htrigmc2.SetNameTime("MTimeTrigger");
163 plist.AddToList(&htrigmc2);
164 MHPixVsTime htrigmc3(2,"TrigMacrocell3");
165 htrigmc3.SetNameTime("MTimeTrigger");
166 plist.AddToList(&htrigmc3);
167 MHPixVsTime htrigmc4(3,"TrigMacrocell4");
168 htrigmc4.SetNameTime("MTimeTrigger");
169 plist.AddToList(&htrigmc4);
170 MHPixVsTime htrigmc5(4,"TrigMacrocell5");
171 htrigmc5.SetNameTime("MTimeTrigger");
172 plist.AddToList(&htrigmc5);
173 MHPixVsTime htrigmc6(5,"TrigMacrocell6");
174 htrigmc6.SetNameTime("MTimeTrigger");
175 plist.AddToList(&htrigmc6);
176 MHPixVsTime htrigmc7(6,"TrigMacrocell7");
177 htrigmc7.SetNameTime("MTimeTrigger");
178 plist.AddToList(&htrigmc7);
179 MHPixVsTime htrigmc8(7,"TrigMacrocell8");
180 htrigmc8.SetNameTime("MTimeTrigger");
181 plist.AddToList(&htrigmc8);
182 MHPixVsTime htrigmc9(8,"TrigMacrocell9");
183 htrigmc9.SetNameTime("MTimeTrigger");
184 plist.AddToList(&htrigmc9);
185 MHPixVsTime htrigmc10(9,"TrigMacrocell10");
186 htrigmc10.SetNameTime("MTimeTrigger");
187 plist.AddToList(&htrigmc10);
188 MHPixVsTime htrigmc11(10,"TrigMacrocell11");
189 htrigmc11.SetNameTime("MTimeTrigger");
190 plist.AddToList(&htrigmc11);
191 MHPixVsTime htrigmc12(11,"TrigMacrocell12");
192 htrigmc12.SetNameTime("MTimeTrigger");
193 plist.AddToList(&htrigmc12);
194 MHPixVsTime htrigmc13(12,"TrigMacrocell13");
195 htrigmc13.SetNameTime("MTimeTrigger");
196 plist.AddToList(&htrigmc13);
197 MHPixVsTime htrigmc14(13,"TrigMacrocell14");
198 htrigmc14.SetNameTime("MTimeTrigger");
199 plist.AddToList(&htrigmc14);
200 MHPixVsTime htrigmc15(14,"TrigMacrocell15");
201 htrigmc15.SetNameTime("MTimeTrigger");
202 plist.AddToList(&htrigmc15);
203 MHPixVsTime htrigmc16(15,"TrigMacrocell16");
204 htrigmc16.SetNameTime("MTimeTrigger");
205 plist.AddToList(&htrigmc16);
206 MHPixVsTime htrigmc17(16,"TrigMacrocell17");
207 htrigmc17.SetNameTime("MTimeTrigger");
208 plist.AddToList(&htrigmc17);
209 MHPixVsTime htrigmc18(17,"TrigMacrocell18");
210 htrigmc18.SetNameTime("MTimeTrigger");
211 plist.AddToList(&htrigmc18);
212 MHPixVsTime htrigmc19(18,"TrigMacrocell19");
213 htrigmc19.SetNameTime("MTimeTrigger");
214 plist.AddToList(&htrigmc19);
215
216 // Set of MH3 classes
217 MH3 hError("MReportDrive.GetAbsError*60");
218 hError.SetName("DeltaH");
219 MBinning bins("BinningDeltaH");
220 bins.SetEdges(18, 0, 3.6);
221 plist.AddToList(&bins);
222 MH3 hError2("MReportDrive.fNominalZd","MReportDrive.GetAbsError*60");
223 hError2.SetName("DeltaHvsZd");
224 MBinning bins2("BinningDeltaHvsZdX");
225 MBinning bins3("BinningDeltaHvsZdY");
226 bins2.SetEdges(90, 0, 90);
227 bins3.SetEdges(18, 0, 3.6);
228 plist.AddToList(&bins2);
229 plist.AddToList(&bins3);
230 MH3 hTempOptLink("MCameraCooling.fTempOptLink");
231 hTempOptLink.SetName("TOptLink");
232 MBinning bins4("BinningTOptLinkX");
233 bins4.SetEdges(50, 0, 50);
234 plist.AddToList(&bins4);
235 MH3 hTrigZd("MReportDrive.fNominalZd","MReportTrigger.fL2AfterPrescaler");
236 hTrigZd.SetName("TrigZd");
237 MBinning bins5("BinningTrigZdX");
238 bins5.SetEdges(90, 0, 90);
239 plist.AddToList(&bins5);
240 MBinning bins6("BinningTrigZdY");
241 bins6.SetEdges(100, 0, 1500);
242 plist.AddToList(&bins6);
243
244
245 // Fill all the MH classes defined before
246 MFillH fillZd(&hZd, "MTimeDrive");
247 MFillH fillAz(&hAz, "MTimeDrive");
248 MFillH fillError(&hError);
249 MFillH fillDState(&hDState, "MTimeDrive");
250 MFillH fillError2(&hError2);
251 MFillH fillHVA(&hHVA, "MTimeCamera");
252 MFillH fillHVB(&hHVB, "MTimeCamera");
253 MFillH fillCA(&hCA, "MTimeCamera");
254 MFillH fillCB(&hCB, "MTimeCamera");
255 MFillH fillLVTemp(&hLVTemp, "MTimeCamera");
256 MFillH fillLVHum(&hLVHum, "MTimeCamera");
257 MFillH fillLVStatus(&hLVStatus, "MTimeCamera");
258 MFillH fillLVRPS(&hLVRPS, "MTimeCamera");
259 MFillH fillTCenter(&hTCenter, "MTimeCamera");
260 MFillH fillTWall(&hTWall, "MTimeCamera");
261 MFillH fillTWater(&hTWater, "MTimeCamera");
262 MFillH fillTOptLink(&hTOptLink, "MTimeCamera");
263 MFillH fillTempOptLink(&hTempOptLink);
264 MFillH fillHWall(&hHWall, "MTimeCamera");
265 MFillH fillHCenter(&hHCenter, "MTimeCamera");
266 MFillH fillCCHum(&hCCHum, "MTimeCC");
267 MFillH fillCCTemp(&hCCTemp, "MTimeCC");
268 MFillH fillCCWS(&hCCWS, "MTimeCC");
269 MFillH fillCCSR(&hCCSR, "MTimeCC");
270 MFillH fillTrigBL2(&hTrigBL2, "MTimeTrigger");
271 MFillH fillTrigAL2(&hTrigAL2, "MTimeTrigger");
272 MFillH fillTrigStatus(&hTrigStatus, "MTimeTrigger");
273 MFillH fillTrigZd(&hTrigZd);
274 MFillH fillCamStatus(&hCamStatus,"MTimeCamera");
275 MFillH fillCamSentStatus(&hCamSentStatus,"MTimeCamera");
276 MFillH fillCamStatusDC(&hCamStatusDC, "MTimeCamera");
277 MFillH fillHVStatus(&hHVStatus, "MTimeCamera");
278 MFillH fillLidsStatus(&hLidsStatus, "MTimeCamera");
279 MFillH fillCoolStatus(&hCoolStatus, "MTimeCamera");
280 MFillH filltrigmc1("TrigMacrocell1","MReportTrigger");
281 MFillH filltrigmc2("TrigMacrocell2","MReportTrigger");
282 MFillH filltrigmc3("TrigMacrocell3","MReportTrigger");
283 MFillH filltrigmc4("TrigMacrocell4","MReportTrigger");
284 MFillH filltrigmc5("TrigMacrocell5","MReportTrigger");
285 MFillH filltrigmc6("TrigMacrocell6","MReportTrigger");
286 MFillH filltrigmc7("TrigMacrocell7","MReportTrigger");
287 MFillH filltrigmc8("TrigMacrocell8","MReportTrigger");
288 MFillH filltrigmc9("TrigMacrocell9","MReportTrigger");
289 MFillH filltrigmc10("TrigMacrocell10","MReportTrigger");
290 MFillH filltrigmc11("TrigMacrocell11","MReportTrigger");
291 MFillH filltrigmc12("TrigMacrocell12","MReportTrigger");
292 MFillH filltrigmc13("TrigMacrocell13","MReportTrigger");
293 MFillH filltrigmc14("TrigMacrocell14","MReportTrigger");
294 MFillH filltrigmc15("TrigMacrocell15","MReportTrigger");
295 MFillH filltrigmc16("TrigMacrocell16","MReportTrigger");
296 MFillH filltrigmc17("TrigMacrocell17","MReportTrigger");
297 MFillH filltrigmc18("TrigMacrocell18","MReportTrigger");
298 MFillH filltrigmc19("TrigMacrocell19","MReportTrigger");
299 MFillH fillcammean(&hCamMean,"MTimeCamera");
300 MFillH fillHVD(&HVdisplay,"MCameraHV");
301
302 // Do not display the result given by the default draw function
303 fillZd.SetBit(MFillH::kDoNotDisplay);
304 fillAz.SetBit(MFillH::kDoNotDisplay);
305 fillError.SetBit(MFillH::kDoNotDisplay);
306 fillDState.SetBit(MFillH::kDoNotDisplay);
307 fillError2.SetBit(MFillH::kDoNotDisplay);
308 fillHVA.SetBit(MFillH::kDoNotDisplay);
309 fillHVB.SetBit(MFillH::kDoNotDisplay);
310 fillCA.SetBit(MFillH::kDoNotDisplay);
311 fillCB.SetBit(MFillH::kDoNotDisplay);
312 fillLVTemp.SetBit(MFillH::kDoNotDisplay);
313 fillLVHum.SetBit(MFillH::kDoNotDisplay);
314 fillLVStatus.SetBit(MFillH::kDoNotDisplay);
315 fillLVRPS.SetBit(MFillH::kDoNotDisplay);
316 fillTCenter.SetBit(MFillH::kDoNotDisplay);
317 fillTWall.SetBit(MFillH::kDoNotDisplay);
318 fillTWater.SetBit(MFillH::kDoNotDisplay);
319 fillTOptLink.SetBit(MFillH::kDoNotDisplay);
320 fillTempOptLink.SetBit(MFillH::kDoNotDisplay);
321 fillHWall.SetBit(MFillH::kDoNotDisplay);
322 fillHCenter.SetBit(MFillH::kDoNotDisplay);
323 fillCCHum.SetBit(MFillH::kDoNotDisplay);
324 fillCCTemp.SetBit(MFillH::kDoNotDisplay);
325 fillCCWS.SetBit(MFillH::kDoNotDisplay);
326 fillCCSR.SetBit(MFillH::kDoNotDisplay);
327 fillTrigBL2.SetBit(MFillH::kDoNotDisplay);
328 fillTrigAL2.SetBit(MFillH::kDoNotDisplay);
329 fillTrigStatus.SetBit(MFillH::kDoNotDisplay);
330 fillTrigZd.SetBit(MFillH::kDoNotDisplay);
331 fillCamStatus.SetBit(MFillH::kDoNotDisplay);
332 fillCamSentStatus.SetBit(MFillH::kDoNotDisplay);
333 fillCamStatusDC.SetBit(MFillH::kDoNotDisplay);
334 fillHVStatus.SetBit(MFillH::kDoNotDisplay);
335 fillLidsStatus.SetBit(MFillH::kDoNotDisplay);
336 fillCoolStatus.SetBit(MFillH::kDoNotDisplay);
337 filltrigmc1.SetBit(MFillH::kDoNotDisplay);
338 filltrigmc2.SetBit(MFillH::kDoNotDisplay);
339 filltrigmc3.SetBit(MFillH::kDoNotDisplay);
340 filltrigmc4.SetBit(MFillH::kDoNotDisplay);
341 filltrigmc5.SetBit(MFillH::kDoNotDisplay);
342 filltrigmc6.SetBit(MFillH::kDoNotDisplay);
343 filltrigmc7.SetBit(MFillH::kDoNotDisplay);
344 filltrigmc8.SetBit(MFillH::kDoNotDisplay);
345 filltrigmc9.SetBit(MFillH::kDoNotDisplay);
346 filltrigmc10.SetBit(MFillH::kDoNotDisplay);
347 filltrigmc11.SetBit(MFillH::kDoNotDisplay);
348 filltrigmc12.SetBit(MFillH::kDoNotDisplay);
349 filltrigmc13.SetBit(MFillH::kDoNotDisplay);
350 filltrigmc14.SetBit(MFillH::kDoNotDisplay);
351 filltrigmc15.SetBit(MFillH::kDoNotDisplay);
352 filltrigmc16.SetBit(MFillH::kDoNotDisplay);
353 filltrigmc17.SetBit(MFillH::kDoNotDisplay);
354 filltrigmc18.SetBit(MFillH::kDoNotDisplay);
355 filltrigmc19.SetBit(MFillH::kDoNotDisplay);
356 fillcammean.SetBit(MFillH::kDoNotDisplay);
357 fillHVD.SetBit(MFillH::kDoNotDisplay);
358
359 // Skip the fill function is there is no tree entries
360 fillZd.SetBit(MFillH::kCanSkip);
361 fillAz.SetBit(MFillH::kCanSkip);
362 fillError.SetBit(MFillH::kCanSkip);
363 fillDState.SetBit(MFillH::kCanSkip);
364 fillError2.SetBit(MFillH::kCanSkip);
365 fillHVA.SetBit(MFillH::kCanSkip);
366 fillHVB.SetBit(MFillH::kCanSkip);
367 fillCA.SetBit(MFillH::kCanSkip);
368 fillCB.SetBit(MFillH::kCanSkip);
369 fillLVTemp.SetBit(MFillH::kCanSkip);
370 fillLVHum.SetBit(MFillH::kCanSkip);
371 fillLVStatus.SetBit(MFillH::kCanSkip);
372 fillLVRPS.SetBit(MFillH::kCanSkip);
373 fillTCenter.SetBit(MFillH::kCanSkip);
374 fillTWall.SetBit(MFillH::kCanSkip);
375 fillTWater.SetBit(MFillH::kCanSkip);
376 fillTOptLink.SetBit(MFillH::kCanSkip);
377 fillTempOptLink.SetBit(MFillH::kCanSkip);
378 fillHWall.SetBit(MFillH::kCanSkip);
379 fillHCenter.SetBit(MFillH::kCanSkip);
380 fillCCHum.SetBit(MFillH::kCanSkip);
381 fillCCTemp.SetBit(MFillH::kCanSkip);
382 fillCCWS.SetBit(MFillH::kCanSkip);
383 fillCCSR.SetBit(MFillH::kCanSkip);
384 fillTrigBL2.SetBit(MFillH::kCanSkip);
385 fillTrigAL2.SetBit(MFillH::kCanSkip);
386 fillTrigStatus.SetBit(MFillH::kCanSkip);
387 fillTrigZd.SetBit(MFillH::kCanSkip);
388 fillCamStatus.SetBit(MFillH::kCanSkip);
389 fillCamSentStatus.SetBit(MFillH::kCanSkip);
390 fillCamStatusDC.SetBit(MFillH::kCanSkip);
391 fillHVStatus.SetBit(MFillH::kCanSkip);
392 fillLidsStatus.SetBit(MFillH::kCanSkip);
393 fillCoolStatus.SetBit(MFillH::kCanSkip);
394 filltrigmc1.SetBit(MFillH::kCanSkip);
395 filltrigmc2.SetBit(MFillH::kCanSkip);
396 filltrigmc3.SetBit(MFillH::kCanSkip);
397 filltrigmc4.SetBit(MFillH::kCanSkip);
398 filltrigmc5.SetBit(MFillH::kCanSkip);
399 filltrigmc6.SetBit(MFillH::kCanSkip);
400 filltrigmc7.SetBit(MFillH::kCanSkip);
401 filltrigmc8.SetBit(MFillH::kCanSkip);
402 filltrigmc9.SetBit(MFillH::kCanSkip);
403 filltrigmc10.SetBit(MFillH::kCanSkip);
404 filltrigmc11.SetBit(MFillH::kCanSkip);
405 filltrigmc12.SetBit(MFillH::kCanSkip);
406 filltrigmc13.SetBit(MFillH::kCanSkip);
407 filltrigmc14.SetBit(MFillH::kCanSkip);
408 filltrigmc15.SetBit(MFillH::kCanSkip);
409 filltrigmc16.SetBit(MFillH::kCanSkip);
410 filltrigmc17.SetBit(MFillH::kCanSkip);
411 filltrigmc18.SetBit(MFillH::kCanSkip);
412 filltrigmc19.SetBit(MFillH::kCanSkip);
413 fillcammean.SetBit(MFillH::kCanSkip);
414 fillHVD.SetBit(MFillH::kCanSkip);
415
416 // Add all the task to the task list
417 tlist.AddToList(&read);
418 tlist.AddToList(&fillZd, "Drive");
419 tlist.AddToList(&fillAz, "Drive");
420 tlist.AddToList(&fillError, "Drive");
421 tlist.AddToList(&fillDState, "Drive");
422 tlist.AddToList(&fillError2, "Drive");
423 tlist.AddToList(&fillHVA, "Camera");
424 tlist.AddToList(&fillHVB, "Camera");
425 tlist.AddToList(&fillCA, "Camera");
426 tlist.AddToList(&fillCB, "Camera");
427 tlist.AddToList(&fillLVTemp, "Camera");
428 tlist.AddToList(&fillLVHum, "Camera");
429 tlist.AddToList(&fillLVStatus, "Camera");
430 tlist.AddToList(&fillLVRPS, "Camera");
431 tlist.AddToList(&fillTCenter, "Camera");
432 tlist.AddToList(&fillTWall, "Camera");
433 tlist.AddToList(&fillTWater, "Camera");
434 tlist.AddToList(&fillTOptLink, "Camera");
435 tlist.AddToList(&fillTempOptLink, "Camera");
436 tlist.AddToList(&fillHWall, "Camera");
437 tlist.AddToList(&fillHCenter, "Camera");
438 tlist.AddToList(&fillCCHum, "CC");
439 tlist.AddToList(&fillCCTemp, "CC");
440 tlist.AddToList(&fillCCWS, "CC");
441 tlist.AddToList(&fillCCSR, "CC");
442 tlist.AddToList(&fillTrigBL2, "Trigger");
443 tlist.AddToList(&fillTrigAL2, "Trigger");
444 tlist.AddToList(&fillTrigStatus, "Trigger");
445 tlist.AddToList(&fillTrigZd);
446 tlist.AddToList(&fillCamStatus, "Camera");
447 tlist.AddToList(&fillCamSentStatus, "Camera");
448 tlist.AddToList(&fillCamStatusDC,"Camera");
449 tlist.AddToList(&fillHVStatus,"Camera");
450 tlist.AddToList(&fillLidsStatus,"Camera");
451 tlist.AddToList(&fillCoolStatus,"Camera");
452 tlist.AddToList(&filltrigmc1, "Trigger");
453 tlist.AddToList(&filltrigmc2, "Trigger");
454 tlist.AddToList(&filltrigmc3, "Trigger");
455 tlist.AddToList(&filltrigmc4, "Trigger");
456 tlist.AddToList(&filltrigmc5, "Trigger");
457 tlist.AddToList(&filltrigmc6, "Trigger");
458 tlist.AddToList(&filltrigmc7, "Trigger");
459 tlist.AddToList(&filltrigmc8, "Trigger");
460 tlist.AddToList(&filltrigmc9, "Trigger");
461 tlist.AddToList(&filltrigmc10, "Trigger");
462 tlist.AddToList(&filltrigmc11, "Trigger");
463 tlist.AddToList(&filltrigmc12, "Trigger");
464 tlist.AddToList(&filltrigmc13, "Trigger");
465 tlist.AddToList(&filltrigmc14, "Trigger");
466 tlist.AddToList(&filltrigmc15, "Trigger");
467 tlist.AddToList(&filltrigmc16, "Trigger");
468 tlist.AddToList(&filltrigmc17, "Trigger");
469 tlist.AddToList(&filltrigmc18, "Trigger");
470 tlist.AddToList(&filltrigmc19, "Trigger");
471 tlist.AddToList(&fillcammean, "Camera");
472 tlist.AddToList(&fillHVD);
473
474 //
475 // Create and setup the eventloop
476 //
477 MEvtLoop evtloop;
478 evtloop.SetParList(&plist);
479// evtloop.SetDisplay(d);
480
481 //
482 // Execute your analysis
483 //
484 if (!evtloop.Eventloop())
485 return;
486
487 tlist.PrintStatistics();
488
489 gStyle->SetPadGridX(kTRUE);
490 gStyle->SetPadGridY(kTRUE);
491 gStyle->SetCanvasColor(kWhite);
492 MHVsTime *clone1;
493 TGraph *g;
494 TH1 *hist;
495 TAxis *axey;
496 TAxis *axex;
497 MH3 *mh3;
498 MHPixVsTime *pixclone1;
499 MHCamera *Sum;
500 //
501 // Drive report (pointing.C from T. Bretz)
502 //
503 if ((d = evtloop.GetDisplay()))
504 TCanvas &c1 = d.AddTab("DRIVE SYSTEM");
505 else
506 TCanvas *c1 = new TCanvas();
507 // ************* Plot the telescope tracking positions on the sky ***********
508 TGraph *g1 = hZd.GetGraph();
509 TGraph *g2 = hAz.GetGraph();
510 TPad *p = new TPad("", "",0,0.05,0.6,0.95);
511 p->Draw();
512 p->cd();
513 gPad->SetTheta(-90);
514 gPad->SetPhi(90);
515 gPad->SetBorderMode(0);
516 gStyle->SetOptStat(0);
517 TH2F h("pol", "Telescope Tracking Positions on the Sky", 16, 0, 1, 9, 0, 1);
518 h.DrawClone("surf1pol");
519 gPad->Modified();
520 gPad->Update();
521 TView *view = gPad->GetView();
522 if (!view)
523 {
524 cout << "No View!" << endl;
525 return;
526 }
527 Double_t *zd=g1->GetY();
528 Double_t *az=g2->GetY();
529 Double_t old[2] = {0,0};
530 for (int i=0; i<g1->GetN(); i++)
531 {
532 az[i] += 180;
533 az[i] *= TMath::Pi()/180;
534 Double_t x[3] = { zd[i]*cos(az[i])/90, zd[i]*sin(az[i])/90, 0};
535 Double_t y[3];
536 view->WCtoNDC(x, y);
537 if (old[0]!=0 && old[1]!=1)
538 {
539 TLine *l = new TLine(y[0], y[1], old[0], old[1]);
540 l->SetLineColor(kBlue);
541 l->Draw();
542 }
543 TMarker *m = new TMarker(y[0], y[1], kFullDotMedium);
544 m->SetMarkerColor(i==g1->GetN()-1 ? kGreen : kRed);
545 m->Draw();
546 old[0] = y[0];
547 old[1] = y[1];
548 }
549 // ---------------------- Control deviation of the motors -------------------
550 c1->cd();
551 p = new TPad("", "", 0.6, 0, 1, 0.29);
552 p->Draw();
553 p->cd();
554 gStyle->SetOptStat(1110);
555 gStyle->SetStatFormat(".2g");
556 mh3 = (MH3*)hError.DrawClone("nonew");
557 mh3->GetHist()->SetXTitle("\\Delta [arcmin]");
558 mh3->GetHist()->SetYTitle("");
559 mh3->GetHist()->SetTitle("Control deviation of the motors");
560 mh3->GetHist()->SetStats(1);
561 TLine ln;
562 ln.SetLineColor(kGreen);
563 ln.DrawLine(0.5*360*60/16384., 0, 0.5*360*60/16384., hError.GetHist()->GetMaximum());
564 ln.SetLineColor(kYellow);
565 ln.DrawLine(1.0*360*60/16384., 0, 1.0*360*60/16384., hError.GetHist()->GetMaximum());
566 ln.SetLineColor(kRed);
567 ln.DrawLine(2.0*360*60/16384., 0, 2.0*360*60/16384., hError.GetHist()->GetMaximum());
568 // ---------------------- Plot the drive status vs time ---------------------
569 c1->cd();
570 p = new TPad("", "", 0.6, 0.29, 1, 0.42);
571 p->Draw();
572 p->cd();
573 MHVsTime *hvt = (MHVsTime*)hDState.DrawClone("nonew");
574 hvt->GetGraph()->SetMarkerStyle(kFullDotSmall);
575 if (hvt->GetGraph()->GetN())
576 {
577 hist = hvt->GetGraph()->GetHistogram();
578 TAxis *axey = hist->GetYaxis();
579 TAxis *axex = hist->GetXaxis();
580 hist->SetXTitle("Time");
581 hist->SetYTitle("");
582 hist->SetTitle("");
583 hist->SetStats(0);
584 hist->SetMinimum(-0.5);
585 hist->SetMaximum(4.5);
586 axey->Set(5, -0.5, 4.5);
587 axey->SetBinLabel(axey->FindFixBin(0), "Error");
588 axey->SetBinLabel(axey->FindFixBin(1), "Stopped");
589 axey->SetBinLabel(axey->FindFixBin(3), "Moving");
590 axey->SetBinLabel(axey->FindFixBin(4), "Tracking");
591 axey->SetLabelSize(0.15);
592 axex->SetLabelSize(0.08);
593 axex->SetTitleSize(0.09);
594 axex->SetTitleOffset(0.45);
595 }
596 // --------------- Control deviation of the motors vs zenith angle ----------
597 c1->cd();
598 p = new TPad("", "", 0.6, 0.71, 1, 1);
599 p->Draw();
600 p->cd();
601 gStyle->SetOptStat(1110);
602 gStyle->SetStatFormat(".2g");
603 mh3 = (MH3*)hError2.DrawClone("nonew");
604 mh3->GetHist()->SetXTitle("Zd [\\circ]");
605 mh3->GetHist()->SetYTitle("\\Delta [arcmin]");
606 mh3->GetHist()->SetTitle("Control deviation of the motors");
607 mh3->GetHist()->SetStats(1);
608 mh3->GetHist()->Draw("box");
609 // -------------------------- Zenith angle vs time --------------------------
610 c1->cd();
611 p = new TPad("", "", 0.6, 0.42, 1, 0.71);
612 p->Draw();
613 p->cd();
614 gPad->SetBorderMode(0);
615 hvt = (MHVsTime*)hZd.DrawClone("nonew");
616 hvt->GetGraph()->SetMarkerStyle(kFullDotSmall);
617 if (hvt->GetGraph()->GetN())
618 {
619 hvt->GetGraph()->GetHistogram()->SetXTitle("Time");
620 hvt->GetGraph()->GetHistogram()->SetYTitle("Zd [\\circ]");
621 hvt->GetGraph()->GetHistogram()->SetTitle("Zd vs. Time");
622 hvt->GetGraph()->GetHistogram()->SetStats(0);
623 }
624
625
626 //
627 // Camera report
628 //
629 // ************************* HV of power supplies ***************************
630 if ((d = evtloop.GetDisplay()))
631 TCanvas &c2 = d.AddTab("CAMERA HV");
632 else
633 TCanvas *c2 = new TCanvas();
634 c2->Divide(2,2);
635 c2->cd(1);
636 // ---------------------------- Power supplies ------------------------------
637 TLegend *legHV = new TLegend(0.85,0.75,0.99,0.99);
638 g = hHVA.GetGraph();
639 g->SetMarkerColor(2);
640 g->SetLineColor(2);
641 g->SetTitle("Voltages of power supplies");
642 legHV->AddEntry(g,"PS A (hvps1)","l");
643 clone1 = (MHVsTime*)hHVA.DrawClone("nonew");
644 if(clone1->GetGraph()->GetN())
645 {
646 hist = clone1->GetGraph()->GetHistogram();
647 hist->SetXTitle("Time");
648 hist->SetYTitle("High voltage [V]");
649 hist->SetMinimum(0);
650 }
651 g = hHVB.GetGraph();
652 g->SetMarkerColor(3);
653 g->SetLineColor(3);
654 legHV->AddEntry(g,"PS B (hvps2)","l");
655 clone1 = (MHVsTime*)hHVB.DrawClone("nonewsame");
656 legHV->DrawClone();
657 // ---------------------------- HV settings ---------------------------------
658 c2->cd(2);
659 g = hCamMean.GetGraph();
660 g->SetMarkerColor(2);
661 g->SetLineColor(2);
662 g->SetTitle("Camera mean HV settings");
663 clone1 = (MHVsTime*)hCamMean.DrawClone("nonew");
664 if(clone1->GetGraph()->GetN())
665 {
666 hist = clone1->GetGraph()->GetHistogram();
667 hist->SetXTitle("Time");
668 hist->SetYTitle("HV [V]");
669 hist->SetMinimum(0);
670 }
671 c2->cd(3);
672 Sum = (MHCamera*)HVdisplay.GetHistByName("sum");
673 TVirtualPad *c = gPad;
674 c->cd(1);
675 gPad->SetBorderMode(0);
676 Sum->SetYTitle("Mean");
677 Sum->DrawClone("pixelindex");
678 c2->cd(4);
679 gPad->SetBorderMode(0);
680 Sum->SetYTitle("Mean HV settings");
681 Sum->DrawClone("EPhist");
682
683 // ******************** Currents of power supplies *******************
684 if ((d = evtloop.GetDisplay()))
685 TCanvas &c3 = d.AddTab("CAMERA DC");
686 else
687 TCanvas *c3 = new TCanvas();
688 // ----------------------------- Power supplies ------------------------------
689 c3->Divide(1,2);
690 c3->cd(1);
691 TLegend *legC = new TLegend(0.85,0.75,0.99,0.99);
692 g = hCA.GetGraph();
693 g->SetMarkerColor(2);
694 g->SetLineColor(2);
695 g->SetTitle("Currents of power supplies");
696 legC->AddEntry(g,"Power supply A (curr1)","l");
697 clone1 = (MHVsTime*)hCA.DrawClone("nonew");
698 if(clone1->GetGraph()->GetN())
699 {
700 hist = clone1->GetGraph()->GetHistogram();
701 hist->SetXTitle("Time");
702 hist->SetYTitle("Current [mA]");
703 hist->SetMinimum(0);
704 }
705 g = hCB.GetGraph();
706 g->SetMarkerColor(3);
707 g->SetLineColor(3);
708 legC->AddEntry(g,"Power supply B (curr2)","l");
709 clone1 = (MHVsTime*)hCB.DrawClone("nonewsame");
710 legC->DrawClone();
711 c3->cd(2);
712 gPad->SetBorderMode(0);
713 gPad->Divide(2,2);
714 TVirtualPad *c = gPad;
715 c->cd(1);
716 g = hCamStatus.GetGraph();
717 g->SetMarkerStyle(kFullDotSmall);
718 g->SetTitle("Camera status");
719 clone1 = (MHVsTime*)hCamStatus.DrawClone("nonew");
720 if(clone1->GetGraph()->GetN())
721 {
722 hist = clone1->GetGraph()->GetHistogram();
723 axey = hist->GetYaxis();
724 hist->SetMinimum(-0.5);
725 hist->SetMaximum(9.5);
726 axey->Set(10,-0.5,9.5);
727 axey->SetBinLabel(axey->FindFixBin(0),"EROR");
728 axey->SetBinLabel(axey->FindFixBin(1),"ALARM");
729 axey->SetBinLabel(axey->FindFixBin(2),"BLOCKED!");
730 axey->SetBinLabel(axey->FindFixBin(3),"WARM!");
731 axey->SetBinLabel(axey->FindFixBin(4),"HOT");
732 axey->SetBinLabel(axey->FindFixBin(5),"HVRAMPING");
733 axey->SetBinLabel(axey->FindFixBin(6),"OK");
734 axey->SetBinLabel(axey->FindFixBin(7),"INIT");
735 axey->SetBinLabel(axey->FindFixBin(8),"SHUTD");
736 axey->SetBinLabel(axey->FindFixBin(9),"N/A");
737 axey->SetLabelSize(0.07);
738 hist->SetXTitle("Time");
739 hist->SetYTitle("");
740 }
741 c->cd(2);
742 g = hCamStatusDC.GetGraph();
743 g->SetMarkerStyle(kFullDotSmall);
744 g->SetTitle("Camera DC status");
745 clone1 = (MHVsTime*)hCamStatusDC.DrawClone("nonew");
746 if(clone1->GetGraph()->GetN())
747 {
748 hist = clone1->GetGraph()->GetHistogram();
749 axey = hist->GetYaxis();
750 hist->SetMinimum(-0.5);
751 hist->SetMaximum(9.5);
752 axey->Set(10,-0.5,9.5);
753 axey->SetBinLabel(axey->FindFixBin(0),"Error");
754 axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
755 axey->SetBinLabel(axey->FindFixBin(3),"Hot");
756 axey->SetBinLabel(axey->FindFixBin(5),"Ok");
757 axey->SetBinLabel(axey->FindFixBin(6),"Warm");
758 axey->SetBinLabel(axey->FindFixBin(9),"n/a");
759 axey->SetLabelSize(0.07);
760 hist->SetXTitle("Time");
761 hist->SetYTitle("");
762 }
763 c->cd(3);
764 g = hHVStatus.GetGraph();
765 g->SetMarkerStyle(kFullDotSmall);
766 g->SetTitle("Camera HV status");
767 clone1 = (MHVsTime*)hHVStatus.DrawClone("nonew");
768 if(clone1->GetGraph()->GetN())
769 {
770 hist = clone1->GetGraph()->GetHistogram();
771 axey = hist->GetYaxis();
772 hist->SetMinimum(-0.5);
773 hist->SetMaximum(9.5);
774 axey->Set(10,-0.5,9.5);
775 axey->SetBinLabel(axey->FindFixBin(0),"Error");
776 axey->SetBinLabel(axey->FindFixBin(1),"Mismatch");
777 axey->SetBinLabel(axey->FindFixBin(2),"Trip");
778 axey->SetBinLabel(axey->FindFixBin(3),"Ramping");
779 axey->SetBinLabel(axey->FindFixBin(4),"Off");
780 axey->SetBinLabel(axey->FindFixBin(5),"Nominal");
781 axey->SetBinLabel(axey->FindFixBin(6),"LimCurrentWarning");
782 axey->SetBinLabel(axey->FindFixBin(9),"n/a");
783 axey->SetLabelSize(0.07);
784 hist->SetXTitle("Time");
785 hist->SetYTitle("");
786 }
787 c->cd(4);
788 g = hLidsStatus.GetGraph();
789 g->SetMarkerStyle(kFullDotSmall);
790 g->SetTitle("Camera Lids status");
791 clone1 = (MHVsTime*)hLidsStatus.DrawClone("nonew");
792 if(clone1->GetGraph()->GetN())
793 {
794 hist = clone1->GetGraph()->GetHistogram();
795 axey = hist->GetYaxis();
796 hist->SetMinimum(-0.5);
797 hist->SetMaximum(9.5);
798 axey->Set(10,-0.5,9.5);
799 axey->SetBinLabel(axey->FindFixBin(0),"Error");
800 axey->SetBinLabel(axey->FindFixBin(1),"SafetyLimit");
801 axey->SetBinLabel(axey->FindFixBin(4),"Closed");
802 axey->SetBinLabel(axey->FindFixBin(5),"Opened");
803 axey->SetBinLabel(axey->FindFixBin(6),"Moving");
804 axey->SetBinLabel(axey->FindFixBin(7),"Stopped");
805 axey->SetBinLabel(axey->FindFixBin(9),"n/a");
806 axey->SetLabelSize(0.07);
807 hist->SetXTitle("Time");
808 hist->SetYTitle("");
809 }
810 // ***************************** LV power supplies **************************
811 if ((d = evtloop.GetDisplay()))
812 TCanvas &c4 = d.AddTab("CAMERA LV");
813 else
814 TCanvas *c4 = new TCanvas();
815 c4->Divide(2,2);
816 c4->cd(1);
817 g = hLVTemp.GetGraph();
818 g->SetMarkerColor(2);
819 g->SetLineColor(2);
820 g->SetTitle("LV temperature");
821 clone1 = (MHVsTime*)hLVTemp.DrawClone("nonew");
822 if(clone1->GetGraph()->GetN())
823 {
824 hist = clone1->GetGraph()->GetHistogram();
825 hist->SetXTitle("Time");
826 hist->SetYTitle("Temperature [\\circ]");
827 }
828 c4->cd(2);
829 g = hLVHum.GetGraph();
830 g->SetMarkerColor(4);
831 g->SetLineColor(4);
832 g->SetTitle("LV humidity");
833 clone1 = (MHVsTime*)hLVHum.DrawClone("nonew");
834 if(clone1->GetGraph()->GetN())
835 {
836 hist = clone1->GetGraph()->GetHistogram();
837 hist->SetXTitle("Time");
838 hist->SetYTitle("Humidity [%]");
839 }
840 c4->cd(3);
841 g = hLVStatus.GetGraph();
842 g->SetMarkerStyle(kFullDotSmall);
843 g->SetTitle("LV status");
844 clone1 = (MHVsTime*)hLVStatus.DrawClone("nonew");
845 if(clone1->GetGraph()->GetN())
846 {
847 hist = clone1->GetGraph()->GetHistogram();
848 axey = hist->GetYaxis();
849 hist->SetMinimum(-0.5);
850 hist->SetMaximum(9.5);
851 axey->Set(10,-0.5,9.5);
852 axey->SetBinLabel(axey->FindFixBin(0),"Error");
853 axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
854 axey->SetBinLabel(axey->FindFixBin(2),"Trip");
855 axey->SetBinLabel(axey->FindFixBin(4),"Off");
856 axey->SetBinLabel(axey->FindFixBin(5),"On");
857 axey->SetBinLabel(axey->FindFixBin(9),"n/a");
858 hist->SetXTitle("Time");
859 hist->SetYTitle("");
860 }
861 c4->cd(4);
862 g = hLVRPS.GetGraph();
863 g->SetMarkerStyle(kFullDotSmall);
864 g->SetTitle("LV request power supply");
865 clone1 = (MHVsTime*)hLVRPS.DrawClone("nonew");
866 if(clone1->GetGraph()->GetN())
867 {
868 hist = clone1->GetGraph()->GetHistogram();
869 hist->SetXTitle("Time");
870 hist->SetYTitle("");
871 axey = hist->GetYaxis();
872 hist->SetMinimum(-0.5);
873 hist->SetMaximum(1.5);
874 axey->Set(2, -0.5, 1.5);
875 axey->SetBinLabel(axey->FindFixBin(0), "OFF");
876 axey->SetBinLabel(axey->FindFixBin(1), "ON");
877 }
878 // ****************************** Cooling ***********************************
879 if ((d = evtloop.GetDisplay()))
880 TCanvas &c5 = d.AddTab("COOLING SYSTEM");
881 else
882 TCanvas *c5 = new TCanvas();
883 gStyle->SetPadGridX(kTRUE);
884 gStyle->SetPadGridY(kTRUE);
885 c5->Divide(2,2);
886 c5->cd(1);
887 // -------------------------- Camera temperatures ---------------------------
888 TLegend *legtemp = new TLegend(0.85,0.75,0.99,0.99);
889 g = hTCenter.GetGraph();
890 g->SetMarkerColor(8);
891 g->SetLineColor(8);
892 g->SetTitle("Camera temperature");
893 legtemp->AddEntry(g,"T at camera center","l");
894 clone1 = (MHVsTime*)hTCenter.DrawClone("nonew");
895 if(clone1->GetGraph()->GetN())
896 {
897 hist = clone1->GetGraph()->GetHistogram();
898 hist->SetXTitle("Time");
899 hist->SetYTitle("Temperature [\\circ C]");
900 hist->SetMinimum(0);
901 }
902 g = hTWall.GetGraph();
903 g->SetMarkerColor(12);
904 g->SetLineColor(12);
905 legtemp->AddEntry(g,"T at camera wall","l");
906 clone1 = (MHVsTime*)hTWall.DrawClone("nonewsame");
907 g = hTWater.GetGraph();
908 g->SetMarkerColor(4);
909 g->SetLineColor(4);
910 legtemp->AddEntry(g,"T at water deposit","l");
911 clone1 = (MHVsTime*)hTWater.DrawClone("nonewsame");
912 g = hTOptLink.GetGraph();
913 g->SetMarkerColor(2);
914 g->SetLineColor(2);
915 legtemp->AddEntry(g,"T at optical links","l");
916 clone1 = (MHVsTime*)hTOptLink.DrawClone("nonewsame");
917 legtemp->DrawClone();
918 c5->cd(2);
919 g = hCoolStatus.GetGraph();
920 g->SetMarkerStyle(kFullDotSmall);
921 g->SetTitle("Camera cooling status");
922 clone1 = (MHVsTime*)hCoolStatus.DrawClone("nonew");
923 if(clone1->GetGraph()->GetN())
924 {
925 hist = clone1->GetGraph()->GetHistogram();
926 axey = hist->GetYaxis();
927 hist->SetMinimum(-0.5);
928 hist->SetMaximum(9.5);
929 axey->Set(10,-0.5,9.5);
930 axey->SetBinLabel(axey->FindFixBin(0),"Error");
931 axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
932 axey->SetBinLabel(axey->FindFixBin(4),"Off");
933 axey->SetBinLabel(axey->FindFixBin(5),"Ok");
934 axey->SetBinLabel(axey->FindFixBin(6),"Temp.Warning");
935 axey->SetBinLabel(axey->FindFixBin(7),"Cond.Warning");
936 axey->SetBinLabel(axey->FindFixBin(9),"n/a");
937 axey->SetLabelSize(0.05);
938 hist->SetXTitle("Time");
939 hist->SetYTitle("");
940 }
941 // ------------------------- Camera relative humidity -----------------------
942 c5->cd(3);
943 TLegend *leghum = new TLegend(0.75,0.75,0.99,0.99);
944 g = hHCenter.GetGraph();
945 g->SetMarkerColor(8);
946 g->SetLineColor(8);
947 g->SetTitle("Camera relative humidity");
948 leghum->AddEntry(g,"RH at camera center","l");
949 clone1 = (MHVsTime*)hHCenter.DrawClone("nonew");
950 if(clone1->GetGraph()->GetN())
951 {
952 hist = clone1->GetGraph()->GetHistogram();
953 hist->SetXTitle("Time");
954 hist->SetYTitle("Relative humidity [%]");
955 hist->SetMaximum(50);
956 hist->SetMinimum(0);
957 }
958 g = hHWall.GetGraph();
959 g->SetMarkerColor(12);
960 g->SetLineColor(12);
961 leghum->AddEntry(g,"RH at camera wall","l");
962 clone1 = (MHVsTime*)hHWall.DrawClone("nonewsame");
963 leghum->DrawClone();
964 // ---------------------- Temperature distribution --------------------------
965 c5->cd(4);
966 hist = hTempOptLink.GetHistByName("TOptLink");
967 hist->SetXTitle("Temperature [\\circ C]");
968 hist->SetYTitle("");
969 hist->SetLineColor(2);
970 hist->SetTitle("Distribution of opt. links temperature");
971 hist->SetStats(0);
972 mh3 = (MH3*)hTempOptLink.DrawClone("nonew");
973 //
974 // **************************** Trigger report ******************************
975 //
976 if ((d = evtloop.GetDisplay()))
977 TCanvas &c6 = d.AddTab("TRIGGER SYSTEM");
978 else
979 TCanvas *c6 = new TCanvas();
980 c6->Divide(1,3);
981 c6->cd(1);
982 gStyle->SetPadGridX(kTRUE);
983 gStyle->SetPadGridY(kTRUE);
984 TLegend *legtrig = new TLegend(0.85,0.85,0.99,0.99);
985 g = hTrigBL2.GetGraph();
986 g->SetMarkerStyle(kFullDotSmall);
987 g->SetMarkerColor(2);
988 g->SetLineColor(2);
989 g->SetTitle("L2 trigger rate");
990 legtrig->AddEntry(g,"Before prescaler","l");
991 clone1 = (MHVsTime*)hTrigBL2.DrawClone("nonew");
992 if(clone1->GetGraph()->GetN())
993 {
994 hist = clone1->GetGraph()->GetHistogram();
995 hist->SetXTitle("Time");
996 hist->SetYTitle("L2 trigger rate [Hz]");
997 }
998 g = hTrigAL2.GetGraph();
999 g->SetMarkerColor(4);
1000 g->SetLineColor(4);
1001 legtrig->AddEntry(g,"After prescaler","l");
1002 clone1 = (MHVsTime*)hTrigAL2.DrawClone("nonewsame");
1003 legtrig->DrawClone();
1004 c6->cd(2);
1005 hist = hTrigZd.GetHistByName("TrigZd");
1006 hist->SetXTitle("Zenith angle[\\circ]");
1007 hist->SetYTitle("Trigger rate [Hz]");
1008 hist->SetMarkerColor(4);
1009 hist->SetTitle("L2 trigger rate after prescaler");
1010 hist->SetStats(0);
1011 mh3 = (MH3*)hTrigZd.DrawClone("nonew");
1012 c6->cd(3);
1013 g = hTrigStatus.GetGraph();
1014 g->SetMarkerStyle(kFullDotSmall);
1015 g->SetTitle("Trigger status");
1016 clone1 = (MHVsTime*)hTrigStatus.DrawClone("nonew");
1017 if(clone1->GetGraph()->GetN())
1018 {
1019 hist = clone1->GetGraph()->GetHistogram();
1020 axey = hist->GetYaxis();
1021 hist->SetMinimum(-0.5);
1022 hist->SetMaximum(5.5);
1023 axey->Set(6,-0.5,5.5);
1024 axey->SetBinLabel(axey->FindFixBin(0),"Error");
1025 axey->SetBinLabel(axey->FindFixBin(1),"Idle");
1026 axey->SetBinLabel(axey->FindFixBin(2),"Loading");
1027 axey->SetBinLabel(axey->FindFixBin(3),"Ready");
1028 axey->SetBinLabel(axey->FindFixBin(4),"Active");
1029 axey->SetBinLabel(axey->FindFixBin(5),"Stopped");
1030 axey->SetLabelSize(0.07);
1031 hist->SetXTitle("Time");
1032 hist->SetYTitle("");
1033 }
1034 // ***************************** Trigger of macrocells **********************
1035 if ((d = evtloop.GetDisplay()))
1036 TCanvas &c7 = d.AddTab("TRIG. MACROCELLs");
1037 else
1038 TCanvas *c7 = new TCanvas();
1039 c7->Divide(2,2);
1040 c7->cd(1);
1041 TLegend *legtrig = new TLegend(0.80,0.70,0.99,0.99);
1042 g = htrigmc1.GetGraph();
1043 g->SetMarkerStyle(kFullDotSmall);
1044 g->SetMarkerColor(2);
1045 legtrig->AddEntry(g,Form("Macrocell 1: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1046 g->SetTitle("Trigger rate of mc 1 : (maximum)");
1047 pixclone1 = (MHPixVsTime*)htrigmc1.DrawClone("nonew");
1048 if(clone1->GetGraph()->GetN())
1049 {
1050 hist = pixclone1->GetGraph()->GetHistogram();
1051 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1052 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1053 hist->SetXTitle("Time");
1054 hist->SetYTitle("Trigger [Hz]");
1055 }
1056 legtrig->DrawClone();
1057 c7->cd(2);
1058 TLegend *legtrig = new TLegend(0.80,0.70,0.99,0.99);
1059 g = htrigmc2.GetGraph();
1060 g->SetMarkerStyle(kFullDotSmall);
1061 g->SetMarkerColor(2);
1062 legtrig->AddEntry(g,Form("Macrocell 2: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1063 g->SetTitle("Trigger rate of mc 2-7 : (maximum)");
1064 pixclone1 = (MHPixVsTime*)htrigmc2.DrawClone("nonew");
1065 if(clone1->GetGraph()->GetN())
1066 {
1067 hist = pixclone1->GetGraph()->GetHistogram();
1068 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1069 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1070 hist->SetXTitle("Time");
1071 hist->SetYTitle("Trigger [Hz]");
1072 }
1073 g=htrigmc3.GetGraph();
1074 g->SetMarkerStyle(kFullDotSmall);
1075 g->SetMarkerColor(3);
1076 legtrig->AddEntry(g,Form("Macrocell 3: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1077 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1078 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1079 pixclone1 = (MHPixVsTime*)htrigmc3.DrawClone("nonewsame");
1080 g=htrigmc4.GetGraph();
1081 g->SetMarkerStyle(kFullDotSmall);
1082 g->SetMarkerColor(4);
1083 legtrig->AddEntry(g,Form("Macrocell 4: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1084 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1085 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1086 pixclone1 = (MHPixVsTime*)htrigmc4.DrawClone("nonewsame");
1087 g=htrigmc5.GetGraph();
1088 g->SetMarkerStyle(kFullDotSmall);
1089 g->SetMarkerColor(5);
1090 legtrig->AddEntry(g,Form("Macrocell 5: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1091 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1092 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1093 pixclone1 = (MHPixVsTime*)htrigmc5.DrawClone("nonewsame");
1094 g=htrigmc6.GetGraph();
1095 g->SetMarkerStyle(kFullDotSmall);
1096 g->SetMarkerColor(6);
1097 legtrig->AddEntry(g,Form("Macrocell 6: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1098 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1099 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1100 pixclone1 = (MHPixVsTime*)htrigmc6.DrawClone("nonewsame");
1101 g=htrigmc7.GetGraph();
1102 g->SetMarkerStyle(kFullDotSmall);
1103 g->SetMarkerColor(7);
1104 legtrig->AddEntry(g,Form("Macrocell 7: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1105 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1106 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1107 pixclone1 = (MHPixVsTime*)htrigmc7.DrawClone("nonewsame");
1108 legtrig->DrawClone();
1109 c7->cd(3);
1110 TLegend *legtrig = new TLegend(0.80,0.70,0.99,0.99);
1111 g = htrigmc8.GetGraph();
1112 g->SetMarkerStyle(kFullDotSmall);
1113 g->SetMarkerColor(2);
1114 legtrig->AddEntry(g,Form("Macrocell 8: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1115 g->SetTitle("Trigger rate of mc 8-13 : (maximum)");
1116 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1117 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1118 pixclone1 = (MHPixVsTime*)htrigmc8.DrawClone("nonew");
1119 if(clone1->GetGraph()->GetN())
1120 {
1121 hist = pixclone1->GetGraph()->GetHistogram();
1122 hist->SetXTitle("Time");
1123 hist->SetYTitle("Trigger [Hz]");
1124 }
1125 g=htrigmc9.GetGraph();
1126 g->SetMarkerStyle(kFullDotSmall);
1127 g->SetMarkerColor(3);
1128 legtrig->AddEntry(g,Form("Macrocell 9: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1129 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1130 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1131 pixclone1 = (MHPixVsTime*)htrigmc9.DrawClone("nonewsame");
1132 g=htrigmc10.GetGraph();
1133 g->SetMarkerStyle(kFullDotSmall);
1134 g->SetMarkerColor(4);
1135 legtrig->AddEntry(g,Form("Macrocell 10: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1136 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1137 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1138 pixclone1 = (MHPixVsTime*)htrigmc10.DrawClone("nonewsame");
1139 g=htrigmc11.GetGraph();
1140 g->SetMarkerStyle(kFullDotSmall);
1141 g->SetMarkerColor(5);
1142 legtrig->AddEntry(g,Form("Macrocell 11: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1143 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1144 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1145 pixclone1 = (MHPixVsTime*)htrigmc11.DrawClone("nonewsame");
1146 g=htrigmc12.GetGraph();
1147 g->SetMarkerStyle(kFullDotSmall);
1148 g->SetMarkerColor(6);
1149 legtrig->AddEntry(g,Form("Macrocell 12: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1150 pixclone1 = (MHPixVsTime*)htrigmc12.DrawClone("nonewsame");
1151 g=htrigmc13.GetGraph();
1152 g->SetMarkerStyle(kFullDotSmall);
1153 g->SetMarkerColor(7);
1154 legtrig->AddEntry(g,Form("Macrocell 13: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1155 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1156 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1157 pixclone1 = (MHPixVsTime*)htrigmc13.DrawClone("nonewsame");
1158 legtrig->DrawClone();
1159 c7->cd(4);
1160 TLegend *legtrig = new TLegend(0.80,0.70,0.99,0.99);
1161 TGraph *g = htrigmc14.GetGraph();
1162 g->SetMarkerStyle(kFullDotSmall);
1163 g->SetMarkerColor(2);
1164 legtrig->AddEntry(g,Form("Macrocell 14: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1165 g->SetTitle("Trigger rate of mc 14-19 : (maximum)");
1166 pixclone1 = (MHPixVsTime*)htrigmc14.DrawClone("nonew");
1167 if(clone1->GetGraph()->GetN())
1168 {
1169 hist = pixclone1->GetGraph()->GetHistogram();
1170 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1171 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1172 hist->SetXTitle("Time");
1173 hist->SetYTitle("Trigger [Hz]");
1174 }
1175 g=htrigmc15.GetGraph();
1176 g->SetMarkerStyle(kFullDotSmall);
1177 g->SetMarkerColor(3);
1178 legtrig->AddEntry(g,Form("Macrocell 15: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1179 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1180 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1181 pixclone1 = (MHPixVsTime*)htrigmc15.DrawClone("nonewsame");
1182 g=htrigmc16.GetGraph();
1183 g->SetMarkerStyle(kFullDotSmall);
1184 g->SetMarkerColor(4);
1185 legtrig->AddEntry(g,Form("Macrocell 16: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1186 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1187 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1188 pixclone1 = (MHPixVsTime*)htrigmc16.DrawClone("nonewsame");
1189 g=htrigmc17.GetGraph();
1190 g->SetMarkerStyle(kFullDotSmall);
1191 g->SetMarkerColor(5);
1192 legtrig->AddEntry(g,Form("Macrocell 17: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1193 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1194 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1195 pixclone1 = (MHPixVsTime*)htrigmc17.DrawClone("nonewsame");
1196 g=htrigmc18.GetGraph();
1197 g->SetMarkerStyle(kFullDotSmall);
1198 g->SetMarkerColor(6);
1199 legtrig->AddEntry(g,Form("Macrocell 18: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1200 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1201 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1202 pixclone1 = (MHPixVsTime*)htrigmc18.DrawClone("nonewsame");
1203 g=htrigmc19.GetGraph();
1204 g->SetMarkerStyle(kFullDotSmall);
1205 g->SetMarkerColor(7);
1206 legtrig->AddEntry(g,Form("Macrocell 19: %3.0f",g->GetHistogram()->GetMaximum()),"p");
1207 if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
1208 hist->SetMaximum(g->GetHistogram()->GetMaximum());
1209 pixclone1 = (MHPixVsTime*)htrigmc19.DrawClone("nonewsame");
1210 legtrig->DrawClone();
1211
1212 //
1213 // *************************** Weather station ******************************
1214 //
1215 if ((d = evtloop.GetDisplay()))
1216 TCanvas &c8 = d.AddTab("WEATHER STATION");
1217 else
1218 TCanvas *c8 = new TCanvas();
1219 c8->Divide(2,2);
1220 // ----------------------- Relative humidity --------------------------------
1221 c8->cd(1);
1222 g = hCCHum.GetGraph();
1223 g->SetMarkerStyle(kFullDotSmall);
1224 g->SetMarkerColor(4);
1225 g->SetLineColor(4);
1226 g->SetTitle("Relative humidity");
1227 clone1 = (MHVsTime*)hCCHum.DrawClone("nonew");
1228 if(clone1->GetGraph()->GetN())
1229 {
1230 hist = clone1->GetGraph()->GetHistogram();
1231 hist->SetXTitle("Time");
1232 hist->SetYTitle("Humidity [%]");
1233 }
1234 // -------------------------- Temperature -----------------------------------
1235 c8->cd(2);
1236 g = hCCTemp.GetGraph();
1237 g->SetMarkerStyle(kFullDotSmall);
1238 g->SetMarkerColor(2);
1239 g->SetLineColor(2);
1240 g->SetTitle("Temperature");
1241 clone1 = (MHVsTime*)hCCTemp.DrawClone("nonew");
1242 if(clone1->GetGraph()->GetN())
1243 {
1244 hist = clone1->GetGraph()->GetHistogram();
1245 hist->SetXTitle("Time");
1246 hist->SetYTitle("Temperature [\\circ C]");
1247 }
1248 // --------------------------- Wind speed -----------------------------------
1249 c8->cd(3);
1250 g = hCCWS.GetGraph();
1251 g->SetMarkerStyle(kFullDotSmall);
1252 g->SetMarkerColor(3);
1253 g->SetLineColor(3);
1254 g->SetTitle("Wind speed");
1255 clone1 = (MHVsTime*)hCCWS.DrawClone("nonew");
1256 if(clone1->GetGraph()->GetN())
1257 {
1258 hist = clone1->GetGraph()->GetHistogram();
1259 hist->SetXTitle("Time");
1260 hist->SetYTitle("Wind speed [km/h]");
1261 }
1262 // -------------------------- Solar radiation -------------------------------
1263 c8->cd(4);
1264 g = hCCSR.GetGraph();
1265 g->SetMarkerStyle(kFullDotSmall);
1266 g->SetMarkerColor(9);
1267 g->SetLineColor(9);
1268 g->SetTitle("Solar radiation");
1269 clone1 = (MHVsTime*)hCCSR.DrawClone("nonew");
1270 if(clone1->GetGraph()->GetN())
1271 {
1272 hist = clone1->GetGraph()->GetHistogram();
1273 hist->SetXTitle("Time");
1274 hist->SetYTitle("Solar radiation [W/m^2]");
1275 }
1276
1277 // Save data in a postscriptfile (filename.ps)
1278 TString file;
1279 if (filename.Last('.')>0)
1280 file = filename(0, filename.Last('.'));
1281
1282 // Make sure the display hasn't been deleted by the user while the
1283 // eventloop was running.
1284 if ((d = evtloop.GetDisplay()))
1285 d->SaveAsPS(directory+file+".ps");
1286 else
1287 {
1288 c1->Print(directory+file+".ps(");
1289 c2->Print(directory+file+".ps");
1290 c3->Print(directory+file+".ps");
1291 c4->Print(directory+file+".ps");
1292 c5->Print(directory+file+".ps");
1293 c6->Print(directory+file+".ps");
1294 c7->Print(directory+file+".ps");
1295 c8->Print(directory+file+".ps)");
1296 }
1297}
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
Note: See TracBrowser for help on using the repository browser.