Index: trunk/MagicSoft/Mars/mhist/MFillH.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MFillH.cc	(revision 2413)
+++ trunk/MagicSoft/Mars/mhist/MFillH.cc	(revision 2414)
@@ -324,4 +324,7 @@
     const Ssiz_t length = last-first-1;
 
+    //
+    // Make a copy before stripping leading and trailing White Spaces.
+    //
     TString strip = fHName(first+1, length);
     return strip.Strip(TString::kBoth);
@@ -340,12 +343,36 @@
         return kTRUE;
 
-    if (!fH->OverwritesDraw())
-        return kTRUE;
-
     if (TestBit(kDoNotDisplay))
         return kTRUE;
 
+    const Bool_t dr = fH->OverwritesDraw();
+    const Bool_t ts = fH->OverwritesDraw(NULL, "TS");
+    if (!dr && !ts)
+        return kTRUE;
+
+    if (!ts)
+    {
+        *fLog << warn << "You overwrote " << fH->ClassName() << "::";
+        *fLog << "Draw instead of " << fH->ClassName() << "::DrawTS" << endl;
+        *fLog << "This is not thread safe and might result in trouble using" << endl;
+        *fLog << "multithreaded programs like MONA." << endl;
+        *fLog << "" << endl;
+        return kTRUE;
+    }
+
     fCanvas = &fDisplay->AddTab(fH->GetName());
-    fH->Draw();
+    fH->DrawTS(fCanvas);
+
+    return kTRUE;
+}
+
+// --------------------------------------------------------------------------
+//
+//
+Bool_t MFillH::DrawCloneToDisplay()
+{
+    fH->DrawCloneTS(fCanvas);
+    fCanvas->Modified();
+    fCanvas->Update();
 
     return kTRUE;
@@ -506,10 +533,5 @@
     //
     if (fDisplay && fDisplay->HasCanvas(fCanvas))
-    {
-        fCanvas->cd();
-        fH->DrawClone("nonew");
-        fCanvas->Modified();
-        fCanvas->Update();
-    }
+        DrawCloneToDisplay();
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mhist/MFillH.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MFillH.h	(revision 2413)
+++ trunk/MagicSoft/Mars/mhist/MFillH.h	(revision 2414)
@@ -44,4 +44,5 @@
 
     Bool_t DrawToDisplay();
+    Bool_t DrawCloneToDisplay();
 
 public:
@@ -63,4 +64,7 @@
     Int_t PostProcess();
 
+    MH *GetH() { return fH; }
+    TCanvas *GetCanvas() { return fCanvas; }
+
     ClassDef(MFillH, 2) // Task to fill a histogram with data from a parameter container
 };
Index: trunk/MagicSoft/Mars/mhist/MHHadronness.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHHadronness.cc	(revision 2413)
+++ trunk/MagicSoft/Mars/mhist/MHHadronness.cc	(revision 2414)
@@ -503,5 +503,5 @@
     gPad->SetBorderMode(0);
     //gStyle->SetOptStat(10);
-    MH::Draw(*fGhness, *fPhness, "Hadronness"); // Displ both stat boxes
+    MH::DrawSame(*fGhness, *fPhness, "Hadronness"); // Displ both stat boxes
 
     pad->cd(2);
Index: trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.cc	(revision 2413)
+++ trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.cc	(revision 2414)
@@ -171,20 +171,26 @@
 }
 
-void MHTriggerLvl0::Draw(Option_t *)
+void MHTriggerLvl0::DrawTS(TVirtualPad *p=NULL, Option_t * ="")
 {
-    TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(this);
+    TVirtualPad *pad = p ? p : MakeDefCanvas(this);
     pad->SetBorderMode(0);
 
+    //-----------------------------
     pad->Divide(1,2);
 
-    pad->cd(1);
-    gPad->SetBorderMode(0);
-    gPad->Divide(1,1);
-    gPad->cd(1);
-    gPad->SetBorderMode(0);
-    fSum->Draw();
+    p = pad->GetPad(1);
+    p->SetBorderMode(0);
+    p->Divide(1,1);
+    p->cd(1);
+    p->SetBorderMode(0);
+    // fSum does not derive from MParContainer
+    MParContainer::DrawTS(fSum, p);
 
-    pad->cd(2);
-    gPad->SetBorderMode(0);
-    fSum->Draw("EPhist");
+    p = pad->GetPad(2);
+    p->SetBorderMode(0);
+    // fSum does not derive from MParContainer
+    MParContainer::DrawTS(fSum, p, "EPhist");
+    //-----------------------------
+
+    //MParContainer::DrawTS(fSum, p);
 }
Index: trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.h	(revision 2413)
+++ trunk/MagicSoft/Mars/mhist/MHTriggerLvl0.h	(revision 2414)
@@ -34,5 +34,6 @@
     TH1 *GetHistByName(const TString name="");
 
-    void Draw(Option_t * ="");
+    //void Draw(Option_t * ="");
+    void DrawTS(TVirtualPad *pad=NULL, Option_t * ="");
 
     void PrintOutlayers(Float_t s) const;
