Message: Energy range settings for different models Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Energy range settings for different models 

Forum: Physics List
Date: 20 Jul, 2005
From: Michael R. Moser <Michael R. Moser>

Up to geant4.7.0 we used our own model for elastic neutron scattering on hydrogen and carbon nuclei between 20 and 150 MeV. The definition in the physics list looks as follows:

=================================================================================================
  G4HadronElasticProcess *theNeutronElasticProcess3 = new G4HadronElasticProcess("nElasticHP_ENDF");
  G4NeutronHPElasticData *myDataSet1 = new G4NeutronHPElasticData ();
  UBeENDFElasticData *myDataSet2 = new UBeENDFElasticData ();
  theNeutronElasticProcess3->AddDataSet (myDataSet1);
  theNeutronElasticProcess3->AddDataSet (myDataSet2);

  G4NeutronHPElastic *theElasticNeutronModel31 = new G4NeutronHPElastic;
  theElasticNeutronModel31->SetMinEnergy ( 0. * MeV);
  theElasticNeutronModel31->SetMaxEnergy (20. * MeV);

  UBeStopParticleProcess *theStopParticleModel3 = new UBeStopParticleProcess();
  theStopParticleModel3->SetMinEnergy (0. * MeV);
  theStopParticleModel3->SetMaxEnergy (0. * MeV);

  UBeENDFElastic *theElasticNeutronModel32 = new UBeENDFElastic;
  theElasticNeutronModel32->SetMinEnergy (  0. * MeV);
  theElasticNeutronModel32->SetMaxEnergy (  0. * MeV);
  theElasticNeutronModel32->SetMinEnergy ( 20. * MeV, G4Element::GetElement ("Hydrogen"));
  theElasticNeutronModel32->SetMaxEnergy (150. * MeV, G4Element::GetElement ("Hydrogen"));
  theElasticNeutronModel32->SetMinEnergy ( 20. * MeV, G4Material::GetMaterial ("Hydrogen"));
  theElasticNeutronModel32->SetMaxEnergy (150. * MeV, G4Material::GetMaterial ("Hydrogen"));
  theElasticNeutronModel32->SetMinEnergy ( 20. * MeV, G4Element::GetElement ("Carbon"));
  theElasticNeutronModel32->SetMaxEnergy (150. * MeV, G4Element::GetElement ("Carbon"));
  theElasticNeutronModel32->SetMinEnergy ( 20. * MeV, G4Material::GetMaterial ("Carbon"));
  theElasticNeutronModel32->SetMaxEnergy (150. * MeV, G4Material::GetMaterial ("Carbon"));

  G4LElastic *theElasticNeutronModel33 = new G4LElastic;
  theElasticNeutronModel33->SetMinEnergy ( 20. * MeV);
  theElasticNeutronModel33->SetMaxEnergy ( 20. * GeV);
  theElasticNeutronModel33->SetMaxEnergy (  0. * MeV, G4Element::GetElement ("Hydrogen"));
  theElasticNeutronModel33->SetMaxEnergy (  0. * MeV, G4Material::GetMaterial ("Hydrogen"));
  theElasticNeutronModel33->SetMinEnergy (150. * MeV, G4Element::GetElement ("Carbon"));
  theElasticNeutronModel33->SetMaxEnergy ( 20. * GeV, G4Element::GetElement ("Carbon"));
  theElasticNeutronModel33->SetMinEnergy (150. * MeV, G4Material::GetMaterial ("Carbon"));
  theElasticNeutronModel33->SetMaxEnergy ( 20. * GeV, G4Material::GetMaterial ("Carbon"));

  G4LEnp *theElasticNeutronModel34 = new G4LEnp;
  theElasticNeutronModel34->SetMinEnergy (  0. * MeV);
  theElasticNeutronModel34->SetMaxEnergy (  0. * GeV);
  theElasticNeutronModel34->SetMinEnergy (150. * MeV, G4Element::GetElement ("Hydrogen"));
  theElasticNeutronModel34->SetMaxEnergy ( 20. * GeV, G4Element::GetElement ("Hydrogen"));
  theElasticNeutronModel34->SetMinEnergy (150. * MeV, G4Material::GetMaterial ("Hydrogen"));
  theElasticNeutronModel34->SetMaxEnergy ( 20. * GeV, G4Material::GetMaterial ("Hydrogen"));

  theNeutronElasticProcess3->RegisterMe (theElasticNeutronModel34);
  theNeutronElasticProcess3->RegisterMe (theElasticNeutronModel33);
  theNeutronElasticProcess3->RegisterMe (theElasticNeutronModel31);
  theNeutronElasticProcess3->RegisterMe (theStopParticleModel3);
  theNeutronElasticProcess3->RegisterMe (theElasticNeutronModel32);

  theParticleIterator->reset();
  while ((*theParticleIterator)()) {
     G4ParticleDefinition* particle = theParticleIterator->value();
     G4ProcessManager* pmanager = particle->GetProcessManager();
     G4String particleName = particle->GetParticleName();
     .
     .
     .      
     if (particleName == "neutron") {
	pmanager->AddDiscreteProcess(theNeutronElasticProcess3);
     }
     .
     .
     .  
  } 
=================================================================================================

In the new version geant4.7.1 we also tried to use this (unchanged) physics list that has been working properly for many recent geant4 versions. However, we found that 'theElasticNeutronModel32' is not only applied to hydrogen and carbon in the energy range 20-150 MeV, but also to other target elements and materials as, e.g., oxygen. Since our model is not built to treat other targets than hydrogen and carbon, the code enters a infinite loop.

Does anybody have an idea how to change the above to make it work again? We also tried to change the minimum and maximum energies together with the target type, but the same error occured all the time. Is there a new/other way to define the boundaries?

Thanks a lot!

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

1 None: Re: Energy range settings for different models   (Dennis H. Wright - 21 Jul, 2005)
3 None: Re: Energy range settings for different models   (Wellisch, J.P. - 11 Aug, 2005)
1 None: Re: Energy range settings for different models   (Wellisch, J.P. - 16 Aug, 2005)
 Add Message Add Message
to: "Energy range settings for different models"

 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 ]