ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NeutronPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file NeutronPhysics.cc
1 // $Id: $
3 // //
4 // File: NeutronPhysics.cc //
5 // Description: Neutron hadronic physics constructor for EICPhysicsList //
6 // //
7 // Author: Dennis H. Wright (SLAC) //
8 // Date: 3 July 2018 //
9 // //
11 
12 
13 #include "NeutronPhysics.hh"
14 
15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4NeutronInelasticProcess.hh>
17 #include <Geant4/G4HadronElasticProcess.hh>
18 #include <Geant4/G4HadronCaptureProcess.hh>
19 #include <Geant4/G4NeutronKiller.hh>
20 
21 #include <Geant4/G4CascadeInterface.hh>
22 #include <Geant4/G4TheoFSGenerator.hh>
23 #include <Geant4/G4FTFModel.hh>
24 #include <Geant4/G4ExcitedStringDecay.hh>
25 #include <Geant4/G4LundStringFragmentation.hh>
26 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
27 #include <Geant4/G4ChipsElasticModel.hh>
28 #include <Geant4/G4NeutronRadCapture.hh>
29 
30 #include <Geant4/G4BGGNucleonInelasticXS.hh>
31 #include <Geant4/G4NeutronElasticXS.hh>
32 #include <Geant4/G4NeutronCaptureXS.hh>
33 
34 #include <Geant4/G4SystemOfUnits.hh>
35 
36 
38  ftfp(nullptr),
39  stringModel(nullptr),
40  stringDecay(nullptr),
41  fragModel(nullptr),
42  preCompoundModel(nullptr)
43 {}
44 
45 
47 {
48  delete stringDecay;
49  delete stringModel;
50  delete fragModel;
51  delete preCompoundModel;
52 }
53 
54 
56 {}
57 
58 
60 {
61  // Low energy elastic model
63 
64  // Use Bertini cascade for low energies
65  G4CascadeInterface* loInelModel = new G4CascadeInterface;
66  loInelModel->SetMinEnergy(0.0);
67  loInelModel->SetMaxEnergy(12.0*GeV);
68 
69  // Capture model
70  G4NeutronRadCapture* capModel = new G4NeutronRadCapture();
71 
72  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
73  ftfp = new G4TheoFSGenerator("FTFP");
74  stringModel = new G4FTFModel;
75  stringDecay =
79 
82  ftfp->SetMinEnergy(5*GeV);
83  ftfp->SetMaxEnergy(100*TeV);
84 
85  // Cross section sets
89 
91 
92  // Elastic process
94  nProcEl->RegisterMe(elMod);
95  nProcEl->AddDataSet(elCS);
96  procMan->AddDiscreteProcess(nProcEl);
97 
98  // Inelastic process
100  nProcInel->RegisterMe(loInelModel);
101  nProcInel->RegisterMe(ftfp);
102  nProcInel->AddDataSet(inelCS);
103  procMan->AddDiscreteProcess(nProcInel);
104 
105  // Capture process
106  G4HadronCaptureProcess* nProcCap = new G4HadronCaptureProcess("nCapture");
107  nProcCap->RegisterMe(capModel);
108  nProcCap->AddDataSet(capCS);
109  procMan->AddDiscreteProcess(nProcCap);
110 
111  // Neutron cut (kill neutrons that live too long or have too little energy)
112  G4NeutronKiller* nKiller = new G4NeutronKiller();
113  nKiller->SetKinEnergyLimit(0.0*MeV);
114  nKiller->SetTimeLimit(10.*microsecond);
115  procMan->AddDiscreteProcess(nKiller);
116 
117 }
118 
119