Universita' di GenovaINFN Sezione di Genova  
AIRWATCH / EUSO Genova

ShowHistoDlg - source file

// dialog to allow user to see standard histograms
// 18-04-2003 M. Pallavicini created
//

#include "ShowHistoDlg.hh"
#include "SimuApplication.hh"
#include "EusoHistoFactory.hh"
#include "TGButton.h"
#include "Config.hh"
#include "TGLabel.h"
#include "TTree.h"

ClassImp(ShowHistoDlg)

//______________________________________________________________________________
 ShowHistoDlg::ShowHistoDlg(SimuApplication *app, const TGWindow* p, 
    const TGWindow *main, TTree *tree) 
    : TGTransientFrame( p, main, 580,350) {

    theApp = app;
    theTree = tree;

    fFrame = new TGHorizontalFrame(this,60,20,kFixedWidth);
    fOK = new TGTextButton(fFrame,"&Close",1);
    fOK->Associate( this );

    fL1 = new TGLayoutHints(kLHintsTop|kLHintsLeft|kLHintsExpandX,2,2,2,2);
    fL2 = new TGLayoutHints(kLHintsBottom|kLHintsRight,2,2,5,1);

    fL5 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY,2, 2, 2, 2);
    fL7 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 0);
    fFrame->AddFrame( fOK, fL1 );
    fFrame->Resize(100,fOK->GetDefaultHeight());

    fMenuHisto = new TGPopupMenu( fClient->GetRoot() );
    fMenuHisto->AddEntry("Photons history in Euso Detector",H_PHOTON_1);
    fMenuHisto->AddEntry("Photons on focal surface",H_PHOTON_PHCOSTH_1);
    fMenuHisto->AddEntry("Photons in XY plane", H_PHOTON_XY_1);
    fMenuHisto->AddEntry("Photons wavelenghts", H_PHOTON_WLXY_1);

    fMenuHisto->Associate( this );

    fMenuHistoGlobal = new TGPopupMenu( fClient->GetRoot() );
    fMenuHistoGlobal->AddEntry("Trigger Efficiency",H_TRIGGER_EFF_1);
    fMenuHistoGlobal->Associate( this );

    fMenuOptions = new TGPopupMenu( fClient->GetRoot() );
    fMenuOptions->AddEntry("Dummy",H_PHOTON_1);
    fMenuOptions->Associate( this );

    fMenuLayout = new TGLayoutHints(kLHintsTop|kLHintsLeft|kLHintsExpandX,0,0,1,1);
    fItemLayout = new TGLayoutHints(kLHintsTop|kLHintsLeft,0,4,0,0);

    fMenu = new TGMenuBar( this, 1, 1, kHorizontalFrame );
    fMenu->AddPopup("&Event Histograms",fMenuHisto,fItemLayout);
    fMenu->AddPopup("&Global Histograms",fMenuHistoGlobal,fItemLayout);
    fMenu->AddPopup("&Options",fMenuOptions,fItemLayout);
    AddFrame( fMenu, fMenuLayout );

    AddFrame( fFrame, fL2 );

    fDisplayFrame = new TGCompositeFrame(this, 300, 300);

    // Create Display Canvas Tab (where the actual main event is displayed)
    //TGCompositeFrame *tFrame = fDisplayFrame->AddTab("Main Event (Shower)");

    fEmbeddedCanvas = new TRootEmbeddedCanvas("fEmbeddedCanvas", fDisplayFrame, 300, 300);
    fDisplayFrame->AddFrame(fEmbeddedCanvas, fL5);
    fCanvas = fEmbeddedCanvas->GetCanvas(); 
    AddFrame( fDisplayFrame,fL7 );  

    MapSubwindows();
    Resize( 800,600 );
    Window_t wd;
    int ax,ay;
    gVirtualX->TranslateCoordinates( main->GetId(), GetParent()->GetId(),
            (((TGFrame*)main)->GetWidth()-500)>>1,
            (((TGFrame*)main)->GetWidth()-350)>>1, ax, ay, wd );
    Move(ax,ay);
    SetWindowName("Event Histograms");
    MapWindow();
}

//______________________________________________________________________________
 ShowHistoDlg::~ShowHistoDlg() {
    delete fL1;
    delete fL2;
    delete fOK;
    delete fFrame;
}

//______________________________________________________________________________
 void ShowHistoDlg::CloseWindow() {
    delete fEmbeddedCanvas;
    delete this;
}

//______________________________________________________________________________
 void ShowHistoDlg::HandleMenuCommand( Long_t p1 ) {
    switch ( p1 ) {

        case H_PHOTON_1:
            EusoHistoFactory::Get()->DoHisto(HS_GTUTIME_1,theApp->Event(), fCanvas);
            break;
        case H_PHOTON_PHCOSTH_1:
            EusoHistoFactory::Get()->DoHisto(HS_PHOTON_PHICOSTH_1,theApp->Event(), fCanvas);
            break;
        case H_PHOTON_XY_1:
            EusoHistoFactory::Get()->DoHisto(HS_PHOTON_XY_1,theApp->Event(), fCanvas);
            break;
        case H_PHOTON_WLXY_1:
            EusoHistoFactory::Get()->DoHisto(HS_PHOTON_WLXY_1,theApp->Event(), fCanvas);
            break;
        case H_TRIGGER_EFF_1:
            EusoHistoFactory::Get()->DoGlobalHisto(HG_TRIGGER_EFF_1,theTree,0);
            break;
    }
}

//______________________________________________________________________________
 Bool_t ShowHistoDlg::ProcessMessage( Long_t msg, Long_t p1, Long_t p2 ) {
    switch (GET_MSG(msg ) ) {
        case kC_COMMAND:
            switch (GET_SUBMSG(msg)) {
                case kCM_BUTTON:
                    switch(p1) {
                        case 1:            // OK button pressed
                            CloseWindow();
                            break;
                        default:
                            break;
                    } 
                    break;
                case kCM_MENU:
                    HandleMenuCommand( p1 );
                    break;
            }
            break;
        default:
            break;
    }
  return kTRUE;
}

About Us | EUSO Official Website | Web pages created by Roberto Pesce and Alessandro Thea - Last Update Wed Nov 16 16:57:39 2005 Wed Nov 16 16:29:22 2005