Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 3068)
+++ trunk/MagicSoft/Mars/Changelog	(revision 3069)
@@ -4,4 +4,30 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2004/02/09: Thomas Bretz
+
+  * mbadpixels/*:
+    - added
+
+   * Makefile:
+     - added MBadPixels
+
+   * manalysis/MGeomApply.cc:
+     - fixed class description
+
+   * mjobs/MJCalibration.[h,cc], mjobs/MJExtractSignal.[h,cc]:
+     - added bad pixel treatment
+
+   * mjobs/MJPedestal.[h,cc]:
+     - reorganized order of functions
+     - removed a nonsense scrren output (some BLABABLA or so)
+
+   * mjobs/Makefile:
+     - added include for mbadpixels
+
+   * mmain/MBrowser.cc:
+     - do not call construtor of TGTReeLBEntry if pic0=0
+
+
+
  2004/02/09: Raquel de los Reyes
 
@@ -14,10 +40,10 @@
  2004/02/09: Markus Gaug
 
-  * MMcCalibrationUpdate.cc, MCalibrate.cc, MCalibrationPix.cc,
-    MCalibrationPix.h:
-    - replace MCalibrationPix->IsChargeFitValid() by IsChargeValid()
-      because we can calibrate with the histogram mean and RMS even 
-      if the fit is not OK. Thus, there is a question: IsFitted() and 
-      IsChargeValid(), i.e. does the charge make any sense? 
+   * MMcCalibrationUpdate.cc, MCalibrate.cc, MCalibrationPix.cc,
+     MCalibrationPix.h:
+     - replace MCalibrationPix->IsChargeFitValid() by IsChargeValid()
+       because we can calibrate with the histogram mean and RMS even 
+       if the fit is not OK. Thus, there is a question: IsFitted() and 
+       IsChargeValid(), i.e. does the charge make any sense? 
 
    * MCalibrationCam.cc, MCalibrationConfig.h, MCalibrationCalc.cc:
Index: trunk/MagicSoft/Mars/Makefile
===================================================================
--- trunk/MagicSoft/Mars/Makefile	(revision 3068)
+++ trunk/MagicSoft/Mars/Makefile	(revision 3069)
@@ -43,4 +43,5 @@
           mhist \
           manalysis \
+          mbadpixels \
 	  mcalib \
           mfileio \
Index: trunk/MagicSoft/Mars/manalysis/MGeomApply.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MGeomApply.cc	(revision 3068)
+++ trunk/MagicSoft/Mars/manalysis/MGeomApply.cc	(revision 3069)
@@ -24,7 +24,7 @@
 
 //////////////////////////////////////////////////////////////////////////////
-//                                                                        
-//  MGeomApply                                                            
-//                                                                        
+//
+//  MGeomApply
+//
 //  Applies the geometry to geometry dependant containers.
 //
@@ -33,5 +33,9 @@
 //
 //   MPedestalCam
+//   MCalibrationCam
+//   MPedPhotCam
+//   MExtractedSignalCam
 //   MBlindPixels
+//   MArrivalTime
 //
 //  It uses the geometry (MGeomCam) found in the parameter list.
@@ -45,5 +49,9 @@
 //  Output Containers:
 //   [MPedestalCam]
+//   [MCalibrationCam]
+//   [MPedPhotCam]
+//   [MExtractedSignalCam]
 //   [MBlindPixels]
+//   [MArrivalTime]
 //
 //////////////////////////////////////////////////////////////////////////////
@@ -114,32 +122,29 @@
     // the use of some camera files from the 0.7 beta version in which the 
     // array containing pixel ratios is not initialized.
-
     cam->CalcPixRatio();
 
     MPedestalCam *ped = (MPedestalCam*)pList->FindObject(AddSerialNumber("MPedestalCam"));
     if (ped)
-      ped->InitSize(cam->GetNumPixels());
-
+        ped->InitSize(cam->GetNumPixels());
 
     MCalibrationCam *cal = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationCam"));
     if (cal)
-      cal->InitSize(cam->GetNumPixels());
-
+        cal->InitSize(cam->GetNumPixels());
 
     MPedPhotCam *pedphot = (MPedPhotCam*)pList->FindObject(AddSerialNumber("MPedPhotCam"));
     if (pedphot)
-      pedphot->InitSize(cam->GetNumPixels());
+        pedphot->InitSize(cam->GetNumPixels());
 
     MExtractedSignalCam *ext = (MExtractedSignalCam*)pList->FindObject(AddSerialNumber("MExtractedSignalCam"));
     if (ext)
-      ext->InitSize(cam->GetNumPixels());
+        ext->InitSize(cam->GetNumPixels());
 
     MBlindPixels *bnd = (MBlindPixels*)pList->FindObject(AddSerialNumber("MBlindPixels"));
     if (bnd)
-      bnd->InitSize(cam->GetNumPixels());
+        bnd->InitSize(cam->GetNumPixels());
 
     MArrivalTime *tme = (MArrivalTime*)pList->FindObject(AddSerialNumber("MArrivalTime"));
     if (tme)
-      tme->InitSize(cam->GetNumPixels());
+        tme->InitSize(cam->GetNumPixels());
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 3069)
@@ -51,4 +51,5 @@
 #include "MReadMarsFile.h"
 #include "MGeomApply.h"
+#include "MBadPixelsMerge.h"
 #include "MExtractSignal.h"
 #include "MExtractSignal2.h"
@@ -382,4 +383,11 @@
         return kFALSE;
     }
+
+    if (fBadPixels.Write()<=0)
+    {
+        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
+        return kFALSE;
+    }
+
     return kTRUE;
 
@@ -426,4 +434,15 @@
         *fLog << "Unable to read MCalibrationCam from " << fname << endl;
         return kFALSE;
+    }
+
+    if (file.FindKey("MBadPixelsCam"))
+    {
+        MBadPixelsCam bad;
+        if (bad.Read()<=0)
+        {
+            *fLog << "Unable to read MBadPixelsCam from " << fname << endl;
+            return kFALSE;
+        }
+        fBadPixels.Merge(bad);
     }
 
@@ -466,4 +485,6 @@
 
     MGeomApply       apply;
+    MBadPixelsMerge  merge(&fBadPixels);
+    // MExtractSignal   extract; // Do not use this at the moment...
     MExtractSignal2  extract;
     MCalibrationCalc calcalc;
@@ -476,6 +497,7 @@
     //calcalc.SkipBlindPixelFit();
 
+    tlist.AddToList(&read);
     tlist.AddToList(&apply);
-    tlist.AddToList(&read);
+    tlist.AddToList(&merge);
     tlist.AddToList(&extract);
     tlist.AddToList(&calcalc);
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 3069)
@@ -4,4 +4,7 @@
 #ifndef MARS_MCalibrationCam
 #include "MCalibrationCam.h"
+#endif
+#ifndef MARS_MBadPixelsCam
+#include "MBadPixelsCam.h"
 #endif
 
@@ -21,4 +24,5 @@
 
     MCalibrationCam fCalibrationCam;
+    MBadPixelsCam   fBadPixels;
 
     void DrawProjection(MHCamera *obj1, Int_t fit) const;
@@ -35,5 +39,9 @@
 
     TString GetOutputFile() const;
-    MCalibrationCam &GetCalibrationCam() { return fCalibrationCam; }
+
+    const MCalibrationCam &GetCalibrationCam() const { return fCalibrationCam; }
+    const MBadPixelsCam   &GetBadPixels()      const { return fBadPixels; }
+
+    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
 
     Bool_t ReadCalibrationCam();
Index: trunk/MagicSoft/Mars/mjobs/MJExtractSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJExtractSignal.cc	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJExtractSignal.cc	(revision 3069)
@@ -51,4 +51,5 @@
 #include "MReadMarsFile.h"
 #include "MGeomApply.h"
+#include "MBadPixelsMerge.h"
 #include "MExtractSignal.h"
 #include "MFillH.h"
@@ -236,4 +237,11 @@
         return kFALSE;
     }
+
+    if (fBadPixels.Write()<=0)
+    {
+        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
+        return kFALSE;
+    }
+
     return kTRUE;
 
@@ -301,6 +309,7 @@
     plist.AddToList(&tlist);
 
-    MGeomApply     apply; // Only necessary to craete geometry
-    MExtractSignal extract;
+    MGeomApply      apply; // Only necessary to craete geometry
+    MBadPixelsMerge merge(&fBadPixels);
+    MExtractSignal  extract;
 
     MHCamEvent evt("ExtSignal");
@@ -313,7 +322,9 @@
     write.AddContainer("MRawRunHeader",       "RunHeaders");
     write.AddContainer("MPedestalCam",        "RunHeaders");
+    write.AddContainer("MBadPixelsCam",       "RunHeaders");
 
     tlist.AddToList(&read);
     tlist.AddToList(&apply);
+    tlist.AddToList(&merge);
     tlist.AddToList(&extract);
     if (TestBit(kEnableGraphicalOutput))
@@ -365,4 +376,15 @@
     }
 
+    if (file.FindKey("MBadPixelsCam"))
+    {
+        MBadPixelsCam bad;
+        if (bad.Read()<=0)
+        {
+            *fLog << "Unable to read MBadPixelsCam from " << fname << endl;
+            return kFALSE;
+        }
+        fBadPixels.Merge(bad);
+    }
+
     if (fDisplay /*&& !fDisplay->GetCanvas("Pedestals")*/) // FIXME!
         fDisplay->Read();
@@ -406,12 +428,14 @@
     plist.AddToList(&calcam);
     plist.AddToList(&fPedPhotCam);
+    plist.AddToList(&fBadPixels);
 
     MTaskList tlist;
     plist.AddToList(&tlist);
 
-    MGeomApply     apply; // Only necessary to craete geometry
-    MExtractSignal extract;
-    MCalibrate     calib;
-    MPedPhotCalc   calc;
+    MGeomApply      apply; // Only necessary to craete geometry
+    MBadPixelsMerge merge(&fBadPixels);
+    MExtractSignal  extract;
+    MCalibrate      calib;
+    MPedPhotCalc    calc;
 
     MHCamEvent evt1("ExtOffset");
@@ -424,4 +448,5 @@
     tlist.AddToList(&read);
     tlist.AddToList(&apply);
+    tlist.AddToList(&merge);
     tlist.AddToList(&extract);
     if (TestBit(kEnableGraphicalOutput))
Index: trunk/MagicSoft/Mars/mjobs/MJExtractSignal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJExtractSignal.h	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJExtractSignal.h	(revision 3069)
@@ -4,4 +4,7 @@
 #ifndef MARS_MPedPhotCam
 #include "MPedPhotCam.h"
+#endif
+#ifndef MARS_MBadPixelsCam
+#include "MBadPixelsCam.h"
 #endif
 
@@ -21,5 +24,6 @@
     MRunIter *fRuns;
 
-    MPedPhotCam fPedPhotCam;
+    MPedPhotCam   fPedPhotCam;
+    MBadPixelsCam fBadPixels;
 
     void   DisplayResult(MParList &plist);
@@ -40,8 +44,11 @@
     TString GetOutputFileD() const;
 
+    const MPedPhotCam   &GetPedPhotCam() const { return fPedPhotCam; }
+    const MBadPixelsCam &GetBadPixels()  const { return fBadPixels; }
+
+    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
+
     Bool_t ProcessD(MPedestalCam &pedcam);
     Bool_t ProcessP(MPedestalCam &pedcam, MCalibrationCam &calcam);
-
-    const MPedPhotCam &GetPedPhotCam() const { return fPedPhotCam; }
 
     ClassDef(MJExtractSignal, 0) // Tool to create a pedestal file (MPedestalCam)
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 3069)
@@ -52,4 +52,5 @@
 #include "MReadMarsFile.h"
 #include "MGeomApply.h"
+#include "MBadPixelsMerge.h"
 #include "MPedCalcPedRun.h"
 
@@ -87,6 +88,17 @@
     if (fPedestalCam.Read()<=0)
     {
-        *fLog << "Unable to read MPedestalCam from " << fname << endl;
-        return kFALSE;
+        *fLog << err << "Unable to read MPedestalCam from " << fname << endl;
+        return kFALSE;
+    }
+
+    if (file.FindKey("MBadPixelsCam"))
+    {
+        MBadPixelsCam bad;
+        if (bad.Read()<=0)
+        {
+            *fLog << err << "Unable to read MBadPixelsCam from " << fname << endl;
+            return kFALSE;
+        }
+        fBadPixels.Merge(bad);
     }
 
@@ -95,4 +107,80 @@
 
     return kTRUE;
+}
+
+void MJPedestal::DrawProjection(MHCamera *obj1, Int_t fit) const
+{
+    TH1D *obj2 = (TH1D*)obj1->Projection();
+    obj2->Draw();
+    obj2->SetBit(kCanDelete);
+
+    const Double_t min   = obj2->GetBinCenter(obj2->GetXaxis()->GetFirst());
+    const Double_t max   = obj2->GetBinCenter(obj2->GetXaxis()->GetLast());
+    const Double_t integ = obj2->Integral("width")/2.5066283;
+    const Double_t mean  = obj2->GetMean();
+    const Double_t rms   = obj2->GetRMS();
+    const Double_t width = max-min;
+
+    if (rms==0 || width==0)
+        return;
+
+    const TString dgausformula("([0]-[3])/[2]*exp(-0.5*(x-[1])*(x-[1])/[2]/[2])"
+                               "+[3]/[5]*exp(-0.5*(x-[4])*(x-[4])/[5]/[5])");
+
+    TF1 *f=0;
+    switch (fit)
+    {
+        // FIXME: MAYBE add function to TH1?
+    case 0:
+        f = new TF1("sgaus", "gaus(0)", min, max);
+        f->SetLineColor(kYellow);
+        f->SetBit(kCanDelete);
+        f->SetParNames("Area", "#mu", "#sigma");
+        f->SetParameters(integ/rms, mean, rms);
+        f->SetParLimits(0, 0,   integ);
+        f->SetParLimits(1, min, max);
+        f->SetParLimits(2, 0,   width/1.5);
+        obj2->Fit(f, "QLRM");
+        break;
+
+    case 1:
+        f = new TF1("dgaus", dgausformula, min, max);
+        f->SetLineColor(kYellow);
+        f->SetBit(kCanDelete);
+        f->SetParNames("A_{tot}", "#mu_{1}", "#sigma_{1}", "A_{2}", "#mu_{2}", "#sigma_{2}");
+        f->SetParameters(integ,         (min+mean)/2, width/4,
+                         integ/width/2, (max+mean)/2, width/4);
+        // The left-sided Gauss
+        f->SetParLimits(0, integ-1.5,      integ+1.5);
+        f->SetParLimits(1, min+(width/10), mean);
+        f->SetParLimits(2, 0,              width/2);
+        // The right-sided Gauss
+        f->SetParLimits(3, 0,    integ);
+        f->SetParLimits(4, mean, max-(width/10));
+        f->SetParLimits(5, 0,    width/2);
+        obj2->Fit(f, "QLRM");
+        break;
+
+    default:
+        obj2->Fit("gaus", "Q");
+        obj2->GetFunction("gaus")->SetLineColor(kYellow);
+        break;
+    }
+}
+
+void MJPedestal::CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit)
+{
+    c.cd(x);
+    gPad->SetBorderMode(0);
+    MHCamera *obj1=(MHCamera*)cam1.DrawCopy("hist");
+    obj1->AddNotify(fPedestalCam);
+
+    c.cd(x+y);
+    gPad->SetBorderMode(0);
+    obj1->Draw();
+
+    c.cd(x+2*y);
+    gPad->SetBorderMode(0);
+    DrawProjection(obj1, fit);
 }
 
@@ -123,7 +211,8 @@
 
     disp0.SetCamContent(fPedestalCam, 0);
-    disp0.SetCamError(fPedestalCam, 1);
+    disp0.SetCamError  (fPedestalCam, 1);
+
     disp1.SetCamContent(fPedestalCam, 2);
-    disp1.SetCamError(fPedestalCam, 3);
+    disp1.SetCamError  (fPedestalCam, 3);
 
     disp0.SetYTitle("P [fadc/slice]");
@@ -136,93 +225,7 @@
     c3.Divide(2,3);
 
-    *fLog << "BALBALBALBA" <<endl;
-
     CamDraw(c3, 1, 2, disp0, 0);
     CamDraw(c3, 2, 2, disp1, 1);
-
-}
-
-
-void MJPedestal::DrawProjection(MHCamera *obj1, Int_t fit) const
-{
-  
-  TH1D *obj2 = (TH1D*)obj1->Projection();
-  obj2->Draw();
-  obj2->SetBit(kCanDelete);
-  
-  const Double_t min   = obj2->GetBinCenter(obj2->GetXaxis()->GetFirst());
-  const Double_t max   = obj2->GetBinCenter(obj2->GetXaxis()->GetLast());
-  const Double_t integ = obj2->Integral("width")/2.5066283;
-  const Double_t mean  = obj2->GetMean();
-  const Double_t rms   = obj2->GetRMS();
-  const Double_t width = max-min;
-  
-  if (rms == 0. || width == 0. )
-    return;
-
-  const TString dgausformula = TString("([0]-[3])/[2]*exp(-0.5*(x-[1])*(x-[1])/[2]/[2])"
-                                       "+[3]/[5]*exp(-0.5*(x-[4])*(x-[4])/[5]/[5])");
-
-  TF1 *f=0;
-  switch (fit)
-    {
-    case 0:
-      f = new TF1("sgaus","gaus(0)",min,max);
-      f->SetLineColor(kYellow);
-      f->SetBit(kCanDelete);
-      f->SetParNames("Area","#mu","#sigma");
-      f->SetParameters(integ/rms,mean,rms);
-      f->SetParLimits(0, 0.  , integ);
-      f->SetParLimits(1, min , max);
-      f->SetParLimits(2, 0   , width/1.5);
-      obj2->Fit(f,"QLRM");
-      break;
-      
-    case 1:
-      f = new TF1("dgaus",dgausformula.Data(),min,max);
-      f->SetLineColor(kYellow);
-      f->SetBit(kCanDelete);
-      f->SetParNames("A_{tot}","#mu_{1}","#sigma_{1}","A_{2}","#mu_{2}","#sigma_{2}");
-      f->SetParameters(integ,(min+mean)/2.,width/4.,
-                       integ/width/2.,(max+mean)/2.,width/4.);
-      // The left-sided Gauss 
-      f->SetParLimits(0,integ-1.5      , integ+1.5);
-      f->SetParLimits(1,min+(width/10.), mean);
-      f->SetParLimits(2,0              , width/2.);
-      // The right-sided Gauss 
-      f->SetParLimits(3,0   , integ);
-      f->SetParLimits(4,mean, max-(width/10.));
-      f->SetParLimits(5,0   , width/2.);
-      obj2->Fit(f,"QLRM");
-      break;
-      
-    default:
-      obj2->Fit("gaus","Q");
-      obj2->GetFunction("gaus")->SetLineColor(kYellow);
-      break;
-    }
-}
-
-
-
-void MJPedestal::CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit)
-{
-
-    c.cd(x);
-    gPad->SetBorderMode(0);
-    MHCamera *obj1=(MHCamera*)cam1.DrawCopy("hist");
-    obj1->AddNotify(fPedestalCam);
-
-    c.cd(x+y);
-    gPad->SetBorderMode(0);
-    obj1->Draw();
-    ((MHCamera*)obj1)->SetPrettyPalette();
-
-    c.cd(x+2*y);
-    gPad->SetBorderMode(0);
-    DrawProjection(obj1, fit);
-
-}
-
+}
 
 Bool_t MJPedestal::WriteResult()
@@ -248,4 +251,11 @@
         return kFALSE;
     }
+
+    if (fBadPixels.Write()<=0)
+    {
+        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
+        return kFALSE;
+    }
+
     return kTRUE;
 }
@@ -298,10 +308,12 @@
     plist.AddToList(&tlist);
 
-    MGeomApply     geomapl;
+    MGeomApply      geomapl;
+    MBadPixelsMerge merge(&fBadPixels);
     //MExtractSignal sigcalc;
-    MPedCalcPedRun pedcalc;
+    MPedCalcPedRun  pedcalc;
 
     tlist.AddToList(&read);
     tlist.AddToList(&geomapl);
+    tlist.AddToList(&merge);
     //tlist.AddToList(&sigcalc);
     tlist.AddToList(&pedcalc);
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 3069)
@@ -4,4 +4,7 @@
 #ifndef MARS_MPedestalCam
 #include "MPedestalCam.h"
+#endif
+#ifndef MARS_MBadPixelsCam
+#include "MBadPixelsCam.h"
 #endif
 
@@ -17,10 +20,13 @@
     MRunIter *fRuns;
 
-    MPedestalCam fPedestalCam;
+    MPedestalCam  fPedestalCam;
+    MBadPixelsCam fBadPixels;
 
+    Bool_t ReadPedestalCam();
+    Bool_t WriteResult();
+    
     void   DrawProjection(MHCamera *obj1, Int_t fit) const;
     void   CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit);
     void   DisplayResult(MParList &plist);
-    Bool_t WriteResult();
 
 public:
@@ -31,7 +37,10 @@
 
     TString GetOutputFile() const;
-    MPedestalCam &GetPedestalCam() { return fPedestalCam; }
 
-    Bool_t ReadPedestalCam();
+    const MPedestalCam  &GetPedestalCam() const { return fPedestalCam; }
+    const MBadPixelsCam &GetBadPixels()   const { return fBadPixels; }
+
+    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
+
     Bool_t ProcessFile();
     Bool_t Process();
Index: trunk/MagicSoft/Mars/mjobs/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mjobs/Makefile	(revision 3068)
+++ trunk/MagicSoft/Mars/mjobs/Makefile	(revision 3069)
@@ -23,5 +23,6 @@
 #
 INCLUDES = -I. -I../mbase -I../mgui -I../mgeom -I../mdata -I../mhbase \
-	   -I../mfileio -I../mfilter -I../manalysis -I../mhist -I../mcalib
+	   -I../mfileio -I../mfilter -I../manalysis -I../mhist -I../mcalib \
+           -I../mbadpixels
 
 #manalysis: MChisqEval (MParameters)
Index: trunk/MagicSoft/Mars/mmain/MBrowser.cc
===================================================================
--- trunk/MagicSoft/Mars/mmain/MBrowser.cc	(revision 3068)
+++ trunk/MagicSoft/Mars/mmain/MBrowser.cc	(revision 3069)
@@ -137,11 +137,14 @@
 
     const TGPicture *pic0 = fList->GetPicture("magic_t.xpm");
-    TGTreeLBEntry *entry = new TGTreeLBEntry(dir->GetListBox()->GetContainer(),
-                                             new TGString("/data/MAGIC"), pic0, 6000,
-                                             new TGString("/data/MAGIC"));
-    TGLayoutHints *laylb = new TGLayoutHints(kLHintsLeft|kLHintsTop, 14, 0, 0, 0);
-    dir->AddEntry(entry, laylb);
-    // Note necessary - deleted in ~TGLBContainer: fList->Add(laylb);
-    fList->Add(entry);
+    if (!pic0)
+    {
+        TGTreeLBEntry *entry = new TGTreeLBEntry(dir->GetListBox()->GetContainer(),
+                                                 new TGString("/data/MAGIC"), pic0, 6000,
+                                                 new TGString("/data/MAGIC"));
+        TGLayoutHints *laylb = new TGLayoutHints(kLHintsLeft|kLHintsTop, 14, 0, 0, 0);
+        dir->AddEntry(entry, laylb);
+        // Note necessary - deleted in ~TGLBContainer: fList->Add(laylb);
+        fList->Add(entry);
+    }
 
     //
