Message: confused on the results about neutron yield and spectra produced from reaction (d,n) Not Logged In (login)

None confused on the results about neutron yield and spectra produced from reaction (d,n)  

Forum: Physics List
Date: 11 Aug, 2008
From: Phan Viet Cuong <Phan Viet Cuong>

Hi all, I am trying to simulate the neutron production yield and neutron spectra from the reactions: 9Be(d,n)10B and 12C(d,n)13N. Here is physics processes that I applied for deuteron:

#include "IonPhysics.hh"

#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>

// Elastic scattering, multiple scattering and ionisation

IonPhysics::IonPhysics(const G4String& name)
                 :  G4VPhysicsConstructor(name)
{
}

IonPhysics::~IonPhysics() { }

#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"

#include "G4ProcessManager.hh"

void IonPhysics::ConstructProcess()
{
   G4ProcessManager * pManager = 0;

      // Deuteron
   pManager = G4Deuteron::Deuteron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* thedueElasticProcess
                         = new G4HadronElasticProcess();
   G4LElastic* thedueElasticModel = new G4LElastic();
   thedueElasticProcess->RegisterMe(thedueElasticModel);
   pManager->AddDiscreteProcess(thedueElasticProcess);

   G4VProcess* thedueMultipleScattering = new G4MultipleScattering();
   G4VProcess* thedueIonisation        = new G4hIonisation();
   //
   pManager->AddProcess(thedueIonisation);
   pManager->AddProcess(thedueMultipleScattering);
   //
   // set ordering for AlongStepDoIt
   pManager->SetProcessOrdering(thedueMultipleScattering, idxAlongStep,1);
   pManager->SetProcessOrdering(thedueIonisation,        idxAlongStep,2);
   //
   // set ordering for PostStepDoIt
   pManager->SetProcessOrdering(thedueMultipleScattering, idxPostStep,1);
   pManager->SetProcessOrdering(thedueIonisation,        idxPostStep,2);

} // inelastic processes

#include "PhysListIonBinaryCascade.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"

#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4Alpha.hh"
#include "G4GenericIon.hh"

#include "G4HadronInelasticProcess.hh"
#include "G4HadronElasticProcess.hh"
#include "G4BinaryLightIonReaction.hh"
#include "G4TripathiCrossSection.hh"
#include "G4TripathiLightCrossSection.hh"
#include "G4IonsShenCrossSection.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LElastic.hh"

//EM process

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

PhysListIonBinaryCascade::PhysListIonBinaryCascade(const G4String& name)
   :  G4VPhysicsConstructor(name)
{}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

PhysListIonBinaryCascade::~PhysListIonBinaryCascade() {}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

void PhysListIonBinaryCascade::ConstructProcess()
{ 
  // Binary Cascade
  G4ParticleDefinition* particle = 0;
  G4ProcessManager* pmanager = 0;

 // Cross section data sets

  // TRIPATHI CROSS SECTION
  // Implementation of formulas taken from NASA technical paper 3621 by 
  // Tripathi, et al. Cross-sections for ion ion scattering

  G4TripathiCrossSection * TripathiCrossSection= new G4TripathiCrossSection;

  // IONS SHEN CROSS SECTION
  // Implementation of formulas 
  // Shen et al. Nuc. Phys. A 491 130 (1989) 
  // Total Reaction Cross Section for Heavy-Ion Collisions

  G4IonsShenCrossSection * aShen = new G4IonsShenCrossSection;

  // Intra-nuclear transport: Binary Cascade Model
  // Binary Cascade for deuteron, triton, alpha particle

  G4BinaryLightIonReaction* theIonBC = new G4BinaryLightIonReaction();

  theIonBC->SetMinEnergy(80*MeV);
  theIonBC->SetMaxEnergy(10*GeV);

  // deuteron
  particle = G4Deuteron::Deuteron();
  pmanager = particle->GetProcessManager();

 // Final state production model for deuteron inelastic scattering below 100 MeV: Low Energy Parameterised model

  G4LEDeuteronInelastic* theDIModel = new G4LEDeuteronInelastic;

  // Set the maximum energy for LEP model

  theDIModel->SetMaxEnergy(100*MeV);

 // Activate the Tripathi and Shen Cross Section

  theIPdeuteron.AddDataSet(TripathiCrossSection);
  theIPdeuteron.AddDataSet(aShen);

 // Register the Parameterised Deuteron Inelastic Model and the Ion Binary Cascade Model

  theIPdeuteron.RegisterMe(theDIModel);
  //theIPdeuteron.RegisterMe(theTheoModel);
  theIPdeuteron.RegisterMe(theIonBC);

 // Activate inelastic scattering 

  pmanager->AddDiscreteProcess(&theIPdeuteron);

Here is physics processes for neutron:

#include "HadronPhysics.hh"

#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>   

HadronPhysics::HadronPhysics(const G4String& name)
                   :  G4VPhysicsConstructor(name)
{
}

HadronPhysics::~HadronPhysics() { }

#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"

#include "G4ProcessManager.hh"
#include "G4NeutronInelasticCrossSection.hh"

void HadronPhysics::ConstructProcess()
{
   G4ProcessManager * pManager = 0;

   // neutron Physics
   pManager = G4Neutron::Neutron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* thenElasticProcess 
                         = new G4HadronElasticProcess();
   G4LElastic* thenElasticModel = new G4LElastic();
   thenElasticProcess->RegisterMe(thenElasticModel);
   pManager->AddDiscreteProcess(thenElasticProcess);

   G4NeutronInelasticCrossSection* theNeutronCrossSection
						 = new G4NeutronInelasticCrossSection() ;

   G4NeutronInelasticProcess* theNeutronInelasticProcess 
                         = new G4NeutronInelasticProcess(); 

   G4LENeutronInelastic* theNeutronLEPModel = new G4LENeutronInelastic();
   G4HENeutronInelastic* theNeutronHEPModel = new G4HENeutronInelastic();
   //theNeutronHEPModel->SetMaxEnergy(20.*MeV);
   theNeutronInelasticProcess->AddDataSet(theNeutronCrossSection);

   theNeutronInelasticProcess->RegisterMe(theNeutronLEPModel);
   theNeutronInelasticProcess->RegisterMe(theNeutronHEPModel);
   pManager->AddDiscreteProcess(theNeutronInelasticProcess);

   //neutron + fission 
   G4HadronFissionProcess* thenFission
                         = new G4HadronFissionProcess();
   G4LFission* thenFissionModel = new G4LFission();
   thenFission->RegisterMe(thenFissionModel);
   pManager->AddDiscreteProcess(thenFission);

   //neutron + capture

   G4HadronCaptureProcess* thenCapture
                         = new G4HadronCaptureProcess();
   G4LCapture* thenCaptureModel = new G4LCapture();
   thenCapture->RegisterMe(thenCaptureModel);
   pManager->AddDiscreteProcess(thenCapture);

   // anti-neutron Physics
   pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* theanElasticProcess 
                         = new G4HadronElasticProcess();
   G4LElastic* theanElasticModel = new G4LElastic();
   theanElasticProcess->RegisterMe(theanElasticModel);
   pManager->AddDiscreteProcess(theanElasticProcess);

   G4AntiNeutronInelasticProcess* theAntiNeutronInelasticProcess 
                         = new G4AntiNeutronInelasticProcess(); 

   G4LEAntiNeutronInelastic* theAntiNeutronLEPModel = new G4LEAntiNeutronInelastic();
   G4HEAntiNeutronInelastic* theAntiNeutronHEPModel = new G4HEAntiNeutronInelastic();
   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronLEPModel);
   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronHEPModel);
   pManager->AddDiscreteProcess(theAntiNeutronInelasticProcess);

   G4AntiNeutronAnnihilationAtRest* theAntiNeutronAnnihilation
                            =  new G4AntiNeutronAnnihilationAtRest();
   pManager->AddRestProcess(theAntiNeutronAnnihilation);

   }

However, at low energy ( deuteron which has energy lower than 100 MeV) my program can not reproduce the experimental data about neutron yields and spectra. Speccially, with 160 MeV deuteron i can not see any neutron.

It would be very grateful if you can let me know what is error in my program and suggest me some ideas to solve this problem.

Thank you very much in advance!

Phan Viet Cuong

Inline Depth:
 0 0
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

Question Re: confused on the results about neutron yield and spectra produced from reaction (d,n)   by Phan Viet Cuong <Phan Viet Cuong>,   12 Aug, 2008
Re: None confused on the results about neutron yield and spectra produced from reaction (d,n) (Phan Viet Cuong)
Dear All, I do not know why my question was removed from the forum physicslist so I want to post it again.

Cuong

----------------------------------------------------------------------

Hi all, I am trying to simulate the neutron production yield and neutron spectra from the reactions: 9Be(d,n)10B and 12C(d,n)13N. Here is physics processes that I applied for deuteron:

#include "IonPhysics.hh"

#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>

// Elastic scattering, multiple scattering and ionisation

IonPhysics::IonPhysics(const G4String& name)
                 :  G4VPhysicsConstructor(name)
{
}

IonPhysics::~IonPhysics() { }

#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"

#include "G4ProcessManager.hh"

void IonPhysics::ConstructProcess()
{
   G4ProcessManager * pManager = 0;

      // Deuteron
   pManager = G4Deuteron::Deuteron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* thedueElasticProcess
                         = new G4HadronElasticProcess();
   G4LElastic* thedueElasticModel = new G4LElastic();
   thedueElasticProcess->RegisterMe(thedueElasticModel);
   pManager->AddDiscreteProcess(thedueElasticProcess);

   G4VProcess* thedueMultipleScattering = new G4MultipleScattering();
   G4VProcess* thedueIonisation        = new G4hIonisation();
   //
   pManager->AddProcess(thedueIonisation);
   pManager->AddProcess(thedueMultipleScattering);
   //
   // set ordering for AlongStepDoIt
   pManager->SetProcessOrdering(thedueMultipleScattering, idxAlongStep,1);
   pManager->SetProcessOrdering(thedueIonisation,        idxAlongStep,2);
   //
   // set ordering for PostStepDoIt
   pManager->SetProcessOrdering(thedueMultipleScattering, idxPostStep,1);
   pManager->SetProcessOrdering(thedueIonisation,        idxPostStep,2);

} // inelastic processes

#include "PhysListIonBinaryCascade.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"

#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4Alpha.hh"
#include "G4GenericIon.hh"

#include "G4HadronInelasticProcess.hh"
#include "G4HadronElasticProcess.hh"
#include "G4BinaryLightIonReaction.hh"
#include "G4TripathiCrossSection.hh"
#include "G4TripathiLightCrossSection.hh"
#include "G4IonsShenCrossSection.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LElastic.hh"

//EM process

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

PhysListIonBinaryCascade::PhysListIonBinaryCascade(const G4String& name)
   :  G4VPhysicsConstructor(name)
{}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

PhysListIonBinaryCascade::~PhysListIonBinaryCascade() {}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

void PhysListIonBinaryCascade::ConstructProcess()
{
  // Binary Cascade
  G4ParticleDefinition* particle = 0;
  G4ProcessManager* pmanager = 0;

// Cross section data sets

  // TRIPATHI CROSS SECTION
  // Implementation of formulas taken from NASA technical paper 3621 by
  // Tripathi, et al. Cross-sections for ion ion scattering

  G4TripathiCrossSection * TripathiCrossSection= new G4TripathiCrossSection;

  // IONS SHEN CROSS SECTION
  // Implementation of formulas
  // Shen et al. Nuc. Phys. A 491 130 (1989)
  // Total Reaction Cross Section for Heavy-Ion Collisions

  G4IonsShenCrossSection * aShen = new G4IonsShenCrossSection;

  // Intra-nuclear transport: Binary Cascade Model
  // Binary Cascade for deuteron, triton, alpha particle

  G4BinaryLightIonReaction* theIonBC = new G4BinaryLightIonReaction();

  theIonBC->SetMinEnergy(80*MeV);
  theIonBC->SetMaxEnergy(10*GeV);

  // deuteron
  particle = G4Deuteron::Deuteron();
  pmanager = particle->GetProcessManager();

// Final state production model for deuteron inelastic scattering below 100 MeV: Low Energy Parameterised model

  G4LEDeuteronInelastic* theDIModel = new G4LEDeuteronInelastic;

  // Set the maximum energy for LEP model

  theDIModel->SetMaxEnergy(100*MeV);

// Activate the Tripathi and Shen Cross Section

  theIPdeuteron.AddDataSet(TripathiCrossSection);
  theIPdeuteron.AddDataSet(aShen);

// Register the Parameterised Deuteron Inelastic Model and the Ion Binary Cascade Model

  theIPdeuteron.RegisterMe(theDIModel);
  //theIPdeuteron.RegisterMe(theTheoModel);
  theIPdeuteron.RegisterMe(theIonBC);

// Activate inelastic scattering

  pmanager->AddDiscreteProcess(&theIPdeuteron);

Here is physics processes for neutron:

#include "HadronPhysics.hh"

#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>   

HadronPhysics::HadronPhysics(const G4String& name)
                   :  G4VPhysicsConstructor(name)
{
}

HadronPhysics::~HadronPhysics() { }

#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"

#include "G4ProcessManager.hh"
#include "G4NeutronInelasticCrossSection.hh"

void HadronPhysics::ConstructProcess()
{
   G4ProcessManager * pManager = 0;

   // neutron Physics
   pManager = G4Neutron::Neutron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* thenElasticProcess
                         = new G4HadronElasticProcess();
   G4LElastic* thenElasticModel = new G4LElastic();
   thenElasticProcess->RegisterMe(thenElasticModel);
   pManager->AddDiscreteProcess(thenElasticProcess);

   G4NeutronInelasticCrossSection* theNeutronCrossSection
                                                 = new G4NeutronInelasticCrossSection() ;

   G4NeutronInelasticProcess* theNeutronInelasticProcess
                         = new G4NeutronInelasticProcess();

   G4LENeutronInelastic* theNeutronLEPModel = new G4LENeutronInelastic();
   G4HENeutronInelastic* theNeutronHEPModel = new G4HENeutronInelastic();
   //theNeutronHEPModel->SetMaxEnergy(20.*MeV);
   theNeutronInelasticProcess->AddDataSet(theNeutronCrossSection);

   theNeutronInelasticProcess->RegisterMe(theNeutronLEPModel);
   theNeutronInelasticProcess->RegisterMe(theNeutronHEPModel);
   pManager->AddDiscreteProcess(theNeutronInelasticProcess);

   //neutron + fission
   G4HadronFissionProcess* thenFission
                         = new G4HadronFissionProcess();
   G4LFission* thenFissionModel = new G4LFission();
   thenFission->RegisterMe(thenFissionModel);
   pManager->AddDiscreteProcess(thenFission);

   //neutron + capture

   G4HadronCaptureProcess* thenCapture
                         = new G4HadronCaptureProcess();
   G4LCapture* thenCaptureModel = new G4LCapture();
   thenCapture->RegisterMe(thenCaptureModel);
   pManager->AddDiscreteProcess(thenCapture);

   // anti-neutron Physics
   pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();

   // add process
   G4HadronElasticProcess* theanElasticProcess
                         = new G4HadronElasticProcess();
   G4LElastic* theanElasticModel = new G4LElastic();
   theanElasticProcess->RegisterMe(theanElasticModel);
   pManager->AddDiscreteProcess(theanElasticProcess);

   G4AntiNeutronInelasticProcess* theAntiNeutronInelasticProcess
                         = new G4AntiNeutronInelasticProcess();

   G4LEAntiNeutronInelastic* theAntiNeutronLEPModel = new G4LEAntiNeutronInelastic();
   G4HEAntiNeutronInelastic* theAntiNeutronHEPModel = new G4HEAntiNeutronInelastic();
   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronLEPModel);
   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronHEPModel);
   pManager->AddDiscreteProcess(theAntiNeutronInelasticProcess);

   G4AntiNeutronAnnihilationAtRest* theAntiNeutronAnnihilation
                            =  new G4AntiNeutronAnnihilationAtRest();
   pManager->AddRestProcess(theAntiNeutronAnnihilation);

   }

However, at low energy ( deuteron which has energy lower than 100 MeV) my program can not reproduce the experimental data about neutron yields and spectra. Speccially, with 160 MeV deuteron i can not see any neutron.

It would be very grateful if you can let me know what is error in my program and suggest me some ideas to solve this problem.

Thank you very much in advance!

Phan Viet Cuong

1 Idea: Re: confused on the results about neutron yield and spectra produced from reaction (d,n)   (Vladimir Ivanchenko - 13 Aug, 2008)
(_ Feedback: Re: confused on the results about neutron yield and spectra produced from reaction (d,n)   (Phan Viet Cuong - 13 Aug, 2008)
 Add Message Add Message
to: "confused on the results about neutron yield and spectra produced from reaction (d,n) "

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]