Changeset 1030


Ignore:
Timestamp:
11/05/01 10:35:36 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r1029 r1030  
    11                                                                  -*-*- END -*-*-
     2
     3 2001/11/01: Thomas Bretz
     4 
     5   * mbase/MParContainer.cc:
     6     - removed 'newname' from TObject::Clone call.
     7
     8   * mbase/MParContainer.h:
     9     - layout changes
     10
     11   * mbase/MParList.h:
     12     - changed destructor definition to virtual
     13
     14   * mbase/MReadTree.[h,cc]:
     15     - added initialization for fProgress
     16     - changed output
     17     - move some code to new functions
     18     - branch enabling now checks for the existance of the branch
     19     - veto branch disables the corresponding sub branches now physically
     20     - changed comments
     21
     22   * mdatacheck/MGDisplayAdc.cc:
     23     - added some sanity checks
     24
     25   * meventdisp/MGCamDisplay.cc, meventdisp/MGEvtDisplay.[h,cc],
     26     meventdisp/MGFadcDisp.cc:
     27     - moved some code to MGEvtDisplay
     28
     29   * mhist/MFillH.cc:
     30     - added warning to comment
     31
     32   * mhist/MHFadcCam.[h,cc]:
     33     - added Clone-function. It seems, that this is necessary since
     34       root 3.01
     35
     36   * mhist/MHFadcPix.cc:
     37     - changed axis titles
     38
     39   * mmain/MAnalysis.cc:
     40     - added progress bar
     41
     42   * mmain/MBrowser.[h,cc]:
     43     - added layout hints to fTop1,2,3
     44     - adde Create/DestroyProgrssBar
     45
     46   * mmain/MDataCheck.cc:
     47     - changes to the layout
     48     - disable auto scheme
     49     - added progress bar
     50
     51   * mmain/MMonteCarlo.[h,cc]:
     52     - layout changes
     53     - added progress bar
     54     
     55   * mraw/MRawEvtData.cc:
     56     - new sanity check in Draw
     57
     58
     59
    260 2001/11/01: Thomas Bretz
    361
     
    4098     mgui/MGeomCam.cc, mhist/MHFadcPix.cc, mmc/MMcTrig.cxx:
    4199     - removed inline statement, to make it link on alpha
    42 
    43100
    44101
  • trunk/MagicSoft/Mars/mbase/MParContainer.cc

    r1003 r1030  
    8787{
    8888
    89    MParContainer *named = (MParContainer*)TObject::Clone(newname);
     89   MParContainer *named = (MParContainer*)TObject::Clone();
    9090   if (newname && strlen(newname)) named->SetName(newname);
    9191   return named;
  • trunk/MagicSoft/Mars/mbase/MParContainer.h

    r1014 r1030  
    9898    MParContainer(const MParContainer &named);
    9999    MParContainer& operator=(const MParContainer& rhs);
     100    virtual ~MParContainer() {}
    100101
    101     void SetLogStream(MLog *lg) { fLog = lg; }
     102    virtual TObject    *Clone(const char *newname="") const;
     103    virtual Int_t       Compare(const TObject *obj) const;
     104    virtual void        Copy(TObject &named);
     105    virtual void        FillBuffer(char *&buffer);
    102106
    103     virtual TObject *Clone(const char *newname="") const;
    104     virtual Int_t    Compare(const TObject *obj) const;
    105     virtual void     Copy(TObject &named);
    106     virtual void     FillBuffer(char *&buffer);
    107     virtual const char  *GetName() const  { return fName.Data(); }
    108     virtual const char  *GetTitle() const { return fTitle.Data(); }
    109     virtual ULong_t  Hash()               { return fName.Hash(); }
    110     virtual Bool_t   IsSortable() const   { return kTRUE; }
    111     virtual void     SetName(const char *name); // *MENU*
    112     virtual void     SetObject(const char *name, const char *title);
    113     virtual void     SetTitle(const char *title=""); // *MENU*
    114     virtual void     ls(Option_t *option="") const;
    115     virtual void     Print(Option_t *option="") const;
    116     virtual Int_t    Sizeof() const;
     107    virtual const char *GetName() const    { return fName.Data(); }
     108    virtual const char *GetTitle() const   { return fTitle.Data(); }
     109    virtual ULong_t     Hash()             { return fName.Hash(); }
     110    virtual Bool_t      IsSortable() const { return kTRUE; }
    117111
    118     virtual void     Reset() {  }
     112    virtual void        SetName(const char *name); // *MENU*
     113    virtual void        SetObject(const char *name, const char *title);
     114    virtual void        SetTitle(const char *title=""); // *MENU*
     115    virtual void        ls(Option_t *option="") const;
     116    virtual void        Print(Option_t *option="") const;
     117    virtual Int_t       Sizeof() const;
    119118
     119    virtual void   SetLogStream(MLog *lg) { fLog = lg; }
     120    virtual void   Reset() { }
    120121    virtual Bool_t IsReadyToSave()                   { return fReadyToSave; }
    121122    virtual void   SetReadyToSave(Bool_t flag=kTRUE) { fReadyToSave=flag; }
  • trunk/MagicSoft/Mars/mbase/MParList.h

    r1014 r1030  
    2424{
    2525private:
    26     TOrdCollection *fContainer; // Collection of Parameter and Data Containers
     26    TOrdCollection *fContainer;  // Collection of Parameter and Data Containers
    2727    TOrdCollection *fAutodelete; // All what this list contains is deleted in the destructor
    2828
     
    3636    MParList(MParList &ts);
    3737
    38     ~MParList();
     38    virtual ~MParList();
    3939
    4040    Bool_t AddToList(MParContainer *obj, MParContainer *where = NULL);
  • trunk/MagicSoft/Mars/mbase/MReadTree.cc

    r1020 r1030  
    7878MReadTree::MReadTree(const char *tname, const char *fname,
    7979                     const char *name, const char *title)
    80     : fNumEntry(0), fBranchChoosing(kFALSE), fAutoEnable(kTRUE)
     80    : fNumEntry(0), fBranchChoosing(kFALSE), fAutoEnable(kTRUE), fProgress(NULL)
    8181{
    8282    fName  = name  ? name  : "MReadTree";
     
    165165// --------------------------------------------------------------------------
    166166//
    167 // This is the implementation of the Auto Enabling Scheme.
    168 // For more information see MTask::AddBranchToList.
    169 // This function loops over all tasks in the tasklist and enables
    170 // all branches which are requested by the tasks.
    171 //
    172 // To enable 'unknown' branches which are not in the Branchlist of
    173 // the tasks you can call EnableBranch
     167// Checks whether a branch with the given name exists in the chain
     168// and sets the branch status of this branch corresponding to status.
     169//
     170void MReadTree::SetBranchStatus(TObject *branch, Bool_t status)
     171{
     172    //
     173    // Get branch name
     174    //
     175    const char *name = branch->GetName();
     176
     177    //
     178    // Check whether this branch really exists
     179    //
     180    if (!fChain->GetBranch(name))
     181        return;
     182
     183    //
     184    // Set the branch status
     185    //
     186    fChain->SetBranchStatus(name, status);
     187    *fLog << (status ? "Enabled" : "Disabled");
     188    *fLog << " subbranch '" << name << "'." << endl;
     189}
     190
     191// --------------------------------------------------------------------------
     192//
     193// Set the status of all branches in the list to status.
     194//
     195void MReadTree::SetBranchStatus(const TOrdCollection *list, Bool_t status)
     196{
     197    //
     198    // Loop over all subbranches in this master branch
     199    //
     200    TIter Next(list);
     201
     202    TObject *obj;
     203    while ((obj=Next()))
     204        SetBranchStatus(obj, status);
     205}
     206
     207// --------------------------------------------------------------------------
     208//
     209//  This is the implementation of the Auto Enabling Scheme.
     210//  For more information see MTask::AddBranchToList.
     211//  This function loops over all tasks in the tasklist and enables
     212//  all branches which are requested by the tasks.
     213//
     214//  To enable 'unknown' branches which are not in the Branchlist of
     215//  the tasks you can call EnableBranch
    174216//
    175217void MReadTree::EnableBranches(MParList *plist)
    176218{
    177     //
    178     // if auto enabling is off reject the request
    179     //
    180     if (!fAutoEnable)
    181         return;
    182 
    183219    //
    184220    // check whether branch choosing must be switched on
     
    198234
    199235    //
    200     // Loo over all tasks in the task list.
     236    // Loop over all tasks in the task list.
    201237    //
    202238    MTask *task;
    203239    TIter NextTask(tlist->GetList());
    204240    while ((task=(MTask*)NextTask()))
    205     {
    206         //
    207         // Loop over all branches of this task
    208         //
    209         TNamed *branch;
    210         TIter NextBranch(task->GetListOfBranches());
    211         while ((branch=(TNamed*)NextBranch()))
    212         {
    213             //
    214             // Get branch name to enable and enable the branch
    215             //
    216             const char *name = branch->GetName();
    217 
    218             *fLog << "Enabeling '" << name << "'." << endl;
    219 
    220             fChain->SetBranchStatus(name, kTRUE);
    221         }
    222     }
     241        SetBranchStatus(task->GetListOfBranches(), kTRUE);
     242}
     243
     244// --------------------------------------------------------------------------
     245//
     246//  The disables all subbranches of the given master branch.
     247//
     248void MReadTree::DisableSubBranches(TBranch *branch)
     249{
     250    //
     251    // This is not necessary, it would work without. But the output
     252    // may confuse the user...
     253    //
     254    if (fAutoEnable || fBranchChoosing)
     255        return;
     256
     257    SetBranchStatus(branch->GetListOfBranches(), kFALSE);
    223258}
    224259
     
    244279    if (!fNumEntries)
    245280    {
    246         *fLog << dbginf << "No entries found in chain (file/s)." << endl;
     281        *fLog << dbginf << "No entries found in file(s)." << endl;
    247282        return kFALSE;
    248283    }
     
    276311        if (fVetoList->FindObject(name))
    277312        {
    278             *fLog << "Branch " << name << " has veto... skipped." << endl;
     313            *fLog << "Master branch " << name << " has veto... skipped." << endl;
     314            DisableSubBranches(branch);
    279315            continue;
    280316        }
     
    299335            //
    300336            *fLog << dbginf << "Warning: Class '" << name << "' not existing in dictionary. Branch skipped." << endl;
     337            DisableSubBranches(branch);
    301338            continue;
    302339        }
     
    308345        fChain->SetBranchAddress(name, pcont);
    309346
    310         *fLog << "Branch " << name << " setup for reading." << endl;
     347        *fLog << "Master branch address " << name << " setup for reading." << endl;
    311348
    312349        num++;
    313350    }
    314351
    315     *fLog << "MReadTree setup " << num << " branches." << endl;
    316 
    317     EnableBranches(pList);
    318 
     352    *fLog << "MReadTree setup " << num << " master branches addresses." << endl;
     353
     354    //
     355    // If auto enabling scheme isn't disabled, do auto enabling
     356    //
     357    if (fAutoEnable)
     358        EnableBranches(pList);
     359
     360    //
     361    // If a progress bar is given set its range.
     362    //
    319363    if (fProgress)
    320364        fProgress->SetRange(0, fNumEntries);
     
    351395Bool_t MReadTree::DecEventNum(UInt_t dec)
    352396{
    353     //!
    354     //! this function makes Process() read the event one (or more) before
    355     //! the actual position (event) in the tree
    356     //!
    357     if (fNumEntry < dec/*+1*/)
    358     {
    359         *fLog << "MReadTree::SetPrevEvent: WARNING: " << fNumEntry/*-1*/ << "-" << dec << " out of Range." << endl;
     397    if (fNumEntry-dec >= fNumEntries)
     398    {
     399        *fLog << "MReadTree::DecEventNum: WARNING - Event " << fNumEntry << "-";
     400        *fLog << dec << "=" << (Int_t)fNumEntry-dec << " out of Range." << endl;
    360401        return kFALSE;
    361402    }
    362403
    363     fNumEntry -= dec/*+1*/;
     404    fNumEntry -= dec;
    364405    return kTRUE;
    365406}
     
    372413Bool_t MReadTree::IncEventNum(UInt_t inc)
    373414{
    374     //!
    375     //! this function makes Process() read the next (or more) after
    376     //! the actual position (event) in the tree
    377     //! (Be careful: IncEventNum() or IncEventNum(1) does not chenge anything
    378     //!  in the standard behaviour of the task)
    379     //!
    380     if (fNumEntry+inc/*-1*/ >= fNumEntries)
    381     {
    382         *fLog << "MReadTree::SkipEvents: WARNING: " << fNumEntry/*-1*/ << "+" << inc << " out of Range." << endl;
     415    if (fNumEntry+inc >= fNumEntries)
     416    {
     417        *fLog << "MReadTree::IncEventNum: WARNING - Event " << fNumEntry << "+";
     418        *fLog << inc << "=" << (Int_t)fNumEntry+inc << " out of Range." << endl;
    383419        return kFALSE;
    384420    }
    385421
    386     fNumEntry += inc/*-1*/;
     422    fNumEntry += inc;
    387423    return kTRUE;
    388424}
     
    390426// --------------------------------------------------------------------------
    391427//
    392 // this function makes Process() read event number nr next
     428// This function makes Process() read event number nr next
    393429//
    394430// Remark: You can use this function after instatiating you MReadTree-object
     
    397433Bool_t MReadTree::SetEventNum(UInt_t nr)
    398434{
    399     if (nr>=fNumEntries)
    400     {
    401         *fLog << "MReadTree::SetEventNum: WARNING: " << nr << " out of Range." << endl;
     435    if (nr >= fNumEntries)
     436    {
     437        *fLog << "MReadTree::SetEventNum: WARNING - " << nr << " out of Range." << endl;
    402438        return kFALSE;
    403439    }
     
    409445// --------------------------------------------------------------------------
    410446//
    411 // If you don't want that an object is created for this branch
    412 // and/or the branch address is set in the Preprocessing of
    413 // MReadTree use VetoBranch. This saves mainly memory space.
     447//  For the branch with the given name:
     448//   1) no object is automatically created
     449//   2) the branch address for this branch is not set
     450//      (because we lack the object, see 1)
     451//   3) The whole branch (exactly: all its subbranches) are disabled
     452//      this means are not read in memory by TTree:GetEntry
    414453//
    415454void MReadTree::VetoBranch(const char *name)
  • trunk/MagicSoft/Mars/mbase/MReadTree.h

    r1020 r1030  
    77
    88class TChain;
     9class TBranch;
    910class TGProgressBar;
    1011
     
    2223    TOrdCollection *fVetoList; // List of Branches which are not allowed to get enabled
    2324
    24     TGProgressBar *fProgress; // Possible display of status
     25    TGProgressBar  *fProgress; // Possible display of status
    2526
     27    void SetBranchStatus(const TOrdCollection *list, Bool_t status);
     28    void SetBranchStatus(TObject *branch, Bool_t status);
     29
     30    void DisableSubBranches(TBranch *b);
    2631    void EnableBranches(MParList *plist);
    2732    void EnableBranchChoosing();
    2833
     34    Bool_t PreProcess(MParList *pList);
     35    Bool_t Process();
     36 
    2937public:
    3038    MReadTree(const char *treename, const char *filename=NULL, const char *name=NULL, const char *title=NULL);
    3139    ~MReadTree();
    3240
    33     Bool_t PreProcess(MParList *pList);
    34     Bool_t Process();
     41    Int_t  AddFile(const char *fname);
     42    void   DisableAutoScheme() { fAutoEnable = kFALSE; }
     43    void   EnableBranch(const char *name);
     44    void   VetoBranch(const char *name);
    3545
    3646    void   SetProgressBar(TGProgressBar *bar) { fProgress = bar; }
    37 
    38     Int_t  AddFile(const char *fname);
    39     void   VetoBranch(const char *name);
    40 
    41     void   EnableBranch(const char *name);
    4247
    4348    Bool_t GetEvent();
     
    5055    UInt_t GetEntries() const  { return fNumEntries; }
    5156
    52     void   DisableAutoScheme() { fAutoEnable = kFALSE; }
    53 
    54     ClassDef(MReadTree, 0)      // Reads one tree
     57    ClassDef(MReadTree, 0)      // Reads a tree from file(s)
    5558};
    5659
  • trunk/MagicSoft/Mars/mdatacheck/MGDisplayAdc.cc

    r961 r1030  
    279279
    280280
    281 // ======================================================================
    282 
    283281void MGDisplayAdc::CloseWindow()
    284282{
     
    289287    delete this;
    290288}
    291 
    292 
    293 
    294 // ======================================================================
    295 // ======================================================================
    296289
    297290Bool_t MGDisplayAdc::BuildHistoList()
     
    307300    //
    308301    const Int_t nhi = fHists->GetEntries();
    309     for (Int_t i=0 ; i<nhi; i++)
     302
     303    for (Int_t i=0; i<nhi; i++)
    310304        fHistoList->AddEntry(fHists->GetHistHi(i)->GetName(), i+1);
    311305
     
    316310}
    317311
    318 // ======================================================================
    319 // ======================================================================
    320312void MGDisplayAdc::UpdateHist()
    321313{
    322314    const Int_t selected = fHistoList->GetSelected();
     315
     316    if (selected<0)
     317    {
     318        cout << "MGDisplayAdc: No histograms found in list. " << endl;
     319        return;
     320    }
    323321
    324322    fHistoList->Select(selected); // ???
  • trunk/MagicSoft/Mars/meventdisp/MGCamDisplay.cc

    r1015 r1030  
    115115    plist->AddToList(pedest);
    116116
    117     fInitOk = fEvtLoop->PreProcess();
    118 
    119     if (fInitOk)
    120         GetTaskList()->Process();
    121 
    122117    return geom;
    123118}
     
    147142    fDisplay = new MCamDisplay(geom);
    148143    fDisplay->Draw();
    149 
    150144    fList->Add(fDisplay);
     145
     146    ReadFirstEvent();
    151147
    152148    //
     
    161157    SetWindowName("Hillas Event Display");
    162158    SetIconName("Hillas");
    163 
    164     UpdateDisplay();
    165     UpdateNumOfEvts();
    166     UpdateEventCounter();
    167159
    168160    MapWindow();
     
    177169void MGCamDisplay::UpdateDisplay()
    178170{
    179     if (!fInitOk)
     171    if (!IsInitOk())
    180172        return;
    181173
  • trunk/MagicSoft/Mars/meventdisp/MGEvtDisplay.cc

    r1023 r1030  
    139139// --------------------------------------------------------------------------
    140140//
    141 //  Show the correct number of events
    142 //
    143 void MGEvtDisplay::UpdateNumOfEvts()
    144 {
    145     char txt[100];
    146     sprintf(txt, "out of %d Events", GetReader()->GetEntries());
    147 
    148     fNumOfEvts->SetText(new TGString(txt));
    149 }
    150 
    151 // --------------------------------------------------------------------------
    152 //
    153141//  Add the second part of the top frame: This are the event number controls
    154142//
     
    405393    AddMenuBar();
    406394    AddFrames(fname, tname);
    407     UpdateEventCounter();
    408395}
    409396
     
    435422//  and updates the display
    436423//
    437 void MGEvtDisplay::ReadinEvent(UInt_t iEvt)
    438 {
    439     if (!fInitOk)
    440         return;
    441 
    442     Int_t buttons = 4;
    443     Int_t retval  = 0;
    444 
    445     //
    446     //  first check if the new event is in the range of possible events
    447     //
    448     if (iEvt >= GetReader()->GetEntries())
     424void MGEvtDisplay::ReadinEvent()
     425{
     426    if (GetTaskList()->Process())
    449427    {
    450         new TGMsgBox(gClient->GetRoot(), this, "WARNING!",
    451                      "The event number is out of range!!!",
    452                      kMBIconExclamation, buttons, &retval);
     428        GetReader()->DecEventNum();
     429        UpdateDisplay();
    453430    }
    454     else
    455     {
    456         GetReader()->SetEventNum(iEvt);
    457 
    458         if (GetTaskList()->Process())
    459             UpdateDisplay();
    460     }
    461 
    462     UpdateEventCounter();
    463 }
    464 
    465 // --------------------------------------------------------------------------
    466 //
    467 //  Update the event counter
    468 //
    469 void MGEvtDisplay::UpdateEventCounter()
    470 {
    471     char txt[256];
    472 
    473     sprintf(txt, "%d", GetReader()->GetEventNum());
    474 
    475     fTxtEvtNr->SetText(txt);
     431
     432    fTxtEvtNr->SetText(Form("%d", GetReader()->GetEventNum()+1));
     433}
     434
     435void MGEvtDisplay::ReadFirstEvent()
     436{
     437    fInitOk = fEvtLoop->PreProcess();
     438
     439    if (fInitOk)
     440        ReadinEvent();
     441
     442    TGString *txt = new TGString(Form("out of %d Events", GetReader()->GetEntries()));
     443    fNumOfEvts->SetText(txt);
    476444}
    477445
     
    526494// --------------------------------------------------------------------------
    527495//
    528 //    ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
     496//  ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
    529497//
    530498// Processes information from all GUI items.
     
    535503Bool_t MGEvtDisplay::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
    536504{
    537     switch(GET_MSG(msg))
     505    if (GET_MSG(msg)!=kC_TEXTENTRY && GET_MSG(msg)!=kC_COMMAND)
     506        return kTRUE;
     507
     508    switch(GET_SUBMSG(msg))
    538509    {
    539     case kC_COMMAND:
     510    case kTE_ENTER:
     511    case kCM_BUTTON:
     512        if (parm1==kClose)
     513        {
     514            CloseWindow();
     515            return kTRUE;
     516        }
     517
     518        if (!fInitOk)
     519            return kTRUE;
     520
    540521        switch(GET_SUBMSG(msg))
    541522        {
     523        case kTE_ENTER:
     524            if (GetReader()->SetEventNum(atoi(fTxtEvtNr->GetText())-1))
     525                ReadinEvent();
     526            return kTRUE;
     527
    542528        case kCM_BUTTON:
    543529            switch (parm1)
    544530            {
    545531            case kEvtPrev:
    546                 //
    547                 // '-2' is because MReadTree::Process increases the
    548                 // Event number by one - this is the natural behaviour
    549                 // after reading one event
    550                 //
    551                 ReadinEvent(GetReader()->GetEventNum()-2);
     532                if (GetReader()->DecEventNum())
     533                    ReadinEvent();
    552534                return kTRUE;
    553535
    554536            case kEvtNext:
    555                 //
    556                 // '+0' is because MReadTree::Process increases the
    557                 // Event number by one - this is the natural behaviour
    558                 // after reading one event
    559                 //
    560                 ReadinEvent(GetReader()->GetEventNum());
    561                 return kTRUE;
    562 
    563             case kClose:
    564                 CloseWindow();
    565                 return kTRUE;
    566             }
    567             return kTRUE;
    568 
    569         case kCM_MENU:
    570             switch (parm1)
    571             {
    572             case kFileSaveAs:
    573                 SaveAsDialog();
    574                 return kTRUE;
    575             case kFileSaveAsRoot:
    576                 fCanvas->SaveAs("display.root");
    577                 return kTRUE;
    578             case kFileSaveAsC:
    579                 fCanvas->SaveSource("display.C");
    580                 return kTRUE;
    581             case kFileSaveAsPS:
    582                 fCanvas->SaveAs("display.ps");
    583                 return kTRUE;
    584             case kFileSaveAsEPS:
    585                 fCanvas->SaveAs("display.eps");
    586                 return kTRUE;
    587             case kFileSaveAsGIF:
    588                 fCanvas->SaveAs("display.gif");
    589                 return kTRUE;
    590             case kFilePrint:
    591                 fCanvas->Print();
    592                 return kTRUE;
    593             case kClose:
    594                 CloseWindow();
     537                if (GetReader()->IncEventNum())
     538                    ReadinEvent();
    595539                return kTRUE;
    596540            }
     
    599543        return kTRUE;
    600544
    601     case kC_TEXTENTRY:
    602         if (GET_SUBMSG(msg) == kTE_ENTER)
    603             ReadinEvent(atoi(fTxtEvtNr->GetText())-1);
     545    case kCM_MENU:
     546        switch (parm1)
     547            {
     548            case kFileSaveAs:
     549                SaveAsDialog();
     550                return kTRUE;
     551            case kFileSaveAsRoot:
     552                fCanvas->SaveAs("display.root");
     553                return kTRUE;
     554            case kFileSaveAsC:
     555                // FIXME: The line opening the canvas is wrong.
     556                fCanvas->SaveSource("display.C");
     557                return kTRUE;
     558            case kFileSaveAsPS:
     559                fCanvas->SaveAs("display.ps");
     560                return kTRUE;
     561            case kFileSaveAsEPS:
     562                fCanvas->SaveAs("display.eps");
     563                return kTRUE;
     564            case kFileSaveAsGIF:
     565                fCanvas->SaveAs("display.gif");
     566                return kTRUE;
     567            case kFilePrint:
     568                fCanvas->Print();
     569                return kTRUE;
     570            case kClose:
     571                CloseWindow();
     572                return kTRUE;
     573            }
    604574        return kTRUE;
    605575    }
    606 
    607576    return kTRUE;
    608577}
  • trunk/MagicSoft/Mars/meventdisp/MGEvtDisplay.h

    r1023 r1030  
    4040
    4141    void SaveAsDialog() const;
     42    void ReadinEvent();
    4243
    43     void ReadinEvent(UInt_t iEvt);
     44    Bool_t fInitOk;
    4445
    4546protected:
     
    5455    TGVerticalFrame  *fMidFrame;
    5556
    56     Bool_t fInitOk;
    57 
    5857    MParList  *GetParList() const;
    5958    MTaskList *GetTaskList() const;
    6059    MReadTree *GetReader() const;
    6160
    62     void UpdateEventCounter();
    63     void UpdateNumOfEvts();
     61    void   ReadFirstEvent();
     62    Bool_t IsInitOk() { return fInitOk; }
    6463
    6564    virtual void UpdateDisplay() = 0;
  • trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.cc

    r991 r1030  
    125125    // preprocess eventloop and read in first event (process)
    126126    //
    127     fInitOk = fEvtLoop->PreProcess();
    128 
    129     if (fInitOk)
    130         GetTaskList()->Process();
     127    GetReader()->DisableAutoScheme();
     128    ReadFirstEvent();
    131129
    132130    //
     
    144142    SetWindowName("Fadc Event Display");
    145143    SetIconName("Fadc");
    146 
    147     UpdateDisplay();
    148     UpdateNumOfEvts();
    149     UpdateEventCounter();
    150144
    151145    MapWindow();
     
    220214void MGFadcDisp::UpdateDisplay()
    221215{
    222     if (!fInitOk)
     216    if (!IsInitOk())
    223217        return;
    224218
  • trunk/MagicSoft/Mars/mhist/MFillH.cc

    r1004 r1030  
    2525//////////////////////////////////////////////////////////////////////////////
    2626//                                                                          //
    27 //  MFill                                                                   //
     27//  MFillH                                                                  //
    2828//                                                                          //
    2929//  This is a common interface (task) to fill mars histograms. Every mars   //
     
    3535//  objects in the parameter list or by specifiing a pointer to the object. //
    3636//  (s. Constructor)                                                        //
     37//                                                                          //
     38//  WARNING:                                                                //
     39//   Because MFillH is a generalized task to fill histograms it doesn't     //
     40//   know about which branches from a file are necessary to fill the        //
     41//   histograms. If you are reading data from a file which is directly      //
     42//   filled into a histogram via MFillH, please call either                 //
     43//   MReadTree::DisableAutoScheme() or enable the necessary branches by     //
     44//   yourself, using MReadTree::EnableBranch()                              //
    3745//                                                                          //
    3846//  Input Containers:                                                       //
  • trunk/MagicSoft/Mars/mhist/MHFadcCam.cc

    r1004 r1030  
    4444//  creates an a list of histograms for all pixels and both gain channels
    4545//
    46 MHFadcCam::MHFadcCam (const char *name, const char *title)
     46#include <iostream.h>
     47MHFadcCam::MHFadcCam(const char *name, const char *title)
    4748{
    4849    //
    4950    //   set the name and title of this object
    5051    //
    51    
    52     fName  = name  ? name  : "MHFadcCam" ;
    53     fTitle = title ? title : "Container for ADC spectra histograms" ;
     52    fName  = name  ? name  : "MHFadcCam";
     53    fTitle = title ? title : "Container for ADC spectra histograms";
    5454
    5555    //
     
    6565
    6666// --------------------------------------------------------------------------
    67 MHFadcCam::~MHFadcCam ()
     67MHFadcCam::~MHFadcCam()
    6868{
    6969    delete fArray;
     70}
     71
     72// --------------------------------------------------------------------------
     73//
     74// Our own clone function is necessary since root 3.01/06 or Mars 0.4
     75// I don't know the reason
     76//
     77TObject *MHFadcCam::Clone(const char *) const
     78{
     79    MHFadcCam *cam = new MHFadcCam;
     80
     81    for (int i=0; i<577; i++)
     82    {
     83        delete (*cam->fArray)[i];
     84        (*cam->fArray)[i] = (MHFadcPix*)(*fArray)[i]->Clone();
     85    }
     86    return cam;
    7087}
    7188
  • trunk/MagicSoft/Mars/mhist/MHFadcCam.h

    r1015 r1030  
    2626
    2727public:
    28      MHFadcCam(const char *name=NULL, const char *title=NULL);
     28    MHFadcCam(const char *name=NULL, const char *title=NULL);
    2929    ~MHFadcCam();
    3030
     
    4646    void DrawPix(UInt_t i)     { (*this)[i]->Draw(); }
    4747
    48     Int_t GetEntries()         { return fArray->GetEntries(); }
     48    Int_t GetEntries() const   { return fArray->GetEntries(); }
     49
     50    TObject *Clone(const char *opt="") const;
    4951
    5052    ClassDef(MHFadcCam, 1) // A list of histograms storing the Fadc spektrum of one pixel
  • trunk/MagicSoft/Mars/mhist/MHFadcPix.cc

    r1027 r1030  
    5454
    5555    fHistHi->SetDirectory(NULL);
    56     fHistHi->SetXTitle("Time/Slices");
    57     fHistHi->SetYTitle("Signal");
     56    fHistHi->SetXTitle("Signal/FADC Units");
     57    fHistHi->SetYTitle("Count");
    5858
    5959    delete [] name;
     
    6666
    6767    fHistLo->SetDirectory(NULL);
    68     fHistLo->SetXTitle("Time/Slices");
    69     fHistLo->SetYTitle("Signal");
     68    fHistLo->SetXTitle("Signal/FADC Units");
     69    fHistLo->SetYTitle("Count");
    7070
    7171    delete [] name;
  • trunk/MagicSoft/Mars/mmain/MAnalysis.cc

    r1021 r1030  
    3131#include <TGButton.h>      // TGTextButton
    3232#include <TGTextEntry.h>   // TGNumberEntry
    33 #include <TGProgressBar.h> // TGHProgressBar
    34 
    3533
    3634ClassImp(MAnalysis)
     
    4846    fList->Add(hillas);
    4947
    50     TGLayoutHints *laybut = new TGLayoutHints(kLHintsTop|kLHintsLeft, 10, 10, 5, 5);
     48    TGLayoutHints *laybut = new TGLayoutHints(kLHintsCenterY|kLHintsLeft, 10, 10, 5, 5);
    5149    fList->Add(laybut);
    5250
     
    209207    }
    210208
    211     TGHProgressBar bar(fTop2);
    212     TGLayoutHints laybar(kLHintsExpandX|kLHintsCenterY|kLHintsRight, 10, 10, 5, 5); //, 10); //, 5, 5);
    213     bar.SetWidth(150);
    214     fTop2->AddFrame(&bar, &laybar);
    215     Layout();
    216     MapSubwindows();
    217 
    218209    //
    219210    // Create a empty Parameter List and an empty Task List
     
    252243    //
    253244    MReadTree read("Events", fInputFile);
    254     read.SetProgressBar(&bar);
    255245
    256246    MCerPhotCalc ncalc;
     
    277267    MEvtLoop evtloop;
    278268    evtloop.SetParList(&plist);
    279     evtloop.SetProgressBar(&bar);
     269
     270    //
     271    // Add ProgressBar to window
     272    //
     273    TGProgressBar *bar = CreateProgressBar(fTop2);
     274    read.SetProgressBar(bar);
     275    evtloop.SetProgressBar(bar);
     276
    280277    //
    281278    // Execute your analysis
     
    283280    Bool_t rc = evtloop.Eventloop();
    284281
    285     fTop2->RemoveFrame(&bar);
    286     Layout();
    287     MapSubwindows();
     282    //
     283    // Remove progressbar from window
     284    //
     285    DestroyProgressBar(bar);
    288286
    289287    if (!rc)
  • trunk/MagicSoft/Mars/mmain/MBrowser.cc

    r952 r1030  
    3434#include <TGListBox.h>      // TGListBox
    3535#include <TGComboBox.h>     // TGComboBox
     36#include <TGProgressBar.h>  // TGHProgressBar
    3637#include <TGFSContainer.h>  // TGFileContainer
    3738
     
    8081void MBrowser::CreateUpperFrame(TGCompositeFrame *frametop)
    8182{
     83    TGLayoutHints *lay1 = new TGLayoutHints(kLHintsTop    |kLHintsExpandX, 2, 2, 2, 0);
     84    TGLayoutHints *lay2 = new TGLayoutHints(kLHintsCenterY|kLHintsExpandX, 2, 2, 2, 2);
     85    TGLayoutHints *lay3 = new TGLayoutHints(kLHintsBottom |kLHintsExpandX, 2, 2, 0, 2);
     86    fList->Add(lay1);
     87    fList->Add(lay2);
     88    fList->Add(lay3);
    8289
    8390    //
    8491    // *********** Create Contents of frame top (upper part) **********
    8592    //
    86     fTop1 = new TGHorizontalFrame(frametop, 300, 100);
    87     fTop2 = new TGHorizontalFrame(frametop, 300, 100);
    88     fTop3 = new TGHorizontalFrame(frametop, 300, 100);
    89 
    90     frametop->AddFrame(fTop1);
    91     frametop->AddFrame(fTop2);
    92     frametop->AddFrame(fTop3);
     93    fTop1 = new TGHorizontalFrame(frametop, 500, 50);
     94    fTop2 = new TGHorizontalFrame(frametop, 500, 50);
     95    fTop3 = new TGHorizontalFrame(frametop, 500, 50);
     96
     97    // FIXME: If I use TGLayoutHints the Progress Bar doesn't disappear!
     98    frametop->AddFrame(fTop1);//, lay1);
     99    frametop->AddFrame(fTop2);//, lay2);
     100    frametop->AddFrame(fTop3);//, lay3);
    93101
    94102    fList->Add(fTop1);
     
    271279    // ---- Create the top window with a lot of buttons ----
    272280    //
     281    TGLayoutHints *layframetop = new TGLayoutHints(kLHintsExpandX);
     282    fList->Add(layframetop);
     283
    273284    TGCompositeFrame *frametop = new TGCompositeFrame(this, 300, 100, kVerticalFrame);
    274285    fList->Add(frametop);
    275     AddFrame(frametop);
     286    AddFrame(frametop, layframetop);
    276287
    277288    linesep = new TGHorizontal3DLine(this);
     
    297308    //
    298309    ChangeDir();
    299     SetWMSizeHints(400, 350, 1000, 1000, 10, 10);      // set the smallest and biggest size of the Main frame
    300 }
    301 
    302 
    303 // ======================================================================
    304 // ======================================================================
     310    SetWMSizeHints(400, 350, 1000, 1000, 10, 10); // set the smallest and biggest size of the Main frame
     311}
     312
    305313
    306314MBrowser::~MBrowser()
     
    313321}
    314322
    315 // ======================================================================
    316 // ======================================================================
     323TGProgressBar *MBrowser::CreateProgressBar(TGHorizontalFrame *frame)
     324{
     325    static TGLayoutHints laybar(kLHintsCenterY|kLHintsRight/*|kLHintsExpandX*/,
     326                                10, 10);
     327
     328    TGHProgressBar *bar=new TGHProgressBar(frame);
     329
     330    bar->SetWidth(150);
     331    bar->ShowPosition();
     332
     333    frame->AddFrame(bar, &laybar);
     334
     335    Layout();
     336    MapSubwindows();
     337
     338    return bar;
     339}
     340
     341void MBrowser::DestroyProgressBar(TGProgressBar *bar)
     342{
     343    TGHorizontalFrame *frame = (TGHorizontalFrame*)bar->GetParent();
     344
     345    frame->RemoveFrame(bar);
     346
     347    Layout();
     348    MapSubwindows();
     349
     350    delete bar;
     351}
    317352
    318353void MBrowser::CloseWindow()
     
    326361}
    327362
    328 
    329 // ======================================================================
    330 // ======================================================================
    331 
    332363Bool_t MBrowser::InputFileSelected()
    333364{
     
    337368    return fInputFile[0]!='\0';
    338369}
    339 
    340 
    341 // ======================================================================
    342 // ======================================================================
    343370
    344371void MBrowser::DisplError(const char *txt)
  • trunk/MagicSoft/Mars/mmain/MBrowser.h

    r1016 r1030  
    1414class TGListView;
    1515class TGComboBox;
     16class TGProgressBar;
    1617class TGPictureButton;
    1718class TGFileContainer;
     
    5455    void ChangeDir(const char *txt=NULL);
    5556
     57    TGProgressBar *CreateProgressBar(TGHorizontalFrame *frame);
     58    void DestroyProgressBar(TGProgressBar *bar);
     59
    5660    TGHorizontalFrame *fTop1;
    5761    TGHorizontalFrame *fTop2;
  • trunk/MagicSoft/Mars/mmain/MDataCheck.cc

    r1023 r1030  
    5656: MBrowser(main, p, w, h)
    5757{
    58     TGTextButton *pedadc = new TGTextButton(fTop2, "ADC Spectra of Pedestals", kButPedAdc);
    59     TGTextButton *cradc  = new TGTextButton(fTop2, "ADC Specta of Cosmics",    kButEvtAdc);
     58    TGTextButton *pedadc = new TGTextButton(fTop1, "ADC Spectra of Pedestals", kButPedAdc);
     59    TGTextButton *cradc  = new TGTextButton(fTop1, "ADC Specta of Cosmics",    kButEvtAdc);
    6060    TGTextButton *pedtdc = new TGTextButton(fTop3, "TDC Spectra of Pedestals", kButPedTdc);
    6161    TGTextButton *crtdc  = new TGTextButton(fTop3, "TDC Specta of Cosmics",    kButEvtTdc);
     
    7474    fList->Add(laybut);
    7575
    76     fTop2->AddFrame(pedadc, laybut);
    77     fTop2->AddFrame(cradc,  laybut);
     76    fTop1->AddFrame(pedadc, laybut);
     77    fTop1->AddFrame(cradc,  laybut);
    7878
    7979    fTop3->AddFrame(pedtdc, laybut);
     
    115115    plist.AddToList(&tasks);
    116116
    117     MReadTree readin(treeName, inputfile);
    118     tasks.AddToList(&readin);
     117    MReadTree read(treeName, inputfile);
     118    read.DisableAutoScheme();
    119119
    120     MFillH fillspect("MRawEvtData", "MHFadcCam");
    121     tasks.AddToList(&fillspect);
     120    MFillH fill("MRawEvtData", "MHFadcCam");
     121
     122    tasks.AddToList(&read);
     123    tasks.AddToList(&fill);
    122124
    123125    //
     
    127129    magic.SetParList(&plist);
    128130
    129     // ADD ProgressBar, TGHProgressBar::ShowStatus();
     131    //
     132    // Add ProgressBar to window
     133    //
     134    TGProgressBar *bar = CreateProgressBar(fTop1);
     135    read.SetProgressBar(bar);
     136    magic.SetProgressBar(bar);
    130137
    131138    //
    132     // start the loop running
     139    // Execute your analysis
    133140    //
    134     if (!magic.Eventloop())
     141    Bool_t rc = magic.Eventloop(300);
     142
     143    //
     144    // Remove progressbar from window
     145    //
     146    DestroyProgressBar(bar);
     147
     148    if (!rc)
    135149        return;
    136150
  • trunk/MagicSoft/Mars/mmain/MMonteCarlo.cc

    r1016 r1030  
    3232#include <TGButton.h>       // TGTextButton
    3333#include <TGTextEntry.h>    // TGTextEntry
     34#include <TGProgressBar.h>  // TGHProgressBar
    3435#include <TGButtonGroup.h>  // TGVButtonGroup
    3536
     
    4445void MMonteCarlo::AddButtons()
    4546{
    46     TGTextButton *carea = new TGTextButton(fTop1, "Collection Area", M_BUTTON_COLAREA);
    47     TGTextButton *trate = new TGTextButton(fTop1, "Trigger Rate",    M_BUTTON_RATE);
    48     TGTextButton *thold = new TGTextButton(fTop1, "Threshold",       M_BUTTON_THRESHOLD);
     47    TGTextButton *carea = new TGTextButton(fTop2, "Collection Area", M_BUTTON_COLAREA);
     48    TGTextButton *trate = new TGTextButton(fTop2, "Trigger Rate",    M_BUTTON_RATE);
     49    TGTextButton *thold = new TGTextButton(fTop2, "Threshold",       M_BUTTON_THRESHOLD);
    4950
    5051    fList->Add(carea);
     
    5960    fList->Add(laybut);
    6061
    61     fTop1->AddFrame(carea, laybut);
    62     fTop1->AddFrame(trate, laybut);
    63     fTop1->AddFrame(thold, laybut);
     62    fTop2->AddFrame(carea, laybut);
     63    fTop2->AddFrame(trate, laybut);
     64    fTop2->AddFrame(thold, laybut);
    6465}
    6566
     
    208209}
    209210
    210 void MMonteCarlo::CalculateCollectionArea() const
     211void MMonteCarlo::CalculateCollectionArea()
    211212{
    212213    //
     
    231232    //  - Then we can fill the efficiency histograms
    232233    //
    233     MReadTree reader("Events", fInputFile);
    234 //    reader.UseLeaf("fImpact");
    235 //    reader.UseLeaf("fEnergy");
    236 //    reader.UseLeaf("fNumFirstLevel");
    237 
    238     tlist.AddToList(&reader);
     234    MReadTree read("Events", fInputFile);
     235    tlist.AddToList(&read);
    239236
    240237    MMcCollectionAreaCalc effi;
     
    248245
    249246    //
    250     // Start to loop over all events
    251     //
    252     if (!magic.Eventloop())
     247    // Add ProgressBar to window
     248    //
     249    TGProgressBar *bar = CreateProgressBar(fTop2);
     250    read.SetProgressBar(bar);
     251    magic.SetProgressBar(bar);
     252
     253    //
     254    // Execute your analysis
     255    //
     256    Bool_t rc = magic.Eventloop();
     257
     258    //
     259    // Remove progressbar from window
     260    //
     261    DestroyProgressBar(bar);
     262
     263    if (!rc)
    253264        return;
    254265
     
    260271}
    261272
    262 void MMonteCarlo::CalculateTriggerRate() const
     273void MMonteCarlo::CalculateTriggerRate()
    263274{
    264275    // This macro has two input parameter:
     
    332343    //    analised trigger conditions should be set (BgR[])
    333344    //
    334     MReadTree reader("Events", fInputFile);
    335 /*    reader.UseLeaf("fImpact");
    336     reader.UseLeaf("fEnergy");
    337     reader.UseLeaf("fPhi");
    338     reader.UseLeaf("fTheta");
    339     reader.UseLeaf("fNumFirstLevel");
    340     reader.UseLeaf("fPhotElfromShower");
    341 */
    342     tlist.AddToList(&reader);
     345    MReadTree read("Events", fInputFile);
     346    tlist.AddToList(&read);
    343347
    344348    Float_t BgR[10]={660, 4, 0, 0, 0, 0, 0, 0, 0, 0};
     
    354358
    355359    //
    356     // Start to loop over all events
    357     //
    358     if (!magic.Eventloop())
     360    // Add ProgressBar to window
     361    //
     362    TGProgressBar *bar = CreateProgressBar(fTop2);
     363    read.SetProgressBar(bar);
     364    magic.SetProgressBar(bar);
     365
     366    //
     367    // Execute your analysis
     368    //
     369    Bool_t rc = magic.Eventloop();
     370
     371    //
     372    // Remove progressbar from window
     373    //
     374    DestroyProgressBar(bar);
     375
     376    if (!rc)
    359377        return;
    360378
     
    362380}
    363381
    364 void MMonteCarlo::CalculateThreshold() const
     382void MMonteCarlo::CalculateThreshold()
    365383{
    366384    const Int_t dim = GetDim();
     
    423441    //      like one dimension MMcThresholdCalc
    424442    //
     443
    425444    MReadTree read("Events", fInputFile);
    426 /*    read.UseLeaf("fEnergy");
    427     read.UseLeaf("fNumFirstLevel");
    428 */
     445
    429446    MMcThresholdCalc calc(dim);
    430447    tlist.AddToList(&read);
     
    435452
    436453    //
    437     // Begin the loop (if the loop wasn't successfull
    438     // don't try to draw the results
    439     //
    440     if (!evtloop.Eventloop())
     454    // Add ProgressBar to window
     455    //
     456    TGProgressBar *bar = CreateProgressBar(fTop2);
     457    read.SetProgressBar(bar);
     458    evtloop.SetProgressBar(bar);
     459
     460    //
     461    // Execute your analysis
     462    //
     463    Bool_t rc = evtloop.Eventloop();
     464
     465    //
     466    // Remove progressbar from window
     467    //
     468    DestroyProgressBar(bar);
     469
     470    if (!rc)
    441471        return;
    442472
  • trunk/MagicSoft/Mars/mmain/MMonteCarlo.h

    r1016 r1030  
    2020    Int_t GetDim() const;
    2121
    22     void CalculateCollectionArea() const;
    23     void CalculateTriggerRate() const;
    24     void CalculateThreshold() const;
     22    void CalculateCollectionArea();
     23    void CalculateTriggerRate();
     24    void CalculateThreshold();
    2525
    2626    void AddButtons();
  • trunk/MagicSoft/Mars/mraw/MRawEvtData.cc

    r1004 r1030  
    209209void MRawEvtData::Draw(Option_t *opt)
    210210{
    211     // ----- AppendPad(opt);
    212 
    213     //
    214     // FIXME: BIG MEMORY LEAK! (( How and when are the objects deleted?)
    215     //
     211    if (GetNumPixels()==0)
     212    {
     213        *fLog << "Sorry, no pixel to draw!" << endl;
     214        return;
     215    }
    216216
    217217    TString str(opt);
     
    247247        graph->Draw("AC*");
    248248
     249        TH1F *hist = graph->GetHistogram();
     250
     251        hist->SetXTitle("Time/FADC Slices");
     252        hist->SetYTitle("Signal/FADC Units");
     253
    249254        return;
    250255    }
     
    269274
    270275        TH1F *hist = new TH1F(name, "Hi Gain Samples FADC", n, 0, n);
     276        hist->SetXTitle("Time/FADC Slices");
     277        hist->SetYTitle("Signal/FADC Units");
    271278
    272279        for (int i=0; i<n; i++)
Note: See TracChangeset for help on using the changeset viewer.