ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HadronPhysicsFTFQGSP_BERT.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4HadronPhysicsFTFQGSP_BERT.cc
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 // Author: Alberto Ribon
29 // Date: October 2017
30 //
31 // Hadron physics for the new, experimental physics list FTFQGSP_BERT,
32 // with QGS fragmentation of strings, instead of the Lund string
33 // fragmentation. Note that the string excitation is still done with FTF,
34 // exactly as for FTFP_BERT.
35 // Given that it is an experimental, and perhaps temporary, new type of
36 // hadron physics, corresponding builders are not created and everything
37 // is implemented directly in this class.
38 //----------------------------------------------------------------------------
39 //
40 #include <iomanip>
41 
43 
44 #include "globals.hh"
45 #include "G4ios.hh"
46 #include "G4SystemOfUnits.hh"
47 #include "G4ParticleDefinition.hh"
48 #include "G4ParticleTable.hh"
49 
50 #include "G4MesonConstructor.hh"
51 #include "G4BaryonConstructor.hh"
53 
56 
58 #include "G4NeutronRadCapture.hh"
59 #include "G4NeutronInelasticXS.hh"
60 #include "G4NeutronCaptureXS.hh"
61 
62 #include "G4ProcessManager.hh"
64 #include "G4BGGPionInelasticXS.hh"
65 #include "G4CrossSectionPairGG.hh"
68 
69 #include "G4PhysListUtil.hh"
70 
71 #include "G4HadronicParameters.hh"
72 
73 // factory
75 //
77 
79  : G4VPhysicsConstructor("hInelastic FTFQGSP_BERT")
80  , theNeutronCaptureModel(0)
81  , thePreEquilib(0)
82  , theCascade(0)
83  , theStringModel(0)
84  , theStringDecay(0)
85  , theQGSMFragmentation(0)
86  , theHandler(0)
87  , theModel1(0)
88  , theModel2(0)
89  , theModel3(0)
90  , theBertini1(0)
91  , theBertini2(0)
92  , theNeutronCaptureProcess(0)
93  , theNeutronInelastic(0)
94  , theProtonInelastic(0)
95  , thePionMinusInelastic(0)
96  , thePionPlusInelastic(0)
97  , theKaonMinusInelastic(0)
98  , theKaonPlusInelastic(0)
99  , theKaonZeroLInelastic(0)
100  , theKaonZeroSInelastic(0)
101  , theLambdaInelastic(0)
102  , theAntiLambdaInelastic(0)
103  , theSigmaMinusInelastic(0)
104  , theAntiSigmaMinusInelastic(0)
105  , theSigmaPlusInelastic(0)
106  , theAntiSigmaPlusInelastic(0)
107  , theXiZeroInelastic(0)
108  , theAntiXiZeroInelastic(0)
109  , theXiMinusInelastic(0)
110  , theAntiXiMinusInelastic(0)
111  , theOmegaMinusInelastic(0)
112  , theAntiOmegaMinusInelastic(0)
113  , theAntiProtonInelastic(0)
114  , theAntiNeutronInelastic(0)
115  , theAntiDeuteronInelastic(0)
116  , theAntiTritonInelastic(0)
117  , theAntiHe3Inelastic(0)
118  , theAntiAlphaInelastic(0)
119  , thePiXS(0)
120  , theKaonAndHyperonXS(0)
121  , theAntiNucleonXS(0)
122  , theNeutronInelasticXS(0)
123  , theNeutronCaptureXS(0)
124 {}
125 
126 
128  : G4VPhysicsConstructor(name)
129  , theNeutronCaptureModel(0)
130  , thePreEquilib(0)
131  , theCascade(0)
132  , theStringModel(0)
133  , theStringDecay(0)
134  , theQGSMFragmentation(0)
135  , theHandler(0)
136  , theModel1(0)
137  , theModel2(0)
138  , theModel3(0)
139  , theBertini1(0)
140  , theBertini2(0)
141  , theNeutronCaptureProcess(0)
142  , theNeutronInelastic(0)
143  , theProtonInelastic(0)
144  , thePionMinusInelastic(0)
145  , thePionPlusInelastic(0)
146  , theKaonMinusInelastic(0)
147  , theKaonPlusInelastic(0)
148  , theKaonZeroLInelastic(0)
149  , theKaonZeroSInelastic(0)
150  , theLambdaInelastic(0)
151  , theAntiLambdaInelastic(0)
152  , theSigmaMinusInelastic(0)
153  , theAntiSigmaMinusInelastic(0)
154  , theSigmaPlusInelastic(0)
155  , theAntiSigmaPlusInelastic(0)
156  , theXiZeroInelastic(0)
157  , theAntiXiZeroInelastic(0)
158  , theXiMinusInelastic(0)
159  , theAntiXiMinusInelastic(0)
160  , theOmegaMinusInelastic(0)
161  , theAntiOmegaMinusInelastic(0)
162  , theAntiProtonInelastic(0)
163  , theAntiNeutronInelastic(0)
164  , theAntiDeuteronInelastic(0)
165  , theAntiTritonInelastic(0)
166  , theAntiHe3Inelastic(0)
167  , theAntiAlphaInelastic(0)
168  , thePiXS(0)
169  , theKaonAndHyperonXS(0)
170  , theAntiNucleonXS(0)
171  , theNeutronInelasticXS(0)
172  , theNeutronCaptureXS(0)
173 {}
174 
175 
177 {
180  G4cout << " FTFQGSP_BERT : similar to FTFP_BERT but with" << G4endl
181  << " QGS string fragmentation (instead of Lund string fragmentation)." << G4endl;
182 
184 
189 
190  // FTF for neutrons, protons, pions, and kaons
191  theModel1 = new G4TheoFSGenerator( "FTFP" );
192  theModel1->SetMinEnergy( minFTFP );
196 
197  // BERT for neutrons, protons, pions, and kaons
199  theBertini1->SetMinEnergy( 0.0 );
200  theBertini1->SetMaxEnergy( maxBERT );
201 
202  // FTF for hyperons
203  theModel2 = new G4TheoFSGenerator( "FTFP" );
204  theModel2->SetMinEnergy( G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade() );
208 
209  // BERT for hyperons
211  theBertini2->SetMinEnergy( 0.0 );
212  theBertini2->SetMaxEnergy( G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade() );
213 
214  // FTF for Antibaryons
215  theModel3 = new G4TheoFSGenerator( "FTFP" );
216  theModel3->SetMinEnergy( 0.0 );
220 
221  // Neutron Capture
225 
226  // Cross sections
232 }
233 
234 
236 {
237  delete theStringDecay;
238  delete theStringModel;
239  delete thePreEquilib;
240  delete theCascade;
241  delete theQGSMFragmentation;
242 }
243 
244 
246 {
247  G4MesonConstructor pMesonConstructor;
248  pMesonConstructor.ConstructParticle();
249 
250  G4BaryonConstructor pBaryonConstructor;
251  pBaryonConstructor.ConstructParticle();
252 
253  G4ShortLivedConstructor pShortLivedConstructor;
254  pShortLivedConstructor.ConstructParticle();
255 }
256 
257 
258 #include "G4ProcessManager.hh"
260 {
261  CreateModels();
262 
263  G4ProcessManager * aProcMan = 0;
264 
270  aProcMan = G4Neutron::Neutron()->GetProcessManager();
275 
280  aProcMan = G4Proton::Proton()->GetProcessManager();
282 
289 
294  aProcMan = G4PionPlus::PionPlus()->GetProcessManager();
296 
303 
308  aProcMan = G4KaonPlus::KaonPlus()->GetProcessManager();
310 
317 
324 
329  aProcMan = G4Lambda::Lambda()->GetProcessManager();
331 
337 
344 
350 
357 
363 
368  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
370 
376 
381  aProcMan = G4XiZero::XiZero()->GetProcessManager();
383 
389 
396 
402 
408 
414 
420 
426 
430  aProcMan = G4AntiHe3::AntiHe3()->GetProcessManager();
432 
438 }
439