Les_bases_GEANT4 - Forge Clermont Université

Download Report

Transcript Les_bases_GEANT4 - Forge Clermont Université

Formation GEANT4 - LPC

Emmanuel Delage, Loïc Lestand, Yann Perrot, Bogdan Vulpescu

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!

2

Programme de la formation

• • • • •

Jeudi 15 novembre : introduction générale à Geant4

Vendredi 23 novembre : exploitation + visualisation Jeudi 29 novembre : matériaux + géométrie Jeudi 6 décembre : physique et particules Jeudi 13 décembre : récupération des données

3

ÉLÉMENTS DE SIMULATIONS MONTE CARLO

4

Historique

1733 :

Buffon, expérience du lancer d’aiguilles sur un plancher, probabilité qu’une aiguille croise une 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 5

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é:

f i

f

(

x i

) Calculer:

f

 1

N i N

  1

f i f

2  1

N i N

  1

f i

2 

x i

– D’après le Théorème Central Limite, pour de grandes valeurs de N, approche la valeur vraie

f f p

 exp   

f

 2  

f

2  / 2  2   2 

f

2 

N

 1

f

2 6

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Ω

Histoire 1 Histoire 2

Transport d’une particule: 1.

2.

Sélectionner une distance Transporter la particule à l’endroit de l’interaction 3.

4.

5.

en prenant en compte les contraintes géométriques Sélectionner le type d’interaction 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 Recommencer les étapes 1-4

Histoire 3

7

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 • Modélisation: décrire un modèle s’approchant de la réalité avec un degré de précisions fonction des besoins (compromis rapidité des calculs/précision du résultat) 8

GEANT4 : LES BASES

9

GEANT4?

Librairies

C++ pour la dans la matière

simulation

Monte Carlo du transport des particules  

Librairies

: l’utilisateur doit construire sa propre application en C++

Simulation

GEANT4: GEometry : géométries complexes et réalistes ANd Tracking : nombreuses particules, nombreux processus et modèles d’interaction • Code développé, documenté et maintenu par les membres de la collaboration GEANT4 • Code flexible et libre : tout est ouvert à l’utilisateur

geant4.cern.ch

10

GEANT4 libre et flexible

• Couvrir les besoins d’une large communauté scientifique (HEP, astrophysique, spatial, médical…) => GEANT4 fournit un

ensemble de classes C++

pour décrire: – Géométrie : formes simples/complexes, réplication, divisions, XML – Physique: EM, hadronique, optique, photon/lepton-hadron, désintégration, personnalisée – – L’émission des particules: types de particules, distributions spatiales/angulaires, … La visualisation: OpenGL, QT, … – Le recueil des données: interface avec ROOT, sorties personnalisées, … – Et tant d’autres fonctionnalités à découvrir • Flexibilité et liberté =>

responsabilité de l’utilisateur

technique de choisir la meilleure • La description d’une simulation se fait par le biais d’un

programme utilisateur

C++ (User Application) appelant les classes de GEANT4 11

Application GEANT4

• • • GEANT4 fournit des classes C++ : l’utilisateur écrit son application Une application GEANT4 a pour rôle de définir une expérience pour la simulation du suivi des particules, interaction par interaction La simulation se déroule sur quatre niveaux – Expérience: Run – Évènement: Event – Trace: Track – Étape: Step Expérience Évènement Trace Étape 12

Expérience

• • • • Expérience : unité de plus haut niveau de la simulation – Ensemble d’évènements partageant les même conditions de géométrie et de physique – Conséquence: lors d’une expérience, l’utilisateur ne peut pas modifier la géométrie ou la physique – Une expérience  une boucle d’évènements Une expérience démarrera avec la commande BeamOn Au début de l’expérience , la géométrie est optimisée et les tables de sections efficaces construites En jargon GEANT4: – Expérience =

Run

, représenté par un objet de la classe – –

G4Run

La gestion d’un expérience est réalisée par la classe

G4RunManager

Si l’utilisateur souhaite intervenir durant une expérience:

G4UserRunAction

13

Évènement

• Évènement = unité de base d’une simulation GEANT4 • Un évènement débute lors de la génération d’une particule primaire • Un évènement est terminé lorsque la particule primaire et les particules secondaires produites ont une énergie cinétique nulle • Terminologie GEANT4: – Évènement =

Event

, représenté par un objet de la class

G4Event

– Gestion d’un évènement:

G4EventManager

– Si l’utilisateur souhaite intervenir durant un évènement:

G4UserEventAction

14

Trace

• Une trace est un instantané de l’état d’une particule • La trace contient les informations physiques de la particule • La trace est supprimée quand la particule: – Sort des limites géométriques de l’expérience (World); – Disparaît (désintégration, collision inélastique); – – Atteint une énergie cinétique nulle; Est supprimée par l’utilisateur.

– Conséquence: plus d’objet G4Track ne persiste à la fin d’un évènement • Terminologie GEANT4: – Trace =

Track

, représenté par un objet de la class

G4Track

– Gestion d’une trace via la classe

G4TrackingManager

– Si l’utilisateur souhaite interagir avec un objet G4Track:

G4UserTrackingAction

15

Étape

• • • • Une étape est définie par deux points Ces points sont limités par la physique, la géométrie. Step Pre-step point Post-step point NB: Si l’étape est limitée par une frontière entre deux volumes, le PostStep point est placé à la frontière mais appartien au deuxième volume.

Une étape contient les informations de la particule au cours de l’étape – Énergie perdue au cours de l’étape – Temps de vol – … Terminologie GEANT4 – Étape =

Step

, représenté par un objet de la classe G4Step – – Gestion d’une étape se fait via la classe

G4SteppingManager

Si l’utilisateur souhaite intervenir durant une étape:

G4UserSteppingAction

16

Niveaux de simulation GEANT4

Nombre total particules primaires Expérience Évènement Émission 1 particule primaire Étape

Interactions physiques Transport des particules

Énergie cinétique nulle primaire + secondaires Fin expérience

17

Particules

• Dans GEANT4 – Des propriétés statiques: nom, masse, charge, durée de vie,… – Une définition dynamique: moment, énergie, spin,… – Une trace : information géométrique • Terminologie GEANT4: – Une particule est définie par trois classes :

G4ParticleDefinition

: classe définissant les propriétés d’une particule

G4DynamicParticle

: classe représentant une particule individuelle

G4Track

: classe représentant une particule à suivre G4ParticleDefinition Nom Masse Charge… G4DynamicParticle Énergie Moment… G4Track Volume Position… 18

Processus

• Chaque particule dispose d’un ensemble de processus (physiques) applicables que l’utilisateur décide d’utiliser ou pas • A chaque étape, tous les processus à utiliser sont interrogés. Chaque processus propose une distance à la prochaine interaction.

Le processus qui propose la distance la plus courte aura lieu et limitera l’étape.

• L’interaction d’une particule avec une frontière géométrique ou un champs se fait par un processus à part entière, le processus

Transportation

19

Suivi des particules

• La gestion du suivi des particules,

Tracking

, est indépendant – Du type de particule; – De la physique.

• Le tracking a pour rôle de donner la chance à tous les processus: – De limiter la taille de l’étape; – De modifier les quantités physiques de la trace; – De créer les particules secondaires; – De suspendre, de reporter ou tuer une trace.

20

Seuils de production

• Dans GEANT4 toutes les particules sont suivies jusqu’à ce que leur énergie cinétique soit nulle.

• Par défaut, GEANT4 ne propose pas un seuil de coupure.

Si l’utilisateur désire un seuil de coupure, il faut le coder (par exemple, tuer une trace en dessous d’une certaine énergie) • GEANT4 propose par défaut un seuil de production : le

cut Seuil de production élevé Seuil de production bas

21

Extraire des données

• • • • Une expérience GEANT4 incluant la géométrie, la physique, la génération des particules primaires ne produit AUCUNE sortie L’utilisateur DOIT donner du code pour enregistrer les données qu’il désire!

La récupération de données est le

scoring

2 méthodes s’offrent à l’utilisateur: – Utilisation des classes de base fournies pour intervenir aux différents niveaux de simulation :

G4UserRunAction

, –

G4UserEventAction

,… Utilisation de classes dédiées à la récupération des données 22

Les unités

• GEANT4 dispose de son système d’unité, utilisation transparente pour l’utilisateur: – Code plus clair – – Conversions simples Moins de sources d’erreurs • La plupart des unités sont accessibles mais l’utilisateur peut définir ses propres unités.

• Pour coder une grandeur, multiplier sa valeur par son unité: diameter = 50.0

*cm

; kineticE = 1.0

*GeV

; • Pour récupérer une valeur, diviser la valeur par l’unité appropriée.

Dans le cas précédent: diameter

/m

kineticE

/MeV

retourne retourne 0.5

1000

23

CODE UTILISATEUR POUR UNE APPLICATION GEANT4

24

Les états d’une simulation GEANT4

• • • • • • • 6 états possibles

PreInit

La géométrie, la physique ont besoin d’être initialisés

Idle

Prêt pour l’expérience

GeomClosed

Géométrie optimisée, prêt à lancer la boucle d’évènements

EventProc

Un évènement est en cours

Quit

Fin normale de la simulation

Abort

Erreur: fin anormale

Run (ev

PreInit initialize Idle beamOn exit GeomClosed Quit EventProc Abort 25

Du côté de l’utilisateur

• GEANT4 est un ensemble de classe C++, l’utilisateur

DOIT

écrire sa propre application ou partir d’un des nombreux exemple fourni • Écrire une application GEANT4 consiste à décrire: – La géométrie – La physique, les seuils de production – – La génération des particules primaires La façon de recueillir les données 26

Déroulement d’une simulation GEANT4 Programme Principal Initialisation Exécution Géométrie Comment le détecteur doit-il être construit?

Physique Particules Quelles particules, quels processus simuler?

Comment générer les particules primaires?

Que faire au début de l’expérience?

Début expérience Que faire au début d’un évènement?

Début évènement Que faire à la fin d’un évènement?

Que faire à la fin de l’expérience?

Fin expérience Fin évènement Étape Que faire lors d’une interaction?

Code utilisateur obligatoire Fermeture Code utilisateur optionnel

27

Les classes obligatoires : la géométrie Programme Principal Initialisation Géométrie Comment le détecteur doit-il être construit?

Physique Quelles particules, quels processus simuler?

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

Particules Comment générer les particules primaires?

28

Les classes obligatoires : la physique Programme Principal Initialisation Géométrie Comment le détecteur doit-il être construit?

Physique Particules 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()

29

Programme Principal Initialisation Les classes obligatoires : les particules primaires Géométrie Comment le détecteur doit-il être construit?

Physique Quelles particules, quels processus simuler?

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

Particules Comment générer les particules primaires?

30

Résumé des classes obligatoires Programme Principal Initialisation Géométrie Comment le détecteur doit-il être construit?

DetectorConstruction:: G4VUserDetectorConstruction Construct() Physique Quelles particules, quels processus simuler?

PhysicsList:: G4VUserPhysicsList ConstructParticle() ConstructProcess() SetCuts() Particules Comment générer les particules primaires?

PrimaryGeneratorAction:: G4VUserPrimaryGeneratorAction GeneratePrimaries(G4Event*)

31

Les classes optionnelles : au niveau de l’expérience Exécution Que faire au début de l’expérience?

Début expérience Que faire au début d’un évènement?

Début évènement Que faire à la fin d’un évènement?

Fin évènement Que faire à la fin de l’expérience?

Fin expérience

L’utilisateur peut créer une classe dérivée de:

G4UserRunAction

d onnant les méthodes:

Étape BeginOfRunAction(const G4Run*) Que faire lors d’une interaction?

EndOfRunAction(const G4Run*) Fermeture

32

Les classes optionnelles : au niveau de l’évènement Exécution Que faire au début de l’expérience?

Début expérience Que faire au début d’un évènement?

Début évènement Que faire à la fin d’un évènement?

Fin évènement Que faire à la fin de l’expérience?

Fin expérience

L’utilisateur peut créer une classe dérivée de:

G4UserEventAction

d onnant les méthodes:

Étape BeginOfEventAction(const G4Event*) Que faire lors d’une interaction?

EndOfEventAction(const G4Event*) Fermeture

33

Les classes optionnelles : au niveau de l’étape Exécution Que faire au début de l’expérience?

Début expérience Que faire au début d’un évènement?

Début évènement Que faire à la fin d’un évènement?

Fin évènement Que faire à la fin de l’expérience?

Fin expérience

L’utilisateur peut créer une classe dérivée de:

G4UserSteppingAction

d onnant la méthode:

Étape Que faire lors d’une interaction?

UserSteppingAction(const G4Step*) Fermeture

34

Résumé des classes optionnelles Exécution Que faire au début de l’expérience?

Début expérience Que faire au début d’un évènement?

Début évènement Que faire à la fin d’un évènement?

Fin évènement Que faire à la fin de l’expérience?

Fin expérience Étape Que faire lors d’une interaction?

RunAction:: G4UserRunAction EventAction:: G4UserEventAction BeginOfRunAction EndOfRunAction BeginOfEventAction EndOfEventAction SteppingAction:: G4UserSteppingAction UserSteppingAction Fermeture

35