primary particle - universidad de...

23
J. M. Quesada, University of Seville Based on notes prepared by M. Asai (SLAC) GEANT4 Introductory Course Instituto de Estudos Avançados – Instituto Tecnológico de Aeronáutica, São José Dos Campos, Brazil July 28 th – August 1 st , 2014 Primary particle

Upload: truongnhi

Post on 30-Jan-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

J. M. Quesada, University of Seville Based on notes prepared by M. Asai (SLAC)

GEANT4 Introductory Course Instituto de Estudos Avançados – Instituto Tecnológico de Aeronáutica,

São José Dos Campos, Brazil July 28th – August 1st, 2014

Primary particle

Page 2: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

2

Outline  

•  Primary Particle Generation •  Primary vertex and primary particle •  Built-in primary particle generators

•  particle gun •  general particle source

•  Using particle gun and general particle source •  Interface to HEPEVT/HepMC

•  IAEAphsp primary particle generator

Page 3: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

3 User initializations and actions

§  Initialization classes §  Defined with G4RunManager::SetUserInitialization() §  Invoked at the initialization

§  G4VUserDetectorConstruction §  G4VUserPhysicsList

§  Action classes §  Defined with G4RunManager::SetUserAction() §  Invoked during an event loop

§  G4VUserPrimaryGeneratorAction §  + G4UserRunAction / G4UserEventAction / G4UserStackingAction /

G4UserTrackingAction/ G4UserSteppingAction / …

Optional //  mandatory  user  ac/on  classes          G4VUserPrimaryGeneratorAction* gen_action = new PrimaryGeneratorAction; runManager->SetUserAction(gen_action);

ð    In  your  main  program    (.cc  file  in  your  development  tree)  :  

mandatory  

mandatory  

Page 4: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

4 Primary  Par.cle  Genera.on  

•  This class must be derived from G4VUserPrimaryGeneratorAction •  one of three mandatory user classes

•  concrete classes of this should not generate primaries directly

•  instead invoke GeneratePrimaryVertex() of primary generator class

•  In main() register derived user action class to run manager •  Implementation:

•  instantiate generator(s) in constructor and set default values to it (them)

•  implement GeneratePrimaries(G4Event* evt) method which is invoked during the event loop and in it

•  invoke GeneratePrimaryVertex() method of primary generator(s)

Page 5: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

5 Primary  Par.cle  Genera.on  

•  Things to do in G4VUserPrimaryGeneratorAction::GeneratePrimaries()

•  set generator defaults

•  initialize particle positions, energies, types

•  randomize the above

•  invoke GeneratePrimaryVertex() of generator class

•  never use hard-coded UI commands

Page 6: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

6 Generators  

§  Provide initial vertex of particle

§  position, energy, momentum, particle type, multiplicity

§  Write this information into the event, which generator action passes to run manager

§  Must derive from G4VPrimaryGenerator and implement GeneratePrimaryVertex()

Page 7: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

7 Primary vertices and particles

§  Primary vertices and primary particles are stored in G4Event in advance to processing an event. §  By G4PrimaryVertex and G4PrimaryParticle classes §  They will become “primary tracks” only at Begin-of-Event phase

and put into a “stack”

•  G4PrimaryParticle class §  contains particle definition, initial energy, momentum, etc.

•  G4PrimaryVertex class §  contains primary particle, initial position, time, etc.

MyPrimaryGenerator  (G4VUserPrimaryGeneratorAc/on)

Computes  desired    primary  proper/es  

MyPar/cleGun  (G4VPrimaryGenerator))

Ver/ces  and    Primary  par/cles    

are  created  

G4Event  

Primaries  are  stored    for  later  tracking  

Page 8: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

8 Generators  

§  All derived from G4VPrimaryGenerator

§  Geant4 provides some ready-built generators : §  G4ParticleGun

§  position, energy, momentum, particle type §  G4GeneralParticleSource

§  many, many options for initial particles, spectra §  useful for space physics, radioactive decay §  warning: documentation temporarily off line

§  G4SingleParticleSource §  extended version of G4ParticleGun §  used by General Particle Source

§  G4HEPEvtInterface •  conforms to /HEPEVT/ common block (standard for many Fortran event generators) •  requires ASCII file input (4-vectors from HEP generator code)

§  Externally available: •  G4IAEAphspReader interface

•  for reading phsp files written in IAEA format •  available at IAEA site: http://www-nds.iaea.org/phsp •  M. A. Cortes-Giraldo, J. M. Quesada, et. al, Journal: International Journal of Radiation Biology.

Jan 2012, Vol. 88, No. 1-2:200-208 •  See presentation on advanced features

Page 9: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

9 1) G4ParticleGun

§  Concrete implementation of G4VPrimaryGenerator

§  It shoots one primary particle of a certain energy from a certain point at a certain time to a certain direction §  a complete set of functions is available

§  UI commands are also available for setting initial values

§  /gun/list List available particles §  /gun/particle Set particle type to be generated §  /gun/direction Set momentum direction §  /gun/energy Set kinetic energy §  /gun/momentum Set momentum §  /gun/momentumAmp Set absolute value of momentum §  /gun/position Set starting position of the particle §  /gun/time Set initial time of the particle §  /gun/polarization Set polarization §  /gun/number Set number of particles to be generated (per event) §  /gun/ion Set properties of ion to be generated [usage] /gun/ion Z A Q

Page 10: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

10 G4ParticleGun : complex sources

§  G4ParticleGun is basic, but it can be used from inside your UserPrimaryGeneratorAction to model complex source types or distributions §  Generate the desired distributions

§  by shooting random numbers

§  Use (C++) set methods of G4ParticleGun

§  Use G4ParticleGun as many times as you want

Page 11: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

11

Example of user PrimaryGeneratorAction using G4ParticleGun

void T01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { G4ParticleDefinition* particle;

G4int i = (int)(5.*G4UniformRand()); switch(i)

{

case 0: particle = positron; break; case 1: ...

} particleGun->SetParticleDefinition(particle); G4double pp = momentum+(G4UniformRand()-0.5)*sigmaMomentum;

G4double mass = particle->GetPDGMass(); G4double Ekin = sqrt(pp*pp+mass*mass)-mass; particleGun->SetParticleEnergy(Ekin);

G4double angle = (G4UniformRand()-0.5)*sigmaAngle; particleGun->SetParticleMomentumDirection(G4ThreeVector(sin(angle),

0.,cos(angle)));

particleGun->GeneratePrimaryVertex(anEvent); }

choose  par/cle  

set  par/cle  

set  kine/c  energy  and  momentum  

generate  event  

Page 12: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

12 2) G4GeneralParticleSource (GPS)

§  An advanced concrete implementation of G4VPrimaryGenerator §  First development (2000) University of Southampton (ESA contract), maintained

and upgraded now mainly by QinetiQ and ESA §  Extensive up-to-date documentation at

§  http://reat.space.qinetiq.com/gps

§  Offers as pre-defined many common (and not so common) options §  Position, angular and energy distributions §  Multiple sources, with user defined relative intensity

§  Capability of event biasing

§  All features can be used via C++ or command line (or macro) UI

Page 13: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

13 Features available in GPS

§  Primary vertex can be randomly positioned with several options §  Emission from point, plane,…

§  Angular emission of the primary particle can be randomized. §  Several distributions; isotropic, cosine-law, focused, … §  With some additional parameters (min/max-theta, min/max-phi,…)

§  Kinetic energy of the primary particle can also be randomized. §  Common options (e.g. mono-energetic, power-law), some extra shapes

(e.g. black-body) or user defined §  Distribu/ons  can  be  set  by  UI  commands §  Multiple sources

§  With user defined relative intensity §  Capability of event biasing (variance reduction).

§  By enhancing particle type, distribution of vertex point, energy and/or direction

Page 14: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

14

Example of user PrimaryGeneratorAction using GPS

MyPrimaryGeneratorAction::MyPrimaryGeneratorAction() {

m_particleGun = new G4GeneralParticleSource(); }

MyPrimaryGeneratorAction::~MyPrimaryGeneratorAction() {

delete m_particleGun; }

void MyPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {

m_particleGun->GeneratePrimaryVertex(anEvent); }

§  +  all  user  instruc/ons  given  via  macro  UI  commands  

Page 15: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

15 UI commands for GPS

§  Many examples are available here §  http://reat.space.qinetiq.com/gps/examples/examples.htm

/gps/particle proton

/gps/ene/type Mono /gps/ene/mono 500 MeV

/gps/pos/type Plane /gps/pos/shape Rectangle /gps/pos/rot1 0 0 1

/gps/pos/rot2 1 0 0 /gps/pos/halfx 46.2 cm /gps/pos/halfy 57.2 cm /gps/pos/centre 0. 57.2 0. cm

/gps/direction 0 –1 0

/run/beamOn ...

•   protons  •   mono  energe/c  beam  of  500  

MeV    

•   planar  emission  from  a  z×x  plane  along  -­‐y  axis  

Page 16: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

16

Square plane source, linearly increasing energy distribution, cosine law direction

Page 17: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

17

Spherical surface source, black body energy spectrum, isotropic direction

Page 18: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

18

Spherical volume source, flat energy spectrum, z-, phi- and theta-biasing of isotropic direction

Page 19: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

19 Par.cle  Gun  vs.  General  Par.cle  Source  

§  Par/cle  Gun  §  simple  and  naïve  §  shoot  one  track  at  a  /me  §  easy  to  handle.  

§  use set methods to alternate track-by-track or event-by-event values

§  General  Par/cle  Source  §  powerful  §  controlled  by  UI  commands  

§  almost  impossible  to  control  through  set  methods  

§  capable  of  shoo/ng  par/cles  from  a  surface  or  a  volume  

§  can  randomize  kine/c  energy,  posi/on  and/or  direc/on  following  a  user-­‐specified  distribu/on  (histogram)  

•     Use  GPS  if  you  need  •  primary  par/cles  from  a  surface  or  a  volume,  outward  or  inward  •  a  complicated  distribu/on,  not  flat  or  simple  Gaussian  

•     Otherwise,  use  Par/cle  Gun  

Page 20: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

20 3) Interfaces to external event generators

§  Concrete implementations of G4VPrimaryGenerator

§  Good examples for experiment-specific primary generator implementation §  Interface to external physics generators

§  G4HEPEvtInterface §  Event record structure based on HEPEVT common block §  Used by (FORTRAN) HEP physics generators §  Developed and agreed on within the framework of the 1989 LEP physics study §  ASCII file input

§  G4HepMCInterface §  HepMC Event record for MC generators. Object Oriented, C++ §  Used by new (C++) HEP physics generators §  ASCII file input or direct linking to a generator through HepMC

§  G4IAEAInterface

Page 21: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

21

User actions for external event generators

Adapted from §  examples/extended/eventgenerator/HepMC/HepMCEx01 §  examples/extended/runAndEvent/RE01

21  

PrimaryGeneratorAction::PrimaryGeneratorAction() { // HepMC m_currentGenerator = new HepMCG4AsciiReader(); // HEPEvt // G4String filename = "pythia_event.data"; // m_currentGenerator = new G4HEPEvtInterface(filename); } PrimaryGeneratorAction::~PrimaryGeneratorAction() { delete m_currentGenerator; } void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { m_currentGenerator-> GeneratePrimaryVertex(anEvent); }

 

/generator/hepmcAscii/open  filename  /run/beamOn  1    

+  UI  macro  commands  

Page 22: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

22 Summary

§  In order to shoot primary particles, you must derive a user action class from G4VUserPrimaryGeneratorAction

§  In this class, §  instantiate primary generator(s) in the constructor §  set shooting values to it in the GeneratePrimaries method

§  You may use concrete implementation of primary generators §  G4ParticleGun §  GPS §  (external event generators)

Page 23: Primary particle - Universidad de Sevillagrupo.us.es/geterus/images/pdf/ieav-ita-2014/L12-Primary_particle.pdf · Primary particle . 2 Outline • Primary Particle Generation •

23

Thanks for your attention