Studying Physics Sensitivity of Different Beam Options¶
People using the beam simulation frequently want to study physics sensitivities of various beam options. Below is some documentation on how to do this.
Using the MGT setup developed by the LBLPWG¶
Jeremy Hewes created code for running the CDR MGT/GLoBES setup given input neutrino and antineutrino GLoBES files (which are made automatically assuming you use the scripts in ProductionScripts folder of g4lbnf to generate fluxes). His work is documented in this talk: https://indico.fnal.gov/conferenceOtherViews.py?view=standard&confId=11392. Below are instructions for using a version of the code that was installed by Laura Fields and modified to accomodate beam designs with varying proton momentum (and thus varying expected POT per year) and to deal with the /lbne/ -> /dune/ naming transition. Futher documention of mgt (including syntax for input parameters) is available here: https://cdcvs.fnal.gov/redmine/projects/lbne-lblpwgtools/wiki/MGT_Documentation.
Running MGT on the beam configurations you want to consider¶
- Generate fluxes for neutrino mode and antineutrino mode configurations for all of the beams you want study using the instructions in the "Generating and using large flux samples at Fermilab" section of the g4lbnf readme
- Make sure you know the proton momentum used to generate each beam you want to study. This can be found in the g4lbnf macro you used to generate the flux, in the line that begins "/LBNE/primary/protonMomentum". If there is no such line, the proton momentum was 120 GeV
- Check out the HEAD of g4lbnf and/or do a 'git pull' from an already checked out copy of g4lbnf. You should see a BeamSimStudies/Sensitivities folder.
- Setup dependencies needed for mgt:
- Run "RunRunSensitivity.py" for each of the beams you want to consider, passing in the name of the macro, the g4lbnf version that was used to generate the flux, the proton momentum, and the userid of the person who generated the flux
python RunRunSensitivity.py Nominal v3r4p2 120 ljf26 python RunRunSensitivity.py CP_run5_9116_80GeV v3r4p2 80 ljf26 python RunRunSensitivity.py CP_run15_12388 v3r4p2 62.4 ljf26 python RunRunSensitivity.py CP_run17_6432 v3r4p2 111.4 ljf26 python RunRunSensitivity.py CP_run18_3849 v3r4p2 108.8 ljf26
Note that RunRunSensitivity.py is a very short python script that composes the file paths created by ProductionsScripts, and then passes them to Jeremy's RunSenstivity.sh. If you didn't use ProductionScripts, you can pass your flux files directly to RunSensitivity.sh (see RunRunSensitivity.py for an example of how to do this). RunRunSensitivity.py just computes CP sensitivity vs delta CP, but can be modified to do any of the other studies Jeremy's code does (e.g. CP sensitivity vs exposure).
- The above should create text files in your /dune/data/users/<you>/Sensitivities directory containing the output of the sensitivity calculation. See plotSensitivity.py for an example of how to plot them