• Enrico Bothmann's avatar
    Rewrite settings input using YAML · eb96f45c
    Enrico Bothmann authored
    This commit closes #10.
    
    - Replace custom configuration parsing and format with a YAML-based
      solution
    - Improve implementation of settings handling to enable features such
      as:
      - Generally only specify defaults once in the code, not scattered
        throughout with possibly different values
      - Print comprehensive report of values used for each setting at the
        end of a run
      - Warn when a setting is specified that is not used during a run (this
        is foreseen and now possible, but not implemented yet)
    
    NOTE: This is a squashed commit to keep the commit history of master
    simple. The full history of the development branch will be retained as
    10-rewrite-settings-input+commit-history in case it is needed, e.g. to
    find a (small) changeset that introduced a bug using git-bisect.
    
    A good example for new syntax is:
    Examples/V_plus_Jets/LHC_WJets/Sherpa.yaml
    
    The command line can process words using the YAML syntax, but also
    supports the old legacy syntax, at least for scalar settings.
    
    In the code, setting default settings and getting the resolved value
    for a setting can be done e.g. as follows:
    
    ```
    auto hds = Settings::GetMainSettings()["HARD_DECAYS"];
    const auto apply_br
      = hds["Apply_Branching_Ratios"].SetDefault(true).Get<bool>();
    ```
    
    Note also that Sherpa can now process several configuration files:
    `Sherpa "RUNDATA: [1.yaml, 2.yaml, ...]"`, with settings in files to the
    right taking precedence over settings in files to the left. This can be
    useful for specifying base set-ups and then deriving specialisations.
    
    A more detailed discussion of the new settings architecture is given
    in
    https://gitlab.com/sherpa-team/sherpa/wikis/The-new-Settings-implementation
    (accessing this link might require developer access to the repository).
    
    Lastly, note that physics results are guaranteed to stay the same after
    this commit. If you find that to be not true, please contact me. When
    soft physics is used, numerics sometimes causes the statistics not to be
    the same after this commit. However, I've got some patches to mitigate
    this to some degree. So in any case, contact me if you find differences
    between results generated with this commit and the preceding one.
    eb96f45c
Name
Last commit
Last update
AHADIC++ Loading commit data...
AMEGIC++ Loading commit data...
AMISIC++ Loading commit data...
ATOOLS Loading commit data...
AddOns Loading commit data...
BEAM Loading commit data...
COMIX Loading commit data...
CSSHOWER++ Loading commit data...
DIM Loading commit data...
DIRE Loading commit data...
EXTAMP Loading commit data...
EXTRA_XS Loading commit data...
Examples Loading commit data...
HADRONS++ Loading commit data...
MCATNLO Loading commit data...
METOOLS Loading commit data...
MODEL Loading commit data...
Manual Loading commit data...
PDF Loading commit data...
PHASIC++ Loading commit data...
PHOTONS++ Loading commit data...
REMNANTS Loading commit data...
SHERPA Loading commit data...
SHRiMPS Loading commit data...
m4 Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
AUTHORS Loading commit data...
ChangeLog Loading commit data...
GUIDELINES Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README Loading commit data...
configure.ac Loading commit data...
git.make Loading commit data...