jour3c

1.0

GEOMETRIE

Une navette spatiale est modelisee par un cylindre d'Aluminium. A l'interieur de la cabine se trouve un plancher, egalement en Aluminium. La navette est placée dans l'espace ('World') : une boite aussi petite que possible.

Un (mini)astronaute est placé sur le plancher.

COMMENT DEMARRER ?

CORRIGE et COMMENTAIRES de jour3b

a remplir

EXERCICES

But

On veut calculer la 'depth dose distribution' = profile longitudinal de la dose recue par l'astronaute. Cela revient a couper l'astronaute en tranches (slices) le long de son axe des z et a sommer l'energie recue dans chaque tranche.

Pratiquement, on ne decoupe pas le volume de l'astronaute. Dans RunAction on creer un tableau m_depthDose[nbSlices]; chaque entree de ce tableau contiendra la somme de l'energie deposee dans le slice correspondant.

A la fin du run, on ecrira ce tableau dans un fichier ascii.

Question 1

Dans RunAction le tableau m_depthDose est deja defini comme donnee membre : voir RunAction.hh. On utilise std::vector parce que la dimension du tableau (le nombre de slices) peut etre defini dynamiquement.

Ce tableau est construit et initialise dans RunAction::BeginOfRunAction(). Question : pourquoi ici, et non pas dans le constructeur de RunAction ?

Question 2

Le code pour remplir le tableau m_depthDose est deja implemente dans SteppingAction, mais desactive. Commentaires sur ce code (pour plus d'informations, voir la doc Geant4) :

a) trouver le point ou l'on veut deposer l'energie. G4Kernel travaille en 'coordonnees absolues', c'est a dire dans le systeme de reference du World.

b) convertir ce point en coordonnees locales, c'est a dire dans le systeme de reference du volume 'astronaut'.

c) en extraire la coordonnee zLocal (hauteur de l'astronaute).

d) passer l'information 'energie deposee a l'altitude z' a RunAction qui calculera le numero du slice correspondant et sommera edep dans m_depthDose[n]

Question : ecrire cette fonction RunAction::SumDepthDose(zLocal,edep). Activer le code dans SteppingAction.

Question 3

Dans RunAction::EndOfRunAction(), convertir le tableau m_depthDose de 'energie' en 'dose'.

Question 4

Ecrire une fonction RunAction::WriteDepthDose(G4String fileName) pour creer un fichier tel que celui donne en exemple : depthDose.ascii

(On pourra s'inspirer de l'exemple TestEm11 : HistoManager::saveAscii() )

CORRIGE : voir jour3d


Generated on Fri Nov 21 10:20:27 2008 for jour3c by  doxygen 1.5.7.1