jour3b

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 astronaute est placé sur le plancher.

COMMENT DEMARRER ?

CORRIGE et COMMENTAIRES de jour3a

EXERCICES

On veut calculer la precision sur la dose cumulée par l'astronaute. Pour cela, on a besoin de la variable aleatoire "energie recue par evenement", pour calculer sa valeur moyenne et son ecart-type.

(1 evenement = 1 proton initial qui 'touche' l'astronaute.)

Il faut donc sommer l'energie recue evenement par evenement avant de la sommer sur tout le run.

On prendra modele sur examples/extended/electromagnetic/TestEm11

PARTIE 1 : sommer edep dans EventAction

a) Ajouter une classe EventAction (vide pour l'instant). Dans les data membres privées, prevoir un pointeur sur RunAction

b) Prevoir la variable EdepPerEvent et la fonction inline AddEdep()

c) Instancier la classe EventAction dans le main programme: jour3b.cc

d) Modifier le constructeur de SteppingAction pour passer un pointeur sur EventAction, en plus de celui sur RunAction

e) Modifier la fonction SteppingAction::UserSteppingAction() pour effectuer la somme sur edep dans EventAction

f) Imprimer EdepPerEvent depuis EventAction::EndOfEventAction()

PARTIE 2 : sommer EdepPerEvent dans RunAction

Pour calculer la valeur moyenne et la variance de EdepPerEvent, on a besoin de la somme sur EdepPerEvent et de la somme des carrés.

a) dans RunAction.hh, prevoir 3 données membres privées : sumEdep, sumEdep2 (pour les carrés), nbEntry (pour le nombre d'evenements avec EdepPerEvent non nul)

b) prevoir aussi une fonction inline SumEvents() (voir dans TestEm11 la fonction inline RunAction::AddEdep(e)). Y ajouter l'incrementation du compteur nbEntry.

c) Dans EventAction::EndOfEventAction(), si EdepPerEvent est non nul, la passer a RunAction::SumEvents()

d) Dans RunAction::EndOfRunAction(), calculer la moyenne et l'ecart type de EdepPerEvent (voir TestEm11).

L'erreur relative sur la dose cumulée est (1/sqrt(nbEntry))*(rms/mean) Imprimer la dose cumulée et son erreur.

e) supprimer l'impression dans EventAction et faire une macro pour executer un job en mode 'batch' avec 50000 evenements.

SOLUTIONS : voir le code jour3c


Generated on Fri Nov 21 10:20:23 2008 for jour3b by  doxygen 1.5.7.1