LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
MyQGSP_BERT_ArHP.cc
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //---------------------------------------------------------------------------
28 //
29 // ClassName: QGSP_BERT
30 //
31 // Author: 2002 J.P. Wellisch
32 //
33 // Modified:
34 // 15.12.2005 G.Folger: migration to non static particles, rename components,
35 // ordering of registrations
36 // 08.06.2006 V.Ivanchenko: migration to CHIPS stopping
37 // 15.06.2006 G.Folger: Migrate to HadronElasticPhysics using improved elastic
38 // 26.04.2007 G.Folger: Enable quasielastic for QGS string model
39 // 16.05.2007 V.Ivanchenko: rename EM builders
40 // 04.06.2010 G.Folger: Use new ctor for builders
41 // 16.08.2010 H.Kurashige: Remove inclusion of G4ParticleWithCuts
42 // 16.10.2012 A.Ribon: Use new default stopping
43 // 19.01.2021 D.Rivera: imported into artg4tk based on :
44 // geant4.10.06.p01/source/physics_lists/lists/src/QGSP_BERT_HP.cc
45 // Converted this to an extensible physics list and registered it.
46 // Included custom version of G4HadronPhysicsQGSP_BERT_HP.
47 //
48 //----------------------------------------------------------------------------
49 //
50 
51 #include <iomanip>
52 
53 #include <CLHEP/Units/SystemOfUnits.h>
54 
55 // -- artg4tk includes
57 
58 #include "Geant4/G4ParticleTable.hh"
59 #include "Geant4/G4ParticleTypes.hh"
60 #include "Geant4/G4ProcessManager.hh"
61 #include "Geant4/G4ProcessVector.hh"
62 #include "Geant4/G4ios.hh"
63 #include "Geant4/globals.hh"
64 
65 #include "Geant4/G4Material.hh"
66 #include "Geant4/G4MaterialTable.hh"
67 
68 #include "Geant4/G4DecayPhysics.hh"
69 #include "Geant4/G4EmExtraPhysics.hh"
70 #include "Geant4/G4EmStandardPhysics.hh"
71 #include "Geant4/G4HadronElasticPhysicsHP.hh"
72 #include "Geant4/G4IonPhysics.hh"
73 #include "Geant4/G4RadioactiveDecayPhysics.hh"
74 #include "Geant4/G4StoppingPhysics.hh"
75 
77 // The following change is the _only_ required changed to move from
78 // the non-extensible factory to the exensible factory. All other changes
79 // relative to the "factory" example are there to demonstrate new features.
81 // non-extensible: #include "G4PhysListFactory.hh"
82 #include "Geant4/G4PhysListFactoryAlt.hh"
84 // headers needed to demonstrate new features
86 
87 // allow ourselves to extend the short names for physics ctor addition/replace
88 // along the same lines as EMX, EMY, etc
89 #include "Geant4/G4PhysListRegistry.hh"
90 
91 // allow ourselves to give the user extra info about available physics ctors
92 #include "Geant4/G4PhysicsConstructorFactory.hh"
93 
95 // pull in a user defined physics list definition into the main program
96 // and register it with the factory (doesn't have to be the main program
97 // but the .o containing the declaration _must_ get linked/loaded)
98 
99 #include "Geant4/G4VModularPhysicsList.hh"
100 
101 #include "Geant4/G4PhysListStamper.hh" // defines macro for factory registration
102 #include "MyQGSP_BERT_ArHP.hh"
103 
104 // -- Register the physics list
106 
108 {
109 
110  G4cout << "<<< Geant4 Physics List simulation engine: MyQGSP_BERT_ArHP" << G4endl;
111  G4cout << G4endl << G4endl;
112 
113  defaultCutValue = 0.7 * CLHEP::mm;
114  SetVerboseLevel(ver);
115 
116  // EM Physics
117  RegisterPhysics(new G4EmStandardPhysics(ver));
118 
119  // Synchroton Radiation & GN Physics
120  RegisterPhysics(new G4EmExtraPhysics(ver));
121 
122  // Decays
123  RegisterPhysics(new G4DecayPhysics(ver));
124  RegisterPhysics(new G4RadioactiveDecayPhysics(ver));
125 
126  // Hadron Elastic scattering
127  RegisterPhysics(new G4HadronElasticPhysicsHP(ver));
128 
129  // Hadron Physics
130  RegisterPhysics(new MyG4HadronPhysicsQGSP_BERT_ArHP(ver));
131 
132  // Stopping Physics
133  RegisterPhysics(new G4StoppingPhysics(ver));
134 
135  // Ion Physics
136  RegisterPhysics(new G4IonPhysics(ver));
137 }
138 
139 void
141 {
142  if (verboseLevel > 1) {
143  G4cout << "MyQGSP_BERT_ArHP::SetCuts:";
144  }
145 
146  // G4VUserPhysicsList::SetCutsWithDefault method sets the default
147  // cut value for all particle types
148 
149  SetCutsWithDefault();
150 
151  // Set proton cut value to 0 for producing low energy recoil nucleus
152  SetCutValue(0, "proton");
153 }
MyQGSP_BERT_ArHP(G4int ver=1)
G4_DECLARE_PHYSLIST_FACTORY(MyQGSP_BERT_ArHP)
void SetCuts() override