Warsztaty GEANT4 oparte na materiałach treningowych (SLAC)

Warsztaty 1:   Zapoznanie się z budową aplikacji w GEANT4, interfejs użytkownika, wizualizacje

    Proszę:
  1. Zalogować się na stacje robocze a następnie na serwer taurus  (ssh -XY userid@taurus.fis.agh.edu.pl)
  2. Utworzyć katalog do pracy z GEANT4  
         mkdir g4work                                                                                                              
  3. Ściągnąć  plik  My.tar i  rozpakować go w katalogu g4work na serwerze taurus
  4. Na stacji roboczej z której otworzono przeglądarke
          scp My.tar userid@taurus.fis.agh.edu.pl:g4work/.
  5. Na serwerze taurus
        cd g4work;      tar -xf ~/My.tar
  6. Wyświetlić zawartość katalogu My
         cd My
    ;   ls -R
  7. Przeglądnąć zawartość pliku My.cc
          emacs My.cc
  8. Przeglądnąć przykład deklaracji klasy użtkownika MyDetectorConstruction  
          emacs include/MyDetectorConstruction.hh
  9. Przeglądnąć przykład implementacje klasy użytkownika MyDetectorConstruction  
          emacs src/MyDetectorConstruction.cc
  10. Przeglądnąć plik  GNUmakefile
          emacs GNUmakefile
  11. Ustawić zmienne środowiskowe (po zamontowaniu systemu plików cvmfs)
          source  /cvmfs/sft.cern.ch/lcg/external/gcc/4.9.1/x86_64-slc6/setup.sh     
          source /cvmfs/geant4.cern.ch/geant4/10.1.p02/x86_64-slc6-gcc49-opt/GNUmake-setup.sh
          export LD_LIBRARY_PATH=/usr/local/geantExternalLibs:$LD_LIBRARY_PATH
  12.  Skompilować program
         make
  13.  Uruchomić program
         bin/Linux/My

UWAGA:
     Aby wykonać skompilowany program  podczas następnej sesji należy ponownie ustawić
     zmienne
środowiskowe w przeciwnym razie program  nie będzie działać.
 

     Polecenia:

    
source  /cvmfs/sft.cern.ch/lcg/external/gcc/4.9.1/x86_64-slc6/setup.sh     
     source /cvmfs/geant4.cern.ch/geant4/10.1.p02/x86_64-slc6-gcc49-opt/GNUmake-setup.sh 
    
export LD_LIBRARY_PATH=/usr/local/geantExternalLibs:$LD_LIBRARY_PATH
 
     należy wykonać na początku każdej sesji pracy z GEANT4
     najlepiej wpisać je sobie do pliku ~/.bashrc



Interfejs użytkownika

Ć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 
        bin/Linux-g++/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);

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


 Rozwiązanie
 

Ćwiczenie 2


1.  Proszę 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.  Proszę 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 OGLIQt
     /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

Ćwiczenie 4


1.  Proszę poprawić kod używając zmiennych środowiskowych
2.  Proszę skompilować program z różnymi ustawienia zmiennych środowiskowych, np.   export  G4UI_USE=0


Wskazówki:
- 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 warunkuje dodaniem interfejsu interaktywnego
- W kodzie c++ używamy komend preprocesora:

    #ifdef G4UI_USE
      kod c++
    #endif


  Rozwiązanie


Wizualizacje


Ćwiczenie 5


1.   Proszę o skopiować do swojego katalogu plik run.mac
2.   Proszę wykonać dwa zmane nam polecenia z poziomu UI:
      /vis/open  OGLIQt
      /control/execute run.mac
3.  W osobnym okienku proszę wyedytowć plik run.mac. Ćwiczenie polega na odkomentowaniu odpowiednich poleceń w pliku run.mac (na polecenie prowadzącego ćwiczeń) oraz ponownego wykonaniu makra:
      /control/execute run.mac


Wskazówki:
-  Zmian dokonujemy w pliku run.mac
-  Aby móc zmienić styl wizualizacji na wireframe, należy z kodu zródłowego usunąć wymuszenie stylu setForceSolid dla obiektu beamPipeAttributes
   Aby tego dokonać należy w przedostatniej linijce pliku src/MyDetectorConstruction.cc zakomentowć linijkę:
      beamPipeAttributes->SetForceSolid(true);
-  Proszę opuścić aplikację My, skompilować ją, ponownie uruchomić i wykonć z poziomu UI
   
   /vis/open OGLIQt
      /control/execute run.mac
   -  Aby utworzyć tymaczasowe pliki HepRep i DAWN należy wykonać z poziomu UI
   
   /vis/open HepRepFile
      /control/execute run.mac
      /vis/open DAWNFILE
      /control/execute run.mac


 
Powstałe pliki tymczasowe G4Data?.heprep oraz g4_??.prim można przeglądać z zewnętrznych aplikacji.
Pliki G4Datan.heprep przeglądamy w aplikacji opartej na Java. Aplikacje można ściągnąć

wget http://www.slac.stanford.edu/~perl/HepRApp/HepRApp.jar

java -jar HepRApp.jar G4Data1.heprep

Pliki g4_??.prim przeglądamy jako

dawn g4_00.prim


Dodatkowe informacje(instalacja)  OpenGL tutorial

Dodatkowe informacje(instalacja)  HepRep tutorial
Dodatkowe informacje(instalacja)   DAWN tutorial