Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
HadronPhysicsQGSP_BERT_HP.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// $Id$
27//
28//---------------------------------------------------------------------------
29//
30// ClassName: HadronPhysicsQGSP_BERT_HP
31//
32// Author: 2002 J.P. Wellisch
33//
34// Modified:
35// 15.12.2005 G.Folger: migration to non static particles
36// 08.06.2006 V.Ivanchenko: remove stopping
37// 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy
38// 25.04.2007 G.Folger: Add code for quasielastic
39// 31.10.2012 A.Ribon: Use G4MiscBuilder
40//
41//----------------------------------------------------------------------------
42//
43#include <iomanip>
44
46
47#include "globals.hh"
48#include "G4ios.hh"
49#include "G4SystemOfUnits.hh"
51#include "G4ParticleTable.hh"
52
53#include "G4MesonConstructor.hh"
56
57// factory
59//
61
63 : G4VPhysicsConstructor("hInelastic QGSP_BERT_HP")
64 , theNeutrons(0)
65 , theLEPNeutron(0)
66 , theQGSPNeutron(0)
67 , theBertiniNeutron(0)
68 , theHPNeutron(0)
69 , thePiK(0)
70 , theLEPPiK(0) //A.R. 26-Jul-2012 Coverity fix
71 , theQGSPPiK(0)
72 , theBertiniPiK(0)
73 , thePro(0)
74 , theLEPPro(0) //A.R. 26-Jul-2012 Coverity fix
75 , theQGSPPro(0)
76 , theBertiniPro(0)
77 , theMisc(0)
78 , QuasiElastic(true)
79{}
80
83 , theNeutrons(0)
84 , theLEPNeutron(0)
85 , theQGSPNeutron(0)
86 , theBertiniNeutron(0)
87 , theHPNeutron(0)
88 , thePiK(0)
89 , theLEPPiK(0) //A.R. 26-Jul-2012 Coverity fix
90 , theQGSPPiK(0)
91 , theBertiniPiK(0)
92 , thePro(0)
93 , theLEPPro(0) //A.R. 26-Jul-2012 Coverity fix
94 , theQGSPPro(0)
95 , theBertiniPro(0)
96 , theMisc(0)
97 , QuasiElastic(quasiElastic)
98{}
99
100void HadronPhysicsQGSP_BERT_HP::CreateModels()
101{
102 theNeutrons=new G4NeutronBuilder;
103 theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic));
104 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
105 theLEPNeutron->SetMinEnergy(19.9*MeV);
106 theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
107 theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
108
109 theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
110 theBertiniNeutron->SetMinEnergy(19.9*MeV);
111 theBertiniNeutron->SetMaxEnergy(9.9*GeV);
112
113 theNeutrons->RegisterMe(theHPNeutron=new G4NeutronHPBuilder);
114
115 thePro=new G4ProtonBuilder;
116 thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic));
117 thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
118 theLEPPro->SetMinEnergy(9.5*GeV);
119 theLEPPro->SetMaxEnergy(25*GeV);
120
121 thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
122 theBertiniPro->SetMaxEnergy(9.9*GeV);
123
124 thePiK=new G4PiKBuilder;
125 thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
126 thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
127 theLEPPiK->SetMaxEnergy(25*GeV);
128 theLEPPiK->SetMinEnergy(9.5*GeV);
129
130 thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
131 theBertiniPiK->SetMaxEnergy(9.9*GeV);
132
133 theMisc=new G4MiscBuilder;
134}
135
137{
138 delete theMisc;
139 delete theQGSPNeutron;
140 delete theLEPNeutron;
141 delete theBertiniNeutron;
142 delete theHPNeutron;
143 delete theQGSPPro;
144 delete theLEPPro;
145 delete thePro;
146 delete theBertiniPro;
147 delete theQGSPPiK;
148 delete theLEPPiK;
149 delete theBertiniPiK;
150 delete thePiK;
151}
152
154{
155 G4MesonConstructor pMesonConstructor;
156 pMesonConstructor.ConstructParticle();
157
158 G4BaryonConstructor pBaryonConstructor;
159 pBaryonConstructor.ConstructParticle();
160
161 G4ShortLivedConstructor pShortLivedConstructor;
162 pShortLivedConstructor.ConstructParticle();
163}
164
165#include "G4ProcessManager.hh"
167{
168 CreateModels();
169 theNeutrons->Build();
170 thePro->Build();
171 thePiK->Build();
172 theMisc->Build();
173}
174
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
static void ConstructParticle()
void SetMaxEnergy(G4double aM)
void SetMaxInelasticEnergy(G4double aM)
void SetMinInelasticEnergy(G4double aM)
void SetMinEnergy(G4double aM)
void SetMaxEnergy(G4double aM)
void SetMinEnergy(G4double aM)
void SetMinEnergy(G4double aM)
void SetMaxEnergy(G4double aM)
static void ConstructParticle()
void RegisterMe(G4VNeutronBuilder *aB)
void RegisterMe(G4VPiKBuilder *aB)
Definition: G4PiKBuilder.hh:58
void RegisterMe(G4VProtonBuilder *aB)