Skip Ribbon Commands
Skip to main content

The Use of Geant4 by FNAL Neutrino Experiments

Neutrino experiments in general have two distinct simulation phases.  The first simulates the beamline system that produces the neutrino flux from the primary protons and the second models the resulting energy depositions in the detector after the neutrino has travelled from its orgin to the detector and interacted with a target nucleus or electron.  The realms of each phase can be quite different in the needs for physics modelling;  for the NuMI beam line, 120 GeV protons striking a carbon target produce neutrinos that interact to give MeV to few GeV secondaries in the detector.  No one single model can be expected to give good results over such a wide range.

Geant4 is used to do these two sets of simulations as separate steps for efficiency reasons; many protons must be propagated to generate few neutrinos.  A neutrino beamline uses primary protons to produce secondaries that decay to give neutrinos.  The modelling of the production of secondaries off the target and any beamline elements used to collect and focus those secondaries (e.g. horns) are of principal concern.  Individual random decays of hadrons and muons give neutrinos that might not travel towards a particular detector located some distance from the beamline elements.  For this reason the neutrino "flux" is modelled to the point of the decay, but the decay is reused (reweighted) to give a multiplicity of slightly different "rays" (directions and energies) for the resulting neutrino in the direction of the detector of interest.  This allows the same simulation of the beamline to be used for experiments of varying directions and angular acceptances.

Geant4 isn't used to transport the neutrino from its orgin or to model its interaction with nuclei or electrons in the detector, instead a specialized generator (e.g. GENIE) is used.  Such a generator is expected to perform the interaction with the right kinematics and produce secondaries that exit the nucleus.  Real detectors though can not directly see those particles exiting the nucleus, but only their convolution with the detector response. It is at this point that Geant4 takes up the task by propagating those particles in the detector.  Here Geant4's modelling of energy loss, tertiary production, scattering and decay come into play.

At FNAL there are three beamlines of interest, the Booster line, the NuMI line and the future LBNE line.  Each of these beamlines (will) have multiple detectors which observe interactions from those beams.  Some are different experiments with different physics goals and some are different detectors under the guise of the same experiment (such as MINOS and NOvA with both on-site "near" and distant "far" detectors).

  • Booster
    • MiniBooNE (also sees NuMI beam)
    • microBooNE (also sees NuMI beam)
  • NuMI
    • MINOS 
      • near (also sees Booster beam)
      • far at Soudan, MN
    • Minerva
    • NOvA
      • near detector on surface
      • near detector underground
      • far at Ash River, MN
    • ArgoNeuT (currently removed, but still under analysis)
  • LBNE beam
    • LBNE
      • far at Lead, SD
      • potential near detector on FNAL site

Physics Lists designed for FNAL Nu Expts

The physics of Geant4 is controlled by a "Physics List" which defines the particles, processes and models used.  The standard installation of Geant4 provides a number of predefined reference physics lists.  Most of these have been tuned for experiments with energies and particle compositions different than those of interest to the FNAL neutrino experiments (both the beamline and detector simulations).   


The G4NuPhysicsLists package (available as source from SVN and as a built UPS product) written by the PDS Group facilitates the sharing of physics lists beyond those distributed as part of Geant4.  It provides a mechanism for distributing new physics lists and integrating their use into simulations used by the neutrino experiments.

setup G4NuPhysicsLists v0_0_1 -q debug:e4:nu

Currently the G4NuPhysicsLists package primarily consists of:


The g4nu::G4PhysListFactory class is a drop-in alternative to the code in the standard Geant4 release which allows simulation code to choose a physics list at run time.  The significant difference is that this "factory" is extensible, allowing new physics lists to register themselves with the factory without modification or recompilation of the factory code.  Simply loading a library (this or yet another) with a registration line for each known physics list makes that list available to the factory.


The NuBeam class is an initial offering of a physics list better tuned to the neutrino experiments' NuMI / LBNE beamline needs.

NuBeam NuMI-X Group presentation​​​​

​Beamline Simulation

Conceptually the simulations of the neutrino beamlines are quite similar: primary particles strike a target, produce secondaries that are propagated until they decay to give neutrinos and which are recorded in an output "flux" ntuple.  Historically the codes have required a bit of tailoring, primarily due to the complexity of the geometry and needs for tweaking said geometry to study tolerances and systematic errors induced in the flux, and so aren't a unified code base.  An effort is currently underway to unify their outputs into a common format (dk2nu) and to integrate the G4NuPhysicsLists package describe above.





The dk2nu and associated classes are the desired output of the beamline simulations.   The initial unified ntuple proposal​ (circa May 2012) has since been revised.  [Need here a link to a more finalized version]

​Detector Simulation

Simulation of the details of the individual detectors is purview of the experiments themselves, though the PDS group en​courages and facilitates code sharing where possible.  The use 

G4Base in nusoft ART

The G4Base code is shared code for the "nusoft" ART based frameworks (NOvA and the Liquid Argon experiments).  It currently contains:
  • an earlier replacement version of G4PhysListFactory 
    • (to be phased out in favor of G4NuPhysicsLists)
  • code for extending a physics list with magnetic monopole properties
  • UserAction manager to support configuring classes & methods to be called on
    • BeginOfRunAction + EndOfRunAction
    • BeginOfEventAction + EndOfEventAction
    • PreTrackingAction + PostTrackingAction
    • SteppingAction
    • StackClassifyNewTrack + StackNewStage + StackPrepareNewEvent
  • ​support for geometry construction using GDML files
  • support for translating event records to/from G4 structures