- Jan 11, 2023
-
-
Jonas Rembser authored
The different overloads of `RooAbsRealLValue::inRange()` implemented different tolerances when checking if a value `x` falls inside a specific range. Some overloads checked if the interval `[x - 1e-6, x + 1e6]` is overlapping with the range, an other overload checked if the interval `[x - 1e-8*x, x + 1e8*x]` is overlapping. It's better is this is done consistently and predictably so this commit suggests to leave out these epsilon margins that were never documented. For backwards compatibility, one can set a custom relative or absolute epsilon via the `RooNumber` interface.
-
- Jan 10, 2023
-
-
Javier Lopez-Gomez authored
-
- Jan 06, 2023
-
-
Jonas Rembser authored
The `RooGenFunction` was only a lightweight adaptor that exports a RooAbsReal as a `ROOT::Math::IGenFunction`. The same can be easily achieved with the generic `ROOT::Math::Functor1D`, so in the spirit of not duplicating interfaces, the `RooGenFunction` is removed. The same goes for the `RooMultiGenFunction`.
-
- Jan 05, 2023
-
-
Jonas Rembser authored
The git commit log was analyzed to accurately extract the names of all people that contributed to RooFit in the 6.28 development cycle.
-
- Dec 21, 2022
-
-
Axel Naumann authored
-
- Dec 16, 2022
-
-
will-cern authored
Integrating https://gitlab.cern.ch/will/xroofit by Will Buttinger to get the RooBrowser. Hidden behind the ROOT 7 flag until C++17 becomes the default minimum standard.
-
- Dec 15, 2022
-
-
Garima Singh authored
-
Sergey Linev authored
-
- Dec 14, 2022
-
-
Enrico Guiraud authored
-
- Dec 09, 2022
-
-
Javier Lopez-Gomez authored
-
- Dec 02, 2022
-
-
Sergey Linev authored
-
- Nov 11, 2022
-
-
Guilherme Amadio authored
-
- Nov 10, 2022
-
-
Guilherme Amadio authored
Co-authored-by:
Stephan Hageboeck <stephan.hageboeck@cern.ch>
-
- Oct 15, 2022
-
-
Jonas Rembser authored
The `RooSimPdfBuilder` that was deprecated since ROOT 5.20 and got replaced by the `RooSimWSTool` is removed.
-
- Oct 14, 2022
-
-
Sergey Linev authored
-
- Oct 13, 2022
-
-
Jonas Rembser authored
-
- Sep 28, 2022
-
-
David Poulton authored
-
- Aug 24, 2022
-
-
Jonas Rembser authored
-
- Aug 09, 2022
-
-
Jonas Rembser authored
The `RooAbsBinning` interface for bin index lookups was changed to enable vectorized implementations. Instead of having the override `RooAbsBinning::binNumber()`, the binning implementations now have to override the `RooAbsBinning::binNumbers()` function to evaluate the bin indices of multiple values in one function call. The interface of `RooAbsBinning::binNumbers()` is designed to facilitate the accregation of bin indices over multiple dimensions. The former `RooAbsBinning::binNumber()` method is now implement in terms of the vectorized version, such that we automatically get wide test coverage. It was verified that this doesn't come with a performance overhead. This will greatly facilitate the vectorization of the RooHistPdf and RooHistFunc later.
-
- Aug 05, 2022
-
-
Jonas Rembser authored
In the previous commit, the wrong old-style implementation of `RooMultiCategory::evaluate()` was removed. Now, the only place where the `RooMultiCatIter` is still used is the `RooSuperCategory::MakeIterator()` function, which is already deprecated since the RooFit category rewrite for ROOT 6.22 (#5502). It's not worth to carry around the `RooMultiCatIter` just for that, so this commit suggests to remove the deprecated `RooSuperCategory::MakeIterator()` function and get rid of the RooMultiCatIter.
-
- Aug 04, 2022
-
-
Jonas Rembser authored
Copy assignment for RooAbsArgs was implemented in an unexpected and inconsistent way. While one would expect that the copy assignment is copying the object, it said in the documentation of `RooAbsArg::operator=` that it will "assign all boolean and string properties of the original bject. Transient properties and client-server links are not assigned." This contradicted with the implementation, where the server links were actually copied too. Indeed it is questionable that adding also the servers of the `other` RooAbsArg makes sense when the proxies are not changed. There was also a memory leak of the `_ownedComponents`, because `_ownedComponents` got reset to `nullptr` without deleting the pointed-to owned collection. Furthermore, in `RooAbsRealLValue`, the assigment operator was overloaded by a function that only assigns the value of another `RooAbsReal`. With all these inconsistencies, it was deemed safer to disable copy assignment of RooAbsArgs from now on.
-
- Jun 22, 2022
-
-
Olivier Couet authored
* [DF][NFC] Mention change in behavior of Alias in rel notes * [skip-ci] make sur the http doc is read by doxygen. Co-authored-by:
Enrico Guiraud <enrico.guiraud@cern.ch>
-
- Jun 21, 2022
-
-
Jonas Rembser authored
The default minimizer type was specified both in the RooMinimizer itself, as well as in the `fitTo` methods. This is not optimal, as one would have to remember to change it everywhere if the defaults are changed in RooFit. In RooStats, there were a few places where the RooMinimizer defaults were obtained via `ROOT::Math::MinimizerOptions::DefaultMinimizerType` directly. This is now done for all RooFit libraries to be consistent.
-
- Jun 16, 2022
-
-
Jonas Rembser authored
As printed out by the HistFactory in a warning message for a long time already, setting the `Const` attribute to the `<NormFactor>` tag is deprecated and it will be ignored. Instead, add `<ParamSetting Const="True"> myparam </ParamSetting>` to your top-level XML's `<Measurement>` entry. This deprecation implied that the constant parameter flag in the `RooStats:HistFactory::NormFactor` class had no effect as well. To avoid ambiguity in the future, the possibility to set and retrieve this flag with `NormFactor::SetConst()` and `NormFactor::GetConst()` was removed, and the aforementioned deprecated warning is not printed anymore.
-
Jonas Rembser authored
The longtime-deprecated `RooStats::HistFactory::EstimateSummary` class is removed, including the functions that use it. The information that it was meant to store is managed by the `RooStats::HistFactory::Measurement` object since many years.
-
- May 18, 2022
-
-
Jonas Rembser authored
This commit removes some functions from the RooFit data classes: * `RooAbsData::valid()` (virtual method that was overridden in RooDataHist but not RooDataSet) * `RooDataHist::valid(std::size_t i)` and `RooDataHist::valid()` * `RooDataHist::cacheValidEntries()` The `cacheValidEntries` method was originally intended to be used in `RooAbsOptTestStatistic` to mask histogram entries out of the variable range in case of a subrange fit. The reasons why `cacheValidEntries` and the related `valid()` methods should be removed are: 1. It is redundant. In a subrange fit, the `RooAbsOptTestStatistic` is creating a clone of the dataset with the subrange only using `RooAbsData::reduce()`. So all entries are valid by definition. 2. RooDataHist and RooDataSet have inconistent implementations. For the RooDataHist, `valid()` tells you "if bin `i` is considered valid within the current range definitions of all observables" (according to the documentation). For the RooDataSet, it always returns `true`. This inconsistency leaves plenty of room for error, and means that a subrange selection relying on `RooAbsData::vaild()` would be broken anyway because it wouldn't work with RooDataSet. 3. The masking of out-of-range entries unnessecarily increases the `mutable` state of the RooDataHist, which can cause trouble if one updates the observable range but then forgets to call `cacheValidEntries()`. 4. Even the documentation said that `RooDataHist::cacheValidEntries()` was a "shortcut function only for RooAbsOptTestStatistic". Why keep it if `RooAbsOptTestStatistic` doesn't even use it in a meaningful way anymore?
-
- May 17, 2022
-
-
Olivier Couet authored
* Simple TGraph ctor * More doc * add step parameter
-
- May 16, 2022
-
-
Jonas Rembser authored
In a binned likelihood fit, it is possible to skip the PDF normalization when the unnormalized binned PDF can be interpreted directly in terms of event yields. This is now done by default for models HistFactory models, which results in great speedups for binned fits with many channels. Some RooFit users like ATLAS were already using this for a long time, so this feature is battle-tested. To disable this optimization when using the `hist2workspace` executable, add the `-disable_binned_fit_optimization` command line argument. Directly in C++, you can also set the `binnedFitOptimization` to `false` in the HistFactory configuration as follows: ```C++ RooStats::HistFactory::MakeModelAndMeasurementFast(measurement, {.binnedFitOptimization=false}); ``` If your compiler doesn't support aggregate initialization with designators, you need to create and edit the configuration struct explicitely: ```C++ RooStats::HistFactory::HistoToWorkspaceFactoryFast::Configuration hfCfg; hfCfg.binnedFitOptimization = false; RooStats::HistFactory::MakeModelAndMeasurementFast(measurement, hfCfg); ```
-
Olivier Couet authored
-
- May 05, 2022
-
-
Jonas Rembser authored
The `RooAbsMinimizerFcn` and `RooMinimizerFcn` classes are implementation details of the `RooMinimizer`. In one of the recent RooFit meetings, it was decided together with users that this should be no problem, and doing so will greatly increase the developers flexibility in updating the RooMinimizer implementation. This removal is mentioned in the v628 release notes.
-
- May 03, 2022
-
-
Ivan Kabadzhov authored
-
- Apr 19, 2022
-
-
Jonas Rembser authored
The `RooAbsData::createHistogram` has two overloads, one taking RooFit command arguments and one taking integers for bin numbers (the version with command arguments is much more common in RooFit code). They behave inconsistently when using default parameters, e.g. these two calls result in different binnings: ```C++ // 1. overload with int bin numbers: data->createHistogram(obs->GetName()); // 2. overload with command arguments: data->createHistogram(data->GetName(), dataObs); ``` The function with integer bin numbers defaults to computing a binning automatically from the distribution in the dataset. The function with command arguments defaults to the binning stored in the variable, which is much more suitable for RooFit. To avoid confusion in the future, this commit marks the overload with the `int` parameters as deprecated so it is removed in ROOT 6.30. Closes https://github.com/root-project/root/issues/10401.
-
Olivier Couet authored
* New class TGraph2DAsymmErrors * Update release notes * fix typo
-
- Apr 07, 2022
-
-
Jonas Rembser authored
-
- Mar 25, 2022
-
-
Jonas Rembser authored
The original `HistoToWorkspaceFactory` produced models that consisted of a Poisson term for each bin. In this "number counting form" the dataset has one row and the collumns corresponded to the number of events for each bin. This led to severe performance problems in statistical tools that generated pseudo-experiments and evaluated likelihood ratio test statistics. Nowadays, everyone uses the faster `HistoToWorkspaceFactoryFast` implementation that produces a model in the "standard form" where the dataset has one row for each event, and the column corresponds to the value of the observable in the histogram. Therefore, the original `HistoToWorkspaceFactory` is now removed to avoid confusion and maintainance burden.
-
- Mar 09, 2022
-
-
Jonas Rembser authored
-
- Feb 16, 2022
-
-
Jonas Rembser authored
The string-based fit options were deprecated for a long time (and officially in ROOT v6.26), and now is a good time to remove the support for this completely. This will give us more flexibility when refactoring the RooMinimizer to integrate new features like the batch mode, the new likelihood classes, or automatic differentiation.
-
Jonas Rembser authored
The string-based fit options are officially deprecated with this commit, with the intention to finally remove them in the next release (ROOT v6.28). This will give us more flexibility when refactoring the RooMinimizer to integrate new features like the batch mode, the new likelihood classes, or automatic differentiation.
-
Javier Lopez-Gomez authored
-
- Feb 15, 2022
-
-
Jonas Rembser authored
-