Warsztaty GEANT4 oparte na materiałach treningowych (SLAC)

Warsztaty 2:   Interfejs użytkownika



    Proszę:

Ćwiczenie 1


1.   Proszę przekazać sterowanie aplikacją My do interfejsu użytkownika poprzez wykonanie makra którego nazwa przekazana jest jako argument programu głównego
2.   Napisać makro np. run.mac i wpisać do niego polecenie     /run/beamOn 3
3.   Prosze skompilować i uruchomić aplikacje 
        My  run.mac



Wskazówki:

-  Zmian dokonujemy w pliku My.cc
-  Proszę dodać plik nagłówkowy G4UImanager.hh oraz G4String.hh
-  Zamiast polecenia runManager->BeamOn  przekazujemy sterowanie do UI:
        G4String macro = argv[1];
       UI->ApplyCommand("/control/execute "+macro);

-  Prosze pamietać o pobraniu wskażnika do UI manager'a


 Rozwiązanie
 

Ćwiczenie 2


1.  Prosze zmodyfikować program główny w taki sposób aby wywołany bez parametrów
     przekazywał sterowanie aplikacją My do interfejsu użytkownika.
     Natomiast wywołany z parametrem (zakładamy że jest to nazwa makra) wykonywał
     to makro bezpośrednio z poziomu kodu c++
2.  Proszę skompilować aplikację My
3.  Proszę uruchomić makro interakcyjnie z poziomu interfejsu użytkownika
     Polecenie /control/execute  run.mac  można wykonać poprzez menu help lub wpisując je w polu session.


Wskazówki:
-  Zmian dokonujemy w pliku My.cc
-  Proszę dodać plik nagłówkowy  G4UIExecutive.hh
-  Proszę wykorzystać parametry programu głównego
      int main(int argc,char** argv)  
         argc==1   oznacza brak parametrów
       if (argc > 1)   to argv[1] jest nazwą makra do wykonania 


  Rozwiązanie

Ćwiczenie 3


1.  Prosze zmodyfikować program główny w taki sposób aby zainicjalizować wizualizację.
2.  Proszę skompilować aplikację My.
3.  Proszę uruchomić aplikację My i z poziomu interfejsu użytkownika wydać polecenia:
      ls /vis
     /vis/open OGLI
     /vis/drawVolume


Wskazówki:
-  Zmian dokonujemy w pliku My.cc korzystamy z klasy G4VisExecutive
- Proszę dodać plik nagłówkowy  G4VisExecutive.hh
- Instancje menegera wizualizacji należy dokonać PRZED przekazaniem sterowania do interfejsu użytkownika
- Jego unicestwienia dokonujemy po opuszczeniu interfejsu użytkownika. 
   Dalsze wskazówki pod linkiem do klasy G4VisExecutive
   


  Rozwiązanie

Uwaga: 
  Przyjęło się aby wizualizacja i otwieranie interfejsu graficznego było dodatkowo warunkowane już na poziomie kompilacji zdefiniowaniem zmiennych środowiskowych
  Zdefiniowanie zmiennej środowiskowej G4VIS_USE  warunkuje wizualizacją
                     a   zmiennej środowiskowej    G4UI_USE wrunkuje dodaniem interfejsu interaktywnego

  W kodzie c++ używamy komend preprocesora

#ifdef G4UI_USE
  kod c++
#endif

  Prosze poprawić kod  używając zmiennych środowiskowych
Prosze skompilować program z różnymi ustawienia zmiennych środowiskowych

np.   export  G4UI_USE=0
 
  Rozwiązanie