PhysicsList.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 /// \file PhysicsList.h
3 /// \brief Create the physics lists to be used by Geant4.
4 ///
5 /// \author seligman@nevis.columbia.edu
6 // \modified by: drivera@fnal.gov
7 // \changes: removed QGSP_BERT.h include because it is not pertinent
8 // here nor where this header is included
9 //
10 ////////////////////////////////////////////////////////////////////////
11 ///
12 /// Without a physics list, Geant4 won't do anything. G4 comes with a
13 /// number of pre-constructed lists, and for now I plan to use
14 /// "QGSP_BERT". It has the following properties:
15 ///
16 /// - Standard EM physics processes.
17 /// - Quark-gluon string model for high energies (> 20GeV)
18 /// - Low Energy Parameterized (LEP) for medium energies (10<E<20GeV)
19 /// - Gertini-style cascade for low energies (< 10GeV)
20 /// - LEP, HEP for all anti-baryons (LEP,HEP = low/high energy parameterized, from GHEISHA)
21 /// - Gamma-nuclear model added for E<3.5 GeV
22 /// (comments from "Guided Tour of Geant4 Physics List II",
23 /// talk given at JPL by Dennis Wright)
24 ///
25 /// IMPORTANT: For now, I'm just copying this physics list from the
26 /// work I did for NuSOnG, which in turn I copied from ATLAS. More
27 /// thought is needed for the physics list for MicroBooNE.
28 ///
29 /// If you decide to replace QGSP_BERT with another of G4's
30 /// pre-supplied physics lists, you can just do a global replace on
31 /// that name in this header; nothing else need change (except the
32 /// comments, of course!).
33 ///
34 /// Things become more complex when you're using parallel geometries.
35 /// The physics processes have to be duplicated in the parallel world.
36 /// There's a G4 facility for doing this, but it's not part of the
37 /// pre-supplied physics lists.
38 ///
39 /// Hence this class. It takes the physics from QGSP_BERT, but it
40 /// extends one of the methods to include recognition of physics
41 /// processes in the parallel world.
42 /// -------------------------------------------------------------------------------------------
43 /// 03/04/19 - D. Rivera
44 /// The physics list is not chosen in this header. Instead this header file defines the Modular
45 /// Physics list object. The actual available physics lists are limited to what is defined in the
46 /// CustomPhysicsBuiltIns.hh which is where various other physics lists can be included.
47 ///
48 
49 #ifndef LArG4_PhysicsList_h
50 #define LArG4_PhysicsList_h
51 
52 #include "Geant4/G4String.hh"
53 #include "Geant4/G4VModularPhysicsList.hh"
55 class G4VPhysicsConstructor;
56 
57 namespace larg4 {
58 
59  // Under normal circumstances, there is no need to inherit a class
60  // from G4VModularPhysicsList. It's necessary here because we have
61  // to modify one of its routines.
62  class ModularPhysicsList : public G4VModularPhysicsList {
63  public:
64  // This is the one method we're overridding to include the code
65  // for the parallel geometry.
66  virtual void ConstructProcess();
67 
68  // Non-virtual methods in G4VModularPhysicsList. Just call the
69  // method with the same name in G4VModularPhysicsList.
70  void
71  RegisterPhysics(G4VPhysicsConstructor* g)
72  {
73  G4VModularPhysicsList::RegisterPhysics(g);
74  }
75  const G4VPhysicsConstructor*
76  GetPhysics(G4int index) const
77  {
78  return G4VModularPhysicsList::GetPhysics(index);
79  }
80  const G4VPhysicsConstructor*
81  GetPhysics(const G4String& name) const
82  {
83  return G4VModularPhysicsList::GetPhysics(name);
84  }
85  };
86 
87  /// This type alias is what defines the name "larg4::PhysicsList" in
88  /// any class that includes this header.
90 
91 } // namespace larg4
92 
93 #endif // LArG4_PhysicsList_h
static QCString name
Definition: declinfo.cpp:673
static constexpr double g
Definition: Units.h:144
Geant4 interface.
void RegisterPhysics(G4VPhysicsConstructor *g)
Definition: PhysicsList.h:71
const G4VPhysicsConstructor * GetPhysics(const G4String &name) const
Definition: PhysicsList.h:81
virtual void ConstructProcess()
Definition: PhysicsList.cxx:36
const G4VPhysicsConstructor * GetPhysics(G4int index) const
Definition: PhysicsList.h:76