Warsztaty GEANT4 oparte na materiałach treningowych (SLAC)

Warsztaty 2:   materiały, goemetria


    Proszę:
 
Na warsztatach będziemy symulować eksperyment przedstawiony na poniższym rysunku:


<szkic
              eksperymentu>

15 MeV wiązka elektronów  generowana jest  w rurze próżniowej,  którą opuszcza
poprzez tytanowe okienko.   Elektrony oddziałując z tarczą berylową
produkują fotony promieniowania hamowania.

Układ pomiarowy jest częściowo zaimplementowany w plikach:

    My.cc                                                               // program główny                         
    MyDetectorConstruction.cc  (hh)                     // materiały, geometria, wizualizacja
    MyPrimaryGeneratorAction.cc (hh)                 // generator cząstek pierwotnych
    MyPhysicsList.cc (hh)                                      // lista symulowanych cząstek/procesów fizycznych

Tylko rura próżniowa i tytanowe okienko  są zaiplementowane w MyDetectorConstruction.cc


Ćwiczenie 1


    Proszę zdefiniować pozostałe materiały:
- Beryllium:
  
  Z = 4
    A = 9.012182  g/mol

   
Density = 1.8480  g/cm3
 
- Iron:
   Z = 26
   A = 55.845  g/mol
   Density = 7.87 g/cm3
 
- Silicon: 

   Z = 14
   A = 28.0855  g/mol

  
Density = 2.33  g/cm3


Wskazówki:
- Materiały definiowane są w funkcji     MyDetectorConstruction::DefineMaterials
- Materiały te są jednoskładnikowe, możemy je zatem zdefiniować bezpośrednio jako obiekty klasy G4Material
- Ostatnia linijka funkcji DefineMaterials:
          G4cout <<   *(G4Material :: GetMaterialTable()) << G4endl;
    wyświetla na konsoli informacje o wszystkich zdefiniowanych przez użytkownika materiałach. Proszę skompilować, uruchomić program i sprawdzić czy pojawiły się na konsoli poprawne informacje o trzech nowych materiałach.


 Rozwiązanie

Ćwiczenie 2


 Materiały zdefiniowane przez użytkownika w MyDetectorConstruction::DefineMaterials()  umieszczane sa w tablicy.
Gdy tworzymy obszary logiczne w funkcji  MyDetectorConstruction::SetupGeometry() potrzebne są nam wskaźniki do tych materiałów.
Wykorzystujemy do tego celu funkcje G4Material::GetMaterial("nazwa_materiału")  np.  powietrze   
           G4Material* air = G4Material::GetMaterial("Air");
Proszę użyć w funkcji MyDetectorConstruction::SetupGeometry() definicji powietrza z wewnętrznej bazy GEANT4 NIST  zamiast  definicji własnej.
Proszę skierować na terminal informacje o powietrzu zdefiniowanym w bazie danych NIST

Wskazówki:
-Wskaźnik do materiału powietrze  potrzebny jest w funkcji   MyDetectorConstruction::SetupGeometry
-Przykład uzyskania wskaźnika do materiału z bazy GEANT4(NIST) znajduje się  w przewodniku dla twórców aplikacjil
-Prosze nie zapomnieć o pliku nagłówkowym G4NistManager.hh


 Rozwiązanie

Ćwiczenie 3


Proszę zaimplementować geometrię tarczy berylowej. Tarcza ma kształt walca o promieniu 3,63 cm i długości 6,31 cm  należy ją umieścić na osi wiązki (oś Z) tak aby jej  podstawa  zawierała  środek  układu "world"  a tarcza w całości  znajdowała się  po dodatniej stronie osi Z

Wskazówki:
-Zmian dokonujemy w funkcji   MyDetectorConstruction::SetupGeometry
-Tarcza ma być bryłą  G4Tubs która tworzy obszar logiczny G4LogicalVolume,  obszar fizyczny będzie obszarem klasy G4PVPlacement
-Tarcza umieszczona jest wewnątrz obszaru logicznego "world", wskaźnik do tego obszaru jest zmienną składową klasy pochodnej MyDetectorConstruction o nazwie   fpWorldLogical.
 
Proszę sprawdzić czy program się kompiluje i czy podczas wizualizacji widać tarczę w spodziewanym miejscu.


 Rozwiązanie

Ćwiczenie 4


Proszę zaimplementować geometrię detektora krzemowego i okienka stalowego komory w której znajduje się tarcza. Detektor krzemowy oraz stalowe okienko  są walcami o promieniu 2 cm i długości odpowiednio 0.01 cm i 0.0051 cm.  Ich środki leżą na osi wiązki i są umiejscowione w odległości odpowiednio 2 cm i 1 cm przed tarczą.

Wskazówki:
-Oba obiekty mają być bryłami  G4Tubs które tworzą obszary logiczne G4LogicalVolume, obszary fizyczne będą obszarami klasy G4PVPlacement
- Proszę sprawdzić czy program się kompiluje i  czy podczas wizualizacji  widać wszystkie obiekty jak na rysunku poniżej:


 Rozwiązanie

<rysunek>ff

Ćwiczenie 5


Trzy nowe elementy geometrii domyślnie są wizualizowane jako białe.  Proszę zmienić ten schemat.  Niech tarcza będzie jasno niebieska,  okienko komory karmazynowe(magenta) a detektor krzemowy szary.

Wskazówki:
- Atrybuty wizualizacji przypisujemy obszarom logicznym G4LogicalVolume za pomocą funkcji składowej  SetVisAttributes(G4VisAttributes*)
- Najpierw należy  utworzyć obiekt  klasy  G4VisAttributes
- Nadać mu odpowiednie atrybuty np.  kolor za pomocą funkcji SetColour(const G4Colour  &).   Opis klasy tutaj  G4Colour
- Przykład znajdziecie Państwo na końcu pliku MyDetectorConstruction.cc . Tam też należy wprowadzić zmiany atrybutów wizualizacji tarczy, okienka komory oraz detektora krzemowego.
- Proszę sprawdzić czy program się kompiluje i czy podczas wizualizacji widać wszystkie obiekty jak na rysunku poniżej:


 Rozwiązanie


<rysunek>ff


Ćwiczenie 6


Proszę zrobić wizualizację 10 przypadków oddziaływania elektronów z tarczą berylową.
Wizualizacją śladów sterujemy z poziomu interfejsu użytkownika.

Proszę sprawdzić czy program się kompiluje i czy podczas wizualizacji widać wszystkie obiekty jak na rysunku poniżej:


  <rysunek>ff