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

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