nuisance is hosted by Hepforge, IPPP Durham
close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

Changes between Version 17 and Version 18 of HowToNeut


Ignore:
Timestamp:
Jan 8, 2017, 4:10:52 PM (8 years ago)
Author:
Clarence Wret
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowToNeut

    v17 v18  
    77Contact: Clarence Wret (`c.wret14@imperial.ac.uk`)
    88
    9 You can also try: Patrick Stowell (`p.stowell@sheffield.ac.uk`), Callum Wilkinson (`callum.wilkinson@lhep.unibe.ch`), Luke Pickering (`luke.pickering08@imperial.ac.uk`) or Hayato-san (`hayato@icrr.u-tokyo.ac.jp`)
     9You can also try: [mailto:p.stowell@sheffield.ac.uk Patrick Stowell]
     10[mailto:callum.wilkinson@lhep.unibe.ch Callum Wilkinson], [mailto:luke.pickering08@imperial.ac.uk Luke Pickering],
     11or [mailto:hayato@icrr.u-tokyo.ac.jp Hayato-san].
    1012}}}
     13
     14[=#point_compile]
    1115== Compiling NEUT and running neutroot2 ==
    1216
     
    1721NEUT has two dependencies: ROOT and CERNLIB. You need to have `$ROOTSYS`, `$CERN` and `$CERN_LEVEL` environment variables set-up to compile NEUT. These should all be specified by the user in `$NEUT_ROOT/src/neutsmpl/EnvMakeneutsmpl.csh`.
    1822
    19 Compilation is done (somewhat inconveniently) by running `./Makeneutsmpl` in `$NEUT_ROOT/src/neutsmpl/`: this sources the above `EnvMakeneutsmpl.csh`, runs through a host of makefiles, sets up symlinks and builds the project. If you have some time on your hands and want to fix the build process by e.g. CMake, please contact us or Hayato-san.
     23Compilation is done by running `./Makeneutsmpl` in `$NEUT_ROOT/src/neutsmpl/`: this sources the above `EnvMakeneutsmpl.csh`, runs through a host of makefiles, sets up symlinks and builds the project.
    2024
    2125Running the main executable is done by `./neutroot2 NEUT_CARD_FILE.card OUTPUT_ROOT_FILE.root`, where `NEUT_CARD_FILE.card` is a card file compliant with your chosen NEUT version, and `OUTPUT_ROOT_FILE.root` is the ROOT output file where the events are to be saved. This output file contains all the event information and is the input for NUISANCE analyses.
    2226
    2327Examples of NEUT card files can be found in the `$NEUT_ROOT/src/neutsmpl/Cards` directory, or have a look at what team NUISANCE used for 2016 analyses at
    24 [wiki:Winter2016] and https://imperialcollegelondon.app.box.com/files/0/f/13226969736/neut_cards
    25 
     28[wiki:Winter2016] and at our [https://imperialcollegelondon.app.box.com/files/0/f/13226969736/neut_cards box].
    2629
    2730Hot tip: NEUT can be quite verbose and you might want to pipe the output to file (or /dev/null...) rather than dump it to screen. This can actually speed up NEUT considerably.
     
    3235NEUT has a load of defaults set on run-time if the user does not supply them, which means you're running with "reference" NEUT.
    3336
    34 Some things are good to specify though, and here's a list for generating all modes on T2K H2O. We can specify how many events we want, the input flux in TH1D format, the incoming neutrino type, the flux file, number of bound protons and neutrons and free protons, what interaction modes, and so on.
     37Selecting different models is done in the cardfile, and all the inputs that a user can specify is found in `src/neutcore/necard.F`.
    3538
    36 The "C" at the start of each line is just a comment and will not be parsed by NEUT.
     39We can specify how many events we want, the input flux in TH1D format, the incoming neutrino type, the flux file, number of bound protons and neutrons and free protons, what interaction modes, and so on.
    3740
    38 The `EVCT-MPV 3` says the flux is coming from a file, `EVCT-FILENM` specifies the file location of the flux, `EVCT-HISTNM` is the name of the TH1D inside `EVCT-FILENM`, and `EVCT-INMEV` specifies if the input histogram is in MeV or not.
     41Here's a list for generating all modes on T2K H2O. The "C" at the start of each line is just a comment and will not be parsed by NEUT.
     42
    3943
    4044{{{
     
    7074}}}
    7175
     76The `EVCT-MPV 3` says the flux is coming from a file, `EVCT-FILENM` specifies the file location of the flux, `EVCT-HISTNM` is the name of the TH1D inside `EVCT-FILENM`, and `EVCT-INMEV` specifies if the input histogram is in MeV or not.
     77
     78
    7279= NEUT inputs for NUISANCE =
    7380
    74 The output of `neutroot2`, contains a `neutvect` object which has all the information about the event in it. This is read in by NUISANCE to generate predictions. `neutroot2` also saves the predicted flux and event rate predictions automatically into the output file so NUISANCE already has everything it needs.
     81The output of `neutroot2`, contains a ROOT file containing `nevents` `neutvect` objects which has all the information about each event in it. This is read in by NUISANCE to generate predictions. `neutroot2` also saves the predicted flux (`flux_numu`) and event rate (`evtrt_numu`) predictions automatically into the output file so NUISANCE already has everything it needs.
    7582
    7683To read NEUT inputs the NEUT type just needs to be specified in the NUISANCE input card file, e.g. for MiniBooNE CCQE:
     
    7986
    8087= Using NEUT !ReWeight =
     88NUISANCE has full support of running NEUT with its reweighting engine. We can generate error-bands, perform generator tunings to specific data-sets, and so on all through NUISANCE.
     89
     90== Compiling the reweight classes in NEUT ==
     91To compile NEUT's reweighting engine, make sure you've got the main executables compiled (see [#point_compile above]), and
     92
     93{{{
     94$ cd $NEUT_ROOT/src/reweight
     95$ make clean
     96$ make all
     97}}}
     98
     99to compile the reweighting engine.
     100
     101== Running NUISANCE with NEUT !ReWeight ==
     102{{{
     103#!div class="important"
     104We recommend talking to Hayato-san or us (or other NEUT experts) before fitting parameters to make sure that they are not deprecated.
     105}}}
     106
     107The syntax for running NEUT with reweighting in NUISANCE is very similar to how it's done in [wiki:HowToGenie GENIE] and [wiki:HowToNuWro NuWro] too.
     108
     109The user specifies the parameter(s) and the range which should be varied as:
     110
     111`neut_parameter  MaCCQE  0.0  -4.0  4.0  1.0  FREE`
     112
     113where `MaCCQE` is the parameter to be varied, `0.0` is the starting values, `-4.0` is the minimum value, `4.0` is the maximum value, `1.0` is the step-size to take, and `FREE` means the parameter is free to vary in the minimisation.
     114
     115We can also specify `FIX` for the parameters if we want to reweight a systematic parameter to some value other than nominal and keep it there. This is useful for using best-fit parameter constraints from one experiment to predict another experiment (e.g. fit to MiniBooNE and predict MINERvA data, or fit to bubble-chamber data to predict T2K data).
     116
     117The whole list of parameters can be found in `$NEUT_ROOT/src/reweight/NSyst.h` and the `return`ed `std::string`s (e.g. `MaCCQE` and `CA5RES`).
     118
     119The starting, minimum, maximum and step values are all in units of 1-sigma uncertainties. So `-4.0` for the minimum means -4*1-sigma ranges, and `0.0` for the starting value means the nominal value nominal.
     120
     121The hard-coded 1-sigma uncertainty defaults for NEUT can be found in `$NEUT_ROOT/src/reweight/NSystUncertainity.cc` and the `NSystUncertainty::SetDefaults(void)` function. These are in the physical units (e.g. MaCCQE has +/- 0.165 GeV uncertainty in NEUT for 1 sigma)
     122
     123The hard-coded nominal defaults for NEUT can be found in `$NEUT_ROOT/src/reweight/NFortFns.cc`. These are also the physical units of the parameter (e.g. MaCCQE default is 1.21 GeV in NEUT).
     124
     125The actual physical parameter value is found by `par_value = nominal * (1 + par_var * 1-sigma)`.
     126
     127The output of the fit is in the units of `par_var`, not `par_value`. So an output for `MaCCQE` of `0.7` would equate to `1.21*(1+1*0.165) = 1.35` GeV.
    81128
    82129
    83130= Joint Flux Inputs =
    84 `neutroot2` does not yet natively support combined beams or targets so if you want to use the measurement classes that require this (e.g. MINERvA CC0pi nue+nuebar) you will have to setup a JOINT input. See HowToJointInput for more information on how to achieve this.
     131
     132`neutroot2` does not yet natively support combined beams or targets so if you want to use the measurement classes that require this (e.g. MINERvA CC0pi nue+nuebar) you will have to setup a JOINT input. See [wiki:HowToJointInput this] for more information on how to achieve this.
    85133
    86134