Belle II Software  release-05-01-25
NeutronPhysics.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(c) 2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributor: Dennis Wright (SLAC) *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <simulation/physicslist/NeutronPhysics.h>
12 
13 #include "G4ProcessManager.hh"
14 #include "G4NeutronInelasticProcess.hh"
15 #include "G4HadronElasticProcess.hh"
16 #include "G4HadronCaptureProcess.hh"
17 #include "G4NeutronKiller.hh"
18 
19 #include "G4CascadeInterface.hh"
20 #include "G4TheoFSGenerator.hh"
21 #include "G4FTFModel.hh"
22 #include "G4ExcitedStringDecay.hh"
23 #include "G4LundStringFragmentation.hh"
24 #include "G4GeneratorPrecompoundInterface.hh"
25 #include "G4ChipsElasticModel.hh"
26 #include "G4NeutronRadCapture.hh"
27 
28 #include "G4BGGNucleonInelasticXS.hh"
29 #include "G4NeutronElasticXS.hh"
30 #include "G4NeutronCaptureXS.hh"
31 
32 #include "G4SystemOfUnits.hh"
33 
34 using namespace Belle2;
35 using namespace Simulation;
36 
37 
38 NeutronPhysics::NeutronPhysics()
39  : m_ftfp(nullptr), m_stringModel(nullptr), m_stringDecay(nullptr),
40  m_fragModel(nullptr), m_preCompoundModel(nullptr)
41 {}
42 
43 
44 NeutronPhysics::~NeutronPhysics()
45 {
46  delete m_stringDecay;
47  delete m_stringModel;
48  delete m_fragModel;
49  delete m_preCompoundModel;
50 }
51 
52 
54 {}
55 
56 
58 {
59  // Low energy elastic model
60  G4ChipsElasticModel* elMod = new G4ChipsElasticModel();
61 
62  // Use Bertini cascade for low energies
63  G4CascadeInterface* loInelModel = new G4CascadeInterface;
64  loInelModel->SetMinEnergy(0.0);
65  loInelModel->SetMaxEnergy(12.0 * GeV);
66 
67  // Capture model
68  G4NeutronRadCapture* capModel = new G4NeutronRadCapture();
69 
70  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
71  m_ftfp = new G4TheoFSGenerator("FTFP");
72  m_stringModel = new G4FTFModel;
74  new G4ExcitedStringDecay(m_fragModel = new G4LundStringFragmentation);
75  m_stringModel->SetFragmentationModel(m_stringDecay);
76  m_preCompoundModel = new G4GeneratorPrecompoundInterface();
77 
78  m_ftfp->SetHighEnergyGenerator(m_stringModel);
79  m_ftfp->SetTransport(m_preCompoundModel);
80  m_ftfp->SetMinEnergy(5 * GeV);
81  m_ftfp->SetMaxEnergy(100 * TeV);
82 
83  // Cross section sets
84  G4BGGNucleonInelasticXS* inelCS = new G4BGGNucleonInelasticXS(G4Neutron::Neutron());
85  G4NeutronElasticXS* elCS = new G4NeutronElasticXS;
86  G4NeutronCaptureXS* capCS = new G4NeutronCaptureXS;
87 
88  G4ProcessManager* procMan = G4Neutron::Neutron()->GetProcessManager();
89 
90  // Elastic process
91  G4HadronElasticProcess* nProcEl = new G4HadronElasticProcess;
92  nProcEl->RegisterMe(elMod);
93  nProcEl->AddDataSet(elCS);
94  procMan->AddDiscreteProcess(nProcEl);
95 
96  // Inelastic process
97  G4NeutronInelasticProcess* nProcInel = new G4NeutronInelasticProcess;
98  nProcInel->RegisterMe(loInelModel);
99  nProcInel->RegisterMe(m_ftfp);
100  nProcInel->AddDataSet(inelCS);
101  procMan->AddDiscreteProcess(nProcInel);
102 
103  // Capture process
104  G4HadronCaptureProcess* nProcCap = new G4HadronCaptureProcess("nCapture");
105  nProcCap->RegisterMe(capModel);
106  nProcCap->AddDataSet(capCS);
107  procMan->AddDiscreteProcess(nProcCap);
108 
109  // Neutron cut (kill neutrons that live too long or have too little energy)
110  G4NeutronKiller* nKiller = new G4NeutronKiller();
111  nKiller->SetKinEnergyLimit(0.0 * MeV);
112  nKiller->SetTimeLimit(10.*microsecond);
113  procMan->AddDiscreteProcess(nKiller);
114 
115 }
116 
117 
Belle2::Simulation::NeutronPhysics::ConstructProcess
virtual void ConstructProcess() override
Build all particle types used in physics list (empty in this class)
Definition: NeutronPhysics.cc:57
Belle2::Simulation::NeutronPhysics::m_preCompoundModel
G4GeneratorPrecompoundInterface * m_preCompoundModel
Precompound model to deexcite post-collision nucleus.
Definition: NeutronPhysics.h:58
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::Simulation::NeutronPhysics::ConstructParticle
virtual void ConstructParticle() override
Build processes, models, cross sections used in physics list.
Definition: NeutronPhysics.cc:53
Belle2::Simulation::NeutronPhysics::m_fragModel
G4LundStringFragmentation * m_fragModel
Lund string fragmentation model.
Definition: NeutronPhysics.h:55
Belle2::Simulation::NeutronPhysics::m_stringDecay
G4ExcitedStringDecay * m_stringDecay
Model to decay strings into hadrons.
Definition: NeutronPhysics.h:52
Belle2::Simulation::NeutronPhysics::m_stringModel
G4FTFModel * m_stringModel
Fritiof string model.
Definition: NeutronPhysics.h:49
Belle2::Simulation::NeutronPhysics::m_ftfp
G4TheoFSGenerator * m_ftfp
Final state generator for QCD string models.
Definition: NeutronPhysics.h:46