9 #include "Geant4/G4ParticleDefinition.hh" 10 #include "Geant4/G4ProcessManager.hh" 11 #include "Geant4/G4ProcessTable.hh" 14 #include "Geant4/G4HadronElasticProcess.hh" 15 #include "Geant4/G4ParticleHPElasticData.hh" 16 #include "Geant4/G4ParticleHPThermalScatteringData.hh" 17 #include "Geant4/G4ParticleHPElastic.hh" 18 #include "Geant4/G4ParticleHPThermalScattering.hh" 20 #include "Geant4/G4NeutronInelasticProcess.hh" 21 #include "Geant4/G4ParticleHPInelasticData.hh" 22 #include "Geant4/G4ParticleHPInelastic.hh" 24 #include "Geant4/G4HadronCaptureProcess.hh" 25 #include "Geant4/G4ParticleHPCaptureData.hh" 26 #include "Geant4/G4ParticleHPCapture.hh" 28 #include "Geant4/G4HadronFissionProcess.hh" 29 #include "Geant4/G4ParticleHPFissionData.hh" 30 #include "Geant4/G4ParticleHPFission.hh" 32 #include "Geant4/G4SystemOfUnits.hh" 46 : G4VPhysicsConstructor(name), fThermal(true) {}
52 G4ParticleDefinition* neutron = G4Neutron::Neutron();
53 G4ProcessManager* pManager = neutron->GetProcessManager();
56 G4ProcessTable* processTable = G4ProcessTable::GetProcessTable();
57 G4VProcess* process = 0;
58 process = processTable->FindProcess(
"hadElastic", neutron);
59 if (process) pManager->RemoveProcess(process);
61 process = processTable->FindProcess(
"neutronInelastic", neutron);
62 if (process) pManager->RemoveProcess(process);
64 process = processTable->FindProcess(
"nCapture", neutron);
65 if (process) pManager->RemoveProcess(process);
67 process = processTable->FindProcess(
"nFission", neutron);
68 if (process) pManager->RemoveProcess(process);
72 G4HadronElasticProcess* process1 =
new G4HadronElasticProcess();
73 pManager->AddDiscreteProcess(process1);
76 G4ParticleHPElastic* model1a =
new G4ParticleHPElastic();
77 process1->RegisterMe(model1a);
78 process1->AddDataSet(
new G4ParticleHPElasticData());
82 model1a->SetMinEnergy(4*eV);
83 G4ParticleHPThermalScattering* model1b =
new G4ParticleHPThermalScattering();
84 process1->RegisterMe(model1b);
85 process1->AddDataSet(
new G4ParticleHPThermalScatteringData());
90 G4NeutronInelasticProcess* process2 =
new G4NeutronInelasticProcess();
91 pManager->AddDiscreteProcess(process2);
94 G4ParticleHPInelasticData* dataSet2 =
new G4ParticleHPInelasticData();
95 process2->AddDataSet(dataSet2);
98 G4ParticleHPInelastic* model2 =
new G4ParticleHPInelastic();
99 process2->RegisterMe(model2);
103 G4HadronCaptureProcess* process3 =
new G4HadronCaptureProcess();
104 pManager->AddDiscreteProcess(process3);
107 G4ParticleHPCaptureData* dataSet3 =
new G4ParticleHPCaptureData();
108 process3->AddDataSet(dataSet3);
111 G4ParticleHPCapture* model3 =
new G4ParticleHPCapture();
112 process3->RegisterMe(model3);
116 G4HadronFissionProcess* process4 =
new G4HadronFissionProcess();
117 pManager->AddDiscreteProcess(process4);
120 G4ParticleHPFissionData* dataSet4 =
new G4ParticleHPFissionData();
121 process4->AddDataSet(dataSet4);
124 G4ParticleHPFission* model4 =
new G4ParticleHPFission();
125 process4->RegisterMe(model4);
larg4::CustomPhysicsFactory< NeutronHPphysics > dummy_factory("NeutronHP")
virtual void ConstructProcess()
High precision neutron physics constructor for Geant4.
NeutronHPphysics(const G4String &name="neutron")