INCL logo

INCL
Geant4 physics lists


Using INCL++ in Geant4

The INCL++ model is distributed with the Geant4 toolkit for particle transport since v9.5. We always recommend to use the latest version of Geant4, which can be downloaded from the Geant4 web site. See also the page about INCL++ in the Geant4 process/model catalog.

There are dedicated (experimental) physics lists that use INCL++ in the intermediate-energy range. These are:

  • QGSP_INCLXX (since v9.5)
  • QGSP_INCLXX_HP (since v10.0)
  • FTFP_INCLXX (since v10.0)
  • FTFP_INCLXX_HP (since v10.0)
The *_HP variants use the NeutronHP model at low energy to simulate neutron elastic and inelastic scattering by means of evaluated data libraries. The QGSP_* and FTFP_* variants respectively use the Quark-Gluon String model (QGS) and the Fritiof model (FTF) at high energy. The Precompound model is used for nucleon-induced reactions below 1-2 MeV; the Binary-Cascade model is used for reactions between heavy nuclei. Bertini is used for reactions induced by kaons, which cannot treated by INCL++ at the moment. Since v5.2, INCL++ can handle nucleon- and pion-induced reactions up to 15-20 GeV incident energy.

A map of models (accurate as of Geant4 v10.1β) is shown below.

Map of models for the INCLXX-based physics lists in Geant4 v10.1β.

Until Geant4 v10.0 (included), INCL++'s upper limit of validity for the incident energy was about 3 GeV. You can look at the map of models for the INCLXX-based physics lists in Geant4 v10.0 here.

Using ABLA V3 in Geant4

Since Geant4 v10.1β, it is possible to couple an old version of the ABLA V3 de-excitation model to INCL++. The recommended technique is to add a user run action to your application and adding the following code snippet to the BeginOfRunAction() method:

#include "G4HadronicInteraction.hh"
#include "G4HadronicInteractionRegistry.hh"
#include "G4INCLXXInterface.hh"
#include "G4INCLXXInterfaceStore.hh"
#include "G4AblaInterface.hh"
#include <vector>

void MyRunAction::BeginOfRunAction(const G4Run*)
{
  // Get hold of pointers to the INCL++ model interfaces
  std::vector<G4HadronicInteraction *> interactions = G4HadronicInteractionRegistry::Instance()
    ->FindAllModels(G4INCLXXInterfaceStore::GetInstance()->getINCLXXVersionName());
  for(std::vector<G4HadronicInteraction *>::const_iterator iInter=interactions.begin(), e=interactions.end();
      iInter!=e; ++iInter) {
    G4INCLXXInterface *theINCLInterface = static_cast<G4INCLXXInterface*>(*iInter);
    if(theINCLInterface) {
      // Instantiate the ABLA model
      G4HadronicInteraction *interaction = G4HadronicInteractionRegistry::Instance()->FindModel("ABLA");
      G4AblaInterface *theAblaInterface = static_cast<G4AblaInterface*>(interaction);
      if(!theAblaInterface)
        theAblaInterface = new G4AblaInterface;
      // Couple INCL++ to ABLA
      G4cout << "Coupling INCLXX to ABLA" << G4endl;
      theINCLInterface->SetDeExcitation(theAblaInterface);
    }
  }
}

The coupling is technically possible with Geant4 v10.0, too, but it is necessary to modify and recompile the Geant4 code. Additional details about ABLA V3 are available in the Geant4 Application Developer Guide and Physics Reference Manual.

Irfu logo ULg logo ANDES logo ENSAR logo

last updated on 2014-07-07 14:17:58+02:00