Ćwiczenie 0
Proszę
zaimplementować, zamiast źródła generującego
elektrony w kierunku dodatnim osi Z, izotropowe
punktowe źródło ujemnie naładowanych mionów.
Proszę deaktywować (zakomentować aktywacje) procesu scyntylacji i
zwiększyć ilość generowanych przypadków do 100.
Ćwiczenie 1
Aby zachować przejrzystość kodu implementacje licznika fotonów
umieścimy w osobnej funkcji np. MyDetectorConstruction::SetupScoring której
parametrem będzie wskaźnik do obszaru logicznego do którego
przypiszemy obiekt klasy G4MultiFunctionalDetector.
Niech
to będzie na początek pusta funkcja nie zwracająca żadnej
wartości.
Wskazówki:
W deklaracji klasy
MyDetectorConstruction
należy dodać w obszarze private: pomocniczą metodę SetupScoring(G4LogicalVolume*)
Należy zaimplementować pustą funkcje void
MyDetectorConstruction::SetupScoring(G4LogicalVolume*
scoringVolume)
Proszę skompilować program .
Ćwiczenie 2
Aby zliczać cząstki padające na wewnętrzną
powierzchnię sfery należy:
1. Utworzyć obiekt klasy G4MultiFunctionalDetector
2. Uzyskać wskaźnik do SensitiveDetectorManagera
3. Zarejestrować MultiFunctionalDetector do SensitiveDetectorManager
4. Przypisać MultiFunctionalDetector
do obszaru
logicznego powielanej sfery scoringVolume
5. Utworzyć licznik fotonów klasy G4SPSphereSurfaceCurrent
6. Zarejestrować licznik do MultiFunctionalDetector
Wszystko w funkcji MydetectorConstruction::SetupScoring()
Wskazówki:
1. Opis klasy G4MultiFunctionalDetector
; należy zachować wskaźnik do tego obiektu
2. Opis klasy G4SDManager
; należy pobrać i zachować wskażnik do tego
obiektu
3. Metoda G4SDManager::AddNewDetector()
w opisie klasy G4SDManager służy do rejestracji detektora
do menedżera
4. Metoda G4LogicalVolume::SetSensitiveDetector()
w opisie klasy G4LogicalVolume
słuzy do przypisania detektora do obszaru
logicznego
5. Plik nagłówkowy klasy G4PSSphereSurfaceCurrent.hh
( licznik zliczający cząstki)
6. Metoda G4MultiFunctionalDetector::RegisterPrimitive() służy do rejestracji
licznika do detectora
Proszę nie zapomnieć o dodatkowych plikach
nagłówkowych w pliku MyDetectorConstruction.cc
Proszę skompilować program.
Ćwiczenie 3
Aby licznik zaczął
zliczać fotony pozostaje jedynie wywołać funkcję SetupScoring, skompilować
i uruchomić program.
Wskazówki:-
Funkcję SetupScoring()
możemy wywołać tuż po utworzeniu obszaru logicznego powielanej
sfery "score"
Proszę skompilować program.
Ćwiczenie 4
Proszę
skierować
na konsole informację o rozpoczęciu procesowania ranu oraz
informację o zakończeniu procesowania ranu wraz z liczbą
przeprocesowanych przypadków.
Wskazówki:
- Odpowiednie
polecenia umieścimy w funkcjach BeginOfRunAction oraz EndOfRunAction klasy MyRunAction musimy zatem zamiast
dziedziczyć te funkcje z klasy bazowej G4UserRunAction
nadpisać
je. Typy parametrów i zwracanych wartości tych funkcji
zawarte są w opisie klasy bazowej.
- Aby skierować strumień znaków na konsolę używajmy konstrukcji
G4cout
<< "MyLog: asdfghjkl " << G4endl;
-Przedrostek np.
MyLog ułatwi wyszukiwanie informacji wśród wszystkich
pojawiających się na konsoli.
- Strumienie G4cout i G4endl zdefiniowane są w
pliku "globals.hh"
- Liczba przypadków dostępna jest za pomocą funkcji GetNumberOfEvent() klasy
G4Run
- Funkcje BeginOfRunAction
oraz EndOfRunAction wywoływane
są automatycznie przez menedżera ranu o ile obiekt
klasy MyRunAction
zostanie zarejestrowany do G4RunManager
w main za pomocą
funkcji SetUserAction.
-Proszę skompilować i uruchomić program kierując strumień
wyjściowy na wejście polecenia grep
bin/Linux-g++/My
run.mac | grep MyLog
Na konsoli pojawią się jedynie linie zawierające ciąg
znaków MyLog
Ćwiczenie 5
Proszę
nadpisać
funcję GenerateRun()
klasy bazowej G4UserRunAction
w implementacji klasy MyRunAction w celu
instancji obiektu klasy MyRun
Wskazówki:
- funkcja GenerateRun() ma
zwrócić
wskaźnik do nowoutworzonego obiektu klasy MyRun.
- Proszę sprawdzić czy program się kompiluje i poprawnie
wykonuje: