Changeset 3069


Ignore:
Timestamp:
02/09/04 15:44:04 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r3067 r3069  
    44
    55                                                 -*-*- END OF LINE -*-*-
     6 2004/02/09: Thomas Bretz
     7
     8  * mbadpixels/*:
     9    - added
     10
     11   * Makefile:
     12     - added MBadPixels
     13
     14   * manalysis/MGeomApply.cc:
     15     - fixed class description
     16
     17   * mjobs/MJCalibration.[h,cc], mjobs/MJExtractSignal.[h,cc]:
     18     - added bad pixel treatment
     19
     20   * mjobs/MJPedestal.[h,cc]:
     21     - reorganized order of functions
     22     - removed a nonsense scrren output (some BLABABLA or so)
     23
     24   * mjobs/Makefile:
     25     - added include for mbadpixels
     26
     27   * mmain/MBrowser.cc:
     28     - do not call construtor of TGTReeLBEntry if pic0=0
     29
     30
     31
    632 2004/02/09: Raquel de los Reyes
    733
     
    1440 2004/02/09: Markus Gaug
    1541
    16   * MMcCalibrationUpdate.cc, MCalibrate.cc, MCalibrationPix.cc,
    17     MCalibrationPix.h:
    18     - replace MCalibrationPix->IsChargeFitValid() by IsChargeValid()
    19       because we can calibrate with the histogram mean and RMS even
    20       if the fit is not OK. Thus, there is a question: IsFitted() and
    21       IsChargeValid(), i.e. does the charge make any sense?
     42   * MMcCalibrationUpdate.cc, MCalibrate.cc, MCalibrationPix.cc,
     43     MCalibrationPix.h:
     44     - replace MCalibrationPix->IsChargeFitValid() by IsChargeValid()
     45       because we can calibrate with the histogram mean and RMS even
     46       if the fit is not OK. Thus, there is a question: IsFitted() and
     47       IsChargeValid(), i.e. does the charge make any sense?
    2248
    2349   * MCalibrationCam.cc, MCalibrationConfig.h, MCalibrationCalc.cc:
  • trunk/MagicSoft/Mars/Makefile

    r2992 r3069  
    4343          mhist \
    4444          manalysis \
     45          mbadpixels \
    4546          mcalib \
    4647          mfileio \
  • trunk/MagicSoft/Mars/manalysis/MGeomApply.cc

    r3052 r3069  
    2424
    2525//////////////////////////////////////////////////////////////////////////////
    26 //                                                                       
    27 //  MGeomApply                                                           
    28 //                                                                       
     26//
     27//  MGeomApply
     28//
    2929//  Applies the geometry to geometry dependant containers.
    3030//
     
    3333//
    3434//   MPedestalCam
     35//   MCalibrationCam
     36//   MPedPhotCam
     37//   MExtractedSignalCam
    3538//   MBlindPixels
     39//   MArrivalTime
    3640//
    3741//  It uses the geometry (MGeomCam) found in the parameter list.
     
    4549//  Output Containers:
    4650//   [MPedestalCam]
     51//   [MCalibrationCam]
     52//   [MPedPhotCam]
     53//   [MExtractedSignalCam]
    4754//   [MBlindPixels]
     55//   [MArrivalTime]
    4856//
    4957//////////////////////////////////////////////////////////////////////////////
     
    114122    // the use of some camera files from the 0.7 beta version in which the
    115123    // array containing pixel ratios is not initialized.
    116 
    117124    cam->CalcPixRatio();
    118125
    119126    MPedestalCam *ped = (MPedestalCam*)pList->FindObject(AddSerialNumber("MPedestalCam"));
    120127    if (ped)
    121       ped->InitSize(cam->GetNumPixels());
    122 
     128        ped->InitSize(cam->GetNumPixels());
    123129
    124130    MCalibrationCam *cal = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationCam"));
    125131    if (cal)
    126       cal->InitSize(cam->GetNumPixels());
    127 
     132        cal->InitSize(cam->GetNumPixels());
    128133
    129134    MPedPhotCam *pedphot = (MPedPhotCam*)pList->FindObject(AddSerialNumber("MPedPhotCam"));
    130135    if (pedphot)
    131       pedphot->InitSize(cam->GetNumPixels());
     136        pedphot->InitSize(cam->GetNumPixels());
    132137
    133138    MExtractedSignalCam *ext = (MExtractedSignalCam*)pList->FindObject(AddSerialNumber("MExtractedSignalCam"));
    134139    if (ext)
    135       ext->InitSize(cam->GetNumPixels());
     140        ext->InitSize(cam->GetNumPixels());
    136141
    137142    MBlindPixels *bnd = (MBlindPixels*)pList->FindObject(AddSerialNumber("MBlindPixels"));
    138143    if (bnd)
    139       bnd->InitSize(cam->GetNumPixels());
     144        bnd->InitSize(cam->GetNumPixels());
    140145
    141146    MArrivalTime *tme = (MArrivalTime*)pList->FindObject(AddSerialNumber("MArrivalTime"));
    142147    if (tme)
    143       tme->InitSize(cam->GetNumPixels());
     148        tme->InitSize(cam->GetNumPixels());
    144149
    145150    return kTRUE;
  • trunk/MagicSoft/Mars/mjobs/MJCalibration.cc

    r3055 r3069  
    5151#include "MReadMarsFile.h"
    5252#include "MGeomApply.h"
     53#include "MBadPixelsMerge.h"
    5354#include "MExtractSignal.h"
    5455#include "MExtractSignal2.h"
     
    382383        return kFALSE;
    383384    }
     385
     386    if (fBadPixels.Write()<=0)
     387    {
     388        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
     389        return kFALSE;
     390    }
     391
    384392    return kTRUE;
    385393
     
    426434        *fLog << "Unable to read MCalibrationCam from " << fname << endl;
    427435        return kFALSE;
     436    }
     437
     438    if (file.FindKey("MBadPixelsCam"))
     439    {
     440        MBadPixelsCam bad;
     441        if (bad.Read()<=0)
     442        {
     443            *fLog << "Unable to read MBadPixelsCam from " << fname << endl;
     444            return kFALSE;
     445        }
     446        fBadPixels.Merge(bad);
    428447    }
    429448
     
    466485
    467486    MGeomApply       apply;
     487    MBadPixelsMerge  merge(&fBadPixels);
     488    // MExtractSignal   extract; // Do not use this at the moment...
    468489    MExtractSignal2  extract;
    469490    MCalibrationCalc calcalc;
     
    476497    //calcalc.SkipBlindPixelFit();
    477498
     499    tlist.AddToList(&read);
    478500    tlist.AddToList(&apply);
    479     tlist.AddToList(&read);
     501    tlist.AddToList(&merge);
    480502    tlist.AddToList(&extract);
    481503    tlist.AddToList(&calcalc);
  • trunk/MagicSoft/Mars/mjobs/MJCalibration.h

    r3054 r3069  
    44#ifndef MARS_MCalibrationCam
    55#include "MCalibrationCam.h"
     6#endif
     7#ifndef MARS_MBadPixelsCam
     8#include "MBadPixelsCam.h"
    69#endif
    710
     
    2124
    2225    MCalibrationCam fCalibrationCam;
     26    MBadPixelsCam   fBadPixels;
    2327
    2428    void DrawProjection(MHCamera *obj1, Int_t fit) const;
     
    3539
    3640    TString GetOutputFile() const;
    37     MCalibrationCam &GetCalibrationCam() { return fCalibrationCam; }
     41
     42    const MCalibrationCam &GetCalibrationCam() const { return fCalibrationCam; }
     43    const MBadPixelsCam   &GetBadPixels()      const { return fBadPixels; }
     44
     45    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
    3846
    3947    Bool_t ReadCalibrationCam();
  • trunk/MagicSoft/Mars/mjobs/MJExtractSignal.cc

    r2992 r3069  
    5151#include "MReadMarsFile.h"
    5252#include "MGeomApply.h"
     53#include "MBadPixelsMerge.h"
    5354#include "MExtractSignal.h"
    5455#include "MFillH.h"
     
    236237        return kFALSE;
    237238    }
     239
     240    if (fBadPixels.Write()<=0)
     241    {
     242        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
     243        return kFALSE;
     244    }
     245
    238246    return kTRUE;
    239247
     
    301309    plist.AddToList(&tlist);
    302310
    303     MGeomApply     apply; // Only necessary to craete geometry
    304     MExtractSignal extract;
     311    MGeomApply      apply; // Only necessary to craete geometry
     312    MBadPixelsMerge merge(&fBadPixels);
     313    MExtractSignal  extract;
    305314
    306315    MHCamEvent evt("ExtSignal");
     
    313322    write.AddContainer("MRawRunHeader",       "RunHeaders");
    314323    write.AddContainer("MPedestalCam",        "RunHeaders");
     324    write.AddContainer("MBadPixelsCam",       "RunHeaders");
    315325
    316326    tlist.AddToList(&read);
    317327    tlist.AddToList(&apply);
     328    tlist.AddToList(&merge);
    318329    tlist.AddToList(&extract);
    319330    if (TestBit(kEnableGraphicalOutput))
     
    365376    }
    366377
     378    if (file.FindKey("MBadPixelsCam"))
     379    {
     380        MBadPixelsCam bad;
     381        if (bad.Read()<=0)
     382        {
     383            *fLog << "Unable to read MBadPixelsCam from " << fname << endl;
     384            return kFALSE;
     385        }
     386        fBadPixels.Merge(bad);
     387    }
     388
    367389    if (fDisplay /*&& !fDisplay->GetCanvas("Pedestals")*/) // FIXME!
    368390        fDisplay->Read();
     
    406428    plist.AddToList(&calcam);
    407429    plist.AddToList(&fPedPhotCam);
     430    plist.AddToList(&fBadPixels);
    408431
    409432    MTaskList tlist;
    410433    plist.AddToList(&tlist);
    411434
    412     MGeomApply     apply; // Only necessary to craete geometry
    413     MExtractSignal extract;
    414     MCalibrate     calib;
    415     MPedPhotCalc   calc;
     435    MGeomApply      apply; // Only necessary to craete geometry
     436    MBadPixelsMerge merge(&fBadPixels);
     437    MExtractSignal  extract;
     438    MCalibrate      calib;
     439    MPedPhotCalc    calc;
    416440
    417441    MHCamEvent evt1("ExtOffset");
     
    424448    tlist.AddToList(&read);
    425449    tlist.AddToList(&apply);
     450    tlist.AddToList(&merge);
    426451    tlist.AddToList(&extract);
    427452    if (TestBit(kEnableGraphicalOutput))
  • trunk/MagicSoft/Mars/mjobs/MJExtractSignal.h

    r2992 r3069  
    44#ifndef MARS_MPedPhotCam
    55#include "MPedPhotCam.h"
     6#endif
     7#ifndef MARS_MBadPixelsCam
     8#include "MBadPixelsCam.h"
    69#endif
    710
     
    2124    MRunIter *fRuns;
    2225
    23     MPedPhotCam fPedPhotCam;
     26    MPedPhotCam   fPedPhotCam;
     27    MBadPixelsCam fBadPixels;
    2428
    2529    void   DisplayResult(MParList &plist);
     
    4044    TString GetOutputFileD() const;
    4145
     46    const MPedPhotCam   &GetPedPhotCam() const { return fPedPhotCam; }
     47    const MBadPixelsCam &GetBadPixels()  const { return fBadPixels; }
     48
     49    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
     50
    4251    Bool_t ProcessD(MPedestalCam &pedcam);
    4352    Bool_t ProcessP(MPedestalCam &pedcam, MCalibrationCam &calcam);
    44 
    45     const MPedPhotCam &GetPedPhotCam() const { return fPedPhotCam; }
    4653
    4754    ClassDef(MJExtractSignal, 0) // Tool to create a pedestal file (MPedestalCam)
  • trunk/MagicSoft/Mars/mjobs/MJPedestal.cc

    r3051 r3069  
    5252#include "MReadMarsFile.h"
    5353#include "MGeomApply.h"
     54#include "MBadPixelsMerge.h"
    5455#include "MPedCalcPedRun.h"
    5556
     
    8788    if (fPedestalCam.Read()<=0)
    8889    {
    89         *fLog << "Unable to read MPedestalCam from " << fname << endl;
    90         return kFALSE;
     90        *fLog << err << "Unable to read MPedestalCam from " << fname << endl;
     91        return kFALSE;
     92    }
     93
     94    if (file.FindKey("MBadPixelsCam"))
     95    {
     96        MBadPixelsCam bad;
     97        if (bad.Read()<=0)
     98        {
     99            *fLog << err << "Unable to read MBadPixelsCam from " << fname << endl;
     100            return kFALSE;
     101        }
     102        fBadPixels.Merge(bad);
    91103    }
    92104
     
    95107
    96108    return kTRUE;
     109}
     110
     111void MJPedestal::DrawProjection(MHCamera *obj1, Int_t fit) const
     112{
     113    TH1D *obj2 = (TH1D*)obj1->Projection();
     114    obj2->Draw();
     115    obj2->SetBit(kCanDelete);
     116
     117    const Double_t min   = obj2->GetBinCenter(obj2->GetXaxis()->GetFirst());
     118    const Double_t max   = obj2->GetBinCenter(obj2->GetXaxis()->GetLast());
     119    const Double_t integ = obj2->Integral("width")/2.5066283;
     120    const Double_t mean  = obj2->GetMean();
     121    const Double_t rms   = obj2->GetRMS();
     122    const Double_t width = max-min;
     123
     124    if (rms==0 || width==0)
     125        return;
     126
     127    const TString dgausformula("([0]-[3])/[2]*exp(-0.5*(x-[1])*(x-[1])/[2]/[2])"
     128                               "+[3]/[5]*exp(-0.5*(x-[4])*(x-[4])/[5]/[5])");
     129
     130    TF1 *f=0;
     131    switch (fit)
     132    {
     133        // FIXME: MAYBE add function to TH1?
     134    case 0:
     135        f = new TF1("sgaus", "gaus(0)", min, max);
     136        f->SetLineColor(kYellow);
     137        f->SetBit(kCanDelete);
     138        f->SetParNames("Area", "#mu", "#sigma");
     139        f->SetParameters(integ/rms, mean, rms);
     140        f->SetParLimits(0, 0,   integ);
     141        f->SetParLimits(1, min, max);
     142        f->SetParLimits(2, 0,   width/1.5);
     143        obj2->Fit(f, "QLRM");
     144        break;
     145
     146    case 1:
     147        f = new TF1("dgaus", dgausformula, min, max);
     148        f->SetLineColor(kYellow);
     149        f->SetBit(kCanDelete);
     150        f->SetParNames("A_{tot}", "#mu_{1}", "#sigma_{1}", "A_{2}", "#mu_{2}", "#sigma_{2}");
     151        f->SetParameters(integ,         (min+mean)/2, width/4,
     152                         integ/width/2, (max+mean)/2, width/4);
     153        // The left-sided Gauss
     154        f->SetParLimits(0, integ-1.5,      integ+1.5);
     155        f->SetParLimits(1, min+(width/10), mean);
     156        f->SetParLimits(2, 0,              width/2);
     157        // The right-sided Gauss
     158        f->SetParLimits(3, 0,    integ);
     159        f->SetParLimits(4, mean, max-(width/10));
     160        f->SetParLimits(5, 0,    width/2);
     161        obj2->Fit(f, "QLRM");
     162        break;
     163
     164    default:
     165        obj2->Fit("gaus", "Q");
     166        obj2->GetFunction("gaus")->SetLineColor(kYellow);
     167        break;
     168    }
     169}
     170
     171void MJPedestal::CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit)
     172{
     173    c.cd(x);
     174    gPad->SetBorderMode(0);
     175    MHCamera *obj1=(MHCamera*)cam1.DrawCopy("hist");
     176    obj1->AddNotify(fPedestalCam);
     177
     178    c.cd(x+y);
     179    gPad->SetBorderMode(0);
     180    obj1->Draw();
     181
     182    c.cd(x+2*y);
     183    gPad->SetBorderMode(0);
     184    DrawProjection(obj1, fit);
    97185}
    98186
     
    123211
    124212    disp0.SetCamContent(fPedestalCam, 0);
    125     disp0.SetCamError(fPedestalCam, 1);
     213    disp0.SetCamError  (fPedestalCam, 1);
     214
    126215    disp1.SetCamContent(fPedestalCam, 2);
    127     disp1.SetCamError(fPedestalCam, 3);
     216    disp1.SetCamError  (fPedestalCam, 3);
    128217
    129218    disp0.SetYTitle("P [fadc/slice]");
     
    136225    c3.Divide(2,3);
    137226
    138     *fLog << "BALBALBALBA" <<endl;
    139 
    140227    CamDraw(c3, 1, 2, disp0, 0);
    141228    CamDraw(c3, 2, 2, disp1, 1);
    142 
    143 }
    144 
    145 
    146 void MJPedestal::DrawProjection(MHCamera *obj1, Int_t fit) const
    147 {
    148  
    149   TH1D *obj2 = (TH1D*)obj1->Projection();
    150   obj2->Draw();
    151   obj2->SetBit(kCanDelete);
    152  
    153   const Double_t min   = obj2->GetBinCenter(obj2->GetXaxis()->GetFirst());
    154   const Double_t max   = obj2->GetBinCenter(obj2->GetXaxis()->GetLast());
    155   const Double_t integ = obj2->Integral("width")/2.5066283;
    156   const Double_t mean  = obj2->GetMean();
    157   const Double_t rms   = obj2->GetRMS();
    158   const Double_t width = max-min;
    159  
    160   if (rms == 0. || width == 0. )
    161     return;
    162 
    163   const TString dgausformula = TString("([0]-[3])/[2]*exp(-0.5*(x-[1])*(x-[1])/[2]/[2])"
    164                                        "+[3]/[5]*exp(-0.5*(x-[4])*(x-[4])/[5]/[5])");
    165 
    166   TF1 *f=0;
    167   switch (fit)
    168     {
    169     case 0:
    170       f = new TF1("sgaus","gaus(0)",min,max);
    171       f->SetLineColor(kYellow);
    172       f->SetBit(kCanDelete);
    173       f->SetParNames("Area","#mu","#sigma");
    174       f->SetParameters(integ/rms,mean,rms);
    175       f->SetParLimits(0, 0.  , integ);
    176       f->SetParLimits(1, min , max);
    177       f->SetParLimits(2, 0   , width/1.5);
    178       obj2->Fit(f,"QLRM");
    179       break;
    180      
    181     case 1:
    182       f = new TF1("dgaus",dgausformula.Data(),min,max);
    183       f->SetLineColor(kYellow);
    184       f->SetBit(kCanDelete);
    185       f->SetParNames("A_{tot}","#mu_{1}","#sigma_{1}","A_{2}","#mu_{2}","#sigma_{2}");
    186       f->SetParameters(integ,(min+mean)/2.,width/4.,
    187                        integ/width/2.,(max+mean)/2.,width/4.);
    188       // The left-sided Gauss
    189       f->SetParLimits(0,integ-1.5      , integ+1.5);
    190       f->SetParLimits(1,min+(width/10.), mean);
    191       f->SetParLimits(2,0              , width/2.);
    192       // The right-sided Gauss
    193       f->SetParLimits(3,0   , integ);
    194       f->SetParLimits(4,mean, max-(width/10.));
    195       f->SetParLimits(5,0   , width/2.);
    196       obj2->Fit(f,"QLRM");
    197       break;
    198      
    199     default:
    200       obj2->Fit("gaus","Q");
    201       obj2->GetFunction("gaus")->SetLineColor(kYellow);
    202       break;
    203     }
    204 }
    205 
    206 
    207 
    208 void MJPedestal::CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit)
    209 {
    210 
    211     c.cd(x);
    212     gPad->SetBorderMode(0);
    213     MHCamera *obj1=(MHCamera*)cam1.DrawCopy("hist");
    214     obj1->AddNotify(fPedestalCam);
    215 
    216     c.cd(x+y);
    217     gPad->SetBorderMode(0);
    218     obj1->Draw();
    219     ((MHCamera*)obj1)->SetPrettyPalette();
    220 
    221     c.cd(x+2*y);
    222     gPad->SetBorderMode(0);
    223     DrawProjection(obj1, fit);
    224 
    225 }
    226 
     229}
    227230
    228231Bool_t MJPedestal::WriteResult()
     
    248251        return kFALSE;
    249252    }
     253
     254    if (fBadPixels.Write()<=0)
     255    {
     256        *fLog << err << "Unable to write MBadPixelsCam to " << oname << endl;
     257        return kFALSE;
     258    }
     259
    250260    return kTRUE;
    251261}
     
    298308    plist.AddToList(&tlist);
    299309
    300     MGeomApply     geomapl;
     310    MGeomApply      geomapl;
     311    MBadPixelsMerge merge(&fBadPixels);
    301312    //MExtractSignal sigcalc;
    302     MPedCalcPedRun pedcalc;
     313    MPedCalcPedRun  pedcalc;
    303314
    304315    tlist.AddToList(&read);
    305316    tlist.AddToList(&geomapl);
     317    tlist.AddToList(&merge);
    306318    //tlist.AddToList(&sigcalc);
    307319    tlist.AddToList(&pedcalc);
  • trunk/MagicSoft/Mars/mjobs/MJPedestal.h

    r3051 r3069  
    44#ifndef MARS_MPedestalCam
    55#include "MPedestalCam.h"
     6#endif
     7#ifndef MARS_MBadPixelsCam
     8#include "MBadPixelsCam.h"
    69#endif
    710
     
    1720    MRunIter *fRuns;
    1821
    19     MPedestalCam fPedestalCam;
     22    MPedestalCam  fPedestalCam;
     23    MBadPixelsCam fBadPixels;
    2024
     25    Bool_t ReadPedestalCam();
     26    Bool_t WriteResult();
     27   
    2128    void   DrawProjection(MHCamera *obj1, Int_t fit) const;
    2229    void   CamDraw(TCanvas &c, Int_t x, Int_t y, MHCamera &cam1, Int_t fit);
    2330    void   DisplayResult(MParList &plist);
    24     Bool_t WriteResult();
    2531
    2632public:
     
    3137
    3238    TString GetOutputFile() const;
    33     MPedestalCam &GetPedestalCam() { return fPedestalCam; }
    3439
    35     Bool_t ReadPedestalCam();
     40    const MPedestalCam  &GetPedestalCam() const { return fPedestalCam; }
     41    const MBadPixelsCam &GetBadPixels()   const { return fBadPixels; }
     42
     43    void SetBadPixels(MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
     44
    3645    Bool_t ProcessFile();
    3746    Bool_t Process();
  • trunk/MagicSoft/Mars/mjobs/Makefile

    r2992 r3069  
    2323#
    2424INCLUDES = -I. -I../mbase -I../mgui -I../mgeom -I../mdata -I../mhbase \
    25            -I../mfileio -I../mfilter -I../manalysis -I../mhist -I../mcalib
     25           -I../mfileio -I../mfilter -I../manalysis -I../mhist -I../mcalib \
     26           -I../mbadpixels
    2627
    2728#manalysis: MChisqEval (MParameters)
  • trunk/MagicSoft/Mars/mmain/MBrowser.cc

    r3021 r3069  
    137137
    138138    const TGPicture *pic0 = fList->GetPicture("magic_t.xpm");
    139     TGTreeLBEntry *entry = new TGTreeLBEntry(dir->GetListBox()->GetContainer(),
    140                                              new TGString("/data/MAGIC"), pic0, 6000,
    141                                              new TGString("/data/MAGIC"));
    142     TGLayoutHints *laylb = new TGLayoutHints(kLHintsLeft|kLHintsTop, 14, 0, 0, 0);
    143     dir->AddEntry(entry, laylb);
    144     // Note necessary - deleted in ~TGLBContainer: fList->Add(laylb);
    145     fList->Add(entry);
     139    if (!pic0)
     140    {
     141        TGTreeLBEntry *entry = new TGTreeLBEntry(dir->GetListBox()->GetContainer(),
     142                                                 new TGString("/data/MAGIC"), pic0, 6000,
     143                                                 new TGString("/data/MAGIC"));
     144        TGLayoutHints *laylb = new TGLayoutHints(kLHintsLeft|kLHintsTop, 14, 0, 0, 0);
     145        dir->AddEntry(entry, laylb);
     146        // Note necessary - deleted in ~TGLBContainer: fList->Add(laylb);
     147        fList->Add(entry);
     148    }
    146149
    147150    //
Note: See TracChangeset for help on using the changeset viewer.