swh:1:snp:af87cd67498ef4fe47c76ed3e7caffe5b61facaf

sort by:
Revision Author Date Message Commit Date
18b4f31 "Update ROOT version files to v6.28/04." 08 May 2023, 02:27:26 UTC
39453d9 [relnotes] Update for 6.28/04. 07 May 2023, 21:58:32 UTC
cfcc10a [cling] DefinitionShadower: fix crash with C++20 concepts In principle, for a TemplateDecl, `isDefinition()` issues a recursive call passing the templated decl as a parameter. A `ConceptDecl` is derived from `TemplateDecl`, however, it should always be considered a definition. Also, update the DeclShadowing test incorporating a C++20 concept. Fixes #12779. 07 May 2023, 20:47:57 UTC
9e11b40 TClassTable: Fix placement of init check. The previous location, inside NormalizeThenLock's constructor, was 'fatal' as it lead to the destructor potentially unlocked a lock it did not lock (i.e. undefined behavior). Since FindElement no longer check for the initialization we need add the initialization check in the caller as intended. 05 May 2023, 13:46:20 UTC
f7adbd2 [cxxmodules] Add memory_resource header to the modulemap. (cherry picked from commit e0b0669b4dd2af9a715c0f74ca366328d362b636) 03 May 2023, 19:23:20 UTC
35fc891 [c++20] Add spaceship operator <=> in TString (#12525) * [c++20] Add spaceship operator <=> in TString In the following code (from `TFormula.cxx`): ``` map< std::pair<TString,Int_t>, pair<TString,TString> > functions; pair<TString, Int_t> key = make_pair(funName, dim); if (functions.find(key) == functions.end()) { ``` `functions.find(key)` always returns `functions.end()`. Adding the spaceship operator `<=>` in TString fixes the issue. This fixes also many failing tests with `std:c++20` * Use __cpp_impl_three_way_comparison instead of __cplusplus version (thanks Bernhard Manfred Gruber!) * Apply suggestion from Bernhard Manfred Gruber * Make sure we only include <compare> with at least std=c++20 * Implement the proper way (avoid hidden friend) thanks Bernhard * Prevent calling 'operator <=>' recursively Prevent the following warning on Windows: ``` C:\root-dev\git\master\core\base\inc\TString.h(175,16): warning C5232: in C++20 this comparison calls 'std::strong_ordering operator <=>(const TString &,const TString &)' recursively ``` (cherry picked from commit 6fc4ddc223acc63eb4121c1aacfa470ce0e6cc1e) 03 May 2023, 12:42:29 UTC
3634976 Patch builtin_tbb for GCC 13 The new compiler complains that the declaration of task_prefix::task() changes meaning of 'task', as used in task* next_offloaded. (cherry picked from commit 915e17b1e2bf8fc8d3476b9ceea2db8473d18285) 29 April 2023, 15:50:22 UTC
6705060 [C++20] [Modules] [Serialization] Deserialize LValuePathSerializationHelper's type properly Close https://github.com/llvm/llvm-project/issues/58716. Tested with libcxx's modules build. When we read the type of LValuePathSerializationHelper, we didn't read the correct type. We read the element type as its name suggests. But the problem here is that it looks like that both the usage and serialization use its type as the top level type. So here is the mismatch. Actually, the type of LValuePathSerializationHelper is never used after Deserialization without the assertion. So it doesn't matter for the release users. And this patch shouldn't change the behavior too. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D139406 29 April 2023, 15:49:14 UTC
d3ba807 [modulemap] Extend for C++20 with gcc13 Add more headers to solve merging issues with C++20. 29 April 2023, 15:49:14 UTC
f162e33 [Clang][Sema] Do not evaluate value-dependent immediate invocations Value-dependent ConstantExprs are not meant to be evaluated. There is an assert in Expr::EvaluateAsConstantExpr that ensures this condition. But before this patch the method was called without prior check. Fixes https://github.com/llvm/llvm-project/issues/52768 Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D119375 29 April 2023, 15:49:14 UTC
bdb72eb [tmva] Include <tuple> into ROCCurve.h The header instantiates a std::vector<std::tuple<...>> and a C++20 build with GCC 12 complains about the missing include while building the module. 29 April 2023, 15:49:14 UTC
38588ca [modulemap] Extend for C++20 with gcc11 The new header bits/uses_allocator_args.h requires a module to solve merging issues with C++20, but did not exist in older versions. 29 April 2023, 15:49:14 UTC
9085e34 [modulemap] Extend for C++20 with gcc10 Define bits/ranges_base.h as optional, it did not exist in the old version of the compiler. Add two more modules to solve merging issues with C++20. 29 April 2023, 15:49:14 UTC
10fdace [cocoa] Prevent cocoa FontCache::GetTextWidth() crash: On macOS 13.3 with Xcode 14.3, vector construction begin begin/end iterators -to-dofferent-type (here, casting char to UniChar aka unsigned short) fails in optimized mode for seemingly dubious reasons (i.e. likely an optimizer bug). Short-circuit this by returning 0 early for an extent of 0 characters - which is the only case where this construction (i.e. end==begin) is known to fail. (cherry picked from commit 6ef5102991c43cd97c11ec3a622af6b915bff69a) 29 April 2023, 08:25:39 UTC
1e371bf [RF] Support RooAddModel in BatchMode Like many other functions in the RooAddModel, the implementation was copy-pasted and slightly adopted from RooAddPdf. 28 April 2023, 14:52:35 UTC
3dcca27 [RF] Skip single-component RooAbsAnaConvPdf in BatchMode The RooAbsAnaConvPdf classes work as follows: they are served by convolution objects for each analytical basis function returned by resolution models, whose values are depending on the type of the `RooAbsAnaConvPdfs`. These convoluton objects are then summed. If there is only one convolution, we don't need to sum anything and we can just return tis single convolution object when building the computation graph for the BatchMode. With this optimization, we implicitly support `RooDecay` in BatchMode, because the node is just skipped (a `RooDecay` only uses the exponential basis). 28 April 2023, 14:52:35 UTC
04be3c2 [RF] Implement `RooAbsAnaConvPdf::compileForNormSet()` When having a RooAbsAnaConvPdf in the computation graph, it can not be just use as-is because not all servers are evaluated normalized and not all servers are evaluated at all. That's why we need to implement `RooAbsAnaConvPdf::compileForNormSet()` and do some custom logic, such that the computation graph passed to the RooFitDriver is meaningful. 28 April 2023, 14:52:35 UTC
55f39d6 [RF] Code format `RooHeterogeneousMath.h` Since the file was already moved and therefore the commit history destroyed, we might as well format it. 28 April 2023, 14:52:35 UTC
b2762a4 [RF] Support RooGaussModel with exponential basis also on the GPU The exponential basis for the RooGaussModel is by far the most used because it's quite common to model decays with exponentials. Therefore, the evaluation code path for this basis is offloaded to RooBatchCompute to also support the GPU. To make the code give also the correct results on the GPU, it was necessary to replace the `std::complex` type with `cuda::std::complex`. Now that there are multiple math functions that also need to run on the GPU used by different RooFit classes, a new file `RooHeterogeneousMath.cxx` was created for these kind of functions. 28 April 2023, 14:52:35 UTC
eb7914e [RF] Support RooGaussModel in BatchMode (CPU only so far) The RooGaussModel source code is slightly refactored such that the values for all observables can be evaluated without falling back to `RooAbsReal::getVal()`. 28 April 2023, 14:52:35 UTC
bb58df1 [RF] Update ParamHistFunc.cxx - remove bogus assertion The assertion seems bogus - the param value is not the coordinate in the paramHistFunc, so just get rid of that assert 28 April 2023, 14:52:35 UTC
502b92d Qualify calls to llvm::format that have ::std:: types as parameters ... to avoid ambiguity in overload resolution when ADL finds `std::format`. Differential Revision: https://reviews.llvm.org/D119213 28 April 2023, 09:29:53 UTC
44db6e0 [RF] Avoid `-Wdeprecated-copy` warnings from Vc with clang This needs to be done now, because the `Math` headers are included in RooBatchCompute, and in the version of the library version with `avx` it hits some code in Vc that causes these warnings. 26 April 2023, 22:53:55 UTC
06740ae [RF] Support RooNLLVarNew on the GPU In particular, the treatment of `NaN`s is reorganized such that one doesn't need to use `RooNaNPacker::accumulate()`. There are now separate `doubles` that sum up the NLL, and the "badness" instead of packing the badness inside the NaN. 26 April 2023, 22:53:55 UTC
5160956 [RF] Support reducer nodes on the GPU in RooFitDriver This is done in preparation for porting the NLL computation to the GPU. 26 April 2023, 22:53:55 UTC
bad3ba3 [RF] Don't support `getValues()` with GPU backend. It's not useful to do this. It will always be slow because the results are copied. The GPU backend makes only sense in the context of likelihood minimization. 26 April 2023, 22:53:55 UTC
7348f89 [RF] Avoid some redundant information in RooFitDriver node infos Some refactoring to make the `RooFitDriver` code more robust. 26 April 2023, 22:53:55 UTC
75581c8 [RF] Remove support for mixed CPU and GPU evaluation from RooFitDriver Not all nodes in a RooFit computation graph support the GPU yet. That's why in general, data needs to be copied between host and device when evaluating the NLL. The RooFit driver has some logic to figure out which GPU-supporting nodes should *not* be evaluated on the GPU because the copying overhead would negate the performance improvement. This commit suggests to remove this logic for several reasons: * It has no real-world benefit: copying is *much* more expensve than evaluation, so as soon as one vector node doesn't support the GPU, it's not worth it to do any computation on the GPU * The NLL result is less deterministic because the splitting of compute between GPU and CPU is based on random factors * It makes the RooFitDriver code much harder to understand, which is not good for new contributors (like the summer student we will soon have) * Determining how compute should be assigned has performance overhead 26 April 2023, 22:53:55 UTC
f9dfdd1 [RF] Move dataset splitting from RooFitDriver to dataset helpers This is done so the code can be re-used in the RooFuncWrapper. 26 April 2023, 22:53:55 UTC
275c80e Update roofit/roofitcore/src/RooProjectedPdf.cxx dont use normRange override, use normRange method instead Co-authored-by: Jonas Rembser <jonas.rembser@cern.ch> 26 April 2023, 22:53:55 UTC
7467626 projections should respect normalization ranges 26 April 2023, 22:53:55 UTC
7984864 support for extended pdfs 26 April 2023, 22:53:55 UTC
a14073f [RF] Set BatchMode in `stressRooFit` via global configuration flag The same is done already in `stressRooStats`. Instead of manually propagating the BatchMode flag to all calls of `createNLL()` and `fitTo()`, it is easier and safer to just override the default, because then it can't be forgotten to add it in one of the calls. In particular, this is done now because it will make it much easier the extend the possible `stressRooFit` options to also use the codegen plus AD backend. 26 April 2023, 22:53:55 UTC
d914a75 [RF] Add `RooAbsArg::dependsOn()` overload that takes name pointer The `dependsOn()` method checks the dependency only based on the name, and it is useful to make dependency checks only based on the name if one doesn't have a `RooAbsArg` with the given name at hand. 26 April 2023, 22:53:55 UTC
54b7bf6 [RF] Move `_uniqueId` member from RooArgSet to RooAbsCollection This is done now because in the RooFit code generation, we want to cache things for general RooFit collections. 26 April 2023, 22:53:55 UTC
56305f7 [RF] Migrate more RooFit functions to `RooFit::OwningPtr<T>` In particular, this commit migrates `RooAbsPdf::fitTo()` and the functions to create cumulative density functions. 26 April 2023, 22:53:55 UTC
ea90c59 [RF] Fix build due to changed compute() signature There was a bad interaction between commit 8a67cf611c changing the signature of compute() to take a non-const reference, requiring an lvalue, and commit aa47d71aae introducing a new call to that same function with a temporary argument. Fix it in the same way as other call sites were changed in commit 8a67cf611c, by introducing a local variable. 26 April 2023, 22:53:55 UTC
e85d706 [RF] Update FitParabola test in `testNaNPacker` to also run on GPU Like this, we are checking that the recovery from missing values also works on the GPU. Also, do some code modernization in the test file, and fix memory leaks of RooFitResult objects. 26 April 2023, 22:53:55 UTC
dd83685 [RF] Code format for `testNaNPacker.cxx` Since this file is going to be changed a lot next, it is formatted with `clang-format` now. 26 April 2023, 22:53:55 UTC
ab79727 [RF] Support pdf normalization with error logging in RooBatchCompute So far, the pdf normalization could not be done in RooBatchCompute, because it requires the tracking of evaluation errors. This could not be implemented in the current batchcompure library, because information could not flow back from the compute functions to the calling object. This is now made possible by taking the `ExtraArgs` array by reference, meaning it can also be used as an output parameter by the compute function to return for example the number of evaluation errors. This change greatly helps to speed up the BatchMode, expecially on the GPU because the normalization can now be done on the device. 26 April 2023, 22:53:55 UTC
359ecb9 [RF] More `RooNaNPacker` to RooBatchCompute So we can eventually also use it on the GPU. 26 April 2023, 22:53:55 UTC
c403e5a [RF] Less use of the `RunContext` class in RooFit The `RunContext` in its current form was only used by the old BatchMode implementation before the RooFitDriver was introduced. Eventually, that class might be removed or merged with the `RooFit::Detail::DataMap` class that superseeded it. To make such future developments easier, the `RunContext` is now not used anymore in the `testHistFactory.cxx` file. Instead, these tests now use the `RooAbsReal::getValues()` overload that directly takes a RooDataSet. Furthermore, the validation of unnormalized pdf values in the HistFactoy unit test is removed, because unnormalized pdf values are generally undefined. 26 April 2023, 22:53:55 UTC
1f3eec3 [RF] Implement `RooPolynomial` and `RooPolyVar` in BatchMode The existing implementation in RooBatchCompute for polynomials was not adequate, because it couldn't deal with coefficients that are different for each event. This commit is re-implementing the support for RooPolynomial, and also re-uses the same code for the `RooPolyVar`, which is identical to the `RooPolynomial` apart from the base class. 26 April 2023, 22:53:55 UTC
7df5a8c [RF] Add `selfNormalized` flag to RooWrapperPdf It can be useful to wrap `RooAbsReal` objects that behave like self-normalized pdfs. 26 April 2023, 22:53:55 UTC
70fcb9b TClassTable: NFC fix doc typo 26 April 2023, 14:53:01 UTC
c2a954b TClassTable: thread safety improvements Protect fgTally in Print Release lock before calling TProtoClass::FillTClass Add missing protection of fgIdMap in TClassTable::GetProto 26 April 2023, 14:53:01 UTC
7db04f7 TClassTable: misc NFC improvement. Improve documentation Use ROOT::GetROOT() rather than gROOT to trigger initialization Remove copy and default construction from RAII struct Move include where actually needed 26 April 2023, 14:53:01 UTC
28cfbd8 TClassTable: release lock before calling ErrorHandler. The error handler will initialize gROOT if not there yet and then recursively call TClassTable 26 April 2023, 14:53:01 UTC
8b8273d TClassTable: white space 26 April 2023, 14:53:01 UTC
726f340 TClassTable: move table creation trigger out of critical section 26 April 2023, 14:53:01 UTC
5f7a49c TClassTable rename RAII class to NormalizeThenLock and add doc 26 April 2023, 14:53:01 UTC
fa088b4 TClassTable: Remove obsolete FindElement The name normalization must be done outside of the TClassTable critical section, so both the normalization and lock taking needs to be done outside the FindElement function. Then rename the remaning function (FindElementImpl) into the now available FindElement. Both are private functions 26 April 2023, 14:53:01 UTC
4a7ac0e TClassTable: fix data race between dlopen and other use This fixes #12552 This commit add a mutex for the TClassTable inner operations. Several changes were needed to insure that operation that can either take the ROOT global lock or recursively call TClassTable are executed outside of the TClassTable critical sections. 26 April 2023, 14:53:01 UTC
d2cce01 NFC: TClassTable updated white space and newlines 26 April 2023, 14:53:01 UTC
3119a5b [cling] Ignore -Wunused-result in wrapped code Make `FilteringDiagConsumer` also ignore -Wunused-result. Whether or not such diagnostic is filtered depends on `CompilationOptions::IgnorePromptDiags`. In particular, `IgnorePromptDiags` should _only_ be enabled for code parsed via `Interpreter::EvaluateInternal()`. Thus, as of this commit `IgnorePromptDiags` defaults to 0 in `makeDefaultCompilationOpts()` The observable effect of this change is ignoring `-Wunused-result` for wrapped code, e.g. ```c++ [[nodiscard]] int f() { return 0; } // This yields `warning: ignoring return value of function declared with 'nodiscard' attribute [-Wunused-result]` void g() { f(); } f(); // but this should not ``` Cherry-picked from ade784d24c126836735e5056229ca11f02ae36d4. 26 April 2023, 12:27:34 UTC
4d0950c [webgeom] support more than 4 vertices in polygon ROOT raw buffer for the shape may include more than 4 vertices in polynom. Support such case not seen before 26 April 2023, 07:22:03 UTC
ad485ed [D111971] Backport [clang] Allocate 2 bits to store the constexpr specifier kind when serializing. See llvm/llvm-project@7a8c794 (cherry picked from commit dc9a1c0a81711c312fb8353396e160c2fc3fb366) 26 April 2023, 06:42:48 UTC
0d010eb [modulemap] bits/chrono.h exists already with C++11: It is needed for C++11 support of #include <chrono>. Failures: ``` Processing /home/sftnight/build/night/LABEL/ROOT-fedora36/SPEC/default/V/master/root/tutorials/multicore/mt201_parallelHistoFill.C... In file included from input_line_10:1: /home/sftnight/build/night/LABEL/ROOT-fedora36/SPEC/default/V/master/root/tutorials/multicore/mt201_parallelHistoFill.C:55:51: error: no member named 'duration' in namespace 'std::chrono' std::this_thread::sleep_for(std::chrono::duration<double, std::nano>(500)); ~~~~~~~~~~~~~^ ``` and ``` root [11] #include <bits/chrono.h> /home/sftnight/build/night/LABEL/ROOT-fedora36/SPEC/default/V/master/build/etc/cling/std.modulemap:432:10: error: module 'std.bits/chrono.h' requires feature 'cplusplus17' module "bits/chrono.h" [optional] { ^ ROOT_prompt_11:1:10: note: submodule of top-level module 'std' implicitly imported here ^ ``` (cherry picked from commit b0f0a83813027c0493eeb87d27555b100614c2b9) 26 April 2023, 06:42:48 UTC
aedb600 [cxxmodules] Implement a module attribute 'optional' to allow missing headers. This deals with the fact that our modulemaps include headers which can vary across library versions and that attribute is a way to express this. (cherry picked from commit aa874ab2417a1a9b2dc68bb132b47f7e19d99acf) 26 April 2023, 06:42:48 UTC
dce5054 Reland "[cxxmodules] Add more bits headers to fix module merging issues." This reverts commit f6327a6e56861d95f34d1a85a47dcc616b335dc3. (cherry picked from commit 39a6f15fd7154958aa9e6e87f4c4de18d2c4d96f) 26 April 2023, 06:42:48 UTC
aebc425 Reland "Add a module for stl_iterator_base_funcs.h avoiding merging issues for c++20" This reverts commit 4a3258a492f4ed9660311efe12e9dbe7cd7ed188. (cherry picked from commit f709a29e292e400a2662807cdf60a321c56ce8fe) 26 April 2023, 06:42:48 UTC
fff27b7 Avoid calling vector<FieldInfo> members before FieldInfo is defined The C++ Standard requires a complete type T when using any members of `vector<T>`, see https://eel.is/c++draft/vector#overview-4. This only breaks with latest libc++ in C++20 mode and does not show up in common configurations. We have an internal experimental configuration that discovered this. Reviewed By: alexfh Differential Revision: https://reviews.llvm.org/D131595 (cherry picked from commit 81f03500836936faff3d1b7f1575f7b6563f6ab0) 26 April 2023, 06:42:48 UTC
0fbfd55 Fix forward declaration in Support/JSON.h Some methods of json::Array require json::Value to be completely defined, so they can't be defined in-class. Fix that by defining them out of class. Fix #55780 (cherry picked from commit be4edd96e384bd125d0c92bb7880215ac2d3c27a) 26 April 2023, 06:42:48 UTC
2e06e1e [rhist] Missed a FillN weights / C++20 case. (cherry picked from commit da04222d9f9882a9da27d49b5a4c0e7d60b9cc02) 26 April 2023, 06:42:48 UTC
1fc52f9 [ntpl] Work around C++20 ambiguity string_view vs pair: In C++20, `MakeField({"a","b"}` could mean "construct a pair" or "construct a string_view from two iterators (aka `const char*`)". To avoid this (nonesense) ambiguity, introduce a dedicated type that takes either a single `const char*` or `string_view` as name, or two `string_views` as name/description. (cherry picked from commit 09ac136f55553ff17d6ad6c4fb29c9825d6e5d54) 26 April 2023, 06:42:48 UTC
0e40e1b [rdf] Add missing include. (cherry picked from commit 1829efda24a7bf60451ea5fa158a154f1cb16607) 26 April 2023, 06:42:48 UTC
bf9f4a6 [tree,rdf] Disambiguate `Foo({"a","b"})` C++ calls: C++20 has added the `string_view(const char*, const char*)` ctor, rendering calls to these functions that pass two `vector` elements ambiguous with the `string_view` overload. Work around this by adding an explicit initializer_list overload - that is the best option I can think of. I notified WG21-lib of this terrible breakage when going from C++17 to 20. (cherry picked from commit 580fa949b09424be563ed39b74067b1bbe2f07b3) 26 April 2023, 06:42:48 UTC
476787c [rhist] Remove stray extra curlies. (cherry picked from commit 48aeb23237bf02b2064432b198824088bf56e032) 26 April 2023, 06:42:48 UTC
04bc532 [rhist] Add FillN(init_list) overload for calling with list init: C++20 span ctor requires double curly `FillN({{1., 2.}})`. Adding this overload resolves this. (cherry picked from commit 88385723bbc6d92e5c4a2e427a252e6e9c51ea71) 26 April 2023, 06:42:48 UTC
5b5fe14 [test, histv7] Fix code to match C++20 expectations. (cherry picked from commit 306240ceb7138547e129abbb5d8f39473557d227) 26 April 2023, 06:42:48 UTC
e305c62 TTreeCache::FillBuffer extent internal code doc 25 April 2023, 14:14:10 UTC
6292352 TTreeCache: handle binary search failure 25 April 2023, 14:14:10 UTC
f7a3aa7 TTree::Cache Use binary search instead of linear search for first basket. On an extreme example: 15,272,928 entries 152,739 baskets (and as many clusters) 10,000 Actual TTreeCache buffer size (minimum allowed) 8,442 estimated buffer size of TTreeCache (1.5 times compressed buffer size) 400 bytes per baskets 100 entries per baskets (i.e. per clusters) 25 number of cluster per TTreeCache buffer for single branch with default size. 1 float per entry (reading a single branch). we gain 20% run time on a call to `Tree::Draw` 25 April 2023, 14:14:10 UTC
5e81da6 TTreeCache correct place cache (avoid O(N^2) behavior Prior to this change, the cache of which basket to start the search on would restart from the first basket at each cluster iteration (i.e. for filling the cache with with clusters) On an extreme example: 15,272,928 entries 152,739 baskets (and as many clusters) 10,000 Actual TTreeCache buffer size (minimum allowed) 8,442 estimated buffer size of TTreeCache (1.5 times compressed buffer size) 400 bytes per baskets 100 entries per baskets (i.e. per clusters) 25 number of cluster per TTreeCache buffer for single branch with default size. 1 float per entry (reading a single branch). This ends up repairing the performance of a simple `TTree::Draw` of a single branch from 1 hour back down to 7s (performance seem in v6.12). This correct an issue introduced by commit 73f6223d0c9 first since in v6.14/00 This fixes #12649 25 April 2023, 14:14:10 UTC
91e5df6 Always enable cache in TTreePlayer unless explicitly disabled. Previously depending whether the TTreeCache was globally enabled or disabled and whether fAutoFlush was set or not, the TTreeCache would be enabled or not. In particular no longer rely on TTree::Streamer setting fCacheSize to an estimated value when the TTreeCache is disabled globally (The old code lead to the cache being enabled even-though it was disabled). Note/Reminder: `TTreePlayer::Process` (and hence `TTree::Draw`) does not rely on the global setting on whether the cache should be used or not and only respect an explicit disabling of the cache for the specific `TTree` being used. 25 April 2023, 14:14:10 UTC
eaa953d Add TTree::EnableCache 25 April 2023, 14:14:10 UTC
cacd1fc TTree::GetCacheAutoSize factor out size calculation 25 April 2023, 14:14:10 UTC
8d31fdb TreeCache fallback size should not use cacheFactor 25 April 2023, 14:14:10 UTC
96034a4 [RF] Fix off-by-one error in HistoToWorkspaceFactoryFast There is an error here that was introduced in `dc65afe`: https://github.com/root-project/root/blob/6abb8e90d9bea276269f375a67855c4065813343/roofit/histfactory/src/HistoToWorkspaceFactoryFast.cxx#L760-L762 This error should only be thrown when the number of observables is not 1, 2 or 3, but currently fires if the number is equal to 3. See the change from `dc65afe` here where the mistake is evident: https://github.com/root-project/root/commit/dc65afe00ec72d18ebc5d31e7b2d6b50c6a20423#diff-42ea09980f1ed2bacde4381f212c35d78be6ddedccf746953dc99d6455525d8aL1256-R1221 The conditional should be `if (fObsNameVec.empty() || fObsNameVec.size() > 3)` This needs to be backported to ROOT 6.26 and 6.28 to make it into the next patch releases. Thanks to @CoffeeIntoScience for reporting this bug! 25 April 2023, 11:23:55 UTC
a737466 [RF] Implement correct sampling for RooGamma with `gamma < 1` This fixes the JIRA ticket ROOT-4188: https://sft.its.cern.ch/jira/browse/ROOT-4188 The solution to the problem was already written in the linked JIRA ticket by @lmoneta. 25 April 2023, 11:23:55 UTC
9a468ec [RF] Sopport `RooRealIntegral` variable re-expression also for clones In the RooRealIntegral constructor, there is a code section to figure out if the list of integration variables can be re-expressed in lvalues that are higher in the expression tree. To check this, the clients of the integration variables are followed recursively. This doesn't work if *copies* of the integration variables are passes to the integral, because they have no clients. Therefore, when filling the initial list of leaf servers, they need to be filled with the instances of the integration variables that are in the actual computation graph of the function. Closes #12646. 25 April 2023, 11:23:55 UTC
b0d2bf4 [RF] Don't throw an error if `roobatchcompute` lib was already loaded The `roobatchcompute` library dynamically loads the most performant implementation library that the CPU supports. However, it throws an error if the library was already loaded. Indeed, in most usecases it's correct that the implementation library is not loaded before the RooBatchCompute main library is initialized, but if a RooFit script is executed via `gInterpreter->LoadMacro("Macro_Name.cxx++")`, the library is already loaded the second time the macro is launched like this. Hence, it's better is the `batchcompute` library throws no exception if the implementation is already loaded. This fixes a problem reported on the forum: https://root-forum.cern.ch/t/roofit-computation-library-libroobatchcompute-avx2-was-loaded-before-roofit-initialisation-began/54580 25 April 2023, 11:23:55 UTC
158e2fd [RF][math][core] Fix some C++20 warnings * Fix unused variable warning in `TMPWorkerExecutor` by moving variable in the only code branch where it's actually used * Fix some warnings about deprecated enum arithmetics by using `constexpr static int` instead of `enum` * Fix warnings about the deprecation of `volatile` in C++ by not using it With these changes, I can compile RooFit again without seeing warnings. 25 April 2023, 11:23:55 UTC
b684439 [RF] Fix plotting of nested RooSimultaneous with projection data Just as with the generation of datasets from a RooSimultaneous, the right way to iterate over the index category components is not to call `servers()`, but to use `RooSimultaneous::flattenedCatList()`. Closes #12652. 21 April 2023, 16:53:21 UTC
4a5bb17 [RF] Remove obsolete `RooSimultaneous::plotOn()` override The dedicated `RooSimultaneous::plotOn()` override is obsolete and unused for a long time and should be removed. 21 April 2023, 16:53:21 UTC
779cf22 [RF] Fix client-server relations for nested RooSimultaneous This commit fixes yet another proxy-server-desync problem that happens for nested RooSimultaneous. The problem is that the `SuperCategory` that is constructed for RooSimultaneous is only created after the proxy is already initialized and and the server set to the original outer category. And while proxy is reset at the end of the constructor, the server is not changed, resulting in the desync. Reproducer of the problem: ```python x = ROOT.RooRealVar('x', '', 0, 1) c1 = ROOT.RooCategory('c1', '', {'c11': 0, 'c12': 1}) c2 = ROOT.RooCategory('c2', '', {'c21': 0}) u = ROOT.RooUniform('u', '', x) g = ROOT.RooGaussian('g', '', x, ROOT.RooFit.RooConst(0.5), ROOT.RooFit.RooConst(0.1)) s1 = ROOT.RooSimultaneous('s1', '', {'c11': u, 'c12': g}, c1) s2 = ROOT.RooSimultaneous('s2', '', {'c21': s1}, c2) s2.Print("v") ``` The output will be: ```txt --- RooAbsPdf --- Cached value = 0 --- RooAbsArg --- Value State: DIRTY Shape State: DIRTY Attributes: Address: 0x5597c85b6bd0 Clients: Servers: (0x5597c7977df0,V-) RooCategory::c2 "" (0x5597c80e8c60,V-) RooUniform::u "" (0x5597c8275020,V-) RooGaussian::g "" Proxies: !plotCoefNormSet -> indexCat -> s2_index {c21;c11} -> u {c21;c12} -> g --- RooAbsReal --- Plot label is "s2" --- RooAbsPdf --- Cached value = 0 ``` This commit fixes the problem. By rearranging the `RooSimultaneous` constructors such that the proxy for the index category is initialized with the correct `SuperCategory` server. 21 April 2023, 16:53:21 UTC
2724121 [RF] Remove some duplicate code and debug comments in RooProdPdf There was a code branch that covered the case of one element in `group`, but it did the same anyway as the code that iterated for all elements, so that code could be removed. Also, remove some unnecessary comments, avoid `delete`, and update some C-style casts. 21 April 2023, 16:53:21 UTC
2803e9f [RF] Fix error in RooProdPdf that comes from wrong `addOwned()` For some of the args created in the RooProdPdf cache, the ownership model was wrong. They were attempted to be added to a list that is actually not owning, but they should be added to the owning container of the cache. This fixes an issue with 6.28 reported on the forum: https://root-forum.cern.ch/t/plot-normalization-after-rooaddpdf-fixaddcoefrange/54480 21 April 2023, 16:53:21 UTC
7d278f7 use aliasName to lookup existing objects on import 21 April 2023, 16:53:21 UTC
1994d86 [RF] Migrate `RooAbsPdf::createNLL()` to use the `RooFit::OwningPtr<T>` 21 April 2023, 16:53:21 UTC
cc96e44 Fix compilation error with -std:c++20 21 April 2023, 16:53:21 UTC
f97edc2 [RF] Introduce `RooFit::OwningPtr<T>` alias for owning pointers This commit introduces an alias for raw pointers for indicating that the return type of a RooFit function is an owning pointer that must be deleted by the caller. For RooFit developers, it can be very useful to make this an alias to `std::unique_ptr<T>`, in order to check that your code has no memory problems. Changing this alias is equivalent to forcing all code immediately wraps the result of functions returning a `RooFit::OwningPtr<T>` in a `std::unique_ptr<T>`. The two fundamental RooFit functions `RooAbsArg::getVariables()` and `RooAbsArg::getParameters()` are also migrated to this new alias, and I tried to recompile ROOT locally using the `std::unique_ptr<T>` alias. This commit includes also the necessary changes to make ROOT compile with both raw and smart pointer alias, always wrapping the result of these functions in `std::unique_ptr<RooArgSet>`. There are many benefits of this alias, and my ultimate goal here is to eventually make PyROOT aware of it to always take ownership of the referenced objects. But it's also a great tool for developers to check that there are no memory issues in RooFit code. Now that this PR sets the first examples of how to use this alias, I can make further migrations also a good warm-up projects for new contributors such as students. 21 April 2023, 16:53:21 UTC
16aac44 [RF][HF3][HF] Start for factor out common HiFa implementation code At some point, we don't want to duplicate anymore for the HS3 HistFactory implementation. This commit suggests a common file for shared HistFactory implementation details. Also, some general code modernization of `HistoToWorkspaceFactoryFast`. Furthermore, get rid of the `Scope` helper class not in the HS3 HistFactory. 21 April 2023, 16:53:21 UTC
a9ed7ac [RF][HS3] Cleanup, parameter names in HistFactory, improved error msgs. 21 April 2023, 16:53:21 UTC
532d608 [RF][HS3] Add `type` field to exported datasets for new HS3 standard Also, do some general code cleaning 21 April 2023, 16:53:21 UTC
0f9b90a [RF] Mark arguments of `RooWorkspace::import()` overloads as `const&` 21 April 2023, 16:53:21 UTC
4b664fe [RF][HS3] Avoid `TH1` as intermediary objects in JSON IO Using a `TH1` as an intermediary class when serializing RooDataHists is not necessary. It can lead to precision errors, and also it results in uninteresting printouts from `RooAbsReal::exportHistogram()`. The only place in RooFitHS3 where TH1 is needs is the `HistFactoryJSONTool`, because the `HistFactory::Measurement` object contains `TH1` histograms that need to be read. 21 April 2023, 16:53:21 UTC
d504c30 [RF] Override `TObject::Clone()` in RooWorkspace Many users expect to use `Clone()` to copy RooWorkspaces, but so far this resulted in corrupt workspaces because the `Clone()` function was not overridden. 21 April 2023, 16:53:21 UTC
3bffd70 [core] Always assign correct `uid` output in TRefArray::GetObjectUID() In `TRefArray::GetObjectUID(int &uid, TObjet *obj)`, there is a code branch for the case of an empty TRefArray and an object with a UID assigned. Is this case a new process ID corresponding to the object is assigned to the `TRefArray`. However, the `uid` output parameter is not correctly assigned in this code branch, which is fixed in this commit. The consequence of this bug is that the, since the `uid` output parameter is not correctly assigned, that the implementation of `TRefArray::Add*()` does not correctly work then. Closes #12329. 21 April 2023, 16:53:21 UTC
dbbadb6 [RF] Use the right `TRefArray` constructor in RooAbsArg.cxx The TRefArray constructor with only one argument takes a process ID, and not a size! We can just use the default constructor, and then the process ID will be automatically assigned to the one of the first object. This mistake had no consequence so far, because the desired number of elements doesn't correspond to a valid process ID anyway. 21 April 2023, 16:53:21 UTC
back to top