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

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