Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
6 views37 pages

G4 Physics1

The document outlines the Geant4 physics lists, which are essential for defining the particles, processes, and thresholds needed for simulations. It emphasizes the importance of user-defined physics lists for flexibility and accuracy, as Geant4 does not provide a default complete set due to varying application needs. Key components include the G4VUserPhysicsList class, which requires users to implement methods for constructing particles and processes.

Uploaded by

georgep98
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views37 pages

G4 Physics1

The document outlines the Geant4 physics lists, which are essential for defining the particles, processes, and thresholds needed for simulations. It emphasizes the importance of user-defined physics lists for flexibility and accuracy, as Geant4 does not provide a default complete set due to varying application needs. Key components include the G4VUserPhysicsList class, which requires users to implement methods for constructing particles and processes.

Uploaded by

georgep98
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

Geant4

 10.0  p01  

Physics  I:  Physics  Lists  

Geant4  Tutorial  at  Stanford  


4  March  2014  
Dennis  Wright  (SLAC)  
Outline  
• IntroducGon  

• The  G4VUserPhysicsList  class  

• Modular  physics  lists  

• Packaged  physics  lists  

• Choosing  the  appropriate  physics  list  

• ValidaGng  your  physics  list    


2  
What  is  a  Physics  List?  
• A  class  which  collects  all  the  parGcles,  physics  processes  and  
producGon  thresholds  needed  for  your  applicaGon  
• It  tells  the  run  manager  how  and  when  to  invoke  physics    

• It  is  a  very  flexible  way  to  build  a  physics  environment  


– user  can  pick  the  parGcles  he  wants  
– user  can  pick  the  physics  to  assign  to  each  parGcle  
 
• But,  user  must  have  a  good  understanding  of  the  physics  
required  
– omission  of  parGcles  or  physics  could  cause  errors  or  poor  
simulaGon  

3  
Why  Do  We  Need  a  Physics  List?  
• Physics  is  physics  –  shouldn’t  Geant4  provide,  as  a  default,  a  
complete  set  of  physics  processes  that  everyone  can  use?  
• No:  
– there  are  many  different  physics  models  and  approximaGons  
– very  much  the  case  for  hadronic  physics  
– but  also  true  for  electromagneGc  physics  
 
– computaGon  speed  is  an  issue  
– a  user  may  want  a  less-­‐detailed,  but  faster  approximaGon  
 
– no  applicaGon  requires  all  the  physics  and  parGcles  that  Geant4  
has  to  offer  
– e.g.,  most  medical  applicaGons  do  not  want  mulG-­‐GeV  physics  

4  
Why  Do  We  Need  a  Physics  List?  
• For  this  reason  Geant4  takes  an  atomisGc,  rather  than  an  
integral  approach  to  physics  
– provide  many  physics  components  (processes)  which  are  
decoupled  from  one  another  (for  the  most  part)  
– user  selects  these  components  in  custom-­‐designed  physics  lists  
in  much  the  same  way  as  a  detector  geometry  is  built  

• ExcepGons  
– a  few  electromagneGc  processes  must  be  used  together  
– future  processes  involving  interference  of  electromagneGc  and  
strong  interacGons  may  require  coupling  as  well  

5  
Physics  Processes  Provided  by  Geant4  
• EM  physics  
– “standard”  processes  valid  from  ~  1  keV  to  ~PeV  
– “low  energy”  valid  from  250  eV  to  ~PeV  
– opGcal  photons  

• Weak  interacGon  physics  


– decay  of  subatomic  parGcles  
– radioacGve  decay  of  nuclei  

• Hadronic  physics  
– pure  strong  interacGon  physics  valid  from  0  to  ~TeV  
– electro-­‐  and  gamma-­‐nuclear  valid  from  10  MeV  to  ~TeV  

• Parameterized  or  “fast  simulaGon”  physics  


6  
G4VUserPhysicsList  
• All  physics  lists  must  derive  from  this  class  
– and  then  be  registered  with  the  run  manager  

• Example:  
 class  MyPhysicsList:  public  G4VUserPhysicsList  {  
         public:  
                   MyPhysicsList();  
                   ~MyPhysicsList();  
                   void  ConstructParGcle();  
                   void  ConstructProcess();  
                   void  SetCuts();  
 }  
• User  must  implement  the  methods  ConstructParGcle,  
ConstructProcess  and  SetCuts  
7  
G4VUserPhysicsList:  Required  Methods  
• ConstructParGcle()  –  choose  the  parGcles  you  need  in  your  
simulaGon  and  define  them  all  here  
• ConstructProcess()  –  for  each  parGcle,  assign  all  the  physics  
processes  important  in  your  simulaGon  
• What’s  a  process?  
•  à  a  class  that  defines  how  a  parGcle  should  interact  with  
majer  (it’s  where  the  physics  is!)  
• more  on  this  later  
• SetCuts()  –  set  the  range  cuts  for  secondary  producGon  
– What’s  a  range  cut?  
– à  essenGally  a  low  energy  limit  on  parGcle  producGon  
– more  on  this  later  
8  
ConstructParGcle()  
     void  MyPhysicsList::ConstructParGcle()    {  
               G4BaryonConstructor*  baryonConstructor  =  
                                                                                                                       new  G4BaryonConstructor();  
               baryonConstructor-­‐>ConstructParGcle();  
               delete  baryonConstructor;  
               G4BosonConstructor*  bosonConstructor  =    
                                                                                                                       new  G4BosonConstructor();  
               bosonConstructor-­‐>ConstructParGcle();  
               delete  bosonConstructor;  
               …  
               …  
       }  
9  
                 
ConstructParGcle()      (alternate)  
     void  MyPhysicsList::ConstructParGcle()    
     {  
               G4Electron::ElectronDefiniGon();  
               G4Proton::ProtonDefiniGon();  
               G4Neutron::NeutronDefiniGon();  
               G4Gamma::GammaDefiniGon();  
               …  
               …  
       }  
                 

10  
ConstructProcess()  
     void  MyPhysicsList::ConstructProcess()    {  
               AddTransportaGon();  
                 //  method  provided  by  G4VUserPhysicsList  assigns  transportaGon  
                 //  process  to  all  parGcles  defined  in  ConstructParGcle()  
 
                 ConstructEM();  
                 //  method  may  be  defined  by  user  (for  convenience)  
                 //  put  electromagneGc  physics  here  
 
                 ConstructGeneral();  
                 //  method  may  be  defined  by  user  to  hold  all  other  processes  
       }  
                  11  
ConstructEM()  
     void  MyPhysicsList::ConstructEM()    {  
               G4PhysicsListHelper*  ph  =  G4PhysicsListHelper::GetPhysicsListHelper();  
 
               theParGcleIterator-­‐>reset();  
               while(  (*theParGcleIterator)()  )  {  
                         G4ParGcleDefiniGon*  parGcle  =  theParGcleIterator-­‐>value();  
                         if    (parGcle  ==  G4Gamma::Gamma()  )  {  
                                 ph-­‐>RegisterProcess(new  G4GammaConversion(),    parGcle);  
                                   ….    //  add  more  processes  
                         }  
                           …    //  do  electrons,  positrons,  etc.  
               }  
12  
 
ConstructGeneral()  
     void  MyPhysicsList::ConstructGeneral()    {  
               G4PhysicsListHelper*  ph  =  G4PhysicsListHelper::GetPhysicsListHelper();  
               //  Add  decay  process  
               G4Decay*  theDecayProcess  =  new  G4Decay();  
               theParGcleIterator-­‐>reset();  
               while(  (*theParGcleIterator)()  )  {  
                         G4ParGcleDefiniGon*  parGcle  =  theParGcleIterator-­‐>value();  
                         if    (theDecayProcess-­‐>IsApplicable(*parGcle)  )  {    
                                 ph-­‐>RegisterProcess(theDecayProcess,  parGcle);  
                         }  
                 }  
                 //  Add  other  physics  
13  
 
SetCuts()  
     void  MyPhysicsList::SetCuts()  
     {  
               defaultCutValue  =  0.7*mm;  
               SetCutValue(defaultCutValue,  “gamma”);  
               SetCutValue(defaultCutValue,  “e-­‐”);  
               SetCutValue(defaultCutValue,  “e+”);  
               SetCutValue(defaultCutValue,  “proton”);  
               //  
               //  These  are  all  the  producGon  cuts  you  need  to  set  
               //  -­‐  not  required  for  any  other  parGcle  
     }  
 
  14  
G4VModularPhysicsList  
• The  physics  list  in  our  example  is  quite  simple  
• A  realisGc  physics  list  is  likely  to  have  many  more  physics  
processes  
– such  a  list  can  become  quite  long,  complicated  and  hard  to  
maintain  
– try  a  modular  physics  list  instead  
• Features  of  G4VModularPhysicsList  
– derived  from  G4VUserPhysicsList  
– AddTransportaGon()  automaGcally  called  for  all  registered  parGcles  
– allows  you  to  define  “physics  modules”:  EM  physics,  hadronic  
physics,  opGcal  physics,  etc.  
 
15  
 
A  Simple  G4VModularPhysicsList  
• Constructor:  
   MyModPhysList::MyModPhysList():  G4VModularPhysicsList()  {  
             defaultCutValue  =  0.7*mm;  
             RegisterPhysics(new  ProtonPhysics()  );    
             //  all  physics  processes  having  to  do  with  protons  
RegisterPhysics(new  ElectronPhysics()  );  
//  all  physics  processes  having  to  do  with  electrons  
RegisterPhysics(new  DecayPhysics()  );  
//  physics  of  unstable  parGcles  
   }  
• SetCuts:  
     void  MyModPhysList::SetCuts()  {  SetCutsWithDefault();  }   16  
 
Physics  Constructors  
• Allows  you  to  group  parGcle  and  process  construcGon  
according  to  physics  domains  
• class  ProtonPhysics  :  public  G4VPhysicsConstructor  
         {    
                   public:  
                             ProtonPhysics(const  G4String&  name  =  “proton”);  
                             virtual  ~ProtonPhysics();  
                             virtual  void  ConstructParGcle()  
                             //  easy  –  only  one  parGcle  to  build  in  this  case  
                             virtual  void  ConstructProcess();  
                             //  put  here  all  the  processes  a  proton  can  have  
         }  
17  
 
Packaged  Physics  Lists  
• Our  example  dealt  mainly  with  electromagneGc  physics  
• A  realisGc  physics  list  can  be  found  in  basic  example  B3  
– uses  “standard”  EM  physics  and  decay  physics  
– a  good  starGng  point  
– add  to  it  according  to  your  needs  
• Adding  hadronic  physics  is  more  involved  
– for  any  one  hadronic  process,  user  may  choose  from  several  
hadronic  models  
– choosing  the  right  models  for  your  applicaGon  requires  care  
– to  make  things  easier,  pre-­‐packaged  physics  lists  are  provided  
according  to  some  reference  use  cases  
 
18  
 
Packaged  Physics  Lists  
• Each  pre-­‐packaged  physics  list  includes  different  choices  of  
EM  and  hadronic  physics  
• A  list  of  these  can  be  found  in  your  copy  of  the  toolkit  at    
geant4/source/physics_lists/lists/include  
• Caveats  
– these  lists  are  provided  as  a  “best  guess”  of  the  physics  needed  
in  a  given  use  case  
– the  user  is  responsible  for  validaGng  the  physics  for  his  own  
applicaGon  and  adding  (or  subtracGng)  the  appropriate  physics  
– they  are  intended  as  starGng  points  or  templates  
 
 
19  
 
Reference  Physics  Lists  
• Among  the  pre-­‐packaged  physics  lists  are  the  “Reference”  
physics  lists    
– a  small  number  of  well-­‐maintained  and  tested  physics  lists  
– also  the  most  used  (ATLAS,  CMS,  etc.)  and  most  recommended  
• These  are  updated  less  frequently  
– more  stable  
• More  on  these,  and  which  ones  we  recommend,  later  
 
 
 
 
  20  
A  Short  Guide  to  Choosing  a    
Physics  List  
Choosing  a  Physics  List  
• Which  physics  list  you  use  is  highly  dependent  on  your  use  
case  
• Before  choosing,  or  building  your  own,  familiarize  yourself  
with  the  major  physics  processes  available  
• the  process-­‐model  catalog  is  useful  for  this    
• see  Geant4  web  page  under  User  Support,  item  11b  
 
• Geant4  provides  several  “reference  physics  lists”  which  are  
rouGnely  validated  and  updated  with  each  release  
• these  should  be  considered  only  as  starGng  points  which  you  
may  need  to  validate  or  modify  for  your  applicaGon  
• There  are  also  many  physics  lists  in  the  examples  which  you  
can  copy  
• these  are  owen  very  specific  to  a  given  use  case  
22  
Choosing  a  Physics  List  
• There  are  currently  19  packaged  physics  lists  available  
• but  you  will  likely  be  interested  in  only  a  few,  namely  the  
“reference”  physics  lists  
• many  physics  lists  are  either  developmental  or  customized  in  
some  way,  and  so  not  very  useful  to  new  users  
 
• All  but  one  of  the  packaged  physics  lists  use  templates  
• the  LBE  physics  list  is  the  old-­‐style  “flat”  list  without  templates  
or  physics  builders  
 
• 6  reference  physics  lists:  
• FTFP_BERT,  FTFP_BERT_HP  
• QGSP_BERT,  QGSP_BERT_HP,  QGSP_BIC  
• QGSP_FTFP_BERT  
23  
Physics  List  Naming  ConvenGon  
• The  following    acronyms  refer  to  various  hadronic  opGons  
• QGS  -­‐>  Quark  Gluon  String  model  (>~20  GeV)    
• FTF  -­‐>  FriGof  string  model  (>~5  GeV)  
• BIC  -­‐>  Binary  Cascade  (<~  10  GeV)  
• BERT  -­‐>  BerGni-­‐style  cascade  (<~  10  GeV)    
• HP  -­‐>  High  Precision  neutron  model  (  <  20  MeV)  
• P  -­‐>  G4Precompund  model  used  for  de-­‐excitaGon  
 
• EM  opGons  designated  by  
• no  suffix  :  standard  EM  physics  
• EMV  suffix  :  older  but  faster  EM  processes  
• other  suffixes  for  other  EM  opGons  
24  
Reference  Physics  Lists  
• FTFP_BERT  
– recommended  by  Geant4  for  HEP  
– contains  all  standard  EM  processes  
– uses  BerGni-­‐style  cascade  for  hadrons  <  5  GeV  
– uses  FTF  (FriGof)  model  for  high  energies  (  >  4  GeV)  

• QGSP_BERT  
– all  standard  EM  processes  
– BerGni-­‐style  cascade  up  to  9.9  GeV  
– QGS  model  for  high  energies  (>  ~18  GeV)  
– FTF  in  between  

25  
Reference  Physics  Lists  
• QGSP_BIC  
– same  as  QGSP_BERT,  but  replaces  BerGni  cascade  with  Binary  
cascade  and  G4Precompound  model  
– recommended  for  use  at  energies  below  200  MeV  (many  
medical  applicaGons)  

• FTFP_BERT_HP  
– same  as  FTFP_BERT,  but  with  high  precision  neutron  model  
used  for  neutrons  below  20  MeV  
– significantly  slower  than  FTFP_BERT  when  full  thermal  cross  
secGons  used  
–there’s  an  opGon  to  turn  this  off  
– for  radiaGon  protecGon  and  shielding  applicaGons  

26  
Other  Physics  Lists  
• Shielding    
– based  on  FTFP_BERT_HP  with  improved  neutron  cross  secGons  
from  JENDL  
– bejer  ion  interacGons  using  QMD  model  
– currently  used  by  SuperCDMS  dark  majer  search  
– recommended  for:  
–shielding  applicaGons  
–space  physics  
–HEP    

27  
Other  Physics  Lists  
• FTFP_INCLXX,  FTFP_INCLXX_HP  
– like  FTFP_BERT,  but  with  BERT  replaced  by  INCL++  cascade  
model  
• QBBC  
– uses  both  BERT  and  BIC  cascade  models  
– latest  coherent  elasGc  scajering  
– neutronXS  models  (faster  CPU-­‐wise)  

• QGSP_BIC_HP  
– same  as  QGSP_BIC,  but  with  high  precision  neutron  model  used  
for  neutrons  below  20  MeV  
– recommended  for  radiaGon  protecGon,  shielding  and  medical  
applicaGons  
28  
Other  Physics  Lists  (based  on  use  case)  
• If  primary  parGcle  energy  in  your  applicaGon  is  <  5  GeV  (for  
example,  clinical  proton  beam  of  150  MeV)  
– start  with  a  physics  list  which  includes  BIC  or  BERT  
– e.g.  QGSP_BIC,    QGSP_BERT,  FTFP_BERT,  etc.  

• If  neutron  transport  is  important  


– start  with  physics  list  containing  “HP”  
– e.g.  QGSP_BIC_HP,    FTFP_BERT_HP,  etc.  

• If  you’re  interested  in  Bragg  curve  physics  


– use  a  physics  list  ending  in  “EMV”  or  “EMX”  
– e.g.  QGSP_BERT_EMV    

29  
Other  Physics  Lists  (based  on  use  case)  

• For  opGcal  photon  transport  


– start  with  the  LBE  physics  list  
– list  is  a  bit  old,  but  opGcal  code  can  be  extracted  for  other  
applicaGons  

• For  radioacGve  decay  


– use  LBE  list  as  an  example,  or  the  physics  list  in  example  B3  

• For    detailed  line  emissions  from  EM  processes  


– LBE  or  see  following  slide  

30  
Alternate  EM  Physics  Lists  
• Up  to  now,  most  physics  lists  menGoned  have  used  the  
“standard”  EM  processes,  but  “low  energy”  EM  physics  is  also  
available  
• G4EmLivermorePhysics      (physics  list  suffix  =  LIV)  
• G4EmLivermorePolarizedPhysics  
• G4EmPenelopePhysics    (suffix  =  PEN)  
• G4EmDNAPhysics  
 
• Physics  lists  containing  these  are  recommended  for  micro-­‐
dosimetry  applicaGons  
• For  examples  using  a  DNA  physics  list,  go  to  
• geant4/source/examples/advanced  
31  
Using  Alternate  EM  Physics  Lists  
• These  physics  list  classes  derive  from  the  
G4VPhysicsConstructor  abstract  base  class  
• A  good  implementaGon  example  that  uses  these  already  
available  physics  lists  can  be  found  in    
• examples/extended/electromagneGc/TestEm2  
 
• Once  you  know  the  desired  hadronic  part  of  the  physics  list  
name  (e.g.  FTFP_BERT)  an  easy  way  to  keep  straight  the  
various  EM  opGons  is  to  use  the  G4PhysListFactory  class:  
• G4PhysListFactory  factory;  
       G4VModularPhysicsList*  physList  =  
                                     factory.GetReferencePhysList(“FTFP_BERT_  XXX”);  
       //  where  XXX  =  EMV  or  EMX  or  LIV  or  PEN  
32  
Using  Geant4  ValidaGon  to  Choose  Physics  Lists  
• UlGmately  you  must  choose  a  physics  list  based  on  how  well  
its  component  processes  and  models  perform  
• physics  performance  
• CPU  performance  
• Geant4  provides  validaGon  (comparison  to  data)  for  most  of  
its  physics  codes  
• validaGon  is  a  conGnuing  task,  performed  at  least  as  owen  as  
each  release  
• more  validaGon  tests  added  as  Gme  goes  on  
• To  access  these  comparisons,  go  to  Geant4  website  
– follow  the  chain:  click  on  “Results  and  PublicaGons”  -­‐>  
“ValidaGon  and  tesGng”  -­‐>  ValidaGon  Database:  “FNAL_DB”  
33  
New  Hadronic  ValidaGon  Framework  

34  
IAEA  ValidaGon  Tests  (Hadronic)  

35  
Specific  Hadronic  ValidaGon  Test  

36  
Summary  
• All  the  parGcles,  physics  processes  and  producGon  cuts  
needed  for  an  applicaGon  must  go  into  a  physics  list  
• Two  kinds  of  physics  list  classes  are  available  for  users  to  
derive  from  
– G4VUserPhysicsList  –  for  relaGvely  simple  physics  lists  
– G4VModularPhysicsList  –  for  detailed  physics  lists  
• Some  physics  lists  are  provided  by  Geant4  as  a  starGng  point  
for  users  
• Care  is  required  by  user  in  choosing  the  right  physics  
– use  the  validaGon,  Luke  
 
 
37  
 

You might also like