Formation GEANT4 - LPC
2
Formation GEANT4@LPC
• Simulations GEANT4 au LPC:– Expériences diverses disponibles / Besoins émergents
• Objectifs:– Donner les bases pour appréhender les concepts d’une simulation
GEANT4– Travailler sur des exemples (installation de machines virtuelles)
• Après cette formation:– Vous serez capables d’écrire une application GEANT4– Pour assimiler et apprendre davantage: il faut se lancer et
programmer!
3
Programme de la formation
• Jeudi 15 novembre : introduction générale à Geant4• Vendredi 23 novembre• Jeudi 29 novembre : géométrie• Jeudi 6 décembre : physique et particules• Jeudi 13 décembre : récupération des données
4
ÉLÉMENTS DE SIMULATIONS MONTE CARLO
5
Historique
• 1733 : Buffon, expérience du lancer d’aiguillessur un plancher, probabilité qu’une aiguille croiseune ligne : estimation de π
• 1886: Laplace, points aléatoires dans un rectangle pour l’estimation de π
• 1930: Fermi, méthode aléatoire pour le calcul des propriétés du neutron
• Années 40 : Ulam and Neumann, projet Manhattan
6
Définition
• Méthode stochastique pour le calcul d’intégrale– Générer dans l’espace du problème, N points aléatories– Calculer pour les N points la quantité: – Calculer:
– D’après le Théorême Central Limite, pour de grandes valeurs de N, approche la valeur vraie
x i
N
iifN
f1
1
N
iifN
f1
22 1
)(x ii ff
2
2/exp 22fffp
ff
222
1
N
ff
7
Un exemple simple de transport de particule
• Soit une particule interagissant suivant deux processus:– Absorption: section efficace totale Σa
– Diffusion élastique: section efficace totale Σe, section efficace différentielle dΣe/dΩ
• Transport d’une particule:1. Sélectionner une distance2. Transporter la particule à l’endroit de l’interaction en prenant en compte les contraintes géométriques3. Sélectionner le type d’interaction4. Simuler l’interaction sélectionnée:
- Absorption, transport fini- Diffusion élastique, sélectionner l’angke de diffusion en utilisant dΣe/dΩ comme
fonction de probabilité de densité et changer la direction de la particule
5. Recommencer les étapes 1-4
Histoire 1 Histoire 2 Histoire 3
8
Ingrédients pour la simulation du transport des particules
• Générateur de nombres pseudo-aléatoires• Méthode d’échantillonnage d’une quantité à partir de
fonction de densité de probabilité• Description de la géométrie• Données physiques: sections efficaces totales et différentielles
9
QU’EST-CE QUE GEANT4?
10
GEANT4?
• Librairies C++ pour la simulation Monte Carlo du transport des particules dans la matière
Þ Librairies : l’utilisateur doit construire sa propre application en C++Þ Simulation GEANT4:
GEometry : géométries complexes et réalistesANd Tracking : nombreuses particules, nombreux processus et
modèles d’interaction
• Tout est ouvert à l’utilisateur: code flexible et libre
• Code développé, documenté et maintenu par les membres de la collaboration GEANT4
geant4.cern.ch
11
Historique
• Successeur de GEANT3• Décembre 1994: début du projet GEANT4• Décembre 1998: première version publique GEANT4 1.0• 2003 : publication de référence, Agostinelli et al, GEANT4- a simulation
toolkit, NIM A• Mars 2012 : version courante GEANT4 9.5.p01
• Mises à jour: publique une fois par an (fin d’année, GEANT4 9.6 en décembre 2012), les versions beta sont rendues publiques (milieu d’année)
12
APPLICATIONS DE GEANT4
Geant4 au LPCPCSV
Dosimétrie
Microdosimétrie
nm
µm
mmcm
Radiothérapie externeCuriethérapi
eRadiothérap
ie Interne Vectorisée
Radiobiologie
15 keV à 20 MeV
<1 MeV
13
14
GEANT4 : LES BASES
15
…
16
CODE UTILISATEUR POUR UNE APPLICATION GEANT4
17
Que faire au début d’un
évènement?
ProgrammePrincipal
Initialisation
Géométrie
Physique
Particules
Comment le détecteur doit-il être
construit?
Quelles particules, quels processus
simuler?
Comment générer les particules
primaires?
Exécution
Fermeture
Début expérience
Début évènement
Interaction
Fin expérience
Fin évènement
Déroulement d’une simulation GEANT4
Que faire au début de l’expérience?
Que faire à la fin d’un
évènement?
Que faire à la finde l’expérience?
Code utilisateur obligatoire Code utilisateur optionnel
Que faire lors d’une interaction?
18
ProgrammePrincipal
Initialisation
Géométrie
Physique
Particules
Comment le détecteur doit-il être
construit?
Quelles particules, quels processus
simuler?
Comment générer les particules
primaires?
L’utilisateur DOIT créer une classe dérivée de:
G4VUserDetectorConstruction
donnant LA méthode:
Construct()
construisant la géométrie: formes géométriques, localisations, matériaux, propriétés physiques,champs électromagnétiques
Les classes obligatoires : la géométrie
19
ProgrammePrincipal
Initialisation
Géométrie
Physique
Particules
Comment le détecteur doit-il être
construit?
Quelles particules, quels processus
simuler?
Comment générer les particules
primaires?
L’utilisateur DOIT créer une classe dérivée de:
G4VUserPhysicsList
donnant LES méthodes permettant de :
- Construire les particules à simuler:ConstructParticle()
- Construire les processus physiques à prendre en compte:ConstructProcess()
- Définir Les seuils de productions des particules secondaires:SetCuts()
Les classes obligatoires : la physique
20
ProgrammePrincipal
Initialisation
Géométrie
Physique
Particules
Comment le détecteur doit-il être
construit?
Quelles particules, quels processus
simuler?
Comment générer les particules
primaires?
L’utilisateur DOIT créer une classe dérivée de:
G4VUserPrimaryGeneratorAction
donnant LA méthode:
GeneratePrimaries(G4Event*)
Décrivant comment une particule primaire doit être générée
Les classes obligatoires : les particules primaires
21
ProgrammePrincipal
Initialisation
Géométrie
Physique
Particules
Comment le détecteur doit-il être
construit?
Quelles particules, quels processus
simuler?
Comment générer les particules
primaires?
DetectorConstruction::G4VUserDetectorConstruction
PhysicsList::G4VUserPhysicsList
PrimaryGeneratorAction::G4VUserPrimaryGeneratorAction
Construct()
ConstructParticle()ConstructProcess()SetCuts()
GeneratePrimaries(G4Event*)
Résumé des classes obligatoires
22
Que faire au début d’un
évènement?
Exécution
Fermeture
Début expérience
Début évènement
Interaction
Fin expérience
Fin évènement
Que faire au début de l’expérience?
Que faire à la fin d’un
évènement?
Que faire à la finde l’expérience?
Que faire lors d’une interaction?
L’utilisateur peut créer une classe dérivée de:
G4UserRunAction
donnant les méthodes:
BeginOfRunAction(const G4Run*)EndOfRunAction(const G4Run*)
Les classes optionnelles : au niveau de l’expérience
23
Que faire au début d’un
évènement?
Exécution
Fermeture
Début expérience
Début évènement
Interaction
Fin expérience
Fin évènement
Que faire au début de l’expérience?
Que faire à la fin d’un
évènement?
Que faire à la finde l’expérience?
Que faire lors d’une interaction?
Les classes optionnelles : au niveau de l’évènement
L’utilisateur peut créer une classe dérivée de:
G4UserEventAction
donnant les méthodes:
BeginOfEventAction(const G4Event*)EndOfEventAction(const G4Event*)
24
Que faire au début d’un
évènement?
Exécution
Fermeture
Début expérience
Début évènement
Interaction
Fin expérience
Fin évènement
Que faire au début de l’expérience?
Que faire à la fin d’un
évènement?
Que faire à la finde l’expérience?
Que faire lors d’une interaction?
Les classes optionnelles : au niveau de l’interaction
L’utilisateur peut créer une classe dérivée de:
G4UserSteppingAction
donnant la méthode:
UserSteppingAction(const G4Step*)
25
Que faire au début d’un
évènement?
Exécution
Fermeture
Début expérience
Début évènement
Interaction
Fin expérience
Fin évènement
Que faire au début de l’expérience?
Que faire à la fin d’un
évènement?
Que faire à la finde l’expérience?
Que faire lors d’une interaction?
Résumé des classes optionnelles
RunAction::G4UserRunAction
EventAction::G4UserEventAction
SteppingAction::G4UserSteppingAction
BeginOfRunActionEndOfRunAction
BeginOfEventActionEndOfEventAction
UserSteppingAction