// dialog to allow user to see standard histograms
// 18-04-2003 M. Pallavicini created
//
#include "ShowHistoDlg.hh"
#include "EusoApplication.hh"
#include "EusoHistoFactory.hh"
#include "TGButton.h"
#include "Config.hh"
#include "TGLabel.h"
#include "TTree.h"
ClassImp(ShowHistoDlg)
//______________________________________________________________________________
ShowHistoDlg::ShowHistoDlg(EusoApplication *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;
}