1 #include "TEveBrowser.h"
2 #include "TEveViewer.h"
3 #include "TGLLightSet.h"
5 #include "application/Application.h"
8 EDApplication::EDApplication(
int argc,
char** argv) : TApplication(
"GGSLeonard", &argc, argv, 0, -1), _MainWindow(0), _FileManager(0) {
9 static const std::string routineName(
"EDApplication::EDApplication");
12 _fileLoaded = _fileToBeLoaded =
"";
17 if( args.flag_debug ) GGSSmartLog::verboseLevel = GGSSmartLog::DEBUG;
21 if( args.infilename ){
22 _fileToBeLoaded = args.infilename;
26 if( _FileManager->FileIsLoaded() ){
27 _MainWindow->SetFileName(_fileLoaded);
28 _FileManager->ReadEvent(0);
33 EDApplication::~EDApplication(){
42 void EDApplication::NextEvent(){
43 static const std::string routineName(
"EDApplication::NextEvent");
45 _FileManager->NextEvent();
46 _evtLoaded = _FileManager->GetNevent();
47 _MainWindow->SetEventNumber( _evtLoaded+1 );
51 void EDApplication::PrevEvent(){
52 static const std::string routineName(
"EDApplication::PrevEvent");
54 _FileManager->PrevEvent();
55 _evtLoaded = _FileManager->GetNevent();
56 _MainWindow->SetEventNumber( _evtLoaded+1 );
60 void EDApplication::LoadEvent(){
61 static const std::string routineName(
"EDApplication::LoadEvent");
63 if( _evtToBeLoaded == _evtLoaded )
return;
65 _FileManager->ReadEvent( _evtToBeLoaded );
66 _evtLoaded = _evtToBeLoaded;
67 _MainWindow->SetEventNumber( _evtLoaded+1 );
71 void EDApplication::SetFileToBeLoaded(
char* text){
72 _fileToBeLoaded = text;
75 void EDApplication::SetEventToBeLoaded(
char* text){
76 _evtToBeLoaded = atoi(text) - 1;
77 if( _evtToBeLoaded < 0 ) _evtToBeLoaded = 0;
80 void EDApplication::SetDisplayDetector(
char* det){
81 static const std::string routineName(
"EDApplication::SetDisplayDetector");
85 TGCheckButton *but = (TGCheckButton*) gTQSender;
89 _MainWindow->SetDisplayDetector(det, s);
92 void EDApplication::SetDisplayPartHits(Bool_t s){
93 _MainWindow->SetDisplayPartHits(s);
96 void EDApplication::LoadRootFile(){
97 static const std::string routineName(
"EDApplication::LoadRootFile");
99 if( !_fileToBeLoaded.CompareTo(_fileLoaded) )
return;
101 _FileManager->Load( _fileToBeLoaded );
102 _fileLoaded = _fileToBeLoaded;
104 if( _MainWindow && _FileManager->FileIsLoaded() ){
105 _MainWindow->SetFileName(_fileLoaded);
106 _MainWindow->UpdateFileEntries();
107 _MainWindow->CreateMaps();
108 _FileManager->ReadEvent(0,
true);
109 _MainWindow->SetEventNumber(0);
114 void EDApplication::HandleArgs(){
116 int parse_status = argp_parse(&argp, Argc(), Argv(), 0, 0, &args);
117 if( parse_status ) exit(42);
121 void EDApplication::InitGUI(){
123 TEveUtil::SetupEnvironment();
124 TEveUtil::SetupGUI();
126 if( !args.flag_debug ){
127 _MainWindow->GetBrowser()->HideBottomTab();
135 void EDApplication::LoadGeometry(){
136 static const std::string routineName(
"EDApplication::EDApplication");
138 _GeoManager =
new LeonardGeoManager( _MainWindow->GetGeometry(args.geofilename) );
140 _GeoManager->DefaultColors();
142 _MainWindow->AddGlobalElement( _GeoManager->GetEveGeoTopNode() );
143 _GeoManager->GetEveGeoTopNode()->ExpandIntoListTreesRecursively();
145 _MainWindow->FullRedraw3D(kTRUE);
147 _MainWindow->GetDefaultGLViewer()->GetClipSet()->SetClipType(TGLClip::EType(2));
149 _MainWindow->GetDefaultGLViewer()->ResetCameras();
150 _MainWindow->GetDefaultGLViewer()->CurrentCamera().RotateRad(-TMath::Pi()/6, -9*TMath::Pi()/12);
151 _MainWindow->GetDefaultGLViewer()->GetLightSet()->SetUseSpecular(
false);
155 int EDApplication::ParseArgs(
int key,
char* arg,
struct argp_state* state){
157 struct arguments* a = (
struct arguments*) state->input;
163 a->flag_debug = kTRUE;
173 a->geofilename = arg;
178 argp_failure(state, 1, 0,
"No arguments requested");
183 a->infilename = NULL;
184 a->geofilename = NULL;
185 a->flag_debug =
false;
190 if( !a->geofilename ) argp_failure(state, 1, 0,
"No geometry file specified \nUse -G flag to provide VGM geometry");
191 std::cout << std::endl;
202 {
"debug" ,
'd', 0 , 0,
"Enable Debug Info", 0},
203 {
"input-file" ,
'i',
"FILE", 0,
"Input file", 0},
204 {
"geometry" ,
'g',
"FILE", 0,
"Geometry file", 0},
207 struct argp
EDApplication::argp = {options, EDApplication::ParseArgs, 0, 0, 0, 0, 0};