Un (mini)astronaute est placé sur le plancher.
% gmake
Dans le cas present de notre exercice, soyons clairs : c'est un peu prendre un marteau-pilon pour ecraser une mouche. La mise en place de cette infrastructure pour gerer les hits et les collections de hits demande en effet un certain investissement, qui ne se justifie pas dans le cas de notre exemple simple. Cette infrastructure est en revanche bien utile dans le cas de grosses applications, avec beaucoup d'informations a collecter, de differents endroits.
Mais revenons a notre exemple... ;-)
o AstroHit:
Nous commencons par definir notre format de hit : AstroHit. Ici nous gardons comme information:
o AstroHitCollection:
Les hits que nous allons crees seront places dans une collection de ce type. Cette collection est creee en debut d'evenement par le SensitiveDetector, qui "l'accroche" au G4Event. Cette collection est accessible dans l'EventAction, au travers du pointeur sur le G4Event, passe en argument.
La methode ProcessHits(...) est modifiee pour creer les hits et les inserer dans la collection. La methode Initialize(...) a ete modifiee aussi pour creer la collection en debut d'evenement et "l'accrocher" au G4Event. Des lors, c'est le kernel qui se charge de gerer la collection, et, en particulier, c'est le kernel qui fait le delete de cette collection avant de passer a l'evenement suivant.
o EventAction:
Dans EventAction::EndOfEventAction(const G4Event* event), on montre comment acceder a la collection creee, et les hits pour les 5 premiers evenements sont imprimes.
o RunAction:
Une methode nouvelle methode SumDepthDose(G4int, G4double) qui permet d'ecrire dans le tableau m_depthDoseSD en passant le numero de tranche (et pas le z) est definie.
Que faut-il modifier pour avoir ces informations ?