// //////////////////////////////////////////////////////////////////////////// // // // Title: Neutron physics for Simple and Fast Physics List // // Date: 20 March 2005 // // Author: D.H. Wright (SLAC) // // // // 080430 Modified by T. Koi (SLAC) // // // //////////////////////////////////////////////////////////////////////////// // #include "SFNeutronPhysics.hh" #include "G4ParticleTable.hh" // processes #include "G4ProcessManager.hh" #include "G4HadronElasticProcess.hh" #include "G4NeutronInelasticProcess.hh" #include "G4HadronFissionProcess.hh" #include "G4HadronCaptureProcess.hh" // cross sections // models #include "G4LElastic.hh" #include "G4LENeutronInelastic.hh" #include "G4LFission.hh" #include "G4LCapture.hh" SFNeutronPhysics::SFNeutronPhysics(const G4String& name) :G4VPhysicsConstructor(name) {;} SFNeutronPhysics::~SFNeutronPhysics() {;} void SFNeutronPhysics::ConstructParticle() { // No need to construct anything here as long as // SFHadronPhysics is constructed } void SFNeutronPhysics::ConstructProcess() { G4ProcessManager* pManager = G4Neutron::Neutron()->GetProcessManager(); // Neutron elastic process, models and cross sections G4HadronElasticProcess* elasticProcess = new G4HadronElasticProcess(); G4LElastic* theLElasticModel = new G4LElastic(); elasticProcess->RegisterMe(theLElasticModel); pManager->AddDiscreteProcess(elasticProcess); // Neutron inelastic process, models and cross sections // Use Quark-Gluon String Model between 15 GeV and 100 TeV G4NeutronInelasticProcess* ninelProc = new G4NeutronInelasticProcess(); // Use LEP model between 9.5 and 25 GeV G4LENeutronInelastic* LEPnModel = new G4LENeutronInelastic(); ninelProc->RegisterMe(LEPnModel); // Neutron-induced fission process, models and cross sections G4HadronFissionProcess* neutronFission = new G4HadronFissionProcess(); G4LFission* theLFissionModel = new G4LFission(); theLFissionModel->SetMaxEnergy(20.*TeV); neutronFission->RegisterMe(theLFissionModel); pManager->AddDiscreteProcess(neutronFission); // Neutron capture process, models and cross sections G4HadronCaptureProcess* neutronCapture = new G4HadronCaptureProcess(); G4LCapture* theLCaptureModel = new G4LCapture(); theLCaptureModel->SetMaxEnergy(20.*TeV); neutronCapture->RegisterMe(theLCaptureModel); pManager->AddDiscreteProcess(neutronCapture); }