Index: trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.cc	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.cc	(revision 954)
@@ -109,4 +109,21 @@
 }
 
+TObject *MHMcCollectionArea::DrawClone(Option_t* option)
+{
+    TCanvas *c=new TCanvas(fHistCol->GetName(), fHistCol->GetTitle());
+
+    //
+    // This is necessary to get the expected bahviour of DrawClone
+    //
+    gROOT->SetSelectedPad(NULL);
+
+    fHistCol->DrawClone(option);
+
+    c->Modified();
+    c->Update();
+
+    return c;
+}
+
 void MHMcCollectionArea::Draw(Option_t* option)
 {
Index: trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.h	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcCollectionArea.h	(revision 954)
@@ -36,5 +36,7 @@
     void DrawAll(Option_t *option = "");
     void DrawSel(Option_t *option = "");
-    void Draw   (Option_t *option = "");
+
+    void Draw(Option_t *option = NULL);
+    TObject *DrawClone(Option_t *option = NULL);
 
     void CalcEfficiency();
Index: trunk/MagicSoft/Mars/mhist/MHMcEnergy.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcEnergy.cc	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcEnergy.cc	(revision 954)
@@ -133,9 +133,5 @@
 }
 
-// ------------------------------------------------------------------------
-// 
-// Drawing function. It creates its own canvas.
-//
-void MHMcEnergy::Draw(Option_t *option)
+void MHMcEnergy::DrawLegend() const
 {
     char text[256];
@@ -144,8 +140,4 @@
     const Float_t max = fHist->GetMaximum();
     const Float_t sum = min+max;
-
-    TCanvas *c=new TCanvas(fHist->GetName(), fHist->GetTitle());
-
-    fHist->Draw(option);
 
     sprintf(text, "Energy Threshold = %4.1f +- %4.1f GeV",
@@ -157,7 +149,39 @@
     label->SetBit(kCanDelete);
     label->Draw();
+}
+
+// ------------------------------------------------------------------------
+// 
+// Drawing function. It creates its own canvas.
+//
+void MHMcEnergy::Draw(Option_t *option)
+{
+    TCanvas *c=new TCanvas(fHist->GetName(), fHist->GetTitle());
+
+    fHist->Draw(option);
+
+    DrawLegend();
 
     c->Modified();
     c->Update();
+}
+
+TObject *MHMcEnergy::DrawClone(Option_t *option)
+{
+    TCanvas *c=new TCanvas(fHist->GetName(), fHist->GetTitle());
+
+    //
+    // This is necessary to get the expected bahviour of DrawClone
+    //
+    gROOT->SetSelectedPad(NULL);
+
+    fHist->DrawClone(option);
+
+    DrawLegend();
+
+    c->Modified();
+    c->Update();
+
+    return c;
 }
 
Index: trunk/MagicSoft/Mars/mhist/MHMcEnergy.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcEnergy.h	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcEnergy.h	(revision 954)
@@ -29,4 +29,6 @@
     Float_t CalcGaussSigma(TF1 *gauss);
 
+    void DrawLegend() const;
+
 public:
 
@@ -47,4 +49,5 @@
 
     void Draw(Option_t* option = "");
+    TObject *DrawClone(Option_t* option = "");
     void Print(Option_t* option = NULL);
 
Index: trunk/MagicSoft/Mars/mhist/MHMcRate.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcRate.cc	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcRate.cc	(revision 954)
@@ -27,4 +27,5 @@
 
 #include "MLog.h"
+#include "MLogManip.h"
 
 ClassImp(MHMcRate);
@@ -35,22 +36,22 @@
     *fTitle = title ? title : "Task to calc the collection area ";
 
-    fPartId=0;              // Type of particle
-
-    fEnergyMax=0.0;         // Maximum Energy in GeV
-    fEnergyMin=1000000.0;   // Minimum Energy in GeV
-
-    fThetaMax=0.0;          // Maximum theta angle of run
-    fThetaMin=370.0;        // Minimum theta angle of run
-    fPhiMax=0.0;            // Maximum phi angle of run
-    fPhiMin=370.0;          // Minimum phi angle of run
-
-    fImpactMax=0.0;         // Maximum impact parameter
-    fImpactMin=100000.0;    // Minimum impact parameter
-
-    fBackTrig=-1.0;         // Number of triggers from background
-    fBackSim=-1.0;          // Number of simulated showers for the background
-
-    fTriggerRate= -1.0;        // Trigger rate in Hz
-    fTriggerRateError= -1.0;   // Estimated error for the trigger rate in Hz
+    fPartId=0;               // Type of particle
+
+    fEnergyMax=0.0;          // Maximum Energy in GeV
+    fEnergyMin=1000000.0;    // Minimum Energy in GeV
+
+    fThetaMax=0.0;           // Maximum theta angle of run
+    fThetaMin=370.0;         // Minimum theta angle of run
+    fPhiMax=0.0;             // Maximum phi angle of run
+    fPhiMin=370.0;           // Minimum phi angle of run
+
+    fImpactMax=0.0;          // Maximum impact parameter
+    fImpactMin=100000.0;     // Minimum impact parameter
+
+    fBackTrig=-1.0;          // Number of triggers from background
+    fBackSim=-1.0;           // Number of simulated showers for the background
+
+    fTriggerRate= -1.0;      // Trigger rate in Hz
+    fTriggerRateError= -1.0; // Estimated error for the trigger rate in Hz
 }
 
@@ -67,6 +68,6 @@
     fFlux0=-1.0;            // dn/dE = fFlux0 * E^{-a}
 
-    fShowerRate= -1.0;        // Showers rate in Hz
-    fShowerRateError=0.0;     // Estimated error of shower rate in Hz
+    fShowerRate= -1.0;      // Showers rate in Hz
+    fShowerRateError=0.0;   // Estimated error of shower rate in Hz
 }
 
@@ -82,9 +83,9 @@
     Init(name, title);
 
-    fSpecIndex=0.0;         // dn/dE = k * e^{- fSpecIndex}
-    fFlux0=-1.0;            // dn/dE = fFlux0 * E^{-a}
-
-    fShowerRate= showrate;               // Showers rate in Hz
-    fShowerRateError=sqrt(showrate);     // Estimated error of shower rate in Hz
+    fSpecIndex=0.0;                  // dn/dE = k * e^{- fSpecIndex}
+    fFlux0=-1.0;                     // dn/dE = fFlux0 * E^{-a}
+
+    fShowerRate= showrate;           // Showers rate in Hz
+    fShowerRateError=sqrt(showrate); // Estimated error of shower rate in Hz
 }
 
@@ -133,18 +134,17 @@
                                 Float_t phi, Float_t impact)
 { 
-  // It updates the limit values 
-
-  if (fThetaMax<theta) fThetaMax=theta;
-  if (fThetaMin>theta) fThetaMin=theta;
-
-  if (fPhiMax<phi) fPhiMax=phi;
-  if (fPhiMin>phi) fPhiMin=phi;
-
-  if (fImpactMax<impact) fImpactMax=impact;
-  if (fImpactMin>impact) fImpactMin=impact;
-
-  if (fEnergyMax<energy) fEnergyMax=energy;
-  if (fEnergyMin>energy) fEnergyMin=energy;
-
+    // It updates the limit values
+
+    if (fThetaMax<theta) fThetaMax=theta;
+    if (fThetaMin>theta) fThetaMin=theta;
+
+    if (fPhiMax<phi) fPhiMax=phi;
+    if (fPhiMin>phi) fPhiMin=phi;
+
+    if (fImpactMax<impact) fImpactMax=impact;
+    if (fImpactMin>impact) fImpactMin=impact;
+
+    if (fEnergyMax<energy) fEnergyMax=energy;
+    if (fEnergyMin>energy) fEnergyMin=energy;
 } 
 
@@ -180,10 +180,10 @@
     if(fBackTrig<0){
         fTriggerRateError = sqrt((trig*fShowerRate*fShowerRate/(simu*simu)) +
-                              (anal2*anal2*1/(fBackSim*back2*back2)));
+                                 (anal2*anal2*1/(fBackSim*back2*back2)));
         fBackTrig=0;
     }
     else
         fTriggerRateError = sqrt((trig*fShowerRate*fShowerRate/(simu*simu)) +
-                              (anal2*anal2*fBackTrig/(back2*back2)));
+                                 (anal2*anal2*fBackTrig/(back2*back2)));
 
     fTriggerRate = trig*fShowerRate/simu + anal2*fBackTrig/back2;
@@ -205,5 +205,11 @@
 //
 void MHMcRate::Draw(Option_t *)
-{ 
-  *fLog << "To be iplemented" << endl;
+{
+    *fLog << dbginf << "To be iplemented" << endl;
+}
+
+TObject *MHMcRate::DrawClone(Option_t *)
+{
+    *fLog << dbginf << "To be iplemented" << endl;
+    return NULL;
 } 
Index: trunk/MagicSoft/Mars/mhist/MHMcRate.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHMcRate.h	(revision 953)
+++ trunk/MagicSoft/Mars/mhist/MHMcRate.h	(revision 954)
@@ -56,5 +56,7 @@
 
     void Print(Option_t *o=NULL);
+
     void Draw(Option_t *o=NULL);
+    TObject *DrawClone(Option_t *o=NULL);
 
     ClassDef(MHMcRate, 1)  //  Data Container to calculate Collection Area
