f725f78 | Axel Naumann | 18 October 2022, 06:52:45 UTC | "Update ROOT version files to v6.26/08." | 18 October 2022, 06:52:45 UTC |
5f7de51 | Axel Naumann | 18 October 2022, 06:50:18 UTC | [RelNotes] v6.26/08. | 18 October 2022, 06:50:18 UTC |
9e7933c | Giulio Eulisse | 15 October 2022, 15:57:01 UTC | Fix datasource_arrow.cxx test Explicitly include `arrow/testing/builder.h` to make sure ArrayFromVector is available. Probably it was being included implicitly before. (cherry picked from commit 97802b9066ca98c17527949b76b9f070ce676738) | 15 October 2022, 20:44:57 UTC |
cad4eba | Vassil Vassilev | 30 September 2022, 08:56:54 UTC | gcc12's regex header file relies on a std::vector<int> instance, export it. The C++ modules marks the std::vector<int> instantiation as not visible because it came from the `regex` header file which we did not explicitly include. root-project/root@a785402 introduces checks if certain declaration is visible in dictionary generation time which was intending to semantically improve the coherence by what the user "allowed" (or requested) rootcling to see vs what it can see globally. While this model works well it seems to not work for template instantiations as they won't be re-instantiated with visible modifier. This patch works around the current issue seen with libstdc++ 12 but a better solution would be to implement a finer grained control over the implicit template instatiations when generating a dictionary. Fixes root-project/root#11329 | 15 October 2022, 20:35:10 UTC |
4aafbc6 | moneta | 15 October 2022, 16:52:35 UTC | [backport][tmva][sofie] Backport fixes for SOFIE for PCH - backport fix from #PR 11481 - backport fix from #PR 11545 and also backport fix from the tests #11529 | 15 October 2022, 17:46:28 UTC |
5183004 | moneta | 30 September 2022, 10:40:16 UTC | [tmva][pymva] Fix warning when compiling the tests due to numpy headers | 15 October 2022, 17:46:28 UTC |
ccdde72 | moneta | 17 March 2022, 15:28:42 UTC | Fix TMVA tutorial using internally pyton for MacOS 12.3 With the new MacOS update python (and python2) is not existing anymore, only python3. Add then a new function TMVA::Python_executable() using ROOT config to determine if ROOT is using python version 2 or 3. In case of 3 returns as executable "python3". Fix also the correct location of the input ONNX file for TMVA_SOFIE_ONNX.C (copying the file at configure time) | 14 October 2022, 16:33:36 UTC |
d8e254c | Jonas Hahnfeld | 12 October 2022, 15:41:12 UTC | Fix ROOT-7462 with libstdc++ >= 10 The test autoloads an 'Outer' class that has 'Inner<int>' as a member. Because we suspend autoloading, the 'Inner<int>' specialization may not be complete at all times, which triggers a static_assert in newer versions of libstdc++. Backport of D86765, commit bf890dcb0f; original commit message: --- [clang] Don't emit "no member" diagnostic if the lookup fails on an invalid record decl. The "no member" diagnostic is likely bogus. --- (cherry picked from commit 06fd8e9e798919fdc29d8d6ec65d13d55ea30aa7) | 14 October 2022, 09:47:38 UTC |
5fe3459 | will buttinger | 11 October 2022, 15:00:41 UTC | fix display of items in TBrowser that have checkbox against them on mac (with cocoa) | 12 October 2022, 12:58:12 UTC |
f385b3c | Philippe Canal | 05 October 2022, 18:05:30 UTC | Add support for Bulk I/O with SetClusterPrefetch This fixes #8962 The code pattern is similar to 0987896c2d8d49a0e5723ee2ac792eb33fa3ee34 Add infrastructure for sharing memory in a TBuffer. | 11 October 2022, 20:16:46 UTC |
593719a | Jonas Rembser | 08 October 2022, 20:53:29 UTC | [RF][PyROOT] Skip out-of-range events in `RooDataSet.from_numpy()` The recently-introduced `RooDataSet.from_numpy()` function was clipping out-of-range events to the variable boundaries instead of clipping them. This behavior was misleading and confusing to the users, because the import of a TTree just skips out out-of-range events. This commit implements the skipping for `RooDataSet.from_numpy()` as well, logging also the same warnings when that happens. A unit test that checks the skipping works correctly for categories and real-valued variables is also implemented. Closes #10447. | 11 October 2022, 14:21:15 UTC |
0985e6f | Jonas Rembser | 08 September 2022, 08:33:27 UTC | [RF] Fix invalid `static_cast` in RooTreeDataStore::loadValues In the logging for out-of-range values in `RooTreeDataStore::loadValues`, there was `static_cast<RooAbsReal*>(arg)->getVal()` called also for categories, which is invalid. This led to garbage numbers as here in the tutorial outputs: https://root.cern/doc/v624/rf401__importttreethx_8C.html (see the lines with `Skipping event #2 because i cannot accommodate the value`) | 11 October 2022, 14:21:15 UTC |
dfdbe42 | Jonas Rembser | 12 October 2021, 10:38:26 UTC | [RF] Fix corruption of input pdf after using RooStats::SPlots In SPlots, `RooAbsArg::attachDataSet()` is called on the input pdf, redirecting the parameters of the pdf to the RooRealVars in the dataset. This is not reversed, leaving the pdf in a corrupt state when the dataset gets deleted. This can happen in particular if the SPlots object created an owning clone of the dataset, attaches the pdf, and then goes out of scope. This commit suggests to not attach the pdf to the dataset, as it is not necessary. When looping over the dataset and evaluating the pdf later, the pdf variables get synced with the dataset variables anyway. This was done via `RooStats::SetParameters`, which is just a wrapper around `RooAbsCollection::assign()`. I suggest to use `assign()` directly to make more explicit to the reader what happens. Closes Jira issue [ROOT-8018](https://sft.its.cern.ch/jira/browse/ROOT-8018). A simpler reproducer of the problem based on the notebook in the Jira issue is this one: ```Python import ROOT bdt = ROOT.RooRealVar("BDT", "some awesome BDT", 0.0, 1.0) mass = ROOT.RooRealVar("mass", "invariant mass", 5100.0, 5300, "MeV/c^{2}") sigyield = ROOT.RooRealVar("sigyield", "signal yield", 100, 0, 100000) bkgyield = ROOT.RooRealVar("bkgyield", "background yield", 900, 0, 100000) bmassPDF = ROOT.RooGaussian( "bmass", "B mass shape", mass, ROOT.RooFit.RooConst(5200.0), ROOT.RooFit.RooConst(20.0), ) bkgmPDF = ROOT.RooExponential( "bkgmass", "bkg mass shape", mass, ROOT.RooFit.RooConst(-1.0 / 200.0) ) combmPDF = ROOT.RooAddPdf( "fullmasspdf", "full mass pdf", ROOT.RooArgList(bmassPDF, bkgmPDF), ROOT.RooArgList(sigyield, bkgyield), ) toydata = combmPDF.generate(ROOT.RooArgSet(bdt, mass), 10000) ROOT.SetOwnership(toydata, True) set1 = ROOT.RooArgList(sigyield, bkgyield) set2 = ROOT.RooArgList() def make_splot(toydata): smalldata = toydata.reduce(ROOT.RooFit.Cut("BDT>0.0")) ROOT.SetOwnership(smalldata, True) splot = ROOT.RooStats.SPlot( "splot", "splot", smalldata, combmPDF, set1, set2, True, True ) make_splot(toydata) make_splot(toydata) ``` | 11 October 2022, 14:21:15 UTC |
5568f61 | elusian | 06 October 2022, 15:36:04 UTC | [RF] Fix copy-paste error in RooDataSet::binnedClone The branch when newTitle is `nullptr` should modify the title of the new `RooDataHist` and not its name | 11 October 2022, 14:21:15 UTC |
d8395fc | Vincenzo Eduardo Padulano | 05 October 2022, 13:28:40 UTC | [DF] Number of rows to display is size_t | 10 October 2022, 09:26:56 UTC |
8746f75 | Vincenzo Eduardo Padulano | 21 September 2022, 08:34:23 UTC | [DF] Respect the user-provided number of entries to be displayed Fixes #11390 Improves the workflow of `DisplayHelper::Exec` as follows: * The number of entries left to be displayed is now a data member of the action helper, not of RDisplay. * Early exit from the method if there are no more entries to process. * Otherwise, add one row to the display table and decrement by one the data member of the helper. * When there are no more entries to process for the first time, send a signal upstream that work is done for this node of the graph. Co-authored-by: Enrico Guiraud <enrico.guiraud@cern.ch> | 10 October 2022, 09:26:56 UTC |
7f96bba | Enrico Guiraud | 06 October 2022, 15:45:30 UTC | [DF] Fix event selection in case of Range with stride This fixes #11508. | 08 October 2022, 19:53:43 UTC |
76d5d84 | Enrico Guiraud | 07 October 2022, 09:14:31 UTC | [DF] Add test for #11508 The previous version of the test did not trigger the issue because of an unfortunate mathematical coincidence. | 08 October 2022, 19:53:43 UTC |
4b00f30 | Jonas Rembser | 05 October 2022, 16:21:00 UTC | [RF] Pythonize RooSimultaneous constructor to take Python dictionary The constructor that takes a map of categories to PDFs should be able to accept a Python dictionary directly. The RooFit Python tutorials are covering this constructor, and there is also a dedicated unit test implemented. | 07 October 2022, 07:06:03 UTC |
c714535 | Jonas Rembser | 05 October 2022, 16:19:54 UTC | [RF] Fix copy-paste error in `RooFit::Link()` pythonization Obviously the `Link` pythonization should call the original `_Link` function. A unit test that covers the former mistake is also implemented. Closes #11496. | 07 October 2022, 07:06:03 UTC |
4c8efff | Philippe Canal | 26 September 2022, 19:02:57 UTC | Force storing of StreamerInfo for nested non-split but memberwise streamed collection. This fix #11436 | 04 October 2022, 15:48:32 UTC |
33490c1 | Philippe Canal | 29 September 2022, 11:59:02 UTC | [cmake] Correct typo in REFLEX_GENERATE_DICTIONARY. This corrects the content of 6efc1684a62d37ccfa582cbbe3605995201ea7cb [cmake] Protect against empty COMPILE_DEFINITIONS in genreflex command | 29 September 2022, 12:09:47 UTC |
22678b9 | Vincenzo Eduardo Padulano | 28 September 2022, 09:57:12 UTC | [DF][NFC] Update minimum dask version found with cmake The minimum dask version in requirements.txt was updated to 2022.02 by https://github.com/root-project/root/pull/11371. Also update it when looking for a dask installation in the cmake configuration. | 28 September 2022, 12:53:12 UTC |
9ef5caa | moneta | 22 September 2022, 09:09:01 UTC | [hist] Add protection in case histogram to add does not have fTsumwx and fTsumwx2 arrays with correct size | 28 September 2022, 07:10:04 UTC |
129cc5a | moneta | 22 September 2022, 08:02:56 UTC | [hist] Resize array of sumwx and sumwx2 in THnBase::Init In THnBase::Init the dimension of the THnBase histogram was changed but the size of the contained arrays needs to be changed as well. | 28 September 2022, 07:10:04 UTC |
abc67b3 | moneta | 21 September 2022, 15:43:28 UTC | [hist] Fix in THnBase::Add the computation of the running sum The sum of weight, weight square and weigth * x used for statistics computation where not update when adding/merging THnBase classes. This fixes #11333 | 28 September 2022, 07:10:04 UTC |
5f31927 | moneta | 22 September 2022, 15:23:44 UTC | [hist] Fix I/O rule definition for TNDArray's. It should be used 'version` and not `versions`. Also improve the rule to use `vector.reserve` for being more efficient when reading old files. | 28 September 2022, 07:10:04 UTC |
abe248b | moneta | 22 September 2022, 08:31:09 UTC | [hist] Apply patch for Peter Hristov to fix I/O for older version of TNDArray objects This fixes #10382 | 28 September 2022, 07:10:04 UTC |
d2c8372 | moneta | 25 July 2022, 09:02:00 UTC | [hist] Fix label merge when one axis is numerical and extendable Create a new type of merging, a special case when histogram has an axis with label and one axis can be merge numerically but are compatible. A new test is added also in stressHIstogram for this new case This should fix ROOT-10828 | 28 September 2022, 07:10:04 UTC |
1e81da7 | moneta | 05 September 2022, 15:46:54 UTC | [hist] Fix correct handling of fitting option WW This PR fixes for #11304 The code handling the fitting option is improved separting better options for graphs and for histograms | 28 September 2022, 07:10:04 UTC |
2d7acfd | Philippe Canal | 08 September 2022, 21:51:30 UTC | core: Disable test for already deleted object. On some platform operator delete taints the memory, so even right after the deletion the information stored by ~TObject is already erased. On those platform we no longer rely on the kNotDelete bit hack and rely on the system (which has tainted the memory assumingly for a reason) to detect the use-after-delete problems. Introduce 2 new functions. TObject::IsDestructed (used by TClonesArray) that detects that the destructor has been run and is active in all configuration. This should be used if the code knows that the memory has not been freed/deleted. ROOT::Detail::HasBeenDeleted(TObject*) with returns true if the platform does not taint the memory and if the kNotDeleted is not set (in all other case, it returns false) This fixes #11330 | 28 September 2022, 00:59:53 UTC |
b58e57a | Sergey Linev | 26 September 2022, 14:55:21 UTC | [proof] use proper string type to store object name in TProofDraw | 27 September 2022, 06:48:28 UTC |
4d4c701 | Jonas Rembser | 14 May 2022, 10:02:23 UTC | [math] Avoid warnings about deleting unallocated objects in `TDecompLU` The logic in `TDecompLU` where a separate `bool` was tracking if a given pointer should be "deleted" caused some compiler errors warnings like: ``` root/math/matrix/src/TDecompLU.cxx: In static member function ‘static Bool_t TDecompLU::InvertLU(TMatrixD&, Double_t, Double_t*)’: root/math/matrix/src/TDecompLU.cxx:883:17: warning: ‘void operator delete [](void*)’ called on unallocated object ‘workd’ [-Wfree-nonheap-object] 883 | delete [] pWorkd; | ^~~~~~ root/src/root/math/matrix/src/TDecompLU.cxx:847:13: note: declared here 847 | Double_t workd[kWorkMax]; ``` This commit proposes to rewrite the logic that there is always a well-defined owning pointer that has to be "deleted" if it's not `nullptr`. | 27 September 2022, 06:48:28 UTC |
a3c94ea | Sergey Linev | 01 June 2022, 17:22:11 UTC | [core] fix nostring warning in TUnixSystem.cxx char ut_host[UT_HOSTSIZE] is marker as __attribute_nonstring__ and therefore cannot be used in operation like strchr or strcat. Therefore copy value into TString first. | 27 September 2022, 06:48:28 UTC |
4162738 | Philippe Canal | 21 September 2022, 17:17:11 UTC | [cmake] Protect against empty COMPILE_DEFINITIONS in genreflex command This applies the change made to ROOT_GENERATE_DICTIONARY in the main branch commit 08ab7e0306 to GENREFLEX_GENERATE_DICTIONARY. This commit in conjunction with 08ab7e0306 fixes #11312. See commit 08ab7e0306 and issue #11312 for more details on the issue and solution. | 26 September 2022, 18:41:36 UTC |
5bec0c3 | Carsten Burgard | 23 September 2022, 14:58:59 UTC | [RF] [HS3] Solve HistFactory exporter crashes Fixes crashes is hs3 histfactory by delaying writing to node. The HistFactory exporter tends to crash with "edited" HistFactory pdfs that look like genuine HistFactory upon first inspection but turn out not to be. This PR delays the writing to the node of the JSON structure until after all components have been found and identified, such that the exporter can cleanly abort in case an export with the HistFactory template is not possible. | 24 September 2022, 20:46:06 UTC |
ac139f0 | Jonas Rembser | 22 September 2022, 23:33:03 UTC | [RF] Consider all curves for `RooPlot::pullHist` in multi-range fits When plotting a pdf in 2 separate ranges, 2 RooCurve objects are created with the same name . When using pullHist or whatever function of RooPlot accessing the RooCurve by its name, only the last of the two curve can be retrieved. Since RooPlot has no way to access its list of containing objects, apart than given the name, only the RooCurve with the upper range will be used. Code to reproduce the problem: ```Python import ROOT as r ws = r.RooWorkspace("workspace") x = ws.factory("x[-10, 10]") x.setRange("lo", -10, -5) x.setRange("hi", 5, 10) pdf = ws.factory("Gaussian::pdf(x, m1[0], s1[3])") ds = pdf.generate(r.RooArgSet(x), 1000) fr = x.frame() ds.plotOn(fr) pdf.plotOn(fr, r.RooFit.Range("lo,hi")) pull = fr.pullHist() c = r.TCanvas() fr2 = x.frame() fr2.addPlotable(pull, "P") fr2.Draw() ``` This commit suggests to fix the issue by also considering the ranges of all the other curves that have the same name as the first curve that was found. Closes #9741. | 24 September 2022, 20:46:06 UTC |
638c6b0 | Jonas Rembser | 22 September 2022, 21:35:54 UTC | [RF] Correctly override `SetName` in RooDataHist and RooDataSet When overriding `SetName` in RooDataHist and RooDataSet, we need to use the function from the direct base class RooAbsData, because this one is already overriding the TNamed function to deal with the RooNameReg correctly. Closes #11414. | 24 September 2022, 20:46:06 UTC |
e75d553 | Jonas Rembser | 22 September 2022, 19:13:23 UTC | [RF] Support global observables from data in BatchMode The new BatchMode is adjusted such that the `testGlobalObservables` unit test is passing when always using the BatchMode for fitting. This also means the following adjustments had to be made: 1. Implement resetting of data for the RooFitDriver 2. Always clone the created constraint term, also in the new BatchMode, because the new BatchMode mutates the computation graph and it's not good if the original model is changed 3. Implement the correct treatment of taking global observables from the dataset in the BatchMode | 24 September 2022, 20:46:06 UTC |
6ed5a4c | Jonas Rembser | 22 September 2022, 19:11:43 UTC | [RF] Remove low-level RooFitDriver unit test `testRooFitDriver` The `testRooFitDriver` unit test was testing the RooFitDriver at a low level. It became annoying because the RooFitDriver is an implementation detail that is changed quite often, and the test often has changed with it. This commit therefore suggests to remove this unit test, because the RooFitDriver is tested already very widely by all the unit tests that use the new BatchMode. | 24 September 2022, 20:46:06 UTC |
443267e | Jonas Rembser | 13 September 2022, 19:18:18 UTC | [RF] Always clone the PDF in RooFit BatchMode `RooAbsPdf::createNLL` Unlike in the old RooFit, the PDF was not cloned in the BatchMode when a likelihood object was created with `RooAbsPdf::createNLL`. This caused trouble in a few places, because changing the state of the NLL changed the state of the original model. Actually, the model was already cloned when a RooSimultaneous was used, and because the cloning is only expensive for large simultaneous models, this change is not expected to have a negative performance impact for realistic workflows. | 22 September 2022, 14:07:44 UTC |
21d6372 | Jonas Rembser | 21 September 2022, 11:05:25 UTC | [RF] Consider the `SplitRange` in overlap checks for simultaneous PDFs When the `SplitRange` command arguemnt is used in `RooAbsPdf::createNLL`, the actual range names used for the fit depend on the channel, with the range names suffixed by the category name. This should be considered correctly in the overlap checks. Closes #11396. | 22 September 2022, 14:07:44 UTC |
18b5673 | Baidyanath Kundu | 19 September 2022, 16:40:45 UTC | Fix long long error in findBuiltinType | 20 September 2022, 20:00:49 UTC |
fdb7f9d | Philippe Canal | 20 September 2022, 16:27:03 UTC | Fix #11383 (deadlock at initialization) (#11384) Previously if a message (for example warning of duplicate dictionary) happened during intialization, it would trigger the initialization of gROOT and could trigger a nested Warning. for example due to the duplicate rootmap file entry and would cause a dead lock (recursiverly taking the non recursive lock GetErrorMutex(). | 20 September 2022, 16:42:52 UTC |
6f07fd4 | Jonas Rembser | 09 September 2022, 13:27:30 UTC | [RF] Consider `depsAreCond` parameter for conditional fits in BatchMode If a RooProdPdf is created with the `Conditional` command argument to do a conditional fit, there is a flag `depsAreCond` to the command argument that specifies if the passed variable set corresponds to the normalization set of the conditional PDF (default), or the conditional observables. In the new BatchMode, this flag was not considered, which is fixed by this PR. A new unit test that checks that the `depsAreCond` parameter is correctly considered in both the BatchMode and the old RooFit is also implemented, based on the issue reproducer code that was kindly provided by @elusian in #11332. This commit also merges the `testRooProductPdf` and `testRooProdPdf` files, because they are both testing the RooProdPdf. Closes #11332. | 20 September 2022, 16:05:52 UTC |
63b4421 | Jonas Rembser | 02 September 2022, 15:00:09 UTC | [RF] Bring back accidentally removed RooEffProd default constructor In ROOT 6.26, the default constructor of the RooEffProd was accidentally removed. This commit is bringing it back, and it also needs to be backported to the 6.26 development branch. Thanks to this forum post for noticing the problem: https://root-forum.cern.ch/t/trouble-with-rooworkspace-since-rooeffprod-default-constructor-is-deleted-in-v6-26/50577 | 20 September 2022, 16:05:52 UTC |
77cbd72 | Jonas Rembser | 16 August 2022, 12:53:01 UTC | [RF] Fix invalid memory access in RooFitDriver destructor In the `RooFitDriver::NodeInfo` destructor, the data tokens for all nodes are reset. However, if this happens after the destruction of the normalization integrals in the computation graph, it tries to reset the data token for nodes that don't exist anymore. Hence, the data token resetting is better done at the beginning of the RooFitDriver destructor. | 20 September 2022, 16:05:52 UTC |
bee6b22 | Jonas Rembser | 16 August 2022, 12:52:51 UTC | [RF] Use less manual memory management in BatchModeHelpers This is not a fix to any issue, just a refactoring to avoid manual memory management in the BatchModeHelpers. | 20 September 2022, 16:05:52 UTC |
be79d7a | Jonas Rembser | 16 August 2022, 12:39:41 UTC | [RF] Fix RooSimultaneous parameter redirection in BatchModeHelpers In the BatchModeHelpers that are used to create the NLL object with the BatchMode, the PDF is cloned if it is a RooSimultaneous. After cloning, the cloned parameters are reattached to the original model. However, it should be the other way around because otherwise the original model points to invalid parameter args when the fit is done. | 20 September 2022, 16:05:52 UTC |
5dae884 | Jonas Rembser | 06 August 2022, 15:22:14 UTC | [RF] Ensure norm set args are part of the graph in NormalizationHelpers Add the arg from the actual node list in the computation graph. Like this, we don't accidentally add internal variable clones that the client args returned. Looking this up is fast because of the name pointer hash map optimization. This is done because it will prevent crashes in future RooFit developments that yet have to be commited. | 20 September 2022, 16:05:52 UTC |
8bfc19a | Jonas Rembser | 06 August 2022, 15:16:50 UTC | [RF] Don't skip zero-weight events by default in new BatchMode The new RooFit batchMode skipped zero-weight events to optimize the likelihood calculation. However, this should not be done in general, because it is unexpected to users is the output of batched computations is not aligned with the original dataset. | 20 September 2022, 16:05:52 UTC |
4da2a18 | Jonas Rembser | 22 August 2021, 11:11:17 UTC | [RF] Register function as value server in pass-through RooRealIntegrals In pass through mode, the RooRealIntegral should have registered the function as a value server, because we directly depend on its value. As it is only determined later in the constructor if a given integral is in pass through mode, we also have to delay the construction of the function proxy object now. It's important to do this correctly, because the new BatchMode uses the value server interface to analyze the computation graph. | 20 September 2022, 16:05:52 UTC |
354ca9e | Jonas Rembser | 06 August 2022, 14:16:27 UTC | [RF] Make `RooArgProxy::isValueServer()` and `isShapeServer()` public There is no reason to hide these member functions from the user, which are `const` getters to values that the user was setting themselves to begin with. | 20 September 2022, 16:05:52 UTC |
7f16c31 | Jonas Rembser | 09 August 2022, 20:12:53 UTC | [RF] Forbid integration of a `RooAbsRealLValue` Integrating a RooAbsRealLValue like a RooRealVar doesn't work in RooFit, which one can check with this code: ```C++ RooRealVar x{"x", "x", 2.0, -5.0, 5.0}; std::unique_ptr<RooAbsReal> xint{x.createIntegral(x)}; xint->Print(); ``` The integral of x from -5 to 5 should be zero, but the integral object only returns the current value of the variable. Some users expect the integral to work, and give the same result as this, which correctly prints out zero: ```C++ RooRealVar x{"x", "x", 2.0, -5.0, 5.0}; RooProduct xId{"xId", "xId", RooArgList{x}}; std::unique_ptr<RooAbsReal> xint{xId.createIntegral(x)}; xint->Print(); ``` This is assumed in two RooFit unit tests: * [testRooWrapperPdf](https://github.com/root-project/root/blob/master/roofit/roofitcore/test/testRooWrapperPdf.cxx#L27) * [testNestedPDFs](https://github.com/guitargeek/roottest/blob/master/root/roofitstats/vectorisedPDFs/testNestedPDFs.cxx#L45) in roottest Both tests **work only by chance** because the stored x value is the same as its integral! As soon as the x value or limits would change, the results don't make sense anymore. As the integration of RooAbsRealLValues never worked correctly and was not used anywhere outside artificial unit tests, this commit suggests so prohibit the integration of RooAbsRealLValues by throwing an exception if `RooAbsRealLValue::createIntegral()` is called. | 20 September 2022, 16:05:52 UTC |
2dc9bc7 | Jonas Rembser | 04 August 2022, 21:07:40 UTC | [RF] Small fixups to RooFit BatchModeHelpers * correctly initialize `RooAbsRealWrapper::_ownsDriver` * remove observables from output parameters in `RooAbsRealWrapper::getParameters()` | 20 September 2022, 16:05:52 UTC |
f2f3f6e | Jonas Rembser | 22 July 2022, 12:19:33 UTC | [RF] Fix tons of memory leaks in RooLagrangianMorphFunc The RooLagrangianMorphFunc was a desaster concerning memory safety. This commit fixes almost all of the memory leaks that were easy to spot because of the usage of `new`. One leak that still remains are the `RooDataHist`s that underlies the `RooHistFunc`s. But to fix that, it would be important to first come up with an elegant way to have the RooHistFunc own their underlying RooDataHist. | 20 September 2022, 16:05:52 UTC |
66cf649 | Jonas Rembser | 06 August 2022, 15:03:31 UTC | [RF] Syncronize RooLagrangianMorphFunc with commit 46fa0292 in master This is done to easier cherry-pick any commits that come after it. | 20 September 2022, 16:05:52 UTC |
d0683cc | Andrei Gheata | 19 September 2022, 09:28:24 UTC | [geom] Putting in sync the materials implementation file with the master. | 19 September 2022, 15:23:05 UTC |
ef62da7 | Matthew Feickert | 07 September 2022, 15:24:40 UTC | [cmake] Update XRootD to v5.5.0 * Update XRootD builtin from v5.4.3 to v5.5.0 - c.f. https://github.com/xrootd/xrootd/releases/tag/v5.5.0 * Follow up to https://github.com/root-project/root PR 10725 | 15 September 2022, 15:33:29 UTC |
3b1b9fb | Vincenzo Eduardo Padulano | 14 September 2022, 15:28:29 UTC | [DF] Bump minimum Dask version to 2022.2 To fix the timeouts seen in our CI runs of the distributed RDataFrame with Dask suite. In particular, the Dask version used was 2021.10.0. Version 2021.11.2 fixes a couple of deadlock bugs which were most probably responsible for the timeouts (see https://distributed.dask.org/en/stable/changelog.html#v2021-11-2). We bump the minimum Dask version to 2022.02.0 ( https://distributed.dask.org/en/stable/changelog.html#v2022-02-0) because it is the last version with support for Python 3.7 (the current minimum Python version for distributed RDataFrame). The test suite was run with Dask 2021.10.0 on both Ubuntu and Fedora, showing the timeout. Version 2021.11.2 doesn't timeout. | 15 September 2022, 11:36:19 UTC |
b2d24a8 | Richard Smith | 15 January 2020, 03:29:50 UTC | PR44540: Prefer an inherited default constructor over an initializer list constructor when initializing from {}. Backport of commit 1b5404aff3. Original commit message: --- We would previously pick between calling an initializer list constructor and calling a default constructor unstably in this situation, depending on whether the inherited default constructor had already been used elsewhere in the program. --- This commit first appeared in LLVM 10 and fixes some problems with modules when building with GCC 12, for example ODRHash asserts in roottest-root-io-uniquePointer. (cherry picked from commit cf32d2bc738367fe0d5c8ccbc0856d345f824228) | 15 September 2022, 05:43:46 UTC |
6247d9c | Vincenzo Eduardo Padulano | 13 September 2022, 11:49:39 UTC | [DF][NFC] Add header guard for MakeDataFrameFromSpec | 13 September 2022, 15:23:18 UTC |
df03600 | Lorenzo Moneta | 09 September 2022, 16:10:37 UTC | [tmva] Backport in 6.26 to fix Keras and PyTorch tutorials (#11325) * [tmva] Fix Keras and PyTorch tutorials (#11110). Backport in 6.26 * [cmake] Fix dependency of some TMVA_SOFIE tutorials * [tmva] Set unique model file names for tutorials The tutorials were using the same model file name and this was causing a problem when running the tutorials in parallel as in the CI builds. Fix also some deprectations happening when using now the new Keras version based on tensorflow.keras Fix dependency also for Python Keras tutorials Disable also Regression Keras tutorials in CI builds since they are too slow for the regression evaluation on single events * [tmva][sofie] Backport new version of TMVA_SOFIE_ONNX.C tutorial Set correct location for input ONNX file | 09 September 2022, 16:10:37 UTC |
9212c74 | Enrico Guiraud | 18 August 2022, 18:37:56 UTC | [IO] Honor READ_WITHOUT_GLOBALREGISTRATION in TNetXNGFile ...as well as in TNetFile, TDavixFile and TWebFile. This fixes #10742. | 08 September 2022, 13:29:48 UTC |
d3ed0d9 | Philippe Canal | 01 September 2022, 15:16:41 UTC | Disable gdml tutorial when gdml is off | 06 September 2022, 18:30:00 UTC |
573ef9f | Philippe Canal | 01 September 2022, 13:56:46 UTC | cling: Improve support for expression in template re-substitution. This addresses the issue described in #11259. In particular it handles the case where the template parameter is a value. i.e. in the inner template of ``` __and_<is_constructible<_Rb_tree_iterator<pair<const unsigned int,string> >,const _Rb_tree_iterator<pair<const unsigned int,string> >&>,is_constructible<bool,const bool&> > ``` | 06 September 2022, 18:30:00 UTC |
2cef314 | will-cern | 06 September 2022, 14:08:50 UTC | [RF] Fix verbose printing of proxies in 6.26 Fix a crash when printing RooFit models with RooListProxy instances. | 06 September 2022, 14:08:50 UTC |
59451f9 | Philippe Canal | 26 August 2022, 23:29:34 UTC | TTreeReaderArray: add support for Double32_t and Float16_t | 02 September 2022, 03:23:21 UTC |
ee92b04 | Philippe Canal | 26 August 2022, 23:29:03 UTC | TDataType: add builtins for Double32_t and Float16_t | 02 September 2022, 03:23:21 UTC |
4af6706 | Enrico Guiraud | 18 August 2022, 10:21:07 UTC | [DF] Fix jitted expressions with sub-branches of aliases Given a string expression such as "alias.subbranch" (where `subbranch` is _not_ also the name of a valid data member of the type of the "alias" top-level branch), we used to transform the expression to `[](T &var0) { return var0.subbranch; }`, which does not compile. Now aliases in jitted expressions are resolved in a first step and only then we try to match the expression against known branch names, fixing the problem. This fixes https://github.com/root-project/root/issues/11207 . | 01 September 2022, 11:54:33 UTC |
c43ca08 | Ivan Kabadzhov | 18 May 2022, 09:56:05 UTC | Avoid using deprecated std::iterator in RTensor.hxx and RAxis.hxx | 01 September 2022, 08:34:48 UTC |
0d09601 | Ivan Kabadzhov | 16 May 2022, 08:12:50 UTC | [core] Remove obsolete (related to `std::iterator`) defines | 01 September 2022, 08:34:48 UTC |
4a9b99f | Ivan Kabadzhov | 16 May 2022, 08:10:33 UTC | [core] Fix type definitions inside `RIndexIter` | 01 September 2022, 08:34:48 UTC |
85ba6c5 | Ivan Kabadzhov | 13 May 2022, 09:19:29 UTC | [core] Avoid deprecated `std::iterator` Deprecated `std::iterator` since C++17 is substituted in: * `TViewPubFunctionsIter` * `TBtreeIter` * `TListIter` * `TMapIter` * `TObjArrayIter` * `TOrdCollectionIter` * `TRefArrayIter` * `RIndexIter` | 01 September 2022, 08:34:48 UTC |
7268c7f | Ivan Kabadzhov | 29 April 2022, 08:42:09 UTC | [DF] Avoid using deprecated `std::iterator` in `TTreeReaderFast` * `std::iterator` was deprecated in C++17; manually declare the member types. * Fix a typo in the iterator's difference_type. | 01 September 2022, 08:34:48 UTC |
eacb59d | Ivan Kabadzhov | 13 April 2022, 13:17:45 UTC | [DF] Avoid using deprecated std::iterator in TTreeReader class | 01 September 2022, 08:34:48 UTC |
8fe606b | Ivan Kabadzhov | 13 April 2022, 10:58:04 UTC | [core] Avoid using deprecated std::iterator in TSeq class | 01 September 2022, 08:34:48 UTC |
4d20d4e | Enrico Guiraud | 24 August 2022, 19:53:13 UTC | [DF] Fix potential use-after-delete in sample callbacks Before this commit, if an action with a sample callback (currently only Snapshot) or a DefinePerSample went out of scope, we did not deregister the corresponding callbacks from the RLoopManager, which would try to run them anyway during the following event loop. As callbacks typically perform a call on the original action or define objects, this could cause a use-after-delete. With this patch, we now associate each callback to the address of the corresponding node of the computation graph and remove callbacks when the nodes go out of scope. This fixes #11222. | 01 September 2022, 08:17:57 UTC |
37cd598 | Enrico Guiraud | 31 August 2022, 09:19:32 UTC | [DF] Adapt test reference to changes in RDF The look of the output graph is the same, but the text representation slightly changed. | 01 September 2022, 08:17:57 UTC |
098e9e3 | Enrico Guiraud | 21 March 2022, 17:10:33 UTC | [DF] Simplify reg-/deregistration with RLoopManager Before this commit, whenever a function was constructing a node of the computation graph it had to "remember" to also register that node with the RLoopManager, which needs to know which nodes are around so it can tell them e.g. to execute task initialization and task finalization logic. Deregistration happened in the node's destructors. With this patch, registration happen in the constructor and deregistration in the destructor of a node, i.e. this logic is where a reader might expect it to be and new code does not have to "remember" to register objects with the RLoopManager. Jitted nodes of the computation graph (e.g. RJittedAction, RJittedDefine) don't need to register themselves with the RLoopManager: the _concrete_ nodes will be registered right before the event loop, at jitting time, and that is good enough. RJittedFilter is an exception: RLoopManager needs to know what filters have been booked even before the event loop (i.e. before concrete filters are instantiated by jitted code) in order to return a correct list from RLoopManager::GetFiltersNames(). So RJittedFilters register themselves with RLoopManager at construction time and deregister themselves in RJittedFilter::SetFilter, i.e. when they can be sure that the concrete filter has been instantiated in jitted code and it has been registered with RLoopManager, making the RJittedFilter registration redundant. | 01 September 2022, 08:17:57 UTC |
c4521b7 | Vincenzo Eduardo Padulano | 23 August 2022, 08:45:51 UTC | [DF][NFC] Add modules to py_compile sources | 30 August 2022, 14:52:01 UTC |
b9760d4 | Bertrand Bellenot | 24 August 2022, 13:49:49 UTC | Disable brotli support feature in Freetype (not only on Apple) (#11242) (#11247) * Disable brotli support feature in Freetype (not only on Apple) Should fix #11239 * Remove code instead of commenting it out | 24 August 2022, 13:49:49 UTC |
064ef26 | Bertrand Bellenot | 24 August 2022, 13:03:00 UTC | [cmake] Add POLICY CMP0135 and set it to NEW (#11246) Fixes the following warning with CMake 3.24: ``` CMake Warning (dev) at /usr/share/cmake/Modules/ExternalProject.cmake:3071 (message): The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is not set. The policy's OLD behavior will be used. When using a URL download, the timestamps of extracted files should preferably be that of the time of extraction, otherwise code that depends on the extracted contents might not be rebuilt if the URL changes. The OLD behavior preserves the timestamps from the archive instead, but this is usually not what you want. Update your project to the NEW behavior or specify the DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this robustness issue. ``` | 24 August 2022, 13:03:00 UTC |
26247b6 | Jonas Hahnfeld | 18 August 2022, 08:09:28 UTC | [cmake] Check for json_fwd.hpp in versions > 3.11 Our forward declaration in REveElement.hxx breaks with the versioned namespaces in 3.11, so we require the json_fwd.hpp header. (cherry picked from commit ee52a8b016375ef8acde6c2df7a68c70a1b10699) | 19 August 2022, 14:57:01 UTC |
53177d9 | Jonas Hahnfeld | 18 August 2022, 07:13:14 UTC | [eve7] Include json_fwd.hpp if available Version 3.11 of nlohmann/json introduced "versioned, ABI-tagged inline namespace"s, which breaks our forward declaration. Fortunately, we can assume the json_fwd.hpp header to be present starting from that same version because the JSON_MultipleHeaders option now defaults to ON and even if not, json_fwd.hpp is installed since patch version 3.11.2. For earlier versions, both methods work but json_fwd.hpp isn't guaranteed to be installed. Still use it if available. Fixes #11130 (cherry picked from commit ed56a35f395a7fe36fb0a1cc08b59f562cf6f91a) | 19 August 2022, 14:57:01 UTC |
d255a24 | Jonas Hahnfeld | 18 August 2022, 06:57:44 UTC | [eve7] Add missing includes to REveElement.hxx (cherry picked from commit a927c57326ba2c28e9cd1ef37201f33049c05a77) | 19 August 2022, 14:57:01 UTC |
2fc5a84 | Bertrand Bellenot | 19 August 2022, 09:06:42 UTC | Fix potential crash with RBrowser on Windows Fix potential crash when quitting ROOT from RBrowser on Windows and simplify the code used to close the TBrowser main Window | 19 August 2022, 09:55:52 UTC |
1dd0002 | Lorenzo Moneta | 16 August 2022, 10:07:05 UTC | [tmva] Fix pytorch sofie parser for new pytorch version (#11189) This is a backport in 6.26 of PR #10233 | 16 August 2022, 10:07:05 UTC |
f9681d0 | Jonas Hahnfeld | 12 August 2022, 12:14:18 UTC | [cling] Try to avoid crashes in llvm::identify_magic The overload taking a path opens the file and then mmap its contents. This can cause bus errors when another process truncates the file while we are trying to read it. Instead just read the first 1024 bytes, which should be enough for identify_magic to do its work. (cherry picked from commit 588e13c4da4a63427ef156f2624f5a5a15bfd298) | 15 August 2022, 15:25:54 UTC |
7b9f152 | Jonas Hahnfeld | 12 August 2022, 06:43:57 UTC | [io] Make case values constant expressions Current clang-16 from main complains: "case value is not a constant expression". Even if that error is probably relaxed before Clang 16 is released early next year, there is really no point in converting an integer into an enum just to get a numeric value back. This is (intentionally) a partial revert of commit ac36d879629f. An alternative solution appears to be replacing EProperty (which refers to the enum type in TVirtualCollectionProxy) with ::EProperty from TDictionary.h. However, since the enum values are used as a bit mask and fCase is defined as UInt_t anyhow, it makes more sense to compare integer constants from the start. Closes #11128 (cherry picked from commit cc28da57f0b8e2878a2c047504a49762d7d8dfb5) | 12 August 2022, 11:09:42 UTC |
9ee0304 | Bertrand Bellenot | 10 August 2022, 08:03:14 UTC | [v6-26] Revert "[cmake] Update xrootd hash after a new version of the xrootd tar file (#11106)" This reverts commit 0c9a4e605b48f355461065f9292dd905ec209f31. | 10 August 2022, 10:37:52 UTC |
b1d6c06 | Jonas Hahnfeld | 09 August 2022, 10:55:32 UTC | [VecOps] Add missing #include <limits> to RVec.hxx The file uses std::numeric_limits, defined in <limits>. That header is transitively included in most configurations, but for example not when building with a recent libstdc++ (with less transitive includes) and configuring with cxx14 and without VDT. (cherry picked from commit d2e56f982e303d83784f28e1524bc24c39b350c4) | 09 August 2022, 14:31:45 UTC |
19f8fd6 | MarkusFrankATcernch | 08 August 2022, 06:56:34 UTC | Fix to compute radiation length on call TGeoMixture::ComputeDerivedQu… (#11115) * Fix to compute radiation length on call TGeoMixture::ComputeDerivedQuantities() * Fix test to check material radiation length and interaction length when changing units * Fix clang formatting errors (cherry picked from commit cd992545ae18f0d036e382408d4acfccfa16db48) | 08 August 2022, 15:34:18 UTC |
fb285a8 | Enrico Guiraud | 04 August 2022, 20:09:36 UTC | [DF] Preserve ordering of snapshotted columns Before this patch (and since a2156969b4), Snapshot was enforcing alphabetical ordering of the output branches. The ordering specified as argument, however, could carry meaning: it might make sense to have branches carrying related physics information close together in the TTree so that they appear close to each other e.g. in TTree::Print or in TBrowser. With this patch we keep the original column ordering (the one explicitly specified by the user or the one coming from TTree) when creating output branches. One exception are branches from the input TTree that are Redefine'd in case of auto-generated lists of output columns: Define'd and Redefine'd columns appear before TTree branches, which might move the position of branches that have been Redefine'd with respect to others that have not. | 07 August 2022, 17:09:31 UTC |
7430097 | Jonas Rembser | 21 September 2021, 13:15:17 UTC | [cmake] Protect against empty `COMPILE_DEFINITIONS` in rootcint command In the `rootcint` command defined in `RootMacros.cmake`, the `COMPILE_DEFINITIONS` from the target are forwarded as compiler flags. The `COMPILE_DEFINITIONS` are stored in the `module_defs` variable with a generator expression: ``` set(module_defs $<TARGET_PROPERTY:${ARG_MODULE},COMPILE_DEFINITIONS>) ``` Then, the definitions are added to the rootcint command with this expression: ``` "$<$<BOOL:${module_defs}>:-D$<JOIN:${module_defs},;-D>>" ``` This code was almost copied exactly from the CMake documentation example: https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html In particular, the `BOOL` check makes sure that the if the target property is empty, we will not get a bare `-D` with nothing after it, corrupting the rootcint command. However, there is no protextion against the case where the `COMPILE_DEFINITIONS` target property is not empty, but its elements are empty strings! This happened to me in my recent build. Instead of trying to figure out where the empty strings are added to the `COMPILE_DEFINITIONS`, it is better to also protect against empty target property elements in the CMake generator expressions, which is implemented in this commit. | 07 August 2022, 15:29:49 UTC |
14e66c2 | Andrei Gheata | 04 August 2022, 12:51:47 UTC | Fix computation of the radiation length and nuclear interaction lengt… (#11060) (#11104) * Fix computation of the radiation length and nuclear interaction length when ROOT uses G4 units * Fix computation of the radiation length and nuclear interaction length when ROOT uses G4 units (cherry picked from commit 103bb7e4d930b4921debceec6ad7d418bacae4fc) Co-authored-by: MarkusFrankATcernch <MarkusFrankATcernch@users.noreply.github.com> | 04 August 2022, 12:51:47 UTC |
0c9a4e6 | Lorenzo Moneta | 03 August 2022, 15:26:59 UTC | [cmake] Update xrootd hash after a new version of the xrootd tar file (#11106) | 04 August 2022, 07:23:51 UTC |
1af31cd | Enrico Guiraud | 01 August 2022, 22:29:14 UTC | [DF] Remove false sharing from BufferedFillHelper In a synthetic benchmark that only fills a single histogram for which no binning was provided (i.e. the case in which BufferedFillHelper gets used), these are sample runtimes on my laptop before this patch: 0 3735 1 3742 2 3534 4 3191 8 2733 16 1725 and after: 0 3552 1 3876 2 2466 4 1696 8 1202 16 1038 where over 8 threads hyper-threading kicks in and 0 threads means no `EnableImplicitMT()` at all. | 03 August 2022, 16:05:32 UTC |
c139416 | Axel Naumann | 28 July 2022, 18:26:45 UTC | "Update ROOT version files to v6.26/07." | 28 July 2022, 18:26:45 UTC |
e846415 | Axel Naumann | 28 July 2022, 18:04:51 UTC | "Update ROOT version files to v6.26/06." | 28 July 2022, 18:04:51 UTC |