#include "PhysicsList.hh" #include "G4HadronElasticPhysics.hh" #include "G4HadronPhysicsQGSP_BIC_AllHP.hh" #include "G4DecayPhysics.hh" #include "G4RadioactiveDecayPhysics.hh" #include "G4EmStandardPhysics_option4.hh" #include "G4NeutronTrackingCut.hh" #include "G4PhysListFactory.hh" #include "G4VModularPhysicsList.hh" // Include the necessary headers for G4NeutronCaptureProcess #include "G4NeutronCaptureProcess.hh" #include "G4ProcessManager.hh" #include "G4ParticleDefinition.hh" #include "G4CascadeInterface.hh" #include "G4Track.hh" #include "G4NeutronHPCapture.hh" #include "G4NeutronHPCaptureData.hh" #include "G4Neutron.hh" #include "CLHEP/Units/SystemOfUnits.h" // Include CLHEP units PhysicsList::PhysicsList() : G4VModularPhysicsList() { // Set verbose level if needed G4int verb = 0; SetVerboseLevel(verb); // Register essential physics processes RegisterPhysics(new G4HadronElasticPhysics(verb)); RegisterPhysics(new G4HadronPhysicsQGSP_BIC_AllHP(verb)); RegisterPhysics(new G4DecayPhysics(verb)); RegisterPhysics(new G4RadioactiveDecayPhysics(verb)); RegisterPhysics(new G4EmStandardPhysics_option4(verb)); RegisterPhysics(new G4NeutronTrackingCut(verb)); // Register neutron capture process G4NeutronCaptureProcess* captureProcess = new G4NeutronCaptureProcess(); G4NeutronHPCaptureData* captureData = new G4NeutronHPCaptureData; captureProcess->AddDataSet(captureData); G4NeutronHPCapture* captureModel = new G4NeutronHPCapture; captureProcess->RegisterMe(captureModel); G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager(); pmanager->AddDiscreteProcess(captureProcess); } PhysicsList::~PhysicsList() {}