This patch fixes compilation errors that arise with recent ROOT versions (e.g., 6.34.02),
which require a ROOT::Minuit2::MnStrategy object to be passed when initializing the
ROOT::Minuit2::MnX (X = Migrad, Simplex, Minimize) minimizers (i.e., instead of the integer
representing the "strategy").
This patch adds routines for writing a comprehensive set of fit results (i.e., parameter values, parabolic errors, asymmetric errors, covariances, correlation coefficients, etc.) for an individual `.msr` file to an easy-to-read/parse `.yaml` file.
The main motivation for the code addition is to provide users with easy access to the fit's covariance matrix without the need for "extra" manual effort (e.g., parsing the contents of `MINUIT2.OUTPUT` or `MINUIT2.root`). The other fit quantities are also included for completeness.
Reading/accessing the output is trivial using, for example, the PyYAML Python library (https://github.com/yaml/pyyaml):
```python
import yaml
with open("2125_tf_histo.yaml", "r") as fh:
results = yaml.load(fh, Loader=yaml.SafeLoader)
cov = results["covariance"]["Field_1"]["Sigma_1"]
```
Note: the naming conventions chosen for the blocks in the `.yaml` output closely follow those used by the iminuit Python library (https://github.com/scikit-hep/iminuit).
This patch provides a memory-safe alternative to the changes introduced in commit 418adfde670b8d911a6a313e11a2ee4fc98feeee, which causes a segfault when the "batch mode" flag is required (i.e., for ascii/graphic export).
Note: the program name (i.e., argv[0]) has been added the list arguments passed to ROOT's TApplication. This ensures that the TApplication name matches that of the program (see 542b98b2cc/core/base/src/TApplication.cxx (L179-L180)).