Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HadronPhysicsQGSP_INCLXX.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_INCLXX
31 //
32 // Author: 2011 P. Kaitaniemi
33 //
34 // Modified:
35 // 31.10.2012 A.Ribon: Use G4MiscBuilder
36 // 23.03.2012 D. Mancusi: Extended INCL++ to incident heavy ions up to 16O
37 // 27.11.2011 P.Kaitaniemi: Created physics list for INCL++ using QGSP_INCL_ABLA as a template
38 //
39 //----------------------------------------------------------------------------
40 //
41 #include <iomanip>
42 
44 
45 #include "globals.hh"
46 #include "G4ios.hh"
47 #include "G4SystemOfUnits.hh"
48 #include "G4ParticleDefinition.hh"
49 #include "G4ParticleTable.hh"
50 
51 #include "G4MesonConstructor.hh"
52 #include "G4BaryonConstructor.hh"
54 
55 // factory
57 //
59 
61  : G4VPhysicsConstructor("hInelastic QGSP_INCLXX")
62  , theNeutrons(0)
63  , theLEPNeutron(0)
64  , theQGSPNeutron(0)
65  , theBertiniNeutron(0)
66  , theInclAblaNeutron(0)
67  , thePiK(0)
68  , theLEPPiK(0)
69  , theQGSPPiK(0)
70  , theBertiniPiK(0)
71  , theInclAblaPiK(0)
72  , thePro(0)
73  , theLEPPro(0)
74  , theQGSPPro(0)
75  , theBertiniPro(0)
76  , theInclAblaPro(0)
77  , theMisc(0)
78  , QuasiElastic(true)
79  , ProjectileDiffraction(false)
80 {
81 }
82 
84  : G4VPhysicsConstructor(name)
85  , theNeutrons(0)
86  , theLEPNeutron(0)
87  , theQGSPNeutron(0)
88  , theBertiniNeutron(0)
89  , theInclAblaNeutron(0)
90  , thePiK(0)
91  , theLEPPiK(0)
92  , theQGSPPiK(0)
93  , theBertiniPiK(0)
94  , theInclAblaPiK(0)
95  , thePro(0)
96  , theLEPPro(0)
97  , theQGSPPro(0)
98  , theBertiniPro(0)
99  , theInclAblaPro(0)
100  , theMisc(0)
101  , QuasiElastic(quasiElastic)
102  , ProjectileDiffraction(false)
103 {
104 }
105 
106 void HadronPhysicsQGSP_INCLXX::CreateModels()
107 {
108  theNeutrons=new G4NeutronBuilder;
109  theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
110  theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
111  theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
112  theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
113 
114  theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
115  theBertiniNeutron->SetMinEnergy(2.9*GeV);
116  theBertiniNeutron->SetMaxEnergy(9.9*GeV);
117 
118  theNeutrons->RegisterMe(theInclAblaNeutron=new G4INCLXXNeutronBuilder);
119  theInclAblaNeutron->SetMinEnergy(0.0*GeV);
120  theInclAblaNeutron->SetMaxEnergy(3.0*GeV);
121 
122  thePro=new G4ProtonBuilder;
123  thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
124  thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
125  theLEPPro->SetMinEnergy(9.5*GeV);
126  theLEPPro->SetMaxEnergy(25*GeV);
127 
128  thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
129  theBertiniPro->SetMinEnergy(2.9*GeV);
130  theBertiniPro->SetMaxEnergy(9.9*GeV);
131 
132  thePro->RegisterMe(theInclAblaPro=new G4INCLXXProtonBuilder);
133  theInclAblaPro->SetMinEnergy(0.0*GeV);
134  theInclAblaPro->SetMaxEnergy(3.0*GeV);
135 
136  thePiK=new G4PiKBuilder;
137  thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
138  thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
139  theLEPPiK->SetMaxEnergy(25*GeV);
140  theLEPPiK->SetMinEnergy(9.5*GeV);
141 
142  thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
143  theBertiniPiK->SetMinEnergy(2.9*GeV);
144  theBertiniPiK->SetMaxEnergy(9.9*GeV);
145 
146  thePiK->RegisterMe(theInclAblaPiK=new G4INCLXXPiKBuilder);
147  theInclAblaPiK->SetMinEnergy(0.0*GeV);
148  theInclAblaPiK->SetMaxEnergy(3.0*GeV);
149 
150  theMisc=new G4MiscBuilder;
151 }
152 
154 {
155  delete theMisc;
156  delete theQGSPNeutron;
157  delete theLEPNeutron;
158  delete theBertiniNeutron;
159  delete theInclAblaNeutron;
160  delete theQGSPPro;
161  delete theLEPPro;
162  delete thePro;
163  delete theBertiniPro;
164  delete theInclAblaPro;
165  delete theQGSPPiK;
166  delete theLEPPiK;
167  delete theInclAblaPiK;
168  delete theBertiniPiK;
169  delete thePiK;
170 }
171 
173 {
174  G4MesonConstructor pMesonConstructor;
175  pMesonConstructor.ConstructParticle();
176 
177  G4BaryonConstructor pBaryonConstructor;
178  pBaryonConstructor.ConstructParticle();
179 
180  G4ShortLivedConstructor pShortLivedConstructor;
181  pShortLivedConstructor.ConstructParticle();
182 }
183 
184 #include "G4ProcessManager.hh"
186 {
187  CreateModels();
188  theNeutrons->Build();
189  thePro->Build();
190  thePiK->Build();
191  theMisc->Build();
192 }
193