Neutron-Antineutron Oscillation Analysis

Generate Signal Event

GENIE is used to generate neutron-antineutron oscillation events. The corresponding module is located at EventGenerator/GENIE/ Multiple functions in the module are taken from GENIE source code src/Apps/gNNBarOscEvGen.cxx, so the credits should go to the authors there.

Check Out a Test Release

newrel -t development nosc
cd nosc
srt_setup -a
addpkg_svn -h EventGenerator
novasoft_build -t

After editing the code in the case of doing development, to compile, do
gmake EventGenerator.all

Generate a Clean Signal Sample

nova -n 1 -c prodgenie_nosc.fcl

Vertex positions can be specified in GENIENeutronOscGen.fcl.

Generate a Sample Overlaid with Cosmic Rays

nova -n 1 -c prodgenie_nosc_cosmic.fcl

setup_samweb2xrootd is necessary for this to work.

The minimum bias cosmic data samples can be specified in prodgenie_nosc_cosmic.fcl:
physics.filters.singlemixer.fileNames: ["..."]

Event Display

nova -c evd.fcl genie_noscgen.root
file names may differ.

Generate Atmospheric Neutrino Background

GENIE (version: ) and the BGLRS's atmospheric neutrino fluxes are used to generate the atmospheric neutrino events. The flux files can be retrieved at The module used to generate the event is, more info can be found at, credit goes to the authors of the module.

GENIEHelper is used to config the GENIE generator. See the fcl parameter list at for more information.

Run simulation interactively on GPVMs.

Adding the following lines to the GENIEGen.fcl file. Explanation of the parameters can be found in the section above.

#---------------------------------------------- Atmospheric Neutrino Generation -------------------------------

#BGLRS atmospheric neutrino flux calculated using ICRC01 primary flux (no rock interaction)
genie_atmnu_bglrs_icrc01_norock: @local::standard_genie
genie_atmnu_bglrs_icrc01_norock.PassEmptySpills: false
genie_atmnu_bglrs_icrc01_norock.FluxType: atmo_BGLRS
genie_atmnu_bglrs_icrc01_norock.FluxFiles: [ "Bartol_ICR01/zDependence/SolMax/*_nue",
"Bartol_ICR01/zDependence/SolMax/*_nbm" ]
genie_atmnu_bglrs_icrc01_norock.FluxSearchPaths: "${SRT_PRIVATE_CONTEXT}/EventGenerator/AtmFluxFiles/"
genie_atmnu_bglrs_icrc01_norock.FluxCopyMethod: "IFDH"
genie_atmnu_bglrs_icrc01_norock.FluxCleanup: ""
genie_atmnu_bglrs_icrc01_norock.EventsPerSpill: 1
genie_atmnu_bglrs_icrc01_norock.BeamName: atmnu
genie_atmnu_bglrs_icrc01_norock.TopVolume: vDetEnclosure
genie_atmnu_bglrs_icrc01_norock.TotalPOTLimit: 0.0
genie_atmnu_bglrs_icrc01_norock.GenFlavors: [12,14,-12,-14]
genie_atmnu_bglrs_icrc01_norock.DetectorLocation: "NOvA-FD" # taken from .xml
genie_atmnu_bglrs_icrc01_norock.GeomScan: "default"
genie_atmnu_bglrs_icrc01_norock.DebugFlags: 1
genie_atmnu_bglrs_icrc01_norock.ProductionMode: "false"
genie_atmnu_bglrs_icrc01_norock.AtmoEmin: 0.1 # in GeV
genie_atmnu_bglrs_icrc01_norock.AtmoEmax: 10
genie_atmnu_bglrs_icrc01_norock.Rl: 64 #FD is 15x15x60 so diagonal is 64
genie_atmnu_bglrs_icrc01_norock.Rt: 64
#These 2 lines are for matching the coordinate systems used by the flux files and NOvA. Right now, for testing purpose, I'm not gonna change it.
#See Slack message from Robert on Feb 26th, 2019.


Then, make a copy of the original prodgenie.fcl file and name the new file prodgenie_atmnu.fcl. In the new file, there are few changes should be made:
1. Name of process:
process_name: Genie
process_name: GenieAtmNu
2. Geometry used:
services.Geometry: @local::nd_geo
services.Geometry: @local::fd_geo
3. Generator producer:
generator: @local::genie_simpleflux_nd
generator: @local::genie_atmnu_bglrs_icrc01_norock
4. Detector.ForceGain:
physics.producers.daq.nd.ForceGain: 100
physics.producers.daq.fd.ForceGain: 140

Output file names can be changed as well if users want to. Example of the fcl files can be seen at:
GENIEGen.fcl: /nova/app/users/dphan/WORKSPACE/NNbarOffline/atmnugen/EventGenerator/GENIE/GENIEGen.fcl
prodgenie_atmnu.fcl: /nova/app/users/dphan/WORKSPACE/NNbarOffline/atmnugen/EventGenerator/GENIE/prodgenie_atmnu.fcl

NOTICE: These fcl files haven't accounted for the difference in coordinate systems used by NOvA and the BGLRS group (look at the last 2 lines of the fcl configuration for atmospheric neutrino generator in GENIEGen.fcl). See the examples in the wiki page:, look for keyworks "FluxRotCfg" and "FluxRotValues".

Simulation sample

There are a small sample of 20000 events with four neutrino flavors nue, anti-nue, numu, anti-numu available at: /pnfs/nova/persistent/users/dphan/NNbar/AtmNuSimulationSample/genie_atmnu_gen.root.20000

Analyze Event

One should write an analyzer to do this. This is an example module for analyzing the neutron-antineutron oscillation events:

Data Driven Trigger

Trigger related information can be found at:


  1. When compiling, one will see a number of warnings of ’hides overloaded virtual function [-Woverloaded-virtual]’. They are harmless, and it has been fixed in more recent releases of GENIE. It will disappear when NOvA progresses to use more recent versions of GENIE in the future.
  2. At the end of the job, there is a splash of information about GENIE. This is redundant but harmless. I am not sure how to prevent it from showing.

Relevant Talks