Message: How to add thermal neutron scattering to a production physics list Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Idea How to add thermal neutron scattering to a production physics list 

Forum: Hadronic Processes
Date: 22 May, 2015
From: Michael H. Kelsey <Michael H. Kelsey>

As several users have discovered, most recently Karen Pease (http://hypernews.slac.stanford.edu/HyperNews/geant4/get/particles/653/1/1/1/1.html), support for thermal neutron scattering (available via the NeutronHP package) is not provided by any of the Geant4 reference physics lists.

The Geant4 tutorials provide instructions for activating thermal neutron scattering (e.g., https://indico.cern.ch/event/245281/contribution/1/material/slides/0.pdf, pp 6-7), but those instructions presume that the user is creating their own physics list from scratch.

Here is one method for adding thermal neutron support to an existing production physics list. It requires that you have hardcoded the physics list into your application -- it will not work if you use G4PhysicsListFactory to get a list by string or envvar.

First, in your application source code, create a local PhysicsList class, which inherits from the reference list of your choice (I will use FTFP_BERT_HP here):

#include "FTFP_BERT_HP.hh"

class MyPhysicsList : public FTFP_BERT_HP {
public:
  MyPhysicsList(G4int verbose=1) : FTFP_BERT_HP(verbose);
  virtual ~MyPhysicsList() {;}
  virtual void ConstructProcess();
};

Next, implement ConstructProcess() locally, to first do all of the "official" physics. Then, you'll add the thermal model to the neutron elastic scattering process.

#include "G4HadronicInteractionRegistry.hh"
#include "G4HadronicProcess.hh"
#include "G4HadronicProcessStore.hh"
#include "G4HadronicProcessType.hh"
#include "G4Neutron.hh"
#include "G4NeutronHPThermalScattering.hh"
#include "G4NeutronHPThermalScatteringData.hh"
#include <assert.h>

void MyPhysicsList::ConstructProcess() {
  G4VModularPhysicsList::ConstructProcess();    // Construct reference physics first

  // Get the elastic scattering process for neutrons
  G4ParticleDefinition* nPD = G4Neutron::Definition();
  G4HadronicProcess* nElastic = G4HadronicProcessStore::Instance()->FindProcess(nPD, fHadronElastic);
  assert(nElastic != 0);

  // Get the "regular" HP elastic scattering model, exclude thermal scattering region
  G4HadronicInteraction* nElasticHP = G4HadronicInteractionRegistry::Instance()->FindModel("NeutronHPElastic");
  assert(nElasticHP != 0);
  nElasticHP->SetMinEnergy(4.*eV);

  // Attach HP thermal scattering model and data files to process
  nElastic->RegisterMe(new G4NeutronHPThermalScattering);
  nElastic->AddDataSet(new G4NeutronHPThermalScatteringData);
}

Finally, for the places where you want thermal neutron scattering, make sure you define elements with the magic "TS_" prefix, as described on page 5 of the slides, and put those into your materials.

  -- Michael Kelsey

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

1 Question: Re: How to add thermal neutron scattering to a production physics list   (Karen Pease - 22 May, 2015)
1 Ok: Re: How to add thermal neutron scattering to a production physics list   (Michael H. Kelsey - 22 May, 2015)
1 Sad: Re: How to add thermal neutron scattering to a production physics list   (Karen Pease - 23 May, 2015)
2 None: Re: How to add thermal neutron scattering to a production physics list   (Karen Pease - 23 May, 2015)
2 More: Re: How to add new thermal neutron scattering data files?   (Michael H. Kelsey - 22 May, 2015)
1 None: Re: How to add new thermal neutron scattering data files?   (Koi, Tatsumi - 26 May, 2015)
2 None: Re: How to add thermal neutron scattering to a production physics list   (michel maire - 30 May, 2015)
1 Question: Re: How to add thermal neutron scattering to a production physics list   (Mark Looper - 26 May, 2016)
(_ None: Re: How to add thermal neutron scattering to a production physics list   (Koi, Tatsumi - 26 May, 2016)
(_ None: Re: How to add thermal neutron scattering to a production physics list   (michel maire - 27 May, 2016)
3 None: Re: How to add thermal neutron scattering to a production physics list   (Sanchit Sharma - Apr 09, 14:21)
1 None: Re: How to add thermal neutron scattering to a production physics list   (michel maire - Apr 10, 14:21)
(_ Question: Re: How to add thermal neutron scattering to a production physics list   (Sanchit Sharma - Apr 12, 17:41)
 Add Message Add Message
to: "How to add thermal neutron scattering to a production physics list"

 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 ]