Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 3081)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 3082)
@@ -4,4 +4,16 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2004/02/10: Raquel de los Reyes
+
+   * mhist/MHPixVsTime.[h,cc]
+     - Added a default draw function and replaced the TGraph object 
+       by a pointer to a TGraph object.
+   * mreport/MReportTrigger.h
+     - Now it dereives from a MCamEvent class and implemented the
+       GetPixContent() and DrawPixelContent() functions.
+   * maccros/CCDataCheck.C
+     - An update of the previous macro. New plots: subsystems status and
+       macrocells trigger.
+
  2004/02/10: Markus Gaug
 
Index: /trunk/MagicSoft/Mars/macros/CCDataCheck.C
===================================================================
--- /trunk/MagicSoft/Mars/macros/CCDataCheck.C	(revision 3081)
+++ /trunk/MagicSoft/Mars/macros/CCDataCheck.C	(revision 3082)
@@ -34,5 +34,5 @@
 ////////////////////////////////////////////////////////////////////////////
 
-void CCDataCheck(const TString filename="CC_2003_11_30_20_29_20.root", const TString directory="../rootfiles/2003_12_01/")
+void CCDataCheck_new(const TString filename="CC_2003_11_30_20_29_20.root", const TString directory="../rootfiles/2003_12_01/")
 {
   //
@@ -109,4 +109,19 @@
   MHVsTime hTrigAL2("MReportTrigger.fL2AfterPrescaler");
   hTrigAL2.SetName("TrigAL2");
+  MHVsTime hTrigStatus("MReportTrigger.fState");
+  hTrigStatus.SetName("TrigStatus");
+  // Camera status
+  MHVsTime hCamStatus("MReportCamera.fState");
+  hCamStatus.SetName("CamStatus");
+  MHVsTime hCamSentStatus("MReportCamera.fStatus");
+  hCamSentStatus.SetName("CamSentStatus");
+  MHVsTime hCamStatusDC("MReportCamera.fStatusDC");
+  hCamStatusDC.SetName("CamDCStatus");
+  MHVsTime hHVStatus("MCameraHV.fStatus");
+  hHVStatus.SetName("HVStatus");
+  MHVsTime hLidsStatus("MCameraLids.fStatus");
+  hLidsStatus.SetName("LidsStatus");
+  MHVsTime hCoolStatus("MCameraCooling.fStatus");
+  hCoolStatus.SetName("CoolingStatus");
 
   // Reads the trees of the root file and the analysed branches
@@ -123,4 +138,73 @@
   read.AddToBranchList("MReportCC.*");
   read.AddToBranchList("MReportTrigger.*");
+  read.AddToBranchList("MReportCamera.*");
+  read.AddToBranchList("MCameraLids.*");
+
+  MGeomApply geomapl;
+  tlist.AddToList(&geomapl);
+
+  // Set of MHCamEvents classes
+//    MHCamEvent HVdisplay("CamHV","Camera HV supplies");
+//    HVdisplay.SetBit(MHCamera::kVariance);
+//    plist.AddToList(&HVdisplay);
+
+  // Set of MHPixVsTime classes (Trigger macroscells)
+  MHPixVsTime htrigmc1(0,"TrigMacrocell1");
+  htrigmc1.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc1);
+  MHPixVsTime htrigmc2(1,"TrigMacrocell2");
+  htrigmc2.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc2);
+  MHPixVsTime htrigmc3(2,"TrigMacrocell3");
+  htrigmc3.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc3);
+  MHPixVsTime htrigmc4(3,"TrigMacrocell4");
+  htrigmc4.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc4);
+  MHPixVsTime htrigmc5(4,"TrigMacrocell5");
+  htrigmc5.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc5);
+  MHPixVsTime htrigmc6(5,"TrigMacrocell6");
+  htrigmc6.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc6);
+  MHPixVsTime htrigmc7(6,"TrigMacrocell7");
+  htrigmc7.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc7);
+  MHPixVsTime htrigmc8(7,"TrigMacrocell8");
+  htrigmc8.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc8);
+  MHPixVsTime htrigmc9(8,"TrigMacrocell9");
+  htrigmc9.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc9);
+  MHPixVsTime htrigmc10(9,"TrigMacrocell10");
+  htrigmc10.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc10);
+  MHPixVsTime htrigmc11(10,"TrigMacrocell11");
+  htrigmc11.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc11);
+  MHPixVsTime htrigmc12(11,"TrigMacrocell12");
+  htrigmc12.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc12);
+  MHPixVsTime htrigmc13(12,"TrigMacrocell13");
+  htrigmc13.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc13);
+  MHPixVsTime htrigmc14(13,"TrigMacrocell14");
+  htrigmc14.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc14);
+  MHPixVsTime htrigmc15(14,"TrigMacrocell15");
+  htrigmc15.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc15);
+  MHPixVsTime htrigmc16(15,"TrigMacrocell16");
+  htrigmc16.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc16);
+  MHPixVsTime htrigmc17(16,"TrigMacrocell17");
+  htrigmc17.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc17);
+  MHPixVsTime htrigmc18(17,"TrigMacrocell18");
+  htrigmc18.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc18);
+  MHPixVsTime htrigmc19(18,"TrigMacrocell19");
+  htrigmc19.SetNameTime("MTimeTrigger");
+  plist.AddToList(&htrigmc19);
 
   // Set of MH3 classes
@@ -143,4 +227,13 @@
   bins4.SetEdges(50, 0, 50);
   plist.AddToList(&bins4);
+  MH3 hTrigZd("MReportDrive.fNominalZd","MReportTrigger.fL2AfterPrescaler");
+  hTrigZd.SetName("TrigZd");
+  MBinning bins5("BinningTrigZdX");
+  bins5.SetEdges(90, 0, 90);
+  plist.AddToList(&bins5);
+  MBinning bins6("BinningTrigZdY");
+  bins6.SetEdges(100, 0, 1500);
+  plist.AddToList(&bins6);
+
 
   // Fill all the MH classes defined before
@@ -171,4 +264,32 @@
   MFillH fillTrigBL2(&hTrigBL2,   "MTimeTrigger");
   MFillH fillTrigAL2(&hTrigAL2,   "MTimeTrigger");
+  MFillH fillTrigStatus(&hTrigStatus,   "MTimeTrigger");
+  MFillH fillTrigZd(&hTrigZd);
+  MFillH fillCamStatus(&hCamStatus,"MTimeCamera");
+  MFillH fillCamSentStatus(&hCamSentStatus,"MTimeCamera");
+  MFillH fillCamStatusDC(&hCamStatusDC, "MTimeCamera");
+  MFillH fillHVStatus(&hHVStatus, "MTimeCamera");
+  MFillH fillLidsStatus(&hLidsStatus, "MTimeCamera");
+  MFillH fillCoolStatus(&hCoolStatus, "MTimeCamera");
+  MFillH filltrigmc1("TrigMacrocell1","MReportTrigger");
+  MFillH filltrigmc2("TrigMacrocell2","MReportTrigger");
+  MFillH filltrigmc3("TrigMacrocell3","MReportTrigger");
+  MFillH filltrigmc4("TrigMacrocell4","MReportTrigger");
+  MFillH filltrigmc5("TrigMacrocell5","MReportTrigger");
+  MFillH filltrigmc6("TrigMacrocell6","MReportTrigger");
+  MFillH filltrigmc7("TrigMacrocell7","MReportTrigger");
+  MFillH filltrigmc8("TrigMacrocell8","MReportTrigger");
+  MFillH filltrigmc9("TrigMacrocell9","MReportTrigger");
+  MFillH filltrigmc10("TrigMacrocell10","MReportTrigger");
+  MFillH filltrigmc11("TrigMacrocell11","MReportTrigger");
+  MFillH filltrigmc12("TrigMacrocell12","MReportTrigger");
+  MFillH filltrigmc13("TrigMacrocell13","MReportTrigger");
+  MFillH filltrigmc14("TrigMacrocell14","MReportTrigger");
+  MFillH filltrigmc15("TrigMacrocell15","MReportTrigger");
+  MFillH filltrigmc16("TrigMacrocell16","MReportTrigger");
+  MFillH filltrigmc17("TrigMacrocell17","MReportTrigger");
+  MFillH filltrigmc18("TrigMacrocell18","MReportTrigger");
+  MFillH filltrigmc19("TrigMacrocell19","MReportTrigger");
+//    MFillH fillHVD("CamHV","MCameraHV");
 
   // Do not display the result given by the default draw function
@@ -199,4 +320,32 @@
   fillTrigBL2.SetBit(MFillH::kDoNotDisplay);
   fillTrigAL2.SetBit(MFillH::kDoNotDisplay);
+  fillTrigStatus.SetBit(MFillH::kDoNotDisplay);
+  fillTrigZd.SetBit(MFillH::kDoNotDisplay);
+  fillCamStatus.SetBit(MFillH::kDoNotDisplay);
+  fillCamSentStatus.SetBit(MFillH::kDoNotDisplay);
+  fillCamStatusDC.SetBit(MFillH::kDoNotDisplay);
+  fillHVStatus.SetBit(MFillH::kDoNotDisplay);
+  fillLidsStatus.SetBit(MFillH::kDoNotDisplay);
+  fillCoolStatus.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc1.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc2.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc3.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc4.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc5.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc6.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc7.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc8.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc9.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc10.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc11.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc12.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc13.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc14.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc15.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc16.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc17.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc18.SetBit(MFillH::kDoNotDisplay);
+  filltrigmc19.SetBit(MFillH::kDoNotDisplay);
+//    fillHVD.SetBit(MFillH::kDoNotDisplay);
 
   // Add all the task to the task list
@@ -228,4 +377,32 @@
   tlist.AddToList(&fillTrigBL2,  "Trigger");
   tlist.AddToList(&fillTrigAL2,  "Trigger");
+  tlist.AddToList(&fillTrigStatus,  "Trigger");
+  tlist.AddToList(&fillTrigZd);
+  tlist.AddToList(&fillCamStatus,  "Camera");
+  tlist.AddToList(&fillCamSentStatus,  "Camera");
+  tlist.AddToList(&fillCamStatusDC,"Camera");
+  tlist.AddToList(&fillHVStatus,"Camera");
+  tlist.AddToList(&fillLidsStatus,"Camera");
+  tlist.AddToList(&fillCoolStatus,"Camera");
+  tlist.AddToList(&filltrigmc1, "Trigger");
+  tlist.AddToList(&filltrigmc2, "Trigger");
+  tlist.AddToList(&filltrigmc3, "Trigger");
+  tlist.AddToList(&filltrigmc4, "Trigger");
+  tlist.AddToList(&filltrigmc5, "Trigger");
+  tlist.AddToList(&filltrigmc6, "Trigger");
+  tlist.AddToList(&filltrigmc7, "Trigger");
+  tlist.AddToList(&filltrigmc8, "Trigger");
+  tlist.AddToList(&filltrigmc9, "Trigger");
+  tlist.AddToList(&filltrigmc10, "Trigger");
+  tlist.AddToList(&filltrigmc11, "Trigger");
+  tlist.AddToList(&filltrigmc12, "Trigger");
+  tlist.AddToList(&filltrigmc13, "Trigger");
+  tlist.AddToList(&filltrigmc14, "Trigger");
+  tlist.AddToList(&filltrigmc15, "Trigger");
+  tlist.AddToList(&filltrigmc16, "Trigger");
+  tlist.AddToList(&filltrigmc17, "Trigger");
+  tlist.AddToList(&filltrigmc18, "Trigger");
+  tlist.AddToList(&filltrigmc19, "Trigger");
+//    tlist.AddToList(&fillHVD);
 
   //
@@ -250,6 +427,6 @@
   // Drive report (pointing.C from T. Bretz)
   //
-  TCanvas &c1 = d->AddTab("Drive");
-  // Plot the telescope tracking positions on the sky
+  TCanvas &c1 = d.AddTab("DRIVE SYSTEM");
+  // ************* Plot the telescope tracking positions on the sky ***********
   TGraph *g1 = hZd.GetGraph();
   TGraph *g2 = hAz.GetGraph();
@@ -293,5 +470,5 @@
       old[1] = y[1];
     }
-  // Control deviation of the motors
+  // ---------------------- Control deviation of the motors -------------------
   c1.cd();
   p = new TPad("", "", 0.6, 0, 1, 0.29);
@@ -312,5 +489,5 @@
   ln.SetLineColor(kRed);
   ln.DrawLine(2.0*360*60/16384., 0, 2.0*360*60/16384., hError.GetHist()->GetMaximum());
-  // Plot the drive status vs time
+  // ---------------------- Plot the drive status vs time ---------------------
   c1.cd();
   p = new TPad("", "", 0.6, 0.29, 1, 0.42);
@@ -324,5 +501,5 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("");
-  hist->SetTitle("");//Drive Status vs. Time");
+  hist->SetTitle("");
   hist->SetStats(0);
   hist->SetMinimum(-0.5);
@@ -337,5 +514,5 @@
   axex->SetTitleSize(0.09);
   axex->SetTitleOffset(0.45);
-  // Control deviation of the motors vs zenith angle
+  // --------------- Control deviation of the motors vs zenith angle ----------
   c1.cd();
   p = new TPad("", "", 0.6, 0.71, 1, 1);
@@ -350,5 +527,5 @@
   mh3->GetHist()->SetStats(1);
   mh3->GetHist()->Draw("box");
-  // Zenith angle vs time
+  // -------------------------- Zenith angle vs time --------------------------
   c1.cd();
   p = new TPad("", "", 0.6, 0.42, 1, 0.71);
@@ -370,9 +547,132 @@
   // Camera report 
   // 
-  // HV and currents of power supplies
-  TCanvas &c2 = d->AddTab("HV");
-  c2->Divide(1,2);
+  // *********************** Camera status ************************************
+  TCanvas &c2 = d.AddTab("CAMERA STATUS");
+  c2->Divide(2,3);
   c2->cd(1);
-  // High voltages 
+  TGraph *g = hCamStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera status");
+  MHVsTime *clone1 = (MHVsTime*)hCamStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"EROR");
+  axey->SetBinLabel(axey->FindFixBin(1),"ALARM");
+  axey->SetBinLabel(axey->FindFixBin(2),"BLOCKED!");
+  axey->SetBinLabel(axey->FindFixBin(3),"WARM!");
+  axey->SetBinLabel(axey->FindFixBin(4),"HOT");
+  axey->SetBinLabel(axey->FindFixBin(5),"HVRAMPING");
+  axey->SetBinLabel(axey->FindFixBin(6),"OK");
+  axey->SetBinLabel(axey->FindFixBin(7),"INIT");
+  axey->SetBinLabel(axey->FindFixBin(8),"SHUTD");
+  axey->SetBinLabel(axey->FindFixBin(9),"N/A");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c2->cd(2);
+  TGraph *g = hCamStatusDC.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera DC status");
+  MHVsTime *clone1 = (MHVsTime*)hCamStatusDC.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
+  axey->SetBinLabel(axey->FindFixBin(3),"Hot");
+  axey->SetBinLabel(axey->FindFixBin(5),"Ok");
+  axey->SetBinLabel(axey->FindFixBin(6),"Warm");
+  axey->SetBinLabel(axey->FindFixBin(9),"n/a");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c2->cd(3);
+  TGraph *g = hHVStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera HV status");
+  MHVsTime *clone1 = (MHVsTime*)hHVStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"Mismatch");
+  axey->SetBinLabel(axey->FindFixBin(2),"Trip");
+  axey->SetBinLabel(axey->FindFixBin(3),"Ramping");
+  axey->SetBinLabel(axey->FindFixBin(4),"Off");
+  axey->SetBinLabel(axey->FindFixBin(5),"Nominal");
+  axey->SetBinLabel(axey->FindFixBin(6),"LimCurrentWarning");
+  axey->SetBinLabel(axey->FindFixBin(9),"n/a");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c2->cd(4);
+  TGraph *g = hLidsStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera Lids status");
+  MHVsTime *clone1 = (MHVsTime*)hLidsStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"SafetyLimit");
+  axey->SetBinLabel(axey->FindFixBin(4),"Closed");
+  axey->SetBinLabel(axey->FindFixBin(5),"Opened");
+  axey->SetBinLabel(axey->FindFixBin(6),"Moving");
+  axey->SetBinLabel(axey->FindFixBin(7),"Stopped");
+  axey->SetBinLabel(axey->FindFixBin(9),"n/a");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c2->cd(5);
+  TGraph *g = hCoolStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera cooling status");
+  MHVsTime *clone1 = (MHVsTime*)hCoolStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
+  axey->SetBinLabel(axey->FindFixBin(4),"Off");
+  axey->SetBinLabel(axey->FindFixBin(5),"Ok");
+  axey->SetBinLabel(axey->FindFixBin(6),"Temp.Warning");
+  axey->SetBinLabel(axey->FindFixBin(7),"Cond.Warning");
+  axey->SetBinLabel(axey->FindFixBin(9),"n/a");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c2->cd(6);
+  TGraph *g = hCamSentStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Camera sentinel status");
+  MHVsTime *clone1 = (MHVsTime*)hCamSentStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"ERROR");
+  axey->SetBinLabel(axey->FindFixBin(1),"ALL IS OK");
+  axey->SetBinLabel(axey->FindFixBin(2),"SUN IS PRESENT");
+  axey->SetBinLabel(axey->FindFixBin(3),"BAD ATM. COND.");
+  axey->SetBinLabel(axey->FindFixBin(4),"BAD T/RH CAMERA");
+  axey->SetBinLabel(axey->FindFixBin(5),"HOT CAMERA");
+  axey->SetBinLabel(axey->FindFixBin(6),"FADC FANS PROB.");
+  axey->SetBinLabel(axey->FindFixBin(7),"CECO TIMEOUT");
+  axey->SetBinLabel(axey->FindFixBin(9),"N/A");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+
+  // ******************** HV and currents of power supplies *******************
+  TCanvas &c3 = d.AddTab("CAMERA HV");
+  c3->Divide(1,2);
+  c3->cd(1);
+  // ---------------------------- High voltages -------------------------------
   TLegend *legHV = new TLegend(0.85,0.75,0.99,0.99);
   TGraph *g = hHVA.GetGraph();
@@ -392,6 +692,6 @@
   hist->SetMinimum(0);
   legHV->DrawClone();
-  c2->cd(2);
-  // Currents 
+  c3->cd(2);
+  // ----------------------------- Currents ----------------------------------
   TLegend *legC = new TLegend(0.85,0.75,0.99,0.99);
   TGraph *g = hCA.GetGraph();
@@ -412,8 +712,8 @@
   legC->DrawClone();
 
-  // LV power supplies
-  TCanvas &c3 = d->AddTab("LV");
-  c3->Divide(2,2);
-  c3->cd(1);
+  // ***************************** LV power supplies **************************
+  TCanvas &c4 = d.AddTab("CAMERA LV");
+  c4->Divide(2,2);
+  c4->cd(1);
   TGraph *g = hLVTemp.GetGraph();
   g->SetMarkerColor(2);
@@ -424,5 +724,5 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("Temperature [\\circ]");
-  c3->cd(2);
+  c4->cd(2);
   TGraph *g = hLVHum.GetGraph();
   g->SetMarkerColor(4);
@@ -433,33 +733,43 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("Humidity [%]");
-  c3->cd(3);
+  c4->cd(3);
   TGraph *g = hLVStatus.GetGraph();
-  g->SetMarkerColor(8);
-  g->SetLineColor(8);
+  g->SetMarkerStyle(kFullDotSmall);
   g->SetTitle("LV status");
   MHVsTime *clone1 = (MHVsTime*)hLVStatus.DrawClone("nonew");
   TH1 *hist = clone1->GetGraph()->GetHistogram();
-  hist->SetXTitle("Time");
-  hist->SetYTitle("Status");
-  c3->cd(4);
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(9.5);
+  axey->Set(10,-0.5,9.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"Alarm");
+  axey->SetBinLabel(axey->FindFixBin(2),"Trip");
+  axey->SetBinLabel(axey->FindFixBin(4),"Off");
+  axey->SetBinLabel(axey->FindFixBin(5),"On");
+  axey->SetBinLabel(axey->FindFixBin(9),"n/a");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  c4->cd(4);
   TGraph *g = hLVRPS.GetGraph();
-  g->SetMarkerColor(3);
-  g->SetLineColor(3);
+  g->SetMarkerStyle(kFullDotSmall);
   g->SetTitle("LV request power supply");
   MHVsTime *clone1 = (MHVsTime*)hLVRPS.DrawClone("nonew");
   TH1 *hist = clone1->GetGraph()->GetHistogram();
   hist->SetXTitle("Time");
-  hist->SetYTitle("Request power supply");
-  TAxis *axey = hist->GetYaxis();
+  hist->SetYTitle("");
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(1.5);
   axey->Set(2, -0.5, 1.5);
   axey->SetBinLabel(axey->FindFixBin(0), "OFF");
   axey->SetBinLabel(axey->FindFixBin(1), "ON");
-  // Cooling
-  TCanvas &c4 = d->AddTab("Cooling");
+  // ****************************** Cooling ***********************************
+  TCanvas &c5 = d.AddTab("COOLING SYSTEM");
   gStyle->SetPadGridX(kTRUE);
   gStyle->SetPadGridY(kTRUE);
-  c4->Divide(1,2);
-  c4->cd(1);
-  // Camera temperatures
+  c5->Divide(1,2);
+  c5->cd(1);
+  // -------------------------- Camera temperatures ---------------------------
   TLegend *legtemp = new TLegend(0.85,0.75,0.99,0.99);
   TGraph *g = hTCenter.GetGraph();
@@ -489,6 +799,6 @@
   hist->SetMinimum(0);
   legtemp->DrawClone();
-  // Camera relative humidity
-  c4->cd(2);
+  // ------------------------- Camera relative humidity -----------------------
+  c5->cd(2);
   gPad->SetBorderMode(0);
   gPad->Divide(2, 1);
@@ -513,5 +823,5 @@
   hist->SetMinimum(0);
   leghum->DrawClone();
-  // Temperature distribution
+  // ---------------------- Temperature distribution --------------------------
   c->cd(2);
   TH1F *h3 = hTempOptLink.GetHistByName("TOptLink");
@@ -519,12 +829,14 @@
   h3->SetYTitle("");
   h3->SetLineColor(2);
-  h3->SetTitle("Distribution of opt. links temperature (31.6+/-3.8\\circ)");
+  h3->SetTitle("Distribution of opt. links temperature");
   h3->SetStats(0);
   MH3 *mh3 = (MH3*)hTempOptLink.DrawClone("nonew");
 
   //
-  // Trigger report
-  //
-  TCanvas &c5 = d->AddTab("Trigger");
+  // **************************** Trigger report ******************************
+  //
+  TCanvas &c6 = d.AddTab("TRIGGER SYSTEM");
+  c6->Divide(1,3);
+  c6->cd(1);
   gStyle->SetPadGridX(kTRUE);
   gStyle->SetPadGridY(kTRUE);
@@ -546,12 +858,200 @@
   hist->SetYTitle("L2 trigger rate [Hz]"); 
   legtrig->DrawClone();
-  
-  //
-  // CC report (Weather station)
-  //
-  TCanvas &c6 = d->AddTab("Central Control");
-  c6->Divide(2,2);
-  // Relative humidity
-  c6->cd(1);
+   c6->cd(2);
+   TH1 *h4 = hTrigZd.GetHistByName("TrigZd");
+   h4->SetXTitle("Zenith angle[\\circ]");
+   h4->SetYTitle("Trigger rate [Hz]");
+   h4->SetMarkerColor(4);
+   h4->SetTitle("L2 trigger rate after prescaler");
+   h4->SetStats(0);
+   mh3 = (MH3*)hTrigZd.DrawClone("nonew");
+   c6->cd(3);
+  TGraph *g = hTrigStatus.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetTitle("Trigger status");
+  MHVsTime *clone1 = (MHVsTime*)hTrigStatus.DrawClone("nonew");
+  TH1 *hist = clone1->GetGraph()->GetHistogram();
+  axey = hist->GetYaxis();
+  hist->SetMinimum(-0.5);
+  hist->SetMaximum(5.5);
+  axey->Set(6,-0.5,5.5);
+  axey->SetBinLabel(axey->FindFixBin(0),"Error");
+  axey->SetBinLabel(axey->FindFixBin(1),"Idle");
+  axey->SetBinLabel(axey->FindFixBin(2),"Loading");
+  axey->SetBinLabel(axey->FindFixBin(3),"Ready");
+  axey->SetBinLabel(axey->FindFixBin(4),"Active");
+  axey->SetBinLabel(axey->FindFixBin(5),"Stopped");
+  hist->SetXTitle("Time");
+  hist->SetYTitle("");
+  // ***************************** Trigger of macrocells **********************
+  TCanvas &c7 = d.AddTab("TRIG. MACROCELLs");
+  c7->Divide(2,2);
+  c7->cd(1);
+  TLegend *legtrig = new TLegend(0.80,0.75,0.99,0.99);
+  TGraph *g = htrigmc1.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(2);
+  legtrig->AddEntry(g,Form("Macrocell 1: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  g->SetTitle("Trigger rate of mc 1 : (maximum)");
+  MHPixVsTime *pixclone1 = (MHPixVsTime*)htrigmc1.DrawClone("nonew");
+  TH1 *hist = pixclone1->GetGraph()->GetHistogram();
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  hist->SetXTitle("Time");
+  hist->SetYTitle("Trigger [Hz]");
+  legtrig->DrawClone();
+  c7->cd(2);
+  TLegend *legtrig = new TLegend(0.80,0.75,0.99,0.99);
+  TGraph *g = htrigmc2.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(2);
+  legtrig->AddEntry(g,Form("Macrocell 2: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  g->SetTitle("Trigger rate of mc 2-7 : (maximum)");
+  MHPixVsTime *pixclone1 = (MHPixVsTime*)htrigmc2.DrawClone("nonew");
+  TH1 *hist = pixclone1->GetGraph()->GetHistogram();
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  hist->SetXTitle("Time");
+  hist->SetYTitle("Trigger [Hz]");
+  g=htrigmc3.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(3);
+  legtrig->AddEntry(g,Form("Macrocell 3: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc3.DrawClone("nonewsame");
+  g=htrigmc4.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(4);
+  legtrig->AddEntry(g,Form("Macrocell 4: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc4.DrawClone("nonewsame");
+  g=htrigmc5.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(5);
+  legtrig->AddEntry(g,Form("Macrocell 5: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc5.DrawClone("nonewsame");
+  g=htrigmc6.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(6);
+  legtrig->AddEntry(g,Form("Macrocell 6: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc6.DrawClone("nonewsame");
+  g=htrigmc7.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(7);
+  legtrig->AddEntry(g,Form("Macrocell 7: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc7.DrawClone("nonewsame");
+  legtrig->DrawClone();
+  c7->cd(3);
+  TLegend *legtrig = new TLegend(0.80,0.75,0.99,0.99);
+  TGraph *g = htrigmc8.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(2);
+  legtrig->AddEntry(g,Form("Macrocell 8: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  g->SetTitle("Trigger rate of mc 8-13 : (maximum)");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  MHPixVsTime *pixclone1 = (MHPixVsTime*)htrigmc8.DrawClone("nonew");
+  TH1 *hist = pixclone1->GetGraph()->GetHistogram();
+  hist->SetXTitle("Time");
+  hist->SetYTitle("Trigger [Hz]");
+  g=htrigmc9.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(3);
+  legtrig->AddEntry(g,Form("Macrocell 9: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc9.DrawClone("nonewsame");
+  g=htrigmc10.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(4);
+  legtrig->AddEntry(g,Form("Macrocell 10: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc10.DrawClone("nonewsame");
+  g=htrigmc11.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(5);
+  legtrig->AddEntry(g,Form("Macrocell 11: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc11.DrawClone("nonewsame");
+  g=htrigmc12.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(6);
+  legtrig->AddEntry(g,Form("Macrocell 12: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  pixclone1 = (MHPixVsTime*)htrigmc12.DrawClone("nonewsame");
+  g=htrigmc13.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(7);
+  legtrig->AddEntry(g,Form("Macrocell 13: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc13.DrawClone("nonewsame");
+  legtrig->DrawClone();
+  c7->cd(4);
+  TLegend *legtrig = new TLegend(0.80,0.75,0.99,0.99);
+  TGraph *g = htrigmc14.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(2);
+  legtrig->AddEntry(g,Form("Macrocell 14: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  g->SetTitle("Trigger rate of mc 14-19 : (maximum)");
+  MHPixVsTime *pixclone1 = (MHPixVsTime*)htrigmc14.DrawClone("nonew");
+  TH1 *hist = pixclone1->GetGraph()->GetHistogram();
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  hist->SetXTitle("Time");
+  hist->SetYTitle("Trigger [Hz]");
+  g=htrigmc15.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(3);
+  legtrig->AddEntry(g,Form("Macrocell 15: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc15.DrawClone("nonewsame");
+  g=htrigmc16.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(4);
+  legtrig->AddEntry(g,Form("Macrocell 16: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc16.DrawClone("nonewsame");
+  g=htrigmc17.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(5);
+  legtrig->AddEntry(g,Form("Macrocell 17: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc17.DrawClone("nonewsame");
+  g=htrigmc18.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(6);
+  legtrig->AddEntry(g,Form("Macrocell 18: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc18.DrawClone("nonewsame");
+  g=htrigmc19.GetGraph();
+  g->SetMarkerStyle(kFullDotSmall);
+  g->SetMarkerColor(7);
+  legtrig->AddEntry(g,Form("Macrocell 19: %3.0f",g->GetHistogram()->GetMaximum()),"p");
+  if(hist->GetMaximum()<g->GetHistogram()->GetMaximum())
+    hist->SetMaximum(g->GetHistogram()->GetMaximum());
+  pixclone1 = (MHPixVsTime*)htrigmc19.DrawClone("nonewsame");
+  legtrig->DrawClone();
+
+  //
+  // *************************** Weather station ******************************
+  //
+  TCanvas &c8 = d.AddTab("WEATHER STATION");
+  c8->Divide(2,2);
+  // ----------------------- Relative humidity --------------------------------
+  c8->cd(1);
   TGraph *g = hCCHum.GetGraph();
   g->SetMarkerStyle(kFullDotSmall);
@@ -563,6 +1063,6 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("Humidity [%]"); 
-  // Temperature
-  c6->cd(2);
+  // -------------------------- Temperature -----------------------------------
+  c8->cd(2);
   TGraph *g = hCCTemp.GetGraph();
   g->SetMarkerStyle(kFullDotSmall);
@@ -574,6 +1074,6 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("Temperature [\\circ C]"); 
-  // Wind speed
-  c6->cd(3);
+  // --------------------------- Wind speed -----------------------------------
+  c8->cd(3);
   TGraph *g = hCCWS.GetGraph();
   g->SetMarkerStyle(kFullDotSmall);
@@ -585,6 +1085,6 @@
   hist->SetXTitle("Time");
   hist->SetYTitle("Wind speed [km/h]"); 
-  // Solar radiation
-  c6->cd(4);
+  // -------------------------- Solar radiation -------------------------------
+  c8->cd(4);
   TGraph *g = hCCSR.GetGraph();
   g->SetMarkerStyle(kFullDotSmall);
@@ -607,5 +1107,4 @@
 	file = filename(0, filename.Last('.')); 
 
-//  	TString file = filename.Remove(filename.Index("."),5);
       // Save data in a postscriptfile (status.ps)
       d->SaveAsPS(-1,Form("%s.ps",file));
Index: /trunk/MagicSoft/Mars/mhist/MHPixVsTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHPixVsTime.cc	(revision 3081)
+++ /trunk/MagicSoft/Mars/mhist/MHPixVsTime.cc	(revision 3082)
@@ -68,6 +68,6 @@
     t += " vs Time";
 
-    fGraph.SetName("MCamEvent");
-    fGraph.SetTitle(t);
+    fGraph->SetName("MCamEvent");
+    fGraph->SetTitle(t);
 }
 
@@ -151,7 +151,7 @@
         t = fTime->GetAxisTime();
     else
-        t = fHeader ? fHeader->GetDAQEvtNumber() : fGraph.GetN();
-
-    fGraph.SetPoint(fGraph.GetN(), t, val);
+        t = fHeader ? fHeader->GetDAQEvtNumber() : fGraph->GetN();
+
+    fGraph->SetPoint(fGraph->GetN(), t, val);
     return kTRUE;
 }
@@ -172,25 +172,19 @@
 TH1 *MHPixVsTime::GetHistByName(const TString name)
 {
-    return fGraph.GetHistogram();
-}
-
-void MHPixVsTime::Draw(Option_t *)
-{
-    /*
+    return fGraph->GetHistogram();
+}
+
+void MHPixVsTime::Draw(Option_t *opt)
+{
+
+    if (fGraph->GetN()==0)
+        return;
+
     TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(this);
     pad->SetBorderMode(0);
 
-    pad->Divide(2,2);
-
-    pad->cd(1);
-    gPad->SetBorderMode(0);
-    gPad->Divide(1,1);
-    gPad->cd(1);
-    gPad->SetBorderMode(0);
-    fSum->Draw();
-
-    pad->cd(3);
-    gPad->SetBorderMode(0);
-    fSum->Draw("EPhist");
+    AppendPad("");
+
+    TString str(opt);
 
     fGraph->GetHistogram()->SetXTitle("Time");
@@ -198,4 +192,22 @@
     fGraph->GetHistogram()->GetXaxis()->SetTimeDisplay(1);
     fGraph->GetHistogram()->GetXaxis()->SetLabelSize(0.033);
-    */
-}
+
+    fGraph->GetHistogram()->SetYTitle("");
+
+    if (!str.Contains("A"))
+        str += "A";
+    if (!str.Contains("P"))
+        str += "P";
+
+    if (str.Contains("same", TString::kIgnoreCase))
+    {
+        str.ReplaceAll("same", "");
+        str.ReplaceAll("A", "");
+    }
+
+    fGraph->Draw(str);
+
+    pad->Modified();
+    pad->Update();
+
+}
Index: /trunk/MagicSoft/Mars/mhist/MHPixVsTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHPixVsTime.h	(revision 3081)
+++ /trunk/MagicSoft/Mars/mhist/MHPixVsTime.h	(revision 3082)
@@ -20,5 +20,5 @@
 {
 private:
-    TGraph     fGraph;
+    TGraph     *fGraph;
     Int_t      fIndex;
 
@@ -48,7 +48,7 @@
 
     TH1 *GetHistByName(const TString name="");
-    TGraph &GetGraph() { return fGraph; }
+    TGraph *GetGraph() { return fGraph; }
 
-    void Draw(Option_t *o="");
+    void Draw(Option_t *o=NULL);
 
     ClassDef(MHPixVsTime, 1) // Histogram to sum camera events
@@ -56,2 +56,5 @@
 
 #endif
+
+
+
Index: /trunk/MagicSoft/Mars/mreport/MReportTrigger.h
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 3081)
+++ /trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 3082)
@@ -5,4 +5,7 @@
 #include "MReport.h"
 #endif
+#ifndef MARS_MCamEvent
+#include "MCamEvent.h"
+#endif
 
 #ifndef ROOT_TArrayF
@@ -10,5 +13,5 @@
 #endif
 
-class MReportTrigger : public MReport
+class MReportTrigger : public MReport, public MCamEvent
 {
 private:
@@ -27,4 +30,18 @@
     Float_t GetL2AfterPrescaler() const { return fL2AfterPrescaler; }
 
+    Bool_t GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const
+      {
+  	if(idx<19)
+	  {
+	    val = fPrescalerRates[idx];
+	    return val>0;
+	  }
+	else
+	  val = kFALSE;
+      }
+    void DrawPixelContent(Int_t num) const
+      {
+      }
+
     ClassDef(MReportTrigger, 1) // Class for TRIGGER-REPORT information
 };
