Ignore:
Timestamp:
09/28/01 13:36:14 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/meventdisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.cc

    r928 r956  
    2626#include "MGFadcDisp.h"
    2727
    28 #include <stdlib.h>
    29 #include <iostream.h>
    30 
    31 #include <TGButton.h>      // TGPictureButton
    32 #include <TGLabel.h>       // TGLabel
    33 #include <TGTab.h>         // TGTab
    34 #include <TGListBox.h>     // TGListBox
    35 #include <TGSlider.h>      // TGVSlider
    36 #include <TRootEmbeddedCanvas.h>      // TRootEmbeddedCanvas
    37 #include <TCanvas.h>
    38 #include <TGTextEntry.h>   
    39 #include <TGMsgBox.h>
    40 #include <TG3DLine.h>      // TGHorizontal3DLine
    41                            // use TGSplitter instead for root<3.00
    42 
    43 
     28#include <stdlib.h>               // atoi
     29#include <iostream.h>             // cout for debugging
     30
     31#include <TList.h>                // TList
     32#include <TCanvas.h>              // TCanvas
     33#include <TRootEmbeddedCanvas.h>  // TRootEmbeddedCanvas
     34
     35#include <TGTab.h>                // TGTab
     36#include <TGLabel.h>              // TGLabel
     37#include <TGButton.h>             // TGPictureButton
     38#include <TGSlider.h>             // TGVSlider
     39#include <TGMsgBox.h>             // TGMsgBox
     40#include <TGListBox.h>            // TGListBox
     41#include <TGTextEntry.h>          // TGTextEntry
     42
     43#include <TG3DLine.h>             // TGHorizontal3DLine
     44                                  // use TGSplitter instead for root<3.00
    4445#include "MParList.h"
    45 #include "MRawRunHeader.h"
    46 #include "MRawEvtHeader.h"
    47 #include "MTime.h"
     46#include "MReadTree.h"
    4847#include "MRawEvtData.h"
    49 #include "MRawCrateArray.h"
    50 #include "MReadTree.h"
    5148#include "MRawEvtPixelIter.h"
    5249
    53 ClassImp(MGFadcDisp)
    54 
    55 
    56 MGFadcDisp::MGFadcDisp(char *filename, char *treename,
    57                        const TGWindow *p, const TGWindow *main,
    58                        UInt_t w, UInt_t h )
    59         : TGTransientFrame(p, main, w, h ) 
    60 {
    61   //   default constructor
    62 
    63   //   first connect the file with this Object
     50ClassImp(MGFadcDisp);
     51
     52enum MGFadcDispCommand
     53{
     54    M_PIXELLIST = 4201,
     55    M_PREVEVT,
     56    M_NEXTEVT,
     57    M_EVTNUMBER,
     58
     59    M_PREVPIXEL,
     60    M_NEXTPIXEL,
     61
     62    M_PRINT,
     63    M_CLOSE
     64};
     65
     66void MGFadcDisp::AddTopFramePart1(TGVerticalFrame *frame,
     67                                  const char *filename,
     68                                  const char *treename)
     69{
     70    //
     71    //  --- the top1 part of the window ---
     72    //
     73    TGHorizontalFrame *top1 = new TGHorizontalFrame(frame, 300, 100);
     74    fList->Add(top1);
     75
     76    //
     77    // create gui elements
     78    //
     79    TGLabel *lfile = new TGLabel(top1, new TGString("File:"));
     80    TGLabel *file  = new TGLabel(top1, new TGString(filename));
     81    TGLabel *ltree = new TGLabel(top1, new TGString("Tree:"));
     82    TGLabel *tree  = new TGLabel(top1, new TGString(treename));
     83
     84    fList->Add(lfile);
     85    fList->Add(file);
     86    fList->Add(ltree);
     87    fList->Add(tree);
     88
     89    //
     90    // layout and add gui elements in/to frame
     91    //
     92    TGLayoutHints *laystd = new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10);
     93    fList->Add(laystd);
     94
     95    top1->AddFrame(lfile, laystd);
     96    top1->AddFrame(file,  laystd);
     97    top1->AddFrame(ltree, laystd);
     98    top1->AddFrame(tree,  laystd);
     99
     100    //
     101    // layout and add frame
     102    //
     103    TGLayoutHints *laytop1 = new TGLayoutHints(kLHintsTop);
     104    fList->Add(laytop1);
     105
     106    frame->AddFrame(top1, laytop1);
     107}
     108
     109void MGFadcDisp::AddTopFramePart2(TGVerticalFrame *frame)
     110{
     111    //
     112    // --- the top2 part of the window ---
     113    //
     114    TGHorizontalFrame *top2 = new TGHorizontalFrame(frame, 300, 100);
     115    fList->Add(top2);
     116
     117    //
     118    // Create the gui elements
     119    //
     120    TGTextButton *prevevt = new TGTextButton(top2, "<< Previous Event", M_PREVEVT);
     121    prevevt->Associate(this);
     122
     123    TGLabel *evtnr = new TGLabel(top2, new TGString("Event: "));
     124
     125    fTxtEvtNr = new TGTextEntry(top2, new TGTextBuffer(100), M_EVTNUMBER);
     126    fTxtEvtNr->Resize(60, fTxtEvtNr->GetDefaultHeight());
     127    fTxtEvtNr->Associate(this);
     128
     129    char wortdummy[100];
     130    sprintf(wortdummy, "out of %d Events", fReadTree->GetEntries());
     131    TGLabel *totnr = new TGLabel(top2, new TGString(wortdummy));
     132
     133    TGTextButton *nextevt = new TGTextButton (top2, "Next Event >>", M_NEXTEVT);
     134    nextevt->Associate(this);
     135
     136    //
     137    // Add gui elements to 'atotodel'
     138    //
     139    fList->Add(prevevt);
     140    fList->Add(evtnr);
     141    fList->Add(fTxtEvtNr);
     142    fList->Add(totnr);
     143    fList->Add(nextevt);
     144
     145    //
     146    // add the gui elements to the frame
     147    //
     148    TGLayoutHints *laystd    = new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10);
     149    TGLayoutHints *laytentry = new TGLayoutHints(kLHintsNormal, 5, 5, 5, 5);
     150
     151    fList->Add(laystd);
     152    fList->Add(laytentry);
     153
     154    top2->AddFrame(prevevt,   laystd);
     155    top2->AddFrame(evtnr,     laystd);
     156    top2->AddFrame(fTxtEvtNr, laytentry);
     157    top2->AddFrame(totnr,     laystd);
     158    top2->AddFrame(nextevt,   laystd);
     159
     160    frame->AddFrame(top2, new TGLayoutHints(kLHintsCenterX));
     161}
     162
     163void MGFadcDisp::AddMidFrame(TGHorizontalFrame *frame)
     164{
     165    //
     166    // create tab control
     167    //
     168    TGTab *tabs = new TGTab(frame, 300, 300);
     169
     170    //
     171    // Create Tab1
     172    //
     173    TGCompositeFrame *tab1 = tabs->AddTab("PixelList");
     174    tab1->ChangeOptions(kHorizontalFrame);
     175
     176    //
     177    // Create first gui element for tab1
     178    //
     179    fPixelList = new TGListBox(tab1, M_PIXELLIST);
     180    fPixelList->Associate(this);
     181    fPixelList->Resize(80, 230);
     182
     183    TGLayoutHints *layplist = new TGLayoutHints(kLHintsExpandY|kLHintsLeft, 5, 5, 5, 5);
     184    tab1->AddFrame(fPixelList, layplist);
     185
     186    //
     187    // Crete second gui elemet for tab1 (TGVertical Frame)
     188    //
     189    TGVerticalFrame *mid1 = new TGVerticalFrame(tab1, 300, 100);
     190
     191    //
     192    // Create gui elements for vertical frame
     193    //
     194    TGTextButton *prevpix = new TGTextButton(mid1, "<< Prev Pixel", M_PREVPIXEL);
     195    TGTextButton *nextpix = new TGTextButton(mid1, "Next Pixel >>", M_NEXTPIXEL);
     196    prevpix->Associate(this);
     197    nextpix->Associate(this);
     198
     199    TGVSlider *slider = new TGVSlider(mid1, 200, kSlider1|kScaleBoth);
     200    slider->Associate(this);
     201    slider->SetRange(0, 576);
     202
     203    //
     204    // Layout gui elements
     205    //
     206    TGLayoutHints *laybut    = new TGLayoutHints(kLHintsRight);
     207    TGLayoutHints *layslider = new TGLayoutHints(kLHintsCenterX|kLHintsExpandY);
     208
     209    mid1->AddFrame(prevpix, laybut);
     210    mid1->AddFrame(slider,  layslider);
     211    mid1->AddFrame(nextpix, laybut);
     212
     213    TGLayoutHints *laytab    = new TGLayoutHints(kLHintsRight|kLHintsExpandY, 5, 5, 5, 5);
     214    tab1->AddFrame(mid1, laytab);
     215
     216    TGLayoutHints *laytabs   = new TGLayoutHints(kLHintsNormal|kLHintsExpandY, 10, 10, 10, 10);
     217    frame->AddFrame(tabs, laytabs);
     218
     219    //
     220    // Create second part of frame
     221    //
     222    TGTab *tabdisp = new TGTab(frame, 300, 300);
     223
     224    TGCompositeFrame *tab2 = tabdisp->AddTab("Digital Scope");
     225
     226    TRootEmbeddedCanvas *canvas = new TRootEmbeddedCanvas("Digi Scope", tab2, 400, 400);
     227
     228    TGLayoutHints *laycanvas = new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX|kLHintsExpandY);
     229    tab2->AddFrame(canvas, laycanvas);
     230
     231    fCanvas = canvas->GetCanvas();
     232
     233    //
     234    // Add second part to frame
     235    //
     236    TGLayoutHints *laydisp = new TGLayoutHints(kLHintsNormal|kLHintsExpandY|kLHintsExpandX, 10, 10, 10, 10);
     237    frame->AddFrame(tabdisp, laydisp);
     238
     239    //
     240    // Now add all gui elements to 'autodel'-list
     241    //
     242    fList->Add(tabdisp);
     243    fList->Add(canvas);
     244    fList->Add(laycanvas);
     245    fList->Add(laydisp);
     246    fList->Add(fPixelList);
     247    fList->Add(layplist);
     248    fList->Add(mid1);
     249    fList->Add(prevpix);
     250    fList->Add(laybut);
     251    fList->Add(slider);
     252    fList->Add(layslider);
     253    fList->Add(nextpix);
     254    fList->Add(laytab);
     255    fList->Add(laytabs);
     256
     257}
     258
     259void MGFadcDisp::AddLowFrame(TGHorizontalFrame *frame)
     260{
     261    TGTextButton *but1 = new TGTextButton(frame, "Print", M_PRINT);
     262    TGTextButton *but2 = new TGTextButton(frame, "Close", M_CLOSE);
     263
     264    but1->Associate(this);
     265    but2->Associate(this);
     266
     267    fList->Add(but1);
     268    fList->Add(but2);
     269
     270    TGLayoutHints *laybut = new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10);
     271    fList->Add(laybut);
     272
     273    frame->AddFrame(but1, laybut);
     274    frame->AddFrame(but2, laybut);
     275}
     276
     277void MGFadcDisp::CreateGui(const char *filename, const char *treename)
     278{
     279    //
     280    // Create the frame elements and add gui elements to it
     281    //
     282    TGVerticalFrame *frametop = new TGVerticalFrame(this, 300, 100);
     283    AddTopFramePart1(frametop, filename, treename);
     284    AddTopFramePart2(frametop);
     285
     286    TGHorizontal3DLine *line1   = new TGHorizontal3DLine(this);
     287
     288    TGHorizontalFrame *framemid = new TGHorizontalFrame(this, 300, 100);
     289    AddMidFrame(framemid);
     290
     291    TGHorizontal3DLine *line2   = new TGHorizontal3DLine(this);
     292
     293    TGHorizontalFrame *framelow = new TGHorizontalFrame(this, 300, 100);
     294    AddLowFrame(framelow);
     295
     296    //
     297    // add frame elements to 'autodel'
     298    //
     299    fList->Add(frametop);
     300    fList->Add(line1);
     301    fList->Add(framemid);
     302    fList->Add(line2);
     303    fList->Add(framelow);
     304
     305    //
     306    // Layout frame elements and add elements to frame
     307    //
     308    TGLayoutHints *laytop  = new TGLayoutHints(kLHintsTop|kLHintsCenterX);
     309    TGLayoutHints *layline = new TGLayoutHints(kLHintsTop|kLHintsExpandX);
     310    TGLayoutHints *laymid  = new TGLayoutHints(kLHintsExpandY|kLHintsExpandX);
     311    TGLayoutHints *laylow  = new TGLayoutHints(kLHintsTop);
     312
     313    fList->Add(laytop);
     314    fList->Add(layline);
     315    fList->Add(laymid);
     316    fList->Add(laylow);
     317
     318    AddFrame(frametop, laytop);
     319    AddFrame(line1,    layline);
     320    AddFrame(framemid, laymid);
     321    AddFrame(line2,    layline);
     322    AddFrame(framelow, laylow);
     323}
     324
     325void MGFadcDisp::SetupFileAccess(const char *filename, const char *treename)
     326{
     327    //
     328    // Create the file access elements
     329    //
     330    fEvtData = new MRawEvtData();
    64331
    65332    pList = new MParList();
    66 
    67   fRunHeader = new MRawRunHeader();
    68   pList->AddToList(fRunHeader);
    69 
    70   fEvtHeader = new MRawEvtHeader();
    71   pList->AddToList(fEvtHeader);
    72   fEvtTime   = new MTime();
    73   pList->AddToList(fEvtTime);
    74   fEvtData   = new MRawEvtData();
    75   pList->AddToList(fEvtData);
    76   fEvtCrate  = new MRawCrateArray();
    77   pList->AddToList(fEvtCrate);
    78 
    79  
    80   fReadTree  =  new MReadTree ( treename, filename ) ;
    81   fReadTree->PreProcess( pList ) ;
    82 
    83   //
    84   //   the top part of the window
    85   //
    86   fFrameTop = new TGVerticalFrame (this, 300, 100 ) ;
    87 
    88   fTop1 = new TGHorizontalFrame (fFrameTop, 300, 100 ) ;
    89  
    90   fLabelFile = new TGLabel(fTop1, new TGString("File:") );
    91   fTop1->AddFrame( fLabelFile, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    92 
    93   fNameFile = new TGLabel(fTop1, new TGString( filename ) );
    94   fTop1->AddFrame( fNameFile, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    95 
    96   fLabelTree = new TGLabel(fTop1, new TGString("Tree:") );
    97   fTop1->AddFrame( fLabelTree, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    98 
    99   fNameTree = new TGLabel(fTop1, new TGString( treename ) );
    100   fTop1->AddFrame( fNameTree, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    101 
    102   fFrameTop->AddFrame(fTop1,new TGLayoutHints (kLHintsTop ) ) ;
    103 
    104   fTop2 = new TGHorizontalFrame (fFrameTop, 300, 100 ) ;
    105  
    106   fButtonPrevEvt = new TGTextButton (fTop2, "<< Previous Event", M_PREVEVT ) ;
    107   fButtonPrevEvt->Associate(this) ;
    108   fTop2->AddFrame (fButtonPrevEvt, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10  ) ) ;
    109  
    110   fLabelEvtNr = new TGLabel(fTop2, new TGString("Event: ") );
    111   fTop2->AddFrame( fLabelEvtNr, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    112 
    113   fTxtEvtNr = new TGTextEntry(fTop2, fTxtBufEvtNr = new TGTextBuffer(100), M_EVTNUMBER);
    114   fTxtEvtNr->Resize(60, fTxtEvtNr->GetDefaultHeight());
    115   fTxtEvtNr->Associate(this) ;
    116   fTop2->AddFrame(fTxtEvtNr, new TGLayoutHints(kLHintsTop | kLHintsLeft,
    117                                                        5, 5, 5, 5));
    118 
    119   char wortdummy[100] ;
    120   sprintf (wortdummy, "out of %d Events", fReadTree->GetEntries() ) ;
    121   fLabelTotNr = new TGLabel(fTop2, new TGString( wortdummy ) );
    122   fTop2->AddFrame( fLabelTotNr, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
    123  
    124   fButtonNextEvt = new TGTextButton (fTop2, "Next Event >>", M_NEXTEVT ) ;
    125   fButtonNextEvt->Associate(this) ;
    126   fTop2->AddFrame (fButtonNextEvt, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10  ) ) ;
    127 
    128  
    129   fFrameTop->AddFrame(fTop2,new TGLayoutHints ( kLHintsCenterX ) ) ;
    130 
    131  
    132 
    133   AddFrame(fFrameTop, new TGLayoutHints (kLHintsTop | kLHintsCenterX ) ) ;   
    134  
    135   //   a line between top and mid frame
    136 
    137   fLineSep1 = new TGHorizontal3DLine(this) ;
    138   AddFrame(fLineSep1, new TGLayoutHints(kLHintsTop | kLHintsExpandX) );
    139 
    140   //
    141   //   the middle part of the window
    142   //
    143  
    144   fFrameMid = new TGHorizontalFrame (this, 300, 100 ) ;
    145  
    146   //   the left part is the control tab enviroment
    147  
    148   fTabControl = new TGTab(fFrameMid, 300, 300);
    149   TGCompositeFrame *tControl = fTabControl->AddTab("PixelList");     
    150   tControl->ChangeOptions ( kHorizontalFrame ) ;
    151 
    152 
    153   fPixelList = new TGListBox(tControl, M_PIXELLIST ) ;
    154   fPixelList->Associate(this) ;
    155   tControl->AddFrame(fPixelList, new TGLayoutHints(kLHintsExpandY | kLHintsLeft, 5, 5, 5, 5 ) ) ;
    156   fPixelList->Resize(80, 230 ) ;
    157 
    158   fMid1 = new TGVerticalFrame (tControl, 300, 100 ) ;
    159  
    160  
    161   fButtonPrevPix = new TGTextButton (fMid1, "<< Prev Pixel", 9999 ) ;
    162   fMid1->AddFrame(fButtonPrevPix, new TGLayoutHints(kLHintsRight) ) ;
    163 
    164   fPixSlider = new TGVSlider (fMid1, 200, kSlider1 | kScaleBoth, 9999 );
    165   fPixSlider->Associate(this);
    166   fPixSlider->SetRange(0, 576);
    167   fMid1->AddFrame(fPixSlider, new TGLayoutHints(kLHintsCenterX | kLHintsExpandY));
    168  
    169   fButtonNextPix = new TGTextButton (fMid1, "Next Pixel >>", 9999 ) ;
    170   fMid1->AddFrame(fButtonNextPix, new TGLayoutHints(kLHintsRight) ) ;
    171 
    172   tControl->AddFrame(fMid1, new TGLayoutHints(kLHintsRight | kLHintsExpandY, 5, 5, 5, 5)) ;
    173  
    174   fFrameMid-> AddFrame(fTabControl, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY, 10, 10, 10 ,10 ) ); 
    175 
    176   //   the right part is the display tab enviroment
    177  
    178   fTabDisplay = new TGTab(fFrameMid, 300, 300);
    179   TGCompositeFrame *tDisplay = fTabDisplay->AddTab("Digital Scope");     
    180 
    181   fECanDigScope = new TRootEmbeddedCanvas("fECanDigScope", tDisplay, 400, 400 ) ;
    182   tDisplay->AddFrame( fECanDigScope, new TGLayoutHints ( kLHintsCenterX | kLHintsCenterY | kLHintsExpandX | kLHintsExpandY ) ) ;
    183 
    184   fCan = fECanDigScope->GetCanvas() ;
    185        
    186 
    187   fFrameMid-> AddFrame(fTabDisplay, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY | kLHintsExpandX  , 10, 10, 10 ,10 ) ); 
    188  
    189  
    190   AddFrame(fFrameMid, new TGLayoutHints (kLHintsExpandY | kLHintsExpandX ) ) ;   
    191 
    192   //   a line between mid and low frame
    193  
    194   fLineSep2 = new TGHorizontal3DLine(this) ;
    195   AddFrame(fLineSep2, new TGLayoutHints(kLHintsTop | kLHintsExpandX) );
    196 
    197    //   the low part of the window
    198   //
    199   fFrameLow = new TGHorizontalFrame (this, 300, 100 ) ;
    200  
    201  
    202   fButtonPrint = new TGTextButton(fFrameLow, "Print", M_PRINT) ;
    203   fButtonPrint->Associate(this) ;
    204   fFrameLow->AddFrame( fButtonPrint, new TGLayoutHints(kLHintsLeft , 10, 10, 10, 10 ) )  ;
    205 
    206   fButtonClose = new TGTextButton(fFrameLow, "Close", M_CLOSE) ;
    207   fButtonClose->Associate(this) ;
    208   fFrameLow->AddFrame( fButtonClose, new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10 ) )  ;
    209 
    210  
    211   AddFrame(fFrameLow, new TGLayoutHints (kLHintsTop ) ) ;   
    212 
    213   //
    214   //   Map the window, set up the layout, etc.
    215   //
    216   SetWMSizeHints(450, 400, 1000, 1000, 10, 10 ) ;      // set the smallest and biggest size of the Main frame
    217 
    218   MapSubwindows();
    219  
    220   Layout();
    221  
    222   SetWindowName("FadcDisplay");
    223   SetIconName("FadcDisp");
    224  
    225   MapWindow();
    226 
    227   //
    228   //   fReadTree the first event and update the window
    229   //
    230   fReadTree->GetEvent() ;
    231   CreatePixelList() ;
    232   UpdateEventCounter() ;
    233 
     333    pList->AddToList(fEvtData);
     334
     335    fReadTree = new MReadTree(treename, filename);
     336    fReadTree->PreProcess(pList);
     337    fReadTree->GetEvent();
     338}
     339
     340MGFadcDisp::MGFadcDisp(char *filename, char *treename,
     341                       const TGWindow *p, const TGWindow *main,
     342                       UInt_t w, UInt_t h)
     343    : TGTransientFrame(p, main, w, h)
     344{
     345
     346    //
     347    //  create an autodelete-list for the gui elements
     348    //
     349    fList = new TList;
     350    fList->SetOwner();
     351
     352    SetupFileAccess(filename, treename);
     353    CreateGui(filename, treename);
     354
     355    //
     356    //   Map the window, set up the layout, etc.
     357    //
     358    SetWMSizeHints(450, 400, 1000, 1000, 10, 10 );      // set the smallest and biggest size of the Main frame
     359
     360    MapSubwindows();
     361
     362    Layout();
     363
     364    SetWindowName("FadcDisplay");
     365    SetIconName("FadcDisp");
     366
     367    MapWindow();
     368
     369    CreatePixelList();
     370    UpdateEventCounter();
    234371}
    235372
     
    237374MGFadcDisp::~MGFadcDisp()
    238375{
    239   // close the file
    240 
    241   fReadTree->PostProcess() ;
    242 
    243   delete  fRunHeader ;
    244   delete  fEvtHeader ;
    245   delete  fEvtTime   ;
    246   delete  fEvtData ;
    247   delete  fEvtCrate  ;
    248 
    249   delete  pList ;
    250 
    251   delete  fReadTree ;
    252 
    253   //   destruct the graphical members 
    254 
    255   delete  fButtonPrint ;
    256   delete  fButtonClose ;
    257  
    258   //  delete  fCan ;
    259   delete  fECanDigScope ;
    260   delete  fTabDisplay ;
    261  
    262   delete  fPixSlider ;
    263   delete  fButtonPrevPix ;
    264   delete  fButtonNextPix ;
    265   delete  fMid1 ;
    266   delete  fPixelList;
    267   delete  fTabControl  ;
    268  
    269   delete  fLabelEvtNr ;
    270   delete  fLabelTotNr ;
    271   //delete  fTxtBufEvtNr ;
    272   delete  fTxtEvtNr ;
    273   delete  fButtonNextEvt ;
    274   delete  fButtonPrevEvt ;
    275   delete  fLabelTree ;
    276   delete  fNameTree ;
    277   delete  fNameFile ;
    278   delete  fLabelFile ;
    279   delete  fTop2 ;
    280   delete  fTop1 ;
    281  
    282   delete  fFrameLow ;
    283   delete  fLineSep2 ;
    284   delete  fFrameMid ;
    285   delete  fLineSep1 ;
    286   delete  fFrameTop ;
     376    //
     377    // close the file
     378    //
     379    fReadTree->PostProcess();
     380
     381    delete fEvtData;
     382    delete pList;
     383
     384    delete fReadTree;
     385
     386    //
     387    //   destruct the graphical members
     388    //
     389    delete fList;
    287390}
    288391
     
    295398   // window menu item is selected.
    296399
    297     delete this ;
     400    delete this;
    298401}
    299402       
     
    312415    while (pixel.Next())
    313416    {
    314         char wortdummy[100] ;
     417        char wortdummy[100];
    315418        sprintf(wortdummy, "%d", pixel.GetPixelId());
    316419        fPixelList->AddEntry(wortdummy, pixel.GetPixelId());
     
    323426    // check if the pixel from last event also occurs in this event
    324427    //
    325     fCan->Clear() ;
    326     fCan->cd() ;
     428    fCanvas->Clear();
     429    fCanvas->cd();
    327430
    328431    if (lastsel<0 || !pixel.Jump(lastsel))
     
    333436    }
    334437
    335     char wortdummy[100] ;
     438    char wortdummy[100];
    336439    sprintf(wortdummy, "GRAPH%d", lastsel);
    337440    fEvtData->Draw(wortdummy);
    338441    fPixelList->Select(lastsel, kTRUE);
    339442
    340     fCan->Modified();
    341     fCan->Update();
     443    fCanvas->Modified();
     444    fCanvas->Update();
    342445}
    343446
    344447void MGFadcDisp::UpdateEventCounter()
    345448{
    346   //     Update the event counter
    347  
    348   char wortdummy[256] ;
    349    
    350   sprintf (wortdummy, "%d", fReadTree->GetEventNum() )  ;
    351  
    352   fTxtEvtNr->SetText(wortdummy) ;
     449    //     Update the event counter
     450
     451    char wortdummy[256];
     452
     453    sprintf(wortdummy, "%d", fReadTree->GetEventNum());
     454
     455    fTxtEvtNr->SetText(wortdummy);
    353456}
    354457
     
    356459{
    357460    Int_t buttons = 4;
    358     Int_t retval = 0 ;
     461    Int_t retval  = 0;
    359462
    360463    //  first check if the new event is in the range of possible events
    361464 
    362     if ( iEvt >= fReadTree->GetEntries() )
     465    if (iEvt >= fReadTree->GetEntries())
    363466    {
    364467        new TGMsgBox(fClient->GetRoot(), this,
     
    382485}
    383486
     487void MGFadcDisp::DisplayPix(UInt_t i)
     488{
     489    char wortdummy[256];
     490
     491    sprintf(wortdummy, "GRAPH%d", i);
     492
     493    fCanvas->Clear();
     494    fCanvas->cd();
     495
     496    fEvtData->Draw(wortdummy);
     497
     498    fCanvas->Modified();
     499    fCanvas->Update();
     500
     501    //
     502    // FIXME: too complicated!
     503    //
     504    fPixelList->RemoveEntries(0, fEvtData->GetNumPixels());
     505    CreatePixelList(i);
     506}
     507
    384508Bool_t MGFadcDisp::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
    385509{
    386   //------------------------------------------------------------------
    387   //
    388   //    ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
    389   //
    390   // Processes information from all GUI items.
    391   // Selecting an item usually generates an event with 4 parameters.
    392   // The first two are packed into msg (first and second bytes).
    393   // The other two are parm1 and parm2.
    394   //
    395   //------------------------------------------------------------------
    396   char wortdummy[256] ;
    397   Int_t   buttons = 4, retval = 0 ;
    398 
    399   switch(GET_MSG(msg))
     510    //------------------------------------------------------------------
     511    //
     512    //    ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
     513    //
     514    // Processes information from all GUI items.
     515    // Selecting an item usually generates an event with 4 parameters.
     516    // The first two are packed into msg (first and second bytes).
     517    // The other two are parm1 and parm2.
     518    //
     519    //------------------------------------------------------------------
     520
     521    switch(GET_MSG(msg))
    400522    {
    401523    case kC_COMMAND:
    402    
    403       switch(GET_SUBMSG(msg))
    404         {
    405          
    406         case kCM_BUTTON:
    407          
    408           switch (parm1)
    409             {
    410             case M_PREVEVT:
    411               ReadinEvent(fReadTree->GetEventNum()-1 ) ;
    412               break;
    413              
    414             case M_NEXTEVT:
    415               ReadinEvent(fReadTree->GetEventNum()+1 ) ;
    416               break;
    417 
    418 
    419             case M_PRINT:
    420               new TGMsgBox(fClient->GetRoot(), this,
    421                            "INFORMATION!",
    422                            "Your are invited to program that!!",
    423                            kMBIconExclamation, buttons, &retval);
    424              
    425               break ;
    426 
    427             case M_CLOSE:
    428               CloseWindow() ;
    429               break;
    430 
    431             }
    432          
    433         case kCM_LISTBOX:
    434           switch (parm1)
    435             {
    436             case M_PIXELLIST:
    437               sprintf(wortdummy, "GRAPH%d", fPixelList->GetSelected());
    438 
    439               fCan->Clear() ;
    440               fCan->cd() ;
    441 
    442               fEvtData->Draw(wortdummy) ;
    443              
    444               fCan->Modified() ;
    445               fCan->Update() ;
    446               break;
    447             }
    448           break;
    449          
    450         }
    451    
     524        switch(GET_SUBMSG(msg))
     525        {
     526        case kCM_BUTTON:
     527            switch (parm1)
     528            {
     529            case M_PREVEVT:
     530                ReadinEvent(fReadTree->GetEventNum()-1);
     531                return kTRUE;
     532
     533            case M_NEXTEVT:
     534                ReadinEvent(fReadTree->GetEventNum()+1);
     535                return kTRUE;
     536
     537            case M_PREVPIXEL:
     538                DisplayPix(fPixelList->GetSelected()-1);
     539                return kTRUE;
     540
     541            case M_NEXTPIXEL:
     542                DisplayPix(fPixelList->GetSelected()+1);
     543                return kTRUE;
     544
     545            case M_PRINT:
     546                cout << "Sorry, not yet implemented!" << endl;
     547                return kTRUE;
     548
     549            case M_CLOSE:
     550                CloseWindow();
     551                return kTRUE;
     552            }
     553            return kTRUE;
     554
     555        case kCM_LISTBOX:
     556            if (parm1 != M_PIXELLIST)
     557                return kTRUE;
     558
     559            DisplayPix(fPixelList->GetSelected());
     560            return kTRUE;
     561        }
     562        return kTRUE;
     563
    452564    case kC_TEXTENTRY:
    453      
    454       switch(GET_SUBMSG(msg))
    455         {
    456         case kTE_TEXTCHANGED:
    457             break ;
    458 
    459         case kTE_ENTER:
    460             {
    461                 const char *txt = fTxtEvtNr->GetText();
    462                 ReadinEvent(atoi(txt));
    463             }
    464           break;
    465         }
    466       break;
    467      
    468     default:
    469       break;     
     565        if (GET_SUBMSG(msg) == kTE_ENTER)
     566            ReadinEvent(atoi(fTxtEvtNr->GetText()));
     567
     568        return kTRUE;
    470569    }
    471570
    472   return kTRUE ;
    473 }
     571    return kTRUE;
     572}
  • trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.h

    r730 r956  
    1010#endif
    1111
    12 class MParList ;
    13 class MRawRunHeader ;
    14 class MRawEvtHeader ;
    15 class MTime ;
    16 class MRawEvtData ;
    17 class MRawCrateArray ;
     12class MParList;
     13class MReadTree;
     14class MRawEvtData;
    1815
    19 class MReadTree ;
     16class TList;
     17class TCanvas;
     18class TGListBox;
     19class TGTextEntry;
    2020
    21 class TGHorizontal3DLine;
    22 class TGLabel ;
    23 class TGTextButton ;
    24 class TGTab ;
    25 class TGListBox ;
    26 class TGVSlider;
    27 class TRootEmbeddedCanvas ;
    28 class TCanvas ;
    29 class TGTextEntry ;
    30 class TGTextBuffer ;
     21class MGFadcDisp : public TGTransientFrame
     22{
     23private:
     24    //
     25    // GUI stuff
     26    //
     27    TList       *fList;
    3128
    32 enum MGFadcDispCommand {
    33  
    34   M_PIXELLIST = 4201 ,
    35   M_PREVEVT,
    36   M_NEXTEVT,
    37   M_EVTNUMBER,
     29    TGTextEntry *fTxtEvtNr;
     30    TGListBox   *fPixelList;
    3831
    39   M_PREVPIXEL,
    40   M_NEXTPIXEL,
     32    TCanvas     *fCanvas;
    4133
    42   M_PRINT,
    43   M_CLOSE
    44  
     34    void AddTopFramePart1(TGVerticalFrame *frame,
     35                          const char *filename,
     36                          const char *treename);
     37    void AddTopFramePart2(TGVerticalFrame *frame);
     38    void AddMidFrame(TGHorizontalFrame *frame);
     39    void AddLowFrame(TGHorizontalFrame *frame);
    4540
    46 };
     41    void CreateGui(const char *filename, const char *treename);
     42    void SetupFileAccess(const char *filename, const char *treename);
    4743
    48 //
    49 //
     44    //
     45    // File Access stuff
     46    //
     47    MParList    *pList;
     48    MRawEvtData *fEvtData;
     49    MReadTree   *fReadTree;
    5050
    51 class MGFadcDisp : public TGTransientFrame {
     51    void ReadinEvent(UInt_t iEvt);
     52    void DisplayPix(UInt_t i);
    5253
    53  private:
     54public:
    5455
    55   //
    56   //     members to read in the file
    57   //
     56    MGFadcDisp(char *filename, char *treename,
     57               const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h);
    5858
    59   MParList       *pList ;
    60   MRawRunHeader  *fRunHeader ;
    61   MRawEvtHeader  *fEvtHeader ;
    62   MTime          *fEvtTime   ;
    63   MRawEvtData    *fEvtData    ;
    64   MRawCrateArray *fEvtCrate  ;
     59    ~MGFadcDisp();
    6560
    66   MReadTree *fReadTree ;
    67  
    68   //
    69   //     members for the gui
    70   //
    71  
    72   //    divide the whole frame in three subframes
    73  
    74   TGVerticalFrame    *fFrameTop ;
    75   TGHorizontalFrame  *fFrameMid, *fFrameLow ;
    76   TGHorizontal3DLine *fLineSep1, *fLineSep2 ;
     61    void CloseWindow();
    7762
    78   //    members in the top frame
     63    void CreatePixelList(Int_t lastsel=-1);
     64    void UpdateEventCounter();
    7965
    80   TGHorizontalFrame  *fTop1, *fTop2 ;
    81   TGLabel       *fLabelFile, *fNameFile,  *fLabelTree, *fNameTree ;
    82   TGTextButton  *fButtonPrevEvt, *fButtonNextEvt ;
    83   TGLabel       *fLabelEvtNr, *fLabelTotNr ;
    84   TGTextEntry          *fTxtEvtNr ;
    85   TGTextBuffer         *fTxtBufEvtNr ; //!  no output for this member 
    86                                        //   neccessary to compile  H.K.
     66    virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
    8767
    88   //    members in the mid frame
    89  
    90   TGTab            *fTabControl ;
    91   TGListBox        *fPixelList  ;
    92   TGVerticalFrame  *fMid1 ;
    93   TGTextButton     *fButtonPrevPix, *fButtonNextPix ;
    94   TGVSlider        *fPixSlider ;
    95  
    96   TGTab   *fTabDisplay ;
    97   TRootEmbeddedCanvas  *fECanDigScope ;
    98 
    99   TCanvas               *fCan ;
    100  
    101   //    members in the low frame
    102 
    103   TGTextButton  *fButtonPrint, *fButtonClose ;
    104 
    105  public:
    106  
    107   MGFadcDisp(char *filename, char *treename,
    108              const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h ) ;
    109 
    110   ~MGFadcDisp()  ;
    111 
    112   void CloseWindow() ;
    113 
    114   void CreatePixelList(Int_t lastsel=-1) ;
    115   void UpdateEventCounter() ;
    116   void ReadinEvent(UInt_t iEvt) ;
    117 
    118   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
    119  
    120   ClassDef(MGFadcDisp, 0)
    121 };
     68    ClassDef(MGFadcDisp, 0)
     69};
    12270
    12371#endif
Note: See TracChangeset for help on using the changeset viewer.