From 0d15e88be531d566aa04974dbfd744e9fa886d7d Mon Sep 17 00:00:00 2001 From: MarkusFrankATcernch Date: Wed, 25 Aug 2021 14:43:34 +0200 Subject: [PATCH 001/577] Fix to TGeoMaterial::AddElement to allow to add elements/materials/mixtures with weight zero (#8900) --- geom/geom/src/TGeoMaterial.cxx | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/geom/geom/src/TGeoMaterial.cxx b/geom/geom/src/TGeoMaterial.cxx index 141362e13556f..83b6fb17c7fd8 100644 --- a/geom/geom/src/TGeoMaterial.cxx +++ b/geom/geom/src/TGeoMaterial.cxx @@ -18,6 +18,7 @@ Base class describing materials. */ #include +#include #include "TMath.h" #include "TObjArray.h" #include "TGeoElement.h" @@ -796,8 +797,17 @@ void TGeoMixture::AverageProperties() void TGeoMixture::AddElement(Double_t a, Double_t z, Double_t weight) { TGeoElementTable *table = gGeoManager->GetElementTable(); - if (z<1 || z>table->GetNelements()-1) + + // Check preconditions + if (weight < 0e0) { + Fatal("AddElement", "Cannot add element with negative weight %g to mixture %s", weight, GetName()); + } + else if ( weight < std::numeric_limits::epsilon() ) { + return; + } + else if (z<1 || z>table->GetNelements()-1) { Fatal("AddElement", "Cannot add element having Z=%d to mixture %s", (Int_t)z, GetName()); + } Int_t i; for (i=0; iGetName(), weight, GetName()); + } + else if ( weight < std::numeric_limits::epsilon() ) { + return; + } if (!mat->IsMixture()) { elem = mat->GetBaseElement(); if (elem) { @@ -873,7 +895,7 @@ void TGeoMixture::AddElement(TGeoMaterial *mat, Double_t weight) if (!elnew) continue; // check if we have the element already defined in the parent mixture for (j=0; jGetElementTable(); if (!fElements) fElements = new TObjArray(128); Bool_t exist = kFALSE; + + // Check preconditions + if (!elem) { + Fatal("AddElement", "Cannot add INVALID element to mixture %s", GetName()); + } + else if (weight < 0e0) { + Fatal("AddElement", "Cannot add element %s with negative weight %g to mixture %s", + elem->GetName(), weight, GetName()); + } + else if ( weight < std::numeric_limits::epsilon() ) { + return; + } // If previous elements were defined by A/Z, add corresponding TGeoElements for (Int_t i=0; iAt(i); - if (!elemold) fElements->AddAt(elemold = table->GetElement((Int_t)fZmixture[i]), i); + if (!elemold) { + fElements->AddAt(elemold = table->GetElement((Int_t)fZmixture[i]), i); + } if (elemold == elem) exist = kTRUE; } - if (!exist) fElements->AddAtAndExpand(elem, fNelements); + if (!exist) { + fElements->AddAtAndExpand(elem, fNelements); + } AddElement(elem->A(), elem->Z(), weight); } From 501e9c072a5ed37ee647e6fcbd1e3d675d535aed Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Wed, 25 Aug 2021 05:19:07 +0530 Subject: [PATCH 002/577] Included ROperator_Conv in sofie/CMakeLists.txt --- tmva/sofie/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tmva/sofie/CMakeLists.txt b/tmva/sofie/CMakeLists.txt index 6ac3c4c717dfe..4af0fd4f9d873 100644 --- a/tmva/sofie/CMakeLists.txt +++ b/tmva/sofie/CMakeLists.txt @@ -19,6 +19,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTTMVASofie TMVA/ROperator_Gemm.hxx TMVA/ROperator_Relu.hxx TMVA/ROperator_Transpose.hxx + TMVA/ROperator_Conv.hxx TMVA/SOFIE_common.hxx SOURCES src/RModel.cxx @@ -32,4 +33,4 @@ target_include_directories(ROOTTMVASofie PUBLIC set_target_properties(ROOTTMVASofie PROPERTIES POSITION_INDEPENDENT_CODE TRUE) -ROOT_ADD_TEST_SUBDIRECTORY(test) \ No newline at end of file +ROOT_ADD_TEST_SUBDIRECTORY(test) From 4f5928c44f741e7f56c5de4f266a70b80d9738ce Mon Sep 17 00:00:00 2001 From: Advait Dhingra <62119114+AdvaitDhingra@users.noreply.github.com> Date: Wed, 25 Aug 2021 18:31:06 +0200 Subject: [PATCH 003/577] Added Histogram ROOT File Tutorial (#8699) * Modified h1draw.C tutorial I clarified some things. Modified tutorial Removed my file and modified h1draw.C Minor changes Fixed mistake Simplified * Changed name * Renamed pyroot file * Update h1ReadAndDraw.C --- tutorials/CMakeLists.txt | 6 +++--- tutorials/demos.C | 2 +- tutorials/hist/{h1draw.C => h1ReadAndDraw.C} | 18 ++++++++---------- tutorials/legacy/benchmarks.C | 4 ++-- tutorials/legacy/pyroot/benchmarks.py | 2 +- tutorials/pyroot/demo.py | 2 +- .../pyroot/{h1draw.py => h1ReadAndDraw.py} | 0 7 files changed, 16 insertions(+), 18 deletions(-) rename tutorials/hist/{h1draw.C => h1ReadAndDraw.C} (86%) rename tutorials/pyroot/{h1draw.py => h1ReadAndDraw.py} (100%) diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index 910491e265689..436c230be42be 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -430,7 +430,7 @@ set(hist-hbars-depends tutorial-tree-cernbuild) set(benchmarks-depends tutorial-hsimple tutorial-fit-fit1 tutorial-fit-myfit - tutorial-hist-h1draw + tutorial-hist-h1ReadAndDraw tutorial-hist-FirstContour tutorial-geom-na49view tutorial-tree-ntuple1 @@ -646,11 +646,11 @@ if(ROOT_pyroot_FOUND) #---Python tutorials dependencies-------------------------------------- set(pyroot-ntuple1-depends tutorial-pyroot-hsimple-py) - set(pyroot-h1draw-depends tutorial-pyroot-hsimple-py) + set(pyroot-h1ReadAndDraw-depends tutorial-pyroot-hsimple-py) set(pyroot-benchmarks-depends tutorial-pyroot-hsimple-py tutorial-pyroot-fit1-py tutorial-pyroot-na49view-py - tutorial-pyroot-h1draw-py + tutorial-pyroot-h1ReadAndDraw-py tutorial-pyroot-ntuple1-py) set(pyroot-fit1-depends tutorial-pyroot-fillrandom-py) set(pyroot-na49view-depends tutorial-pyroot-geometry-py) diff --git a/tutorials/demos.C b/tutorials/demos.C index 829d9563020de..c2b92556cd83c 100644 --- a/tutorials/demos.C +++ b/tutorials/demos.C @@ -29,7 +29,7 @@ void demos() { bar->AddButton("fillrandom", ".x hist/fillrandom.C", "Histograms with Random Numbers from a Function"); bar->AddButton("fit1", ".x fit/fit1.C", "A Simple Fitting Example"); bar->AddButton("multifit", ".x fit/multifit.C", "Fitting in Subranges of Histograms"); - bar->AddButton("h1draw", ".x hist/h1draw.C", "Drawing Options for 1D Histograms"); + bar->AddButton("h1ReadAndDraw", ".x hist/h1ReadAndDraw.C", "Drawing Options for 1D Histograms"); bar->AddButton("graph", ".x graphs/graph.C", "Example of a Simple Graph"); bar->AddButton("gerrors", ".x graphs/gerrors.C", "Example of a Graph with Error Bars"); bar->AddButton("tornado", ".x graphics/tornado.C", "Examples of 3-D PolyMarkers"); diff --git a/tutorials/hist/h1draw.C b/tutorials/hist/h1ReadAndDraw.C similarity index 86% rename from tutorials/hist/h1draw.C rename to tutorials/hist/h1ReadAndDraw.C index b8e9065e62831..1463629ac65db 100644 --- a/tutorials/hist/h1draw.C +++ b/tutorials/hist/h1ReadAndDraw.C @@ -1,7 +1,7 @@ /// \file /// \ingroup tutorial_hist /// \notebook -js -/// 1-D histogram drawing options. +/// Read a 1-D histogram from a ROOT File and draw it. /// We attach (or generate) the ROOT file in `$ROOTSYS/tutorials/hsimple.root` /// or `$PWD/hsimple.root` /// We draw one histogram in different formats. @@ -23,17 +23,15 @@ #include "TSystem.h" #include "TInterpreter.h" -void h1draw() +void h1ReadAndDraw() { - TString dir = gROOT->GetTutorialDir(); - dir.Append("/hsimple.C"); - dir.ReplaceAll("/./","/"); - if (gBenchmark->GetBench("hsimple") < 0) gInterpreter->LoadMacro(dir.Data()); - TFile *example = (TFile*)gROOT->ProcessLineFast("hsimple(1)"); - if (!example) return; + // Fetch and open the hsimple.root File + TFile *example = TFile::Open(gROOT->GetTutorialDir() + "/hsimple.root"); - example->ls(); - TH1 *hpx = (TH1*)example->Get("hpx"); + example->ls(); // Show the file contents + // Get the histogram from the ROOT File + TH1 *hpx = nullptr; // pointer to base class TH1 is enough + example->GetObject("hpx", hpx); TCanvas *c1 = new TCanvas("c1","Histogram Drawing Options",200,10,700,900); TPad *pad1 = new TPad("pad1", diff --git a/tutorials/legacy/benchmarks.C b/tutorials/legacy/benchmarks.C index c0a4e0e0c620f..acccf7ec24dd0 100644 --- a/tutorials/legacy/benchmarks.C +++ b/tutorials/legacy/benchmarks.C @@ -43,7 +43,7 @@ void benchmarks() { summary->AddText(" graphics/formula1.C"); summary->AddText(" hist/fillrandom.C"); summary->AddText(" fit/fit1.C"); - summary->AddText(" hist/h1draw.C"); + summary->AddText(" hist/h1ReadAndDraw.C"); summary->AddText(" graphs/graph.C"); summary->AddText(" graphs/gerrors.C"); summary->AddText(" graphics/tornado.C"); @@ -59,7 +59,7 @@ void benchmarks() { bexec(dir,"graphics/formula1.C"); bexec(dir,"hist/fillrandom.C"); bexec(dir,"fit/fit1.C"); - bexec(dir,"hist/h1draw.C"); + bexec(dir,"hist/h1ReadAndDraw.C"); bexec(dir,"graphs/graph.C"); bexec(dir,"graphs/gerrors.C"); bexec(dir,"graphics/tornado.C"); diff --git a/tutorials/legacy/pyroot/benchmarks.py b/tutorials/legacy/pyroot/benchmarks.py index 4593e2b53d5f0..375feed0e776f 100644 --- a/tutorials/legacy/pyroot/benchmarks.py +++ b/tutorials/legacy/pyroot/benchmarks.py @@ -15,7 +15,7 @@ ## macro files macros = [ 'framework.py', 'hsimple.py', 'hsum.py', 'formula1.py', - 'fillrandom.py','fit1.py', 'h1draw.py', 'graph.py', + 'fillrandom.py','fit1.py', 'h1ReadAndDraw.py', 'graph.py', 'gerrors.py', 'tornado.py', 'surfaces.py', 'zdemo.py', 'geometry.py', 'na49view.py', 'file.py', 'ntuple1.py', 'rootmarks.py' ] diff --git a/tutorials/pyroot/demo.py b/tutorials/pyroot/demo.py index fdd0f307cf6d8..d064231858fe3 100644 --- a/tutorials/pyroot/demo.py +++ b/tutorials/pyroot/demo.py @@ -42,7 +42,7 @@ bar.AddButton( 'fillrandom', r'TPython::Exec( "' + to_run.format('fillrandom.py') + '" );','Histograms with Random Numbers from a Function' ) bar.AddButton( 'fit1', r'TPython::Exec( "' + to_run.format('fit1.py') + '" );', 'A Simple Fitting Example' ) bar.AddButton( 'multifit', r'TPython::Exec( "' + to_run.format('multifit.py') + '" );', 'Fitting in Subranges of Histograms' ) -bar.AddButton( 'h1draw', r'TPython::Exec( "' + to_run.format('h1draw.py') + '" );', 'Drawing Options for 1D Histograms' ) +bar.AddButton( 'h1draw', r'TPython::Exec( "' + to_run.format('h1ReadAndDraw.py') + '" );', 'Drawing Options for 1D Histograms' ) bar.AddButton( 'graph', r'TPython::Exec( "' + to_run.format('graph.py') + '" );', 'Example of a Simple Graph' ) bar.AddButton( 'gerrors', r'TPython::Exec( "' + to_run.format('gerrors.py') + '" );', 'Example of a Graph with Error Bars' ) bar.AddButton( 'tornado', r'TPython::Exec( "' + to_run.format('tornado.py') + '" );', 'Examples of 3-D PolyMarkers' ) diff --git a/tutorials/pyroot/h1draw.py b/tutorials/pyroot/h1ReadAndDraw.py similarity index 100% rename from tutorials/pyroot/h1draw.py rename to tutorials/pyroot/h1ReadAndDraw.py From 74f821ab0d8eb0aa1acea61698a53a6ede713035 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 27 Aug 2021 15:26:48 +0200 Subject: [PATCH 004/577] [RF] Turn docstrings in RooFit pythonizations into raw strings Fixes the `SyntaxError: invalid escape sequence \c` that arises when the `\code` command is used in the doxygen code. Closes GitHub issue #8902. --- .../_roofit/_rooabscollection.py | 10 +++++----- .../ROOT/pythonization/_roofit/_rooabsdata.py | 10 +++++----- .../ROOT/pythonization/_roofit/_rooabspdf.py | 20 +++++++++---------- .../ROOT/pythonization/_roofit/_rooabsreal.py | 14 ++++++------- .../_roofit/_rooabsreallvalue.py | 6 +++--- .../pythonization/_roofit/_roocategory.py | 4 ++-- .../ROOT/pythonization/_roofit/_roochi2var.py | 4 ++-- .../pythonization/_roofit/_roodatahist.py | 4 ++-- .../ROOT/pythonization/_roofit/_roodataset.py | 6 +++--- .../ROOT/pythonization/_roofit/_roodecays.py | 12 +++++------ .../pythonization/_roofit/_roogenfitstudy.py | 4 ++-- .../pythonization/_roofit/_rooglobalfunc.py | 18 ++++++++--------- .../ROOT/pythonization/_roofit/_roomcstudy.py | 14 ++++++------- .../pythonization/_roofit/_roomsgservice.py | 4 ++-- .../ROOT/pythonization/_roofit/_roonllvar.py | 4 ++-- .../ROOT/pythonization/_roofit/_rooprodpdf.py | 4 ++-- .../pythonization/_roofit/_roosimultaneous.py | 4 ++-- .../pythonization/_roofit/_roosimwstool.py | 4 ++-- .../pythonization/_roofit/_rooworkspace.py | 8 ++++---- 19 files changed, 77 insertions(+), 77 deletions(-) diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabscollection.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabscollection.py index 17440ac0d4d71..7f0c0ce2838a2 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabscollection.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabscollection.py @@ -16,7 +16,7 @@ class RooAbsCollection(object): - """Some member functions of RooAbsCollection that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooAbsCollection that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooAbsCollection::printLatex. For example, the following code is equivalent in PyROOT: \code{.py} # Directly passing a RooCmdArg: @@ -29,7 +29,7 @@ class RooAbsCollection(object): @cpp_signature("RooAbsArg *RooAbsCollection::addClone(const RooAbsArg& var, Bool_t silent=kFALSE) ;") def addClone(self, arg, silent=False): - """The RooAbsCollection::addClone() function is pythonized with the command argument pythonization. + r"""The RooAbsCollection::addClone() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ clonedArg = self._addClone(arg, silent) @@ -37,7 +37,7 @@ def addClone(self, arg, silent=False): @cpp_signature("Bool_t RooAbsCollection::addOwned(RooAbsArg& var, Bool_t silent=kFALSE);") def addOwned(self, arg, silent=False): - """The RooAbsCollection::addOwned() function is pythonized with the command argument pythonization. + r"""The RooAbsCollection::addOwned() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function.""" self._addOwned(arg, silent) SetOwnership(arg, False) @@ -46,10 +46,10 @@ def addOwned(self, arg, silent=False): "RooAbsCollection::printLatex(const RooCmdArg& arg1=RooCmdArg(), const RooCmdArg& arg2=RooCmdArg()," " const RooCmdArg& arg3=RooCmdArg(), const RooCmdArg& arg4=RooCmdArg()," " const RooCmdArg& arg5=RooCmdArg(), const RooCmdArg& arg6=RooCmdArg()," - " const RooCmdArg& arg7=RooCmdArg(), const RooCmdArg& arg8=RooCmdArg()) const ;" + " const RooCmdArg& arg7=RooCmdArg(), const RooCmdArg& arg8=RooCmdArg()) const ;" ) def printLatex(self, *args, **kwargs): - """The RooAbsCollection::printLatex() function is pythonized with the command argument pythonization. + r"""The RooAbsCollection::printLatex() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsCollection.printLatex` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsdata.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsdata.py index 161b2e7e77c9a..f10a7c0c5a480 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsdata.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsdata.py @@ -16,7 +16,7 @@ class RooAbsData(object): - """Some member functions of RooAbsData that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooAbsData that take a RooCmdArg as argument also support keyword arguments. This applies to RooAbsData::plotOn, RooAbsData::createHistogram, RooAbsData::reduce, RooAbsData::statOn. For example, the following code is equivalent in PyROOT: \code{.py} @@ -36,7 +36,7 @@ class RooAbsData(object): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def plotOn(self, *args, **kwargs): - """The RooAbsData::plotOn() function is pythonized with the command argument pythonization. + r"""The RooAbsData::plotOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsData.plotOn` for keyword arguments. @@ -51,7 +51,7 @@ def plotOn(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def createHistogram(self, *args, **kwargs): - """The RooAbsData::createHistogram() function is pythonized with the command argument pythonization. + r"""The RooAbsData::createHistogram() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsData.createHistogram` for keyword arguments. @@ -65,7 +65,7 @@ def createHistogram(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;" ) def reduce(self, *args, **kwargs): - """The RooAbsData::reduce() function is pythonized with the command argument pythonization. + r"""The RooAbsData::reduce() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsData.reduce` for keyword arguments. @@ -80,7 +80,7 @@ def reduce(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def statOn(self, *args, **kwargs): - """The RooAbsData::statOn() function is pythonized with the command argument pythonization. + r"""The RooAbsData::statOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsData.statOn` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabspdf.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabspdf.py index 15c1ddbb2333c..275cb2356c331 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabspdf.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabspdf.py @@ -16,7 +16,7 @@ class RooAbsPdf(RooAbsReal): - """Some member functions of RooAbsPdf that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooAbsPdf that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooAbsPdf::fitTo, RooAbsPdf::plotOn, RooAbsPdf::generate, RooAbsPdf::paramOn, RooAbsPdf::createCdf, RooAbsPdf::generateBinned, RooAbsPdf::createChi2, RooAbsPdf::prepareMultiGen and RooAbsPdf::createNLL. For example, the following code is equivalent in PyROOT: @@ -32,7 +32,7 @@ class RooAbsPdf(RooAbsReal): "RooAbsPdf::fitTo(RooAbsData&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&)" ) def fitTo(self, *args, **kwargs): - """The RooAbsPdf::fitTo() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::fitTo() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.fitTo` for keyword arguments. @@ -49,7 +49,7 @@ def fitTo(self, *args, **kwargs): ") const;" ) def plotOn(self, *args, **kwargs): - """The RooAbsPdf::plotOn() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::plotOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.plotOn` for keyword arguments. @@ -63,7 +63,7 @@ def plotOn(self, *args, **kwargs): " const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;" ) def generate(self, *args, **kwargs): - """The RooAbsPdf::generate() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::generate() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.generate` for keyword arguments. @@ -78,7 +78,7 @@ def generate(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def paramOn(self, *args, **kwargs): - """The RooAbsPdf::paramOn() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::paramOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.paramOn` for keyword arguments. @@ -91,7 +91,7 @@ def paramOn(self, *args, **kwargs): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def createNLL(self, *args, **kwargs): - """The RooAbsPdf::createNLL() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::createNLL() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.createNLL` for keyword arguments. @@ -104,7 +104,7 @@ def createNLL(self, *args, **kwargs): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def createChi2(self, *args, **kwargs): - """The RooAbsPdf::createChi2() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::createChi2() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.createChi2` for keyword arguments. @@ -118,7 +118,7 @@ def createChi2(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def createCdf(self, *args, **kwargs): - """The RooAbsPdf::createCdf() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::createCdf() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.createCdf` for keyword arguments. @@ -132,7 +132,7 @@ def createCdf(self, *args, **kwargs): " const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) const;" ) def generateBinned(self, *args, **kwargs): - """The RooAbsPdf::generateBinned() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::generateBinned() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.generateBinned` for keyword arguments. @@ -146,7 +146,7 @@ def generateBinned(self, *args, **kwargs): " const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;" ) def prepareMultiGen(self, *args, **kwargs): - """The RooAbsPdf::prepareMultiGen() function is pythonized with the command argument pythonization. + r"""The RooAbsPdf::prepareMultiGen() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsPdf.prepareMultiGen` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreal.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreal.py index 093e96861d185..69e2b0254e27b 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreal.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreal.py @@ -16,7 +16,7 @@ class RooAbsReal(object): - """Some member functions of RooAbsReal that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooAbsReal that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooAbsReal::plotOn, RooAbsReal::createHistogram, RooAbsReal::chi2FitTo, RooAbsReal::createChi2, RooAbsReal::createRunningIntegral and RooAbsReal::createIntegral For example, the following code is equivalent in PyROOT: @@ -38,7 +38,7 @@ class RooAbsReal(object): " const RooCmdArg& arg9=RooCmdArg(), const RooCmdArg& arg10=RooCmdArg()) const ;" ) def plotOn(self, *args, **kwargs): - """The RooAbsReal::plotOn() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::plotOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.plotOn` for keyword arguments. @@ -53,7 +53,7 @@ def plotOn(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def createHistogram(self, *args, **kwargs): - """The RooAbsReal::createHistogram() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::createHistogram() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.createHistogram` for keyword arguments. @@ -67,7 +67,7 @@ def createHistogram(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def createIntegral(self, *args, **kwargs): - """The RooAbsReal::createIntegral() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::createIntegral() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.createIntegral` for keyword arguments. @@ -81,7 +81,7 @@ def createIntegral(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def createRunningIntegral(self, *args, **kwargs): - """The RooAbsReal::createRunningIntegral() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::createRunningIntegral() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.createRunningIntegral` for keyword arguments. @@ -94,7 +94,7 @@ def createRunningIntegral(self, *args, **kwargs): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def createChi2(self, *args, **kwargs): - """The RooAbsReal::createChi2() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::createChi2() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.createChi2` for keyword arguments. @@ -107,7 +107,7 @@ def createChi2(self, *args, **kwargs): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def chi2FitTo(self, *args, **kwargs): - """The RooAbsReal::chi2FitTo() function is pythonized with the command argument pythonization. + r"""The RooAbsReal::chi2FitTo() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsReal.chi2FitTo` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreallvalue.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreallvalue.py index e2c47320120b4..beeda81d36f3c 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreallvalue.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooabsreallvalue.py @@ -15,7 +15,7 @@ class RooAbsRealLValue(object): - """Some member functions of RooAbsRealLValue that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooAbsRealLValue that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooAbsRealLValue::createHistogram and RooAbsRealLValue::frame. For example, the following code is equivalent in PyROOT: \code{.py} @@ -35,7 +35,7 @@ class RooAbsRealLValue(object): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def createHistogram(self, *args, **kwargs): - """The RooAbsRealLValue::createHistogram() function is pythonized with the command argument pythonization. + r"""The RooAbsRealLValue::createHistogram() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsRealLValue.createHistogram` for keyword arguments. @@ -48,7 +48,7 @@ def createHistogram(self, *args, **kwargs): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def frame(self, *args, **kwargs): - """The RooAbsRealLValue::frame() function is pythonized with the command argument pythonization. + r"""The RooAbsRealLValue::frame() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooAbsRealLValue.frame` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roocategory.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roocategory.py index f20e556d4422b..3ae54c785c8ca 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roocategory.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roocategory.py @@ -15,7 +15,7 @@ class RooCategory(object): - """Constructor of RooCategory takes a map as an argument also supports python dictionaries. + r"""Constructor of RooCategory takes a map as an argument also supports python dictionaries. For example, the following code is equivalent in PyROOT: \code{.py} # Default bindings : @@ -30,7 +30,7 @@ class RooCategory(object): @cpp_signature("RooCategory(const char* name, const char* title, const std::map& allowedStates);") def __init__(self, *args, **kwargs): - """The RooCategory constructor is pythonized for converting python dict to std::map. + r"""The RooCategory constructor is pythonized for converting python dict to std::map. The instances in the dict must correspond to the template argument in std::map of the constructor. """ # Redefinition of `RooCategory` constructor for converting python dict to std::map. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roochi2var.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roochi2var.py index a1c6de25bd6e9..c9fce72dddee9 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roochi2var.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roochi2var.py @@ -15,7 +15,7 @@ class RooChi2Var(object): - """Constructor of RooChi2Var takes a RooCmdArg as argument also supports keyword arguments.""" + r"""Constructor of RooChi2Var takes a RooCmdArg as argument also supports keyword arguments.""" @cpp_signature( [ @@ -30,7 +30,7 @@ class RooChi2Var(object): ] ) def __init__(self, *args, **kwargs): - """The RooCategory constructor is pythonized for converting python dict to std::map. + r"""The RooCategory constructor is pythonized for converting python dict to std::map. The keywords must correspond to the CmdArg of the constructor function. """ # Redefinition of `RooChi2Var` constructor for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodatahist.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodatahist.py index ff67e0261f632..1d51a56169438 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodatahist.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodatahist.py @@ -15,7 +15,7 @@ class RooDataHist(object): - """Constructor of RooDataHist takes a RooCmdArg as argument also supports keyword arguments. + r"""Constructor of RooDataHist takes a RooCmdArg as argument also supports keyword arguments. For example, the following code is equivalent in PyROOT: \code{.py} # Directly passing a RooCmdArg: @@ -33,7 +33,7 @@ class RooDataHist(object): ] ) def __init__(self, *args, **kwargs): - """The RooDataHist constructor is pythonized with the command argument pythonization and for converting python dict to std::map. + r"""The RooDataHist constructor is pythonized with the command argument pythonization and for converting python dict to std::map. The keywords must correspond to the CmdArg of the constructor function. The instances in dict must correspond to the template argument in std::map of the constructor. """ diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodataset.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodataset.py index 51a8097e7c3b8..0f4f04c6726f3 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodataset.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodataset.py @@ -15,7 +15,7 @@ class RooDataSet(object): - """Some member functions of RooDataSet that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooDataSet that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooDataSet() constructor and RooDataSet::plotOnXY. For example, the following code is equivalent in PyROOT: \code{.py} @@ -33,7 +33,7 @@ class RooDataSet(object): " const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;" ) def __init__(self, *args, **kwargs): - """The RooDataSet constructor is pythonized with the command argument pythonization. + r"""The RooDataSet constructor is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the constructor. """ # Redefinition of `RooDataSet` constructor for keyword arguments. @@ -48,7 +48,7 @@ def __init__(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) const ;" ) def plotOnXY(self, *args, **kwargs): - """The RooDataSet::plotOnXY() function is pythonized with the command argument pythonization. + r"""The RooDataSet::plotOnXY() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooDataSet.plotOnXY` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodecays.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodecays.py index b7802f19c46d7..c885b3708654c 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodecays.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roodecays.py @@ -15,7 +15,7 @@ class RooDecay(object): - """Some constructors of classes like RooDecay, RooBDecay, RooBCPGenDecay, RooBCPEffDecay and RooBMixDecay that take an enum + r"""Some constructors of classes like RooDecay, RooBDecay, RooBCPGenDecay, RooBCPEffDecay and RooBMixDecay that take an enum DecayType as argument also support keyword arguments. For example, the following code is equivalent in PyROOT: \code{.py} @@ -31,7 +31,7 @@ class RooDecay(object): "RooDecay(const char *name, const char *title, RooRealVar& t, RooAbsReal& tau, const RooResolutionModel& model, DecayType type) ;" ) def __init__(self, *args, **kwargs): - """The RooDecay constructor is pythonized with enum values.""" + r"""The RooDecay constructor is pythonized with enum values.""" kwargs = _decaytype_string_to_enum(self, kwargs) self._init(*args, **kwargs) @@ -44,7 +44,7 @@ class RooBDecay(object): " const RooResolutionModel& model, DecayType type);" ) def __init__(self, *args, **kwargs): - """The RooBDecay constructor is pythonized with enum values.""" + r"""The RooBDecay constructor is pythonized with enum values.""" kwargs = _decaytype_string_to_enum(self, kwargs) self._init(*args, **kwargs) @@ -56,7 +56,7 @@ class RooBCPGenDecay(object): " RooAbsReal& delMistag, RooAbsReal& mu, const RooResolutionModel& model, DecayType type=DoubleSided) ;" ) def __init__(self, *args, **kwargs): - """The RooBCPGenDecay constructor is pythonized with enum values.""" + r"""The RooBCPGenDecay constructor is pythonized with enum values.""" kwargs = _decaytype_string_to_enum(self, kwargs) self._init(*args, **kwargs) @@ -69,7 +69,7 @@ class RooBCPEffDecay(object): " const RooResolutionModel& model, DecayType type=DoubleSided) ;" ) def __init__(self, *args, **kwargs): - """The RooBCPEffDecay constructor is pythonized with enum values.""" + r"""The RooBCPEffDecay constructor is pythonized with enum values.""" kwargs = _decaytype_string_to_enum(self, kwargs) self._init(*args, **kwargs) @@ -81,6 +81,6 @@ class RooBMixDecay(object): " RooAbsReal& delMistag, const RooResolutionModel& model, DecayType type=DoubleSided) ;" ) def __init__(self, *args, **kwargs): - """The RooBMixDecay constructor is pythonized with enum values.""" + r"""The RooBMixDecay constructor is pythonized with enum values.""" kwargs = _decaytype_string_to_enum(self, kwargs) self._init(*args, **kwargs) diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roogenfitstudy.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roogenfitstudy.py index b1cfea8cdc720..d1a30b1e5b846 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roogenfitstudy.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roogenfitstudy.py @@ -15,7 +15,7 @@ class RooGenFitStudy(object): - """Some member functions of RooGenFitStudy that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooGenFitStudy that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooGenFitStudy::setGenConfig. """ @@ -26,7 +26,7 @@ class RooGenFitStudy(object): ] ) def setGenConfig(self, *args, **kwargs): - """The RooGenFitStudy::setGenConfig() function is pythonized with the command argument pythonization. + r"""The RooGenFitStudy::setGenConfig() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooGenFitStudy.setGenConfig` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooglobalfunc.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooglobalfunc.py index b70198a84a405..faf45adc19225 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooglobalfunc.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooglobalfunc.py @@ -60,7 +60,7 @@ "const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;" ) def FitOptions(*args, **kwargs): - """The FitOptions() function is pythonized with the command argument pythonization. + r"""The FitOptions() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `FitOptions` for keyword arguments. @@ -77,7 +77,7 @@ def FitOptions(*args, **kwargs): "const RooCmdArg& arg7=RooCmdArg::none(),const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def Format(*args, **kwargs): - """The Format() function is pythonized with the command argument pythonization. + r"""The Format() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `Format` for keyword arguments. @@ -96,7 +96,7 @@ def Format(*args, **kwargs): "const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none()) ;" ) def Frame(*args, **kwargs): - """The Frame() function is pythonized with the command argument pythonization. + r"""The Frame() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `Frame` for keyword arguments. @@ -113,7 +113,7 @@ def Frame(*args, **kwargs): "const RooCmdArg& arg7=RooCmdArg::none(),const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def MultiArg(*args, **kwargs): - """The MultiArg() function is pythonized with the command argument pythonization. + r"""The MultiArg() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `MultiArg` for keyword arguments. @@ -125,7 +125,7 @@ def MultiArg(*args, **kwargs): @cpp_signature("YVar(const RooAbsRealLValue& var, const RooCmdArg& arg=RooCmdArg::none()) ;") def YVar(*args, **kwargs): - """The YVar() function is pythonized with the command argument pythonization. + r"""The YVar() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `YVar` for keyword arguments. @@ -140,7 +140,7 @@ def YVar(*args, **kwargs): @cpp_signature("ZVar(const RooAbsRealLValue& var, const RooCmdArg& arg=RooCmdArg::none()) ;") def ZVar(*args, **kwargs): - """The ZVar() function is pythonized with the command argument pythonization. + r"""The ZVar() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `ZVar` for keyword arguments. @@ -155,7 +155,7 @@ def ZVar(*args, **kwargs): @cpp_signature("Slice(std::map const&) ;") def Slice(*args, **kwargs): - """The Slice function is pythonized for converting python dict to std::map. + r"""The Slice function is pythonized for converting python dict to std::map. The keywords must correspond to the CmdArg of the function. The instances in the dict must correspond to the template argument in std::map of the function. """ @@ -178,7 +178,7 @@ def Slice(*args, **kwargs): ] ) def Import(*args, **kwargs): - """The Import function is pythonized for converting python dict to std::map. + r"""The Import function is pythonized for converting python dict to std::map. The keywords must correspond to the CmdArg of the function. The instances in the dict must correspond to the template argument in std::map of the function. """ @@ -195,7 +195,7 @@ def Import(*args, **kwargs): @cpp_signature("Link(const std::map&) ;") def Link(*args, **kwargs): - """The Link function is pythonized for converting python dict to std::map. + r"""The Link function is pythonized for converting python dict to std::map. The keywords must correspond to the CmdArg of the function. The instances in the dict must correspond to the template argument in std::map of the function. """ diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomcstudy.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomcstudy.py index be3913548e126..b52d72941f4c1 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomcstudy.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomcstudy.py @@ -15,7 +15,7 @@ class RooMCStudy(object): - """Some member functions of RooMCStudy that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooMCStudy that take a RooCmdArg as argument also support keyword arguments. So far, this applies to constructor RooMCStudy(), RooMCStudy::plotParamOn, RooMCStudy::plotParam, RooMCStudy::plotNLL, RooMCStudy::plotError and RooMCStudy::plotPull. For example, the following code is equivalent in PyROOT: \code{.py} @@ -34,7 +34,7 @@ class RooMCStudy(object): " const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def __init__(self, *args, **kwargs): - """The RooMCStudy constructor is pythonized with the command argument pythonization. + r"""The RooMCStudy constructor is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the constructor function. """ # Redefinition of `RooMCStudy` constructor for keyword arguments. @@ -48,7 +48,7 @@ def __init__(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def plotParamOn(self, *args, **kwargs): - """The RooMCStudy::plotParamOn() function is pythonized with the command argument pythonization. + r"""The RooMCStudy::plotParamOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function.""" # Redefinition of `RooMCStudy.plotParamOn` for keyword arguments. args, kwargs = _kwargs_to_roocmdargs(*args, **kwargs) @@ -66,7 +66,7 @@ def plotParamOn(self, *args, **kwargs): ] ) def plotParam(self, *args, **kwargs): - """The RooMCStudy::plotParam() function is pythonized with the command argument pythonization. + r"""The RooMCStudy::plotParam() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooMCStudy.plotParam` for keyword arguments. @@ -80,7 +80,7 @@ def plotParam(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def plotNLL(self, *args, **kwargs): - """The RooMCStudy::plotNLL() function is pythonized with the command argument pythonization. + r"""The RooMCStudy::plotNLL() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooMCStudy.plotNLL` for keyword arguments. @@ -94,7 +94,7 @@ def plotNLL(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def plotError(self, *args, **kwargs): - """The RooMCStudy::plotError() function is pythonized with the command argument pythonization. + r"""The RooMCStudy::plotError() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooMCStudy.plotError` for keyword arguments. @@ -108,7 +108,7 @@ def plotError(self, *args, **kwargs): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;" ) def plotPull(self, *args, **kwargs): - """The RooMCStudy::plotError() function is pythonized with the command argument pythonization. + r"""The RooMCStudy::plotError() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooMCStudy.plotPull` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomsgservice.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomsgservice.py index 1ba93ec1a773c..34058463a6c1c 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomsgservice.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roomsgservice.py @@ -15,7 +15,7 @@ class RooMsgService(object): - """Some member functions of RooMsgService that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooMsgService that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooMsgService::addStream. For example, the following code is equivalent in PyROOT: \code{.py} @@ -31,7 +31,7 @@ class RooMsgService(object): " const RooCmdArg& arg4=RooCmdArg(), const RooCmdArg& arg5=RooCmdArg(), const RooCmdArg& arg6=RooCmdArg());" ) def addStream(self, *args, **kwargs): - """The RooMsgService::addStream() function is pythonized with the command argument pythonization. + r"""The RooMsgService::addStream() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the function. """ # Redefinition of `RooMsgService.addStream` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roonllvar.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roonllvar.py index 3ce92f5287b6e..9961003b26d66 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roonllvar.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roonllvar.py @@ -15,7 +15,7 @@ class RooNLLVar(object): - """RooNLLVar() constructor takes a RooCmdArg as argument also supports keyword arguments.""" + r"""RooNLLVar() constructor takes a RooCmdArg as argument also supports keyword arguments.""" @cpp_signature( "RooNLLVar(const char* name, const char* title, RooAbsPdf& pdf, RooAbsData& data," @@ -24,7 +24,7 @@ class RooNLLVar(object): " const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none(),const RooCmdArg& arg9=RooCmdArg::none()) ;" ) def __init__(self, *args, **kwargs): - """The RooNLLVar constructor is pythonized with the command argument pythonization. + r"""The RooNLLVar constructor is pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the constructor function. """ # Redefinition of `RooNLLVar` constructor for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooprodpdf.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooprodpdf.py index 7c524f5df709c..1ef6051f76f51 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooprodpdf.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooprodpdf.py @@ -15,7 +15,7 @@ class RooProdPdf(object): - """RooProdPdf() constructor takes a RooCmdArg as argument also supports keyword arguments. + r"""RooProdPdf() constructor takes a RooCmdArg as argument also supports keyword arguments. For example, the following code is equivalent in PyROOT: \code{.py} # Directly passing a RooCmdArg: @@ -38,7 +38,7 @@ class RooProdPdf(object): " const RooCmdArg& arg7=RooCmdArg(), const RooCmdArg& arg8=RooCmdArg()) ;" ) def __init__(self, *args, **kwargs): - """The RooProdPdf constructor is pythonized with the command argument pythonization. + r"""The RooProdPdf constructor is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the constructor. """ args, kwargs = _kwargs_to_roocmdargs(*args, **kwargs) diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimultaneous.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimultaneous.py index 2883c2cb0e9f2..c6de907f8196d 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimultaneous.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimultaneous.py @@ -15,7 +15,7 @@ class RooSimultaneous(object): - """Some member functions of RooSimultaneous that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooSimultaneous that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooSimultaneous::plotOn. For example, the following code is equivalent in PyROOT: \code{.py} @@ -36,7 +36,7 @@ class RooSimultaneous(object): " const RooCmdArg& arg9=RooCmdArg(), const RooCmdArg& arg10=RooCmdArg()) const;" ) def plotOn(self, *args, **kwargs): - """The RooSimultaneous::plotOn() function is pythonized with the command argument pythonization. + r"""The RooSimultaneous::plotOn() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooSimultaneous.plotOn` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimwstool.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimwstool.py index bd0c3b57f5f4e..ebb343fd6cf83 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimwstool.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_roosimwstool.py @@ -15,7 +15,7 @@ class RooSimWSTool(object): - """Some member functions of RooSimWSTool that take a RooCmdArg as argument also support keyword arguments. + r"""Some member functions of RooSimWSTool that take a RooCmdArg as argument also support keyword arguments. So far, this applies to RooSimWSTool::build. For example, the following code is equivalent in PyROOT: \code{.py} @@ -34,7 +34,7 @@ class RooSimWSTool(object): " const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;" ) def build(self, *args, **kwargs): - """The RooSimWSTool::build() function is pythonized with the command argument pythonization. + r"""The RooSimWSTool::build() function is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the function. """ # Redefinition of `RooSimWSTool.build` for keyword arguments. diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooworkspace.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooworkspace.py index c1891d007159e..2019b0144d345 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooworkspace.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/_rooworkspace.py @@ -13,7 +13,7 @@ class RooWorkspace(object): - """The RooWorkspace::import function can't be used in PyROOT because `import` is a reserved python keyword. + r"""The RooWorkspace::import function can't be used in PyROOT because `import` is a reserved python keyword. For this reason, an alternative with a capitalized name is provided: \code{.py} workspace.Import(x) @@ -27,7 +27,7 @@ class RooWorkspace(object): " const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg(),const RooCmdArg& arg9=RooCmdArg()) ;" ) def __init__(self, *args, **kwargs): - """The RooWorkspace constructor is pythonized with the command argument pythonization. + r"""The RooWorkspace constructor is pythonized with the command argument pythonization. The keywords must correspond to the CmdArgs of the constructor. """ # Redefinition of `RooWorkspace` constructor for keyword arguments. @@ -56,14 +56,14 @@ def __getitem__(self, key): ] ) def Import(self, *args, **kwargs): - """ + r""" Support the C++ `import()` as `Import()` in python """ return getattr(self, "import")(*args, **kwargs) def RooWorkspace_import(self, *args, **kwargs): - """The RooWorkspace::import function can't be used in PyROOT because `import` is a reserved python keyword. + r"""The RooWorkspace::import function can't be used in PyROOT because `import` is a reserved python keyword. So, Import() is used and pythonized with the command argument pythonization. The keywords must correspond to the CmdArg of the `import()` function. """ From d20d833b016aef0225e565901fa1b2547c98f32b Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 27 Aug 2021 15:51:48 +0200 Subject: [PATCH 005/577] [RF] Fix in `pythonize_roofit_class` for use with Python 2 The docstring of an instancemethod can't be mutated in Python 2, so the underlying function has to be obtained first via the `__func__` attribute. The original warning: ``` AttributeError: attribute '__doc__' of 'instancemethod' objects is not writable ``` --- .../python/ROOT/pythonization/_roofit/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/__init__.py index d90e8c2ad0007..124eca4db1f47 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/__init__.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_roofit/__init__.py @@ -149,7 +149,7 @@ def rebind_instancemethod(to_class, from_class, func_name): import sys - if sys.version_info > (3, 0): + if sys.version_info >= (3, 0): to_method = from_method else: import new @@ -197,6 +197,10 @@ def pythonize_roofit_class(klass, name): func_new = getattr(python_klass, func_name) import inspect + import sys + + if sys.version_info < (3, 0): + func_new = func_new.__func__ if func_new.__doc__ is None: func_new.__doc__ = func_orig.__doc__ From 79a669bb1cd0ccd8bcaeb6c8f6b09c5ced761ac7 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Thu, 26 Aug 2021 18:42:01 +0200 Subject: [PATCH 006/577] [core] TDirectory::RegisterGDirectory must not update other TDirectory without lock: As we cannot even know whether the other TDirectory has been deleted in the meantime, we have to skip the optimization of erasing globalptr from the list of the oldvalue. This is expected to fix MT crashes observed by Alice. --- core/base/src/TDirectory.cxx | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/core/base/src/TDirectory.cxx b/core/base/src/TDirectory.cxx index 3fed536b1f0fc..98a2316565fe2 100644 --- a/core/base/src/TDirectory.cxx +++ b/core/base/src/TDirectory.cxx @@ -1306,23 +1306,16 @@ void TDirectory::RegisterContext(TContext *ctxt) { } //////////////////////////////////////////////////////////////////////////////// -/// Register a std::atomic pointing to this TDirectory object +/// Register a std::atomic that will soon be pointing to this TDirectory object void TDirectory::RegisterGDirectory(std::atomic *globalptr) { ROOT::Internal::TSpinLockGuard slg(fSpinLock); - auto oldvalue = globalptr->load(); - - auto iter = std::find(fGDirectories.begin(), fGDirectories.end(), globalptr); - if (iter != fGDirectories.begin()) + if (std::find(fGDirectories.begin(), fGDirectories.end(), globalptr) != fGDirectories.end()) fGDirectories.push_back(globalptr); - - if (oldvalue && oldvalue != this) { - iter = std::find(oldvalue->fGDirectories.begin(), oldvalue->fGDirectories.end(), globalptr); - if (iter != oldvalue->fGDirectories.begin()) - oldvalue->fGDirectories.erase(iter); - } + // globalptr->load()->fGDirectories will still contain globalptr, but we cannot + // know whether globalptr->load() has been deleted by another thread in the meantime. } From 9d6cd4cdc00e0b4c55f531ee3777445b1d3c4c60 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Mon, 30 Aug 2021 14:33:12 +0530 Subject: [PATCH 007/577] [GSoC][TMVA][ROOT Storage] PyKeras Parser TMVA (#8430) * [TMVA][ROOT Storage] Initial Commit for PyKeras Converter * Fixed scope issue for list comprehensions * Fixed issues for adding ROperators and Initialized tensors * Modified: adding input tensor info and output tensor names * Modify: Code for model data extraction * Modify Keras Parser 1) Modify Map for ActivationType and DType for Keras 2) Added support for Input Layer for Keras Functional API 3) Added Support for Activation Layer with ReLU * Fix: Matrix Transpose issue leading to incorrect outputs * Add: Tests for Keras Parser * Fix: Segmentation violation on multiple calls of Parse() & Improvements 1) Fixed the segmentation violation by removing the Py_XDECREF() 2) Removed RModelParser_Common.h and moved helper functions to SOFIE_common & under namespace SOFIE::PyKeras 3) Modified casting and usage of PyArrayObject* (now a float* is used instead of RTensor) 4) Minor improvements and modifications in code structure and naming conventions * Add Runtime error catch if Python String is not successfully run * Modify: Configure CMakeLists.txt and Tests for RModelParser_Keras 1) Added GTests for RModelParser_Keras 2) Added EmitFromKeras to generate header files 3) Configured CMake for tests * Modify: Numpy Random number generator in tests * Refactor: Functions for adding ROperators * Modify: RModelParser_Keras and TestRModelParserKeras 1. Call to AddBlasRoutines() while adding Dense layer 2. Refactor RModelParser_Keras 3. Modify Tests to include from tensorflow.keras 4. Fix failing Test for RModelParserKeras on Functional API Model * Move Python Utility functions to PyMethodBase * Add Documentation * Modify CMakeLists.txt for tests to have CMAKE_SOURCE_DIR instead of relative path --- tmva/pymva/CMakeLists.txt | 3 + tmva/pymva/inc/LinkDef.h | 2 +- tmva/pymva/inc/TMVA/PyMethodBase.h | 4 + tmva/pymva/inc/TMVA/RModelParser_Keras.h | 104 ++++ tmva/pymva/src/PyMethodBase.cxx | 32 ++ tmva/pymva/src/RModelParser_Keras.cxx | 540 ++++++++++++++++++ tmva/pymva/test/CMakeLists.txt | 36 +- tmva/pymva/test/EmitFromKeras.cxx | 34 ++ tmva/pymva/test/TestRModelParserKeras.C | 103 ++++ .../test/generateKerasModelFunctional.py | 23 + .../test/generateKerasModelSequential.py | 21 + tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 + tmva/sofie/src/SOFIE_common.cxx | 9 + 13 files changed, 910 insertions(+), 2 deletions(-) create mode 100644 tmva/pymva/inc/TMVA/RModelParser_Keras.h create mode 100644 tmva/pymva/src/RModelParser_Keras.cxx create mode 100644 tmva/pymva/test/EmitFromKeras.cxx create mode 100644 tmva/pymva/test/TestRModelParserKeras.C create mode 100644 tmva/pymva/test/generateKerasModelFunctional.py create mode 100644 tmva/pymva/test/generateKerasModelSequential.py diff --git a/tmva/pymva/CMakeLists.txt b/tmva/pymva/CMakeLists.txt index 7f23dbdf6abbc..b9eeaedfe4033 100644 --- a/tmva/pymva/CMakeLists.txt +++ b/tmva/pymva/CMakeLists.txt @@ -19,6 +19,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyMVA TMVA/MethodPyKeras.h TMVA/MethodPyRandomForest.h TMVA/MethodPyTorch.h + TMVA/RModelParser_Keras.h TMVA/PyMethodBase.h SOURCES src/MethodPyAdaBoost.cxx @@ -26,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyMVA src/MethodPyKeras.cxx src/MethodPyRandomForest.cxx src/MethodPyTorch.cxx + src/RModelParser_Keras.cxx src/PyMethodBase.cxx LIBRARIES ${PYTHON_LIBRARIES_Development_Main} @@ -35,6 +37,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyMVA Thread RIO TMVA + ROOTTMVASofie ) ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h index c44abbf50d663..bfde1b80eddab 100644 --- a/tmva/pymva/inc/LinkDef.h +++ b/tmva/pymva/inc/LinkDef.h @@ -15,6 +15,6 @@ #pragma link C++ class TMVA::MethodPyGTB+; #pragma link C++ class TMVA::MethodPyKeras+; #pragma link C++ class TMVA::MethodPyTorch+; - +#pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+; #endif diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h index c1b9b13a5d942..384a135bbe84a 100644 --- a/tmva/pymva/inc/TMVA/PyMethodBase.h +++ b/tmva/pymva/inc/TMVA/PyMethodBase.h @@ -130,6 +130,10 @@ namespace TMVA { static PyObject *fGlobalNS; // global namesapace PyObject *fLocalNS; // local namesapace + public: + static void PyRunString(TString code, PyObject *fGlobalNS, PyObject* fLocalNS); // Overloaded static Python utlity function for running Python code + static const char* PyStringAsString(PyObject *string); // Python Utility function for converting a Python String object to const char* + ClassDef(PyMethodBase, 0) // Virtual base class for all TMVA method }; diff --git a/tmva/pymva/inc/TMVA/RModelParser_Keras.h b/tmva/pymva/inc/TMVA/RModelParser_Keras.h new file mode 100644 index 0000000000000..23da30510608c --- /dev/null +++ b/tmva/pymva/inc/TMVA/RModelParser_Keras.h @@ -0,0 +1,104 @@ +// @(#)root/tmva/pymva $Id$ +// Author: Sanjiban Sengupta, 2021 + +/********************************************************************************** + * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * + * Package: TMVA * + * Web : http://tmva.sourceforge.net * + * * + * Description: * + * Functionality for parsing a saved Keras .H5 model into RModel object * + * * + * Authors (alphabetical): * + * Sanjiban Sengupta * + * * + * Copyright (c) 2021: * + * CERN, Switzerland * + * * + * * + * Redistribution and use in source and binary forms, with or without * + * modification, are permitted according to the terms listed in LICENSE * + * (http://tmva.sourceforge.net/LICENSE) * + **********************************************************************************/ + + +#ifndef TMVA_SOFIE_RMODELPARSER_KERAS +#define TMVA_SOFIE_RMODELPARSER_KERAS + +#include + +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include + +#include "TMVA/RModel.hxx" +#include "TMVA/SOFIE_common.hxx" +#include "TMVA/Types.h" +#include "TMVA/OperatorList.hxx" + +#include "TMVA/PyMethodBase.h" + +#include "Rtypes.h" +#include "TString.h" + + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ +namespace PyKeras{ + + +// Referencing Python utility functions present in PyMethodBase +static void(& PyRunString)(TString, PyObject*, PyObject*) = PyMethodBase::PyRunString; +static const char*(& PyStringAsString)(PyObject*) = PyMethodBase::PyStringAsString; + + +namespace INTERNAL{ + // For adding Keras layer into RModel object + void AddKerasLayer(RModel& rmodel, PyObject* fLayer); + + + // Declaring Internal Functions for Keras layers which don't have activation as an additional attribute + std::unique_ptr MakeKerasActivation(PyObject* fLayer); // For instantiating ROperator for Keras Activation Layer + std::unique_ptr MakeKerasReLU(PyObject* fLayer); // For instantiating ROperator for Keras ReLU layer + std::unique_ptr MakeKerasPermute(PyObject* fLayer); // For instantiating ROperator for Keras Permute Layer + + + // Declaring Internal function for Keras layers which have additional activation attribute + std::unique_ptr MakeKerasDense(PyObject* fLayer); // For instantiating ROperator for Keras Dense Layer + + // For mapping Keras layer with the preparatory functions for ROperators + using KerasMethodMap = std::unordered_map (*)(PyObject* fLayer)>; + using KerasMethodMapWithActivation = std::unordered_map(*)(PyObject* fLayer)>; + + const KerasMethodMap mapKerasLayer = + { + {"Activation", &MakeKerasActivation}, + {"Permute", &MakeKerasPermute}, + + //For activation layers + {"ReLU", &MakeKerasReLU}, + + //For layers with activation attributes + {"relu", &MakeKerasReLU} + }; + + const KerasMethodMapWithActivation mapKerasLayerWithActivation = + { + {"Dense", &MakeKerasDense}, + }; + + // Function which returns values from a Python Tuple object in vector of size_t + std::vector GetShapeFromTuple(PyObject* shapeTuple); + +}//INTERNAL + +/// Parser function for translatng Keras .h5 model into a RModel object. +/// Accepts the file location of a Keras model and returns the +/// equivalent RModel object. +RModel Parse(std::string filename); + +}//PyKeras +}//SOFIE +}//Experimental +}//TMVA +#endif //TMVA_PYMVA_RMODELPARSER_KERAS diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx index 5cc273ec49a5b..51b1585ebe8ad 100644 --- a/tmva/pymva/src/PyMethodBase.cxx +++ b/tmva/pymva/src/PyMethodBase.cxx @@ -323,3 +323,35 @@ void PyMethodBase::PyRunString(TString code, TString errorMessage, int start) { Log() << kFATAL << errorMessage << Endl; } } + +/////////////////////////////////////////////////////////////////////////////// +/// Execute Python code from string +/// +/// \param[in] code Python code as string +/// \param[in] fGlobalNS Global Namespace for Python Session +/// \param[in] fLocalNS Local Namespace for Python Session +/// +/// Overloaded static Helper function to run python code +/// from string and throw runtime error if the Python session +/// is unable to execute the code + +void PyMethodBase::PyRunString(TString code, PyObject *fGlobalNS, PyObject *fLocalNS){ + PyObject *fPyReturn = PyRun_String(code, Py_single_input, fGlobalNS, fLocalNS); + if (!fPyReturn) { + std::cout<<"\nPython error message:\n"; + PyErr_Print(); + throw std::runtime_error("\nFailed to run python code: "+code); + } +} + +/////////////////////////////////////////////////////////////////////////////// +/// Returns `const char*` from Python string in PyObject +/// +/// \param[in] string Python String object +/// \return String representation in `const char*` + +const char* PyMethodBase::PyStringAsString(PyObject* string){ + PyObject* encodedString = PyUnicode_AsUTF8String(string); + const char* cstring = PyBytes_AsString(encodedString); + return cstring; +} diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx new file mode 100644 index 0000000000000..9dfd41637bb33 --- /dev/null +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -0,0 +1,540 @@ +// @(#)root/tmva/pymva $Id$ +// Author: Sanjiban Sengupta 2021 + +/********************************************************************************** + * Project : TMVA - a Root-integrated toolkit for multivariate data analysis * + * Package : TMVA * + * Function: TMVA::Experimental::SOFIE::PyKeras::Parse * + * * + * Description: * + * Parser function for translating Keras .h5 model to RModel object * + * * + * Example Usage: * + * ~~~ {.cpp} * + * using TMVA::Experimental::SOFIE; * + * RModel model = PyKeras::Parse("trained_model_dense.h5"); * + * ~~~ * + * * + **********************************************************************************/ + +#include "TMVA/RModelParser_Keras.h" + + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ +namespace PyKeras{ + +namespace INTERNAL{ + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Adds equivalent ROperator with respect to Keras model layer +/// into the referenced RModel object +/// +/// \param[in] rmodel RModel object +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \param[out] RModel object with the added ROperator +/// +/// Function adds equivalent ROperator into the referenced RModel object. +/// Keras models can have layers like Dense and Conv which have activation +/// function as an attribute. Function first searches if layer object is among +/// the ones which don't have activation attribute and then calls the respective +/// preparation function to get the ROperator object, which is then added +/// into the RModel object. If passed layer is among the ones which may have activation +/// attribute, then it checks for the activation attribute, if present then first adds +/// the primary operator into the RModel object, and then adds the operator for the +/// activation function with appropriate changes in the names of input and output +/// tensors for both of them. +/// Example of such layers is the Dense Layer. For a dense layer with input tensor name +/// dense2BiasAdd0 and output tensor name dense3Relu0 with relu as activation attribute +/// will be transformed into a ROperator_Gemm with input tensor name dense2BiasAdd0 +/// & output tensor name dense3Dense (layerName+layerType), and a subsequent +/// ROperator_Relu with input tensor name as dense3Dense and output tensor name +/// as dense3Relu0. +/// +/// For developing new preparatory functions for supporting Keras layers in future, +/// all one needs is to extract the required properties and attributes from the fLayer +/// dictionary which contains all the information about any Keras layer and after +/// any required transformations, these are passed for instantiating the ROperator +/// object. +/// +/// The fLayer dictionary which holds all the information about a Keras layer has +/// following structure:- +/// dict fLayer { 'layerType' : Type of the Keras layer +/// 'layerAttributes' : Attributes of the keras layer as returned by layer.get_config() +/// 'layerInput' : List of names of input tensors +/// 'layerOutput' : List of names of output tensors +/// 'layerDType' : Data-type of the Keras layer +/// 'layerWeight' : List of weight tensor names of Keras layers +/// } +void AddKerasLayer(RModel& rmodel, PyObject* fLayer){ + std::string fLayerType = PyStringAsString(PyDict_GetItemString(fLayer,"layerType")); + + //For layers without additional activation attribute + auto findLayer = mapKerasLayer.find(fLayerType); + if(findLayer != mapKerasLayer.end()){ + rmodel.AddOperator((findLayer->second)(fLayer)); + return; + } + + //For layers like Dense & Conv which has additional activation attribute + else if(mapKerasLayerWithActivation.find(fLayerType) != mapKerasLayerWithActivation.end()){ + findLayer = mapKerasLayerWithActivation.find(fLayerType); + PyObject* fAttributes=PyDict_GetItemString(fLayer,"layerAttributes"); + + std::string fLayerName = PyStringAsString(PyDict_GetItemString(fAttributes,"name")); + std::string fLayerActivation = PyStringAsString(PyDict_GetItemString(fAttributes,"activation")); + + //Checking if additional attribute exixts + if(fLayerActivation != "linear"){ + PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); + PyObject* fInputs = PyDict_GetItemString(fLayer,"layerInput"); + std::string fActivationLayerOutput = PyStringAsString(PyList_GetItem(fOutputs,0)); + + // Making changes in the names of the input and output tensor names + PyList_SetItem(fOutputs,0,PyUnicode_FromString((fLayerName+fLayerType).c_str())); + PyDict_SetItemString(fLayer,"layerOutput",fOutputs); + rmodel.AddOperator((findLayer->second)(fLayer)); + + std::string fActivationLayerInput = PyStringAsString(PyList_GetItem(fOutputs,0)); + PyList_SetItem(fInputs,0,PyUnicode_FromString(fActivationLayerInput.c_str())); + PyList_SetItem(fOutputs,0,PyUnicode_FromString(fActivationLayerOutput.c_str())); + PyDict_SetItemString(fLayer,"layerInput",fInputs); + PyDict_SetItemString(fLayer,"layerOutput",fOutputs); + + auto findActivationLayer = mapKerasLayer.find(fLayerActivation); + if(findActivationLayer == mapKerasLayer.end()){ + throw std::runtime_error("TMVA::SOFIE - Parsing Keras Activation layer " + fLayerActivation + " is not yet supported"); + } + rmodel.AddOperator((findActivationLayer->second)(fLayer)); + } + else{ + rmodel.AddOperator((findLayer->second)(fLayer)); + } + return; + } + + else{ + throw std::runtime_error("TMVA::SOFIE - Parsing Keras layer " + fLayerType + " is not yet supported"); + } + +} + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Gemm object +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// For Keras's Dense layer, the names of the input tensor, output tensor, and +/// weight tensors are extracted, and then are passed to instantiate a +/// ROperator_Gemm object using the required attributes. +std::unique_ptr MakeKerasDense(PyObject* fLayer){ + PyObject* fInputs = PyDict_GetItemString(fLayer,"layerInput"); + PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); + std::string fLayerDType = PyStringAsString(PyDict_GetItemString(fLayer,"layerDType")); + + std::string fLayerInputName = PyStringAsString(PyList_GetItem(fInputs,0)); + std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); + + // Extracting names of weight tensors + // In the list of weight tensors from fLayer, we get the names of Kernel + // weights and the bias weights. + PyObject* fWeightNames = PyDict_GetItemString(fLayer,"layerWeight"); + std::string fKernelName = PyStringAsString(PyList_GetItem(fWeightNames,0)); + std::string fBiasName = PyStringAsString(PyList_GetItem(fWeightNames,1)); + + std::unique_ptr op; + + float attr_alpha = 1.0; + float attr_beta = 1.0; + int_t attr_transA = 0; + int_t attr_transB = 0; + + switch(ConvertStringToType(fLayerDType)){ + case ETensorType::FLOAT: + op.reset(new ROperator_Gemm(attr_alpha, attr_beta, attr_transA, attr_transB, fLayerInputName, fKernelName, fBiasName, fLayerOutputName)); + break; + + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Gemm does not yet support input type " + fLayerDType); + } + return op; +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator object for activation functions +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// For Keras's keras.layers.Activation layer, the activation attribute is +/// extracted and appropriate function for adding the function is called. +std::unique_ptr MakeKerasActivation(PyObject* fLayer){ + PyObject* fAttributes=PyDict_GetItemString(fLayer,"layerAttributes"); + std::string fLayerActivation = PyStringAsString(PyDict_GetItemString(fAttributes,"activation")); + + auto findLayer = mapKerasLayer.find(fLayerActivation); + if(findLayer == mapKerasLayer.end()){ + throw std::runtime_error("TMVA::SOFIE - Parsing Keras Activation layer " + fLayerActivation + " is not yet supported"); + } + return (findLayer->second)(fLayer); +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Relu object +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Relu object, we extract the names of +/// input & output tensors and the deta-type of the layer. +std::unique_ptr MakeKerasReLU(PyObject* fLayer) +{ + PyObject* fInputs=PyDict_GetItemString(fLayer,"layerInput"); + PyObject* fOutputs=PyDict_GetItemString(fLayer,"layerOutput"); + + std::string fLayerDType = PyStringAsString(PyDict_GetItemString(fLayer,"layerDType")); + std::string fLayerInputName = PyStringAsString(PyList_GetItem(fInputs,0)); + std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); + + std::unique_ptr op; + switch(ConvertStringToType(fLayerDType)){ + case ETensorType::FLOAT: + op.reset(new ROperator_Relu(fLayerInputName, fLayerOutputName)); + break; + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Relu does not yet support input type " + fLayerDType); + } + return op; +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Transpose object +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// The Permute layer in Keras has an equivalent Tranpose operator in ONNX. +/// For adding a Transpose operator, the permute dimensions are found, if they +/// exist are passed in instantiating the ROperator, else default values are used. +std::unique_ptr MakeKerasPermute(PyObject* fLayer) +{ + // Extracting required layer information + PyObject* fAttributes=PyDict_GetItemString(fLayer,"layerAttributes"); + PyObject* fInputs=PyDict_GetItemString(fLayer,"layerInput"); + PyObject* fOutputs=PyDict_GetItemString(fLayer,"layerOutput"); + + std::string fLayerDType = PyStringAsString(PyDict_GetItemString(fLayer,"layerDType")); + std::string fLayerInputName = PyStringAsString(PyList_GetItem(fInputs,0)); + std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); + + // Extracting the permute dimensions present in Attributes of the Keras layer + PyObject* fAttributePermute=PyDict_GetItemString(fAttributes,"dims"); + std::vectorfPermuteDims; + + // Building vector of permute dimensions from the Tuple object. + for(Py_ssize_t tupleIter=0;tupleIter op; + switch(ConvertStringToType(fLayerDType)){ + case ETensorType::FLOAT:{ + + // Adding the permute dimensions if present, else are avoided to use default values. + if (!fPermuteDims.empty()){ + op.reset(new ROperator_Transpose(fPermuteDims, fLayerInputName, fLayerOutputName)); + } + else{ + op.reset(new ROperator_Transpose (fLayerInputName, fLayerOutputName)); + } + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Transpose does not yet support input type " + fLayerDType); + } + return op; + } + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Utility function which retrieves and returns the values of the Tuple +/// object as a vector of size_t +/// +/// \param[in] tupleObject Python Tuple object +/// \return vector of tuple members +std::vector GetDataFromTuple(PyObject* tupleObject){ + std::vectorinputShape; + for(Py_ssize_t tupleIter=0;tupleIter fWeightTensorShape; + std::size_t fWeightTensorSize; + + // Traversing through all the Weight tensors + for (Py_ssize_t weightIter = 0; weightIter < PyList_Size(fPWeight); weightIter++){ + fWeightTensor = PyList_GetItem(fPWeight, weightIter); + fWeightName = PyStringAsString(PyDict_GetItemString(fWeightTensor,"name")); + fWeightDType = ConvertStringToType(PyStringAsString(PyDict_GetItemString(fWeightTensor,"dtype"))); + + fWeightTensorValue = (PyArrayObject*)PyDict_GetItemString(fWeightTensor,"value"); + fWeightTensorSize=1; + fWeightTensorShape.clear(); + + // Building the shape vector and finding the tensor size + for(int j=0; j fData(malloc(fWeightTensorSize * sizeof(float)), free); + std::memcpy(fData.get(),fWeightArray, fWeightTensorSize * sizeof(float)); + rmodel.AddInitializedTensor(fWeightName,ETensorType::FLOAT,fWeightTensorShape,fData); + break; + } + default: + throw std::runtime_error("Type error: TMVA SOFIE does not yet weight data layer type"+ConvertTypeToString(fWeightDType)); + } + } + + + // Extracting input tensor info + // For every input tensor inputNames will have their names as string, + // inputShapes will have their shape as Python Tuple, and inputTypes + // will have their dtype as string + PyRunString("inputNames=model.input_names",fGlobalNS,fLocalNS); + PyRunString("inputShapes=model.input_shape",fGlobalNS,fLocalNS); + PyRunString("inputTypes=[]",fGlobalNS,fLocalNS); + PyRunString("for idx in range(len(model.inputs)):\n" + " inputTypes.append(model.inputs[idx].dtype.__str__()[9:-2])",fGlobalNS,fLocalNS); + + PyObject* fPInputs = PyDict_GetItemString(fLocalNS,"inputNames"); + PyObject* fPInputShapes = PyDict_GetItemString(fLocalNS,"inputShapes"); + PyObject* fPInputTypes = PyDict_GetItemString(fLocalNS,"inputTypes"); + + std::string fInputName; + ETensorType fInputDType; + + // For single input models, the model.input_shape will return a tuple + // describing the input tensor shape. For multiple inputs models, + // the model.input_shape will return a list of tuple, each describing + // the input tensor shape. + if(PyTuple_Check(fPInputShapes)){ + fInputName = PyStringAsString(PyList_GetItem(fPInputs,0)); + fInputDType = ConvertStringToType(PyStringAsString(PyList_GetItem(fPInputTypes,0))); + + switch(fInputDType){ + + case ETensorType::FLOAT : { + if (PyTuple_GetItem(fPInputShapes,0) == Py_None){ + throw std::runtime_error("None error: Models not initialized with batch-size are not yet supported in TMVA SOFIE"); + } + + // Getting the shape vector from the Tuple object + std::vectorfInputShape=INTERNAL::GetDataFromTuple(fPInputShapes); + rmodel.AddInputTensorInfo(fInputName, ETensorType::FLOAT, fInputShape); + break; + } + + default: + throw std::runtime_error("Type error: TMVA SOFIE does not yet suppport data type"+ConvertTypeToString(fInputDType)); + } + + } + + else{ + + // Iterating through multiple input tensors + for(Py_ssize_t inputIter = 0; inputIter < PyList_Size(fPInputs);++inputIter){ + + fInputName = PyStringAsString(PyList_GetItem(fPInputs,inputIter)); + fInputDType = ConvertStringToType(PyStringAsString(PyList_GetItem(fPInputTypes,inputIter))); + + switch(fInputDType){ + case ETensorType::FLOAT : { + PyObject* fInputShapeTuple=PyList_GetItem(fPInputShapes,inputIter); + + if (PyTuple_GetItem(fInputShapeTuple,0) == Py_None){ + throw std::runtime_error("None error: Models not initialized with batch-size are not yet supported in TMVA SOFIE"); + } + + std::vectorfInputShape=INTERNAL::GetDataFromTuple(fInputShapeTuple); + rmodel.AddInputTensorInfo(fInputName, ETensorType::FLOAT, fInputShape); + break; + } + + default: + throw std::runtime_error("Type error: TMVA SOFIE does not yet suppport data type"+ConvertTypeToString(fInputDType)); + + } + } + } + + // For adding OutputTensorInfos, the names of the output + // tensors are extracted from the Keras model + PyRunString("outputNames=[]",fGlobalNS,fLocalNS); + PyRunString("for layerName in model.output_names:\n" + " outputNames.append(model.get_layer(layerName).output.name)",fGlobalNS,fLocalNS); + PyObject* fPOutputs = PyDict_GetItemString(fLocalNS,"outputNames"); + std::vector fOutputNames; + for(Py_ssize_t outputIter = 0; outputIter < PyList_Size(fPOutputs);++outputIter){ + fOutputNames.push_back(PyStringAsString(PyList_GetItem(fPOutputs,outputIter))); + } + rmodel.AddOutputTensorNameList(fOutputNames); + + return rmodel; +} +}//PyKeras +}//SOFIE +}//Experimental +}//TMVA diff --git a/tmva/pymva/test/CMakeLists.txt b/tmva/pymva/test/CMakeLists.txt index 767de9f975e21..1fa32f4fb952e 100644 --- a/tmva/pymva/test/CMakeLists.txt +++ b/tmva/pymva/test/CMakeLists.txt @@ -43,6 +43,9 @@ if(PY_TORCH_FOUND) endif(PY_TORCH_FOUND) if((PY_KERAS_FOUND AND PY_THEANO_FOUND) OR (PY_KERAS_FOUND AND PY_TENSORFLOW_FOUND)) + configure_file(generateKerasModelFunctional.py generateKerasModelFunctional.py COPYONLY) + configure_file(generateKerasModelSequential.py generateKerasModelSequential.py COPYONLY) + # Test PyKeras: Binary classification ROOT_EXECUTABLE(testPyKerasClassification testPyKerasClassification.C LIBRARIES ${Libraries}) @@ -57,6 +60,37 @@ if((PY_KERAS_FOUND AND PY_THEANO_FOUND) OR (PY_KERAS_FOUND AND PY_TENSORFLOW_FOU ROOT_EXECUTABLE(testPyKerasMulticlass testPyKerasMulticlass.C LIBRARIES ${Libraries}) ROOT_ADD_TEST(PyMVA-Keras-Multiclass COMMAND testPyKerasMulticlass) + + # Test RModelParser_Keras + add_executable(emitFromKeras + EmitFromKeras.cxx + ${CMAKE_SOURCE_DIR}/tmva/pymva/src/RModelParser_Keras.cxx + ${CMAKE_SOURCE_DIR}/tmva/sofie/src/RModel.cxx + ${CMAKE_SOURCE_DIR}/tmva/sofie/src/SOFIE_common.cxx + ) + target_link_libraries(emitFromKeras ${PYTHON_LIBRARIES} ${Libraries}) + target_include_directories(emitFromKeras PRIVATE + ${CMAKE_SOURCE_DIR}/tmva/sofie/inc + ${CMAKE_SOURCE_DIR}/tmva/inc + ${CMAKE_SOURCE_DIR}/core/foundation/inc + ${CMAKE_BINARY_DIR}/ginclude # this is for RConfigure.h + ) + set_target_properties(emitFromKeras PROPERTIES POSITION_INDEPENDENT_CODE TRUE) + add_custom_target(SofieCompileModels_Keras) + add_dependencies(SofieCompileModels_Keras emitFromKeras) + add_custom_command(TARGET SofieCompileModels_Keras POST_BUILD + COMMAND ./emitFromKeras + USES_TERMINAL + ) + ROOT_ADD_GTEST(TestRModelParserKeras TestRModelParserKeras.C + LIBRARIES + ROOTTMVASofie + blas + ${PYTHON_LIBRARIES} + INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR} + ) + add_dependencies(TestRModelParserKeras SofieCompileModels_Keras) endif((PY_KERAS_FOUND AND PY_THEANO_FOUND) OR (PY_KERAS_FOUND AND PY_TENSORFLOW_FOUND)) if(PY_SKLEARN_FOUND) @@ -89,4 +123,4 @@ if(PY_SKLEARN_FOUND) ROOT_EXECUTABLE(testPyAdaBoostMulticlass testPyAdaBoostMulticlass.C LIBRARIES ${Libraries}) ROOT_ADD_TEST(PyMVA-AdaBoost-Multiclass COMMAND testPyAdaBoostMulticlass) -endif(PY_SKLEARN_FOUND) \ No newline at end of file +endif(PY_SKLEARN_FOUND) diff --git a/tmva/pymva/test/EmitFromKeras.cxx b/tmva/pymva/test/EmitFromKeras.cxx new file mode 100644 index 0000000000000..ba6edf5c14570 --- /dev/null +++ b/tmva/pymva/test/EmitFromKeras.cxx @@ -0,0 +1,34 @@ +// Author: Sanjiban Sengupta, 2021 +// Description: +// This is to test the RModelParser_PyTorch. +// The program is run when the target 'TestRModelParserPyTorch' is built. +// The program generates the required .hxx file after parsing a PyTorch .pt file into a RModel object. + + +#include "TMVA/RModel.hxx" +#include "TMVA/RModelParser_Keras.h" + +using namespace TMVA::Experimental::SOFIE; + +int main(){ + + Py_Initialize(); + + //Emitting header file for Keras Sequential API Model + FILE* fKerasSequential; + fKerasSequential = fopen("generateKerasModelSequential.py", "r"); + PyRun_SimpleFile(fKerasSequential, "generateKerasModelSequential.py"); + RModel modelSequential = TMVA::Experimental::SOFIE::PyKeras::Parse("KerasModelSequential.h5"); + modelSequential.Generate(); + modelSequential.OutputGenerated("KerasSequentialModel.hxx"); + + //Emitting header file for Keras Functional API Model + FILE* fKerasFunctional; + fKerasFunctional = fopen("generateKerasModelFunctional.py", "r"); + PyRun_SimpleFile(fKerasFunctional, "generateKerasModelFunctional.py"); + RModel modelFunctional = TMVA::Experimental::SOFIE::PyKeras::Parse("KerasModelFunctional.h5"); + modelFunctional.Generate(); + modelFunctional.OutputGenerated("KerasFunctionalModel.hxx"); + + return 0; +} diff --git a/tmva/pymva/test/TestRModelParserKeras.C b/tmva/pymva/test/TestRModelParserKeras.C new file mode 100644 index 0000000000000..bf3196bdd863e --- /dev/null +++ b/tmva/pymva/test/TestRModelParserKeras.C @@ -0,0 +1,103 @@ +#include "KerasFunctionalModel.hxx" +#include "KerasSequentialModel.hxx" + +#include +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include + +#include "gtest/gtest.h" + +constexpr float DEFAULT_TOLERANCE = 1e-6f; + +TEST(RModelParser_Keras, SEQUENTIAL) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + float inputSequential[]={ 0.12107884, 0.89718615, 0.89123899, 0.32197549, + 0.17891638, 0.83555135, 0.98680066, 0.14496809, + 0.07255503, 0.55386989, 0.6628149 , 0.29843291, + 0.71059786, 0.44043452, 0.13792047, 0.93007397, + 0.16799397, 0.75473803, 0.43203355, 0.68360968, + 0.83879351, 0.0558927 , 0.57500447, 0.49063431, + 0.63637339, 0.94483464, 0.11032887, 0.22424818, + 0.50972592, 0.04671024, 0.39230661, 0.80500943}; + + std::vector outputSequential = TMVA_SOFIE_KerasModelSequential::infer(inputSequential); + + Py_Initialize(); + PyObject* main = PyImport_AddModule("__main__"); + PyObject* fGlobalNS = PyModule_GetDict(main); + PyObject* fLocalNS = PyDict_New(); + if (!fGlobalNS) { + throw std::runtime_error("Can't init global namespace for Python"); + } + if (!fLocalNS) { + throw std::runtime_error("Can't init local namespace for Python"); + } + PyRun_String("import os",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("from tensorflow.keras.models import load_model",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("import numpy",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("model=load_model('KerasModelSequential.h5')",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("input=numpy.array([0.12107884, 0.89718615, 0.89123899, 0.32197549," + "0.17891638, 0.83555135, 0.98680066, 0.14496809," + "0.07255503, 0.55386989, 0.6628149 , 0.29843291," + "0.71059786, 0.44043452, 0.13792047, 0.93007397," + "0.16799397, 0.75473803, 0.43203355, 0.68360968," + "0.83879351, 0.0558927 , 0.57500447, 0.49063431," + "0.63637339, 0.94483464, 0.11032887, 0.22424818," + "0.50972592, 0.04671024, 0.39230661, 0.80500943]).reshape(4,8)",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("output=model(input).numpy()",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("outputSize=output.size",Py_single_input,fGlobalNS,fLocalNS); + std::size_t pOutputSequentialSize=(std::size_t)PyLong_AsLong(PyDict_GetItemString(fLocalNS,"outputSize")); + + //Testing the actual and expected output tensor sizes + EXPECT_EQ(outputSequential.size(), pOutputSequentialSize); + + PyArrayObject* pSequentialValues=(PyArrayObject*)PyDict_GetItemString(fLocalNS,"output"); + float* pOutputSequential=(float*)PyArray_DATA(pSequentialValues); + + //Testing the actual and expected output tensor values + for (size_t i = 0; i < outputSequential.size(); ++i) { + EXPECT_LE(std::abs(outputSequential[i] - pOutputSequential[i]), TOLERANCE); + } +} + +TEST(RModelParser_Keras, FUNCTIONAL) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + float inputFunctional[]={0.60828574, 0.50069386, 0.75186709, 0.14968806, 0.7692464 ,0.77027585, 0.75095316, 0.96651197, + 0.38536308, 0.95565917, 0.62796356, 0.13818375, 0.65484891,0.89220363, 0.23879365, 0.00635323}; + std::vector outputFunctional = TMVA_SOFIE_KerasModelFunctional::infer(inputFunctional); + + Py_Initialize(); + PyObject* main = PyImport_AddModule("__main__"); + PyObject* fGlobalNS = PyModule_GetDict(main); + PyObject* fLocalNS = PyDict_New(); + if (!fGlobalNS) { + throw std::runtime_error("Can't init global namespace for Python"); + } + if (!fLocalNS) { + throw std::runtime_error("Can't init local namespace for Python"); + } + PyRun_String("import os",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("from tensorflow.keras.models import load_model",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("import numpy",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("model=load_model('KerasModelFunctional.h5')",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("input=numpy.array([0.60828574, 0.50069386, 0.75186709, 0.14968806, 0.7692464 ,0.77027585, 0.75095316, 0.96651197," + "0.38536308, 0.95565917, 0.62796356, 0.13818375, 0.65484891,0.89220363, 0.23879365, 0.00635323]).reshape(2,8)",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("output=model(input).numpy()",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("outputSize=output.size",Py_single_input,fGlobalNS,fLocalNS); + std::size_t pOutputFunctionalSize=(std::size_t)PyLong_AsLong(PyDict_GetItemString(fLocalNS,"outputSize")); + + //Testing the actual and expected output tensor sizes + EXPECT_EQ(outputFunctional.size(), pOutputFunctionalSize); + + PyArrayObject* pFunctionalValues=(PyArrayObject*)PyDict_GetItemString(fLocalNS,"output"); + float* pOutputFunctional=(float*)PyArray_DATA(pFunctionalValues); + + //Testing the actual and expected output tensor values + for (size_t i = 0; i < outputFunctional.size(); ++i) { + EXPECT_LE(std::abs(outputFunctional[i] - pOutputFunctional[i]), TOLERANCE); + } +} diff --git a/tmva/pymva/test/generateKerasModelFunctional.py b/tmva/pymva/test/generateKerasModelFunctional.py new file mode 100644 index 0000000000000..289cf65378af5 --- /dev/null +++ b/tmva/pymva/test/generateKerasModelFunctional.py @@ -0,0 +1,23 @@ +import os +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' + +import numpy as np +from tensorflow.keras.models import Model +from tensorflow.keras.layers import Input,Dense,Activation,ReLU +from tensorflow.keras.optimizers import SGD + +input=Input(shape=(8,),batch_size=2) +x=Dense(16)(input) +x=Activation('relu')(x) +x=Dense(32,activation='relu')(x) +x=Dense(4)(x) +output=ReLU()(x) +model=Model(inputs=input,outputs=output) + +randomGenerator=np.random.RandomState(0) +x_train=randomGenerator.rand(2,8) +y_train=randomGenerator.rand(2,4) + +model.compile(loss='mean_squared_error', optimizer=SGD(learning_rate=0.01)) +model.fit(x_train, y_train, epochs=10, batch_size=2) +model.save('KerasModelFunctional.h5') diff --git a/tmva/pymva/test/generateKerasModelSequential.py b/tmva/pymva/test/generateKerasModelSequential.py new file mode 100644 index 0000000000000..ac68d5b79f631 --- /dev/null +++ b/tmva/pymva/test/generateKerasModelSequential.py @@ -0,0 +1,21 @@ +import os +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' + +import numpy as np +from tensorflow.keras.models import Sequential +from tensorflow.keras.layers import Dense,Activation,ReLU +from tensorflow.keras.optimizers import SGD + +model=Sequential() +model.add(Dense(8,batch_size=4)) +model.add(Activation('relu')) +model.add(Dense(6)) +model.add(ReLU()) + +randomGenerator=np.random.RandomState(0) +x_train=randomGenerator.rand(4,8) +y_train=randomGenerator.rand(4,6) + +model.compile(loss='mean_squared_error', optimizer=SGD(learning_rate=0.01)) +model.fit(x_train, y_train, epochs=10, batch_size=4) +model.save('KerasModelSequential.h5') diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx index 3fa7bead7ea83..a72f8d68b3136 100644 --- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx +++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx @@ -25,6 +25,7 @@ enum class ETensorType{ typedef std::int64_t int_t; std::string ConvertTypeToString(ETensorType type); +ETensorType ConvertStringToType(std::string type); struct Dim{ bool isParam = false; diff --git a/tmva/sofie/src/SOFIE_common.cxx b/tmva/sofie/src/SOFIE_common.cxx index 04633c75b20e5..bd16f4cbfbc8d 100644 --- a/tmva/sofie/src/SOFIE_common.cxx +++ b/tmva/sofie/src/SOFIE_common.cxx @@ -30,6 +30,15 @@ std::string ConvertTypeToString(ETensorType type){ } } +ETensorType ConvertStringToType(std::string type){ + if(type == "float32" || type == "Float"){ + return ETensorType::FLOAT; + } + else{ + return ETensorType::UNDEFINED; + } +} + namespace{ template static inline void copy_vector_data(int_t no_of_copies, int_t input_size, T* input, T* target){ //only visible within this translation unit From 11134671d965c1ab9c58686bd4b9f663e3a88d4b Mon Sep 17 00:00:00 2001 From: lmoneta Date: Mon, 30 Aug 2021 11:59:59 +0200 Subject: [PATCH 008/577] Always build core of tmva::sofie. Make only sofie-parser optional since it depends on protobuf. --- tmva/CMakeLists.txt | 4 +++- tmva/sofie/CMakeLists.txt | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tmva/CMakeLists.txt b/tmva/CMakeLists.txt index 933afacf0dbdb..97ed708bd2b73 100644 --- a/tmva/CMakeLists.txt +++ b/tmva/CMakeLists.txt @@ -17,7 +17,9 @@ if(r OR tmva-rmva) add_subdirectory(rmva) endif() +add_subdirectory(sofie) +#parser depends on protobuf +#found if flag tmva-sofie is on if (tmva-sofie) - add_subdirectory(sofie) add_subdirectory(sofie_parsers) endif() diff --git a/tmva/sofie/CMakeLists.txt b/tmva/sofie/CMakeLists.txt index 4af0fd4f9d873..79acc06406dc8 100644 --- a/tmva/sofie/CMakeLists.txt +++ b/tmva/sofie/CMakeLists.txt @@ -33,4 +33,7 @@ target_include_directories(ROOTTMVASofie PUBLIC set_target_properties(ROOTTMVASofie PROPERTIES POSITION_INDEPENDENT_CODE TRUE) -ROOT_ADD_TEST_SUBDIRECTORY(test) +# tests requires protobuf +if (tmva-sofie) + ROOT_ADD_TEST_SUBDIRECTORY(test) +endif() From 896df02794b6489cdab502c6b96d577db49945a8 Mon Sep 17 00:00:00 2001 From: lmoneta Date: Mon, 30 Aug 2021 14:28:41 +0200 Subject: [PATCH 009/577] Fix compiler warnings found when building on different platforms. Move also Python include files from public headers to the implementation. --- tmva/pymva/inc/TMVA/PyMethodBase.h | 2 +- tmva/pymva/inc/TMVA/RModelParser_Keras.h | 6 ++---- tmva/pymva/src/PyMethodBase.cxx | 4 ++-- tmva/pymva/src/RModelParser_Keras.cxx | 4 ++++ tmva/pymva/test/EmitFromKeras.cxx | 2 ++ tmva/sofie/inc/TMVA/SOFIE_common.hxx | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h index 384a135bbe84a..593bb19f3787b 100644 --- a/tmva/pymva/inc/TMVA/PyMethodBase.h +++ b/tmva/pymva/inc/TMVA/PyMethodBase.h @@ -131,7 +131,7 @@ namespace TMVA { PyObject *fLocalNS; // local namesapace public: - static void PyRunString(TString code, PyObject *fGlobalNS, PyObject* fLocalNS); // Overloaded static Python utlity function for running Python code + static void PyRunString(TString code, PyObject *globalNS, PyObject* localNS); // Overloaded static Python utlity function for running Python code static const char* PyStringAsString(PyObject *string); // Python Utility function for converting a Python String object to const char* ClassDef(PyMethodBase, 0) // Virtual base class for all TMVA method diff --git a/tmva/pymva/inc/TMVA/RModelParser_Keras.h b/tmva/pymva/inc/TMVA/RModelParser_Keras.h index 23da30510608c..a108252feb561 100644 --- a/tmva/pymva/inc/TMVA/RModelParser_Keras.h +++ b/tmva/pymva/inc/TMVA/RModelParser_Keras.h @@ -25,10 +25,8 @@ #ifndef TMVA_SOFIE_RMODELPARSER_KERAS #define TMVA_SOFIE_RMODELPARSER_KERAS -#include - -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include +//#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +//#include #include "TMVA/RModel.hxx" #include "TMVA/SOFIE_common.hxx" diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx index 51b1585ebe8ad..6db452a8a0d49 100644 --- a/tmva/pymva/src/PyMethodBase.cxx +++ b/tmva/pymva/src/PyMethodBase.cxx @@ -335,8 +335,8 @@ void PyMethodBase::PyRunString(TString code, TString errorMessage, int start) { /// from string and throw runtime error if the Python session /// is unable to execute the code -void PyMethodBase::PyRunString(TString code, PyObject *fGlobalNS, PyObject *fLocalNS){ - PyObject *fPyReturn = PyRun_String(code, Py_single_input, fGlobalNS, fLocalNS); +void PyMethodBase::PyRunString(TString code, PyObject *globalNS, PyObject *localNS){ + PyObject *fPyReturn = PyRun_String(code, Py_single_input, globalNS, localNS); if (!fPyReturn) { std::cout<<"\nPython error message:\n"; PyErr_Print(); diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx index 9dfd41637bb33..803f47d747dd7 100644 --- a/tmva/pymva/src/RModelParser_Keras.cxx +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -19,6 +19,10 @@ #include "TMVA/RModelParser_Keras.h" +#include + +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include namespace TMVA{ namespace Experimental{ diff --git a/tmva/pymva/test/EmitFromKeras.cxx b/tmva/pymva/test/EmitFromKeras.cxx index ba6edf5c14570..5cd777a71c849 100644 --- a/tmva/pymva/test/EmitFromKeras.cxx +++ b/tmva/pymva/test/EmitFromKeras.cxx @@ -8,6 +8,8 @@ #include "TMVA/RModel.hxx" #include "TMVA/RModelParser_Keras.h" +#include + using namespace TMVA::Experimental::SOFIE; int main(){ diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx index a72f8d68b3136..6bebee0385f17 100644 --- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx +++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx @@ -82,7 +82,7 @@ struct InitializedTensor{ }; template -ETensorType GetTemplatedType(T obj){ +ETensorType GetTemplatedType(T /*obj*/ ){ if (std::is_same::value) return ETensorType::FLOAT; if (std::is_same::value) return ETensorType::UNINT8; if (std::is_same::value) return ETensorType::INT8; From 4962bef8d50b7e434f5a5d0d2943b1b74e257e50 Mon Sep 17 00:00:00 2001 From: lmoneta Date: Mon, 30 Aug 2021 15:37:38 +0200 Subject: [PATCH 010/577] fix test documentation (from Sanjiban) fix Windows error by not using "not" a logical keyword --- tmva/pymva/inc/TMVA/RModelParser_Keras.h | 3 --- tmva/pymva/test/EmitFromKeras.cxx | 6 +++--- tmva/sofie/src/RModel.cxx | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/tmva/pymva/inc/TMVA/RModelParser_Keras.h b/tmva/pymva/inc/TMVA/RModelParser_Keras.h index a108252feb561..92b204457d6e3 100644 --- a/tmva/pymva/inc/TMVA/RModelParser_Keras.h +++ b/tmva/pymva/inc/TMVA/RModelParser_Keras.h @@ -25,9 +25,6 @@ #ifndef TMVA_SOFIE_RMODELPARSER_KERAS #define TMVA_SOFIE_RMODELPARSER_KERAS -//#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -//#include - #include "TMVA/RModel.hxx" #include "TMVA/SOFIE_common.hxx" #include "TMVA/Types.h" diff --git a/tmva/pymva/test/EmitFromKeras.cxx b/tmva/pymva/test/EmitFromKeras.cxx index 5cd777a71c849..31c9c835534b9 100644 --- a/tmva/pymva/test/EmitFromKeras.cxx +++ b/tmva/pymva/test/EmitFromKeras.cxx @@ -1,8 +1,8 @@ // Author: Sanjiban Sengupta, 2021 // Description: -// This is to test the RModelParser_PyTorch. -// The program is run when the target 'TestRModelParserPyTorch' is built. -// The program generates the required .hxx file after parsing a PyTorch .pt file into a RModel object. +// This is to test the RModelParser_Keras. +// The program is run when the target 'TestRModelParserKeras' is built. +// The program generates the required .hxx file after parsing a Keras .h5 file into a RModel object. #include "TMVA/RModel.hxx" diff --git a/tmva/sofie/src/RModel.cxx b/tmva/sofie/src/RModel.cxx index e65e9b773b776..d625ae464dce6 100644 --- a/tmva/sofie/src/RModel.cxx +++ b/tmva/sofie/src/RModel.cxx @@ -148,7 +148,7 @@ namespace SOFIE{ void RModel::UpdateInitializedTensor(std::string tensor_name, ETensorType type, std::vector shape, std::shared_ptr data){ tensor_name = UTILITY::Clean_name(tensor_name); - if (not CheckIfTensorAlreadyExist(tensor_name)){ + if (!CheckIfTensorAlreadyExist(tensor_name)){ throw std::runtime_error("TMVA-SOFIE: tensor " + tensor_name + " not found when trying to update it"); } InitializedTensor new_tensor {type, shape, data}; From 0739428057e64d1d746a219508f2f3af77bee3a3 Mon Sep 17 00:00:00 2001 From: lmoneta Date: Mon, 30 Aug 2021 17:22:15 +0200 Subject: [PATCH 011/577] Remove internal functions definition used for Keras parsing in *.cxx file. This should fix the problem seen when building without C++ modules (-Druntime_cxxmodules="Off") --- tmva/pymva/inc/TMVA/RModelParser_Keras.h | 45 ------------------------ tmva/pymva/src/RModelParser_Keras.cxx | 36 +++++++++++++++++++ 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/tmva/pymva/inc/TMVA/RModelParser_Keras.h b/tmva/pymva/inc/TMVA/RModelParser_Keras.h index 92b204457d6e3..784793bb41409 100644 --- a/tmva/pymva/inc/TMVA/RModelParser_Keras.h +++ b/tmva/pymva/inc/TMVA/RModelParser_Keras.h @@ -42,51 +42,6 @@ namespace SOFIE{ namespace PyKeras{ -// Referencing Python utility functions present in PyMethodBase -static void(& PyRunString)(TString, PyObject*, PyObject*) = PyMethodBase::PyRunString; -static const char*(& PyStringAsString)(PyObject*) = PyMethodBase::PyStringAsString; - - -namespace INTERNAL{ - // For adding Keras layer into RModel object - void AddKerasLayer(RModel& rmodel, PyObject* fLayer); - - - // Declaring Internal Functions for Keras layers which don't have activation as an additional attribute - std::unique_ptr MakeKerasActivation(PyObject* fLayer); // For instantiating ROperator for Keras Activation Layer - std::unique_ptr MakeKerasReLU(PyObject* fLayer); // For instantiating ROperator for Keras ReLU layer - std::unique_ptr MakeKerasPermute(PyObject* fLayer); // For instantiating ROperator for Keras Permute Layer - - - // Declaring Internal function for Keras layers which have additional activation attribute - std::unique_ptr MakeKerasDense(PyObject* fLayer); // For instantiating ROperator for Keras Dense Layer - - // For mapping Keras layer with the preparatory functions for ROperators - using KerasMethodMap = std::unordered_map (*)(PyObject* fLayer)>; - using KerasMethodMapWithActivation = std::unordered_map(*)(PyObject* fLayer)>; - - const KerasMethodMap mapKerasLayer = - { - {"Activation", &MakeKerasActivation}, - {"Permute", &MakeKerasPermute}, - - //For activation layers - {"ReLU", &MakeKerasReLU}, - - //For layers with activation attributes - {"relu", &MakeKerasReLU} - }; - - const KerasMethodMapWithActivation mapKerasLayerWithActivation = - { - {"Dense", &MakeKerasDense}, - }; - - // Function which returns values from a Python Tuple object in vector of size_t - std::vector GetShapeFromTuple(PyObject* shapeTuple); - -}//INTERNAL - /// Parser function for translatng Keras .h5 model into a RModel object. /// Accepts the file location of a Keras model and returns the /// equivalent RModel object. diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx index 803f47d747dd7..b231858252b88 100644 --- a/tmva/pymva/src/RModelParser_Keras.cxx +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -29,8 +29,44 @@ namespace Experimental{ namespace SOFIE{ namespace PyKeras{ + // Referencing Python utility functions present in PyMethodBase +static void(& PyRunString)(TString, PyObject*, PyObject*) = PyMethodBase::PyRunString; +static const char*(& PyStringAsString)(PyObject*) = PyMethodBase::PyStringAsString; + namespace INTERNAL{ +// For adding Keras layer into RModel object +void AddKerasLayer(RModel &rmodel, PyObject *fLayer); + +// Declaring Internal Functions for Keras layers which don't have activation as an additional attribute +std::unique_ptr +MakeKerasActivation(PyObject *fLayer); // For instantiating ROperator for Keras Activation Layer +std::unique_ptr MakeKerasReLU(PyObject *fLayer); // For instantiating ROperator for Keras ReLU layer +std::unique_ptr MakeKerasPermute(PyObject *fLayer); // For instantiating ROperator for Keras Permute Layer + +// Declaring Internal function for Keras layers which have additional activation attribute +std::unique_ptr MakeKerasDense(PyObject *fLayer); // For instantiating ROperator for Keras Dense Layer + +// For mapping Keras layer with the preparatory functions for ROperators +using KerasMethodMap = std::unordered_map (*)(PyObject *fLayer)>; +using KerasMethodMapWithActivation = std::unordered_map (*)(PyObject *fLayer)>; + +const KerasMethodMap mapKerasLayer = {{"Activation", &MakeKerasActivation}, + {"Permute", &MakeKerasPermute}, + + // For activation layers + {"ReLU", &MakeKerasReLU}, + + // For layers with activation attributes + {"relu", &MakeKerasReLU}}; + +const KerasMethodMapWithActivation mapKerasLayerWithActivation = { + {"Dense", &MakeKerasDense}, +}; + +// Function which returns values from a Python Tuple object in vector of size_t +std::vector GetShapeFromTuple(PyObject *shapeTuple); + ////////////////////////////////////////////////////////////////////////////////// /// \brief Adds equivalent ROperator with respect to Keras model layer /// into the referenced RModel object From 34d20c11403aad705446362720e261c1c86a2079 Mon Sep 17 00:00:00 2001 From: Shamrock Lee <44064051+ShamrockLee@users.noreply.github.com> Date: Fri, 27 Aug 2021 16:19:41 +0800 Subject: [PATCH 012/577] [DF] Add parameter for ROOT::VecOps::Sum and ROOT::VecOps::Mean --- math/vecops/inc/ROOT/RVec.hxx | 50 ++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 8abd7c597a8e2..cf91e525d1112 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -760,11 +760,24 @@ auto Dot(const RVec &v0, const RVec &v1) -> decltype(v0[0] * v1[0]) /// auto v_sum = Sum(v); /// v_sum /// // (float) 6.f +/// auto v_sum_d = Sum(v, 0.); +/// v_sum_d +/// // (double) 6.0000000 /// ~~~ -template -T Sum(const RVec &v) +/// ~~~{.cpp} +/// using namespace ROOT::VecOps; +/// const ROOT::Math::PtEtaPhiMVector lv0 {15.5f, .3f, .1f, 105.65f}, +/// lv1 {34.32f, 2.2f, 3.02f, 105.65f}, +/// lv2 {12.95f, 1.32f, 2.2f, 105.65f}; +/// RVec v {lv0, lv1, lv2}; +/// auto v_sum_lv = Sum(v, ROOT::Math::PtEtaPhiMVector()); +/// v_sum_lv +/// // (ROOT::Math::LorentzVector > &) (30.8489,2.46534,2.58947,361.084) +/// ~~~ +template +R Sum(const RVec &v, const R zero = R(0)) { - return std::accumulate(v.begin(), v.end(), T(0)); + return std::accumulate(v.begin(), v.end(), zero); } /// Get the mean of the elements of an RVec @@ -785,6 +798,37 @@ double Mean(const RVec &v) return double(Sum(v)) / v.size(); } +/// Get the mean of the elements of an RVec with custom initial value +/// +/// The return type will be deduced from the `zero` parameter +/// Example code, at the ROOT prompt: +/// ~~~{.cpp} +/// using namespace ROOT::VecOps; +/// RVec v {1.f, 2.f, 4.f}; +/// auto v_mean_f = Mean(v, 0.f); +/// v_mean_f +/// // (float) 2.33333f +/// auto v_mean_d = Mean(v, 0.); +/// v_mean_d +/// // (double) 2.3333333 +/// ~~~ +/// ~~~{.cpp} +/// using namespace ROOT::VecOps; +/// const ROOT::Math::PtEtaPhiMVector lv0 {15.5f, .3f, .1f, 105.65f}, +/// lv1 {34.32f, 2.2f, 3.02f, 105.65f}, +/// lv2 {12.95f, 1.32f, 2.2f, 105.65f}; +/// RVec v {lv0, lv1, lv2}; +/// auto v_mean_lv = Mean(v, ROOT::Math::PtEtaPhiMVector()); +/// v_mean_lv +/// // (ROOT::Math::LorentzVector > &) (10.283,2.46534,2.58947,120.361) +/// ~~~ +template +R Mean(const RVec &v, const R zero) +{ + if (v.empty()) return zero; + return Sum(v, zero) / v.size(); +} + /// Get the greatest element of an RVec /// /// Example code, at the ROOT prompt: From ed9ffdc4fcfb1034c3b25ce8c6411ffcf9724265 Mon Sep 17 00:00:00 2001 From: Shamrock Lee <44064051+ShamrockLee@users.noreply.github.com> Date: Fri, 27 Aug 2021 16:20:32 +0800 Subject: [PATCH 013/577] [DF] Expand tets coverage of VecOps for RVec and RVec --- math/vecops/test/vecops_rvec.cxx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index c3587e6b3d8bf..8f23ac9f4f787 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -35,6 +35,13 @@ void CheckEqual(const RVec &a, const RVec &b, std::string_view m } } +void CheckEqual(const ROOT::Math::PtEtaPhiMVector &a, const ROOT::Math::PtEtaPhiMVector &b) { + EXPECT_DOUBLE_EQ(a.Pt(), b.Pt()); + EXPECT_DOUBLE_EQ(a.Eta(), b.Eta()); + EXPECT_DOUBLE_EQ(a.Phi(), b.Phi()); + EXPECT_DOUBLE_EQ(a.M(), b.M()); +} + template void CheckEqual(const T &a, const V &b, std::string_view msg = "") { @@ -741,6 +748,27 @@ TEST(VecOps, SimpleStatOps) ASSERT_DOUBLE_EQ(ArgMin(v4), 2); ASSERT_DOUBLE_EQ(Var(v4), 1.); ASSERT_DOUBLE_EQ(StdDev(v4), 1.); + + ROOT::VecOps::RVec v5 {2, 3, 1, 4}; + ASSERT_DOUBLE_EQ(Sum(v5), 10); + ASSERT_DOUBLE_EQ(Mean(v5), 2.5); + ASSERT_DOUBLE_EQ(Max(v5), 4); + ASSERT_DOUBLE_EQ(Min(v5), 1); + ASSERT_DOUBLE_EQ(ArgMax(v5), 3); + ASSERT_DOUBLE_EQ(ArgMin(v5), 2); + ASSERT_DOUBLE_EQ(Var(v5), 5./3); + ASSERT_DOUBLE_EQ(StdDev(v5), std::sqrt(5./3)); + + const ROOT::Math::PtEtaPhiMVector lv0 {15.5f, .3f, .1f, 105.65f}; + const ROOT::Math::PtEtaPhiMVector lv1 {34.32f, 2.2f, 3.02f, 105.65f}; + const ROOT::Math::PtEtaPhiMVector lv2 {12.95f, 1.32f, 2.2f, 105.65f}; + const ROOT::Math::PtEtaPhiMVector lv_sum_ref = lv0 + lv1 + lv2; + const ROOT::Math::PtEtaPhiMVector lv_mean_ref = lv_sum_ref / 3; + ROOT::VecOps::RVec v6 {lv0, lv1, lv2}; + const ROOT::Math::PtEtaPhiMVector lv_sum = ROOT::VecOps::Sum(v6, ROOT::Math::PtEtaPhiMVector()); + const ROOT::Math::PtEtaPhiMVector lv_mean = ROOT::VecOps::Mean(v6, ROOT::Math::PtEtaPhiMVector()); + CheckEqual(lv_sum, lv_sum_ref); + CheckEqual(lv_mean, lv_mean_ref); } TEST(VecOps, Any) From a5541b7b7641bb31f85acb5ddf9f07d53e450eb7 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Tue, 31 Aug 2021 19:24:31 +0530 Subject: [PATCH 014/577] [GSoC][TMVA][SOFIE] PyTorch Parser TMVA (#8684) * Initial Commit for RModelParser_Pytorch * Modify PyTorch Parser 1) Added support for Tensors of Dynamic Axes 2) Modified Map for DType for PyTorch * Add: Tests for PyTorch Parser and Converter * Modify: convertStringToType() * Modify: Tests for PyTorch Parser * Fix: Segmentation violation on multiple calls of Parse() & Improvements 1) Fix : segmentation violation by removing the Py_XDECREF() 2) Remove : RModelParser_Common.h and moved helper functions to SOFIE_common & under namespace SOFIE::PyTorch 3) Modify : Casting and usage of PyArrayObject* (now a float* is used instead of RTensor) 4) Add : Runtime error catch if Python String is not successfully run 5) Modify : Minor improvements and modifications in code structure and naming conventions * Modify: Configure CMakeLists.txt and Tests for RModelParser_PyTorch 1) Added GTests for RModelParser_PyTorch 2) Added EmitFromPyTorch to generate header files 3) Configured CMake for tests * Remove: unnecesarry files for tests * Modify: RModelParser_PyTorch 1. Refactor RModelParser_PyTorch 2. Call to AddBlasRoutines() while adding Gemm Node * Fix: Failing test in TestRModelParserPyTorch for nn.Module * Move Python Utility functions to PyMethodBase * Add Documentation * Modify CMakeLists.txt for tests to have CMAKE_SOURCE_DIR instead of relative path * Resolve Merge conflicts * Modify Public Header file to have minimal dependency --- tmva/pymva/CMakeLists.txt | 2 + tmva/pymva/inc/LinkDef.h | 2 +- tmva/pymva/inc/TMVA/RModelParser_PyTorch.h | 60 +++ tmva/pymva/src/RModelParser_PyTorch.cxx | 450 ++++++++++++++++++ tmva/pymva/test/CMakeLists.txt | 35 +- tmva/pymva/test/EmitFromPyTorch.cxx | 39 ++ tmva/pymva/test/TestRModelParserPyTorch.C | 96 ++++ tmva/pymva/test/generatePyTorchModelModule.py | 38 ++ .../test/generatePyTorchModelSequential.py | 29 ++ 9 files changed, 749 insertions(+), 2 deletions(-) create mode 100644 tmva/pymva/inc/TMVA/RModelParser_PyTorch.h create mode 100644 tmva/pymva/src/RModelParser_PyTorch.cxx create mode 100644 tmva/pymva/test/EmitFromPyTorch.cxx create mode 100644 tmva/pymva/test/TestRModelParserPyTorch.C create mode 100644 tmva/pymva/test/generatePyTorchModelModule.py create mode 100644 tmva/pymva/test/generatePyTorchModelSequential.py diff --git a/tmva/pymva/CMakeLists.txt b/tmva/pymva/CMakeLists.txt index b9eeaedfe4033..ea277ccb381e6 100644 --- a/tmva/pymva/CMakeLists.txt +++ b/tmva/pymva/CMakeLists.txt @@ -20,6 +20,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyMVA TMVA/MethodPyRandomForest.h TMVA/MethodPyTorch.h TMVA/RModelParser_Keras.h + TMVA/RModelParser_PyTorch.h TMVA/PyMethodBase.h SOURCES src/MethodPyAdaBoost.cxx @@ -28,6 +29,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(PyMVA src/MethodPyRandomForest.cxx src/MethodPyTorch.cxx src/RModelParser_Keras.cxx + src/RModelParser_PyTorch.cxx src/PyMethodBase.cxx LIBRARIES ${PYTHON_LIBRARIES_Development_Main} diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h index bfde1b80eddab..92da99a4f7f12 100644 --- a/tmva/pymva/inc/LinkDef.h +++ b/tmva/pymva/inc/LinkDef.h @@ -16,5 +16,5 @@ #pragma link C++ class TMVA::MethodPyKeras+; #pragma link C++ class TMVA::MethodPyTorch+; #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+; +#pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+; #endif - diff --git a/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h b/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h new file mode 100644 index 0000000000000..75c6a0e52feac --- /dev/null +++ b/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h @@ -0,0 +1,60 @@ +// @(#)root/tmva/pymva $Id$ +// Author: Sanjiban Sengupta, 2021 + +/********************************************************************************** + * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * + * Package: TMVA * + * Web : http://tmva.sourceforge.net * + * * + * Description: * + * Functionality for parsing a saved PyTorch .PT model into RModel object * + * * + * Authors (alphabetical): * + * Sanjiban Sengupta * + * * + * Copyright (c) 2021: * + * CERN, Switzerland * + * * + * * + * Redistribution and use in source and binary forms, with or without * + * modification, are permitted according to the terms listed in LICENSE * + * (http://tmva.sourceforge.net/LICENSE) * + **********************************************************************************/ + + +#ifndef TMVA_SOFIE_RMODELPARSER_PYTORCH +#define TMVA_SOFIE_RMODELPARSER_PYTORCH + +#include "TMVA/RModel.hxx" +#include "TMVA/SOFIE_common.hxx" +#include "TMVA/Types.h" +#include "TMVA/OperatorList.hxx" + +#include "TMVA/PyMethodBase.h" + +#include "Rtypes.h" +#include "TString.h" + + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ +namespace PyTorch{ + +/// Parser function for translatng PyTorch .pt model into a RModel object. +/// Accepts the file location of a PyTorch model, shapes and data-types of input tensors +/// and returns the equivalent RModel object. +RModel Parse(std::string filepath,std::vector> inputShapes, std::vector dtype); + +/// Overloaded Parser function for translatng PyTorch .pt model into a RModel object. +/// Accepts the file location of a PyTorch model and only the shapes of input tensors. +/// Builds the data-types vector for input tensors and calls the `Parse()` function to +/// return the equivalent RModel object. +RModel Parse(std::string filepath,std::vector> inputShapes); + +}//PyTorch +}//SOFIE +}//Experimental +}//TMVA + +#endif //TMVA_PYMVA_RMODELPARSER_PYTORCH diff --git a/tmva/pymva/src/RModelParser_PyTorch.cxx b/tmva/pymva/src/RModelParser_PyTorch.cxx new file mode 100644 index 0000000000000..7728de67e3b3a --- /dev/null +++ b/tmva/pymva/src/RModelParser_PyTorch.cxx @@ -0,0 +1,450 @@ +// @(#)root/tmva/pymva $Id$ +// Author: Sanjiban Sengupta 2021 + +/********************************************************************************** + * Project : TMVA - a Root-integrated toolkit for multivariate data analysis * + * Package : TMVA * + * Function: TMVA::Experimental::SOFIE::PyTorch::Parse * + * * + * Description: * + * Parser function for translating PyTorch .pt model to RModel object * + * * + * Example Usage: * + * ~~~ {.cpp} * + * using TMVA::Experimental::SOFIE; * + * // Building the vector of input tensor shapes * + * std::vector s1{120,1}; * + * std::vector> inputShape{s1}; * + * RModel model = PyTorch::Parse("trained_model_dense.pt",inputShape); * + * ~~~ * + * * + **********************************************************************************/ + + +#include "TMVA/RModelParser_PyTorch.h" + +#include + +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ +namespace PyTorch{ + +// Referencing Python utility functions present in PyMethodBase +static void(& PyRunString)(TString, PyObject*, PyObject*) = PyMethodBase::PyRunString; +static const char*(& PyStringAsString)(PyObject*) = PyMethodBase::PyStringAsString; + + +namespace INTERNAL{ + +// For searching and calling specific preparatory function for PyTorch ONNX Graph's node +std::unique_ptr MakePyTorchNode(PyObject* fNode); + +std::unique_ptr MakePyTorchGemm(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Gemm operator +std::unique_ptr MakePyTorchRelu(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Relu operator +std::unique_ptr MakePyTorchTranspose(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Transpose operator + +// For mapping PyTorch ONNX Graph's Node with the preparatory functions for ROperators +using PyTorchMethodMap = std::unordered_map (*)(PyObject* fNode)>; + +const PyTorchMethodMap mapPyTorchNode = +{ + {"onnx::Gemm", &MakePyTorchGemm}, + {"onnx::Relu", &MakePyTorchRelu}, + {"onnx::Transpose", &MakePyTorchTranspose} +}; + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares equivalent ROperator with respect to PyTorch ONNX node. +/// +/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \return unique pointer to ROperator object +///r +/// Function searches for the passed PyTorch ONNX Graph node in the map, and calls +/// the specific preparatory function, subsequently returning the ROperator object. +/// +/// For developing new preparatory functions for supporting PyTorch ONNX Graph nodes +/// in future, all one needs is to extract the required properties and attributes +/// from the fNode dictionary which contains all the information about any PyTorch ONNX +// Graph Node and after any required transformations, these are passed for instantiating +/// the ROperator object. +/// +/// The fNode dictionary which holds all the information about a PyTorch ONNX Graph's Node has +/// following structure:- +/// dict fNode { 'nodeType' : Type of Operator Node +/// 'nodeAttributes' : Attributes of the operator Node +/// 'nodeInputs' : List of names of input tensors +/// 'nodeOutputs' : List of names of output tensors +/// 'nodeDType' : Data-type of the operator Node +/// } +std::unique_ptr MakePyTorchNode(PyObject* fNode){ + std::string fNodeType = PyStringAsString(PyDict_GetItemString(fNode,"nodeType")); + auto findNode = mapPyTorchNode.find(fNodeType); + if(findNode == mapPyTorchNode.end()){ + throw std::runtime_error("TMVA::SOFIE - Parsing PyTorch node " +fNodeType+" is not yet supported "); + } + return (findNode->second)(fNode); +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Gemm object +/// +/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \return Unique pointer to ROperator object +/// +/// For PyTorch's Linear layer having Gemm operation in its ONNX graph, +/// the names of the input tensor, output tensor are extracted, and then +/// are passed to instantiate a ROperator_Gemm object using the required attributes. +/// fInputs is a list of tensor names, which includes the names of the input tensor +/// and the weight tensors. +std::unique_ptr MakePyTorchGemm(PyObject* fNode){ + PyObject* fAttributes = PyDict_GetItemString(fNode,"nodeAttributes"); + PyObject* fInputs = PyDict_GetItemString(fNode,"nodeInputs"); + PyObject* fOutputs = PyDict_GetItemString(fNode,"nodeOutputs"); + std::string fNodeDType = PyStringAsString(PyList_GetItem(PyDict_GetItemString(fNode,"nodeDType"),0)); + + // Extracting the attributes of Gemm Operator + float attr_alpha = (float)(PyFloat_AsDouble(PyDict_GetItemString(fAttributes,"alpha"))); + float attr_beta = (float)(PyFloat_AsDouble(PyDict_GetItemString(fAttributes,"beta"))); + int_t attr_transA; + int_t attr_transB; + + if(PyDict_Contains(fAttributes,PyUnicode_FromString("transB"))){ + attr_transB=(int_t)(PyLong_AsLong(PyDict_GetItemString(fAttributes,"transB"))); + attr_transA=!attr_transB; + } + else{ + attr_transA=(int_t)(PyLong_AsLong(PyDict_GetItemString(fAttributes,"transA"))); + attr_transB=!attr_transA; + } + + std::unique_ptr op; + switch(ConvertStringToType(fNodeDType)){ + case ETensorType::FLOAT: { + op.reset(new ROperator_Gemm(attr_alpha, attr_beta, attr_transA, attr_transB, PyStringAsString(PyList_GetItem(fInputs,0)), PyStringAsString(PyList_GetItem(fInputs,1)), PyStringAsString(PyList_GetItem(fInputs,2)), PyStringAsString(PyList_GetItem(fOutputs,0)))); + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Gemm does not yet support input type " + fNodeDType); + } + return op; +} + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Relu object +/// +/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Relu object, the names of +/// input & output tensors and the data-type of the Graph node +/// are extracted. +std::unique_ptr MakePyTorchRelu(PyObject* fNode){ + PyObject* fInputs = PyDict_GetItemString(fNode,"nodeInputs"); + PyObject* fOutputs = PyDict_GetItemString(fNode,"nodeOutputs"); + std::string fNodeDType = PyStringAsString(PyList_GetItem(PyDict_GetItemString(fNode,"nodeDType"),0)); + + std::unique_ptr op; + switch(ConvertStringToType(fNodeDType)){ + case ETensorType::FLOAT: { + op.reset(new ROperator_Relu(PyStringAsString(PyList_GetItem(fInputs,0)), PyStringAsString(PyList_GetItem(fOutputs,0)))); + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Relu does not yet support input type " + fNodeDType); + } + return op; +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Transpose object +/// +/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \return Unique pointer to ROperator object +/// +/// For Transpose Operator of PyTorch's ONNX Graph, the permute dimensions are found, +/// and are passed in instantiating the ROperator object. +std::unique_ptr MakePyTorchTranspose(PyObject* fNode){ + PyObject* fAttributes = PyDict_GetItemString(fNode,"nodeAttributes"); + PyObject* fInputs = PyDict_GetItemString(fNode,"nodeInputs"); + PyObject* fOutputs = PyDict_GetItemString(fNode,"nodeOutputs"); + std::string fNodeDType = PyStringAsString(PyList_GetItem(PyDict_GetItemString(fNode,"nodeDType"),0)); + + // Extracting the Permute dimensions for transpose + std::vector fAttributePermute; + PyObject* fPermute=PyDict_GetItemString(fAttributes,"perm"); + for(Py_ssize_t permIter=0; permIter op; + switch(ConvertStringToType(fNodeDType)){ + case ETensorType::FLOAT: { + op.reset(new ROperator_Transpose(fAttributePermute, PyStringAsString(PyList_GetItem(fInputs,0)), PyStringAsString(PyList_GetItem(fOutputs,0)))); + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Transpose does not yet support input type " + fNodeDType); + } + return op; +} +}//INTERNAL + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Parser function for translating PyTorch .pt model to RModel object +/// +/// \param[in] filename file location of PyTorch .pt model +/// \param[in] inputShapes vector of input shape vectors +/// \param[in] inputDTypes vector of ETensorType for data-types of Input tensors +/// \return RModel Parsed RModel object +/// +/// The `Parse()` function defined in `TMVA::Experimental::SOFIE::PyTorch` will +/// parse a trained PyTorch .pt model into a RModel Object. The parser uses +/// internal functions of PyTorch to convert any PyTorch model into its +/// equivalent ONNX Graph. For this conversion, dummy inputs are built which are +/// passed through the model and the applied operators are recorded for populating +/// the ONNX graph. The `Parse()` function requires the shapes and data-types of +/// the input tensors which are used for building the dummy inputs. +/// After the said conversion, the nodes of the ONNX graph are then traversed to +/// extract properties like Node type, Attributes, input & output tensor names. +/// Function `AddOperator()` is then called on the extracted nodes to add the +/// operator into the RModel object. The nodes are also checked for adding any +/// required routines for executing the generated Inference code. +/// +/// The internal function used to convert the model to graph object returns a list +/// which contains a Graph object and a dictionary of weights. This dictionary is +/// used to extract the Initialized tensors for the model. The names and data-types +/// of the Initialized tensors are extracted along with their values in NumPy array, +/// and after approapriate type-conversions, they are added into the RModel object. +/// +/// For adding the Input tensor infos, the names of the input tensors are extracted +/// from the PyTorch ONNX graph object. The vector of shapes & data-types passed +/// into the `Parse()` function are used to extract the data-type and the shape +/// of the input tensors. Extracted input tensor infos are then added into the +/// RModel object by calling the `AddInputTensorInfo()` function. +/// +/// For the output tensor infos, names of the output tensors are also extracted +/// from the Graph object and are then added into the RModel object by calling the +/// AddOutputTensorNameList() function. +/// +/// Example Usage: +/// ~~~ {.cpp} +/// using TMVA::Experimental::SOFIE; +/// //Building the vector of input tensor shapes +/// std::vector s1{120,1}; +/// std::vector> inputShape{s1}; +/// RModel model = PyTorch::Parse("trained_model_dense.pt",inputShape); +/// ~~~ +RModel Parse(std::string filename, std::vector> inputShapes, std::vector inputDTypes){ + + char sep = '/'; + #ifdef _WIN32 + sep = '\\'; + #endif + + size_t isep = filename.rfind(sep, filename.length()); + std::string filename_nodir = filename; + if (isep != std::string::npos){ + filename_nodir = (filename.substr(isep+1, filename.length() - isep)); + } + + //Check on whether the PyTorch .pt file exists + if(!std::ifstream(filename).good()){ + throw std::runtime_error("Model file "+filename_nodir+" not found!"); + } + + + std::time_t ttime = std::time(0); + std::tm* gmt_time = std::gmtime(&ttime); + std::string parsetime (std::asctime(gmt_time)); + + RModel rmodel(filename_nodir, parsetime); + + //Intializing Python Interpreter and scope dictionaries + Py_Initialize(); + PyObject* main = PyImport_AddModule("__main__"); + PyObject* fGlobalNS = PyModule_GetDict(main); + PyObject* fLocalNS = PyDict_New(); + if (!fGlobalNS) { + throw std::runtime_error("Can't init global namespace for Python"); + } + if (!fLocalNS) { + throw std::runtime_error("Can't init local namespace for Python"); + } + + + //Extracting model information + //Model is converted to ONNX graph format + //using PyTorch's internal function with the input shape provided + PyRunString("import torch",fGlobalNS,fLocalNS); + PyRunString("print('Torch Version: '+torch.__version__)",fGlobalNS,fLocalNS); + PyRunString("from torch.onnx.utils import _model_to_graph",fGlobalNS,fLocalNS); + PyRunString("from torch.onnx.symbolic_helper import _set_onnx_shape_inference",fGlobalNS,fLocalNS); + PyRunString(TString::Format("model= torch.jit.load('%s')",filename.c_str()),fGlobalNS,fLocalNS); + PyRunString("globals().update(locals())",fGlobalNS,fLocalNS); + PyRunString("model.cpu()",fGlobalNS,fLocalNS); + PyRunString("model.eval()",fGlobalNS,fLocalNS); + + //Building dummy inputs for the model + PyRunString("dummyInputs=[]",fGlobalNS,fLocalNS); + for(long unsigned int it=0;it fWeightShape; + std::size_t fWeightSize; + + for(Py_ssize_t weightIter=0; weightIter fData(malloc(fWeightSize * sizeof(float)), free); + std::memcpy(fData.get(),fWeightValue,fWeightSize * sizeof(float)); + rmodel.AddInitializedTensor(fWeightName, ETensorType::FLOAT,fWeightShape,fData); + break; + } + default: + throw std::runtime_error("Type error: TMVA SOFIE does not yet supports weights of data type"+ConvertTypeToString(fWeightDType)); + } + } + + + //Extracting Input tensor info + PyRunString("inputs=[x for x in model.graph.inputs()]",fGlobalNS,fLocalNS); + PyRunString("inputs=inputs[1:]",fGlobalNS,fLocalNS); + PyRunString("inputNames=[x.debugName() for x in inputs]",fGlobalNS,fLocalNS); + PyObject* fPInputs= PyDict_GetItemString(fLocalNS,"inputNames"); + std::string fInputName; + std::vectorfInputShape; + ETensorType fInputDType; + for(Py_ssize_t inputIter=0; inputIter fOutputNames; + for(Py_ssize_t outputIter = 0; outputIter < PyList_Size(fPOutputs);++outputIter){ + fOutputNames.push_back(PyStringAsString(PyList_GetItem(fPOutputs,outputIter))); + } + rmodel.AddOutputTensorNameList(fOutputNames); + + return rmodel; +} + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Overloaded Parser function for translating PyTorch .pt model to RModel +/// object +/// +/// \param[in] filename file location of PyTorch .pt model +/// \param[in] inputShapes vector of input shape vectors +/// \return RModel Parsed RModel object +/// +/// Overloaded Parser function for translating PyTorch .pt model to RModel object. +/// Function only requires the inputShapes vector as a parameter. Function +/// builds the vector of Data-types for the input tensors using Float as default, +/// Function calls the `Parse()` function with the vector of data-types included, +/// subsequently returning the parsed RModel object. +RModel Parse(std::string filepath,std::vector> inputShapes){ + std::vector dtype(inputShapes.size(),ETensorType::FLOAT); + return Parse(filepath,inputShapes,dtype); +} +}//PyTorch +}//SOFIE +}//Experimental +}//TMVA diff --git a/tmva/pymva/test/CMakeLists.txt b/tmva/pymva/test/CMakeLists.txt index 1fa32f4fb952e..64fbfe8cf873f 100644 --- a/tmva/pymva/test/CMakeLists.txt +++ b/tmva/pymva/test/CMakeLists.txt @@ -26,7 +26,9 @@ if(PY_TORCH_FOUND) configure_file(generatePyTorchModelClassification.py generatePyTorchModelClassification.py COPYONLY) configure_file(generatePyTorchModelMulticlass.py generatePyTorchModelMulticlass.py COPYONLY) configure_file(generatePyTorchModelRegression.py generatePyTorchModelRegression.py COPYONLY) - # Test PyTorch: Binary classification + configure_file(generatePyTorchModelModule.py generatePyTorchModelModule.py COPYONLY) + configure_file(generatePyTorchModelSequential.py generatePyTorchModelSequential.py COPYONLY) + # Test PyTorch: Binary classification${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS} ROOT_EXECUTABLE(testPyTorchClassification testPyTorchClassification.C LIBRARIES ${Libraries}) ROOT_ADD_TEST(PyMVA-Torch-Classification COMMAND testPyTorchClassification) @@ -40,6 +42,37 @@ if(PY_TORCH_FOUND) ROOT_EXECUTABLE(testPyTorchMulticlass testPyTorchMulticlass.C LIBRARIES ${Libraries}) ROOT_ADD_TEST(PyMVA-Torch-Multiclass COMMAND testPyTorchMulticlass) + + # Test RModelParser_PyTorch + add_executable(emitFromPyTorch + EmitFromPyTorch.cxx + ${CMAKE_SOURCE_DIR}/tmva/pymva/src/RModelParser_PyTorch.cxx + ${CMAKE_SOURCE_DIR}/tmva/sofie/src/RModel.cxx + ${CMAKE_SOURCE_DIR}/tmva/sofie/src/SOFIE_common.cxx + ) + target_link_libraries(emitFromPyTorch ${PYTHON_LIBRARIES} ${Libraries}) + target_include_directories(emitFromPyTorch PRIVATE + ${CMAKE_SOURCE_DIR}/tmva/sofie/inc + ${CMAKE_SOURCE_DIR}/tmva/inc + ${CMAKE_SOURCE_DIR}/core/foundation/inc + ${CMAKE_BINARY_DIR}/ginclude # this is for RConfigure.h + ) + set_target_properties(emitFromPyTorch PROPERTIES POSITION_INDEPENDENT_CODE TRUE) + add_custom_target(SofieCompileModels_PyTorch) + add_dependencies(SofieCompileModels_PyTorch emitFromPyTorch) + add_custom_command(TARGET SofieCompileModels_PyTorch POST_BUILD + COMMAND ./emitFromPyTorch + USES_TERMINAL + ) + ROOT_ADD_GTEST(TestRModelParserPyTorch TestRModelParserPyTorch.C + LIBRARIES + ROOTTMVASofie + blas + ${PYTHON_LIBRARIES} + INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR} + ) + add_dependencies(TestRModelParserPyTorch SofieCompileModels_PyTorch) endif(PY_TORCH_FOUND) if((PY_KERAS_FOUND AND PY_THEANO_FOUND) OR (PY_KERAS_FOUND AND PY_TENSORFLOW_FOUND)) diff --git a/tmva/pymva/test/EmitFromPyTorch.cxx b/tmva/pymva/test/EmitFromPyTorch.cxx new file mode 100644 index 0000000000000..b29cae3f47c9f --- /dev/null +++ b/tmva/pymva/test/EmitFromPyTorch.cxx @@ -0,0 +1,39 @@ +// Author: Sanjiban Sengupta, 2021 +// Description: +// This is to test the RModelParser_PyTorch. +// The program is run when the target 'TestRModelParserPyTorch' is built. +// The program generates the required .hxx file after parsing a PyTorch .pt file into a RModel object. + + +#include "TMVA/RModel.hxx" +#include "TMVA/RModelParser_PyTorch.h" + +#include + +using namespace TMVA::Experimental::SOFIE; + +int main(){ + + Py_Initialize(); + //Emitting header file for PyTorch nn.Module + FILE* fPyTorchModule; + fPyTorchModule = fopen("generatePyTorchModelModule.py", "r"); + PyRun_SimpleFile(fPyTorchModule, "generatePyTorchModelModule.py"); + std::vector inputTensorShapeModule{2,6}; + std::vector> inputShapesModule{inputTensorShapeModule}; + RModel modelModule = TMVA::Experimental::SOFIE::PyTorch::Parse("PyTorchModelModule.pt",inputShapesModule); + modelModule.Generate(); + modelModule.OutputGenerated("PyTorchModuleModel.hxx"); + + //Emitting header file for PyTorch nn.Sequential + FILE* fPyTorchSequential; + fPyTorchSequential = fopen("generatePyTorchModelSequential.py", "r"); + PyRun_SimpleFile(fPyTorchSequential, "generatePyTorchModelSequential.py"); + std::vector inputTensorShapeSequential{2,4}; + std::vector> inputShapesSequential{inputTensorShapeSequential}; + RModel modelSequential = TMVA::Experimental::SOFIE::PyTorch::Parse("PyTorchModelSequential.pt",inputShapesSequential); + modelSequential.Generate(); + modelSequential.OutputGenerated("PyTorchSequentialModel.hxx"); + + return 0; +} diff --git a/tmva/pymva/test/TestRModelParserPyTorch.C b/tmva/pymva/test/TestRModelParserPyTorch.C new file mode 100644 index 0000000000000..54a76e3f8391a --- /dev/null +++ b/tmva/pymva/test/TestRModelParserPyTorch.C @@ -0,0 +1,96 @@ +#include "PyTorchModuleModel.hxx" +#include "PyTorchSequentialModel.hxx" + +#include +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include + +#include "gtest/gtest.h" + +constexpr float DEFAULT_TOLERANCE = 1e-6f; + +TEST(RModelParser_PyTorch, SEQUENTIAL) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + float inputSequential[]={-1.6207, 0.6133, + 0.5058, -1.2560, + -0.7750, -1.6701, + 0.8171, -0.2858}; + std::vector outputSequential = TMVA_SOFIE_PyTorchModelSequential::infer(inputSequential); + + Py_Initialize(); + PyObject* main = PyImport_AddModule("__main__"); + PyObject* fGlobalNS = PyModule_GetDict(main); + PyObject* fLocalNS = PyDict_New(); + if (!fGlobalNS) { + throw std::runtime_error("Can't init global namespace for Python"); + } + if (!fLocalNS) { + throw std::runtime_error("Can't init local namespace for Python"); + } + PyRun_String("import torch",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("model=torch.jit.load('PyTorchModelSequential.pt')",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("input=torch.reshape(torch.FloatTensor([-1.6207, 0.6133," + " 0.5058, -1.2560," + "-0.7750, -1.6701," + " 0.8171, -0.2858]),(2,4))",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("output=model(input).detach().numpy().reshape(2,6)",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("outputSize=output.size",Py_single_input,fGlobalNS,fLocalNS); + std::size_t pOutputSequentialSize=(std::size_t)PyLong_AsLong(PyDict_GetItemString(fLocalNS,"outputSize")); + + //Testing the actual and expected output tensor sizes + EXPECT_EQ(outputSequential.size(), pOutputSequentialSize); + + PyArrayObject* pSequentialValues=(PyArrayObject*)PyDict_GetItemString(fLocalNS,"output"); + float* pOutputSequential=(float*)PyArray_DATA(pSequentialValues); + + //Testing the actual and expected output tensor values + for (size_t i = 0; i < outputSequential.size(); ++i) { + EXPECT_LE(std::abs(outputSequential[i] - pOutputSequential[i]), TOLERANCE); + } +} + +TEST(RModelParser_PyTorch, MODULE) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + float inputModule[]={0.5516, 0.3585, + -0.4854, -1.3884, + 0.8057, -0.9449, + 0.5626, -0.6466, + -1.8818, 0.4736, + 1.1102, 1.8694}; + std::vector outputModule = TMVA_SOFIE_PyTorchModelModule::infer(inputModule); + + Py_Initialize(); + PyObject* main = PyImport_AddModule("__main__"); + PyObject* fGlobalNS = PyModule_GetDict(main); + PyObject* fLocalNS = PyDict_New(); + if (!fGlobalNS) { + throw std::runtime_error("Can't init global namespace for Python"); + } + if (!fLocalNS) { + throw std::runtime_error("Can't init local namespace for Python"); + } + PyRun_String("import torch",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("model=torch.jit.load('PyTorchModelModule.pt')",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("input=torch.reshape(torch.FloatTensor([0.5516, 0.3585, " + "-0.4854, -1.3884," + " 0.8057, -0.9449," + " 0.5626, -0.6466," + "-1.8818, 0.4736," + " 1.1102, 1.8694]),(2,6))",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("output=model(input).detach().numpy().reshape(2,12)",Py_single_input,fGlobalNS,fLocalNS); + PyRun_String("outputSize=output.size",Py_single_input,fGlobalNS,fLocalNS); + std::size_t pOutputModuleSize=(std::size_t)PyLong_AsLong(PyDict_GetItemString(fLocalNS,"outputSize")); + + //Testing the actual and expected output tensor sizes + EXPECT_EQ(outputModule.size(), pOutputModuleSize); + + PyArrayObject* pModuleValues=(PyArrayObject*)PyDict_GetItemString(fLocalNS,"output"); + float* pOutputModule=(float*)PyArray_DATA(pModuleValues); + + //Testing the actual and expected output tensor values + for (size_t i = 0; i < outputModule.size(); ++i) { + EXPECT_LE(std::abs(outputModule[i] - pOutputModule[i]), TOLERANCE); + } +} diff --git a/tmva/pymva/test/generatePyTorchModelModule.py b/tmva/pymva/test/generatePyTorchModelModule.py new file mode 100644 index 0000000000000..6a4a6421a8e63 --- /dev/null +++ b/tmva/pymva/test/generatePyTorchModelModule.py @@ -0,0 +1,38 @@ +import torch +import torch.nn as nn + +#Define model +class Model(nn.Module): + def __init__(self): + super(Model, self).__init__() + self.fc1 = nn.Linear(6, 12) + self.relu=nn.ReLU() + + def forward(self, x): + x=self.fc1(x) + x=self.relu(x) + x=torch.transpose(x,1,0) + return x + +model = Model() + +#Construct loss function and optimizer +criterion = nn.MSELoss() +optimizer = torch.optim.SGD(model.parameters(),lr=0.01) + +#Constructing random test dataset +x_train=torch.randn(2,6,requires_grad=True) +y_train=torch.randn(12,2,requires_grad=True) + +#Training the model +for i in range(2000): + y_pred = model(x_train) + loss = criterion(y_pred,y_train) + optimizer.zero_grad() + loss.backward() + optimizer.step() + +#Saving the traind model +model.eval() +m = torch.jit.script(model) +torch.jit.save(m,"PyTorchModelModule.pt") diff --git a/tmva/pymva/test/generatePyTorchModelSequential.py b/tmva/pymva/test/generatePyTorchModelSequential.py new file mode 100644 index 0000000000000..1a8285e7fb6e8 --- /dev/null +++ b/tmva/pymva/test/generatePyTorchModelSequential.py @@ -0,0 +1,29 @@ +import torch +import torch.nn as nn + +#Define model +model = nn.Sequential( + nn.Linear(4,6), + nn.ReLU() + ) + +#Construct loss function and optimizer +criterion = nn.MSELoss() +optimizer = torch.optim.SGD(model.parameters(),lr=0.01) + +#Constructing random test dataset +x=torch.randn(2,4) +y=torch.randn(2,6) + +#Training the model +for i in range(2000): + y_pred = model(x) + loss = criterion(y_pred,y) + optimizer.zero_grad() + loss.backward() + optimizer.step() + +#Saving the trained model +model.eval() +m = torch.jit.script(model) +torch.jit.save(m,"PyTorchModelSequential.pt") From 62ce450bc3e598aa091b70f857680b610984f2e8 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Thu, 15 Jul 2021 11:57:03 +0200 Subject: [PATCH 015/577] pass second derivative and step size through FCNGradAdapter This fixes the RooGradMinimizer test in as minimal a way possible. Note that this still has a bunch of compile warnings. --- math/mathcore/inc/Math/IFunction.h | 26 +++++ math/minuit2/inc/Minuit2/FCNGradAdapter.h | 12 +++ math/minuit2/inc/Minuit2/FCNGradientBase.h | 2 + .../ExternalInternalGradientCalculator.cxx | 38 ++++++-- roofit/roofitcore/inc/RooGradMinimizerFcn.h | 2 + roofit/roofitcore/src/RooGradMinimizerFcn.cxx | 12 +++ .../test/testRooGradMinimizerFcn.cxx | 94 ++++++++++--------- 7 files changed, 134 insertions(+), 52 deletions(-) diff --git a/math/mathcore/inc/Math/IFunction.h b/math/mathcore/inc/Math/IFunction.h index e7871c4f06f76..474a5aed6137d 100644 --- a/math/mathcore/inc/Math/IFunction.h +++ b/math/mathcore/inc/Math/IFunction.h @@ -215,6 +215,14 @@ namespace ROOT { Return the partial derivative with respect to the passed coordinate */ T Derivative(const T *x, unsigned int icoord = 0) const { return DoDerivative(x, icoord); } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + T Derivative(const T *x, unsigned int icoord, T *previous_grad, T *previous_g2, + T *previous_gstep) const + { + return DoDerivative(x, icoord, previous_grad, previous_g2, previous_gstep); + } /** Optimized method to evaluate at the same time the function value and derivative at a point x. @@ -232,6 +240,14 @@ namespace ROOT { function to evaluate the derivative with respect each coordinate. To be implemented by the derived class */ virtual T DoDerivative(const T *x, unsigned int icoord) const = 0; + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + virtual T DoDerivative(const T *x, unsigned int icoord, T * /*previous_grad*/, T * /*previous_g2*/, + T * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + }; }; //___________________________________________________________________________________ @@ -346,6 +362,16 @@ namespace ROOT { grad[icoord] = BaseGrad::Derivative(x, icoord); } + /// In some cases, the gradient algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + virtual void Gradient(const T *x, T *grad, T *previous_grad, T *previous_g2, T *previous_gstep) const + { + unsigned int ndim = NDim(); + for (unsigned int icoord = 0; icoord < ndim; ++icoord) + grad[icoord] = BaseGrad::Derivative(x, icoord, previous_grad, previous_g2, previous_gstep); + } + using BaseFunc::NDim; /** diff --git a/math/minuit2/inc/Minuit2/FCNGradAdapter.h b/math/minuit2/inc/Minuit2/FCNGradAdapter.h index 6d42bab48f340..5e186918da0c9 100644 --- a/math/minuit2/inc/Minuit2/FCNGradAdapter.h +++ b/math/minuit2/inc/Minuit2/FCNGradAdapter.h @@ -54,6 +54,18 @@ class FCNGradAdapter : public FCNGradientBase { }); return fGrad; } + std::vector Gradient(const std::vector &v, double *previous_grad, double *previous_g2, + double *previous_gstep) const override + { + fFunc.Gradient(&v[0], &fGrad[0], previous_grad, previous_g2, previous_gstep); + + MnPrint("FCNGradAdapter").Debug([&](std::ostream &os) { + os << "gradient in FCNAdapter = {"; + for (unsigned int i = 0; i < fGrad.size(); ++i) + os << fGrad[i] << (i == fGrad.size() - 1 ? '}' : '\t'); + }); + return fGrad; + } // forward interface // virtual double operator()(int npar, double* params,int iflag = 4) const; bool CheckGradient() const override { return false; } diff --git a/math/minuit2/inc/Minuit2/FCNGradientBase.h b/math/minuit2/inc/Minuit2/FCNGradientBase.h index 4300528b65929..cc7259fd57dbc 100644 --- a/math/minuit2/inc/Minuit2/FCNGradientBase.h +++ b/math/minuit2/inc/Minuit2/FCNGradientBase.h @@ -41,6 +41,8 @@ class FCNGradientBase : public FCNBase { virtual ~FCNGradientBase() {} virtual std::vector Gradient(const std::vector &) const = 0; + virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const { return Gradient(parameters); }; virtual bool CheckGradient() const { return true; } diff --git a/math/minuit2/src/ExternalInternalGradientCalculator.cxx b/math/minuit2/src/ExternalInternalGradientCalculator.cxx index 19700394fc9d7..0f93f2bc6e5e8 100644 --- a/math/minuit2/src/ExternalInternalGradientCalculator.cxx +++ b/math/minuit2/src/ExternalInternalGradientCalculator.cxx @@ -13,13 +13,13 @@ #include "Minuit2/MnUserTransformation.h" #include "Minuit2/FunctionGradient.h" #include "Minuit2/MinimumParameters.h" +#include "Minuit2/MnPrint.h" namespace ROOT { namespace Minuit2 { FunctionGradient ExternalInternalGradientCalculator::operator()(const MinimumParameters &par) const { - // evaluate analytical gradient. take care of parameter transformations std::vector par_vec; par_vec.resize(par.Vec().size()); for (std::size_t ix = 0; ix < par.Vec().size(); ++ix) { @@ -35,18 +35,42 @@ FunctionGradient ExternalInternalGradientCalculator::operator()(const MinimumPar v(i) = grad[ext]; } -#ifdef DEBUG - std::cout << "User given gradient in Minuit2" << v << std::endl; -#endif + MnPrint print("ExternalInternalGradientCalculator"); + print.Debug("User given gradient in Minuit2", v); return FunctionGradient(v); } FunctionGradient -ExternalInternalGradientCalculator::operator()(const MinimumParameters &par, const FunctionGradient &) const +ExternalInternalGradientCalculator::operator()(const MinimumParameters &par, const FunctionGradient &functionGradient) const { - // needed from base class - return (*this)(par); + std::vector par_vec; + par_vec.resize(par.Vec().size()); + for (std::size_t ix = 0; ix < par.Vec().size(); ++ix) { + par_vec[ix] = par.Vec()(ix); + } + + std::vector previous_grad(functionGradient.Grad().Data(), functionGradient.Grad().Data() + functionGradient.Grad().size()); + std::vector previous_g2(functionGradient.G2().Data(), functionGradient.G2().Data() + functionGradient.G2().size()); + std::vector previous_gstep(functionGradient.Gstep().Data(), functionGradient.Gstep().Data() + functionGradient.Gstep().size()); + + std::vector grad = fGradCalc.Gradient(par_vec, previous_grad.data(), previous_g2.data(), previous_gstep.data()); + assert(grad.size() == fTransformation.Parameters().size()); + + MnAlgebraicVector v(par.Vec().size()); + MnAlgebraicVector v_g2(par.Vec().size()); + MnAlgebraicVector v_gstep(par.Vec().size()); + for (unsigned int i = 0; i < par.Vec().size(); i++) { + unsigned int ext = fTransformation.ExtOfInt(i); + v(i) = grad[ext]; + v_g2(i) = previous_g2[ext]; + v_gstep(i) = previous_gstep[ext]; + } + + MnPrint print("ExternalInternalGradientCalculator"); + print.Debug("User given gradient in Minuit2", v, "g2", v_g2, "step size", v_gstep); + + return FunctionGradient(v, v_g2, v_gstep); } } // namespace Minuit2 diff --git a/roofit/roofitcore/inc/RooGradMinimizerFcn.h b/roofit/roofitcore/inc/RooGradMinimizerFcn.h index 829fc228d45d5..f17563b60e0f6 100644 --- a/roofit/roofitcore/inc/RooGradMinimizerFcn.h +++ b/roofit/roofitcore/inc/RooGradMinimizerFcn.h @@ -70,6 +70,8 @@ class RooGradMinimizerFcn : public ROOT::Math::IMultiGradFunction, public RooAbs // IMultiGradFunction overrides double DoEval(const double *x) const override; double DoDerivative(const double *x, unsigned int icoord) const override; + double DoDerivative(const double *x, unsigned int i_component, double *previous_grad, + double *previous_g2, double *previous_gstep) const override; // members // mutable because ROOT::Math::IMultiGradFunction::DoDerivative is const diff --git a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx index 55e5d66ab5010..f2227dcd698b1 100644 --- a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx @@ -215,6 +215,18 @@ double RooGradMinimizerFcn::DoDerivative(const double *x, unsigned int i_compone return _grad[i_component].derivative; } +double RooGradMinimizerFcn::DoDerivative(const double *x, unsigned int i_component, double *previous_grad, + double *previous_g2, double *previous_gstep) const +{ + syncParameters(x); + _grad[i_component] = {previous_grad[i_component], previous_g2[i_component], previous_gstep[i_component]}; + runDerivator(i_component); + previous_grad[i_component] = _grad[i_component].derivative; + previous_g2[i_component] = _grad[i_component].second_derivative; + previous_gstep[i_component] = _grad[i_component].step_size; + return _grad[i_component].derivative; +} + //////////////////////////////////////////////////////////////////////////////// void RooGradMinimizerFcn::setStrategy(int istrat) diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx index 3d1a8181612c8..e3cccab39a939 100644 --- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx @@ -29,69 +29,73 @@ #include #include // RooFit::ERROR -TEST(GradMinimizer, Gaussian1D) +class GradMinimizerParSeed : public testing::TestWithParam {}; + +TEST_P(GradMinimizerParSeed, Gaussian1D) { RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); // produce the same random stuff every time - RooRandom::randomGenerator()->SetSeed(1); + RooRandom::randomGenerator()->SetSeed(GetParam()); - for (int i = 0; i < 10; ++i) { - RooWorkspace w = RooWorkspace(); - - std::unique_ptr nll; - std::unique_ptr values; - RooAbsPdf *pdf; - RooDataSet *data; - std::tie(nll, pdf, data, values) = generate_1D_gaussian_pdf_nll(w, 10000); - // when c++17 support arrives, change to this: - // auto [nll, values] = generate_1D_gaussian_pdf_nll(w, 10000); - RooRealVar *mu = w.var("mu"); - - RooArgSet *savedValues = dynamic_cast(values->snapshot()); - if (savedValues == nullptr) { - throw std::runtime_error("params->snapshot() cannot be casted to RooArgSet!"); - } + RooWorkspace w = RooWorkspace(); - // -------- + std::unique_ptr nll; + std::unique_ptr values; + RooAbsPdf *pdf; + RooDataSet *data; + std::tie(nll, pdf, data, values) = generate_1D_gaussian_pdf_nll(w, 10000); + // when c++17 support arrives, change to this: + // auto [nll, values] = generate_1D_gaussian_pdf_nll(w, 10000); + RooRealVar *mu = w.var("mu"); - RooMinimizer m0(*nll); - m0.setMinimizerType("Minuit2"); + RooArgSet *savedValues = dynamic_cast(values->snapshot()); + if (savedValues == nullptr) { + throw std::runtime_error("params->snapshot() cannot be casted to RooArgSet!"); + } - m0.setStrategy(0); - m0.setPrintLevel(-1); + // -------- - m0.migrad(); + RooMinimizer m0(*nll); + m0.setMinimizerType("Minuit2"); - RooFitResult *m0result = m0.lastMinuitFit(); - double minNll0 = m0result->minNll(); - double edm0 = m0result->edm(); - double mu0 = mu->getVal(); - double muerr0 = mu->getError(); + m0.setStrategy(0); + m0.setPrintLevel(-1); - *values = *savedValues; + m0.migrad(); - std::unique_ptr m1 = RooMinimizer::create(*nll, RooMinimizer::FcnMode::gradient); - m1->setMinimizerType("Minuit2"); + RooFitResult *m0result = m0.lastMinuitFit(); + double minNll0 = m0result->minNll(); + double edm0 = m0result->edm(); + double mu0 = mu->getVal(); + double muerr0 = mu->getError(); - m1->setStrategy(0); - m1->setPrintLevel(-1); + *values = *savedValues; - m1->migrad(); + std::unique_ptr m1 = RooMinimizer::create(*nll); + m1->setMinimizerType("Minuit2"); - RooFitResult *m1result = m1->lastMinuitFit(); - double minNll1 = m1result->minNll(); - double edm1 = m1result->edm(); - double mu1 = mu->getVal(); - double muerr1 = mu->getError(); + m1->setStrategy(0); + m1->setPrintLevel(-1); - EXPECT_EQ(minNll0, minNll1); - EXPECT_EQ(mu0, mu1); - EXPECT_EQ(muerr0, muerr1); - EXPECT_EQ(edm0, edm1); - } + m1->migrad(); + + RooFitResult *m1result = m1->lastMinuitFit(); + double minNll1 = m1result->minNll(); + double edm1 = m1result->edm(); + double mu1 = mu->getVal(); + double muerr1 = mu->getError(); + + EXPECT_EQ(minNll0, minNll1); + EXPECT_EQ(mu0, mu1); + EXPECT_EQ(muerr0, muerr1); + EXPECT_EQ(edm0, edm1); } +INSTANTIATE_TEST_SUITE_P(Seeds, + GradMinimizerParSeed, + testing::Range(1, 11)); + TEST(GradMinimizerDebugging, DISABLED_Gaussian1DNominal) { // produce the same random stuff every time From 1e452a8d3d9389f37883b703e7511008fe430298 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Fri, 16 Jul 2021 20:49:57 +0200 Subject: [PATCH 016/577] reactivate testRooGradMinimizerFcn, fix it & fix compilation Turns out the RooGradMinimizerFcn also still had a slight remaining bug, which was introduced by the "detemplatization" redesign of RooMinimizer in PR #8596. The problem was that the RooMinimizer ctor, which calls the RooGradMinimizerFcn ctor, which calls synchronizeGradientParameterSettings... called _context->getMultiGenFcn() (_context is the same RooMinimizer that is creating the RooGradMinimizerFcn at this point...) and that in turn tries to do a dynamic_cast on _fcn, which is going to be the RooGradMinimizerFcn after it has been assigned after construction, but this is still in progress at that point, so the dynamic_cast fails, since _fcn is still nullptr. The fix was to remove a fortunately unused parameter in NumericalDerivator::SetInitialGradient, which removes the problematic _context->getMultiGenFcn() call. In addition, compilation warnings were produced by overloads that shadowed the 5-parameter DoDerivative/Gradient overloads. To silence the warnings, we just add five-parameter overloads that forward to the two-parameter ones. To implement full 5-parameter paths everywhere would require more work and discussion. Also some compilation errors on Windows fixed by using vectors instead of non-standard dynamic sized arrays. --- math/mathcore/inc/Fit/Chi2FCN.h | 17 ++++++++++ math/mathcore/inc/Fit/LogLikelihoodFCN.h | 16 ++++++++++ math/mathcore/inc/Fit/PoissonLikelihoodFCN.h | 17 ++++++++++ math/mathcore/inc/Math/Functor.h | 31 +++++++++++++++++++ .../inc/Math/MinimTransformFunction.h | 8 +++++ math/mathcore/test/fit/testMinim.cxx | 18 +++++++++++ math/mathmore/inc/Math/GSLNLSMinimizer.h | 17 ++++++++++ math/mathmore/inc/Math/MultiNumGradFunction.h | 9 ++++++ math/minuit2/inc/Minuit2/NumericalDerivator.h | 3 +- math/minuit2/src/NumericalDerivator.cxx | 3 +- math/minuit2/test/MnTutorial/Quad1F.h | 2 ++ math/minuit2/test/MnTutorial/Quad4F.h | 2 ++ math/minuit2/test/testMinimizer.cxx | 18 +++++++++++ roofit/roofitcore/src/RooGradMinimizerFcn.cxx | 2 +- roofit/roofitcore/test/CMakeLists.txt | 5 ++- .../test/testRooGradMinimizerFcn.cxx | 18 +++++------ roofit/roofitcore/test/test_lib.h | 3 +- 17 files changed, 171 insertions(+), 18 deletions(-) diff --git a/math/mathcore/inc/Fit/Chi2FCN.h b/math/mathcore/inc/Fit/Chi2FCN.h index bc72f64d680c5..f45cb872052ea 100644 --- a/math/mathcore/inc/Fit/Chi2FCN.h +++ b/math/mathcore/inc/Fit/Chi2FCN.h @@ -126,6 +126,14 @@ class Chi2FCN : public BasicFCN { FitUtil::Evaluate::EvalChi2Gradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } + /// In some cases, the gradient algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLeastSquare; } @@ -154,6 +162,15 @@ class Chi2FCN : public BasicFCN { Gradient(x, fGrad.data()); return fGrad[icoord]; } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } mutable unsigned int fNEffPoints; // number of effective points used in the fit diff --git a/math/mathcore/inc/Fit/LogLikelihoodFCN.h b/math/mathcore/inc/Fit/LogLikelihoodFCN.h index 02b9ec1715a2b..bada8b1d49225 100644 --- a/math/mathcore/inc/Fit/LogLikelihoodFCN.h +++ b/math/mathcore/inc/Fit/LogLikelihoodFCN.h @@ -129,6 +129,14 @@ class LogLikelihoodFCN : public BasicFCN { FitUtil::Evaluate::EvalLogLGradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } + /// In some cases, the gradient algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This overload just calls the two-parameter version. + virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLogLikelihood; } @@ -162,6 +170,14 @@ class LogLikelihoodFCN : public BasicFCN { Gradient(x, &fGrad[0]); return fGrad[icoord]; } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } //data member diff --git a/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h b/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h index 85d1025b0f6a9..7cc2ca3aeb71c 100644 --- a/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h +++ b/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h @@ -130,6 +130,14 @@ class PoissonLikelihoodFCN : public BasicFCN FitUtil::Evaluate::EvalPoissonLogLGradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } + /// In some cases, the gradient algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLogLikelihood; } @@ -170,6 +178,15 @@ class PoissonLikelihoodFCN : public BasicFCN Gradient(x, &fGrad[0]); return fGrad[icoord]; } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } //data member diff --git a/math/mathcore/inc/Math/Functor.h b/math/mathcore/inc/Math/Functor.h index 43214aa8d2190..0ac2fbc9605a6 100644 --- a/math/mathcore/inc/Math/Functor.h +++ b/math/mathcore/inc/Math/Functor.h @@ -128,6 +128,14 @@ private : return fFunc.Derivative(x,icoord); } + // TODO: implementing this will require extending with another function signature in GradFunctor + /// \warning This overload just calls the two-parameter version. + inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } + unsigned int fDim; mutable Func fFunc; // should here be a reference and pass a non-const ref in ctor @@ -211,6 +219,13 @@ private : return fGradFunc(x, icoord); } + // TODO: implementing this will require extending with another function signature in GradFunctor + /// \warning This overload just calls the two-parameter version. + inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } unsigned int fDim; mutable Func fFunc; @@ -348,6 +363,14 @@ private : return ((*fObj).*fGradMemFn)(x,icoord); } + // TODO: implementing this will require extending with another function signature in GradFunctor + /// \warning This overload just calls the two-parameter version. + inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } + unsigned int fDim; mutable PointerToObj fObj; PointerToMemFn fMemFn; @@ -702,6 +725,14 @@ private : return fImpl->Derivative(x,icoord); } + // TODO: implementing this will require extending with another function signature in GradFunctor + /// \warning This overload just calls the two-parameter version. + inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } + std::unique_ptr fImpl; // pointer to base grad functor handler diff --git a/math/mathcore/inc/Math/MinimTransformFunction.h b/math/mathcore/inc/Math/MinimTransformFunction.h index 94d1877778326..c8eac81b3e4d7 100644 --- a/math/mathcore/inc/Math/MinimTransformFunction.h +++ b/math/mathcore/inc/Math/MinimTransformFunction.h @@ -123,6 +123,14 @@ class MinimTransformFunction : public IMultiGradFunction { //std::cout << "Derivative icoord (ext)" << fIndex[icoord] << " dtrafo " << dExtdInt << " " << deriv << std::endl; return deriv * dExtdInt; } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } // copy constructor for this class (disable by having it private) MinimTransformFunction( const MinimTransformFunction & ) : diff --git a/math/mathcore/test/fit/testMinim.cxx b/math/mathcore/test/fit/testMinim.cxx index 27afa917ab1a1..f0275e28eb486 100644 --- a/math/mathcore/test/fit/testMinim.cxx +++ b/math/mathcore/test/fit/testMinim.cxx @@ -188,6 +188,10 @@ public : } } + void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } #ifdef USE_FDF void FdF (const double * x, double & f, double * g) const { @@ -240,6 +244,11 @@ public : Gradient(x,&g[0]); return g[i]; } + double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } private: @@ -322,6 +331,10 @@ public : } + void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } private: @@ -342,6 +355,11 @@ public : Gradient(x,&g[0]); return g[i]; } + double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } void DoCalculatefi(const double * x) const { // calculate the i- element ; F(X) = Sum {fi] diff --git a/math/mathmore/inc/Math/GSLNLSMinimizer.h b/math/mathmore/inc/Math/GSLNLSMinimizer.h index 46cd3364c5bb2..8bc2a9d0f311a 100644 --- a/math/mathmore/inc/Math/GSLNLSMinimizer.h +++ b/math/mathmore/inc/Math/GSLNLSMinimizer.h @@ -102,6 +102,14 @@ class LSResidualFunc : public IMultiGradFunction { double f0 = 0; FdF(x,f0,g); } + /// In some cases, the gradient algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } void FdF (const double * x, double & f, double * g) const { unsigned int n = NDim(); @@ -129,6 +137,15 @@ class LSResidualFunc : public IMultiGradFunction { fX2[icoord] += kEps; return ( DoEval(&fX2.front()) - DoEval(x) )/kEps; } + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } unsigned int fIndex; const ROOT::Math::FitMethodFunction * fChi2; diff --git a/math/mathmore/inc/Math/MultiNumGradFunction.h b/math/mathmore/inc/Math/MultiNumGradFunction.h index 2bec540179222..1676661fdbde8 100644 --- a/math/mathmore/inc/Math/MultiNumGradFunction.h +++ b/math/mathmore/inc/Math/MultiNumGradFunction.h @@ -122,6 +122,15 @@ class MultiNumGradFunction : public IMultiGradFunction { // calculate derivative using mathcore derivator double DoDerivative (const double * x, unsigned int icoord ) const; + /// In some cases, the derivative algorithm will use information from the previous step, these can be passed + /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size + /// so that these can be passed forward again as well at the call site, if necessary. + /// \warning This implementation just calls the two-parameter overload. + virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } // adapat internal function type to IMultiGenFunction needed by derivative calculation const IMultiGenFunction * fFunc; diff --git a/math/minuit2/inc/Minuit2/NumericalDerivator.h b/math/minuit2/inc/Minuit2/NumericalDerivator.h index ee6203274f066..e2c90731b68c2 100644 --- a/math/minuit2/inc/Minuit2/NumericalDerivator.h +++ b/math/minuit2/inc/Minuit2/NumericalDerivator.h @@ -70,8 +70,7 @@ class NumericalDerivator { double Ext2int(const ROOT::Fit::ParameterSettings ¶meter, double val) const; double DInt2Ext(const ROOT::Fit::ParameterSettings ¶meter, double val) const; - void SetInitialGradient(const ROOT::Math::IBaseFunctionMultiDim *function, - const std::vector ¶meters, + void SetInitialGradient(const std::vector ¶meters, std::vector &gradient); inline bool AlwaysExactlyMimicMinuit2() const { return fAlwaysExactlyMimicMinuit2; } diff --git a/math/minuit2/src/NumericalDerivator.cxx b/math/minuit2/src/NumericalDerivator.cxx index 618334d0e55a4..758cd6c8d8c28 100644 --- a/math/minuit2/src/NumericalDerivator.cxx +++ b/math/minuit2/src/NumericalDerivator.cxx @@ -221,8 +221,7 @@ double NumericalDerivator::DInt2Ext(const ROOT::Fit::ParameterSettings ¶mete // MODIFIED: /// This function was not implemented as in Minuit2. Now it copies the behavior /// of InitialGradientCalculator. See https://github.com/roofit-dev/root/issues/10 -void NumericalDerivator::SetInitialGradient(const ROOT::Math::IBaseFunctionMultiDim *, - const std::vector ¶meters, +void NumericalDerivator::SetInitialGradient(const std::vector ¶meters, std::vector &gradient) { // set an initial gradient using some given steps diff --git a/math/minuit2/test/MnTutorial/Quad1F.h b/math/minuit2/test/MnTutorial/Quad1F.h index ba6fabf1a93a0..276282e7ec004 100644 --- a/math/minuit2/test/MnTutorial/Quad1F.h +++ b/math/minuit2/test/MnTutorial/Quad1F.h @@ -37,6 +37,8 @@ class Quad1F : public FCNGradientBase { return (std::vector(1, 2. * x)); } + virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const { return Gradient(parameters); }; void SetErrorDef(double up) { fErrorDef = up; } diff --git a/math/minuit2/test/MnTutorial/Quad4F.h b/math/minuit2/test/MnTutorial/Quad4F.h index 1089184ca7a69..ed90fc4925079 100644 --- a/math/minuit2/test/MnTutorial/Quad4F.h +++ b/math/minuit2/test/MnTutorial/Quad4F.h @@ -72,6 +72,8 @@ class Quad4FGrad : public FCNGradientBase { g[3] = 2. * w; return g; } + virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, + double */*previous_gstep*/) const { return Gradient(parameters); }; double Up() const { return 1.; } diff --git a/math/minuit2/test/testMinimizer.cxx b/math/minuit2/test/testMinimizer.cxx index 92f7817204b1a..dea116e13fd85 100644 --- a/math/minuit2/test/testMinimizer.cxx +++ b/math/minuit2/test/testMinimizer.cxx @@ -169,6 +169,10 @@ class TrigoFletcherFunction : public ROOT::Math::IMultiGradFunction { } } } + void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } #ifdef USE_FDF void FdF(const double *x, double &f, double *g) const @@ -220,6 +224,11 @@ class TrigoFletcherFunction : public ROOT::Math::IMultiGradFunction { Gradient(x, &g[0]); return g[i]; } + double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } private: unsigned int fDim; @@ -286,6 +295,10 @@ class ChebyQuadFunction : public ROOT::Math::IMultiGradFunction { g[j] = 2. * g[j] / double(n); } } + void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const + { + Gradient(x, g); + } private: double DoEval(const double *x) const @@ -306,6 +319,11 @@ class ChebyQuadFunction : public ROOT::Math::IMultiGradFunction { Gradient(x, &g[0]); return g[i]; } + double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, + double * /*previous_gstep*/) const + { + return DoDerivative(x, icoord); + } void DoCalculatefi(const double *x) const { diff --git a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx index f2227dcd698b1..6e389a1d555ac 100644 --- a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx @@ -64,7 +64,7 @@ ROOT::Math::IMultiGradFunction *RooGradMinimizerFcn::Clone() const void RooGradMinimizerFcn::synchronizeGradientParameterSettings( std::vector ¶meter_settings) const { - _gradf.SetInitialGradient(_context->getMultiGenFcn(), parameter_settings, _grad); + _gradf.SetInitialGradient(parameter_settings, _grad); } //////////////////////////////////////////////////////////////////////////////// diff --git a/roofit/roofitcore/test/CMakeLists.txt b/roofit/roofitcore/test/CMakeLists.txt index 2ebcb7507e091..890723e81aefa 100644 --- a/roofit/roofitcore/test/CMakeLists.txt +++ b/roofit/roofitcore/test/CMakeLists.txt @@ -42,6 +42,5 @@ if(NOT MSVC OR win_broken_tests) endif() ROOT_ADD_GTEST(testRooProductPdf testRooProductPdf.cxx LIBRARIES RooFitCore) ROOT_ADD_GTEST(testNaNPacker testNaNPacker.cxx LIBRARIES RooFitCore) -ROOT_ADD_GTEST(testRooSimultaneous testRooSimultaneous.cxx LIBRARIES RooFitCore) -#ROOT_ADD_GTEST(testRooGradMinimizerFcn testRooGradMinimizerFcn.cxx LIBRARIES RooFitCore) - +ROOT_ADD_GTEST(testRooSimultaneous testRooSimultaneous.cxx LIBRARIES RooFitCore RooFit) +ROOT_ADD_GTEST(testRooGradMinimizerFcn testRooGradMinimizerFcn.cxx LIBRARIES RooFitCore) diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx index e3cccab39a939..d1ee53aec994e 100644 --- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx @@ -72,7 +72,7 @@ TEST_P(GradMinimizerParSeed, Gaussian1D) *values = *savedValues; - std::unique_ptr m1 = RooMinimizer::create(*nll); + std::unique_ptr m1 = RooMinimizer::create(*nll, RooMinimizer::FcnMode::gradient); m1->setMinimizerType("Minuit2"); m1->setStrategy(0); @@ -186,8 +186,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m0result = m0.lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - double mean0[N]; - double std0[N]; + std::vector mean0(N); + std::vector std0(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -218,8 +218,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m1result = m1->lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - double mean1[N]; - double std1[N]; + std::vector mean1(N); + std::vector std1(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -283,8 +283,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m0result = m0->lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - double mean0[N]; - double std0[N]; + std::vector mean0(N); + std::vector std0(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -315,8 +315,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m1result = m1.lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - double mean1[N]; - double std1[N]; + std::vector mean1(N); + std::vector std1(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; diff --git a/roofit/roofitcore/test/test_lib.h b/roofit/roofitcore/test/test_lib.h index dae7ef3b50dd7..df6ead82c263d 100644 --- a/roofit/roofitcore/test/test_lib.h +++ b/roofit/roofitcore/test/test_lib.h @@ -21,6 +21,7 @@ #include #include // make_unique +#include RooAbsPdf * generate_1D_gaussian_pdf(RooWorkspace &w) { @@ -61,7 +62,7 @@ generate_ND_gaussian_pdf_nll(RooWorkspace &w, unsigned int n, unsigned long N_ev RooArgSet obs_set; // create gaussian parameters - double mean[n], sigma[n]; + std::vector mean(n), sigma(n); for (unsigned ix = 0; ix < n; ++ix) { mean[ix] = RooRandom::randomGenerator()->Gaus(0, 2); sigma[ix] = 0.1 + abs(RooRandom::randomGenerator()->Gaus(0, 2)); From f0053ef6f146d22ead3fc4b860b8de04947907ce Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 1 Sep 2021 10:54:24 +0200 Subject: [PATCH 017/577] Mark TGeoTrack as deprecated (#8943) --- geom/geompainter/src/TGeoTrack.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/geom/geompainter/src/TGeoTrack.cxx b/geom/geompainter/src/TGeoTrack.cxx index 4f27c0e88ca67..248ef1fd00edd 100644 --- a/geom/geompainter/src/TGeoTrack.cxx +++ b/geom/geompainter/src/TGeoTrack.cxx @@ -21,6 +21,11 @@ /** \class TGeoTrack \ingroup Geometry_classes +\deprecated +TGeoTrack is one of the first attempts to make an event display in the pad early millennium, +meanwhile people managed to implement similar functionality in much better ways in events +displays applications. Although the class is still working, its usage was not encouraged. + Class for user-defined tracks attached to a geometry. Tracks are 3D objects made of points and they store a pointer to a TParticle. The geometry manager holds a list From 24ea49d4702ba0aa9b1ea5521950520154ee151c Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Tue, 31 Aug 2021 16:09:52 +0200 Subject: [PATCH 018/577] [DF] Suppress spurious ResourceWarning in distrdf-pyspark tests Distributed RDataFrame tests that use `pyspark` will report `ResourceWarning`s like the ones seen here https://lcgapp-services.cern.ch/root-jenkins/job/root-nightly-master/LABEL=ROOT-ubuntu18.04,SPEC=nortcxxmod,V=master/2956/testReport/projectroot.roottest.python/distrdf/roottest_python_distrdf_spark_test_reducer_merge/ This kind of warning is apparently common in Python unittests that use socket, both with [pyspark](https://stackoverflow.com/questions/49361286/unittesting-with-pyspark-unclosed-socket-warnings) and [others](https://stackoverflow.com/questions/14938716/socket-resourcewarning-using-urllib-in-python-3). The reason they are shown is that in Python3 the unittest module has been updated to use the "default" level of warnings filters, as mentioned [in the docs](https://docs.python.org/3.5/library/warnings.html#updating-code-for-new-versions-of-python). For the particular case of `pyspark`, these warnings are actually present in any application that uses the same "default" level: ```py $: cat sparktest.py import pyspark import warnings warnings.simplefilter("default", ResourceWarning) sc = pyspark.SparkContext.getOrCreate() sc.parallelize([1,2,3,4,5]).map(lambda x: 1).reduce(lambda x,y: x+y) ``` ```bash $: python sparktest.py 21/08/30 11:04:59 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). /usr/lib64/python3.8/socket.py:740: ResourceWarning: unclosed self._sock = None ResourceWarning: Enable tracemalloc to get the object allocation traceback ``` This commit adds an extra call in the setup part of unittests that use pyspark, to ignore these warnings. The default level for the warnings is restored after the tests. --- .../distrdf/test/backend/test_spark.py | 136 ++++++++++++------ 1 file changed, 91 insertions(+), 45 deletions(-) diff --git a/bindings/experimental/distrdf/test/backend/test_spark.py b/bindings/experimental/distrdf/test/backend/test_spark.py index d8de4233016f5..04c073fb17763 100644 --- a/bindings/experimental/distrdf/test/backend/test_spark.py +++ b/bindings/experimental/distrdf/test/backend/test_spark.py @@ -1,6 +1,7 @@ import os import sys import unittest +import warnings import DistRDF import pyspark @@ -18,24 +19,33 @@ class SparkBackendInitTest(unittest.TestCase): @classmethod def setUpClass(cls): """ - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Set up test environment for this class. Currently this includes: - Needed to avoid mismatch between python versions on driver and on - the fake executor on the same machine. + - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Needed to avoid mismatch between python versions on driver and on the + fake executor on the same machine. + - Ignore `ResourceWarning: unclosed socket` warning triggered by Spark. + this is ignored by default in any application, but Python's unittest + library overrides the default warning filters thus exposing this + warning """ os.environ["PYSPARK_PYTHON"] = sys.executable - def tearDown(self): - """Stop any created SparkContext""" - pyspark.SparkContext.getOrCreate().stop() + if sys.version_info.major >= 3: + warnings.simplefilter("ignore", ResourceWarning) @classmethod def tearDownClass(cls): - """ - Stop the SparkContext and reset environment variable. - """ + """Reset test environment.""" os.environ["PYSPARK_PYTHON"] = "" + if sys.version_info.major >= 3: + warnings.simplefilter("default", ResourceWarning) + + def tearDown(self): + """Stop any created SparkContext""" + pyspark.SparkContext.getOrCreate().stop() + def test_set_spark_context_default(self): """ Check that a `SparkContext` object is created with default options for @@ -82,24 +92,33 @@ class OperationSupportTest(unittest.TestCase): @classmethod def setUpClass(cls): """ - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Set up test environment for this class. Currently this includes: - Needed to avoid mismatch between python versions on driver and on - the fake executor on the same machine. + - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Needed to avoid mismatch between python versions on driver and on the + fake executor on the same machine. + - Ignore `ResourceWarning: unclosed socket` warning triggered by Spark. + this is ignored by default in any application, but Python's unittest + library overrides the default warning filters thus exposing this + warning """ os.environ["PYSPARK_PYTHON"] = sys.executable - def tearDown(self): - """Stop any created SparkContext""" - pyspark.SparkContext.getOrCreate().stop() + if sys.version_info.major >= 3: + warnings.simplefilter("ignore", ResourceWarning) @classmethod def tearDownClass(cls): - """ - Stop the SparkContext and reset environment variable. - """ + """Reset test environment.""" os.environ["PYSPARK_PYTHON"] = "" + if sys.version_info.major >= 3: + warnings.simplefilter("default", ResourceWarning) + + def tearDown(self): + """Stop any created SparkContext""" + pyspark.SparkContext.getOrCreate().stop() + def test_action(self): """Check that action nodes are classified accurately.""" backend = Backend.SparkBackend() @@ -144,24 +163,33 @@ class InitializationTest(unittest.TestCase): @classmethod def setUpClass(cls): """ - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Set up test environment for this class. Currently this includes: - Needed to avoid mismatch between python versions on driver and on - the fake executor on the same machine. + - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Needed to avoid mismatch between python versions on driver and on the + fake executor on the same machine. + - Ignore `ResourceWarning: unclosed socket` warning triggered by Spark. + this is ignored by default in any application, but Python's unittest + library overrides the default warning filters thus exposing this + warning """ os.environ["PYSPARK_PYTHON"] = sys.executable - def tearDown(self): - """Stop any created SparkContext""" - pyspark.SparkContext.getOrCreate().stop() + if sys.version_info.major >= 3: + warnings.simplefilter("ignore", ResourceWarning) @classmethod def tearDownClass(cls): - """ - Stop the SparkContext and reset environment variable. - """ + """Reset test environment.""" os.environ["PYSPARK_PYTHON"] = "" + if sys.version_info.major >= 3: + warnings.simplefilter("default", ResourceWarning) + + def tearDown(self): + """Stop any created SparkContext""" + pyspark.SparkContext.getOrCreate().stop() + def test_initialization(self): """ Check that the user initialization method is assigned to the current @@ -219,24 +247,33 @@ class EmptyTreeErrorTest(unittest.TestCase): @classmethod def setUpClass(cls): """ - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Set up test environment for this class. Currently this includes: - Needed to avoid mismatch between python versions on driver and on - the fake executor on the same machine. + - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Needed to avoid mismatch between python versions on driver and on the + fake executor on the same machine. + - Ignore `ResourceWarning: unclosed socket` warning triggered by Spark. + this is ignored by default in any application, but Python's unittest + library overrides the default warning filters thus exposing this + warning """ os.environ["PYSPARK_PYTHON"] = sys.executable - def tearDown(self): - """Stop any created SparkContext""" - pyspark.SparkContext.getOrCreate().stop() + if sys.version_info.major >= 3: + warnings.simplefilter("ignore", ResourceWarning) @classmethod def tearDownClass(cls): - """ - Stop the SparkContext and reset environment variable. - """ + """Reset test environment.""" os.environ["PYSPARK_PYTHON"] = "" + if sys.version_info.major >= 3: + warnings.simplefilter("default", ResourceWarning) + + def tearDown(self): + """Stop any created SparkContext""" + pyspark.SparkContext.getOrCreate().stop() + def test_histo_from_empty_root_file(self): """ Check that when performing operations with the distributed backend on @@ -259,24 +296,33 @@ class ChangeAttributeTest(unittest.TestCase): @classmethod def setUpClass(cls): """ - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Set up test environment for this class. Currently this includes: - Needed to avoid mismatch between python versions on driver and on - the fake executor on the same machine. + - Synchronize PYSPARK_PYTHON variable to the current Python executable. + Needed to avoid mismatch between python versions on driver and on the + fake executor on the same machine. + - Ignore `ResourceWarning: unclosed socket` warning triggered by Spark. + this is ignored by default in any application, but Python's unittest + library overrides the default warning filters thus exposing this + warning """ os.environ["PYSPARK_PYTHON"] = sys.executable - def tearDown(self): - """Stop any created SparkContext""" - pyspark.SparkContext.getOrCreate().stop() + if sys.version_info.major >= 3: + warnings.simplefilter("ignore", ResourceWarning) @classmethod def tearDownClass(cls): - """ - Stop the SparkContext and reset environment variable. - """ + """Reset test environment.""" os.environ["PYSPARK_PYTHON"] = "" + if sys.version_info.major >= 3: + warnings.simplefilter("default", ResourceWarning) + + def tearDown(self): + """Stop any created SparkContext""" + pyspark.SparkContext.getOrCreate().stop() + def test_change_attribute_when_npartitions_greater_than_clusters(self): """ Check that the `npartitions class attribute is changed when it is From 8a63f78a3f910b3bb8b7758a5af06a80d09e567f Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 1 Sep 2021 17:57:58 +0200 Subject: [PATCH 019/577] [skip-ci] TGeoTrack deprecation (#8945) New text mentioning alternatives. --- geom/geompainter/src/TGeoTrack.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/geom/geompainter/src/TGeoTrack.cxx b/geom/geompainter/src/TGeoTrack.cxx index 248ef1fd00edd..5bc62e8debd08 100644 --- a/geom/geompainter/src/TGeoTrack.cxx +++ b/geom/geompainter/src/TGeoTrack.cxx @@ -22,9 +22,8 @@ \ingroup Geometry_classes \deprecated -TGeoTrack is one of the first attempts to make an event display in the pad early millennium, -meanwhile people managed to implement similar functionality in much better ways in events -displays applications. Although the class is still working, its usage was not encouraged. +Use of TGeoTrack is deprecated. For the event display please switch to TEve (using TEveTracks +or TEvePointSet to display tracks specifically) or to [REve](https://root.cern/doc/master/tracks_8C_source.html). Class for user-defined tracks attached to a geometry. Tracks are 3D objects made of points and they store a From 59d957e7b775f2c46dcc93a3b3ecb82c2bf830b3 Mon Sep 17 00:00:00 2001 From: Lorenzo Moneta Date: Wed, 1 Sep 2021 18:21:02 +0200 Subject: [PATCH 020/577] Fix some warnings when using an older version of protobuf (#8937) * fix protobuf warnings as suggested in https://github.com/protocolbuffers/protobuf/issues/7140#issuecomment-599467033 * Silent protobuf warning for used parameter Silet also previous warning for array bound when building test program * silent warning also when building test traget EmitFromROOT * add comment on turning-off the warnings from protibuf --- tmva/sofie/test/CMakeLists.txt | 10 ++++++---- tmva/sofie_parsers/CMakeLists.txt | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tmva/sofie/test/CMakeLists.txt b/tmva/sofie/test/CMakeLists.txt index 83a01c9878b1f..6e34efcd0cef2 100644 --- a/tmva/sofie/test/CMakeLists.txt +++ b/tmva/sofie/test/CMakeLists.txt @@ -37,8 +37,9 @@ target_include_directories(emitFromONNX PRIVATE ) target_link_libraries(emitFromONNX ${Protobuf_LIBRARIES} ROOTTMVASofie) -set_target_properties(emitFromONNX PROPERTIES - POSITION_INDEPENDENT_CODE TRUE) +set_target_properties(emitFromONNX PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +## silence protobuf warnings seen in version 3.0 and 3.6. Not needed from protobuf version 3.17 +target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter -Wno-array-bounds) # Automatic compilation of headers from onnx files add_custom_target(SofieCompileModels_ONNX) @@ -85,8 +86,9 @@ target_include_directories(emitFromROOT PRIVATE ${CMAKE_BINARY_DIR}/ginclude # this is for RConfigure.h ) target_link_libraries(emitFromROOT ${Protobuf_LIBRARIES} ROOTTMVASofie) -set_target_properties(emitFromROOT PROPERTIES - POSITION_INDEPENDENT_CODE TRUE) +set_target_properties(emitFromROOT PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +## silence protobuf warnings seen in version 3.0 and 3.6. Not needed from protobuf version 3.17 +target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter -Wno-array-bounds) # Automatic compilation of headers from root files add_custom_target(SofieCompileModels_ROOT) diff --git a/tmva/sofie_parsers/CMakeLists.txt b/tmva/sofie_parsers/CMakeLists.txt index 3f2eb3fd9110d..21f099d2e48b9 100644 --- a/tmva/sofie_parsers/CMakeLists.txt +++ b/tmva/sofie_parsers/CMakeLists.txt @@ -13,6 +13,10 @@ protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS "onnx_proto3") set_source_files_properties(${PROTO_SRCS} ${PROTO_HDRS} PROPERTIES GENERATED TRUE) +## silence protobuf warnings for version 3.6. Not needed from protobuf version 3.17 +set_source_files_properties(${PROTO_SRCS} PROPERTIES COMPILE_FLAGS -Wno-array-bounds) +## silence protobuf warnings for version 3.0. Not needed from protobuf version 3.6 +set_source_files_properties(${PROTO_SRCS} PROPERTIES COMPILE_FLAGS -Wno-unused-parameter) ROOT_STANDARD_LIBRARY_PACKAGE(ROOTTMVASofieParser HEADERS From c86f5b1a42304761716ccd5ec02360a8b0a551ff Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 1 Sep 2021 18:28:22 +0200 Subject: [PATCH 021/577] [skip-ci] fix typos (#8949) --- documentation/doxygen/filter.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/doxygen/filter.cxx b/documentation/doxygen/filter.cxx index d1881ac4b2d8f..c7611e79d682c 100644 --- a/documentation/doxygen/filter.cxx +++ b/documentation/doxygen/filter.cxx @@ -18,8 +18,8 @@ /// "png" is the default value. For example: `Begin_Macro(source, svg)` will show /// the code of the macro and the image will be is svg format. The "width" keyword /// can be added to define the width of the picture in pixel: "width=400" will -/// scale a picture to 400 pixel width. This allow to define large picture which -/// can then be scale done to have a better definition. +/// scale a picture to 400 pixel width. This allow to define large pictures which +/// can then be scaled down to have a better definition. /// /// ## In the ROOT tutorials /// From 8ebf217d5eed0e7a0f48da440b7e31c0ca6aab8b Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Tue, 31 Aug 2021 16:51:39 +0200 Subject: [PATCH 022/577] [RF] Change FCNGradAdapter interface to pass previous derivatives This is a follow up on commits 1e452a8 and 1e452a8, almost reverting the second commit completely. It addresses the following comments by @guitargeek made in PR #8694: 1. I think it's better if the new overloads of `DoDerivative` and `Gradient` that take also the previous gradients have a different names like `DoDerivativeWithPrevResult` and `GradientWithPrevResult` to avoid the member shadowing problem when only the original `DoDerivative` and `Gradient` functions are overridden. Then you don't have to add all these trivial implementations of the new functions in 1e452a8, and we also don't create warnings for users that are implementing these IFunctions. 2. We should avoid changing existing public interfaces if not necessary. In 1e452a8, you changed the interface of `NumericalDerivator::SetInitialGradient`, but it's not absolutely necessary. In the `RooGradMinimizerFcn`, you can just pass a `nullptr` as the first parameter to avoid the problem that you described in the message of commit 1e452a8. --- math/mathcore/inc/Fit/Chi2FCN.h | 17 ---------- math/mathcore/inc/Fit/LogLikelihoodFCN.h | 16 ---------- math/mathcore/inc/Fit/PoissonLikelihoodFCN.h | 17 ---------- math/mathcore/inc/Math/Functor.h | 31 ------------------- math/mathcore/inc/Math/IFunction.h | 8 ++--- .../inc/Math/MinimTransformFunction.h | 8 ----- math/mathcore/test/fit/testMinim.cxx | 18 ----------- math/mathmore/inc/Math/GSLNLSMinimizer.h | 17 ---------- math/mathmore/inc/Math/MultiNumGradFunction.h | 9 ------ math/minuit2/inc/Minuit2/FCNGradAdapter.h | 6 ++-- math/minuit2/inc/Minuit2/FCNGradientBase.h | 7 +++-- math/minuit2/inc/Minuit2/NumericalDerivator.h | 3 +- .../ExternalInternalGradientCalculator.cxx | 2 +- math/minuit2/src/NumericalDerivator.cxx | 3 +- math/minuit2/test/MnTutorial/Quad1F.h | 2 -- math/minuit2/test/MnTutorial/Quad4F.h | 2 -- math/minuit2/test/testMinimizer.cxx | 18 ----------- roofit/roofitcore/inc/RooGradMinimizerFcn.h | 4 +-- roofit/roofitcore/src/RooGradMinimizerFcn.cxx | 7 +++-- .../test/testRooGradMinimizerFcn.cxx | 18 +++++------ 20 files changed, 32 insertions(+), 181 deletions(-) diff --git a/math/mathcore/inc/Fit/Chi2FCN.h b/math/mathcore/inc/Fit/Chi2FCN.h index f45cb872052ea..bc72f64d680c5 100644 --- a/math/mathcore/inc/Fit/Chi2FCN.h +++ b/math/mathcore/inc/Fit/Chi2FCN.h @@ -126,14 +126,6 @@ class Chi2FCN : public BasicFCN { FitUtil::Evaluate::EvalChi2Gradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } - /// In some cases, the gradient algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLeastSquare; } @@ -162,15 +154,6 @@ class Chi2FCN : public BasicFCN { Gradient(x, fGrad.data()); return fGrad[icoord]; } - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } mutable unsigned int fNEffPoints; // number of effective points used in the fit diff --git a/math/mathcore/inc/Fit/LogLikelihoodFCN.h b/math/mathcore/inc/Fit/LogLikelihoodFCN.h index bada8b1d49225..02b9ec1715a2b 100644 --- a/math/mathcore/inc/Fit/LogLikelihoodFCN.h +++ b/math/mathcore/inc/Fit/LogLikelihoodFCN.h @@ -129,14 +129,6 @@ class LogLikelihoodFCN : public BasicFCN { FitUtil::Evaluate::EvalLogLGradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } - /// In some cases, the gradient algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This overload just calls the two-parameter version. - virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLogLikelihood; } @@ -170,14 +162,6 @@ class LogLikelihoodFCN : public BasicFCN { Gradient(x, &fGrad[0]); return fGrad[icoord]; } - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } //data member diff --git a/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h b/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h index 7cc2ca3aeb71c..85d1025b0f6a9 100644 --- a/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h +++ b/math/mathcore/inc/Fit/PoissonLikelihoodFCN.h @@ -130,14 +130,6 @@ class PoissonLikelihoodFCN : public BasicFCN FitUtil::Evaluate::EvalPoissonLogLGradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g, fNEffPoints, fExecutionPolicy); } - /// In some cases, the gradient algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } /// get type of fit method function virtual typename BaseObjFunction::Type_t Type() const { return BaseObjFunction::kLogLikelihood; } @@ -178,15 +170,6 @@ class PoissonLikelihoodFCN : public BasicFCN Gradient(x, &fGrad[0]); return fGrad[icoord]; } - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } //data member diff --git a/math/mathcore/inc/Math/Functor.h b/math/mathcore/inc/Math/Functor.h index 0ac2fbc9605a6..43214aa8d2190 100644 --- a/math/mathcore/inc/Math/Functor.h +++ b/math/mathcore/inc/Math/Functor.h @@ -128,14 +128,6 @@ private : return fFunc.Derivative(x,icoord); } - // TODO: implementing this will require extending with another function signature in GradFunctor - /// \warning This overload just calls the two-parameter version. - inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } - unsigned int fDim; mutable Func fFunc; // should here be a reference and pass a non-const ref in ctor @@ -219,13 +211,6 @@ private : return fGradFunc(x, icoord); } - // TODO: implementing this will require extending with another function signature in GradFunctor - /// \warning This overload just calls the two-parameter version. - inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } unsigned int fDim; mutable Func fFunc; @@ -363,14 +348,6 @@ private : return ((*fObj).*fGradMemFn)(x,icoord); } - // TODO: implementing this will require extending with another function signature in GradFunctor - /// \warning This overload just calls the two-parameter version. - inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } - unsigned int fDim; mutable PointerToObj fObj; PointerToMemFn fMemFn; @@ -725,14 +702,6 @@ private : return fImpl->Derivative(x,icoord); } - // TODO: implementing this will require extending with another function signature in GradFunctor - /// \warning This overload just calls the two-parameter version. - inline double DoDerivative(const double *x, unsigned int icoord, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } - std::unique_ptr fImpl; // pointer to base grad functor handler diff --git a/math/mathcore/inc/Math/IFunction.h b/math/mathcore/inc/Math/IFunction.h index 474a5aed6137d..5cb2a115c3ed7 100644 --- a/math/mathcore/inc/Math/IFunction.h +++ b/math/mathcore/inc/Math/IFunction.h @@ -221,7 +221,7 @@ namespace ROOT { T Derivative(const T *x, unsigned int icoord, T *previous_grad, T *previous_g2, T *previous_gstep) const { - return DoDerivative(x, icoord, previous_grad, previous_g2, previous_gstep); + return DoDerivativeWithPrevResult(x, icoord, previous_grad, previous_g2, previous_gstep); } /** @@ -243,8 +243,8 @@ namespace ROOT { /// In some cases, the derivative algorithm will use information from the previous step, these can be passed /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size /// so that these can be passed forward again as well at the call site, if necessary. - virtual T DoDerivative(const T *x, unsigned int icoord, T * /*previous_grad*/, T * /*previous_g2*/, - T * /*previous_gstep*/) const + virtual T DoDerivativeWithPrevResult(const T *x, unsigned int icoord, T * /*previous_grad*/, + T * /*previous_g2*/, T * /*previous_gstep*/) const { return DoDerivative(x, icoord); }; @@ -365,7 +365,7 @@ namespace ROOT { /// In some cases, the gradient algorithm will use information from the previous step, these can be passed /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size /// so that these can be passed forward again as well at the call site, if necessary. - virtual void Gradient(const T *x, T *grad, T *previous_grad, T *previous_g2, T *previous_gstep) const + virtual void GradientWithPrevResult(const T *x, T *grad, T *previous_grad, T *previous_g2, T *previous_gstep) const { unsigned int ndim = NDim(); for (unsigned int icoord = 0; icoord < ndim; ++icoord) diff --git a/math/mathcore/inc/Math/MinimTransformFunction.h b/math/mathcore/inc/Math/MinimTransformFunction.h index c8eac81b3e4d7..94d1877778326 100644 --- a/math/mathcore/inc/Math/MinimTransformFunction.h +++ b/math/mathcore/inc/Math/MinimTransformFunction.h @@ -123,14 +123,6 @@ class MinimTransformFunction : public IMultiGradFunction { //std::cout << "Derivative icoord (ext)" << fIndex[icoord] << " dtrafo " << dExtdInt << " " << deriv << std::endl; return deriv * dExtdInt; } - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } // copy constructor for this class (disable by having it private) MinimTransformFunction( const MinimTransformFunction & ) : diff --git a/math/mathcore/test/fit/testMinim.cxx b/math/mathcore/test/fit/testMinim.cxx index f0275e28eb486..27afa917ab1a1 100644 --- a/math/mathcore/test/fit/testMinim.cxx +++ b/math/mathcore/test/fit/testMinim.cxx @@ -188,10 +188,6 @@ public : } } - void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } #ifdef USE_FDF void FdF (const double * x, double & f, double * g) const { @@ -244,11 +240,6 @@ public : Gradient(x,&g[0]); return g[i]; } - double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } private: @@ -331,10 +322,6 @@ public : } - void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } private: @@ -355,11 +342,6 @@ public : Gradient(x,&g[0]); return g[i]; } - double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } void DoCalculatefi(const double * x) const { // calculate the i- element ; F(X) = Sum {fi] diff --git a/math/mathmore/inc/Math/GSLNLSMinimizer.h b/math/mathmore/inc/Math/GSLNLSMinimizer.h index 8bc2a9d0f311a..46cd3364c5bb2 100644 --- a/math/mathmore/inc/Math/GSLNLSMinimizer.h +++ b/math/mathmore/inc/Math/GSLNLSMinimizer.h @@ -102,14 +102,6 @@ class LSResidualFunc : public IMultiGradFunction { double f0 = 0; FdF(x,f0,g); } - /// In some cases, the gradient algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } void FdF (const double * x, double & f, double * g) const { unsigned int n = NDim(); @@ -137,15 +129,6 @@ class LSResidualFunc : public IMultiGradFunction { fX2[icoord] += kEps; return ( DoEval(&fX2.front()) - DoEval(x) )/kEps; } - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } unsigned int fIndex; const ROOT::Math::FitMethodFunction * fChi2; diff --git a/math/mathmore/inc/Math/MultiNumGradFunction.h b/math/mathmore/inc/Math/MultiNumGradFunction.h index 1676661fdbde8..2bec540179222 100644 --- a/math/mathmore/inc/Math/MultiNumGradFunction.h +++ b/math/mathmore/inc/Math/MultiNumGradFunction.h @@ -122,15 +122,6 @@ class MultiNumGradFunction : public IMultiGradFunction { // calculate derivative using mathcore derivator double DoDerivative (const double * x, unsigned int icoord ) const; - /// In some cases, the derivative algorithm will use information from the previous step, these can be passed - /// in with this overload. The `previous_*` arrays can also be used to return second derivative and step size - /// so that these can be passed forward again as well at the call site, if necessary. - /// \warning This implementation just calls the two-parameter overload. - virtual double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } // adapat internal function type to IMultiGenFunction needed by derivative calculation const IMultiGenFunction * fFunc; diff --git a/math/minuit2/inc/Minuit2/FCNGradAdapter.h b/math/minuit2/inc/Minuit2/FCNGradAdapter.h index 5e186918da0c9..7de80a2e95ef6 100644 --- a/math/minuit2/inc/Minuit2/FCNGradAdapter.h +++ b/math/minuit2/inc/Minuit2/FCNGradAdapter.h @@ -54,10 +54,10 @@ class FCNGradAdapter : public FCNGradientBase { }); return fGrad; } - std::vector Gradient(const std::vector &v, double *previous_grad, double *previous_g2, - double *previous_gstep) const override + std::vector GradientWithPrevResult(const std::vector &v, double *previous_grad, double *previous_g2, + double *previous_gstep) const override { - fFunc.Gradient(&v[0], &fGrad[0], previous_grad, previous_g2, previous_gstep); + fFunc.GradientWithPrevResult(&v[0], &fGrad[0], previous_grad, previous_g2, previous_gstep); MnPrint("FCNGradAdapter").Debug([&](std::ostream &os) { os << "gradient in FCNAdapter = {"; diff --git a/math/minuit2/inc/Minuit2/FCNGradientBase.h b/math/minuit2/inc/Minuit2/FCNGradientBase.h index cc7259fd57dbc..14bf7b8c189b4 100644 --- a/math/minuit2/inc/Minuit2/FCNGradientBase.h +++ b/math/minuit2/inc/Minuit2/FCNGradientBase.h @@ -41,8 +41,11 @@ class FCNGradientBase : public FCNBase { virtual ~FCNGradientBase() {} virtual std::vector Gradient(const std::vector &) const = 0; - virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const { return Gradient(parameters); }; + virtual std::vector GradientWithPrevResult(const std::vector ¶meters, double * /*previous_grad*/, + double * /*previous_g2*/, double * /*previous_gstep*/) const + { + return Gradient(parameters); + }; virtual bool CheckGradient() const { return true; } diff --git a/math/minuit2/inc/Minuit2/NumericalDerivator.h b/math/minuit2/inc/Minuit2/NumericalDerivator.h index e2c90731b68c2..ee6203274f066 100644 --- a/math/minuit2/inc/Minuit2/NumericalDerivator.h +++ b/math/minuit2/inc/Minuit2/NumericalDerivator.h @@ -70,7 +70,8 @@ class NumericalDerivator { double Ext2int(const ROOT::Fit::ParameterSettings ¶meter, double val) const; double DInt2Ext(const ROOT::Fit::ParameterSettings ¶meter, double val) const; - void SetInitialGradient(const std::vector ¶meters, + void SetInitialGradient(const ROOT::Math::IBaseFunctionMultiDim *function, + const std::vector ¶meters, std::vector &gradient); inline bool AlwaysExactlyMimicMinuit2() const { return fAlwaysExactlyMimicMinuit2; } diff --git a/math/minuit2/src/ExternalInternalGradientCalculator.cxx b/math/minuit2/src/ExternalInternalGradientCalculator.cxx index 0f93f2bc6e5e8..e451598d01cff 100644 --- a/math/minuit2/src/ExternalInternalGradientCalculator.cxx +++ b/math/minuit2/src/ExternalInternalGradientCalculator.cxx @@ -54,7 +54,7 @@ ExternalInternalGradientCalculator::operator()(const MinimumParameters &par, con std::vector previous_g2(functionGradient.G2().Data(), functionGradient.G2().Data() + functionGradient.G2().size()); std::vector previous_gstep(functionGradient.Gstep().Data(), functionGradient.Gstep().Data() + functionGradient.Gstep().size()); - std::vector grad = fGradCalc.Gradient(par_vec, previous_grad.data(), previous_g2.data(), previous_gstep.data()); + std::vector grad = fGradCalc.GradientWithPrevResult(par_vec, previous_grad.data(), previous_g2.data(), previous_gstep.data()); assert(grad.size() == fTransformation.Parameters().size()); MnAlgebraicVector v(par.Vec().size()); diff --git a/math/minuit2/src/NumericalDerivator.cxx b/math/minuit2/src/NumericalDerivator.cxx index 758cd6c8d8c28..618334d0e55a4 100644 --- a/math/minuit2/src/NumericalDerivator.cxx +++ b/math/minuit2/src/NumericalDerivator.cxx @@ -221,7 +221,8 @@ double NumericalDerivator::DInt2Ext(const ROOT::Fit::ParameterSettings ¶mete // MODIFIED: /// This function was not implemented as in Minuit2. Now it copies the behavior /// of InitialGradientCalculator. See https://github.com/roofit-dev/root/issues/10 -void NumericalDerivator::SetInitialGradient(const std::vector ¶meters, +void NumericalDerivator::SetInitialGradient(const ROOT::Math::IBaseFunctionMultiDim *, + const std::vector ¶meters, std::vector &gradient) { // set an initial gradient using some given steps diff --git a/math/minuit2/test/MnTutorial/Quad1F.h b/math/minuit2/test/MnTutorial/Quad1F.h index 276282e7ec004..ba6fabf1a93a0 100644 --- a/math/minuit2/test/MnTutorial/Quad1F.h +++ b/math/minuit2/test/MnTutorial/Quad1F.h @@ -37,8 +37,6 @@ class Quad1F : public FCNGradientBase { return (std::vector(1, 2. * x)); } - virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const { return Gradient(parameters); }; void SetErrorDef(double up) { fErrorDef = up; } diff --git a/math/minuit2/test/MnTutorial/Quad4F.h b/math/minuit2/test/MnTutorial/Quad4F.h index ed90fc4925079..1089184ca7a69 100644 --- a/math/minuit2/test/MnTutorial/Quad4F.h +++ b/math/minuit2/test/MnTutorial/Quad4F.h @@ -72,8 +72,6 @@ class Quad4FGrad : public FCNGradientBase { g[3] = 2. * w; return g; } - virtual std::vector Gradient(const std::vector ¶meters, double */*previous_grad*/, double */*previous_g2*/, - double */*previous_gstep*/) const { return Gradient(parameters); }; double Up() const { return 1.; } diff --git a/math/minuit2/test/testMinimizer.cxx b/math/minuit2/test/testMinimizer.cxx index dea116e13fd85..92f7817204b1a 100644 --- a/math/minuit2/test/testMinimizer.cxx +++ b/math/minuit2/test/testMinimizer.cxx @@ -169,10 +169,6 @@ class TrigoFletcherFunction : public ROOT::Math::IMultiGradFunction { } } } - void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } #ifdef USE_FDF void FdF(const double *x, double &f, double *g) const @@ -224,11 +220,6 @@ class TrigoFletcherFunction : public ROOT::Math::IMultiGradFunction { Gradient(x, &g[0]); return g[i]; } - double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } private: unsigned int fDim; @@ -295,10 +286,6 @@ class ChebyQuadFunction : public ROOT::Math::IMultiGradFunction { g[j] = 2. * g[j] / double(n); } } - void Gradient(const double *x, double *g, double */*previous_grad*/, double */*previous_g2*/, double */*previous_gstep*/) const - { - Gradient(x, g); - } private: double DoEval(const double *x) const @@ -319,11 +306,6 @@ class ChebyQuadFunction : public ROOT::Math::IMultiGradFunction { Gradient(x, &g[0]); return g[i]; } - double DoDerivative(const double *x, unsigned int icoord, double * /*previous_grad*/, double * /*previous_g2*/, - double * /*previous_gstep*/) const - { - return DoDerivative(x, icoord); - } void DoCalculatefi(const double *x) const { diff --git a/roofit/roofitcore/inc/RooGradMinimizerFcn.h b/roofit/roofitcore/inc/RooGradMinimizerFcn.h index f17563b60e0f6..4f9e2edbb3af6 100644 --- a/roofit/roofitcore/inc/RooGradMinimizerFcn.h +++ b/roofit/roofitcore/inc/RooGradMinimizerFcn.h @@ -70,8 +70,8 @@ class RooGradMinimizerFcn : public ROOT::Math::IMultiGradFunction, public RooAbs // IMultiGradFunction overrides double DoEval(const double *x) const override; double DoDerivative(const double *x, unsigned int icoord) const override; - double DoDerivative(const double *x, unsigned int i_component, double *previous_grad, - double *previous_g2, double *previous_gstep) const override; + double DoDerivativeWithPrevResult(const double *x, unsigned int i_component, double *previous_grad, + double *previous_g2, double *previous_gstep) const override; // members // mutable because ROOT::Math::IMultiGradFunction::DoDerivative is const diff --git a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx index 6e389a1d555ac..382b41ce1bb3c 100644 --- a/roofit/roofitcore/src/RooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/src/RooGradMinimizerFcn.cxx @@ -64,7 +64,7 @@ ROOT::Math::IMultiGradFunction *RooGradMinimizerFcn::Clone() const void RooGradMinimizerFcn::synchronizeGradientParameterSettings( std::vector ¶meter_settings) const { - _gradf.SetInitialGradient(parameter_settings, _grad); + _gradf.SetInitialGradient(nullptr, parameter_settings, _grad); } //////////////////////////////////////////////////////////////////////////////// @@ -215,8 +215,9 @@ double RooGradMinimizerFcn::DoDerivative(const double *x, unsigned int i_compone return _grad[i_component].derivative; } -double RooGradMinimizerFcn::DoDerivative(const double *x, unsigned int i_component, double *previous_grad, - double *previous_g2, double *previous_gstep) const +double RooGradMinimizerFcn::DoDerivativeWithPrevResult(const double *x, unsigned int i_component, + double *previous_grad, double *previous_g2, + double *previous_gstep) const { syncParameters(x); _grad[i_component] = {previous_grad[i_component], previous_g2[i_component], previous_gstep[i_component]}; diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx index d1ee53aec994e..e3cccab39a939 100644 --- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx @@ -72,7 +72,7 @@ TEST_P(GradMinimizerParSeed, Gaussian1D) *values = *savedValues; - std::unique_ptr m1 = RooMinimizer::create(*nll, RooMinimizer::FcnMode::gradient); + std::unique_ptr m1 = RooMinimizer::create(*nll); m1->setMinimizerType("Minuit2"); m1->setStrategy(0); @@ -186,8 +186,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m0result = m0.lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - std::vector mean0(N); - std::vector std0(N); + double mean0[N]; + double std0[N]; for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -218,8 +218,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m1result = m1->lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - std::vector mean1(N); - std::vector std1(N); + double mean1[N]; + double std1[N]; for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -283,8 +283,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m0result = m0->lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - std::vector mean0(N); - std::vector std0(N); + double mean0[N]; + double std0[N]; for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -315,8 +315,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m1result = m1.lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - std::vector mean1(N); - std::vector std1(N); + double mean1[N]; + double std1[N]; for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; From 6b33e04cacbfc9badb465ff173338c8f8513a347 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Tue, 31 Aug 2021 17:45:50 +0200 Subject: [PATCH 023/577] [RF] Speedup GradMinimizer.BranchingPDF test in testRooGradMinimizerFcn The speedup is achieved by reducing the number of observables in the model, meaning less numeric integration is necessary. This was done because originally, the GradMinimizer.BranchingPDF test took between 3 and 5 minutes to run, depending on the setup. --- .../test/testRooGradMinimizerFcn.cxx | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx index e3cccab39a939..e393070f34653 100644 --- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx @@ -72,7 +72,7 @@ TEST_P(GradMinimizerParSeed, Gaussian1D) *values = *savedValues; - std::unique_ptr m1 = RooMinimizer::create(*nll); + std::unique_ptr m1 = RooMinimizer::create(*nll, RooMinimizer::FcnMode::gradient); m1->setMinimizerType("Minuit2"); m1->setStrategy(0); @@ -186,8 +186,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m0result = m0.lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - double mean0[N]; - double std0[N]; + std::vector mean0(N); + std::vector std0(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -218,8 +218,8 @@ TEST(GradMinimizer, GaussianND) RooFitResult *m1result = m1->lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - double mean1[N]; - double std1[N]; + std::vector mean1(N); + std::vector std1(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -283,8 +283,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m0result = m0->lastMinuitFit(); double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); - double mean0[N]; - double std0[N]; + std::vector mean0(N); + std::vector std0(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -315,8 +315,8 @@ TEST(GradMinimizerReverse, GaussianND) RooFitResult *m1result = m1.lastMinuitFit(); double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); - double mean1[N]; - double std1[N]; + std::vector mean1(N); + std::vector std1(N); for (unsigned ix = 0; ix < N; ++ix) { { std::ostringstream os; @@ -350,7 +350,7 @@ TEST(GradMinimizer, BranchingPDF) // produce the same random stuff every time RooRandom::randomGenerator()->SetSeed(1); - RooWorkspace w("w", kFALSE); + RooWorkspace w("w", false); // 3rd level w.factory("Gamma::ga0_0_1(k0_0_1[3,2,10],u[1,20],1,0)"); // leaf pdf @@ -369,9 +369,7 @@ TEST(GradMinimizer, BranchingPDF) // 1st level w.factory("Gaussian::g0(x[-10,10],g0_0,s0[3,0.1,10])"); // branch pdf w.factory("Gaussian::g1(y[-10,10],m1[-2,-10,10],ga1_0)"); // branch pdf - RooArgSet level1_pdfs; - level1_pdfs.add(*w.arg("g0")); - level1_pdfs.add(*w.arg("g1")); + RooArgSet level1_pdfs{*w.arg("g0"), *w.arg("g1")}; // event counts for 1st level pdfs RooRealVar N_g0("N_g0", "#events g0", N_events / 10, 0., 10 * N_events); @@ -379,43 +377,41 @@ TEST(GradMinimizer, BranchingPDF) w.import(N_g0); w.import(N_g1); // gather in count_set - RooArgSet level1_counts; - level1_counts.add(N_g0); - level1_counts.add(N_g1); + RooArgSet level1_counts{N_g0, N_g1}; // finally, sum the top level pdfs RooAddPdf sum("sum", "gaussian tree", level1_pdfs, level1_counts); // gather observables RooArgSet obs_set; - for (auto obs : {"x", "y", "z", "u", "v"}) { + for (auto obs : {"x", "y", "v"}) { obs_set.add(*w.arg(obs)); } // --- Generate a toyMC sample from composite PDF --- - RooDataSet *data = sum.generate(obs_set, N_events); + std::unique_ptr data{sum.generate(obs_set, N_events)}; auto nll = sum.createNLL(*data); // gather all values of parameters, observables, pdfs and nll here for easy // saving and restoring - RooArgSet some_values = RooArgSet(obs_set, w.allPdfs(), "some_values"); - RooArgSet most_values = RooArgSet(some_values, level1_counts, "most_values"); + RooArgSet some_values{obs_set, w.allPdfs(), "some_values"}; + RooArgSet most_values{some_values, level1_counts, "most_values"}; most_values.add(*nll); most_values.add(sum); - RooArgSet *param_set = nll->getParameters(obs_set); + std::unique_ptr param_set{nll->getParameters(obs_set)}; - RooArgSet all_values = RooArgSet(most_values, *param_set, "all_values"); + RooArgSet all_values{most_values, *param_set, "all_values"}; // set parameter values randomly so that they actually need to do some fitting auto it = all_values.fwdIterator(); - while (RooRealVar *val = dynamic_cast(it.next())) { + while (auto *val = dynamic_cast(it.next())) { val->setVal(RooRandom::randomGenerator()->Uniform(val->getMin(), val->getMax())); } // save initial values for the start of all minimizations - RooArgSet *savedValues = dynamic_cast(all_values.snapshot()); + std::unique_ptr savedValues{static_cast(all_values.snapshot())}; if (savedValues == nullptr) { throw std::runtime_error("params->snapshot() cannot be casted to RooArgSet!"); } From eab34e6a6dc31ded0395dae88259a60767e9f823 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 30 Aug 2021 17:43:27 +0200 Subject: [PATCH 024/577] [core] WriteObject overload for TObject-derived classes The [TDirectory::WriteObject](https://github.com/root-project/root/blob/35b5aaef38b6635e131e7d93a0c96f69bb293b9d/core/base/inc/TDirectory.h#L265-L268) method allows writing objects to files. If the written object actually has a title, this would be discarded because the function doesn't manage it as a TObject-derived instance on purpose. For example, the program below: ```cpp int main(){ TFile f{"myfile.root","recreate"}; TH1F h{"myhistoname","myhistotitle",100,0,100}; f.WriteObject(&h, h.GetName()); f.Close(); } ``` When executed creates a file where the object "h" gets the default title "object title": ```bash $ rootls -l myfile.root TH1F Aug 21 10:41 2021 myhistoname;1 "object title" ``` This is because The [TKey constructor that accepts a void pointer](https://github.com/root-project/root/blob/35b5aaef38b6635e131e7d93a0c96f69bb293b9d/io/io/src/TKey.cxx#L299-L300) calls the parent TNamed constructor with a default title, because in general there is no guarantee the object has the interface `GetTitle(),SetTitle()` and there is no extra "title" parameter to the constructor. This commit provides a solution by creating a new overload for `TDirectory::WriteObject`, using SFINAE to make it available for types that are derived from TObject. The method redirects to `WriteTObject` instead of `WriteObjectAny`. This way, the correct TKey constructor is called that uses the actual object title. As a result, the example above will now output a file like this: ``` $ rootls -l myfile.root TH1F Aug 21 11:00 2021 myhistoname;1 "myhistotitle" ``` The already present method is modified with SFINAE as well, to only be available if the type T of the template is not derived from TObject. --- core/base/inc/TDirectory.h | 35 ++++++++++++++++---- io/io/test/TFileTests.cxx | 67 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 93 insertions(+), 9 deletions(-) diff --git a/core/base/inc/TDirectory.h b/core/base/inc/TDirectory.h index f8d7f6b446c19..fd4326ed51ee8 100644 --- a/core/base/inc/TDirectory.h +++ b/core/base/inc/TDirectory.h @@ -255,17 +255,38 @@ can be replaced with the simpler and exception safe: virtual Int_t Write(const char * /*name*/=nullptr, Int_t /*opt*/=0, Int_t /*bufsize*/=0) const override {return 0;} virtual Int_t WriteTObject(const TObject *obj, const char *name =nullptr, Option_t * /*option*/="", Int_t /*bufsize*/ =0); private: +/// \cond HIDDEN_SYMBOLS Int_t WriteObject(void *obj, const char* name, Option_t *option="", Int_t bufsize=0); // Intentionally not implemented. +/// \endcond public: - /// Write an object with proper type checking. + /// \brief Write an object with proper type checking. /// \param[in] obj Pointer to an object to be written. /// \param[in] name Name of the object in the file. - /// \param[in] option Options. See TDirectory::WriteTObject() or TDirectoryWriteObjectAny(). - /// \param[in] bufsize Buffer size. See TDirectory::WriteTObject(). - template inline Int_t WriteObject(const T* obj, const char* name, Option_t *option="", Int_t bufsize=0) - { - return WriteObjectAny(obj, TClass::GetClass(), name, option, bufsize); - } + /// \param[in] option Options. See TDirectory::WriteTObject. + /// \param[in] bufsize Buffer size. See TDirectory::WriteTObject. + /// + /// This overload takes care of instances of classes that are not derived + /// from TObject. The method redirects to TDirectory::WriteObjectAny. + template + inline std::enable_if_t::value, Int_t> + WriteObject(const T *obj, const char *name, Option_t *option = "", Int_t bufsize = 0) + { + return WriteObjectAny(obj, TClass::GetClass(), name, option, bufsize); + } + /// \brief Write an object with proper type checking. + /// \param[in] obj Pointer to an object to be written. + /// \param[in] name Name of the object in the file. + /// \param[in] option Options. See TDirectory::WriteTObject. + /// \param[in] bufsize Buffer size. See TDirectory::WriteTObject. + /// + /// This overload takes care of instances of classes that are derived from + /// TObject. The method redirects to TDirectory::WriteTObject. + template + inline std::enable_if_t::value, Int_t> + WriteObject(const T *obj, const char *name, Option_t *option = "", Int_t bufsize = 0) + { + return WriteTObject(obj, name, option, bufsize); + } virtual Int_t WriteObjectAny(const void *, const char * /*classname*/, const char * /*name*/, Option_t * /*option*/="", Int_t /*bufsize*/ =0) {return 0;} virtual Int_t WriteObjectAny(const void *, const TClass * /*cl*/, const char * /*name*/, Option_t * /*option*/="", Int_t /*bufsize*/ =0) {return 0;} virtual void WriteDirHeader() {} diff --git a/io/io/test/TFileTests.cxx b/io/io/test/TFileTests.cxx index d247b27eeec8d..b4566b2f53828 100644 --- a/io/io/test/TFileTests.cxx +++ b/io/io/test/TFileTests.cxx @@ -1,7 +1,70 @@ -#include "TFile.h" +#include #include "gtest/gtest.h" +#include "TFile.h" +#include "TKey.h" +#include "TNamed.h" +#include "TSystem.h" + +TEST(TFile, WriteObjectTObject) +{ + auto filename{"tfile_writeobject_tobject.root"}; + auto tnamed_name{"mytnamed_name"}; + auto tnamed_title{"mytnamed_title"}; + + { + TNamed mytnamed{tnamed_name, tnamed_title}; + TFile f{filename, "recreate"}; + f.WriteObject(&mytnamed, mytnamed.GetName()); + f.Close(); + } + + TFile input{filename}; + auto named = input.Get(tnamed_name); + auto keyptr = static_cast(input.GetListOfKeys()->At(0)); + + EXPECT_STREQ(named->GetName(), tnamed_name); + EXPECT_STREQ(named->GetTitle(), tnamed_title); + EXPECT_STREQ(keyptr->GetName(), tnamed_name); + EXPECT_STREQ(keyptr->GetTitle(), tnamed_title); + + input.Close(); + gSystem->Unlink(filename); +} + +TEST(TFile, WriteObjectVector) +{ + auto filename{"tfile_writeobject_vector.root"}; + auto vec_name{"object name"}; // Decided arbitrarily + auto vec_title{"object title"}; // Default title for non-TObject-derived instances + + { + std::vector myvec{1,2,3,4,5}; + TFile f{filename, "recreate"}; + f.WriteObject(&myvec, vec_name); + f.Close(); + } + + TFile input{filename}; + auto retvecptr = input.Get>(vec_name); + const auto &retvec = *retvecptr; + auto retkey = static_cast(input.GetListOfKeys()->At(0)); + + std::vector expected{1,2,3,4,5}; + + ASSERT_EQ(retvec.size(), expected.size()); + for (std::size_t i = 0; i < retvec.size(); ++i) { + EXPECT_EQ(retvec[i], expected[i]); + } + + EXPECT_STREQ(retkey->GetName(), vec_name); + EXPECT_STREQ(retkey->GetTitle(), vec_title); + + input.Close(); + gSystem->Unlink(filename); +} + // Tests ROOT-9857 TEST(TFile, ReadFromSameFile) { @@ -21,4 +84,4 @@ TEST(TFile, ReadFromSameFile) auto o2 = f2.Get(objpath); EXPECT_TRUE(o1 != o2) << "Same objects read from two different files have the same pointer!"; -} \ No newline at end of file +} From 4121b5f8907158fb188fd2f27572d355f1f67674 Mon Sep 17 00:00:00 2001 From: Lorenzo Moneta Date: Thu, 2 Sep 2021 09:55:47 +0200 Subject: [PATCH 025/577] Add several improvements to use Unuran with the DistSampler interface (#8630) * Improvements in DistSampler class and TUnuranSampler: - Add possibility to SetMode - Add possibility to Set DPDF and CDF Add additional improvements to use UNU.RAN using the DistSampler interface. This is to fix issue #7332 The improvements are: - Improvements in using directly the string API from DistSampler - Better support for setting method and method options using DistSamplerOptions - Complete the support for setting dpdf, cdf and multi-sim mode in DistSampler - Add test program for all lthis new DistSampler functionality remove RMakeUnique since now minimumal C++ support is c++14 * Apply changes as suggested by review --- math/mathcore/inc/Math/DistSampler.h | 114 ++++++---- math/mathcore/inc/Math/DistSamplerOptions.h | 15 +- math/mathcore/inc/Math/GenAlgoOptions.h | 28 ++- math/mathcore/src/DistSampler.cxx | 47 ++-- math/mathcore/src/DistSamplerOptions.cxx | 5 + math/unuran/inc/TUnuran.h | 66 +++++- math/unuran/inc/TUnuranSampler.h | 55 +++-- math/unuran/src/TUnuran.cxx | 45 +++- math/unuran/src/TUnuranContDist.cxx | 3 +- math/unuran/src/TUnuranSampler.cxx | 123 +++++++++-- math/unuran/test/CMakeLists.txt | 3 + math/unuran/test/unuranSampler.cxx | 232 ++++++++++++++++++++ 12 files changed, 633 insertions(+), 103 deletions(-) create mode 100644 math/unuran/test/unuranSampler.cxx diff --git a/math/mathcore/inc/Math/DistSampler.h b/math/mathcore/inc/Math/DistSampler.h index f51a823b88b9a..f34a72caa1d03 100644 --- a/math/mathcore/inc/Math/DistSampler.h +++ b/math/mathcore/inc/Math/DistSampler.h @@ -92,26 +92,26 @@ class DistSampler { /** - initialize the generators with the given algorithm - Implemented by derived classes who needs it - (like UnuranSampler) + Initialize the sampling generator with the given algorithm. + Implemented by the derived classes who needs it + (like UnuranSampler). If nothing is specified use default algorithm from DistSamplerOptions::SetDefaultAlgorithm */ virtual bool Init(const char * =""/* algorithm */) { return true;} /** - initialize the generators with the given option - which my include the algorithm but also more if - the method is re-impelmented by derived class - The default implementation calls the above method + Initialize the generators with the given DistSamplerOption object. + The string will include the algorithm and in case additional options + which can be interpreted by a re-implemented method in the derived class. + The default implementation just calls the above method passing just the algorithm name */ virtual bool Init(const DistSamplerOptions & opt ); /** - Set the random engine to be used + Set the random engine to be used. To be implemented by the derived classes who provides random sampling */ @@ -119,44 +119,67 @@ class DistSampler { /** Set the random seed for the TRandom instances used by the sampler - classes + classes. To be implemented by the derived classes who provides random sampling */ virtual void SetSeed(unsigned int /*seed*/ ) {} /** - Get the random engine used by the sampler + Get the random engine used by the sampler. To be implemented by the derived classes who needs it Returns zero by default */ virtual TRandom * GetRandom() { return 0; } - /// set range in a given dimension + /// Set the range in a given dimension. void SetRange(double xmin, double xmax, int icoord = 0); - /// set range for all dimensions + /// Set the range for all dimensions. void SetRange(const double * xmin, const double * xmax); + /// Set the range for all dimensions (use std::vector) + void SetRange(const std::vector & xmin, const std::vector & xmax){ + assert(xmin.size() >= NDim() && xmax.size() >= NDim()); + SetRange(xmin.data(),xmax.data()); + } - /// set range using DataRange class + /// Set the range using the ROOT::Fit::DataRange class. void SetRange(const ROOT::Fit::DataRange & range); - /// set the mode of the distribution (could be useful to some methods) - /// implemented by derived classes if needed + /// Set the mode of the distribution (1D case). + /// It could be useful or needed by some sampling methods. + /// It is implemented by derived classes if needed (e.g. TUnuranSampler) virtual void SetMode(double ) {} - /// set the normalization area of distribution - /// implemented by derived classes if needed + /// Set the mode of the distribution (Multi-dim case). + virtual void SetMode(const std::vector &) {} + + /// Set the normalization area of distribution. + /// Implemented by derived classes if needed virtual void SetArea(double) {} - /// get the parent distribution function (must be called after setting the function) + /// Use the log of the provided pdf. + /// Implemented by the derived classes + virtual void SetUseLogPdf(bool = true) {} + + /// Set usage of Derivative of PDF. + /// Can be implemented by derived class + virtual void SetDPdf(const ROOT::Math::IGenFunction & ) {} + + /// Set usage of Cumulative of PDF. + /// Can be implemented by derived class + virtual void SetCdf(const ROOT::Math::IGenFunction &) {} + + /// Get the parent distribution function (must be called after setting the function). const ROOT::Math::IMultiGenFunction & ParentPdf() const { return *fFunc; } + /// Check if there is a parent distribution defined. + bool HasParentPdf() const { return fFunc != nullptr; } /** - sample one event in one dimension - better implementation could be provided by the derived classes + Sample one event in one dimension. + Specialized implementation could be provided by the derived classes */ virtual double Sample1D() { Sample(&fData[0]); @@ -164,7 +187,8 @@ class DistSampler { } /** - sample one event and rerturning array x with coordinates + Sample one event and return an array x with + sample coordinates values. */ const double * Sample() { Sample(&fData[0]); @@ -172,13 +196,14 @@ class DistSampler { } /** - sample one event in multi-dimension by filling the given array - return false if sampling failed + Sample one event in multi-dimension by filling the given array. + Return false if the sampling failed. + Abstract method to be re-implmented by the derived classes */ virtual bool Sample(double * x) = 0; /** - sample one bin given an estimated of the pdf in the bin + Sample one bin given an estimate of the pdf in the bin. (this can be function value at the center or its integral in the bin divided by the bin width) By default do not do random sample, just return the function values @@ -190,27 +215,35 @@ class DistSampler { return true; } /** - sample a set of bins given a vector of probabilities + Sample a set of bins given a vector of probabilities Typically multinomial statistics will be used and the sum of the probabilities will be equal to the total number of events to be generated For sampling the bins indipendently, SampleBin should be used */ virtual bool SampleBins(unsigned int n, const double * prob, double * values, double * errors = 0) { - std::copy(prob,prob+n, values); + std::copy(prob,prob+n, values); // default impl returns prob values (Asimov data) if (errors) std::fill(errors,errors+n,0); return true; } /** - generate a un-binned data sets (fill the given data set) - if dataset has already data append to it + Generate a un-binned data set by filling the given data set object. + If the data set object is not empty, the new generated data will be appended to the + existing one. */ virtual bool Generate(unsigned int nevt, ROOT::Fit::UnBinData & data); - + /** + Generate a vector of events by fillling the passed data vector. + The flag eventRow indicates how the events are arrenged in the multi-dim case. + The can be arranged in rows or in columns. + With eventRow=false events are the columns in data: {x1,x2,.....,xn},{y1,....yn} + With eventRow=true events are rows in data: {x1,y1},{x2,y2},.....{xn,yn} + */ + virtual bool Generate(unsigned int nevt, double * data, bool eventRow = false); /** - generate a bin data set . + Generate a binned data set. A range must have been set before (otherwise inf is returned) and the bins are equidinstant in the previously defined range bin center values must be present in given data set @@ -220,14 +253,14 @@ class DistSampler { accordingly. The expected value/bin nexp = f(x_i) * binArea/ nevt Extend control if use a fixed (i.e. multinomial statistics) or floating total number of events */ - virtual bool Generate(unsigned int nevt, const int * nbins, ROOT::Fit::BinData & data, bool extend = true); + virtual bool Generate(unsigned int nevt, const int * nbins, ROOT::Fit::BinData & data, bool extend = true, bool expErr = true); /** - same as before but passing the range in case of 1 dim data + Same as before but passing the range in case of 1 dim data. */ - bool Generate(unsigned int nevt, int nbins, double xmin, double xmax, ROOT::Fit::BinData & data, bool extend = true) { + bool Generate(unsigned int nevt, int nbins, double xmin, double xmax, ROOT::Fit::BinData & data, bool extend = true, bool expErr = true ) { SetRange(xmin,xmax); int nbs[1]; nbs[0] = nbins; - return Generate(nevt, nbs, data, extend); + return Generate(nevt, nbs, data, extend, expErr); } @@ -235,6 +268,8 @@ class DistSampler { // internal method to set the function virtual void DoSetFunction(const ROOT::Math::IMultiGenFunction & func, bool copy); + // internal method to set the dimension + virtual void DoSetDimension(unsigned int ndim); // check if generator have been initialized correctly and one can start generating bool IsInitialized() ; /// return the data range of the Pdf . Must be called after setting the function @@ -243,17 +278,14 @@ class DistSampler { return *fRange; } - - - private: // private methods - bool fOwnFunc; // flag to indicate if the function is owned - mutable std::vector fData; // internal array used to cached the sample data - ROOT::Fit::DataRange * fRange; // data range - const ROOT::Math::IMultiGenFunction * fFunc; // internal function (ND) + bool fOwnFunc; /// flag to indicate if the function is owned + mutable std::vector fData; ///! internal array used to cached the sample data + ROOT::Fit::DataRange * fRange; /// data range + const ROOT::Math::IMultiGenFunction * fFunc; /// internal function (ND) }; diff --git a/math/mathcore/inc/Math/DistSamplerOptions.h b/math/mathcore/inc/Math/DistSamplerOptions.h index dfab4bba4ac07..1483b56764811 100644 --- a/math/mathcore/inc/Math/DistSamplerOptions.h +++ b/math/mathcore/inc/Math/DistSamplerOptions.h @@ -14,6 +14,7 @@ #include #include +#include "Math/IOptions.h" namespace ROOT { @@ -21,8 +22,6 @@ namespace ROOT { namespace Math { -class IOptions; - //_______________________________________________________________________________ /** DistSampler options class @@ -84,7 +83,7 @@ class DistSamplerOptions { /// type of minimizer const std::string & Sampler() const { return fSamplerType; } - /// type of algorithm + /// type of algorithm (method) const std::string & Algorithm() const { return fAlgoType; } /// print all the options @@ -104,6 +103,16 @@ class DistSamplerOptions { /// set extra options (in this case pointer is cloned) void SetExtraOptions(const IOptions & opt); + /// set a specific algorithm option + template + void SetAlgoOption(const char * name, T value) { + if (!fExtraOptions) CreateExtraOptions(); + fExtraOptions->SetValue(name, value); + } + +protected: + + void CreateExtraOptions(); private: diff --git a/math/mathcore/inc/Math/GenAlgoOptions.h b/math/mathcore/inc/Math/GenAlgoOptions.h index fe337f2589bd5..2695a20f9da30 100644 --- a/math/mathcore/inc/Math/GenAlgoOptions.h +++ b/math/mathcore/inc/Math/GenAlgoOptions.h @@ -17,6 +17,7 @@ #include #include #include +#include namespace ROOT { namespace Math { @@ -84,6 +85,30 @@ class GenAlgoOptions : public IOptions { InsertValue(name, fNamOpts, std::string(val)); } + std::vector GetAllNamedKeys() { + std::vector names; + names.reserve(fNamOpts.size()); + // start by named options + for (auto const & e : fNamOpts) + names.push_back(e.first); + return names; + } + std::vector GetAllRealKeys() { + std::vector names; + names.reserve(fRealOpts.size()); + // start by named options + for (auto const & e : fRealOpts) + names.push_back(e.first); + return names; + } + std::vector GetAllIntKeys() { + std::vector names; + names.reserve(fIntOpts.size()); + // start by named options + for (auto const & e : fIntOpts) + names.push_back(e.first); + return names; + } /// print options virtual void Print(std::ostream & os = std::cout ) const { @@ -142,9 +167,8 @@ class GenAlgoOptions : public IOptions { os << std::setw(25) << pos->first << " : " << std::setw(15) << pos->second << std::endl; } - - std::map fRealOpts; // map of the real options std::map fIntOpts; // map of the integer options + std::map fRealOpts; // map of the real options std::map fNamOpts; // map of the named options }; diff --git a/math/mathcore/src/DistSampler.cxx b/math/mathcore/src/DistSampler.cxx index 968a62b5072dc..5b681bacb3887 100644 --- a/math/mathcore/src/DistSampler.cxx +++ b/math/mathcore/src/DistSampler.cxx @@ -72,21 +72,25 @@ void DistSampler::DoSetFunction(const ROOT::Math::IMultiGenFunction & func, bool fOwnFunc = false; fFunc = &func; } - fData = std::vector(func.NDim()); + DoSetDimension(func.NDim() ); +} + +void DistSampler::DoSetDimension(unsigned int ndim) { + // set function dimension (might be needed to initialize correctly the sampler) + fData = std::vector(ndim); // delete a range if exists and it is not compatible - if (fRange && fRange->NDim() != fData.size() ) { + if (fRange && fRange->NDim() != ndim ) { delete fRange; - fRange = 0; + fRange = nullptr; } - if (!fRange) fRange = new ROOT::Fit::DataRange(func.NDim() ); + if (!fRange) fRange = new ROOT::Fit::DataRange(ndim); } bool DistSampler::IsInitialized() { // test if sampler is initialized - // tryying to generate one event (for this cannot be const) + // trying to generate one event (for this cannot be const) if (NDim() == 0) return false; - if (fFunc == 0) return false; - if (fFunc->NDim() != NDim() ) return false; + if (fFunc && fFunc->NDim() != NDim() ) return false; // test one event if (!Sample(&fData[0]) ) return false; return true; @@ -108,17 +112,34 @@ bool DistSampler::Generate(unsigned int nevt, ROOT::Fit::UnBinData & data) { return true; } +bool DistSampler::Generate(unsigned int nevt, double * data, bool eventRow) { + if (!IsInitialized()) { + MATH_WARN_MSG("DistSampler::Generate","sampler has not been initialized correctly"); + return false; + } + unsigned int ndim = NDim(); + for (unsigned int i = 0; i < nevt; ++i) { + const double * x = Sample(); + assert(x != nullptr); + if (eventRow) + std::copy(x,x+ndim,data+i*ndim); + else { + for (unsigned int j = 0; j < ndim; ++j) { + data[j*nevt+i] = x[j]; + } + } + } + return true; +} - bool DistSampler::Generate(unsigned int nevt, const int * nbins, ROOT::Fit::BinData & data, bool extend) { +bool DistSampler::Generate(unsigned int nevt, const int * nbins, ROOT::Fit::BinData & data, bool extend, bool expErr) { // generate a bin data set from given bin center values // bin center values must be present in given data set - //if (!IsInitialized()) { - if (NDim() == 0 || fFunc == 0 ) { + if (!IsInitialized()) { MATH_WARN_MSG("DistSampler::Generate","sampler has not been initialized correctly"); return false; } - int ntotbins = 1; for (unsigned int j = 0; j < NDim(); ++j) { ntotbins *= nbins[j]; @@ -150,10 +171,10 @@ bool DistSampler::Generate(unsigned int nevt, ROOT::Fit::UnBinData & data) { for (int i = 0; i < nbins[j]; ++i) { //const double * v = Sample(); double val = 0; - double eval = 0; double yval = (ParentPdf())(&x.front()); double nexp = yval * nnorm; - ret &= SampleBin(nexp,val,&eval); + ret &= SampleBin(nexp,val,nullptr); + double eval = (expErr) ? std::sqrt(nexp) : std::sqrt(val); data.Add(&x.front(), val, eval); x[j] += dx[j]; // increment x bin the bin } diff --git a/math/mathcore/src/DistSamplerOptions.cxx b/math/mathcore/src/DistSamplerOptions.cxx index 0ec91e9dd170c..9cf4ce3f9edc5 100644 --- a/math/mathcore/src/DistSamplerOptions.cxx +++ b/math/mathcore/src/DistSamplerOptions.cxx @@ -111,6 +111,11 @@ void DistSamplerOptions::SetExtraOptions(const IOptions & opt) { fExtraOptions = opt.Clone(); } +void DistSamplerOptions::CreateExtraOptions() { + if (fExtraOptions) return; + fExtraOptions = new ROOT::Math::GenAlgoOptions(); +} + void DistSamplerOptions::Print(std::ostream & os) const { //print all the options os << std::setw(25) << "DistSampler Type" << " : " << std::setw(15) << fSamplerType << std::endl; diff --git a/math/unuran/inc/TUnuran.h b/math/unuran/inc/TUnuran.h index 7cda972659ca2..444ea66a8c207 100644 --- a/math/unuran/inc/TUnuran.h +++ b/math/unuran/inc/TUnuran.h @@ -105,10 +105,18 @@ class TUnuran { TUnuran & operator = (const TUnuran & rhs); public: + /** + Initialize with Unuran string API interface. + See https://statmath.wu.ac.at/unuran/doc/unuran.html#StringAPI + @param distr : UNU.RAN distribution string + @param method : UNU.RAN method string - /** - initialize with Unuran string interface + Here is an example using the string API: + ``` + Tunuran unr; + unr.Init("normal(3.,0.75); domain = (0,inf)", "method = tdr; c = 0"); + ``` */ bool Init(const std::string & distr, const std::string & method); @@ -119,6 +127,9 @@ class TUnuran { For the list of available method for 1D cont. distribution see the UnuRan doc. A re-initialization is needed whenever distribution parameters have been changed. + Note that the method string can contain in addition to the method name all the specific method + parameters specified using the UNURAN method string API. + For example a valid string can be `"method=arou; max_segments=1000; max_sqhratio = 0.9"` */ bool Init(const TUnuranContDist & distr, const std::string & method = "auto"); @@ -157,7 +168,7 @@ class TUnuran { /** - Initialize method for the Poisson distribution + Initialize method for the Poisson distribution. Used to generate poisson numbers for a constant parameter mu of the Poisson distribution. Use after the method TUnuran::SampleDiscr to generate the numbers. The flag reinit perform a fast re-initialization when only the distribution parameters @@ -167,7 +178,7 @@ class TUnuran { bool InitPoisson(double mu, const std::string & method = "dstd"); /** - Initialize method for the Binomial distribution + Initialize method for the Binomial distribution. Used to generate poisson numbers for a constant parameters (n,p) of the Binomial distribution. Use after the method TUnuran::SampleDiscr to generate the numbers. The flag reinit perform a fast re-initialization when only the distribution parameters @@ -177,31 +188,31 @@ class TUnuran { bool InitBinomial(unsigned int ntot, double prob, const std::string & method = "dstd"); /** - Reinitialize UNURAN by changing the distribution parameters but mantaining same distribution and method + Reinitialize UNURAN by changing the distribution parameters but mantaining same distribution and method. It is implemented now only for predefined discrete distributions like the poisson or the binomial */ bool ReInitDiscrDist(unsigned int npar, double * params); /** - Sample 1D distribution + Sample 1D distribution. User is responsible for having previously correctly initialized with TUnuran::Init */ double Sample(); /** - Sample multidimensional distributions + Sample multidimensional distributions. User is responsible for having previously correctly initialized with TUnuran::Init */ bool SampleMulti(double * x); /** - Sample discrete distributions + Sample discrete distributions. User is responsible for having previously correctly initialized with TUnuran::Init */ int SampleDiscr(); /** - set the random engine. + Set the random engine. Must be called before init to have effect */ void SetRandom(TRandom * r) { @@ -209,12 +220,47 @@ class TUnuran { } /** - return instance of the random engine used + Return instance of the random engine used. */ TRandom * GetRandom() { return fRng; } + /** + Return an information string about the used Unuran generator method. + @param extended : if true return some helper information about the existing options of the method. + */ + std::string GetInfo(bool extended = false); + + /** + Return an ID string about the unuran generator method. + */ + std::string GetGenId() const; + + /** + Return the dimension of unuran generator method. + For 1D method returns 1 and for the multi-dimensional case + must be equal to the distribution dimension. + */ + int GetDimension() const; + + /** + Return the type of the distribution. + See documentation of `unuran_distr_get_type` for the possible + types of distributions. + */ + int GetDistType() const; + + /// Return true for a univariate continous distribution. + bool IsDistCont() const; + /// Return true for a multivariate continous distribution. + bool IsDistMultiCont() const; + /// Return true for a discrete distribution. + bool IsDistDiscrete() const; + /// Return true for an empirical distribution. + bool IsDistEmpirical() const; + + /** set the seed for the random number generator diff --git a/math/unuran/inc/TUnuranSampler.h b/math/unuran/inc/TUnuranSampler.h index 0e59a644cb670..54b9c2b771323 100644 --- a/math/unuran/inc/TUnuranSampler.h +++ b/math/unuran/inc/TUnuranSampler.h @@ -15,6 +15,8 @@ #include "Math/DistSampler.h" +// needed by the ClassDef +#include "Rtypes.h" namespace ROOT { @@ -60,15 +62,20 @@ class TUnuranSampler : public ROOT::Math::DistSampler { using DistSampler::SetFunction; - /// set the parent function distribution to use for random sampling (one dim case) + /// Set the parent function distribution to use for random sampling (one dim case). void SetFunction(const ROOT::Math::IGenFunction & func) { fFunc1D = &func; SetFunction(func, 1); } - /// set the Function using a TF1 pointer + /// Set the Function using a TF1 pointer. void SetFunction(TF1 * pdf); + /// set the cumulative distribution function of the PDF used for random sampling (one dim case) + void SetCdf(const ROOT::Math::IGenFunction &cdf); + + /// set the Derivative of the PDF used for random sampling (one dim continous case) + void SetDPdf(const ROOT::Math::IGenFunction &dpdf); /** initialize the generators with the given algorithm @@ -103,13 +110,19 @@ class TUnuranSampler : public ROOT::Math::DistSampler { void SetPrintLevel(int level) {fLevel = level;} /* - set the mode + set the mode (1D distribution) */ void SetMode(double mode) { fMode = mode; fHasMode = true; } + /* + set the mode (Multidim distribution) + */ + void SetMode(const std::vector &modes); + + /* set the area */ @@ -118,6 +131,9 @@ class TUnuranSampler : public ROOT::Math::DistSampler { fHasArea = true; } + /// Set using of logarithm of PDF (only for 1D continous case) + void SetUseLogPdf(bool on = true) { fUseLogPdf = on; } + /** Get the random engine used by the sampler */ @@ -154,29 +170,32 @@ class TUnuranSampler : public ROOT::Math::DistSampler { protected: - //initialization for 1D distributions + /// Initialization for 1D distributions. bool DoInit1D(const char * algo); - //initialization for 1D discrete distributions + /// Initialization for 1D discrete distributions. bool DoInitDiscrete1D(const char * algo); - //initialization for multi-dim distributions + /// Initialization for multi-dim distributions. bool DoInitND(const char * algo); private: // private member - bool fOneDim; // flag to indicate if the function is 1 dimension - bool fDiscrete; // flag to indicate if the function is discrete - bool fHasMode; // flag to indicate if a mode is set - bool fHasArea; // flag to indicate if a area is set - int fLevel; // debug level - double fMode; // mode of dist - double fArea; // area of dist - const ROOT::Math::IGenFunction * fFunc1D; // 1D function pointer - TUnuran * fUnuran; // unuran engine class - - //ClassDef(TUnuranSampler,1) //Distribution sampler class based on UNU.RAN - + bool fOneDim = false; /// flag to indicate if the function is 1 dimension + bool fDiscrete = false; /// flag to indicate if the function is discrete + bool fHasMode = false; /// flag to indicate if a mode is set + bool fHasArea = false; /// flag to indicate if a area is set + bool fUseLogPdf = false; /// flag to indicate if we use the log of the PDF + int fLevel; /// debug level + double fMode; /// mode of dist (1D) + double fArea; /// area of dist + std::vector fNDMode; /// mode of the multi-dim distribution + const ROOT::Math::IGenFunction * fFunc1D = nullptr; /// 1D function pointer (pdf) + const ROOT::Math::IGenFunction * fCDF = nullptr; /// CDF function pointer + const ROOT::Math::IGenFunction * fDPDF = nullptr; /// 1D Derivative function pointer + TUnuran * fUnuran = nullptr; /// unuran engine class + + ClassDef(TUnuranSampler, 2); /// Distribution sampler class based on UNU.RAN }; diff --git a/math/unuran/src/TUnuran.cxx b/math/unuran/src/TUnuran.cxx index 69d042304f751..2d6df21272809 100644 --- a/math/unuran/src/TUnuran.cxx +++ b/math/unuran/src/TUnuran.cxx @@ -374,6 +374,50 @@ bool TUnuran::SetMethodAndInit() { return true; } +std::string TUnuran::GetInfo(bool extended) +{ + // get information string about Unuran generator + if (!fGen) return std::string(); + return std::string(unur_gen_info(fGen, extended)); +} + +std::string TUnuran::GetGenId() const +{ + // get Unuran generator ID + if (!fGen) return std::string(); + return std::string(unur_get_genid(fGen)); +} + +int TUnuran::GetDimension() const +{ + // get dimension of the UNURAN generator + if (!fGen) return 0; + return unur_get_dimension(fGen); +} + +int TUnuran::GetDistType() const +{ + // get type of distribution + if (!fGen) return -1; + return unur_distr_get_type (unur_get_distr(fGen)); +} + +bool TUnuran::IsDistCont() const { + if (!fGen) return false; + return unur_distr_is_cont (unur_get_distr(fGen)); +} +bool TUnuran::IsDistMultiCont() const { + if (!fGen) return false; + return unur_distr_is_cvec (unur_get_distr(fGen)); +} +bool TUnuran::IsDistDiscrete() const { + if (!fGen) return false; + return unur_distr_is_discr (unur_get_distr(fGen)); +} +bool TUnuran::IsDistEmpirical() const { + if (!fGen) return false; + return unur_distr_is_cemp (unur_get_distr(fGen)); +} int TUnuran::SampleDiscr() { @@ -430,7 +474,6 @@ bool TUnuran::InitPoisson(double mu, const std::string & method) { return true; } - bool TUnuran::InitBinomial(unsigned int ntot, double prob, const std::string & method ) { // initializaton for a Binomial double par[2]; diff --git a/math/unuran/src/TUnuranContDist.cxx b/math/unuran/src/TUnuranContDist.cxx index 3b734d18e4f7c..c384c31d79e8b 100644 --- a/math/unuran/src/TUnuranContDist.cxx +++ b/math/unuran/src/TUnuranContDist.cxx @@ -30,7 +30,8 @@ TUnuranContDist::TUnuranContDist(const ROOT::Math::IGenFunction *pdf, const ROOT // Constructor from generic function interfaces // manage the functions and clone them if flag copyFunc is true if (fOwnFunc) { - fPdf = fPdf->Clone(); + if (fPdf) + fPdf = fPdf->Clone(); if (fDPdf) fDPdf = fDPdf->Clone(); if (fCdf) diff --git a/math/unuran/src/TUnuranSampler.cxx b/math/unuran/src/TUnuranSampler.cxx index c9325ceddd7fa..fb21ed228c118 100644 --- a/math/unuran/src/TUnuranSampler.cxx +++ b/math/unuran/src/TUnuranSampler.cxx @@ -17,6 +17,7 @@ #include "TUnuran.h" #include "Math/OneDimFunctionAdapter.h" #include "Math/DistSamplerOptions.h" +#include "Math/GenAlgoOptions.h" #include "Fit/DataRange.h" //#include "Math/WrappedTF1.h" @@ -34,7 +35,6 @@ TUnuranSampler::TUnuranSampler() : ROOT::Math::DistSampler(), fDiscrete(false), fHasMode(false), fHasArea(false), fMode(0), fArea(0), - fFunc1D(0), fUnuran(new TUnuran() ) { fLevel = ROOT::Math::DistSamplerOptions::DefaultPrintLevel(); @@ -48,9 +48,23 @@ TUnuranSampler::~TUnuranSampler() { bool TUnuranSampler::Init(const char * algo) { // initialize unuran classes using the given algorithm assert (fUnuran != 0 ); + bool ret = false; + //case distribution has not been set + // Maybe we are using the Unuran string API which contains also distribution string + // try to initialize Unuran if (NDim() == 0) { - Error("TUnuranSampler::Init","Distribution function has not been set ! Need to call SetFunction first."); - return false; + ret = fUnuran->Init(algo,""); + if (!ret) { + Error("TUnuranSampler::Init", + "Unuran initialization string is invalid or the Distribution function has not been set and one needs to call SetFunction first."); + return false; + } + int ndim = fUnuran->GetDimension(); + assert(ndim > 0); + fOneDim = (ndim == 1); + fDiscrete = fUnuran->IsDistDiscrete(); + DoSetDimension(ndim); + return true; } if (fLevel < 0) fLevel = ROOT::Math::DistSamplerOptions::DefaultPrintLevel(); @@ -62,7 +76,6 @@ bool TUnuranSampler::Init(const char * algo) { } method.ToUpper(); - bool ret = false; if (NDim() == 1) { // check if distribution is discrete by // using first string in the method name is "D" @@ -84,7 +97,7 @@ bool TUnuranSampler::Init(const char * algo) { //fUnuran->SetLogLevel(fLevel); ( seems not to work disable for the time being) if (ret) Info("TUnuranSampler::Init","Successfully initailized Unuran with method %s",method.Data() ); else Error("TUnuranSampler::Init","Failed to initailize Unuran with method %s",method.Data() ); - // seems not to work in UNURAN (cll only when level > 0 ) + // seems not to work in UNURAN (call only when level > 0 ) } return ret; } @@ -93,22 +106,62 @@ bool TUnuranSampler::Init(const char * algo) { bool TUnuranSampler::Init(const ROOT::Math::DistSamplerOptions & opt ) { // default initialization with algorithm name SetPrintLevel(opt.PrintLevel() ); - return Init(opt.Algorithm().c_str() ); + // check if there are extra options + std::string optionStr = opt.Algorithm(); + auto extraOpts = opt.ExtraOptions(); + if (extraOpts) { + ROOT::Math::GenAlgoOptions * opts = dynamic_cast(extraOpts); + auto appendOption = [&](const std::string & key, const std::string & val) { + optionStr += "; "; + optionStr += key; + if (!val.empty()) { + optionStr += "="; + optionStr += val; + } + }; + auto names = opts->GetAllNamedKeys(); + for ( auto & name : names) { + std::string value = opts->NamedValue(name.c_str()); + appendOption(name,value); + } + names = opts->GetAllIntKeys(); + for ( auto & name : names) { + std::string value = ROOT::Math::Util::ToString(opts->IValue(name.c_str())); + appendOption(name,value); + } + names = opts->GetAllRealKeys(); + for ( auto & name : names) { + std::string value = ROOT::Math::Util::ToString(opts->RValue(name.c_str())); + appendOption(name,value); + } + } + Info("Init","Initialize UNU.RAN with Method option string: %s",optionStr.c_str()); + return Init(optionStr.c_str() ); } bool TUnuranSampler::DoInit1D(const char * method) { - // initilize for 1D sampling + // initialize for 1D sampling // need to create 1D interface from Multidim one // (to do: use directly 1D functions ??) + // to do : add possibility for String API of UNURAN fOneDim = true; TUnuranContDist * dist = 0; if (fFunc1D == 0) { - ROOT::Math::OneDimMultiFunctionAdapter<> function(ParentPdf() ); - dist = new TUnuranContDist(function,0,false,true); + if (HasParentPdf()) { + ROOT::Math::OneDimMultiFunctionAdapter<> function(ParentPdf() ); + dist = new TUnuranContDist(&function,fDPDF,fCDF,fUseLogPdf,true); + } + else { + if (!fDPDF && !fCDF) { + Error("DoInit1D", "No PDF, CDF or DPDF function has been set"); + return false; + } + dist = new TUnuranContDist(nullptr, fDPDF, fCDF, fUseLogPdf, true); + } } else { - dist = new TUnuranContDist(*fFunc1D); // no need to copy the function + dist = new TUnuranContDist(fFunc1D, fDPDF, fCDF, fUseLogPdf, true); // no need to copy the function } // set range in distribution (support only one range) const ROOT::Fit::DataRange & range = PdfRange(); @@ -128,11 +181,15 @@ bool TUnuranSampler::DoInit1D(const char * method) { } bool TUnuranSampler::DoInitDiscrete1D(const char * method) { - // initilize for 1D sampling of discrete distributions + // initialize for 1D sampling of discrete distributions fOneDim = true; fDiscrete = true; TUnuranDiscrDist * dist = 0; if (fFunc1D == 0) { + if (!HasParentPdf()) { + Error("DoInitDiscrete1D", "No PMF has been defined"); + return false; + } // need to copy the passed function pointer in this case ROOT::Math::OneDimMultiFunctionAdapter<> function(ParentPdf() ); dist = new TUnuranDiscrDist(function,true); @@ -141,6 +198,8 @@ bool TUnuranSampler::DoInitDiscrete1D(const char * method) { // no need to copy the function since fFunc1D is managed outside dist = new TUnuranDiscrDist(*fFunc1D, false); } + // set CDF if available + if (fCDF) dist->SetCdf(*fCDF); // set range in distribution (support only one range) // otherwise 0, inf is assumed const ROOT::Fit::DataRange & range = PdfRange(); @@ -163,7 +222,11 @@ bool TUnuranSampler::DoInitDiscrete1D(const char * method) { bool TUnuranSampler::DoInitND(const char * method) { - // initilize for 1D sampling + // initialize for ND sampling + if (!HasParentPdf()) { + Error("DoInitND", "No PDF has been defined"); + return false; + } TUnuranMultiContDist dist(ParentPdf()); // set range in distribution (support only one range) const ROOT::Fit::DataRange & range = PdfRange(); @@ -179,6 +242,9 @@ bool TUnuranSampler::DoInitND(const char * method) { // std::cout << std::endl; } fOneDim = false; + if (fHasMode && fNDMode.size() == dist.NDim()) + dist.SetMode(fNDMode.data()); + if (method) return fUnuran->Init(dist, method); return fUnuran->Init(dist); } @@ -218,10 +284,39 @@ bool TUnuranSampler::Sample(double * x) { bool TUnuranSampler::SampleBin(double prob, double & value, double *error) { // sample a bin according to Poisson statistics - TRandom * r = fUnuran->GetRandom(); if (!r) return false; value = r->Poisson(prob); - if (error) *error = std::sqrt(value); + if (error) *error = std::sqrt(prob); return true; } + +void TUnuranSampler::SetMode(const std::vector &mode) +{ + // set modes for multidim distribution + if (mode.size() == ParentPdf().NDim()) { + if (mode.size() == 1) + fMode = mode[0]; + else + fNDMode = mode; + + fHasMode = true; + } + else { + Error("SetMode", "modes vector is not compatible with function dimension of %d", (int)ParentPdf().NDim()); + fHasMode = false; + fNDMode.clear(); + } +} + +void TUnuranSampler::SetCdf(const ROOT::Math::IGenFunction &cdf) { + fCDF = &cdf; + // in case dimension has not been defined ( a pdf is not provided) + if (NDim() == 0) DoSetDimension(1); +} + +void TUnuranSampler::SetDPdf(const ROOT::Math::IGenFunction &dpdf) { + fDPDF = &dpdf; + // in case dimension has not been defined ( a pdf is not provided) + if (NDim() == 0) DoSetDimension(1); +} \ No newline at end of file diff --git a/math/unuran/test/CMakeLists.txt b/math/unuran/test/CMakeLists.txt index cd40f46b211a8..4337660cedce7 100644 --- a/math/unuran/test/CMakeLists.txt +++ b/math/unuran/test/CMakeLists.txt @@ -29,3 +29,6 @@ foreach(file ${TestUnuranSource}) ROOT_EXECUTABLE(${testname} ${file} LIBRARIES ${Libraries}) ROOT_ADD_TEST(unuran-${testname} COMMAND ${testname} LABELS ${${testname}_LABELS}) endforeach() + +# google tests +ROOT_ADD_GTEST(testUnuranSampler unuranSampler.cxx LIBRARIES ${Libraries} ) diff --git a/math/unuran/test/unuranSampler.cxx b/math/unuran/test/unuranSampler.cxx new file mode 100644 index 0000000000000..d8c37efe2bd8d --- /dev/null +++ b/math/unuran/test/unuranSampler.cxx @@ -0,0 +1,232 @@ +// test TUnuran Sampler class using t he DistSampler interface +#include "gtest/gtest.h" + +#include "Math/DistSampler.h" +#include "Math/DistSamplerOptions.h" +#include "Math/Factory.h" +#include "Math/DistFunc.h" +#include "Math/Functor.h" +#include "TH1.h" +#include "TH2.h" + +using namespace ROOT::Math; + +std::unique_ptr FillHisto1D( DistSampler & s) { + // create histogram using automatic binning + auto h1 = std::make_unique("h1","h1",100, 1, 0); + const int nevt = 10000; + for (int i = 0; i < nevt; i++) { + h1->Fill( s.Sample1D()); + } + return h1; +} + +// test using Unuran string API +TEST(OneDim, StringAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + bool ret = sampler->Init("distr = normal(3.,0.75); domain = (0,6) & method = tdr; c = 0"); + EXPECT_EQ(ret, true); + if (!ret) return; + + sampler->SetMode(3.0); + + auto h1 = FillHisto1D(*sampler); + EXPECT_NEAR(h1->GetMean(), 3., 5 * h1->GetMeanError()); + EXPECT_NEAR(h1->GetRMS(), 0.75, 5*h1->GetRMSError()); +} + +// test passing a PDF distribution object +TEST(OneDim, DistPdfAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](double x){ return ROOT::Math::normal_pdf(x,0.75,3);}; + Functor1D pdfDist(pdf); + sampler->SetFunction(pdfDist); + + bool ret = sampler->Init("tdr"); + EXPECT_EQ(ret, true); + if (!ret) return; + + sampler->SetRange(0,6.); + + auto h1 = FillHisto1D(*sampler); + EXPECT_NEAR(h1->GetMean(), 3., 5 * h1->GetMeanError()); + EXPECT_NEAR(h1->GetRMS(), 0.75, 5*h1->GetRMSError()); +} + +// test passing a CDF distribution object +TEST(OneDim, DistCdfAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + auto cdf = [](double x){ return ROOT::Math::normal_cdf(x,0.75,3);}; + Functor1D cdfDist(cdf); + sampler->SetCdf(cdfDist); + + bool ret = sampler->Init("ninv"); + EXPECT_EQ(ret, true); + if (!ret) return; + + sampler->SetRange(0,6.); + + auto h1 = FillHisto1D(*sampler); + EXPECT_NEAR(h1->GetMean(), 3., 5 * h1->GetMeanError()); + EXPECT_NEAR(h1->GetRMS(), 0.75, 5*h1->GetRMSError()); +} + +// test using DistSampler options +TEST(OneDim, DistSamplerOptAPI){ + + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](double x){ return ROOT::Math::normal_pdf(x,0.75,3);}; + Functor1D pdfDist(pdf); + sampler->SetFunction(pdfDist); + DistSamplerOptions opt; + opt.SetAlgorithm("tdr"); + // set specific options for the tdr method + opt.SetAlgoOption("c",0.); + opt.SetAlgoOption("cpoints",50); + opt.SetAlgoOption("usedars","true"); + opt.SetAlgoOption("variant_gw",""); + //opt.Print(); + + bool ret = sampler->Init(opt); + EXPECT_EQ(ret, true); + if (!ret) return; + + sampler->SetRange(0,6.); + + auto h1 = FillHisto1D(*sampler); + EXPECT_NEAR(h1->GetMean(), 3., 5 * h1->GetMeanError()); + EXPECT_NEAR(h1->GetRMS(), 0.75, 5*h1->GetRMSError()); +} +// test using a discreate PDF +TEST(Discrete, DistAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](double x){ return ROOT::Math::poisson_pdf(x,10);}; + Functor1D pdfDist(pdf); + sampler->SetFunction(pdfDist); + sampler->SetMode(10); + sampler->SetArea(1.); + + bool ret = sampler->Init("dari"); + EXPECT_EQ(ret, true); + if (!ret) return; + + auto h1 = FillHisto1D(*sampler); + EXPECT_NEAR(h1->GetMean(), 10, 5 * h1->GetMeanError()); + EXPECT_NEAR(h1->GetRMS(), sqrt(10), 5*h1->GetRMSError()); +} + +TEST(Discrete, StringAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + // test using string API from a probability vector + bool ret = sampler->Init("distr = discr; pv = (0.5,0.2,0.3) & method = dau"); + EXPECT_EQ(ret, true); + if (!ret) return; + + TH1D h1("h1","h1",3,0,3); + const int nevt = 10000; + for (int i = 0; i < nevt; i++) { h1.Fill(sampler->Sample1D());} + + double prob[] = {0.5,0.2,0.3}; + for (int ibin = 1; ibin <=3; ibin++) { + EXPECT_NEAR(h1.GetBinContent(ibin), prob[ibin-1]*nevt, 5*h1.GetBinError(ibin)); + } +} + +std::unique_ptr FillHisto2D( DistSampler & s) { + // create histogram using automatic binning + auto h2 = std::make_unique("h2","h2",100, 1, 0, 100, 1, 0); + const int nevt = 100000; + for (int i = 0; i < nevt; i++) { + auto x = s.Sample(); + h2->Fill(x[0],x[1]); + } + return h2; +} + +// test using a Multidim pdf +TEST(MultiDim, DistAPI) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](const double * x){ return ROOT::Math::bigaussian_pdf(x[0],x[1],1.,2.,0.7,0.,5.);}; + Functor pdfDist(pdf,2); + sampler->SetFunction(pdfDist); + + bool ret = sampler->Init("vnrou"); + EXPECT_EQ(ret, true); + if (!ret) return; + + auto h1 = FillHisto2D(*sampler); + + EXPECT_NEAR(h1->GetMean(1), 0, 5 * h1->GetMeanError(1)); + EXPECT_NEAR(h1->GetRMS(1), 1, 5*h1->GetRMSError(1)); + EXPECT_NEAR(h1->GetMean(2), 5, 5 * h1->GetMeanError(2)); + EXPECT_NEAR(h1->GetRMS(2), 2, 5*h1->GetRMSError(2)); + EXPECT_NEAR(h1->GetCorrelationFactor(1,2), 0.7, 0.05); + +} + +// test using a Multidim pdf using also mode +TEST(MultiDim, DistAPIWithOpt) +{ + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](const double * x){ return ROOT::Math::bigaussian_pdf(x[0],x[1],1.,2.,0.7,0.,5.);}; + Functor pdfDist(pdf,2); + sampler->SetFunction(pdfDist); + sampler->SetMode({0,5}); + sampler->SetRange({-5,-5},{5,15}); + + bool ret = sampler->Init("hitro"); + EXPECT_EQ(ret, true); + if (!ret) return; + + auto h1 = FillHisto2D(*sampler); + // relax test tolelrance. Method is Markov-Chain method + EXPECT_NEAR(h1->GetMean(1), 0, 10 * h1->GetMeanError(1)); + EXPECT_NEAR(h1->GetRMS(1), 1, 10*h1->GetRMSError(1)); + EXPECT_NEAR(h1->GetMean(2), 5, 10 * h1->GetMeanError(2)); + EXPECT_NEAR(h1->GetRMS(2), 2, 10*h1->GetRMSError(2)); + EXPECT_NEAR(h1->GetCorrelationFactor(1,2), 0.7, 0.1); +} +// test using DistSampler options +TEST(MultiDim, DistSamplerOptAPI){ + + std::unique_ptr sampler(Factory::CreateDistSampler("Unuran")); + + auto pdf = [](const double * x){ return ROOT::Math::bigaussian_pdf(x[0],x[1],1.,2.,0.7,0.,5.);}; + Functor pdfDist(pdf,2); + sampler->SetFunction(pdfDist); + sampler->SetMode({0,5}); + sampler->SetRange({-5,-5},{5,15}); + + DistSamplerOptions opt; + opt.SetAlgorithm("hitro"); + // set specific options for the tdr method + opt.SetAlgoOption("burnin",200); + //opt.SetAlgoOption("startingpoint","(0,5)"); + //opt.Print(); + + bool ret = sampler->Init(opt); + EXPECT_EQ(ret, true); + if (!ret) return; + + auto h1 = FillHisto2D(*sampler); + // relax test tolelrance. Method is Markov-Chain method + EXPECT_NEAR(h1->GetMean(1), 0, 10 * h1->GetMeanError(1)); + EXPECT_NEAR(h1->GetRMS(1), 1, 10*h1->GetRMSError(1)); + EXPECT_NEAR(h1->GetMean(2), 5, 10 * h1->GetMeanError(2)); + EXPECT_NEAR(h1->GetRMS(2), 2, 10*h1->GetRMSError(2)); + EXPECT_NEAR(h1->GetCorrelationFactor(1,2), 0.7, 0.1); + +} \ No newline at end of file From 9d321273c2e5f0711611b54362193b1c02815d98 Mon Sep 17 00:00:00 2001 From: moneta Date: Wed, 1 Sep 2021 16:57:13 +0200 Subject: [PATCH 026/577] Fix a streaming error in TRandom1 As reported in https://root-forum.cern.ch/t/trandom1-streamer-bug/46608 the fTheSeeds data member cannot be stored. It should be a transient one since is a temporary array used to stored an array of seed values --- math/mathcore/inc/TRandom1.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/math/mathcore/inc/TRandom1.h b/math/mathcore/inc/TRandom1.h index 1800c41c28c1b..20f753ecf896d 100644 --- a/math/mathcore/inc/TRandom1.h +++ b/math/mathcore/inc/TRandom1.h @@ -37,7 +37,7 @@ class TRandom1 : public TRandom { const Int_t fIntModulus; static Int_t fgNumEngines; static Int_t fgMaxIndex; - const UInt_t *fTheSeeds; + const UInt_t *fTheSeeds; //! Temporary array of seed values (transient) const Double_t fMantissaBit24; const Double_t fMantissaBit12; @@ -65,7 +65,7 @@ class TRandom1 : public TRandom { // array of seeds. Only the first seed is used. virtual void SetSeed(ULong_t seed); - ClassDef(TRandom1,1) //Ranlux Random number generators with periodicity > 10**14 + ClassDef(TRandom1,2) //Ranlux Random number generators with periodicity > 10**14 }; R__EXTERN TRandom *gRandom; From 7f1d46ada278bff7b59139f2eea1f02a735e4106 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Tue, 17 Aug 2021 17:28:27 +0530 Subject: [PATCH 027/577] Initial Commit: Add Tutorials for RModelParsers --- tutorials/tmva/TMVA_SOFIE_Keras.C | 78 +++++++++++++++++++++++++++ tutorials/tmva/TMVA_SOFIE_ONNX.C | 47 ++++++++++++++++ tutorials/tmva/TMVA_SOFIE_PyTorch.C | 83 +++++++++++++++++++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 tutorials/tmva/TMVA_SOFIE_Keras.C create mode 100644 tutorials/tmva/TMVA_SOFIE_ONNX.C create mode 100644 tutorials/tmva/TMVA_SOFIE_PyTorch.C diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C new file mode 100644 index 0000000000000..e350caf34fee4 --- /dev/null +++ b/tutorials/tmva/TMVA_SOFIE_Keras.C @@ -0,0 +1,78 @@ +/// \file +/// \ingroup tutorial_tmva +/// \notebook -nodraw +/// This macro provides a simple example for the parsing of Keras .h5 file +/// into RModel object and further generating the .hxx header files for inference. +/// +/// \macro_code +/// \macro_output +/// \author Sanjiban Sengupta + +using namespace TMVA::Experimental; + +TString pythonSrc = "\ +import os\n\ +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n\ +\n\ +import keras\n\ +import numpy as np\n\ +from keras.models import Model\n\ +from keras.layers import Input,Dense,Activation,ReLU\n\ +from keras.optimizers import SGD\n\ +\n\ +input=Input(shape=(8,),batch_size=2)\n\ +x=Dense(16)(input)\n\ +x=Activation('relu')(x)\n\ +x=Dense(32,activation='relu')(x)\n\ +x=Dense(4)(x)\n\ +output=ReLU()(x)\n\ +model=Model(inputs=input,outputs=output)\n\ +\n\ +randomGenerator=np.random.RandomState(0)\n\ +x_train=randomGenerator.rand(2,8)\n\ +y_train=randomGenerator.rand(2,4)\n\ +\n\ +model.compile(loss='mean_squared_error', optimizer=SGD(learning_rate=0.01))\n\ +model.fit(x_train, y_train, epochs=10, batch_size=2)\n\ +model.save('KerasModelFunctional.h5')\n"; + + +void TMVA_SOFIE_Keras(){ + + //Running the Python script to generate Keras .h5 file + Py_Initialize(); + PyRun_SimpleString(pythonSrc); + + //Parsing the saved Keras .h5 file into RModel object + SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModelFunctional.h5"); + + //Generating inference code + model.Generate(); + model.OutputGenerated("KerasModelFunctional.hxx"); + + //Printing required input tensors + model.PrintRequiredInputTensors(); + + //Printing initialized tensors (weights) + std::cout<<"\n\n"; + model.PrintInitializedTensors(); + + //Printing intermediate tensors + std::cout<<"\n\n"; + model.PrintIntermediateTensors(); + + //Checking if tensor already exist in model + std::cout<<"\n\nTensor \"dense2bias0\" already exist: "< tensorShape = model.GetTensorShape("dense2bias0"); + std::cout<<"Shape of tensor \"dense2bias0\": "; + for(auto& it:tensorShape){ + std::cout< tensorShape = model.GetTensorShape("16weight"); + std::cout<<"Shape of tensor \"16weight\": "; + for(auto& it:tensorShape){ + std::cout< inputTensorShapeSequential{2,4}; + std::vector> inputShapesSequential{inputTensorShapeSequential}; + + //Parsing the saved PyTorch .pt file into RModel object + SOFIE::RModel model = SOFIE::PyTorch::Parse("PyTorchModelSequential.pt",inputShapesSequential); + + //Generating inference code + model.Generate(); + model.OutputGenerated("PyTorchModelSequential.hxx"); + + //Printing required input tensors + model.PrintRequiredInputTensors(); + + //Printing initialized tensors (weights) + std::cout<<"\n\n"; + model.PrintInitializedTensors(); + + //Printing intermediate tensors + std::cout<<"\n\n"; + model.PrintIntermediateTensors(); + + //Checking if tensor already exist in model + std::cout<<"\n\nTensor \"0weight\" already exist: "< tensorShape = model.GetTensorShape("0weight"); + std::cout<<"Shape of tensor \"0weight\": "; + for(auto& it:tensorShape){ + std::cout< Date: Wed, 1 Sep 2021 02:02:18 +0530 Subject: [PATCH 028/577] Modify Tutorials for importing from tensorflow.keras Modify parameter name in Documentation of PyMethodBase --- tmva/pymva/src/PyMethodBase.cxx | 4 ++-- tutorials/tmva/TMVA_SOFIE_Keras.C | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx index 6db452a8a0d49..442f2d279eae1 100644 --- a/tmva/pymva/src/PyMethodBase.cxx +++ b/tmva/pymva/src/PyMethodBase.cxx @@ -328,8 +328,8 @@ void PyMethodBase::PyRunString(TString code, TString errorMessage, int start) { /// Execute Python code from string /// /// \param[in] code Python code as string -/// \param[in] fGlobalNS Global Namespace for Python Session -/// \param[in] fLocalNS Local Namespace for Python Session +/// \param[in] globalNS Global Namespace for Python Session +/// \param[in] localNS Local Namespace for Python Session /// /// Overloaded static Helper function to run python code /// from string and throw runtime error if the Python session diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C index e350caf34fee4..708c201570d81 100644 --- a/tutorials/tmva/TMVA_SOFIE_Keras.C +++ b/tutorials/tmva/TMVA_SOFIE_Keras.C @@ -14,11 +14,10 @@ TString pythonSrc = "\ import os\n\ os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n\ \n\ -import keras\n\ import numpy as np\n\ -from keras.models import Model\n\ -from keras.layers import Input,Dense,Activation,ReLU\n\ -from keras.optimizers import SGD\n\ +from tensorflow.keras.models import Model\n\ +from tensorflow.keras.layers import Input,Dense,Activation,ReLU\n\ +from tensorflow.keras.optimizers import SGD\n\ \n\ input=Input(shape=(8,),batch_size=2)\n\ x=Dense(16)(input)\n\ From 6a206bc76708a84cf299ee1f562abfb65a689c17 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Thu, 2 Sep 2021 16:49:39 +0530 Subject: [PATCH 029/577] Modify Running Python code to generate model --- tutorials/tmva/TMVA_SOFIE_Keras.C | 29 ++++++++++++++++++----------- tutorials/tmva/TMVA_SOFIE_PyTorch.C | 27 +++++++++++++++++---------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C index 708c201570d81..e9fdbba21a2d0 100644 --- a/tutorials/tmva/TMVA_SOFIE_Keras.C +++ b/tutorials/tmva/TMVA_SOFIE_Keras.C @@ -19,37 +19,44 @@ from tensorflow.keras.models import Model\n\ from tensorflow.keras.layers import Input,Dense,Activation,ReLU\n\ from tensorflow.keras.optimizers import SGD\n\ \n\ -input=Input(shape=(8,),batch_size=2)\n\ -x=Dense(16)(input)\n\ +input=Input(shape=(64,),batch_size=4)\n\ +x=Dense(32)(input)\n\ x=Activation('relu')(x)\n\ -x=Dense(32,activation='relu')(x)\n\ +x=Dense(16,activation='relu')(x)\n\ +x=Dense(8,activation='relu')(x)\n\ x=Dense(4)(x)\n\ output=ReLU()(x)\n\ model=Model(inputs=input,outputs=output)\n\ \n\ randomGenerator=np.random.RandomState(0)\n\ -x_train=randomGenerator.rand(2,8)\n\ -y_train=randomGenerator.rand(2,4)\n\ +x_train=randomGenerator.rand(4,64)\n\ +y_train=randomGenerator.rand(4,4)\n\ \n\ model.compile(loss='mean_squared_error', optimizer=SGD(learning_rate=0.01))\n\ -model.fit(x_train, y_train, epochs=10, batch_size=2)\n\ -model.save('KerasModelFunctional.h5')\n"; +model.fit(x_train, y_train, epochs=5, batch_size=4)\n\ +model.save('KerasModel.h5')\n"; void TMVA_SOFIE_Keras(){ //Running the Python script to generate Keras .h5 file - Py_Initialize(); - PyRun_SimpleString(pythonSrc); + TMVA::PyMethodBase::PyInitialize(); + + TMacro m; + m.AddLine(pythonSrc); + m.SaveSource("make_keras_model.py"); + gSystem->Exec("python make_keras_model.py"); //Parsing the saved Keras .h5 file into RModel object - SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModelFunctional.h5"); + SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModel.h5"); + //Generating inference code model.Generate(); - model.OutputGenerated("KerasModelFunctional.hxx"); + model.OutputGenerated("KerasModel.hxx"); //Printing required input tensors + std::cout<<"\n\n"; model.PrintRequiredInputTensors(); //Printing initialized tensors (weights) diff --git a/tutorials/tmva/TMVA_SOFIE_PyTorch.C b/tutorials/tmva/TMVA_SOFIE_PyTorch.C index 54348e256c35f..b208b042d7be7 100644 --- a/tutorials/tmva/TMVA_SOFIE_PyTorch.C +++ b/tutorials/tmva/TMVA_SOFIE_PyTorch.C @@ -15,17 +15,19 @@ import torch\n\ import torch.nn as nn\n\ \n\ model = nn.Sequential(\n\ - nn.Linear(4,6),\n\ + nn.Linear(32,16),\n\ + nn.ReLU(),\n\ + nn.Linear(16,8),\n\ nn.ReLU()\n\ )\n\ \n\ criterion = nn.MSELoss()\n\ optimizer = torch.optim.SGD(model.parameters(),lr=0.01)\n\ \n\ -x=torch.randn(2,4)\n\ -y=torch.randn(2,6)\n\ +x=torch.randn(2,32)\n\ +y=torch.randn(2,8)\n\ \n\ -for i in range(2000):\n\ +for i in range(500):\n\ y_pred = model(x)\n\ loss = criterion(y_pred,y)\n\ optimizer.zero_grad()\n\ @@ -34,28 +36,33 @@ for i in range(2000):\n\ \n\ model.eval()\n\ m = torch.jit.script(model)\n\ -torch.jit.save(m,'PyTorchModelSequential.pt')\n"; +torch.jit.save(m,'PyTorchModel.pt')\n"; void TMVA_SOFIE_PyTorch(){ //Running the Python script to generate PyTorch .pt file - Py_Initialize(); - PyRun_SimpleString(pythonSrc); + TMVA::PyMethodBase::PyInitialize(); + + TMacro m; + m.AddLine(pythonSrc); + m.SaveSource("make_pytorch_model.py"); + gSystem->Exec("python make_pytorch_model.py"); //Parsing a PyTorch model requires the shape and data-type of input tensor //Data-type of input tensor defaults to Float if not specified - std::vector inputTensorShapeSequential{2,4}; + std::vector inputTensorShapeSequential{2,32}; std::vector> inputShapesSequential{inputTensorShapeSequential}; //Parsing the saved PyTorch .pt file into RModel object - SOFIE::RModel model = SOFIE::PyTorch::Parse("PyTorchModelSequential.pt",inputShapesSequential); + SOFIE::RModel model = SOFIE::PyTorch::Parse("PyTorchModel.pt",inputShapesSequential); //Generating inference code model.Generate(); - model.OutputGenerated("PyTorchModelSequential.hxx"); + model.OutputGenerated("PyTorchModel.hxx"); //Printing required input tensors + std::cout<<"\n\n"; model.PrintRequiredInputTensors(); //Printing initialized tensors (weights) From 65ddc222d5a6ba17cb3a94f91cad27bbd8625a76 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 25 Aug 2021 13:16:00 +0200 Subject: [PATCH 030/577] [valgrind] Better python and X11 suppression: * use current Python func names, * suppress everything from libpython * current xcb (at least on Ubuntu) goes through `__writev`, be less strict. --- etc/valgrind-root-python.supp | 56 ++++++++++++++++++++++++++++++++++- etc/valgrind-root.supp | 2 +- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/etc/valgrind-root-python.supp b/etc/valgrind-root-python.supp index cdfea2822760b..985086a11cba6 100644 --- a/etc/valgrind-root-python.supp +++ b/etc/valgrind-root-python.supp @@ -3,31 +3,86 @@ Memcheck:Addr4 fun:PyObject_Free } +{ + a + Memcheck:Addr4 + fun:PyMem_Free +} { b Memcheck:Cond fun:PyObject_Free } +{ + b + Memcheck:Cond + fun:PyMem_Free +} { c Memcheck:Value8 fun:PyObject_Free } +{ + c + Memcheck:Value8 + fun:PyMem_Free +} { d Memcheck:Addr4 fun:PyObject_Realloc } +{ + d + Memcheck:Addr4 + fun:PyMem_Realloc +} { e Memcheck:Cond fun:PyObject_Realloc } +{ + e + Memcheck:Cond + fun:PyMem_Realloc +} { f Memcheck:Value8 fun:PyObject_Realloc } +{ + f + Memcheck:Value8 + fun:PyMem_Realloc +} +{ + g + Memcheck:Addr4 + fun:PyMarshal_ReadObjectFromString +} +{ + h + Memcheck:Addr4 + fun:PyGrammar_RemoveAccelerators +} +{ + i + Memcheck:Addr4 + obj:*python* +} +{ + j + Memcheck:Value8 + obj:*python* +} +{ + j + Memcheck:Cond + obj:*python* +} ######### PyROOT intentionally not freed memory @@ -97,4 +152,3 @@ fun:_PyObject_GC_Malloc fun:_PyObject_GC_NewVar } - diff --git a/etc/valgrind-root.supp b/etc/valgrind-root.supp index 53044912bb80d..230362de38cc4 100644 --- a/etc/valgrind-root.supp +++ b/etc/valgrind-root.supp @@ -1275,7 +1275,7 @@ ROOT:X11 - XQueryExtension Memcheck:Param writev(vector[...]) - fun:writev + ... obj:*/libxcb.* obj:*/libxcb.* fun:xcb_writev From bcc8bb729c23873177b9cb3e250fa000a0b59035 Mon Sep 17 00:00:00 2001 From: MarkusFrankATcernch Date: Fri, 3 Sep 2021 15:02:37 +0200 Subject: [PATCH 031/577] Fix TGeo units for gdml output (#8955) * Fix to TGeoMaterial::AddElement to allow to add elements/materials/mixtures with weight zero * Change the default unit system to ROOT units in the TGeoManager --- geom/geom/src/TGeoManager.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geom/geom/src/TGeoManager.cxx b/geom/geom/src/TGeoManager.cxx index d4e617e673404..a1f96e5092ae4 100644 --- a/geom/geom/src/TGeoManager.cxx +++ b/geom/geom/src/TGeoManager.cxx @@ -299,7 +299,7 @@ Int_t TGeoManager::fgMaxDaughters = 1; Int_t TGeoManager::fgMaxXtruVert = 1; Int_t TGeoManager::fgNumThreads = 0; UInt_t TGeoManager::fgExportPrecision = 17; -TGeoManager::EDefaultUnits TGeoManager::fgDefaultUnits = TGeoManager::kG4Units; +TGeoManager::EDefaultUnits TGeoManager::fgDefaultUnits = TGeoManager::kRootUnits; TGeoManager::ThreadsMap_t *TGeoManager::fgThreadId = 0; static Bool_t gGeometryLocked = kTRUE; From 2a7f0c402bea72279491717321f39edd0e98176d Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Fri, 3 Sep 2021 12:58:09 +0530 Subject: [PATCH 032/577] Initial Commit: Format Code & Documentation --- tmva/pymva/inc/TMVA/RModelParser_PyTorch.h | 8 +-- tmva/pymva/src/RModelParser_Keras.cxx | 64 +++++++++++----------- tmva/pymva/src/RModelParser_PyTorch.cxx | 37 ++++++------- 3 files changed, 53 insertions(+), 56 deletions(-) diff --git a/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h b/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h index 75c6a0e52feac..9d8ba209eee68 100644 --- a/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h +++ b/tmva/pymva/inc/TMVA/RModelParser_PyTorch.h @@ -41,14 +41,14 @@ namespace Experimental{ namespace SOFIE{ namespace PyTorch{ -/// Parser function for translatng PyTorch .pt model into a RModel object. +/// Parser function for translating PyTorch .pt model into a RModel object. /// Accepts the file location of a PyTorch model, shapes and data-types of input tensors /// and returns the equivalent RModel object. RModel Parse(std::string filepath,std::vector> inputShapes, std::vector dtype); -/// Overloaded Parser function for translatng PyTorch .pt model into a RModel object. -/// Accepts the file location of a PyTorch model and only the shapes of input tensors. -/// Builds the data-types vector for input tensors and calls the `Parse()` function to +/// Overloaded Parser function for translating PyTorch .pt model into a RModel object. +/// Accepts the file location of a PyTorch model and the shapes of input tensors. +/// Builds the vector of data-types for input tensors and calls the `Parse()` function to /// return the equivalent RModel object. RModel Parse(std::string filepath,std::vector> inputShapes); diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx index b231858252b88..57162ae91808e 100644 --- a/tmva/pymva/src/RModelParser_Keras.cxx +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -29,7 +29,7 @@ namespace Experimental{ namespace SOFIE{ namespace PyKeras{ - // Referencing Python utility functions present in PyMethodBase +// Referencing Python utility functions present in PyMethodBase static void(& PyRunString)(TString, PyObject*, PyObject*) = PyMethodBase::PyRunString; static const char*(& PyStringAsString)(PyObject*) = PyMethodBase::PyStringAsString; @@ -39,33 +39,34 @@ namespace INTERNAL{ void AddKerasLayer(RModel &rmodel, PyObject *fLayer); // Declaring Internal Functions for Keras layers which don't have activation as an additional attribute -std::unique_ptr -MakeKerasActivation(PyObject *fLayer); // For instantiating ROperator for Keras Activation Layer -std::unique_ptr MakeKerasReLU(PyObject *fLayer); // For instantiating ROperator for Keras ReLU layer -std::unique_ptr MakeKerasPermute(PyObject *fLayer); // For instantiating ROperator for Keras Permute Layer +std::unique_ptr MakeKerasActivation(PyObject *fLayer); // For instantiating ROperator for Keras Activation Layer +std::unique_ptr MakeKerasReLU(PyObject *fLayer); // For instantiating ROperator for Keras ReLU layer +std::unique_ptr MakeKerasPermute(PyObject *fLayer); // For instantiating ROperator for Keras Permute Layer // Declaring Internal function for Keras layers which have additional activation attribute -std::unique_ptr MakeKerasDense(PyObject *fLayer); // For instantiating ROperator for Keras Dense Layer +std::unique_ptr MakeKerasDense(PyObject *fLayer); // For instantiating ROperator for Keras Dense Layer // For mapping Keras layer with the preparatory functions for ROperators using KerasMethodMap = std::unordered_map (*)(PyObject *fLayer)>; using KerasMethodMapWithActivation = std::unordered_map (*)(PyObject *fLayer)>; -const KerasMethodMap mapKerasLayer = {{"Activation", &MakeKerasActivation}, - {"Permute", &MakeKerasPermute}, +const KerasMethodMap mapKerasLayer = { + {"Activation", &MakeKerasActivation}, + {"Permute", &MakeKerasPermute}, - // For activation layers - {"ReLU", &MakeKerasReLU}, + // For activation layers + {"ReLU", &MakeKerasReLU}, - // For layers with activation attributes - {"relu", &MakeKerasReLU}}; + // For layers with activation attributes + {"relu", &MakeKerasReLU} +}; const KerasMethodMapWithActivation mapKerasLayerWithActivation = { {"Dense", &MakeKerasDense}, -}; + }; // Function which returns values from a Python Tuple object in vector of size_t -std::vector GetShapeFromTuple(PyObject *shapeTuple); +std::vector GetDataFromTuple(PyObject *tupleObject); ////////////////////////////////////////////////////////////////////////////////// /// \brief Adds equivalent ROperator with respect to Keras model layer @@ -100,13 +101,14 @@ std::vector GetShapeFromTuple(PyObject *shapeTuple); /// /// The fLayer dictionary which holds all the information about a Keras layer has /// following structure:- -/// dict fLayer { 'layerType' : Type of the Keras layer -/// 'layerAttributes' : Attributes of the keras layer as returned by layer.get_config() -/// 'layerInput' : List of names of input tensors -/// 'layerOutput' : List of names of output tensors -/// 'layerDType' : Data-type of the Keras layer -/// 'layerWeight' : List of weight tensor names of Keras layers -/// } +/// +/// dict fLayer { 'layerType' : Type of the Keras layer +/// 'layerAttributes' : Attributes of the keras layer as returned by layer.get_config() +/// 'layerInput' : List of names of input tensors +/// 'layerOutput' : List of names of output tensors +/// 'layerDType' : Data-type of the Keras layer +/// 'layerWeight' : List of weight tensor names of Keras layers +/// } void AddKerasLayer(RModel& rmodel, PyObject* fLayer){ std::string fLayerType = PyStringAsString(PyDict_GetItemString(fLayer,"layerType")); @@ -161,7 +163,7 @@ void AddKerasLayer(RModel& rmodel, PyObject* fLayer){ } ////////////////////////////////////////////////////////////////////////////////// -/// \brief Prepares a ROperator_Gemm object +/// \brief Prepares a ROperator object for Keras Dense Layer /// /// \param[in] fLayer Python Keras layer as a Dictionary object /// \return Unique pointer to ROperator object @@ -178,8 +180,8 @@ std::unique_ptr MakeKerasDense(PyObject* fLayer){ std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); // Extracting names of weight tensors - // In the list of weight tensors from fLayer, we get the names of Kernel - // weights and the bias weights. + // The names of Kernel weights and bias weights are found in the list + // of weight tensors from fLayer. PyObject* fWeightNames = PyDict_GetItemString(fLayer,"layerWeight"); std::string fKernelName = PyStringAsString(PyList_GetItem(fWeightNames,0)); std::string fBiasName = PyStringAsString(PyList_GetItem(fWeightNames,1)); @@ -204,7 +206,7 @@ std::unique_ptr MakeKerasDense(PyObject* fLayer){ ////////////////////////////////////////////////////////////////////////////////// -/// \brief Prepares a ROperator object for activation functions +/// \brief Prepares a ROperator object for Keras activation layer /// /// \param[in] fLayer Python Keras layer as a Dictionary object /// \return Unique pointer to ROperator object @@ -224,13 +226,13 @@ std::unique_ptr MakeKerasActivation(PyObject* fLayer){ ////////////////////////////////////////////////////////////////////////////////// -/// \brief Prepares a ROperator_Relu object +/// \brief Prepares a ROperator object for Keras ReLU activation /// /// \param[in] fLayer Python Keras layer as a Dictionary object /// \return Unique pointer to ROperator object /// -/// For instantiating a ROperator_Relu object, we extract the names of -/// input & output tensors and the deta-type of the layer. +/// For instantiating a ROperator_Relu object, the names of +/// input & output tensors and the deta-type of the layer are extracted. std::unique_ptr MakeKerasReLU(PyObject* fLayer) { PyObject* fInputs=PyDict_GetItemString(fLayer,"layerInput"); @@ -253,7 +255,7 @@ std::unique_ptr MakeKerasReLU(PyObject* fLayer) ////////////////////////////////////////////////////////////////////////////////// -/// \brief Prepares a ROperator_Transpose object +/// \brief Prepares a ROperator object for Keras Permute layer /// /// \param[in] fLayer Python Keras layer as a Dictionary object /// \return Unique pointer to ROperator object @@ -318,10 +320,8 @@ std::vector GetDataFromTuple(PyObject* tupleObject){ ////////////////////////////////////////////////////////////////////////////////// -/// \brief Parser function for translating Keras .h5 model to RModel object -/// /// \param[in] filename file location of Keras .h5 -/// \return RModel Parsed RModel object +/// \return Parsed RModel object /// /// The `Parse()` function defined in `TMVA::Experimental::SOFIE::PyKeras` will /// parse a trained Keras .h5 model into a RModel Object. After loading the model diff --git a/tmva/pymva/src/RModelParser_PyTorch.cxx b/tmva/pymva/src/RModelParser_PyTorch.cxx index 7728de67e3b3a..68754ac4ac125 100644 --- a/tmva/pymva/src/RModelParser_PyTorch.cxx +++ b/tmva/pymva/src/RModelParser_PyTorch.cxx @@ -61,26 +61,28 @@ const PyTorchMethodMap mapPyTorchNode = ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares equivalent ROperator with respect to PyTorch ONNX node. /// -/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \param[in] fNode Python PyTorch ONNX Graph node /// \return unique pointer to ROperator object -///r +/// /// Function searches for the passed PyTorch ONNX Graph node in the map, and calls /// the specific preparatory function, subsequently returning the ROperator object. /// /// For developing new preparatory functions for supporting PyTorch ONNX Graph nodes /// in future, all one needs is to extract the required properties and attributes /// from the fNode dictionary which contains all the information about any PyTorch ONNX -// Graph Node and after any required transformations, these are passed for instantiating +// Graph node and after any required transformations, these are passed for instantiating /// the ROperator object. /// -/// The fNode dictionary which holds all the information about a PyTorch ONNX Graph's Node has +/// The fNode dictionary which holds all the information about a PyTorch ONNX Graph's node has /// following structure:- -/// dict fNode { 'nodeType' : Type of Operator Node -/// 'nodeAttributes' : Attributes of the operator Node -/// 'nodeInputs' : List of names of input tensors -/// 'nodeOutputs' : List of names of output tensors -/// 'nodeDType' : Data-type of the operator Node -/// } +/// +/// dict fNode { 'nodeType' : Type of node (operator) +/// 'nodeAttributes' : Attributes of the node +/// 'nodeInputs' : List of names of input tensors +/// 'nodeOutputs' : List of names of output tensors +/// 'nodeDType' : Data-type of the operator node +/// } +/// std::unique_ptr MakePyTorchNode(PyObject* fNode){ std::string fNodeType = PyStringAsString(PyDict_GetItemString(fNode,"nodeType")); auto findNode = mapPyTorchNode.find(fNodeType); @@ -94,7 +96,7 @@ std::unique_ptr MakePyTorchNode(PyObject* fNode){ ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares a ROperator_Gemm object /// -/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \param[in] fNode Python PyTorch ONNX Graph node /// \return Unique pointer to ROperator object /// /// For PyTorch's Linear layer having Gemm operation in its ONNX graph, @@ -138,7 +140,7 @@ std::unique_ptr MakePyTorchGemm(PyObject* fNode){ ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares a ROperator_Relu object /// -/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \param[in] fNode Python PyTorch ONNX Graph node /// \return Unique pointer to ROperator object /// /// For instantiating a ROperator_Relu object, the names of @@ -165,7 +167,7 @@ std::unique_ptr MakePyTorchRelu(PyObject* fNode){ ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares a ROperator_Transpose object /// -/// \param[in] fNode Python PyTorch ONNX Graph Node +/// \param[in] fNode Python PyTorch ONNX Graph node /// \return Unique pointer to ROperator object /// /// For Transpose Operator of PyTorch's ONNX Graph, the permute dimensions are found, @@ -198,12 +200,10 @@ std::unique_ptr MakePyTorchTranspose(PyObject* fNode){ ////////////////////////////////////////////////////////////////////////////////// -/// \brief Parser function for translating PyTorch .pt model to RModel object -/// /// \param[in] filename file location of PyTorch .pt model /// \param[in] inputShapes vector of input shape vectors /// \param[in] inputDTypes vector of ETensorType for data-types of Input tensors -/// \return RModel Parsed RModel object +/// \return Parsed RModel object /// /// The `Parse()` function defined in `TMVA::Experimental::SOFIE::PyTorch` will /// parse a trained PyTorch .pt model into a RModel Object. The parser uses @@ -428,12 +428,9 @@ RModel Parse(std::string filename, std::vector> inputShapes, } ////////////////////////////////////////////////////////////////////////////////// -/// \brief Overloaded Parser function for translating PyTorch .pt model to RModel -/// object -/// /// \param[in] filename file location of PyTorch .pt model /// \param[in] inputShapes vector of input shape vectors -/// \return RModel Parsed RModel object +/// \return Parsed RModel object /// /// Overloaded Parser function for translating PyTorch .pt model to RModel object. /// Function only requires the inputShapes vector as a parameter. Function From 0f5db5dd5fe2fbfbda4d31ec58c2a1a5b8638fda Mon Sep 17 00:00:00 2001 From: lmoneta Date: Fri, 3 Sep 2021 15:22:53 +0200 Subject: [PATCH 033/577] Veto TMVA SOFIE tutorial if PyTorch or Keras or Protobuf are not installed --- tutorials/CMakeLists.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index 436c230be42be..ff012c16a6d78 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -261,6 +261,19 @@ else() if(MSVC AND NOT win_broken_tests) list(APPEND tmva_veto tmva/tmva103_Application.C tmva/envelope/classification.C) endif() + #these depends on external packages + find_python_module(torch QUIET) + find_python_module(keras QUIET) + if (NOT PY_KERAS_FOUND) + list(APPEND tmva_veto tmva/TMVA_SOFIE_Keras.C) + endif() + if (NOT PY_TORCH_FOUND) + list(APPEND tmva_veto tmva/TMVA_SOFIE_PyTorch.C) + endif() + if (NOT tmva-sofie) + list(APPEND tmva_veto tmva/TMVA_SOFIE_ONNX.C) + endif() + endif() if (NOT ROOT_pythia6_FOUND) From e553d2eba5146f89988b1ab80e97f78a72e2b004 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 6 Sep 2021 10:10:01 +0200 Subject: [PATCH 034/577] Add GetZaxis for THStack (#8953) * Add GetZaxis for THStack * Issue a Warning if GetZaxis is use for 1D stack. * Use `nullptr` instead of 0. --- hist/hist/inc/THStack.h | 1 + hist/hist/src/THStack.cxx | 32 ++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/hist/hist/inc/THStack.h b/hist/hist/inc/THStack.h index d45c5cd8a4639..d51a6288074b1 100644 --- a/hist/hist/inc/THStack.h +++ b/hist/hist/inc/THStack.h @@ -73,6 +73,7 @@ class THStack : public TNamed { virtual Double_t GetMinimum(Option_t *option=""); TAxis *GetXaxis() const; TAxis *GetYaxis() const; + TAxis *GetZaxis() const; virtual void ls(Option_t *option="") const; virtual Long64_t Merge(TCollection* li, TFileMergeInfo *info); virtual void Modified(); diff --git a/hist/hist/src/THStack.cxx b/hist/hist/src/THStack.cxx index 6de9afaa0caa1..5acdf5d1e311c 100644 --- a/hist/hist/src/THStack.cxx +++ b/hist/hist/src/THStack.cxx @@ -234,7 +234,7 @@ THStack::THStack(TH1* hist, Option_t *axis /*="x"*/, } TAxis* haxis= useX ? hist->GetYaxis() : hist->GetXaxis(); if (!haxis) { - Warning("HStack","Histogram axis is NULL"); + Warning("THStack","Histogram axis is NULL"); return; } Int_t nbins = haxis->GetNbins(); @@ -270,7 +270,7 @@ THStack::THStack(TH1* hist, Option_t *axis /*="x"*/, else if (sAxis.First('z')==kNPOS) haxis=hist->GetZaxis(); if (!haxis) { - Warning("HStack","Histogram axis is NULL"); + Warning("THStack","Histogram axis is NULL"); return; } @@ -304,7 +304,7 @@ THStack::THStack(TH1* hist, Option_t *axis /*="x"*/, haxis2=hist->GetYaxis(); } if (!haxis1 || !haxis2) { - Warning("HStack","Histogram axis is NULL"); + Warning("THStack","Histogram axis is NULL"); return; } @@ -622,14 +622,14 @@ TObjArray *THStack::GetStack() TAxis *THStack::GetXaxis() const { - if (!gPad) return 0; + if (!gPad) return nullptr; TH1 *h = GetHistogram(); - if (!h) return 0; + if (!h) return nullptr; return h->GetXaxis(); } //////////////////////////////////////////////////////////////////////////////// -/// Get x axis of the histogram used to draw the stack. +/// Get y axis of the histogram used to draw the stack. /// /// IMPORTANT NOTE /// You must call Draw before calling this function. The returned histogram @@ -637,12 +637,28 @@ TAxis *THStack::GetXaxis() const TAxis *THStack::GetYaxis() const { - if (!gPad) return 0; + if (!gPad) return nullptr; TH1 *h = GetHistogram(); - if (!h) return 0; + if (!h) return nullptr; return h->GetYaxis(); } +//////////////////////////////////////////////////////////////////////////////// +/// Get z axis of the histogram used to draw the stack. +/// +/// IMPORTANT NOTE +/// You must call Draw before calling this function. The returned histogram +/// depends on the selected Draw options. + +TAxis *THStack::GetZaxis() const +{ + if (!gPad) return nullptr; + TH1 *h = GetHistogram(); + if (!h->IsA()->InheritsFrom(TH2::Class())) Warning("THStack","1D Histograms don't have a Z axis"); + if (!h) return nullptr; + return h->GetZaxis(); +} + //////////////////////////////////////////////////////////////////////////////// /// List histograms in the stack From 4081abc0dd61140bf36bf667649a1c60915ca1f4 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Thu, 19 Aug 2021 23:02:40 +0200 Subject: [PATCH 035/577] [core] Exit when calling root command with unrecognized option Options passed to the `root` command are parsed in `TApplication::GetOptions(Int_t *argc, char **argv)`. String options in `argv` are removed from the array of options after parsing. If any string remains in argv, it means it is not recognized by the `root` command. While these could still be useful for other `TApplication` instances, in the specific case of calling `root` which is based on `TRint` it simply means the remaining options are not valid. This commit introduces an early exit logic in the constructor of `TRint`. If there are any remaining unrecognized options as described above, they will be printed to `std::cerr` and then ROOT will terminate execution, similar to other linux commands: ``` $: root -z --nonexistingoption root: unrecognized option '-z' root: unrecognized option '--nonexistingoption' Try 'root --help' for more information. ``` --- core/rint/src/TRint.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/rint/src/TRint.cxx b/core/rint/src/TRint.cxx index b5b0e6a6e830a..83c258382ce2e 100644 --- a/core/rint/src/TRint.cxx +++ b/core/rint/src/TRint.cxx @@ -41,7 +41,7 @@ #include "TTabCom.h" #include #include - +#include #include "Getline.h" #include "strlcpy.h" #include "snprintf.h" @@ -146,6 +146,16 @@ TRint::TRint(const char *appClassName, Int_t *argc, char **argv, void *options, TApplication(appClassName, argc, argv, options, numOptions), fCaughtSignal(-1) { + + if (*argc > 1) { + // Early exit if there are remaining unrecognized options + for (auto n = 1; n < *argc; n++) { + std::cerr << "root: unrecognized option '" << argv[n] << "'\n"; + } + std::cerr << "Try 'root --help' for more information.\n"; + TApplication::Terminate(0); + } + fNcmd = 0; fDefaultPrompt = "root [%d] "; fInterrupt = kFALSE; From 0e0154b4960c92ae62df652b5b21f7d24a1fab1d Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Tue, 31 Aug 2021 11:17:08 +0200 Subject: [PATCH 036/577] [core] Add test for root unrecognized options --- core/rint/test/CMakeLists.txt | 2 ++ core/rint/test/TRintTests.cxx | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 core/rint/test/TRintTests.cxx diff --git a/core/rint/test/CMakeLists.txt b/core/rint/test/CMakeLists.txt index c72b38e164e23..4518dae395996 100644 --- a/core/rint/test/CMakeLists.txt +++ b/core/rint/test/CMakeLists.txt @@ -5,3 +5,5 @@ # For the list of contributors see $ROOTSYS/README/CREDITS. ROOT_ADD_GTEST(TTabComTests TTabComTests.cxx LIBRARIES Rint) +ROOT_ADD_GTEST(TRintTests TRintTests.cxx LIBRARIES Rint) + diff --git a/core/rint/test/TRintTests.cxx b/core/rint/test/TRintTests.cxx new file mode 100644 index 0000000000000..444e2d4b8a832 --- /dev/null +++ b/core/rint/test/TRintTests.cxx @@ -0,0 +1,43 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "TRint.h" + +using testing::internal::CaptureStderr; +using testing::internal::GetCapturedStderr; + +TEST(TRint, UnrecognizedOptions) +{ + // Create array of options. + // We need to create it as a dynamic array for the following reasons: + // - TRint constructor accepts a char** so we construct directly that type + // - TRint will modify this array, removing recognized options and leaving + // only unrecognized ones, so we can't create an std::vector and pass its + // data to TRint directly. + int argc{4}; + char **argv = new char *[argc]; + argv[0] = const_cast("-q"); + argv[1] = const_cast("-z"); + argv[2] = const_cast("--nonexistingoption"); + argv[3] = const_cast("-b"); + + CaptureStderr(); + // Unrecognized options will be printed to stderr + TRint app{"App", &argc, argv}; + std::string trinterr = GetCapturedStderr(); + + const std::string expected{"root: unrecognized option '-z'\n" + "root: unrecognized option '--nonexistingoption'\n" + "Try 'root --help' for more information.\n"}; + + EXPECT_EQ(trinterr, expected); + + // Properly delete the array + for (int i = 0; i < argc; i++) { + delete[] argv[i]; + } + delete[] argv; + argv = nullptr; +} From 3e1bc202429db49df1769e54dac02ce5b91c0c41 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Tue, 7 Sep 2021 15:53:35 +0200 Subject: [PATCH 037/577] [webgui] fix typo in web geometry viewer --- ui5/eve7/controller/GeomViewer.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui5/eve7/controller/GeomViewer.controller.js b/ui5/eve7/controller/GeomViewer.controller.js index 57f2650870259..66932960ad624 100644 --- a/ui5/eve7/controller/GeomViewer.controller.js +++ b/ui5/eve7/controller/GeomViewer.controller.js @@ -837,7 +837,7 @@ sap.ui.define(['sap/ui/core/Component', this.geo_painter.highlightMesh(null, 0x00ff00, null, undefined, this._hover_stack, true); }, - omBeforeRendering: function() { + onBeforeRendering: function() { this.renderingDone = false; }, From d7781d4b52131612f901ff82690a52cdf3eadac6 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Tue, 7 Sep 2021 15:55:41 +0200 Subject: [PATCH 038/577] [jsroot] dev 7/09/2021 with several fixes plus new draw options for lego axes scaling --- js/changes.md | 7 ++ js/scripts/JSRoot.base3d.js | 9 ++- js/scripts/JSRoot.core.js | 2 +- js/scripts/JSRoot.geobase.js | 110 +++++++++++++++---------------- js/scripts/JSRoot.geom.js | 116 +++++++++++++++++++++++---------- js/scripts/JSRoot.gpad.js | 13 ++++ js/scripts/JSRoot.hist.js | 37 +++++++++-- js/scripts/JSRoot.hist3d.js | 119 +++++++++++++++++++--------------- js/scripts/JSRoot.jq2d.js | 36 +++++----- js/scripts/JSRoot.more.js | 114 ++++++++++++++++++++------------ js/scripts/JSRoot.painter.js | 70 +++++++++++--------- js/scripts/JSRoot.v7gpad.js | 10 +++ js/scripts/JSRoot.v7hist.js | 8 +-- js/scripts/JSRoot.v7hist3d.js | 82 +++++++++++++---------- 14 files changed, 451 insertions(+), 282 deletions(-) diff --git a/js/changes.md b/js/changes.md index ff4f9731ff636..1c9d84c9d9108 100644 --- a/js/changes.md +++ b/js/changes.md @@ -1,5 +1,12 @@ # JSROOT changelog +## Changes in dev +1. Fix problem with curved TGraph drawings (#218) +2. Fix problem with logy/logz drawing in lego plots +3. Provide x3dscNNN and y3dscNNN draw option for histogram to resize x/y axis +4. Provide JSROOT.Painter.setDefaultDrawOpt to change default draw option + + ## Changes in 6.2.0 1. Support fully interactive second X/Y axis for histograms, graphs, functions and spline 2. Support X+, Y+, RX, RY draw options for TF1 diff --git a/js/scripts/JSRoot.base3d.js b/js/scripts/JSRoot.base3d.js index 79a548932392f..2a9f665d9605d 100644 --- a/js/scripts/JSRoot.base3d.js +++ b/js/scripts/JSRoot.base3d.js @@ -677,9 +677,12 @@ JSROOT.define(['d3', 'threejs_jsroot', 'painter'], (d3, THREE, jsrp) => { position = intersect.point[kind], item = { name: kind, ignore: false }; - // z changes from 0..2*size_z3d, others -size_xy3d..+size_xy3d - if (kind!=="z") position = (position + control.painter.size_xy3d)/2/control.painter.size_xy3d; - else position = position/2/control.painter.size_z3d; + // z changes from 0..2*size_z3d, others -size_x3d..+size_x3d + switch (kind) { + case "x": position = (position + control.painter.size_x3d)/2/control.painter.size_x3d; break; + case "y": position = (position + control.painter.size_y3d)/2/control.painter.size_y3d; break; + case "z": position = position/2/control.painter.size_z3d; break; + } control.painter.analyzeMouseWheelEvent(evnt, item, position, false); diff --git a/js/scripts/JSRoot.core.js b/js/scripts/JSRoot.core.js index d7df70c448d4c..a0b324e38fbe6 100644 --- a/js/scripts/JSRoot.core.js +++ b/js/scripts/JSRoot.core.js @@ -104,7 +104,7 @@ /** @summary JSROOT version date * @desc Release date in format day/month/year like "14/01/2021"*/ - JSROOT.version_date = "13/07/2021"; + JSROOT.version_date = "3/09/2021"; /** @summary JSROOT version id and date * @desc Produced by concatenation of {@link JSROOT.version_id} and {@link JSROOT.version_date} diff --git a/js/scripts/JSRoot.geobase.js b/js/scripts/JSRoot.geobase.js index 735408f486e78..bf068c3d86ff9 100644 --- a/js/scripts/JSRoot.geobase.js +++ b/js/scripts/JSRoot.geobase.js @@ -687,9 +687,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { let creator = faces_limit ? new PolygonsCreator : new GeometryCreator(numfaces); - // let creator = new GeometryCreator(numfaces); - - for (let n=0; n < indicies.length; n+=6) { + for (let n = 0; n < indicies.length; n += 6) { let i1 = indicies[n] * 3, i2 = indicies[n+1] * 3, i3 = indicies[n+2] * 3, @@ -698,7 +696,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { i6 = indicies[n+5] * 3, norm = null; - if ((i1>=0) && (i4>=0) && faces_limit) { + if ((i1 >= 0) && (i4 >= 0) && faces_limit) { // try to identify two faces with same normal - very useful if one can create face4 if (n===0) norm = new THREE.Vector3(0,0,1); else if (n===30) norm = new THREE.Vector3(0,0,-1); else { @@ -780,13 +778,13 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { _sint = new Float32Array(heightSegments+1), _cost = new Float32Array(heightSegments+1); - for (let n=0;n<=heightSegments;++n) { + for (let n = 0; n <= heightSegments; ++n) { let theta = (thetaStart + thetaLength/heightSegments*n)*Math.PI/180; _sint[n] = Math.sin(theta); _cost[n] = Math.cos(theta); } - for (let n=0;n<=widthSegments;++n) { + for (let n = 0; n <= widthSegments; ++n) { let phi = (phiStart + phiLength/widthSegments*n)*Math.PI/180; _sinp[n] = Math.sin(phi); _cosp[n] = Math.cos(phi); @@ -799,9 +797,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { let creator = faces_limit ? new PolygonsCreator : new GeometryCreator(numfaces); - // let creator = new GeometryCreator(numfaces); - - for (let side=0;side<2;++side) { + for (let side = 0; side < 2; ++side) { if ((side===1) && noInside) break; let r = radius[side], @@ -809,7 +805,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { d1 = 1 - side, d2 = 1 - d1; // use direct algorithm for the sphere - here normals and position can be calculated directly - for (let k=0;k { } // top/bottom - for (let side=0; side<=heightSegments; side+=heightSegments) + for (let side = 0; side <= heightSegments; side += heightSegments) if (Math.abs(_sint[side]) >= epsilon) { let ss = _sint[side], cc = _cost[side], d1 = (side===0) ? 0 : 1, d2 = 1 - d1; @@ -916,7 +912,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { _sin = new Float32Array(radiusSegments+1), _cos = new Float32Array(radiusSegments+1); - for (let seg=0; seg<=radiusSegments; ++seg) { + for (let seg = 0; seg <= radiusSegments; ++seg) { _cos[seg] = Math.cos(phi0+seg*dphi); _sin[seg] = Math.sin(phi0+seg*dphi); } @@ -925,9 +921,9 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { let calcZ; if (shape._typename == "TGeoCtub") - calcZ = function(x,y,z) { - let arr = (z<0) ? shape.fNlow : shape.fNhigh; - return ((z<0) ? -shape.fDz : shape.fDz) - (x*arr[0] + y*arr[1]) / arr[2]; + calcZ = (x,y,z) => { + let arr = (z < 0) ? shape.fNlow : shape.fNhigh; + return ((z < 0) ? -shape.fDz : shape.fDz) - (x*arr[0] + y*arr[1]) / arr[2]; }; // create outer/inner tube @@ -946,10 +942,12 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { if (side === 1) { nxy *= -1; nz *= -1; }; let reduce = 0; - if (R[0] <= 0) reduce = 2; else - if (R[1] <= 0) reduce = 1; + if (R[0] <= 0) + reduce = 2; + else if (R[1] <= 0) + reduce = 1; - for (let seg=0;seg { function createTorusBuffer( shape, faces_limit ) { let radius = shape.fR, radialSegments = Math.max(6, Math.round(360/geo.GradPerSegm)), - tubularSegments = Math.max(8, Math.round(shape.fDphi/geo.GradPerSegm)); - - let numfaces = (shape.fRmin > 0 ? 4 : 2) * radialSegments * (tubularSegments + (shape.fDphi !== 360 ? 1 : 0)); + tubularSegments = Math.max(8, Math.round(shape.fDphi/geo.GradPerSegm)), + numfaces = (shape.fRmin > 0 ? 4 : 2) * radialSegments * (tubularSegments + (shape.fDphi !== 360 ? 1 : 0)); if (faces_limit < 0) return numfaces; @@ -1088,12 +1085,12 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { _sint = new Float32Array(tubularSegments+1), _cost = new Float32Array(tubularSegments+1); - for (let n=0;n<=radialSegments;++n) { + for (let n = 0; n <= radialSegments; ++n) { _sinr[n] = Math.sin(n/radialSegments*2*Math.PI); _cosr[n] = Math.cos(n/radialSegments*2*Math.PI); } - for (let t=0;t<=tubularSegments;++t) { + for (let t = 0; t <= tubularSegments; ++t) { let angle = (shape.fPhi1 + shape.fDphi*t/tubularSegments)/180*Math.PI; _sint[t] = Math.sin(angle); _cost[t] = Math.cos(angle); @@ -1106,17 +1103,17 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { n1 = new THREE.Vector3(), n2 = new THREE.Vector3(), n3 = new THREE.Vector3(), n4 = new THREE.Vector3(), center1 = new THREE.Vector3(), center2 = new THREE.Vector3(); - for (let side=0;side<2;++side) { + for (let side = 0; side < 2; ++side) { if ((side > 0) && (shape.fRmin <= 0)) break; let tube = (side > 0) ? shape.fRmin : shape.fRmax, d1 = 1 - side, d2 = 1 - d1, ns = side>0 ? -1 : 1; - for (let t=0;t { let usage = new Int16Array(2*shape.fNz), numusedlayers = 0, hasrmin = false; - for (let layer=0; layer < shape.fNz; ++layer) + for (let layer = 0; layer < shape.fNz; ++layer) if (shape.fRmin[layer] > 0) hasrmin = true; // return very rough estimation, number of faces may be much less @@ -1466,10 +1463,12 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { nz = (shape.fA > 0) ? -1 : 1; let skip = 0; - if (lastr === 0) skip = 1; else - if (radius === 0) skip = 2; + if (lastr === 0) + skip = 1; + else if (radius === 0) + skip = 2; - for (let seg=0; seg { return createTubeBuffer(shape, faces_limit); let radiusSegments = Math.max(4, Math.round(360/geo.GradPerSegm)), - heightSegments = 30; - - let numfaces = radiusSegments * (heightSegments + 1) * ((shape.fRmin > 0) ? 4 : 2); + heightSegments = 30, + numfaces = radiusSegments * (heightSegments + 1) * ((shape.fRmin > 0) ? 4 : 2); if (faces_limit < 0) return numfaces; @@ -1524,7 +1522,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { let creator = faces_limit ? new PolygonsCreator : new GeometryCreator(numfaces); // in-out side - for (let side=0;side<2;++side) { + for (let side = 0; side < 2; ++side) { if ((side > 0) && (shape.fRmin <= 0)) break; let r0 = (side > 0) ? shape.fRmin : shape.fRmax, @@ -1549,20 +1547,19 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { } // add caps - for(let layer=0; layer<2; ++layer) { + for (let layer = 0; layer < 2; ++layer) { let z = (layer === 0) ? shape.fDz : -shape.fDz, r1 = Math.sqrt(shape.fRmax*shape.fRmax + shape.fToutsq*z*z), r2 = (shape.fRmin > 0) ? Math.sqrt(shape.fRmin*shape.fRmin + shape.fTinsq*z*z) : 0, skip = (shape.fRmin > 0) ? 0 : 1, d1 = 1 - layer, d2 = 1 - d1; - for (let seg=0; seg { return geom.tree.numPolygons(); if (geom.type == 'BufferGeometry') { - var attr = geom.getAttribute('position'); + let attr = geom.getAttribute('position'); return attr && attr.count ? Math.round(attr.count / 3) : 0; } @@ -1793,9 +1790,9 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { if (polygons!==null) { let box = new THREE.Box3(); - for (let n=0;n { return info; } - let sz = Math.max(shape.fDX, shape.fDY, shape.fDZ); - let useexp = (sz>1e7) || (sz<1e-7); - - function conv(v) { - if (v===undefined) return "???"; - if ((v==Math.round(v) && v<1e7)) return Math.round(v); - return useexp ? v.toExponential(4) : v.toPrecision(7); - } + let sz = Math.max(shape.fDX, shape.fDY, shape.fDZ), + useexp = (sz>1e7) || (sz<1e-7), + conv = (v) => { + if (v===undefined) return "???"; + if ((v==Math.round(v) && v<1e7)) return Math.round(v); + return useexp ? v.toExponential(4) : v.toPrecision(7); + }; info.push(shape._typename); @@ -2202,7 +2198,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { if (this.containsPoint(pnt)) cnt++; pnt.set(box.max.x, box.max.y, box.max.z); if (this.containsPoint(pnt)) cnt++; - return cnt>5; // only if 6 edges and more are seen, we think that box is fully visible + return cnt > 5; // only if 6 edges and more are seen, we think that box is fully visible } return frustum; @@ -2215,7 +2211,7 @@ JSROOT.define(['three', 'csg'], (THREE, ThreeBSP) => { if (!stack1 || !stack2) return 0; if (stack1 === stack2) return stack1.length; let len = Math.min(stack1.length, stack2.length); - for (let k=0;k { if (!stack1 || !stack2) return false; if (stack1 === stack2) return true; if (stack1.length !== stack2.length) return false; - for (let k=0;k { let sortarr = []; // first create nodes objects - for (let n=0; n { if (this.getNodeName(currid) !== names[0]) return null; - for (let n=1;n { shapes.sort((a,b) => b.vol*b.factor - a.vol*a.factor); // now set new shape ids according to the sorted order and delete temporary field - for (let n=0;n { } // take from shape (if match) - for (let n=0;n { } // now delete all unused geometries - for (let n=0;n=0; --n) { + for (let n = intersects.length - 1; n >= 0; --n) { let obj = intersects[n].object; @@ -1252,9 +1275,9 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, return intersects; } - /** @summary test camera position - * @desc function analyzes camera position and start redraw of geometry - if objects in view may be changed */ + /** @summary test camera position + * @desc function analyzes camera position and start redraw of geometry + * if objects in view may be changed */ TGeoPainter.prototype.testCameraPositionChange = function() { if (!this.ctrl.select_in_view || this._draw_all_nodes) return; @@ -1283,7 +1306,7 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } /** @summary Add handler which will be called when element is highlighted in geometry drawing - * @desc Handler should have highlightMesh function with same arguments as TGeoPainter */ + * @desc Handler should have highlightMesh function with same arguments as TGeoPainter */ TGeoPainter.prototype.addHighlightHandler = function(handler) { if (!handler || typeof handler.highlightMesh != 'function') return; if (!this._highlight_handlers) this._highlight_handlers = []; @@ -1538,11 +1561,11 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } /** @summary Main function in geometry creation loop - * @desc Return false when nothing todo - * return true if one could perform next action immediately - * return 1 when call after short timeout required - * return 2 when call must be done from processWorkerReply - * @returns {number} next operation kind, see desc */ + * @desc Return false when nothing todo + * return true if one could perform next action immediately + * return 1 when call after short timeout required + * return 2 when call must be done from processWorkerReply + * @returns {number} next operation kind, see desc */ TGeoPainter.prototype.nextDrawAction = function() { if (!this._clones || (this.drawing_stage == 0)) return false; @@ -1866,8 +1889,8 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } /** @summary used by geometry viewer to show more nodes - * @desc These nodes excluded from selection logic and always inserted into the model - * Shape already should be created and assigned to the node */ + * @desc These nodes excluded from selection logic and always inserted into the model + * Shape already should be created and assigned to the node */ TGeoPainter.prototype.appendMoreNodes = function(nodes, from_drawing) { if (this.drawing_stage && !from_drawing) { this._provided_more_nodes = nodes; @@ -1910,7 +1933,7 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } /** @summary Returns hierarchy of 3D objects used to produce projection. - * @desc Typically external master painter is used, but also internal data can be used */ + * @desc Typically external master painter is used, but also internal data can be used */ TGeoPainter.prototype.getProjectionSource = function() { if (this._clones_owner) return this._full_geom; @@ -1948,7 +1971,6 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, return box3; } - /** @summary Create geometry projection */ TGeoPainter.prototype.doProjection = function() { let toplevel = this.getProjectionSource(); @@ -2088,7 +2110,6 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, this.createBloom(); } - /** @summary Initial scene creation */ TGeoPainter.prototype.createScene = function(w, h) { // three.js 3D drawing @@ -2246,8 +2267,8 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } /** @summary Returns url parameters defining camera position. - * @desc It is zoom, roty, rotz parameters - * These parameters applied from default position which is shift along X axis */ + * @desc It is zoom, roty, rotz parameters + * These parameters applied from default position which is shift along X axis */ TGeoPainter.prototype.produceCameraUrl = function(prec) { if (!this._lookat || !this._camera0pos || !this._camera || !this.ctrl) return; @@ -2288,7 +2309,6 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, return 0; } - /** @summary Place camera to default position */ TGeoPainter.prototype.adjustCameraPosition = function(first_time, keep_zoom) { if (!this._toplevel) return; @@ -2406,6 +2426,7 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, this.adjustCameraPosition(false, preserve_zoom); } + /** @summary focus on item */ TGeoPainter.prototype.focusOnItem = function(itemname) { if (!itemname || !this._clones) return; @@ -2598,13 +2619,13 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, } }; - let tm1 = new Date().getTime(); - let numvis = this._clones.scanVisible(arg); - let tm2 = new Date().getTime(); + let tm1 = new Date().getTime(), + numvis = this._clones.scanVisible(arg), + tm2 = new Date().getTime(); res.push('Total visible nodes: ' + numvis, 'Total shapes: ' + nshapes); - for (let lvl=0;lvl0)) @@ -4666,6 +4714,8 @@ JSROOT.define(['d3', 'three', 'geobase', 'painter', 'base3d'], (d3, THREE, geo, return (newstate!==undefined) ? true : false; } + /** @summary provide icon name for the shape + * @private */ geo.getShapeIcon = function(shape) { switch (shape._typename) { case "TGeoArb8" : return "img_geoarb8"; diff --git a/js/scripts/JSRoot.gpad.js b/js/scripts/JSRoot.gpad.js index 23d4312619333..faec9da7d08de 100644 --- a/js/scripts/JSRoot.gpad.js +++ b/js/scripts/JSRoot.gpad.js @@ -196,6 +196,16 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { } } + /** @summary Return scale min */ + TAxisPainter.prototype.getScaleMin = function() { + return this.func ? this.func.domain()[0] : 0; + } + + /** @summary Return scale max */ + TAxisPainter.prototype.getScaleMax = function() { + return this.func ? this.func.domain()[1] : 0; + } + /** @summary Provide label for axis value */ TAxisPainter.prototype.formatLabels = function(d) { let indx = parseFloat(d), a = this.getObject(); @@ -1894,6 +1904,8 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { pad = pp ? pp.getRootPad(true) : null; if (!pad) return; + pp._interactively_changed = true; + let name = "fLog" + axis; // do not allow log scale for labels @@ -2370,6 +2382,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { delete this._pad_width; delete this._pad_height; delete this._doing_draw; + delete this._interactively_changed; this.painters = []; this.pad = null; diff --git a/js/scripts/JSRoot.hist.js b/js/scripts/JSRoot.hist.js index 139fd53ae7a57..9e8cfba04f1c4 100644 --- a/js/scripts/JSRoot.hist.js +++ b/js/scripts/JSRoot.hist.js @@ -1422,7 +1422,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { AutoColor: false, NoStat: false, ForceStat: false, PadStats: false, PadTitle: false, AutoZoom: false, HighRes: 0, Zero: true, Palette: 0, BaseLine: false, Optimize: JSROOT.settings.OptimizeDraw, - Mode3D: false, + Mode3D: false, x3dscale: 1, y3dscale: 1, Render3D: JSROOT.constants.Render3D.Default, FrontBox: true, BackBox: true, _pmc: false, _plc: false, _pfc: false, need_fillcol: false, @@ -1477,6 +1477,9 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (d.check("SYMLOGX", true)) this.SymlogX = d.partAsInt(0, 3); if (d.check("SYMLOGY", true)) this.SymlogY = d.partAsInt(0, 3); + if (d.check('X3DSC', true)) this.x3dscale = d.partAsInt(0, 100) / 100; + if (d.check('Y3DSC', true)) this.y3dscale = d.partAsInt(0, 100) / 100; + let lx = false, ly = false; if (d.check('LOGXY')) lx = ly = true; if (d.check('LOGX')) lx = true; @@ -1710,7 +1713,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { } /** @summary Tries to reconstruct string with hist draw options */ - THistDrawOptions.prototype.asString = function() { + THistDrawOptions.prototype.asString = function(is_main_hist, pad) { let res = ""; if (this.Mode3D) { @@ -1726,6 +1729,9 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (!this.FrontBox) res+="FB"; if (!this.BackBox) res+="BB"; + if (this.x3dscale !== 1) res += "_X3DSC" + Math.round(this.x3dscale * 100); + if (this.y3dscale !== 1) res += "_Y3DSC" + Math.round(this.y3dscale * 100); + } else { if (this.Scat) { res = "SCAT"; @@ -1755,8 +1761,26 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (this.TextAngle) res += this.TextAngle; res += this.TextKind; } + } + + if (is_main_hist && res) { + if (this.ForceStat || (this.StatEnabled === true)) + res += "_STAT"; + else if (this.NoStat || (this.StatEnabled === false)) + res += "_NOSTAT"; } + + if (is_main_hist && pad && res) { + if (pad.fLogx) res += "_LOGX"; + if (pad.fLogy) res += "_LOGY"; + if (pad.fLogz) res += "_LOGZ"; + if (pad.fGridx) res += "_GRIDX"; + if (pad.fGridy) res += "_GRIDY"; + if (pad.fTickx) res += "_TICKX"; + if (pad.fTicky) res += "_TICKY"; + } + return res; } @@ -2509,6 +2533,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (statpainter) { statpainter.Enabled = !statpainter.Enabled; + this.options.StatEnabled = statpainter.Enabled; // used only for interactive // when stat box is drawn, it always can be drawn individually while it // should be last for colz redrawPad is used statpainter.redraw(); @@ -3298,8 +3323,8 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (args.rounding) res.grx[i] = Math.round(res.grx[i]); if (args.use3d) { - if (res.grx[i] < -pmain.size_xy3d) { res.i1 = i; res.grx[i] = -pmain.size_xy3d; } - if (res.grx[i] > pmain.size_xy3d) { res.i2 = i; res.grx[i] = pmain.size_xy3d; } + if (res.grx[i] < -pmain.size_x3d) { res.i1 = i; res.grx[i] = -pmain.size_x3d; } + if (res.grx[i] > pmain.size_x3d) { res.i2 = i; res.grx[i] = pmain.size_x3d; } } } @@ -3315,8 +3340,8 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (args.rounding) res.gry[j] = Math.round(res.gry[j]); if (args.use3d) { - if (res.gry[j] < -pmain.size_xy3d) { res.j1 = j; res.gry[j] = -pmain.size_xy3d; } - if (res.gry[j] > pmain.size_xy3d) { res.j2 = j; res.gry[j] = pmain.size_xy3d; } + if (res.gry[j] < -pmain.size_y3d) { res.j1 = j; res.gry[j] = -pmain.size_y3d; } + if (res.gry[j] > pmain.size_y3d) { res.j2 = j; res.gry[j] = pmain.size_y3d; } } } diff --git a/js/scripts/JSRoot.hist3d.js b/js/scripts/JSRoot.hist3d.js index 2f57bd301ac7b..6070586469bf8 100644 --- a/js/scripts/JSRoot.hist3d.js +++ b/js/scripts/JSRoot.hist3d.js @@ -64,21 +64,29 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt * @private */ function setCameraPosition(fp, first_time) { let pad = fp.getPadPainter().getRootPad(true), - max3d = Math.max(0.75*fp.size_xy3d, fp.size_z3d); - - if (first_time) - fp.camera.position.set(-1.6*max3d, -3.5*max3d, 1.4*fp.size_z3d); + max3dx = Math.max(0.75*fp.size_x3d, fp.size_z3d), + max3dy = Math.max(0.75*fp.size_y3d, fp.size_z3d); + + if (first_time) { + if (max3dx === max3dy) + fp.camera.position.set(-1.6*max3dx, -3.5*max3dy, 1.4*fp.size_z3d); + else if (max3dx > max3dy) + fp.camera.position.set(-2*max3dx, -3.5*max3dy, 1.4*fp.size_z3d); + else + fp.camera.position.set(-3.5*max3dx, -2*max3dy, 1.4*fp.size_z3d); + } if (pad && (first_time || !fp.zoomChangedInteractive())) if (Number.isFinite(pad.fTheta) && Number.isFinite(pad.fPhi) && ((pad.fTheta !== fp.camera_Theta) || (pad.fPhi !== fp.camera_Phi))) { - max3d = 3*Math.max(fp.size_xy3d, fp.size_z3d); + max3dx = 3*Math.max(fp.size_x3d, fp.size_z3d); + max3dy = 3*Math.max(fp.size_y3d, fp.size_z3d); let phi = (-pad.fPhi-90)/180*Math.PI, theta = pad.fTheta/180*Math.PI; fp.camera_Phi = pad.fPhi; fp.camera_Theta = pad.fTheta; - fp.camera.position.set(max3d*Math.cos(phi)*Math.cos(theta), - max3d*Math.sin(phi)*Math.cos(theta), + fp.camera.position.set(max3dx*Math.cos(phi)*Math.cos(theta), + max3dy*Math.sin(phi)*Math.cos(theta), fp.size_z3d + max3d*Math.sin(theta)); first_time = true; @@ -89,9 +97,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt } /** @summary Create all necessary components for 3D drawings - * @returns {Promise} whem loading of some components required * @private */ - JSROOT.TFramePainter.prototype.create3DScene = function(render3d) { + JSROOT.TFramePainter.prototype.create3DScene = function(render3d, x3dscale, y3dscale) { if (render3d === -1) { @@ -111,7 +118,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt jsrp.cleanupRender3D(this.renderer); - delete this.size_xy3d; + delete this.size_x3d; + delete this.size_y3d; delete this.size_z3d; delete this.tooltip_mesh; delete this.scene; @@ -158,7 +166,9 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt let sz = this.getSizeFor3d(undefined, render3d); this.size_z3d = 100; - this.size_xy3d = (sz.height > 10) && (sz.width > 10) ? Math.round(sz.width/sz.height*this.size_z3d) : this.size_z3d; + this.size_x3d = this.size_y3d = (sz.height > 10) && (sz.width > 10) ? Math.round(sz.width/sz.height*this.size_z3d) : this.size_z3d; + if (x3dscale) this.size_x3d *= x3dscale; + if (y3dscale) this.size_y3d *= y3dscale; // three.js 3D drawing this.scene = new THREE.Scene(); @@ -176,7 +186,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt this.pointLight = new THREE.PointLight(0xffffff,1); this.camera.add(this.pointLight); - this.pointLight.position.set(this.size_xy3d/2, this.size_xy3d/2, this.size_z3d/2); + this.pointLight.position.set(this.size_x3d/2, this.size_y3d/2, this.size_z3d/2); this.lookat = new THREE.Vector3(0,0,0.8*this.size_z3d); this.camera.up = new THREE.Vector3(0,0,1); this.scene.add( this.camera ); @@ -211,10 +221,12 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt } if (tip && !tip.use_itself) { - let delta_xy = 1e-4*axis_painter.size_xy3d, delta_z = 1e-4*axis_painter.size_z3d; + let delta_x = 1e-4*axis_painter.size_x3d, + delta_y = 1e-4*axis_painter.size_y3d, + delta_z = 1e-4*axis_painter.size_z3d; if ((tip.x1 > tip.x2) || (tip.y1 > tip.y2) || (tip.z1 > tip.z2)) console.warn('check 3D hints coordinates'); - tip.x1 -= delta_xy; tip.x2 += delta_xy; - tip.y1 -= delta_xy; tip.y2 += delta_xy; + tip.x1 -= delta_x; tip.x2 += delta_x; + tip.y1 -= delta_y; tip.y2 += delta_y; tip.z1 -= delta_z; tip.z2 += delta_z; } @@ -339,10 +351,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt if ((this.scene_width === sz.width) && (this.scene_height === sz.height)) return false; - if ((sz.width<10) || (sz.height<10)) return false; - - // TODO: change xy/z ratio after canvas resize - // this.size_xy3d = Math.round(sz.width/sz.height*this.size_z3d); + if ((sz.width < 10) || (sz.height < 10)) return false; this.scene_width = sz.width; this.scene_height = sz.height; @@ -461,8 +470,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt JSROOT.TFramePainter.prototype.drawXYZ = function(toplevel, opts) { if (!opts) opts = {}; - let grminx = -this.size_xy3d, grmaxx = this.size_xy3d, - grminy = -this.size_xy3d, grmaxy = this.size_xy3d, + let grminx = -this.size_x3d, grmaxx = this.size_x3d, + grminy = -this.size_y3d, grmaxy = this.size_y3d, grminz = 0, grmaxz = 2*this.size_z3d, textsize = Math.round(this.size_z3d * 0.05), pad = this.getPadPainter().getRootPad(true), @@ -509,7 +518,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt this.y_handle = new JSROOT.TAxisPainter(null, this.yaxis); this.y_handle.configureAxis("yaxis", this.ymin, this.ymax, ymin, ymax, false, [grminy, grmaxy], - { log: pad && !opts.use_y_for_z ? pad.fLogx : 0 }); + { log: pad && !opts.use_y_for_z ? pad.fLogy : 0 }); this.y_handle.assignFrameMembers(this,"y"); this.z_handle = new JSROOT.TAxisPainter(null, this.zaxis); @@ -584,9 +593,11 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt // return axis coordinate from intersection point with axis geometry let pos = point[kind], min = this['scale_'+kind+'min'], max = this['scale_'+kind+'max']; - if (kind==="z") pos = pos/2/this.size_z3d; - else pos = (pos+this.size_xy3d)/2/this.size_xy3d; - + switch(kind) { + case "x": pos = (pos+this.size_x3d)/2/this.size_x3d; break; + case "y": pos = (pos+this.size_y3d)/2/this.size_y3d; break; + case "z": pos = pos/2/this.size_z3d; break; + } if (this["log"+kind]) { pos = Math.exp(Math.log(min) + pos*(Math.log(max)-Math.log(min))); } else { @@ -719,7 +730,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt xcont.add(mesh); }); - if (opts.zoom) xcont.add(createZoomMesh("x", this.size_xy3d)); + if (opts.zoom) xcont.add(createZoomMesh("x", this.size_x3d)); top.add(xcont); xcont = new THREE.Object3D(); @@ -743,7 +754,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt //xcont.add(new THREE.Mesh(ggg2, textMaterial)); xcont.xyid = 4; - if (opts.zoom) xcont.add(createZoomMesh("x", this.size_xy3d)); + if (opts.zoom) xcont.add(createZoomMesh("x", this.size_x3d)); top.add(xcont); lbls = []; text_scale = 1; maxtextheight = 0; ticks = []; @@ -818,7 +829,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt }); ycont.xyid = 3; - if (opts.zoom) ycont.add(createZoomMesh("y", this.size_xy3d)); + if (opts.zoom) ycont.add(createZoomMesh("y", this.size_y3d)); top.add(ycont); ycont = new THREE.Object3D(); @@ -840,7 +851,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt ycont.add(mesh); }); ycont.xyid = 1; - if (opts.zoom) ycont.add(createZoomMesh("y", this.size_xy3d)); + if (opts.zoom) ycont.add(createZoomMesh("y", this.size_y3d)); top.add(ycont); } @@ -1044,8 +1055,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt // reduced vertices rvertices = [ new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 1, 0), new THREE.Vector3(1, 1, 0), new THREE.Vector3(1, 0, 0) ], main = this.getFramePainter(), - axis_zmin = main.z_handle.gr.domain()[0], - axis_zmax = main.z_handle.gr.domain()[1], + axis_zmin = main.z_handle.getScaleMin(), + axis_zmax = main.z_handle.getScaleMax(), zmin, zmax, handle = this.prepareColorDraw({ rounding: false, use3d: true, extra: 1 }), i1 = handle.i1, i2 = handle.i2, j1 = handle.j1, j2 = handle.j2, @@ -1251,11 +1262,11 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt histo = p.getHisto(), tip = p.get3DToolTip( this.face_to_bins_index[intersect.faceIndex] ); - tip.x1 = Math.max(-main.size_xy3d, handle.grx[tip.ix-1] + handle.xbar1*(handle.grx[tip.ix]-handle.grx[tip.ix-1])); - tip.x2 = Math.min(main.size_xy3d, handle.grx[tip.ix-1] + handle.xbar2*(handle.grx[tip.ix]-handle.grx[tip.ix-1])); + tip.x1 = Math.max(-main.size_x3d, handle.grx[tip.ix-1] + handle.xbar1*(handle.grx[tip.ix]-handle.grx[tip.ix-1])); + tip.x2 = Math.min(main.size_x3d, handle.grx[tip.ix-1] + handle.xbar2*(handle.grx[tip.ix]-handle.grx[tip.ix-1])); - tip.y1 = Math.max(-main.size_xy3d, handle.gry[tip.iy-1] + handle.ybar1*(handle.gry[tip.iy] - handle.gry[tip.iy-1])); - tip.y2 = Math.min(main.size_xy3d, handle.gry[tip.iy-1] + handle.ybar2*(handle.gry[tip.iy] - handle.gry[tip.iy-1])); + tip.y1 = Math.max(-main.size_y3d, handle.gry[tip.iy-1] + handle.ybar1*(handle.gry[tip.iy] - handle.gry[tip.iy-1])); + tip.y2 = Math.min(main.size_y3d, handle.gry[tip.iy-1] + handle.ybar2*(handle.gry[tip.iy] - handle.gry[tip.iy-1])); let binz1 = this.baseline, binz2 = tip.value; if (histo['$baseh']) binz1 = histo['$baseh'].getBinContent(tip.ix, tip.iy); @@ -1416,7 +1427,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt this.zmin = box.min.z; this.zmax = box.max.z; // use min/max values directly as graphical coordinates - this.size_xy3d = this.size_z3d = 0; + this.size_x3d = this.size_y3d = this.size_z3d = 0; this.drawXYZ = JSROOT.TFramePainter.prototype.drawXYZ; // just reuse axis drawing from frame painter @@ -1455,7 +1466,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt this.scanContent(true); // may be required for axis drawings if (is_main) { - main.create3DScene(this.options.Render3D); + main.create3DScene(this.options.Render3D, this.options.x3dscale, this.options.y3dscale); main.setAxesRanges(histo.fXaxis, this.xmin, this.xmax, histo.fYaxis, this.ymin, this.ymax, histo.fZaxis, 0, 0); main.set3DOptions(this.options); main.drawXYZ(main.toplevel, { use_y_for_z: true, zmult: 1.1, zoom: JSROOT.settings.Zooming, ndim: 1 }); @@ -1508,7 +1519,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt this.deleteAttr(); if (is_main) { - main.create3DScene(this.options.Render3D); + main.create3DScene(this.options.Render3D, this.options.x3dscale, this.options.y3dscale); main.setAxesRanges(histo.fXaxis, this.xmin, this.xmax, histo.fYaxis, this.ymin, this.ymax, histo.fZaxis, this.zmin, this.zmax); main.set3DOptions(this.options); main.drawXYZ(main.toplevel, { zmult: zmult, zoom: JSROOT.settings.Zooming, ndim: 2 }); @@ -1570,8 +1581,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt main = this.getFramePainter(), handle = this.prepareColorDraw({rounding: false, use3d: true, extra: 1, middle: 0.5 }), i,j, x1, y1, x2, y2, z11, z12, z21, z22, - axis_zmin = main.z_handle.gr.domain()[0]; - // axis_zmax = main.z_handle.gr.domain()[1]; + axis_zmin = main.z_handle.getScaleMin(); + // axis_zmax = main.z_handle.getScaleMax(); // first adjust ranges @@ -1972,8 +1983,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt let main = this.getFramePainter(), histo = this.getHisto(), handle = this.prepareColorDraw({ rounding: false, use3d: true, extra: 1 }), - zmin = main.z_handle.gr.domain()[0], - zmax = main.z_handle.gr.domain()[1], + zmin = main.z_handle.getScaleMin(), + zmax = main.z_handle.getScaleMax(), i, j, bin, binz, binerr, x1, y1, x2, y2, z1, z2, nsegments = 0, lpos = null, binindx = null, lindx = 0; @@ -2055,10 +2066,10 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt main = p.getFramePainter(), tip = p.get3DToolTip(this.intersect_index[pos]); - tip.x1 = Math.max(-main.size_xy3d, main.grx(histo.fXaxis.GetBinLowEdge(tip.ix))); - tip.x2 = Math.min(main.size_xy3d, main.grx(histo.fXaxis.GetBinLowEdge(tip.ix+1))); - tip.y1 = Math.max(-main.size_xy3d, main.gry(histo.fYaxis.GetBinLowEdge(tip.iy))); - tip.y2 = Math.min(main.size_xy3d, main.gry(histo.fYaxis.GetBinLowEdge(tip.iy+1))); + tip.x1 = Math.max(-main.size_x3d, main.grx(histo.fXaxis.GetBinLowEdge(tip.ix))); + tip.x2 = Math.min(main.size_x3d, main.grx(histo.fXaxis.GetBinLowEdge(tip.ix+1))); + tip.y1 = Math.max(-main.size_y3d, main.gry(histo.fYaxis.GetBinLowEdge(tip.iy))); + tip.y2 = Math.min(main.size_y3d, main.gry(histo.fYaxis.GetBinLowEdge(tip.iy+1))); tip.z1 = main.grz(tip.value-tip.error < this.zmin ? this.zmin : tip.value-tip.error); tip.z2 = main.grz(tip.value+tip.error > this.zmax ? this.zmax : tip.value+tip.error); @@ -2076,8 +2087,8 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt JSROOT.TH2Painter.prototype.drawPolyLego = function() { let histo = this.getHisto(), pmain = this.getFramePainter(), - axis_zmin = pmain.z_handle.gr.domain()[0], - axis_zmax = pmain.z_handle.gr.domain()[1], + axis_zmin = pmain.z_handle.getScaleMin(), + axis_zmax = pmain.z_handle.getScaleMax(), colindx, bin, i, len = histo.fBins.arr.length, z0 = pmain.grz(axis_zmin), z1; @@ -2121,7 +2132,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt // run two loops - on the first try to compress data, on second - run as is (removing duplication) let lastx, lasty, currx, curry, - dist2 = pmain.size_xy3d*pmain.size_z3d, + dist2 = pmain.size_x3d*pmain.size_z3d, dist2limit = (ntry>0) ? 0 : dist2/1e6; pnts = []; faces = null; @@ -2488,7 +2499,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt JSROOT.seed(sumz); - let pnts = new jsrp.PointsCreator(numpixels, main.webgl, main.size_xy3d/200), + let pnts = new jsrp.PointsCreator(numpixels, main.webgl, main.size_x3d/200), bins = new Int32Array(numpixels), nbin = 0; for (i = i1; i < i2; ++i) { @@ -2871,7 +2882,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt } else { - main.create3DScene(this.options.Render3D); + main.create3DScene(this.options.Render3D, this.options.x3dscale, this.options.y3dscale); main.setAxesRanges(histo.fXaxis, this.xmin, this.xmax, histo.fYaxis, this.ymin, this.ymax, histo.fZaxis, this.zmin, this.zmax); main.set3DOptions(this.options); main.drawXYZ(main.toplevel, { zoom: JSROOT.settings.Zooming, ndim: 3 }); @@ -3188,10 +3199,10 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt let markeratt = new JSROOT.TAttMarkerHandler(graph), palette = null, levels = [fp.scale_zmin, fp.scale_zmax], - scale = fp.size_xy3d / 100 * markeratt.getFullSize(), + scale = fp.size_x3d / 100 * markeratt.getFullSize(), promises = []; - if (this.options.Circles) scale = 0.06*fp.size_xy3d; + if (this.options.Circles) scale = 0.06*fp.size_x3d; if (fp.usesvg) scale *= 0.3; @@ -3384,7 +3395,7 @@ JSROOT.define(['d3', 'painter', 'base3d', 'latex', 'hist'], (d3, jsrp, THREE, lt } let size = Math.floor(numselect/step), - pnts = new jsrp.PointsCreator(size, fp.webgl, fp.size_xy3d/100), + pnts = new jsrp.PointsCreator(size, fp.webgl, fp.size_x3d/100), index = new Int32Array(size), select = 0, icnt = 0; diff --git a/js/scripts/JSRoot.jq2d.js b/js/scripts/JSRoot.jq2d.js index bc3dc5f3a0522..7b21b8641e745 100644 --- a/js/scripts/JSRoot.jq2d.js +++ b/js/scripts/JSRoot.jq2d.js @@ -847,6 +847,9 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo if (dflt_expand || (handle && (handle.dflt === 'expand')) || this.isItemDisplayed(itemname)) can_draw = false; } + if (can_draw && !drawopt && handle && handle.dflt && (handle.dflt !== 'expand')) + drawopt = handle.dflt; + if (can_draw) return this.display(itemname, drawopt); @@ -854,7 +857,7 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo return this.expandItem(itemname, d3cont); // cannot draw, but can inspect ROOT objects - if ((typeof hitem._kind === "string") && (hitem._kind.indexOf("ROOT.")===0) && sett.inspect && (can_draw!==false)) + if ((typeof hitem._kind === "string") && (hitem._kind.indexOf("ROOT.")===0) && sett.inspect && (can_draw !== false)) return this.display(itemname, "inspect"); if (!hitem._childs || (hitem === this.h)) return; @@ -907,13 +910,13 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo /** @summary Handle context menu in the hieararchy * @private */ HierarchyPainter.prototype.tree_contextmenu = function(evnt, elem) { - // this is handling of context menu request for the normal objects browser evnt.preventDefault(); let itemname = d3.select(elem.parentNode.parentNode).attr('item'); let hitem = this.findItem(itemname); + if (!hitem) return; let onlineprop = this.getOnlineProp(itemname), @@ -930,7 +933,7 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo jsrp.createMenu(evnt, this).then(menu => { - if ((itemname == "") && !('_jsonfile' in hitem)) { + if (((itemname == "") || !hitem._parent) && !('_jsonfile' in hitem)) { let files = [], addr = "", cnt = 0, separ = () => (cnt++ > 0) ? "&" : "?"; @@ -942,27 +945,29 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo if (this.isMonitoring()) addr += separ() + "monitoring=" + this.getMonitoringInterval(); - if (files.length==1) + if (files.length == 1) addr += separ() + "file=" + files[0]; - else - if (files.length>1) - addr += separ() + "files=" + JSON.stringify(files); + else if (files.length > 1) + addr += separ() + "files=" + JSON.stringify(files); if (this.disp_kind) addr += separ() + "layout=" + this.disp_kind.replace(/ /g, ""); - let items = []; + let items = [], opts = []; if (this.disp) this.disp.forEachPainter(p => { - if (p.getItemName()) - items.push(p.getItemName()); + let item = p.getItemName(); + if (item) { + items.push(item); + opts.push(p.getDrawOpt() || p.getItemDrawOpt()); + } }); if (items.length == 1) { - addr += separ() + "item=" + items[0]; + addr += separ() + "item=" + items[0] + separ() + "opt=" + opts[0]; } else if (items.length > 1) { - addr += separ() + "items=" + JSON.stringify(items); + addr += separ() + "items=" + JSON.stringify(items) + separ() + "opt=" + JSON.stringify(opts); } menu.add("Direct link", () => window.open(addr)); @@ -975,7 +980,7 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo // allow to draw item even if draw function is not defined if (hitem._can_draw) { if (!sett.opts) sett.opts = [""]; - if (sett.opts.indexOf("")<0) sett.opts.unshift(""); + if (sett.opts.indexOf("") < 0) sett.opts.unshift(""); } if (sett.opts) @@ -992,9 +997,8 @@ JSROOT.define(['d3', 'jquery', 'painter', 'hierarchy', 'jquery-ui', 'jqueryui-mo filepath += "&item=" + name; } - menu.addDrawMenu("Draw in new tab", sett.opts, arg => { - window.open(JSROOT.source_dir + "index.htm?nobrowser&"+filepath +"&opt="+arg); - }); + menu.addDrawMenu("Draw in new tab", sett.opts, + arg => window.open(JSROOT.source_dir + "index.htm?nobrowser&"+filepath +"&opt="+arg)); } if (sett.expand && !('_childs' in hitem) && (hitem._more || !('_more' in hitem))) diff --git a/js/scripts/JSRoot.more.js b/js/scripts/JSRoot.more.js index 35eba8724cc54..55de63568b1ce 100644 --- a/js/scripts/JSRoot.more.js +++ b/js/scripts/JSRoot.more.js @@ -870,7 +870,8 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { if (d.check('Y+')) { res.Axis += "Y+"; res.second_y = has_main; } if (d.check('RX')) res.Axis += "RX"; if (d.check('RY')) res.Axis += "RY"; - if (d.check('C')) res.Curve = res.Line = 1; + if (d.check('CC')) res.Curve = 2; // draw all points without reduction + if (d.check('C')) res.Curve = 1; if (d.check('*')) res.Mark = 103; if (d.check('P0')) res.Mark = 104; if (d.check('P')) res.Mark = 1; @@ -896,7 +897,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { if ((res.Mark == 1) && (graph.fMarkerStyle==1)) res.Mark = 101; // if no drawing option is selected and if opt=='' nothing is done. - if (res.Line + res.Fill + res.Mark + res.Bar + res.EF + res.Rect + res.Errors == 0) { + if (res.Line + res.Fill + res.Curve + res.Mark + res.Bar + res.EF + res.Rect + res.Errors == 0) { if (d.empty()) res.Line = 1; } @@ -1138,6 +1139,28 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { return pmain.pad ? pmain : null; } + /** @summary append exclusion area to created path */ + TGraphPainter.prototype.appendExclusion = function(is_curve, path, drawbins, excl_width) { + let extrabins = []; + for (let n = drawbins.length-1; n >= 0; --n) { + let bin = drawbins[n]; + let dlen = Math.sqrt(bin.dgrx*bin.dgrx + bin.dgry*bin.dgry); + // shift point, using + bin.grx += excl_width*bin.dgry/dlen; + bin.gry -= excl_width*bin.dgrx/dlen; + extrabins.push(bin); + } + + let path2 = jsrp.buildSvgPath("L" + (is_curve ? "bezier" : "line"), extrabins); + + this.draw_g.append("svg:path") + .attr("d", path.path + path2.path + "Z") + .style("stroke", "none") + .call(this.fillatt.func) + .style('opacity', 0.75); + + } + /** @summary draw TGraph as SVG */ TGraphPainter.prototype.drawGraph = function() { @@ -1173,17 +1196,17 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { if (this.lineatt.excl_side != 0) { excl_width = this.lineatt.excl_width; - if (this.lineatt.width > 0) this.options.Line = 1; + if ((this.lineatt.width > 0) && !this.options.Line && !this.options.Curve) this.options.Line = 1; } let drawbins = null; if (this.options.EF) { - drawbins = this.optimizeBins((this.options.EF > 1) ? 5000 : 0); + drawbins = this.optimizeBins((this.options.EF > 1) ? 20000 : 0); // build lower part - for (let n=0;n { this.draw_kind = "lines"; } - if (this.options.Line == 1 || this.options.Fill == 1 || (excl_width!==0)) { + if (this.options.Line || this.options.Fill) { let close_symbol = ""; - if (graph._typename=="TCutG") this.options.Fill = 1; + if (graph._typename == "TCutG") this.options.Fill = 1; - if (this.options.Fill == 1) { + if (this.options.Fill) { close_symbol = "Z"; // always close area if we want to fill it excl_width = 0; } - if (!drawbins) drawbins = this.optimizeBins(this.options.Curve ? 5000 : 0); + if (!drawbins) drawbins = this.optimizeBins(0); for (let n = 0; n < drawbins.length; ++n) { let bin = drawbins[n]; @@ -1227,46 +1250,52 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { } let kind = "line"; // simple line - if (this.options.Curve === 1) kind = "bezier"; else - if (excl_width!==0) kind+="calc"; // we need to calculated deltas to build exclusion points + if (excl_width) kind += "calc"; // we need to calculated deltas to build exclusion points let path = jsrp.buildSvgPath(kind, drawbins); - if (excl_width!==0) { - let extrabins = []; - for (let n = drawbins.length-1; n >= 0; --n) { - let bin = drawbins[n]; - let dlen = Math.sqrt(bin.dgrx*bin.dgrx + bin.dgry*bin.dgry); - // shift point, using - bin.grx += excl_width*bin.dgry/dlen; - bin.gry -= excl_width*bin.dgrx/dlen; - extrabins.push(bin); - } + if (excl_width) + this.appendExclusion(false, path, drawbins, excl_width); - let path2 = jsrp.buildSvgPath("L" + ((this.options.Curve === 1) ? "bezier" : "line"), extrabins); + let elem = this.draw_g.append("svg:path") + .attr("d", path.path + close_symbol); + if (this.options.Line) + elem.call(this.lineatt.func); + else + elem.style('stroke', 'none'); - this.draw_g.append("svg:path") - .attr("d", path.path + path2.path + "Z") - .style("stroke", "none") - .call(this.fillatt.func) - .style('opacity', 0.75); - } + if (this.options.Fill) + elem.call(this.fillatt.func); + else + elem.style('fill', 'none'); - if (this.options.Line || this.options.Fill) { - let elem = this.draw_g.append("svg:path") - .attr("d", path.path + close_symbol); - if (this.options.Line) - elem.call(this.lineatt.func); - else - elem.style('stroke','none'); - - if (this.options.Fill) - elem.call(this.fillatt.func); - else - elem.style('fill','none'); + this.draw_kind = "lines"; + } + + if (this.options.Curve) { + let curvebins = drawbins; + if ((this.draw_kind != "lines") || !curvebins || ((this.options.Curve == 1) && (curvebins.length > 20000))) { + curvebins = this.optimizeBins((this.options.Curve == 1) ? 20000 : 0); + for (let n = 0; n < curvebins.length; ++n) { + let bin = curvebins[n]; + bin.grx = funcs.grx(bin.x); + bin.gry = funcs.gry(bin.y); + } } - this.draw_kind = "lines"; + let kind = "bezier"; + if (excl_width) kind += "calc"; // we need to calculated deltas to build exclusion points + + let path = jsrp.buildSvgPath(kind, curvebins); + + if (excl_width) + this.appendExclusion(true, path, curvebins, excl_width); + + this.draw_g.append("svg:path") + .attr("d", path.path) + .call(this.lineatt.func) + .style('fill','none'); + this.draw_kind = "lines"; // handled same way as lines } let nodes = null; @@ -1475,6 +1504,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { if (this.draw_kind != "nodes") return null; let pmain = this.getFramePainter(), + pthis = this, height = pmain.getFrameHeight(), esz = this.error_size, isbar1 = (this.options.Bar===1), @@ -1499,7 +1529,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { rect = { x1: -d.width/2, x2: d.width/2, y1: 0, y2: height - d.gry1 }; if (isbar1) { - let funcs = pmain.getGrFuncs(this.options.second_x, this.options.second_y), + let funcs = pmain.getGrFuncs(pthis.options.second_x, pthis.options.second_y), yy0 = funcs.gry(0); rect.y1 = (d.gry1 > yy0) ? yy0-d.gry1 : 0; rect.y2 = (d.gry1 > yy0) ? 0 : yy0-d.gry1; diff --git a/js/scripts/JSRoot.painter.js b/js/scripts/JSRoot.painter.js index aa0a0f08b7c5c..530a015b87961 100644 --- a/js/scripts/JSRoot.painter.js +++ b/js/scripts/JSRoot.painter.js @@ -1269,10 +1269,8 @@ JSROOT.define(['d3'], (d3) => { if (ndig === undefined) ndig = smooth ? 2 : 0; if (height === undefined) height = 0; - function jsroot_d3_svg_lineSlope(p0, p1) { - return (p1.gry - p0.gry) / (p1.grx - p0.grx); - } - function jsroot_d3_svg_lineFiniteDifferences(points) { + let jsroot_d3_svg_lineSlope = (p0, p1) => (p1.gry - p0.gry) / (p1.grx - p0.grx); + let jsroot_d3_svg_lineFiniteDifferences = points => { let i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = jsroot_d3_svg_lineSlope(p0, p1); while (++i < j) { p0 = p1; p1 = points[i + 1]; @@ -1280,8 +1278,8 @@ JSROOT.define(['d3'], (d3) => { } m[i] = d; return m; - } - function jsroot_d3_svg_lineMonotoneTangents(points) { + }; + let jsroot_d3_svg_lineMonotoneTangents = points => { let d, a, b, s, m = jsroot_d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1; while (++i < j) { d = jsroot_d3_svg_lineSlope(points[i], points[i + 1]); @@ -1304,12 +1302,12 @@ JSROOT.define(['d3'], (d3) => { points[i].dgrx = s || 0; points[i].dgry = m[i] * s || 0; } - } + }; let res = { path: "", close: "" }, bin = bins[0], maxy = Math.max(bin.gry, height + 5), currx = Math.round(bin.grx), curry = Math.round(bin.gry), dx, dy, npnts = bins.length; - function conv(val) { + let conv = val => { let vvv = Math.round(val); if ((ndig == 0) || (vvv === val)) return vvv.toString(); let str = val.toFixed(ndig); @@ -1319,7 +1317,7 @@ JSROOT.define(['d3'], (d3) => { str = str.substr(0, str.length - 1); if (str == "-0") str = "0"; return str; - } + }; res.path = ((kind[0] == "L") ? "L" : "M") + conv(bin.grx) + "," + conv(bin.gry); @@ -1329,12 +1327,12 @@ JSROOT.define(['d3'], (d3) => { if (smooth) { // build smoothed curve - res.path += "c" + conv(bin.dgrx) + "," + conv(bin.dgry) + ","; + res.path += "C" + conv(bin.grx+bin.dgrx) + "," + conv(bin.gry+bin.dgry) + ","; for (let n = 1; n < npnts; ++n) { let prev = bin; bin = bins[n]; - if (n > 1) res.path += "s"; - res.path += conv(bin.grx - bin.dgrx - prev.grx) + "," + conv(bin.gry - bin.dgry - prev.gry) + "," + conv(bin.grx - prev.grx) + "," + conv(bin.gry - prev.gry); + if (n > 1) res.path += "S"; + res.path += conv(bin.grx - bin.dgrx) + "," + conv(bin.gry - bin.dgry) + "," + conv(bin.grx) + "," + conv(bin.gry); maxy = Math.max(maxy, prev.gry); } } else if (npnts < 10000) { @@ -1343,9 +1341,12 @@ JSROOT.define(['d3'], (d3) => { bin = bins[n]; dx = Math.round(bin.grx) - currx; dy = Math.round(bin.gry) - curry; - if (dx && dy) res.path += "l" + dx + "," + dy; - else if (!dx && dy) res.path += "v" + dy; - else if (dx && !dy) res.path += "h" + dx; + if (dx && dy) + res.path += "l" + dx + "," + dy; + else if (!dx && dy) + res.path += "v" + dy; + else if (dx && !dy) + res.path += "h" + dx; currx += dx; curry += dy; maxy = Math.max(maxy, curry); } @@ -1373,8 +1374,10 @@ JSROOT.define(['d3'], (d3) => { curry = prevy; } dy = lasty - curry; - if (dy) res.path += "l" + dx + "," + dy; - else res.path += "h" + dx; + if (dy) + res.path += "l" + dx + "," + dy; + else + res.path += "h" + dx; currx = lastx; curry = lasty; prevy = cminy = cmaxy = lasty; } @@ -1384,12 +1387,10 @@ JSROOT.define(['d3'], (d3) => { res.path += "v" + (cmaxy - cminy); if (cmaxy != prevy) res.path += "v" + (prevy - cmaxy); } - } if (height > 0) - res.close = "L" + conv(bin.grx) + "," + conv(maxy) + - "h" + conv(bins[0].grx - bin.grx) + "Z"; + res.close = "L" + conv(bin.grx) + "," + conv(maxy) + "h" + conv(bins[0].grx - bin.grx) + "Z"; return res; } @@ -1849,17 +1850,19 @@ JSROOT.define(['d3'], (d3) => { * @desc if options are not modified - returns original string which was specified for object draw */ ObjectPainter.prototype.getDrawOpt = function() { if (!this.options) return ""; - let changed = false; - if (!this.options_store) { - changed = true; - } else { - for (let k in this.options) - if (this.options[k] !== this.options_store[k]) - changed = true; - } - if (changed && typeof this.options.asString == "function") - return this.options.asString(); + if (typeof this.options.asString == "function") { + let changed = false, pp = this.getPadPainter(); + if (!this.options_store || (pp && pp._interactively_changed)) { + changed = true; + } else { + for (let k in this.options) + if (this.options[k] !== this.options_store[k]) + changed = true; + } + if (changed) + return this.options.asString(this.isMainPainter(), pp ? pp.getRootPad() : null); + } return this.options.original || ""; // nothing better, return original draw option } @@ -3704,6 +3707,13 @@ JSROOT.define(['d3'], (d3) => { return getDrawSettings("ROOT." + classname).opts !== null; } + /** @summary Set default draw option for provided class */ + jsrp.setDefaultDrawOpt = function(classname, opt) { + let handle = getDrawHandle("ROOT." + classname, 0); + if (handle) + handle.dflt = opt; + } + /** @summary Draw object in specified HTML element with given draw options. * @param {string|object} dom - id of div element to draw or directly DOMElement * @param {object} obj - object to draw, object type should be registered before in JSROOT diff --git a/js/scripts/JSRoot.v7gpad.js b/js/scripts/JSRoot.v7gpad.js index e5a2da6446af2..ddb8274ba1007 100644 --- a/js/scripts/JSRoot.v7gpad.js +++ b/js/scripts/JSRoot.v7gpad.js @@ -513,6 +513,16 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { } } + /** @summary Return scale min */ + RAxisPainter.prototype.getScaleMin = function() { + return this.func ? this.func.domain()[0] : 0; + } + + /** @summary Return scale max */ + RAxisPainter.prototype.getScaleMax = function() { + return this.func ? this.func.domain()[1] : 0; + } + /** @summary Provide label for axis value */ RAxisPainter.prototype.formatLabels = function(d) { let indx = Math.round(d); diff --git a/js/scripts/JSRoot.v7hist.js b/js/scripts/JSRoot.v7hist.js index 408ce685bbec1..2dc9eb4e678f4 100644 --- a/js/scripts/JSRoot.v7hist.js +++ b/js/scripts/JSRoot.v7hist.js @@ -848,8 +848,8 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { if (args.rounding) res.grx[i] = Math.round(res.grx[i]); if (args.use3d) { - if (res.grx[i] < -pmain.size_xy3d) { res.i1 = i; res.grx[i] = -pmain.size_xy3d; } - if (res.grx[i] > pmain.size_xy3d) { res.i2 = i; res.grx[i] = pmain.size_xy3d; } + if (res.grx[i] < -pmain.size_x3d) { res.i1 = i; res.grx[i] = -pmain.size_x3d; } + if (res.grx[i] > pmain.size_x3d) { res.i2 = i; res.grx[i] = pmain.size_x3d; } } } @@ -874,8 +874,8 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { if (args.rounding) res.gry[j] = Math.round(res.gry[j]); if (args.use3d) { - if (res.gry[j] < -pmain.size_xy3d) { res.j1 = j; res.gry[j] = -pmain.size_xy3d; } - if (res.gry[j] > pmain.size_xy3d) { res.j2 = j; res.gry[j] = pmain.size_xy3d; } + if (res.gry[j] < -pmain.size_y3d) { res.j1 = j; res.gry[j] = -pmain.size_y3d; } + if (res.gry[j] > pmain.size_y3d) { res.j2 = j; res.gry[j] = pmain.size_y3d; } } } diff --git a/js/scripts/JSRoot.v7hist3d.js b/js/scripts/JSRoot.v7hist3d.js index abcd2493706a9..e8aa238ac3ef8 100644 --- a/js/scripts/JSRoot.v7hist3d.js +++ b/js/scripts/JSRoot.v7hist3d.js @@ -63,9 +63,16 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, /** @summary Set default camera position * @private */ function setCameraPosition(fp) { - let max3d = Math.max(0.75*fp.size_xy3d, fp.size_z3d); + let max3dx = Math.max(0.75*fp.size_x3d, fp.size_z3d), + max3dy = Math.max(0.75*fp.size_y3d, fp.size_z3d); + + if (max3dx === max3dy) + fp.camera.position.set(-1.6*max3dx, -3.5*max3dy, 1.4*fp.size_z3d); + else if (max3dx > max3dy) + fp.camera.position.set(-2*max3dx, -3.5*max3dy, 1.4*fp.size_z3d); + else + fp.camera.position.set(-3.5*max3dx, -2*max3dy, 1.4*fp.size_z3d); - fp.camera.position.set(-1.6*max3d, -3.5*max3d, 1.4*fp.size_z3d); fp.camera.lookAt(fp.lookat); } @@ -91,7 +98,8 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, jsrp.cleanupRender3D(this.renderer); - delete this.size_xy3d; + delete this.size_x3d; + delete this.size_y3d; delete this.size_z3d; delete this.tooltip_mesh; delete this.scene; @@ -134,7 +142,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, let sz = this.getSizeFor3d(undefined, render3d); this.size_z3d = 100; - this.size_xy3d = (sz.height > 10) && (sz.width > 10) ? Math.round(sz.width/sz.height*this.size_z3d) : this.size_z3d; + this.size_x3d = this.size_y3d = (sz.height > 10) && (sz.width > 10) ? Math.round(sz.width/sz.height*this.size_z3d) : this.size_z3d; // three.js 3D drawing this.scene = new THREE.Scene(); @@ -152,7 +160,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, this.pointLight = new THREE.PointLight(0xffffff,1); this.camera.add(this.pointLight); - this.pointLight.position.set(this.size_xy3d/2, this.size_xy3d/2, this.size_z3d/2); + this.pointLight.position.set(this.size_x3d/2, this.size_y3d/2, this.size_z3d/2); this.lookat = new THREE.Vector3(0,0,0.8*this.size_z3d); this.camera.up = new THREE.Vector3(0,0,1); this.scene.add( this.camera ); @@ -186,10 +194,12 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, } if (tip && !tip.use_itself) { - let delta_xy = 1e-4*axis_painter.size_xy3d, delta_z = 1e-4*axis_painter.size_z3d; + let delta_x = 1e-4*axis_painter.size_x3d, + delta_y = 1e-4*axis_painter.size_y3d, + delta_z = 1e-4*axis_painter.size_z3d; if ((tip.x1 > tip.x2) || (tip.y1 > tip.y2) || (tip.z1 > tip.z2)) console.warn('check 3D hints coordinates'); - tip.x1 -= delta_xy; tip.x2 += delta_xy; - tip.y1 -= delta_xy; tip.y2 += delta_xy; + tip.x1 -= delta_x; tip.x2 += delta_x; + tip.y1 -= delta_y; tip.y2 += delta_y; tip.z1 -= delta_z; tip.z2 += delta_z; } @@ -311,9 +321,6 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, if ((sz.width<10) || (sz.height<10)) return false; - // TODO: change xy/z ratio after canvas resize - // this.size_xy3d = Math.round(sz.width/sz.height*this.size_z3d); - this.scene_width = sz.width; this.scene_height = sz.height; @@ -431,8 +438,8 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, JSROOT.v7.RFramePainter.prototype.drawXYZ = function(toplevel, opts) { if (!opts) opts = {}; - let grminx = -this.size_xy3d, grmaxx = this.size_xy3d, - grminy = -this.size_xy3d, grmaxy = this.size_xy3d, + let grminx = -this.size_x3d, grmaxx = this.size_x3d, + grminy = -this.size_y3d, grmaxy = this.size_y3d, grminz = 0, grmaxz = 2*this.size_z3d, textsize = Math.round(this.size_z3d * 0.05), xmin = this.xmin, xmax = this.xmax, @@ -553,8 +560,11 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, // return axis coordinate from intersection point with axis geometry let pos = point[kind], min = this['scale_'+kind+'min'], max = this['scale_'+kind+'max']; - if (kind==="z") pos = pos/2/this.size_z3d; - else pos = (pos+this.size_xy3d)/2/this.size_xy3d; + switch(kind) { + case "x": pos = (pos+this.size_x3d)/2/this.size_x3d; break; + case "y": pos = (pos+this.size_y3d)/2/this.size_y3d; break; + case "z": pos = pos/2/this.size_z3d; break; + } if (this["log"+kind]) { pos = Math.exp(Math.log(min) + pos*(Math.log(max)-Math.log(min))); @@ -687,7 +697,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, xcont.add(mesh); }); - if (opts.zoom) xcont.add(createZoomMesh("x", this.size_xy3d)); + if (opts.zoom) xcont.add(createZoomMesh("x", this.size_x3d)); top.add(xcont); xcont = new THREE.Object3D(); @@ -711,7 +721,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, //xcont.add(new THREE.Mesh(ggg2, textMaterial)); xcont.xyid = 4; - if (opts.zoom) xcont.add(createZoomMesh("x", this.size_xy3d)); + if (opts.zoom) xcont.add(createZoomMesh("x", this.size_x3d)); top.add(xcont); lbls = []; text_scale = 1; maxtextheight = 0; ticks = []; @@ -786,7 +796,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, }); ycont.xyid = 3; - if (opts.zoom) ycont.add(createZoomMesh("y", this.size_xy3d)); + if (opts.zoom) ycont.add(createZoomMesh("y", this.size_y3d)); top.add(ycont); ycont = new THREE.Object3D(); @@ -808,7 +818,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, ycont.add(mesh); }); ycont.xyid = 1; - if (opts.zoom) ycont.add(createZoomMesh("y", this.size_xy3d)); + if (opts.zoom) ycont.add(createZoomMesh("y", this.size_y3d)); top.add(ycont); } @@ -1001,8 +1011,8 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, // reduced vertices rvertices = [ new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 1, 0), new THREE.Vector3(1, 1, 0), new THREE.Vector3(1, 0, 0) ], main = this.getFramePainter(), - axis_zmin = main.z_handle.gr.domain()[0], - axis_zmax = main.z_handle.gr.domain()[1], + axis_zmin = main.z_handle.getScaleMin(), + axis_zmax = main.z_handle.getScaleMax(), zmin, zmax, handle = this.prepareDraw({ rounding: false, use3d: true, extra: 1 }), i1 = handle.i1, i2 = handle.i2, j1 = handle.j1, j2 = handle.j2, di = handle.stepi, dj = handle.stepj, @@ -1208,11 +1218,11 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, i1 = tip.ix - 1, i2 = i1 + handle.stepi, j1 = tip.iy - 1, j2 = j1 + handle.stepj; - tip.x1 = Math.max(-main.size_xy3d, handle.grx[i1] + handle.xbar1*(handle.grx[i2]-handle.grx[i1])); - tip.x2 = Math.min(main.size_xy3d, handle.grx[i1] + handle.xbar2*(handle.grx[i2]-handle.grx[i1])); + tip.x1 = Math.max(-main.size_x3d, handle.grx[i1] + handle.xbar1*(handle.grx[i2]-handle.grx[i1])); + tip.x2 = Math.min(main.size_x3d, handle.grx[i1] + handle.xbar2*(handle.grx[i2]-handle.grx[i1])); - tip.y1 = Math.max(-main.size_xy3d, handle.gry[j1] + handle.ybar1*(handle.gry[j2] - handle.gry[j1])); - tip.y2 = Math.min(main.size_xy3d, handle.gry[j1] + handle.ybar2*(handle.gry[j2] - handle.gry[j1])); + tip.y1 = Math.max(-main.size_y3d, handle.gry[j1] + handle.ybar1*(handle.gry[j2] - handle.gry[j1])); + tip.y2 = Math.min(main.size_y3d, handle.gry[j1] + handle.ybar2*(handle.gry[j2] - handle.gry[j1])); let binz1 = this.baseline, binz2 = tip.value; if (histo['$baseh']) binz1 = histo['$baseh'].getBinContent(i1+1, j1+1); @@ -1524,7 +1534,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, i, j, x1, y1, x2, y2, z11, z12, z21, z22, di = handle.stepi, dj = handle.stepj, numstepi = handle.i2 - handle.i1, numstepj = handle.j2 - handle.j1, - axis_zmin = main.z_handle.gr.domain()[0]; + axis_zmin = main.z_handle.getScaleMin(); if (di > 1) { numstepi = Math.round(numstepi/di); @@ -1945,8 +1955,8 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, let main = this.getFramePainter(), histo = this.getHisto(), handle = this.prepareDraw({ rounding: false, use3d: true, extra: 1 }), - zmin = main.z_handle.gr.domain()[0], - zmax = main.z_handle.gr.domain()[1], + zmin = main.z_handle.getScaleMin(), + zmax = main.z_handle.getScaleMax(), i, j, binz, binerr, x1, y1, x2, y2, z1, z2, nsegments = 0, lpos = null, binindx = null, lindx = 0, di = handle.stepi, dj = handle.stepj; @@ -2032,10 +2042,10 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, j1 = tip.iy - 1, j2 = j1 + handle.stepj; - tip.x1 = Math.max(-main.size_xy3d, handle.grx[i1]); - tip.x2 = Math.min(main.size_xy3d, handle.grx[i2]); - tip.y1 = Math.max(-main.size_xy3d, handle.gry[j1]); - tip.y2 = Math.min(main.size_xy3d, handle.gry[j2]); + tip.x1 = Math.max(-main.size_x3d, handle.grx[i1]); + tip.x2 = Math.min(main.size_x3d, handle.grx[i2]); + tip.y1 = Math.max(-main.size_y3d, handle.gry[j1]); + tip.y2 = Math.min(main.size_y3d, handle.gry[j2]); tip.z1 = main.grz(tip.value-tip.error < this.zmin ? this.zmin : tip.value-tip.error); tip.z2 = main.grz(tip.value+tip.error > this.zmax ? this.zmax : tip.value+tip.error); @@ -2054,8 +2064,8 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, let histo = this.getHisto(), palette = this.getHistPalette(), pmain = this.getFramePainter(), - axis_zmin = pmain.z_handle.gr.domain()[0], - axis_zmax = pmain.z_handle.gr.domain()[1], + axis_zmin = pmain.z_handle.getScaleMin(), + axis_zmax = pmain.z_handle.getScaleMax(), colindx, bin, i, len = histo.fBins.arr.length, z0 = pmain.grz(axis_zmin), z1; @@ -2097,7 +2107,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, // run two loops - on the first try to compress data, on second - run as is (removing duplication) let lastx, lasty, currx, curry, - dist2 = pmain.size_xy3d*pmain.size_z3d, + dist2 = pmain.size_x3d*pmain.size_z3d, dist2limit = (ntry>0) ? 0 : dist2/1e6; pnts = []; faces = null; @@ -2473,7 +2483,7 @@ JSROOT.define(['d3', 'base3d', 'painter', 'latex', 'v7hist'], (d3, THREE, jsrp, JSROOT.seed(sumz); - let pnts = new jsrp.PointsCreator(numpixels, main.webgl, main.size_xy3d/200), + let pnts = new jsrp.PointsCreator(numpixels, main.webgl, main.size_x3d/200), bins = new Int32Array(numpixels), nbin = 0, xaxis = this.getAxis("x"), yaxis = this.getAxis("y"), zaxis = this.getAxis("z"); From 55684e6dde6a8d0688a01fea36535c243026f55c Mon Sep 17 00:00:00 2001 From: Andrei Gheata Date: Wed, 8 Sep 2021 07:48:07 +0200 Subject: [PATCH 039/577] Demoting change of TGeo units from Warning to Info. (#8967) --- geom/geom/src/TGeoManager.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geom/geom/src/TGeoManager.cxx b/geom/geom/src/TGeoManager.cxx index a1f96e5092ae4..68b0f26f29901 100644 --- a/geom/geom/src/TGeoManager.cxx +++ b/geom/geom/src/TGeoManager.cxx @@ -4030,10 +4030,10 @@ void TGeoManager::SetDefaultUnits(EDefaultUnits new_value) "Alternatively unlock the default units at own risk."); } else if ( new_value == kG4Units ) { - ::Warning("TGeoManager","Changing system of units to Geant4 units (mm, ns, MeV)."); + ::Info("TGeoManager","Changing system of units to Geant4 units (mm, ns, MeV)."); } else if ( new_value == kRootUnits ) { - ::Warning("TGeoManager","Changing system of units to ROOT units (cm, s, GeV)."); + ::Info("TGeoManager","Changing system of units to ROOT units (cm, s, GeV)."); } fgDefaultUnits = new_value; } From b92dbfdee6f063e5372dbc6a40883893074eec0e Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 7 Sep 2021 14:57:24 +0200 Subject: [PATCH 040/577] Fix relative links for PyROOT on macOS Closes: #8933 Fixes: aefe374411d9bfecaa4a9eb764aee05f7b76a8e6 --- bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 2 +- bindings/pyroot/cppyy/cppyy-backend/CMakeLists.txt | 2 +- bindings/pyroot_legacy/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt index 2144d97d580bb..d41b649883f51 100644 --- a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +++ b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt @@ -108,7 +108,7 @@ foreach(val RANGE ${how_many_pythons}) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) if (NOT MSVC AND NOT CMAKE_INSTALL_LIBDIR STREQUAL CMAKE_INSTALL_PYTHONDIR) # add a symlink to ${libname} in CMAKE_INSTALL_PYTHONDIR - set(LIB_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(LIB_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}.so) install(CODE "file(CREATE_LINK ${PYTHONDIR_TO_LIBDIR}/${LIB_FILE_NAME} \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_PYTHONDIR}/${LIB_FILE_NAME} SYMBOLIC)") endif() diff --git a/bindings/pyroot/cppyy/cppyy-backend/CMakeLists.txt b/bindings/pyroot/cppyy/cppyy-backend/CMakeLists.txt index dda8b4848973c..da044999530c7 100644 --- a/bindings/pyroot/cppyy/cppyy-backend/CMakeLists.txt +++ b/bindings/pyroot/cppyy/cppyy-backend/CMakeLists.txt @@ -49,7 +49,7 @@ foreach(val RANGE ${how_many_pythons}) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) if (NOT MSVC AND NOT CMAKE_INSTALL_LIBDIR STREQUAL CMAKE_INSTALL_PYTHONDIR) # add a symlink to ${libname} in CMAKE_INSTALL_PYTHONDIR - set(LIB_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(LIB_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}.so) install(CODE "file(CREATE_LINK ${PYTHONDIR_TO_LIBDIR}/${LIB_FILE_NAME} \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_PYTHONDIR}/${LIB_FILE_NAME} SYMBOLIC)") endif() diff --git a/bindings/pyroot_legacy/CMakeLists.txt b/bindings/pyroot_legacy/CMakeLists.txt index e52fdbed30d5e..0aeb394df051a 100644 --- a/bindings/pyroot_legacy/CMakeLists.txt +++ b/bindings/pyroot_legacy/CMakeLists.txt @@ -106,7 +106,7 @@ endforeach() if (NOT MSVC AND NOT CMAKE_INSTALL_LIBDIR STREQUAL CMAKE_INSTALL_PYTHONDIR) # add a symlink to libPyROOT.so in CMAKE_INSTALL_PYTHONDIR - set(PYROOT_LIBNAME ${CMAKE_SHARED_LIBRARY_PREFIX}PyROOT${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(PYROOT_LIBNAME ${CMAKE_SHARED_LIBRARY_PREFIX}PyROOT.so) file(RELATIVE_PATH PYTHONDIR_TO_LIBDIR "${CMAKE_INSTALL_FULL_PYTHONDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}") install(CODE "file(CREATE_LINK ${PYTHONDIR_TO_LIBDIR}/${PYROOT_LIBNAME} \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_PYTHONDIR}/${PYROOT_LIBNAME} SYMBOLIC)") From 60a27812784abaac8850b15361a3318cb6b25f7e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 7 Sep 2021 10:59:31 +0200 Subject: [PATCH 041/577] [DF] Remove dead code --- tree/dataframe/src/RDFInterfaceUtils.cxx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index b6435a17697d7..2ed0f9cbc8275 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -422,10 +422,6 @@ ColumnNames_t GetTopLevelBranchNames(TTree &t) return bNames; } -// The set here is used as a registry, the real list, which keeps the order, is -// the one in the vector -class RActionBase; - std::string DemangleTypeIdName(const std::type_info &typeInfo) { int dummy(0); From 72db0de079d4f0a814cb98f00086434a8b67a441 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 8 Sep 2021 15:24:42 +0200 Subject: [PATCH 042/577] Make sure the pythonisation doc shows up at the end of the classes doc (#8971) * Make sure the pythonisation doc shows up at the end of the classes documentation * Too many lines were commented out `makeinput.sh` * Do changes only related to the python Frame placement * Create the .pyzdoc at the right place. * Update documentation/doxygen/extract_docstrings.py add `_out` Co-authored-by: Enric Tejedor * Add comment Co-authored-by: Enric Tejedor --- documentation/doxygen/Doxyfile | 78 +--------------- documentation/doxygen/Makefile | 11 ++- documentation/doxygen/extract_docstrings.py | 14 ++- documentation/doxygen/makeinput.sh | 92 +++++++++++++++++++ .../doxygen/print_roofit_pyz_doctrings.py | 3 +- 5 files changed, 112 insertions(+), 86 deletions(-) create mode 100755 documentation/doxygen/makeinput.sh diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index 0d7238ff8958f..bff77b6b62f78 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -845,83 +845,9 @@ WARN_LOGFILE = # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. +# The INPUT tag is defined in the file Doxyfile_INPUT created by the script makeinput.sh -INPUT = ./mainpage.md \ - ../../core/base/ \ - ../../core/dictgen/ \ - ../../core/cont/ \ - ../../core/foundation/ \ - ../../core/gui/ \ - ../../core/macosx/ \ - ../../core/meta/ \ - ../../core/metacling/ \ - ../../core/clingutils/ \ - ../../core/multiproc/ \ - ../../core/rint/ \ - ../../core/thread/ \ - ../../core/unix/ \ - ../../core/winnt/ \ - ../../core/imt/ \ - ../../core/zip/inc/Compression.h \ - ../../geom/ \ - ../../graf2d/asimage/ \ - ../../graf2d/cocoa/ \ - ../../graf2d/fitsio/ \ - ../../graf2d/gpad/ \ - ../../graf2d/gpadv7/ \ - ../../graf2d/graf/ \ - ../../graf2d/gviz/ \ - ../../graf2d/postscript/ \ - ../../graf2d/quartz/ \ - ../../graf2d/win32gdk/ \ - ../../graf2d/x11/ \ - ../../graf2d/x11ttf/ \ - ../../graf3d/eve/ \ - ../../graf3d/eve7/ \ - ../../graf3d/g3d/ \ - ../../graf3d/gl/ \ - ../../graf3d/gviz3d/ \ - ../../gui/ \ - ../../hist/ \ - ../../html/ \ - ../../io/doc/TFile \ - ../../io/dcache/ \ - ../../io/gfal/ \ - ../../io/io/ \ - ../../io/sql/ \ - ../../io/xml/ \ - ../../io/xmlparser/ \ - ../../main/src/hadd.cxx \ - ../../math/ \ - ../../montecarlo/ \ - ../../net/alien/ \ - ../../net/auth/ \ - ../../net/davix/ \ - ../../net/http/ \ - ../../net/monalisa/ \ - ../../net/net/ \ - ../../net/netx/ \ - ../../net/netxng/ \ - ../../proof/ \ - ../../tmva/ \ - ../../roofit/ \ - ../../tree/ \ - ../../sql/ \ - ../../tutorials/ \ - ../../bindings/tpython/ \ - ../../bindings/pyroot/ \ - ../../bindings/r/ -# ../../core/clib/ -# ../../core/lzma/ -# ../../core/newdelete/ -# ../../core/textinput/ -# ../../graf2d/mathtext/ -# ../../graf3d/ftgl/ -# ../../graf3d/glew/ -# ../../graf3d/x3d/ -# ../../net/rootd/ -# ../../net/rpdutils/ - +@INCLUDE = Doxyfile_INPUT # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/documentation/doxygen/Makefile b/documentation/doxygen/Makefile index 0656bacfa7c56..0e59267a75fc7 100644 --- a/documentation/doxygen/Makefile +++ b/documentation/doxygen/Makefile @@ -15,8 +15,9 @@ export DOXYGEN_IMAGE_PATH := $(DOXYGEN_OUTPUT_DIRECTORY)/html export DOXYGEN_NOTEBOOK_PATH := $(DOXYGEN_OUTPUT_DIRECTORY)/notebooks export DOXYGEN_STRIP_PATH := $(shell cd $(PWD)/../..; pwd) export DOXYGEN_INCLUDE_PATH := $(shell find $(DOXYGEN_STRIP_PATH) -type d -name dictpch -prune -o -type d -name inc) +export DOXYGEN_PYZDOC_PATH := $(DOXYGEN_OUTPUT_DIRECTORY)/pyzdoc -PYZ_DIR = ../../bindings/pyroot/pythonizations/python/ROOT/pythonization +PYZ_DIR = $(DOXYGEN_SOURCE_DIRECTORY)/bindings/pyroot/pythonizations/python/ROOT/pythonization define MkDir +@[ -d $1 ] || mkdir -p $1 @@ -40,18 +41,20 @@ images: cp images/* $(DOXYGEN_IMAGE_PATH) pyzdoc: - $(PYTHON_EXECUTABLE) extract_docstrings.py $(PYZ_DIR) - $(PYTHON_EXECUTABLE) print_roofit_pyz_doctrings.py > $(PYZ_DIR)/_roofit.pyzdoc + $(call MkDir,$(DOXYGEN_PYZDOC_PATH)) + $(PYTHON_EXECUTABLE) extract_docstrings.py $(PYZ_DIR) $(DOXYGEN_PYZDOC_PATH) + $(PYTHON_EXECUTABLE) print_roofit_pyz_doctrings.py > $(DOXYGEN_PYZDOC_PATH)/_roofit.pyzdoc doxygen: filter pyzdoc $(call MkDir,$(DOXYGEN_OUTPUT_DIRECTORY)) $(call MkDir,$(DOXYGEN_EXAMPLE_PATH)) $(call MkDir,$(DOXYGEN_NOTEBOOK_PATH)) ./makehtmlfooter.sh > htmlfooter.html + ./makeinput.sh doxygen ./listlibs.sh rm -rf files c1* *.ps *.png *.svg *.pdf *.root *.xpm *.out *.dat *.dtd *.dot *.txt listofclass.sh rm -f $(DOXYGEN_NOTEBOOK_PATH)/*.root clean: - rm -r $(DOXYGEN_OUTPUT_DIRECTORY) filter htmlfooter.html dataset* $(PYZ_DIR)/*.pyzdoc + rm -r $(DOXYGEN_OUTPUT_DIRECTORY) filter htmlfooter.html dataset* diff --git a/documentation/doxygen/extract_docstrings.py b/documentation/doxygen/extract_docstrings.py index d7dcd43f60534..02358d8cada6d 100755 --- a/documentation/doxygen/extract_docstrings.py +++ b/documentation/doxygen/extract_docstrings.py @@ -26,12 +26,12 @@ except ImportError: from scandir import scandir -if len(sys.argv) < 2: - print("Please provide the directory where documented .py files are.") +if len(sys.argv) < 3: + print("Please provide the directory where documented .py files are, and the output folder for the .pyzdoc files.") exit(1) pyz_dir = sys.argv[1] - +pyz_dir_out = sys.argv[2] def run_fast_scandir(dir, ext): # dir: str, ext: list subfolders, files = [], [] @@ -64,6 +64,12 @@ def run_fast_scandir(dir, ext): # dir: str, ext: list module = ast.parse(file_contents) ds = ast.get_docstring(module) if ds is not None: - with open(pyz_file_path + '.pyzdoc', 'w') as pyz_doc_file: + # The output file will sit in the $(DOXYGEN_PYZDOC_PATH)/pyzdoc folder. The output + # file name is build from the input file name which is extracted from pyz_file_path. + # The extracted file name has the extension ".py". We want the ouput file name has the + # extension ".pyzdoc". Therefore it is enough to concatenate the string "zdoc" at the + # end of the input file name to get the desired extension for the output file name. + pyz_filename_out = pyz_dir_out + '/' + pyz_file_path[pyz_file_path.rfind("_"):] + 'zdoc' + with open(pyz_filename_out, 'w') as pyz_doc_file: pyz_doc_file.write(ds) diff --git a/documentation/doxygen/makeinput.sh b/documentation/doxygen/makeinput.sh new file mode 100755 index 0000000000000..444cac71c29b6 --- /dev/null +++ b/documentation/doxygen/makeinput.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# This script creates the file Doxyfile_INPUT which defines the list of directories to be +# analysed by doxygen. To only build a subset of the documentation it is enough to comment +# the unwanted folders. +# Author: Olivier Couet CERN + +# This line is mandatory. Do not comment it +echo "INPUT = ./mainpage.md \\" > Doxyfile_INPUT + +echo " ../../core/base/ \\" >> Doxyfile_INPUT +echo " ../../core/dictgen/ \\" >> Doxyfile_INPUT +echo " ../../core/cont/ \\" >> Doxyfile_INPUT +echo " ../../core/foundation/ \\" >> Doxyfile_INPUT +echo " ../../core/gui/ \\" >> Doxyfile_INPUT +echo " ../../core/macosx/ \\" >> Doxyfile_INPUT +echo " ../../core/meta/ \\" >> Doxyfile_INPUT +echo " ../../core/metacling/ \\" >> Doxyfile_INPUT +echo " ../../core/clingutils/ \\" >> Doxyfile_INPUT +echo " ../../core/multiproc/ \\" >> Doxyfile_INPUT +echo " ../../core/rint/ \\" >> Doxyfile_INPUT +echo " ../../core/thread/ \\" >> Doxyfile_INPUT +echo " ../../core/unix/ \\" >> Doxyfile_INPUT +echo " ../../core/winnt/ \\" >> Doxyfile_INPUT +echo " ../../core/imt/ \\" >> Doxyfile_INPUT +echo " ../../core/zip/inc/Compression.h \\" >> Doxyfile_INPUT +echo " ../../geom/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/asimage/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/cocoa/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/fitsio/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/gpad/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/gpadv7/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/graf/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/gviz/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/postscript/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/quartz/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/win32gdk/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/x11/ \\" >> Doxyfile_INPUT +echo " ../../graf2d/x11ttf/ \\" >> Doxyfile_INPUT +echo " ../../graf3d/eve/ \\" >> Doxyfile_INPUT +echo " ../../graf3d/eve7/ \\" >> Doxyfile_INPUT +echo " ../../graf3d/g3d/ \\" >> Doxyfile_INPUT +echo " ../../graf3d/gl/ \\" >> Doxyfile_INPUT +echo " ../../graf3d/gviz3d/ \\" >> Doxyfile_INPUT +echo " ../../gui/ \\" >> Doxyfile_INPUT +echo " ../../hist/ \\" >> Doxyfile_INPUT +echo " ../../html/ \\" >> Doxyfile_INPUT +echo " ../../io/doc/TFile \\" >> Doxyfile_INPUT +echo " ../../io/dcache/ \\" >> Doxyfile_INPUT +echo " ../../io/gfal/ \\" >> Doxyfile_INPUT +echo " ../../io/io/ \\" >> Doxyfile_INPUT +echo " ../../io/sql/ \\" >> Doxyfile_INPUT +echo " ../../io/xml/ \\" >> Doxyfile_INPUT +echo " ../../io/xmlparser/ \\" >> Doxyfile_INPUT +echo " ../../main/src/hadd.cxx \\" >> Doxyfile_INPUT +echo " ../../math/ \\" >> Doxyfile_INPUT +echo " ../../montecarlo/ \\" >> Doxyfile_INPUT +echo " ../../net/alien/ \\" >> Doxyfile_INPUT +echo " ../../net/auth/ \\" >> Doxyfile_INPUT +echo " ../../net/davix/ \\" >> Doxyfile_INPUT +echo " ../../net/http/ \\" >> Doxyfile_INPUT +echo " ../../net/monalisa/ \\" >> Doxyfile_INPUT +echo " ../../net/net/ \\" >> Doxyfile_INPUT +echo " ../../net/netx/ \\" >> Doxyfile_INPUT +echo " ../../net/netxng/ \\" >> Doxyfile_INPUT +echo " ../../proof/ \\" >> Doxyfile_INPUT +echo " ../../tmva/ \\" >> Doxyfile_INPUT +echo " ../../roofit/ \\" >> Doxyfile_INPUT +echo " ../../tree/ \\" >> Doxyfile_INPUT +echo " ../../sql/ \\" >> Doxyfile_INPUT +echo " ../../tutorial/ \\" >> Doxyfile_INPUT +echo " ../../bindings/tpython/ \\" >> Doxyfile_INPUT +echo " ../../bindings/pyroot/ \\" >> Doxyfile_INPUT +echo " ../../bindings/ \\" >> Doxyfile_INPUT + +# echo " ../../core/clib/ \\" >> Doxyfile_INPUT +# echo " ../../core/lzma/ \\" >> Doxyfile_INPUT +# echo " ../../core/newdelete/ \\" >> Doxyfile_INPUT +# echo " ../../core/textinput/ \\" >> Doxyfile_INPUT +# echo " ../../graf2d/mathtext/ \\" >> Doxyfile_INPUT +# echo " ../../graf3d/ftgl/ \\" >> Doxyfile_INPUT +# echo " ../../graf3d/glew/ \\" >> Doxyfile_INPUT +# echo " ../../graf3d/x3d/ \\" >> Doxyfile_INPUT +# echo " ../../net/rootd/ \\" >> Doxyfile_INPUT +# echo " ../../net/rpdutils/ \\" >> Doxyfile_INPUT + + +# Add to the list of files to be analyzed the .pyzdoc files created by extract_docstrings.py +# and print_roofit_pyz_doctrings.py +ls $DOXYGEN_PYZDOC_PATH/*.pyzdoc | sed -e "s/$/ \\\\/" \ +>> Doxyfile_INPUT + diff --git a/documentation/doxygen/print_roofit_pyz_doctrings.py b/documentation/doxygen/print_roofit_pyz_doctrings.py index 4a92eaf99d52a..37f154764ff98 100644 --- a/documentation/doxygen/print_roofit_pyz_doctrings.py +++ b/documentation/doxygen/print_roofit_pyz_doctrings.py @@ -114,9 +114,8 @@ def print_roofit_pythonization_page(): from ROOT.pythonization import _roofit # Fill separate RooFit pythonization page, starting with the introduction and table of contents... - print("\defgroup RoofitPythonizations") + print("\defgroup RoofitPythonizations Roofit pythonizations") print("\ingroup Roofitmain") - print("# RooFit pythonizations") for python_klass in _roofit.python_classes: if python_klass.__doc__ is None: continue From 25cc77f18820e722f98bc82a34dabffdd8704a27 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Wed, 8 Sep 2021 09:32:32 +0200 Subject: [PATCH 043/577] [core] Fix invalid pointer error in TRintTests.cxx This test needs a char** which is a bit tricky to create without stepping into compiler errors or warnings. Currently it is created on the heap but improperly deallocated, so switch to a stack variable to avoid the need for memory management. --- core/rint/test/TRintTests.cxx | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/core/rint/test/TRintTests.cxx b/core/rint/test/TRintTests.cxx index 444e2d4b8a832..8b292808ecd82 100644 --- a/core/rint/test/TRintTests.cxx +++ b/core/rint/test/TRintTests.cxx @@ -17,11 +17,11 @@ TEST(TRint, UnrecognizedOptions) // only unrecognized ones, so we can't create an std::vector and pass its // data to TRint directly. int argc{4}; - char **argv = new char *[argc]; - argv[0] = const_cast("-q"); - argv[1] = const_cast("-z"); - argv[2] = const_cast("--nonexistingoption"); - argv[3] = const_cast("-b"); + char e1[]{"-q"}; + char e2[]{"-z"}; + char e3[]{"--nonexistingoption"}; + char e4[]{"-b"}; + char *argv[]{e1, e2, e3, e4}; CaptureStderr(); // Unrecognized options will be printed to stderr @@ -33,11 +33,4 @@ TEST(TRint, UnrecognizedOptions) "Try 'root --help' for more information.\n"}; EXPECT_EQ(trinterr, expected); - - // Properly delete the array - for (int i = 0; i < argc; i++) { - delete[] argv[i]; - } - delete[] argv; - argv = nullptr; } From 495330d01343a7cd1992b3734ec591f9102e34de Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 16:57:09 +0200 Subject: [PATCH 044/577] [NFC] Mention EnableImplicitMT(1) != single-thread Co-authored-by: Axel Naumann --- core/base/src/TROOT.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/base/src/TROOT.cxx b/core/base/src/TROOT.cxx index c64f3a24a3ff3..24d84bc09432c 100644 --- a/core/base/src/TROOT.cxx +++ b/core/base/src/TROOT.cxx @@ -521,6 +521,9 @@ namespace Internal { /// a hint for ROOT: it will try to satisfy the request if the execution /// scenario allows it. For example, if ROOT is configured to use an external /// scheduler, setting a value for 'numthreads' might not have any effect. + /// + /// \note Use `DisableImplicitMT()` to disable multi-threading (some locks will remain in place as + /// described in EnableThreadSafety()). `EnableImplicitMT(1)` creates a thread-pool of size 1. void EnableImplicitMT(UInt_t numthreads) { #ifdef R__USE_IMT From 9e1fd83f93fff9071f7d341339061904bcfccda2 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 29 Jul 2021 12:08:19 +0200 Subject: [PATCH 045/577] [cling] MetaLexer: return `/*` and `*/` as tokens; added `ReadToEndOfLine()` This commit includes the following changes to MetaLexer: - Update `MetaLexer::Lex()` to return `/*` (tok::l_comment), `*/` (tok::r_comment), and `<` (tok::less) as tokens. - Added `MetaLexer::ReadToEndOfLine()` function: consume input until `\r` or `\n`. - Added `MetaLexer::RAII`, a RAII object that saves/restores the current position. --- .../include/cling/MetaProcessor/MetaLexer.h | 25 ++++++++++++++++++ .../cling/lib/MetaProcessor/MetaLexer.cpp | 26 ++++++++++++++++--- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h b/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h index 193fb4ed221bf..2ebf3d90b74da 100644 --- a/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h +++ b/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h @@ -30,12 +30,15 @@ namespace cling { quest_mark, // "?" slash, // "/" backslash, // "\" + less, // "<" greater, // ">" ampersand, // "&" hash, // "#" ident, // (a-zA-Z)[(0-9a-zA-Z)*] raw_ident, // .*^(' '|'\t') comment, // // + l_comment, // "/*" + r_comment, // "*/" space, // (' ' | '\t')* constant, // {0-9} at, // @ @@ -54,6 +57,7 @@ namespace cling { mutable unsigned value; public: Token(const char* Buf = nullptr) { startToken(Buf); } + Token(const Token&) = default; void startToken(const char* Pos = nullptr) { kind = tok::unknown; @@ -70,6 +74,14 @@ namespace cling { bool isNot(tok::TokenKind K) const { return kind != K; } bool is(tok::TokenKind K) const { return kind == K; } + bool isClosingBrace() const { + return kind == tok::r_square || kind == tok::r_paren || kind == tok::r_brace; + } + ///\brief Return whether this instance matches a opening brace `K`; assumes + /// that `r_xxx` brace follows `l_xxx` on the TokenKind enumeration. + bool closesBrace(tok::TokenKind K) const { + return isClosingBrace() && (kind == K+1); + } llvm::StringRef getIdent() const; llvm::StringRef getIdentNoQuotes() const { @@ -86,11 +98,24 @@ namespace cling { const char* bufferStart; const char* curPos; public: + ///\brief A RAII object that saves the input position and restores it + /// on destruction. + struct RAII { + MetaLexer& Lex; + const char* savedPos; + RAII(MetaLexer& L) : Lex(L), savedPos(L.curPos) {} + ~RAII() { Lex.curPos = savedPos; } + }; + MetaLexer(llvm::StringRef input, bool skipWhiteSpace = false); void reset(llvm::StringRef Line); void Lex(Token& Tok); + ///\brief Lex a tok::raw_ident token that extends until the next whitespace + /// character, i.e. ' ' or '\t'. void LexAnyString(Token& Tok); + ///\brief Lex until '\r' or '\n' and make `Tok` point to consumed data. + void ReadToEndOfLine(Token& Tok, tok::TokenKind K = tok::unknown); static void LexPunctuator(const char* C, Token& Tok); // TODO: Revise. We might not need that. diff --git a/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp b/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp index 0c0c4bccfa668..ba2ee1b20001b 100644 --- a/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp +++ b/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp @@ -57,15 +57,22 @@ namespace cling { case '"': case '\'': return LexQuotedStringAndAdvance(curPos, Tok); case '[': case ']': case '(': case ')': case '{': case '}': - case '\\': case ',': case '.': case '!': case '?': case '>': - case '&': case '#': case '@': case '*': case ';': + case '\\': case ',': case '.': case '!': case '?': case '<': case '>': + case '&': case '#': case '@': case ';': // INTENTIONAL FALL THROUGHs return LexPunctuator(curPos - 1, Tok); case '/': + if (*curPos == '/' || *curPos == '*') { + Tok.setKind((*curPos++ == '/') ? tok::comment : tok::l_comment); + Tok.setLength(2); + return; + } + return LexPunctuator(curPos - 1, Tok); + case '*': if (*curPos == '/') { ++curPos; - Tok.setKind(tok::comment); + Tok.setKind(tok::r_comment); Tok.setLength(2); return; } @@ -106,6 +113,16 @@ namespace cling { Tok.setLength(curPos - Tok.getBufStart()); } + void MetaLexer::ReadToEndOfLine(Token& Tok, tok::TokenKind K) { + Tok.startToken(curPos); + while (*curPos != '\r' && *curPos != '\n' + && *curPos != '\0') + curPos++; + + Tok.setKind(K); + Tok.setLength(curPos - Tok.getBufStart()); + } + void MetaLexer::LexPunctuator(const char* C, Token& Tok) { Tok.startToken(C); Tok.setLength(1); @@ -124,8 +141,9 @@ namespace cling { case '?' : Tok.setKind(tok::quest_mark); break; case '/' : Tok.setKind(tok::slash); break; case '\\' : Tok.setKind(tok::backslash); break; + case '<' : Tok.setKind(tok::less); break; case '>' : Tok.setKind(tok::greater); break; - case '@' : Tok.setKind(tok::at); break; + case '@' : Tok.setKind(tok::at); break; case '&' : Tok.setKind(tok::ampersand); break; case '#' : Tok.setKind(tok::hash); break; case '*' : Tok.setKind(tok::asterik); break; From 5f9629f2c1edd53e348cdac088861c7976a3af74 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 29 Jul 2021 12:22:15 +0200 Subject: [PATCH 046/577] [cling] Rewrite of `InputValidator::validate()` Replace implementation of `InputValidator::validate()` by simpler, more maintainable code that also fixes ROOT-9202. The previous implementation was unable to properly handle line continuation after ',' or '\'. Specifically, it skipped over non-punctuation tokens, entering continuation mode even if ',' or '\' were not the last tokens in the input, e.g. `int a, b` or 'int a \ b'. Fixes ROOT-9202. --- .../lib/MetaProcessor/InputValidator.cpp | 228 +++++------------- 1 file changed, 67 insertions(+), 161 deletions(-) diff --git a/interpreter/cling/lib/MetaProcessor/InputValidator.cpp b/interpreter/cling/lib/MetaProcessor/InputValidator.cpp index 4d9460a08b334..802c1f3cc822b 100644 --- a/interpreter/cling/lib/MetaProcessor/InputValidator.cpp +++ b/interpreter/cling/lib/MetaProcessor/InputValidator.cpp @@ -15,191 +15,97 @@ namespace cling { bool InputValidator::inBlockComment() const { - return std::find(m_ParenStack.begin(), m_ParenStack.end(), tok::slash) - != m_ParenStack.end(); - } - - static bool findBlockCommentEnd(const char* startPos, const char* endPos) { - // Find '*/', searching from endPos to startPos. - // While probably not standard compliant, it should work fine for the indent - // Let the real parser error if the balancing is incorrect. - - char commentTok = 0; - while (endPos > startPos) { - switch (*endPos--) { - case '/': - commentTok = '*'; - break; - case '*': - if (commentTok == '*') - return true; - LLVM_FALLTHROUGH; - default: - commentTok = 0; - break; - } - } - return false; - } - - static void unwindTokens(std::deque& queue, int tok) { - assert(!queue.empty() && "Token stack is empty!"); - while (queue.back() != tok) { - queue.pop_back(); - assert(!queue.empty() && "Token stack is empty!"); - } - queue.pop_back(); + return !m_ParenStack.empty() && m_ParenStack.back() == tok::l_comment; } InputValidator::ValidationResult InputValidator::validate(llvm::StringRef line) { ValidationResult Res = kComplete; + MetaLexer Lex(line.data(), /*skipWhiteSpace=*/true); + Token Tok, lastNonSpaceTok; - Token Tok; - const char* curPos = line.data(); - bool multilineComment = inBlockComment(); - int commentTok = multilineComment ? tok::asterik : tok::slash; - int lastKind; - - if (!multilineComment && m_ParenStack.empty()) { - // Only check for 'template' if we're not already indented - MetaLexer Lex(curPos, true); + // Only check for 'template' if we're not already indented + if (m_ParenStack.empty()) { + MetaLexer::RAII RAII(Lex); Lex.Lex(Tok); - curPos = Lex.getLocation(); - if (Tok.is(tok::ident)) { - if (Tok.getIdent()=="template") - m_ParenStack.push_back(tok::greater); - } else - curPos -= Tok.getLength(); // Rewind buffer for LexPunctuatorAndAdvance + if (Tok.is(tok::ident) && Tok.getIdent() == "template") + m_ParenStack.push_back(tok::less); } do { - lastKind = int(Tok.getKind()); - - const char* prevStart = curPos; - MetaLexer::LexPunctuatorAndAdvance(curPos, Tok); - const int kind = (int)Tok.getKind(); - - if (kind == commentTok) { - if (kind == tok::slash) { - if (multilineComment) { - // exiting a comment, unwind the stack - multilineComment = false; - commentTok = tok::slash; - unwindTokens(m_ParenStack, tok::slash); - } - // If we have a closing comment without a start it will be transformed - // to */; and clang reports an error for both the */ and the ; - // If we return kIncomplete, then just one error is printed, but too - // late: after the user has another expression which will always fail. - // So just deal with two errors for now - // else if (prevKind == tok::asterik) { - // Res = kIncomplete; - // break; - // } - else // wait for an asterik - commentTok = tok::asterik; - } - else { - assert(commentTok == tok::asterik && "Comment token not / or *"); - if (!multilineComment) { - if ((curPos - prevStart) == 1) { - // entering a new comment - multilineComment = true; - m_ParenStack.push_back(tok::slash); - } - } - else // wait for closing / (must be next token) - commentTok = tok::slash; - } - } - else { - // If we're in a multiline, and waiting for the closing slash - // we gonna have to wait for another asterik first - if (multilineComment) { - if (kind == tok::eof) { - if (findBlockCommentEnd(prevStart, curPos)) - unwindTokens(m_ParenStack, tok::slash); - - // eof, were done anyway + if (Tok.isNot(tok::space)) + lastNonSpaceTok = Tok; + Lex.Lex(Tok); + + // In multiline comments, ignore anything that is not the `*/` token + if (inBlockComment() && Tok.isNot(tok::r_comment)) + continue; + + switch (Tok.getKind()) { + default: + break; + case tok::comment: + Lex.ReadToEndOfLine(Tok); + break; + case tok::r_comment: + if (inBlockComment()) + m_ParenStack.pop_back(); + else + Res = kMismatch; + break; + + case tok::l_square: case tok::l_paren: case tok::l_brace: + case tok::l_comment: + m_ParenStack.push_back(Tok.getKind()); + break; + case tok::r_square: case tok::r_paren: case tok::r_brace: + { + auto tos = m_ParenStack.empty() + ? tok::unknown : static_cast(m_ParenStack.back()); + if (!Tok.closesBrace(tos)) { + Res = kMismatch; break; } - else if (commentTok == tok::slash) { - // Cancel the wait for a slash, but only if current token isn't - // also an asterik. - if (kind != tok::asterik) - commentTok = tok::asterik; - } - } else if (commentTok == tok::asterik) { - // Was wating for an asterik, but found something else. - // Go back to looking for a slash. - commentTok = tok::slash; - } - - if (kind >= (int)tok::l_square && kind <= (int)tok::r_brace) { - // The closing paren kind is open paren kind + 1 (i.e odd number) - if (kind % 2) { - int prev = m_ParenStack.empty() ? -1: m_ParenStack.back(); - // closing the right one? - if (prev != kind - 1) { - if (multilineComment) - continue; - Res = kMismatch; - break; - } + m_ParenStack.pop_back(); + // '}' will also pop a template '<' if their is one + if (Tok.getKind() == tok::r_brace && m_ParenStack.size() == 1 + && m_ParenStack.back() == tok::less) m_ParenStack.pop_back(); - - // Right brace will pop a template if their is one - if (kind == tok::r_brace && m_ParenStack.size() == 1 ) { - if (m_ParenStack.back() == tok::greater) - m_ParenStack.pop_back(); - } - } - else - m_ParenStack.push_back(kind); } - else if (kind == tok::hash) { - MetaLexer Lex(curPos); - Lex.SkipWhitespace(); - Lex.LexAnyString(Tok); - const llvm::StringRef PPtk = Tok.getIdent(); - if (PPtk.startswith("endif") - && (PPtk.size() > 5 ? PPtk[5]=='/' || isspace(PPtk[5]) : true)) { - if (m_ParenStack.empty() || m_ParenStack.back() != tok::hash) { + break; + + case tok::semicolon: + // Template forward declatation, i.e. 'template' '<' ... '>' ... ';' + if (m_ParenStack.size() == 1 && m_ParenStack.back() == tok::less) + m_ParenStack.pop_back(); + break; + + case tok::hash: + Lex.SkipWhitespace(); + Lex.LexAnyString(Tok); + const llvm::StringRef PPtk = Tok.getIdent(); + if (PPtk.startswith("if")) { + m_ParenStack.push_back(tok::hash); + } else if (PPtk.startswith("endif") && + (PPtk.size() == 5 || PPtk[5]=='/' || isspace(PPtk[5]))) { + if (m_ParenStack.empty() || m_ParenStack.back() != tok::hash) Res = kMismatch; - break; - } - m_ParenStack.pop_back(); - } - else if (PPtk.startswith("if")) { - m_ParenStack.push_back(tok::hash); - } - } - else if (kind == tok::semicolon) { - // Template forward declatation - if (m_ParenStack.size() == 1 && m_ParenStack.back()==tok::greater) - m_ParenStack.pop_back(); - } - else if (kind >= (int)tok::stringlit && kind <= (int)tok::charlit) { - MetaLexer::LexQuotedStringAndAdvance(curPos, Tok); + else + m_ParenStack.pop_back(); } + break; } - } while (Tok.isNot(tok::eof)); + } while (Tok.isNot(tok::eof) && Res != kMismatch); - const bool Continue = lastKind == tok::backslash || lastKind == tok::comma; + const bool Continue = (lastNonSpaceTok.getKind() == tok::backslash + || lastNonSpaceTok.getKind() == tok::comma); if (Continue || (!m_ParenStack.empty() && Res != kMismatch)) Res = kIncomplete; if (!m_Input.empty()) { - if (!m_ParenStack.empty() && (m_ParenStack.back() == tok::stringlit - || m_ParenStack.back() == tok::charlit)) - m_Input.append("\\n"); - else - m_Input.append("\n"); + m_Input.append("\n"); } - m_Input.append(line); - return Res; } From e97a155ce418c93d97a20326f407a6682111a393 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 29 Jul 2021 12:38:01 +0200 Subject: [PATCH 047/577] [cling] Cleanup MetaLexer; remove unused `LexPunctuatorAndAdvance()` --- .../include/cling/MetaProcessor/MetaLexer.h | 2 -- .../cling/lib/MetaProcessor/MetaLexer.cpp | 26 ------------------- 2 files changed, 28 deletions(-) diff --git a/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h b/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h index 2ebf3d90b74da..eada00472b2a4 100644 --- a/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h +++ b/interpreter/cling/include/cling/MetaProcessor/MetaLexer.h @@ -118,8 +118,6 @@ namespace cling { void ReadToEndOfLine(Token& Tok, tok::TokenKind K = tok::unknown); static void LexPunctuator(const char* C, Token& Tok); - // TODO: Revise. We might not need that. - static bool LexPunctuatorAndAdvance(const char*& curPos, Token& Tok); static void LexQuotedStringAndAdvance(const char*& curPos, Token& Tok); void LexConstant(char C, Token& Tok); void LexIdentifier(char C, Token& Tok); diff --git a/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp b/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp index ba2ee1b20001b..03c1bc08e14fd 100644 --- a/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp +++ b/interpreter/cling/lib/MetaProcessor/MetaLexer.cpp @@ -101,12 +101,10 @@ namespace cling { void MetaLexer::LexAnyString(Token& Tok) { Tok.startToken(curPos); - // consume until we reach one of the "AnyString" delimiters or EOF. while(*curPos != ' ' && *curPos != '\t' && *curPos != '\0') { curPos++; } - assert(Tok.getBufStart() != curPos && "It must consume at least on char"); Tok.setKind(tok::raw_ident); @@ -153,32 +151,9 @@ namespace cling { } } - bool MetaLexer::LexPunctuatorAndAdvance(const char*& curPos, Token& Tok) { - Tok.startToken(curPos); - bool nextWasPunct = true; - while (true) { - // On comment skip until the eof token. - if (curPos[0] == '/' && curPos[1] == '/') { - while (*curPos != '\0' && *curPos != '\r' && *curPos != '\n') - ++curPos; - if (*curPos == '\0') { - Tok.setBufStart(curPos); - Tok.setKind(tok::eof); - Tok.setLength(0); - return nextWasPunct; - } - } - MetaLexer::LexPunctuator(curPos++, Tok); - if (Tok.isNot(tok::unknown)) - return nextWasPunct; - nextWasPunct = false; - } - } - void MetaLexer::LexQuotedStringAndAdvance(const char*& curPos, Token& Tok) { // curPos must be right after the starting quote (single or double), // and we will lex until the next one or the end of the line. - assert((curPos[-1] == '"' || curPos[-1] == '\'') && "Not a string / character literal!"); if (curPos[-1] == '"') @@ -195,7 +170,6 @@ namespace cling { curPos += 2; continue; } - if (*curPos == '\0') { Tok.setBufStart(curPos); Tok.setKind(tok::eof); From a6984fd6b9cfc50b692a8976a5dc5b55f6a5ebd8 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 29 Jul 2021 12:50:29 +0200 Subject: [PATCH 048/577] [cling] `InputValidator::validate()`: add test against ROOT-9202 --- interpreter/cling/test/Prompt/Continuation.C | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interpreter/cling/test/Prompt/Continuation.C b/interpreter/cling/test/Prompt/Continuation.C index f160615ce26b5..7cf09a5207473 100644 --- a/interpreter/cling/test/Prompt/Continuation.C +++ b/interpreter/cling/test/Prompt/Continuation.C @@ -23,6 +23,13 @@ Bc Cc // CHECK-NEXT: (int) 35 +// Should not enter line continuation mode here (ROOT-9202) +unsigned u1 = 45, u2 +// CHECK-NEXT: (unsigned int) {{[[:digit:]]+}} +u1 +// CHECK-NEXT: (unsigned int) 45 +int i1 \ i2 // expected-error {{expected ';' at end of declaration}} + static void InvokeTest(int A, int B) { printf("Invoke: %d, %d\n", A, B); } InvokeTest(Ac, From 918f9f28ea21289e02cd27b5ffba8ce608343f7f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 17:48:35 +0200 Subject: [PATCH 049/577] [DF] Add a sanity check to GetMergeableValue --- tree/dataframe/inc/ROOT/RResultPtr.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RResultPtr.hxx b/tree/dataframe/inc/ROOT/RResultPtr.hxx index 054fc1ccd37d3..9af78f9a5c264 100644 --- a/tree/dataframe/inc/ROOT/RResultPtr.hxx +++ b/tree/dataframe/inc/ROOT/RResultPtr.hxx @@ -443,7 +443,7 @@ MakeResultPtr(const std::shared_ptr &r, RLoopManager &lm, std::shared_ptr std::unique_ptr> GetMergeableValue(RResultPtr &rptr) { - + rptr.ThrowIfNull(); if (!rptr.fActionPtr->HasRun()) rptr.TriggerRun(); // Prevents from using `const` specifier in parameter return std::unique_ptr>{ From 97571ef683fd4437bb5f5f33389237ab6c75bba7 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 29 Jul 2021 13:08:58 +0200 Subject: [PATCH 050/577] [trint] Correctly handle line continuation after '\' To have better diagnostics, `TRint::ProcessLineNr()` prepends a `#line 1 "ROOT_prompt_xxx"` PP directive to each input line. However, this causes problems if the previous line is continued with '\', e.g. ``` root [0] #define m(x) printf("%s", \ root (cont'ed, cancel with .@) [1]x); ROOT_prompt_0:2:2: error: '#' is not followed by a macro parameter ^ ROOT_prompt_0:3:1: error: use of undeclared identifier 'x' x); ^ ``` This patch fixes issue #8762. --- core/rint/inc/TRint.h | 1 + core/rint/src/TRint.cxx | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/rint/inc/TRint.h b/core/rint/inc/TRint.h index 5706cd94d8aa9..3a730945c1cf2 100644 --- a/core/rint/inc/TRint.h +++ b/core/rint/inc/TRint.h @@ -38,6 +38,7 @@ class TRint : public TApplication { Bool_t fInterrupt; // if true macro execution will be stopped Int_t fCaughtSignal; // TRint just caught a signal TFileHandler *fInputHandler; // terminal input handler + Bool_t fBackslashContinue{};// whether the last line ended with '\' TRint(const TRint&) = delete; TRint& operator=(const TRint&) = delete; diff --git a/core/rint/src/TRint.cxx b/core/rint/src/TRint.cxx index 83c258382ce2e..a07bb49d1f61e 100644 --- a/core/rint/src/TRint.cxx +++ b/core/rint/src/TRint.cxx @@ -757,8 +757,11 @@ Longptr_t TRint::ProcessLineNr(const char* filestem, const char *line, Int_t *e if (!error) error = &err; if (line && line[0] != '.') { - TString lineWithNr = TString::Format("#line 1 \"%s%d\"\n", filestem, fNcmd - 1); - int res = ProcessLine(lineWithNr + line, kFALSE, error); + TString input; + if (!fBackslashContinue) + input += TString::Format("#line 1 \"%s%d\"\n", filestem, fNcmd - 1); + input += line; + int res = ProcessLine(input, kFALSE, error); if (*error == TInterpreter::kProcessing) { if (!fNonContinuePrompt.Length()) fNonContinuePrompt = fDefaultPrompt; @@ -767,6 +770,10 @@ Longptr_t TRint::ProcessLineNr(const char* filestem, const char *line, Int_t *e SetPrompt(fNonContinuePrompt); fNonContinuePrompt.Clear(); } + std::string_view sv(line); + auto lastNonSpace = sv.find_last_not_of(" \t"); + fBackslashContinue = (lastNonSpace != std::string_view::npos + && sv[lastNonSpace] == '\\'); return res; } if (line && line[0] == '.' && line[1] == '@') { From 3dbf55d522ca867290243487837b21b6b451022f Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 26 Jul 2021 15:37:35 +0200 Subject: [PATCH 051/577] [cling] Enable replacement of the default diagnostic consumer These changes enable the replacement of the default DiagnosticConsumer provided by CIFactory. Concretely, two member functions have been added to the Interpreter class: - replaceDiagnosticConsumer(): replaces the default CIFactory-provided DiagnosticConsumer. - hasReplacedDiagnosticConsumer(): returns whether the default diagnostic consumer has been replaced. --- .../include/cling/Interpreter/Interpreter.h | 10 +++ .../lib/Interpreter/IncrementalParser.cpp | 69 ++++++++++++++++++- .../cling/lib/Interpreter/IncrementalParser.h | 3 + .../cling/lib/Interpreter/Interpreter.cpp | 12 ++++ 4 files changed, 91 insertions(+), 3 deletions(-) diff --git a/interpreter/cling/include/cling/Interpreter/Interpreter.h b/interpreter/cling/include/cling/Interpreter/Interpreter.h index a4f73bfd4eaff..93195bc9457c6 100644 --- a/interpreter/cling/include/cling/Interpreter/Interpreter.h +++ b/interpreter/cling/include/cling/Interpreter/Interpreter.h @@ -37,6 +37,7 @@ namespace clang { class CompilerInstance; class Decl; class DeclContext; + class DiagnosticConsumer; class DiagnosticsEngine; class FunctionDecl; class GlobalDecl; @@ -338,6 +339,8 @@ namespace cling { nullptr) {} ///\brief Constructor for child Interpreter. + /// If the parent Interpreter has a replacement DiagnosticConsumer, it is + /// inherited by the child (not owned). ///\param[in] parentInterpreter - the parent interpreter of this interpreter ///\param[in] argc - no. of args. ///\param[in] argv - arguments passed when driver is invoked. @@ -695,6 +698,13 @@ namespace cling { clang::Sema& getSema() const; clang::DiagnosticsEngine& getDiagnostics() const; + /// \brief Replaces the default DiagnosticConsumer. + /// \param[in] Consumer - The replacement `clang::DiagnosticConsumer` + /// \param[in] Own - Whether the pointee is owned by this instance. + /// + void replaceDiagnosticConsumer(clang::DiagnosticConsumer* Consumer, bool Own = false); + bool hasReplacedDiagnosticConsumer() const; + IncrementalCUDADeviceCompiler* getCUDACompiler() const { return m_CUDACompiler.get(); } diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index 3f87b902b4d0f..97244550e5047 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -106,8 +106,23 @@ namespace { return false; } + /// \brief Overrides the current DiagnosticConsumer to supress many warnings + /// issued as a result of incremental compilation (see `HandleDiagnostic()`). + /// + /// Diagnostics passing the filter are, by default, forwarded to the previous + /// DiagnosticConsumer instance. A different consumer may be specified via + /// `setTargetConsumer()`. + /// In that case, given that internal state might be updated as part of + /// `{Begin,End}SourceFile` (e.g. in TextDiagnosticPrinter), calls to such + /// functions will be forwarded to both, the user-specified and the original + /// consumer; however `HandleDiagnostic()` calls shall only be seen by the + /// former. + /// + /// On destruction, the original (i.e. overridden consumer) is restored. + /// class FilteringDiagConsumer : public cling::utils::DiagnosticsOverride { std::stack m_IgnorePromptDiags; + llvm::PointerIntPair m_Target{}; void SyncDiagCountWithTarget() { NumWarnings = m_PrevClient.getNumWarnings(); @@ -117,20 +132,28 @@ namespace { void BeginSourceFile(const LangOptions &LangOpts, const Preprocessor *PP=nullptr) override { m_PrevClient.BeginSourceFile(LangOpts, PP); + if (auto C = m_Target.getPointer()) + C->BeginSourceFile(LangOpts, PP); } void EndSourceFile() override { m_PrevClient.EndSourceFile(); + if (auto C = m_Target.getPointer()) + C->EndSourceFile(); SyncDiagCountWithTarget(); } void finish() override { m_PrevClient.finish(); + if (auto C = m_Target.getPointer()) + C->finish(); SyncDiagCountWithTarget(); } void clear() override { m_PrevClient.clear(); + if (auto C = m_Target.getPointer()) + C->clear(); SyncDiagCountWithTarget(); } @@ -158,7 +181,19 @@ namespace { return; // ignore! } } - m_PrevClient.HandleDiagnostic(DiagLevel, Info); + + // In principle, for simplicity, we preserve the old behavior of + // delivering diagnostics to just one consumer (that is why we don't emit + // to both), but we allow the "sink" to be changed. + // Note, however, that consumers might update their internal state in + // calls to, e.g. `BeginSourceFile()` or `EndSourceFile()` (actually, + // `TextDiagnosticPrinter` is an example of this), so in order to be able + // to restore the original consumer, we need to keep forwarding these + // calls also to `m_PrevClient` (see above). + if (auto C = m_Target.getPointer()) + C->HandleDiagnostic(DiagLevel, Info); + else + m_PrevClient.HandleDiagnostic(DiagLevel, Info); SyncDiagCountWithTarget(); } @@ -167,10 +202,27 @@ namespace { } public: - FilteringDiagConsumer(DiagnosticsEngine& Diags, bool Own) : - DiagnosticsOverride(Diags, Own) { + FilteringDiagConsumer(DiagnosticsEngine& Diags, bool Own) + : DiagnosticsOverride(Diags, Own) {} + virtual ~FilteringDiagConsumer() { setTargetConsumer(nullptr); } + + /// \brief Sets the DiagnosticConsumer that sees `HandleDiagnostic()` calls. + /// \param[in] Consumer - The target DiagnosticConsumer, or `nullptr` to + /// revert to original client. + /// \param[in] Own - Whether we own the pointee + /// + void setTargetConsumer(DiagnosticConsumer* Consumer, bool Own = false) { + if (m_Target.getInt()) + if (auto C = m_Target.getPointer()) + delete C; + + m_Target.setPointer(Consumer); + m_Target.setInt(Own); } + DiagnosticConsumer* getTargetConsumer() const + { return m_Target.getPointer(); } + struct RAAI { FilteringDiagConsumer& m_Client; RAAI(DiagnosticConsumer& F, bool Ignore) : @@ -390,6 +442,17 @@ namespace cling { return m_Consumer->getTransaction(); } + void IncrementalParser::setDiagnosticConsumer(DiagnosticConsumer* Consumer, + bool Own) { + static_cast< + FilteringDiagConsumer&>(*m_DiagConsumer).setTargetConsumer(Consumer, Own); + } + + DiagnosticConsumer* IncrementalParser::getDiagnosticConsumer() const { + return static_cast< + FilteringDiagConsumer&>(*m_DiagConsumer).getTargetConsumer(); + } + SourceLocation IncrementalParser::getNextAvailableUniqueSourceLoc() { const SourceManager& SM = getCI()->getSourceManager(); SourceLocation Result = SM.getLocForStartOfFile(m_VirtualFileID); diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.h b/interpreter/cling/lib/Interpreter/IncrementalParser.h index 8a078af6d43a4..063d211e949a0 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.h +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.h @@ -127,6 +127,9 @@ namespace cling { clang::CodeGenerator* getCodeGenerator() const { return m_CodeGen; } bool hasCodeGenerator() const { return m_CodeGen; } + void setDiagnosticConsumer(clang::DiagnosticConsumer* Consumer, bool Own); + clang::DiagnosticConsumer* getDiagnosticConsumer() const; + /// Returns the next available unique source location. It is an offset into /// the limitless virtual file. Each time this interface is used it bumps /// an internal counter. This is very useful for using the various API in diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index c512a94f36d75..d061f04e4bdee 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -371,6 +371,9 @@ namespace cling { // Give my IncrementalExecutor a pointer to the Incremental executor of the // parent Interpreter. m_Executor->setExternalIncrementalExecutor(parentInterpreter.m_Executor.get()); + + if (auto C = parentInterpreter.m_IncrParser->getDiagnosticConsumer()) + m_IncrParser->setDiagnosticConsumer(C, /*Own=*/false); } } @@ -749,6 +752,15 @@ namespace cling { return getCI()->getDiagnostics(); } + void Interpreter::replaceDiagnosticConsumer(clang::DiagnosticConsumer* Consumer, + bool Own) { + m_IncrParser->setDiagnosticConsumer(Consumer, Own); + } + + bool Interpreter::hasReplacedDiagnosticConsumer() const { + return m_IncrParser->getDiagnosticConsumer() != nullptr; + } + CompilationOptions Interpreter::makeDefaultCompilationOpts() const { CompilationOptions CO; CO.DeclarationExtraction = 0; From c0cbfe1600317f836f7a2f87998d4c33a3886d69 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 26 Jul 2021 19:19:47 +0200 Subject: [PATCH 052/577] [tcling] Implement `TCling::ReportDiagnosticsToErrorHandler()` This function allows users to route clang diagnostics to the ROOT error handler. Closes issue ROOT-7587. --- core/meta/inc/TInterpreter.h | 2 ++ core/metacling/src/CMakeLists.txt | 3 ++ core/metacling/src/TCling.cxx | 23 ++++++++++++ core/metacling/src/TCling.h | 1 + core/metacling/src/TClingDiagnostics.cxx | 29 +++++++++++++++ core/metacling/src/TClingDiagnostics.h | 45 ++++++++++++++++++++++++ 6 files changed, 103 insertions(+) create mode 100644 core/metacling/src/TClingDiagnostics.cxx create mode 100644 core/metacling/src/TClingDiagnostics.h diff --git a/core/meta/inc/TInterpreter.h b/core/meta/inc/TInterpreter.h index 909c8346e6010..25ec9d5c13cbf 100644 --- a/core/meta/inc/TInterpreter.h +++ b/core/meta/inc/TInterpreter.h @@ -267,6 +267,8 @@ class TInterpreter : public TNamed { int SetClassAutoloading(int a) const { return SetClassAutoLoading(a); } // Deprecated virtual int SetClassAutoparsing(int) {return 0;}; virtual void SetErrmsgcallback(void * /* p */) const {;} + /// \brief Report diagnostics to the ROOT error handler (see TError.h). + virtual void ReportDiagnosticsToErrorHandler(bool /*enable*/ = true) {} virtual void SetTempLevel(int /* val */) const {;} virtual int UnloadFile(const char * /* path */) const {return 0;} diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt index 8cbbe4ba089ce..09bf2747e7151 100644 --- a/core/metacling/src/CMakeLists.txt +++ b/core/metacling/src/CMakeLists.txt @@ -10,9 +10,11 @@ if(MSVC) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingCallbacks.cxx COMPILE_FLAGS -GR-) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingDiagnostics.cxx COMPILE_FLAGS -GR-) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingRdictModuleFileExtension.cxx COMPILE_FLAGS -GR-) else() set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingCallbacks.cxx COMPILE_FLAGS -fno-rtti) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingDiagnostics.cxx COMPILE_FLAGS -fno-rtti) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/TClingRdictModuleFileExtension.cxx COMPILE_FLAGS -fno-rtti) endif() @@ -25,6 +27,7 @@ ROOT_OBJECT_LIBRARY(MetaCling TClingClassInfo.cxx TClingDataMemberInfo.cxx TClingDeclInfo.cxx + TClingDiagnostics.cxx TClingMemberIter.cxx TClingMethodArgInfo.cxx TClingMethodInfo.cxx diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 300955e471113..1c7a78df19a73 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -40,6 +40,7 @@ clang/LLVM technology. #include "TClassEdit.h" #include "TClassTable.h" #include "TClingCallbacks.h" +#include "TClingDiagnostics.h" #include "TBaseClass.h" #include "TDataMember.h" #include "TMemberInspector.h" @@ -7577,6 +7578,28 @@ void TCling::SetErrmsgcallback(void* p) const #endif } +void TCling::ReportDiagnosticsToErrorHandler(bool enable) +{ + if (enable) { + auto consumer = new TClingDelegateDiagnosticPrinter( + &fInterpreter->getDiagnostics().getDiagnosticOptions(), + fInterpreter->getCI()->getLangOpts(), + [] (clang::DiagnosticsEngine::Level Level, const std::string &Info) { + if (Level == clang::DiagnosticsEngine::Warning) { + ::Warning("cling", "%s", Info.c_str()); + } else if (Level == clang::DiagnosticsEngine::Error + || Level == clang::DiagnosticsEngine::Fatal) { + ::Error("cling", "%s", Info.c_str()); + } else { + ::Info("cling", "%s", Info.c_str()); + } + }); + fInterpreter->replaceDiagnosticConsumer(consumer, /*Own=*/true); + } else { + fInterpreter->replaceDiagnosticConsumer(nullptr); + } +} + //////////////////////////////////////////////////////////////////////////////// /// Create / close a scope for temporaries. No-op for cling; use diff --git a/core/metacling/src/TCling.h b/core/metacling/src/TCling.h index b7db7d3c960e2..ec71533c9c42e 100644 --- a/core/metacling/src/TCling.h +++ b/core/metacling/src/TCling.h @@ -354,6 +354,7 @@ class TCling final : public TInterpreter { virtual int SetClassAutoparsing(int) ; Bool_t IsAutoParsingSuspended() const { return fIsAutoParsingSuspended; } virtual void SetErrmsgcallback(void* p) const; + virtual void ReportDiagnosticsToErrorHandler(bool enable = true); virtual void SetTempLevel(int val) const; virtual int UnloadFile(const char* path) const; diff --git a/core/metacling/src/TClingDiagnostics.cxx b/core/metacling/src/TClingDiagnostics.cxx new file mode 100644 index 0000000000000..511b4c1f3735d --- /dev/null +++ b/core/metacling/src/TClingDiagnostics.cxx @@ -0,0 +1,29 @@ +// @(#)root/core/metacling:$Id$ +// Author: Javier Lopez-Gomez 16/07/2021 + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#include "TClingDiagnostics.h" + +TClingDelegateDiagnosticPrinter::TClingDelegateDiagnosticPrinter +(clang::DiagnosticOptions *DiagOpts, clang::LangOptions &LangOpts, handler_t fn) + : TextDiagnosticPrinter(fOS, DiagOpts), fOS(fOS_out), fHandler(fn) +{ + // Required to initialize the internal `clang::TextDiagnostic` instance. + TextDiagnosticPrinter::BeginSourceFile(LangOpts, nullptr); +} + +void +TClingDelegateDiagnosticPrinter::HandleDiagnostic(clang::DiagnosticsEngine::Level Level, + const clang::Diagnostic &Info) +{ + fOS_out.clear(); + TextDiagnosticPrinter::HandleDiagnostic(Level, Info); + fHandler(Level, fOS.str()); +} diff --git a/core/metacling/src/TClingDiagnostics.h b/core/metacling/src/TClingDiagnostics.h new file mode 100644 index 0000000000000..62680f0f1ce85 --- /dev/null +++ b/core/metacling/src/TClingDiagnostics.h @@ -0,0 +1,45 @@ +// @(#)root/core/metacling:$Id$ +// Author: Javier Lopez-Gomez 16/07/2021 + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT_TClingDiagnostics +#define ROOT_TClingDiagnostics + +#include "clang/Frontend/TextDiagnosticPrinter.h" +#include "llvm/Support/raw_ostream.h" + +#include + +namespace clang { + class LangOptions; +} + +/// \brief Uses `clang::TextDiagnosticPrinter` to format diagnostics, which +/// are then passed to a user-specified function. +/// +class TClingDelegateDiagnosticPrinter : public clang::TextDiagnosticPrinter { +public: + typedef void (*handler_t)(clang::DiagnosticsEngine::Level Level, + const std::string &Info); +private: + std::string fOS_out; + llvm::raw_string_ostream fOS; + handler_t fHandler; + +public: + TClingDelegateDiagnosticPrinter(clang::DiagnosticOptions *DiagOpts, + clang::LangOptions &LangOpts, handler_t fn); + ~TClingDelegateDiagnosticPrinter() override = default; + + void HandleDiagnostic(clang::DiagnosticsEngine::Level Level, + const clang::Diagnostic &Info) override; +}; + +#endif // ROOT_TClingDiagnostics From 72d0d6310f1041c9bc42aacf0bc8b53403695b16 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 9 Sep 2021 16:15:41 +0200 Subject: [PATCH 053/577] [skip-ci] Add missing "s" (#8980) --- documentation/doxygen/makeinput.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/doxygen/makeinput.sh b/documentation/doxygen/makeinput.sh index 444cac71c29b6..8677195a573b7 100755 --- a/documentation/doxygen/makeinput.sh +++ b/documentation/doxygen/makeinput.sh @@ -68,10 +68,10 @@ echo " ../../tmva/ \\" >> Doxyfile_INPUT echo " ../../roofit/ \\" >> Doxyfile_INPUT echo " ../../tree/ \\" >> Doxyfile_INPUT echo " ../../sql/ \\" >> Doxyfile_INPUT -echo " ../../tutorial/ \\" >> Doxyfile_INPUT +echo " ../../tutorials/ \\" >> Doxyfile_INPUT echo " ../../bindings/tpython/ \\" >> Doxyfile_INPUT echo " ../../bindings/pyroot/ \\" >> Doxyfile_INPUT -echo " ../../bindings/ \\" >> Doxyfile_INPUT +echo " ../../bindings/r/ \\" >> Doxyfile_INPUT # echo " ../../core/clib/ \\" >> Doxyfile_INPUT # echo " ../../core/lzma/ \\" >> Doxyfile_INPUT From 42ddeb5bdbf938f78416213cd2e68741bb6c97df Mon Sep 17 00:00:00 2001 From: Ahmat Date: Fri, 10 Sep 2021 08:46:54 +0100 Subject: [PATCH 054/577] [GSoC][TMVA][SOFIE] Add RNN operator (#8825) * Add RNN operator * Removed files from PR * Add missing default constructor * Add tests for RNN * Fix standard library headers handling * Add missing header for RNN * Small fixes * Fix RNN with different sequence lengths * Add documentation --- tmva/sofie/inc/TMVA/OperatorList.hxx | 1 + tmva/sofie/inc/TMVA/RModel.hxx | 14 +- tmva/sofie/inc/TMVA/ROperator_RNN.hxx | 132 ++++ tmva/sofie/inc/TMVA/ROperator_RNN.icc | 583 ++++++++++++++++++ tmva/sofie/test/TestCustomModelsFromONNX.cxx | 258 +++++++- tmva/sofie/test/TestCustomModelsFromROOT.cxx | 258 +++++++- .../sofie/test/input_models/RNNBatchwise.onnx | Bin 0 -> 404 bytes .../test/input_models/RNNBidirectional.onnx | Bin 0 -> 862 bytes .../RNNBidirectionalBatchwise.onnx | Bin 0 -> 871 bytes tmva/sofie/test/input_models/RNNDefaults.onnx | Bin 0 -> 544 bytes .../sofie/test/input_models/RNNSeqLength.onnx | Bin 0 -> 545 bytes tmva/sofie/test/input_models/RNNSequence.onnx | Bin 0 -> 739 bytes .../input_models/RNNSequenceBatchwise.onnx | Bin 0 -> 748 bytes .../references/RNNBatchwise.ref.hxx | 5 + .../references/RNNBidirectional.ref.hxx | 19 + .../RNNBidirectionalBatchwise.ref.hxx | 18 + .../references/RNNDefaults.ref.hxx | 9 + .../references/RNNSeqLength.ref.hxx | 13 + .../references/RNNSequence.ref.hxx | 14 + .../references/RNNSequenceBatchwise.ref.hxx | 14 + .../inc/TMVA/RModelParser_ONNX.hxx | 4 +- tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 89 +++ 22 files changed, 1422 insertions(+), 9 deletions(-) create mode 100644 tmva/sofie/inc/TMVA/ROperator_RNN.hxx create mode 100644 tmva/sofie/inc/TMVA/ROperator_RNN.icc create mode 100644 tmva/sofie/test/input_models/RNNBatchwise.onnx create mode 100644 tmva/sofie/test/input_models/RNNBidirectional.onnx create mode 100644 tmva/sofie/test/input_models/RNNBidirectionalBatchwise.onnx create mode 100644 tmva/sofie/test/input_models/RNNDefaults.onnx create mode 100644 tmva/sofie/test/input_models/RNNSeqLength.onnx create mode 100644 tmva/sofie/test/input_models/RNNSequence.onnx create mode 100644 tmva/sofie/test/input_models/RNNSequenceBatchwise.onnx create mode 100644 tmva/sofie/test/input_models/references/RNNBatchwise.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNBidirectional.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNBidirectionalBatchwise.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNDefaults.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNSeqLength.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNSequence.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/RNNSequenceBatchwise.ref.hxx diff --git a/tmva/sofie/inc/TMVA/OperatorList.hxx b/tmva/sofie/inc/TMVA/OperatorList.hxx index 9495719deeb4b..f914bd5a3eb3e 100644 --- a/tmva/sofie/inc/TMVA/OperatorList.hxx +++ b/tmva/sofie/inc/TMVA/OperatorList.hxx @@ -2,3 +2,4 @@ #include "TMVA/ROperator_Gemm.hxx" #include "TMVA/ROperator_Relu.hxx" #include "TMVA/ROperator_Conv.hxx" +#include "TMVA/ROperator_RNN.hxx" diff --git a/tmva/sofie/inc/TMVA/RModel.hxx b/tmva/sofie/inc/TMVA/RModel.hxx index 6b5fe6b434661..d8dddc45e0706 100644 --- a/tmva/sofie/inc/TMVA/RModel.hxx +++ b/tmva/sofie/inc/TMVA/RModel.hxx @@ -1,6 +1,7 @@ #ifndef TMVA_SOFIE_RMODEL #define TMVA_SOFIE_RMODEL +#include #include #include #include @@ -34,11 +35,12 @@ private: std::string fFileName; //file name of original model file for identification std::string fParseTime; //UTC date and time string at parsing + std::string fGC; //generated code - std::set fNeededBlasRoutines = {}; + std::unordered_set fNeededBlasRoutines; - const std::vector fAllowedStdLib = {"algorithm"}; - std::set fNeededStdLib = {"vector"}; + const std::unordered_set fAllowedStdLib = {"vector", "algorithm", "cmath"}; + std::unordered_set fNeededStdLib = {"vector"}; @@ -70,9 +72,9 @@ public: fNeededBlasRoutines.insert(routine); } } - void AddNeededStdLib(std::string libname){ - for (auto& i: fAllowedStdLib){ - if ( i == libname) fNeededStdLib.insert(libname); + void AddNeededStdLib(std::string libname) { + if (fAllowedStdLib.find(libname) != fAllowedStdLib.end()) { + fNeededStdLib.insert(libname); } } void AddOutputTensorNameList(std::vector outputtensornames); diff --git a/tmva/sofie/inc/TMVA/ROperator_RNN.hxx b/tmva/sofie/inc/TMVA/ROperator_RNN.hxx new file mode 100644 index 0000000000000..42b40469ad0c0 --- /dev/null +++ b/tmva/sofie/inc/TMVA/ROperator_RNN.hxx @@ -0,0 +1,132 @@ +#ifndef TMVA_SOFIE_ROPERATOR_RNN +#define TMVA_SOFIE_ROPERATOR_RNN + +#include "TMVA/RModel.hxx" +#include "TMVA/ROperator.hxx" +#include "TMVA/SOFIE_common.hxx" + +#include +#include +#include + +namespace TMVA { +namespace Experimental { +namespace SOFIE { + +/*! \brief Recurrent Neural Network operator + * + * Inference code generation for one-layer vanilla RNN. Supports forward, reverse and bidirectional RNNs. + * See the ONNX documentation + * for details about the supported RNN architectures. + */ +template class ROperator_RNN final : public ROperator { + private: + std::vector fAttrActivationAlpha; ///< Scaling values used by some activation functions + std::vector fAttrActivationBeta; ///< Scaling values used by some activation functions + std::vector fAttrActivations; ///< Activation functions + float fAttrClip; ///< Clip threshold + std::string fAttrDirection; ///< Direction of processing + size_t fAttrHiddenSize; ///< Number of the hidden layers + size_t fAttrLayout; ///< Data layout + + std::string fNX; ///< Name of the input + std::string fNW; ///< Name of the weights + std::string fNR; ///< Name of the recurrence + std::string fNB; ///< Name of the bias + std::string fNSequence_lens; ///< Name of the length of the sequences + std::string fNInitial_h; ///< Name of the initial value of the hidden states + std::string fNY; ///< Name of the output + std::string fNY_h; ///< Name of the last sequence of the output + + std::vector fShapeX; ///< Shape of the input + std::vector fShapeW; ///< Shape of the weights + std::vector fShapeR; ///< Shape of the recurrence + std::vector fShapeB; ///< Shape of the bias + std::vector fShapeSequence_lens; ///< Shape of the length of the sequences + std::vector fShapeInitial_h; ///< Shape of the initial value of the hidden states + std::vector fShapeY; ///< Shape of the output + std::vector fShapeY_h; ///< Shape of the last sequence of the output + + std::string fType; ///< Type of the tensors + + public: + /*! Default constructor of ROperator_RNN */ + ROperator_RNN() {} + + /*! \brief Constructor of ROperator_RNN from the attributes + * + * \param activation_alpha scaling values used by some activation functions + * \param activation_beta scaling values used by some activation functions + * \param activations activation functions + * \param clip clip threshold + * \param direction direction of processing of the sequneces + * \param hidden_size number of hidden layers + * \param layout data layout + * \param nameX name of the input tensor + * \param nameW name of the weight tensor + * \param nameR name of the recurrence tensor + * \param nameB name of the bias tensor + * \param nameSequence_lens name of the length of the sequences + * \param nameInitial_h name of the initial value of the hidden states + * \param nameY name of the output + * \param nameY_h name of the last sequence of the output + */ + ROperator_RNN(std::vector activation_alpha, + std::vector activation_beta, + std::vector activations, float clip, + std::string direction, size_t hidden_size, size_t layout, + std::string nameX, std::string nameW, std::string nameR, + std::string nameB, std::string nameSequence_lens, + std::string nameInitial_h, std::string nameY, + std::string nameY_h) + : fAttrActivationAlpha(activation_alpha), + fAttrActivationBeta(activation_beta), fAttrActivations(activations), + fAttrClip(clip), fAttrDirection(direction), + fAttrHiddenSize(hidden_size), fAttrLayout(layout), + fNX(UTILITY::Clean_name(nameX)), fNW(UTILITY::Clean_name(nameW)), + fNR(UTILITY::Clean_name(nameR)), fNB(UTILITY::Clean_name(nameB)), + fNSequence_lens(UTILITY::Clean_name(nameSequence_lens)), + fNInitial_h(UTILITY::Clean_name(nameInitial_h)), + fNY(UTILITY::Clean_name(nameY)), fNY_h(UTILITY::Clean_name(nameY_h)) { + if (std::is_same::value) { + fType = "float"; + } else { + throw std::runtime_error( + "TMVA SOFIE Encountered unsupported type parsing a RNN operator"); + } + } + + /*! \brief Infers the type of the output tensors + * + * \param input type of the input tensors + */ + std::vector TypeInference(std::vector input); + + /*! \brief Infers the shape of the output tensors + * + * \param input shape of the input tensors + */ + std::vector> + ShapeInference(std::vector> input); + + /*! \brief Initialize the model + * + * \param model Model + */ + void Initialize(RModel &model); + + /*! \brief Generates the inference code + * + * \param OpName name of the operator + */ + std::string Generate(std::string OpName); +}; + +} // namespace SOFIE +} // namespace Experimental +} // namespace TMVA + +// Implementation of the ROperator_RNN class +#include "TMVA/ROperator_RNN.icc" + +#endif diff --git a/tmva/sofie/inc/TMVA/ROperator_RNN.icc b/tmva/sofie/inc/TMVA/ROperator_RNN.icc new file mode 100644 index 0000000000000..a159fd074304f --- /dev/null +++ b/tmva/sofie/inc/TMVA/ROperator_RNN.icc @@ -0,0 +1,583 @@ +#ifndef TMVA_SOFIE_ROPERATOR_RNN_I +#define TMVA_SOFIE_ROPERATOR_RNN_I + +namespace TMVA { +namespace Experimental { +namespace SOFIE { + +template +auto ROperator_RNN::TypeInference(std::vector input) +-> std::vector { + ETensorType out = input[0]; + return {out, out}; +} + +template +auto ROperator_RNN::ShapeInference(std::vector> input) +-> std::vector> { + size_t num_directions = input[1][0]; + size_t hidden_size = input[1][1]; + if (fAttrLayout == 0) { + size_t seq_length = input[0][0]; + size_t batch_size = input[0][1]; + std::vector> ret( + {{seq_length, num_directions, batch_size, hidden_size}, + {num_directions, batch_size, hidden_size}}); + return ret; + } else { + size_t batch_size = input[0][0]; + size_t seq_length = input[0][1]; + std::vector> ret( + {{batch_size, seq_length, num_directions, hidden_size}, + {batch_size, num_directions, hidden_size}}); + return ret; + } +} + +template +auto ROperator_RNN::Initialize(RModel &model) +-> void { + // Check the input and output tensors + if (!model.CheckIfTensorAlreadyExist(fNX)) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNX + + " is not found in model."); + } + fShapeX = model.GetTensorShape(fNX); + if (fShapeX.size() != 3) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNX + + " is not of 3 dimensions."); + } + if (!model.CheckIfTensorAlreadyExist(fNW)) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNW + + " is not found in model."); + } + fShapeW = model.GetTensorShape(fNW); + if (fShapeW.size() != 3) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNW + + " is not of 3 dimensions."); + } + if (!model.CheckIfTensorAlreadyExist(fNR)) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNR + + " is not found in model."); + } + fShapeR = model.GetTensorShape(fNR); + if (fShapeR.size() != 3) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + fNR + + " is not of 3 dimensions."); + } + if (!fNB.empty()) { + if (!model.CheckIfTensorAlreadyExist(fNB)) { + throw std::runtime_error("TMVA SOFIE RNN op input tensor " + fNB + + " is not found in model."); + } + fShapeB = model.GetTensorShape(fNB); + if (fShapeB.size() != 2 && fShapeB.size() != 4) { + throw std::runtime_error("TMVA SOFIE RNN op input tensor " + fNB + + " is not of 2 or 4 dimensions."); + } + if (fShapeB.size() == 2) { + // Broadcasting the bias + auto original_data = model.GetInitializedTensorData(fNB); + size_t num_directions = fShapeW[0]; + size_t seq_length = (fAttrLayout == 0) ? fShapeX[0] : fShapeX[1]; + size_t batch_size = (fAttrLayout == 0) ? fShapeX[1] : fShapeX[0]; + if (fType == "float") { + float *original_bias = static_cast(original_data.get()); + float *new_bias = new float[num_directions * seq_length * + batch_size * fAttrHiddenSize]; + float sum[fAttrHiddenSize]; + for (size_t direction = 0; direction < num_directions; + direction++) { + for (size_t h = 0; h < fAttrHiddenSize; h++) { + sum[h] = original_bias[direction * 2 * fAttrHiddenSize + h] + + original_bias[(2 * direction + 1) * fAttrHiddenSize + h]; + } + for (size_t seq = 0; seq < seq_length; seq++) { + for (size_t batch = 0; batch < batch_size; batch++) { + size_t bias_offset = + direction * seq_length * batch_size * fAttrHiddenSize + + seq * batch_size * fAttrHiddenSize + batch * fAttrHiddenSize; + std::copy(sum, sum + fAttrHiddenSize, new_bias + bias_offset); + } + } + } + std::vector new_bias_shape = {num_directions, seq_length, + batch_size, fAttrHiddenSize}; + std::shared_ptr new_bias_ptr(new_bias, std::default_delete()); + model.UpdateInitializedTensor(fNB, model.GetTensorType(fNB), + new_bias_shape, new_bias_ptr); + fShapeB = model.GetTensorShape(fNB); + } + } + } + if (!fNSequence_lens.empty()) { + if (!model.CheckIfTensorAlreadyExist(fNSequence_lens)) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + + fNSequence_lens + "is not found in model."); + } + fShapeSequence_lens = model.GetTensorShape(fNSequence_lens); + if (fShapeSequence_lens.size() != 1) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + + fNSequence_lens + " is not of 1 dimension."); + } + } + if (!fNInitial_h.empty()) { + if (!model.CheckIfTensorAlreadyExist(fNInitial_h)) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + + fNInitial_h + " is not found in model."); + } + fShapeInitial_h = model.GetTensorShape(fNInitial_h); + if (fShapeInitial_h.size() != 3) { + throw std::runtime_error("TMVA SOFIE RNN Op input tensor " + + fNInitial_h + " is not of 3 dimensions."); + } + } + if (!fNY.empty()) { + fShapeY = ShapeInference({fShapeX, fShapeW})[0]; + if (!model.CheckIfTensorAlreadyExist(fNY)) { + model.AddIntermediateTensor(fNY, model.GetTensorType(fNX), fShapeY); + } + } + if (!fNY_h.empty()) { + fShapeY_h = ShapeInference({fShapeX, fShapeW})[1]; + if (!model.CheckIfTensorAlreadyExist(fNY_h)) { + model.AddIntermediateTensor(fNY_h, model.GetTensorType(fNX), + fShapeY_h); + } + } + // Check the attributes + for (auto &activation : fAttrActivations) { + if (activation != "Relu" && activation != "Tanh" && + activation != "Sigmoid" && activation != "Affine" && + activation != "LeakyRelu" && activation != "ThresholdRelu" && + activation != "ScaledTanh" && activation != "HardSigmoid" && + activation != "Elu" && activation != "Softsign" && + activation != "Softplus") { + throw std::runtime_error("TMVA SOFIE - Activation function " + + activation + " not implemented"); + } + } + if (fAttrDirection != "forward" && fAttrDirection != "backward" && + fAttrDirection != "bidirectional") { + throw std::runtime_error( + "TMVA SOFIE - Invalid RNN direction fAttrDirection = " + + fAttrDirection); + } + if (fAttrHiddenSize != fShapeW[1]) { + throw std::runtime_error( + "TMVA SOFIE - fAttrHiddenSize must be equal to " + + std::to_string(fShapeW[1])); + } + if (fAttrLayout > 1) { + throw std::runtime_error( + "TMVA SOFIE - Layout fAttrLayout = " + std::to_string(fAttrLayout) + + " must be 0 (timewise) or 1 (batchwise)"); + } + if (fAttrActivations.empty()) { + if (fAttrDirection == "bidirectional") { + fAttrActivations = {"Tanh", "Tanh"}; + } else { + fAttrActivations = {"Tanh"}; + } + } + // Add needed standard library headers + model.AddNeededStdLib("cmath"); +} + +template +auto ROperator_RNN::Generate(std::string OpName) +-> std::string { + OpName = "op_" + OpName; + std::stringstream out; + + size_t seq_length = (fAttrLayout == 0) ? fShapeX[0] : fShapeX[1]; + size_t batch_size = (fAttrLayout == 0) ? fShapeX[1] : fShapeX[0]; + size_t input_size = fShapeX[2]; + size_t num_directions = fShapeW[0]; + + // set the input + if (fAttrLayout == 0) { + if (fType == "float") { + out << "\t" << "float *" << OpName << "_input = tensor_" << fNX << ";\n"; + } + } else { + if (fType == "float") { + out << "\t" << "float " << OpName << "_input[" << seq_length * batch_size * input_size << "];\n"; + } + out << "\t" << "for(size_t seq = 0; seq < " << seq_length << "; seq++) {\n"; + out << "\t" << "\t" << "for(size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "\t" << "for(size_t i = 0; i < " << input_size << "; i++) {\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_input[seq * " << batch_size * input_size + << " + batch * " << input_size << " + i] = " << "tensor_" << fNX << "[batch * " + << seq_length * input_size << " + seq * " << input_size << " + i];\n"; + out << "\t" << "\t" << "\t" << "}\n"; + out << "\t" << "\t" << "}\n"; + out << "\t" << "}\n"; + } + + // Set the initial hidden state + if (!fNInitial_h.empty()) { + if (fAttrLayout == 0) { + if (fType == "float") { + out << "\t" << "float *" << OpName << "_initial_hidden_state = " << " tensor_" + << fNInitial_h << ";\n"; + } + } else { + if (fType == "float") { + out << "float " << OpName << "_initial_hidden_state[" << num_directions * batch_size * + fAttrHiddenSize << "];\n"; + } + for (size_t direction = 0; direction < num_directions; direction++) { + out << "\t" << "for(size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "for(size_t h = 0; h < " << fAttrHiddenSize << "; h++) {\n"; + out << "\t" << "\t" << "\t" << OpName << "_initial_hidden_state[" + << direction * batch_size * fAttrHiddenSize << " + batch * " << fAttrHiddenSize + << " + h] = tensor_" << fNInitial_h << "[batch * " << num_directions * fAttrHiddenSize + << " + " << direction * fAttrHiddenSize << " + h];\n"; + out << "\t" << "\t" << "}\n"; + out << "\t" << "}\n"; + } + } + } + + if (fType == "float") { + out << "\t" << "float " << OpName << "_feedforward[" << seq_length * batch_size * fAttrHiddenSize << "];\n"; + } + + // Set the hidden state + if (fAttrLayout == 0 && !fNY.empty()) { + if (fType == "float") { + out << "\t" << "float *" << OpName << "_hidden_state = tensor_" << fNY << ";\n"; + } + } else { + if (fType == "float") { + out << "\t" << "float " << OpName << "_hidden_state[" << seq_length * num_directions * + batch_size * fAttrHiddenSize << "];\n"; + } + } + + out << "\t" << "char " << OpName << "_transA = 'N';\n"; + out << "\t" << "char " << OpName << "_transB = 'T';\n"; + out << "\t" << "int " << OpName << "_m = " << seq_length * batch_size << ";\n"; + out << "\t" << "int " << OpName << "_n = " << fAttrHiddenSize << ";\n"; + out << "\t" << "int " << OpName << "_k = " << input_size << ";\n"; + if (fType == "float") { + out << "\t" << "float " << OpName << "_alpha = 1.;\n"; + out << "\t" << "float " << OpName << "_beta = .0;\n"; + } + if (!fNB.empty()) { + out << "\t" << "int " << OpName << "_bias_size = " << seq_length * batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "int " << OpName << "_incx = 1;\n"; + out << "\t" << "int " << OpName << "_incy = 1;\n"; + } + + for (size_t direction = 0; direction < num_directions; direction++) { + // feedforward = input * W^T + bias + if (fType == "float") { + if (direction == 0) { + out << "\t" << "BLAS::sgemm_(&" << OpName << "_transB, &" << OpName << "_transA, &" + << OpName <<"_n, &" << OpName << "_m, &" << OpName << "_k, &" << OpName + << "_alpha, tensor_" << fNW << ", &" << OpName << "_k, " << OpName + << "_input, &" << OpName << "_k, &" << OpName << "_beta, " << OpName + << "_feedforward, &" << OpName << "_n);\n"; + } else { + out << "\t" << "size_t " << OpName << "_w_offset = " << fAttrHiddenSize * input_size + << ";\n"; + out << "\t" << "BLAS::sgemm_(&" << OpName << "_transB, &" << OpName << "_transA, &" + << OpName <<"_n, &" << OpName << "_m, &" << OpName << "_k, &" << OpName + << "_alpha, tensor_" << fNW << " + " << OpName << "_w_offset, &" << OpName + << "_k, " << OpName << "_input, &" << OpName << "_k, &" << OpName << "_beta, " + << OpName << "_feedforward, &" << OpName << "_n);\n"; + } + } + // Add the bias + if (!fNB.empty()) { + if (fType == "float") { + if (direction == 0) { + out << "\t" << "BLAS::saxpy_(&" << OpName << "_bias_size, &" << OpName << "_alpha, tensor_" + << fNB << ", &" << OpName << "_incx, " << OpName << "_feedforward, &" << OpName << "_incy);\n"; + } else { + out << "\t" << "size_t " << OpName << "_bias_offset = " + << seq_length * batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "BLAS::saxpy_(&" << OpName << "_bias_size, &" << OpName << "_alpha, tensor_" + << fNB << " + " << OpName << "_bias_offset, &" << OpName << "_incx, " << OpName + << "_feedforward, &" << OpName << "_incy);\n"; + } + } + } + + // Copy feedforward into hidden state + out << "\t" << "for (size_t seq = 0; seq < " << seq_length << "; seq++) {\n"; + out << "\t" << "\t" << "size_t offset = seq * " << batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t size = " << batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t h_offset = seq * " + << num_directions * batch_size * fAttrHiddenSize << " + " + << direction * batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_feedforward + offset, " << OpName + << "_feedforward + offset + size, " << OpName << "_hidden_state + h_offset);\n"; + out << "\t" << "}\n"; + + + out << "\t" << "for (size_t seq = 0; seq < " << seq_length << "; seq++) {\n"; + if (fAttrDirection == "backward" || direction == 1) { + out << "\t" << "\t" << "size_t index = " << seq_length - 1 << " - seq;\n"; + } else { + out << "\t" << "\t" << "size_t index = seq;\n"; + } + + out << "\t" << "\t" << "int m2 = " << batch_size << ";\n"; + out << "\t" << "\t" << "size_t offset = index * " + << num_directions * batch_size * fAttrHiddenSize << " + " + << direction * batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t size = " << batch_size * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "if (seq == 0) {\n"; + if (!fNInitial_h.empty()) { + // hidden_state = hidden_state + initial_hidden_state * R^T + out << "\t" << "\t" << "\t" << "size_t r_offset = " + << direction * fAttrHiddenSize * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "\t" << "size_t initial_hidden_state_offset = " + << direction * batch_size * fAttrHiddenSize << ";\n"; + if (fType == "float") { + out << "\t" << "\t" << "\t" << "BLAS::sgemm_(&" << OpName << "_transB, &" << OpName + << "_transA, &" << OpName << "_n, &m2, &" << OpName << "_n, &" << OpName + << "_alpha, tensor_" << fNR << " + r_offset, &" << OpName << "_n, " << OpName + << "_initial_hidden_state + initial_hidden_state_offset, &" << OpName << "_n, &" + << OpName << "_alpha, " << OpName << "_hidden_state + offset, &" << OpName << "_n);\n"; + } + } + out << "\t" << "\t" << "} else {\n"; + // hidden_state = hidden_state + previous_hidden_state * R^T + out << "\t" << "\t" << "\t" << "size_t r_offset = " + << direction * fAttrHiddenSize * fAttrHiddenSize << ";\n"; + if (fAttrDirection == "backward" || direction == 1) { + out << "\t" << "\t" << "\t" << "size_t previous_offset = (index + 1) * " + << num_directions * batch_size * fAttrHiddenSize + << " + " << direction * batch_size * fAttrHiddenSize << ";\n"; + } else { + out << "\t" << "\t" << "\t" << "size_t previous_offset = (seq - 1) * " + << num_directions * batch_size * fAttrHiddenSize + << " + " << direction * batch_size * fAttrHiddenSize << ";\n"; + } + if (fType == "float") { + out << "\t" << "\t" << "\t" << "BLAS::sgemm_(&" << OpName << "_transB, &" << OpName << "_transA, &" + << OpName << "_n, &m2, &" << OpName << "_n, &" << OpName << "_alpha, tensor_" << fNR + << " + r_offset, &" << OpName << "_n, " << OpName << "_hidden_state + previous_offset, &" + << OpName << "_n, &" << OpName << "_alpha, " << OpName << "_hidden_state + offset, &" + << OpName << "_n);\n"; + } + out << "\t" << "\t" << "}\n"; + + // Clip the elements of the hidden state into the range [-fAttrClip, fAttrClip] + if (fAttrClip > .0) { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + if (fType == "float") { + out << "\t" << "\t" << "\t" << "float x = (" << OpName << "_hidden_state[i] > " << -fAttrClip + << ") ? " << OpName << "_hidden_state[i] : " << -fAttrClip << ";\n"; + } + out << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = (x < " << fAttrClip + << ") ? x : " << fAttrClip << ";\n"; + out << "\t" << "\t" << "}\n"; + } + + // Apply the activation function to the hidden state + if (fAttrActivations[direction] == "Relu") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "if (" << OpName << "_hidden_state[i] < 0.)\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = 0.;\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "Tanh") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + if (fType == "float") { + out << "\t" << "\t" << "\t" << "float ex = std::exp(-2 * " << OpName << "_hidden_state[i]);\n"; + } + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = (1. - ex) / (1. + ex);\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "Sigmoid") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = 1. / (1. + std::exp(-" << OpName + << "_hidden_state[i]));\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "Affine") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = " << fAttrActivationAlpha[direction] + << " * " << OpName << "_hidden_state[i] + " << fAttrActivationBeta[direction] << ";\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "ScaledTanh") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + if (fType == "float") { + out << "\t" << "\t" << "\t" << "float ex = std::exp(-2 * " << fAttrActivationBeta[direction] + << " * "<< OpName << "_hidden_state[i]);\n"; + } + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = " << fAttrActivationAlpha[direction] + << " * (1. - ex) / (1. + ex);\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "HardSigmoid") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + if (fType == "float") { + out << "\t" << "\t" << "\t" << "float a = " << fAttrActivationAlpha[direction] << " * " + << OpName << "_hidden_state[i] + " << fAttrActivationBeta[direction] << ";\n"; + out << "\t" << "\t" << "\t" << "float b = (a > 0.) ? a : 0.;\n"; + } + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = (b < 1.) ? b : 1.;\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "LeakyRelu") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "if (" << OpName << "_hidden_state[i] < 0.)\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = " << fAttrActivationAlpha[direction] + << " * " << OpName << "_hidden_state[i];\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "ThresholdRelu") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "if (" << OpName << "_hidden_state[i] < " + << fAttrActivationAlpha[direction] << ")\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = 0.;\n"; + out << "\t" << "\t" << "}"; + } else if (fAttrActivations[direction] == "Elu") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "if (" << OpName << "_hidden_state[i] < 0.)\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = " << fAttrActivationAlpha[direction] + << " * std::exp(" << OpName << "_hidden_state[i] - 1.);\n"; + out << "\t" << "\t" << "}\n"; + } else if (fAttrActivations[direction] == "Softsign") { + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = " << OpName + << "_hidden_state[i] / (1. + abs(" << OpName << "_hidden_state[i]));\n"; + out << "\t" << "\t" << "}\n"; + } else { // fAttrActivations[direction] = Softplus + out << "\t" << "\t" << "for (size_t i = offset; i < offset + size; i++) {\n"; + out << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[i] = log(1. + std::exp(" + << OpName << "_hidden_state[i]));\n"; + out << "\t" << "\t" << "}\n"; + out << "\t" << "}\n"; + } + out << "\t" << "}\n"; + } + + // Padding the hidden state for RNN with different sequence lengths + if (!fNSequence_lens.empty()) { + out << "\t" << "for (size_t seq = 0; seq < " << seq_length << "; seq++) {\n"; + out << "\t" << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "\t" << "if (seq >= tensor_" << fNSequence_lens << "[batch]) {\n"; + out << "\t" << "\t" << "\t" << "\t" << "for (size_t h = 0; h < " << fAttrHiddenSize << "; h++) {\n"; + if (num_directions == 1) { + out << "\t" << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[seq * " + << num_directions * batch_size * fAttrHiddenSize << " + batch * " + << fAttrHiddenSize << " + h] = 0.;\n"; + } else { + out << "\t" << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[seq * " + << num_directions * batch_size * fAttrHiddenSize << " + batch * " + << fAttrHiddenSize << " + h] = 0.;\n"; + out << "\t" << "\t" << "\t" << "\t" << "\t" << OpName << "_hidden_state[seq * " + << num_directions * batch_size * fAttrHiddenSize << " + " << batch_size * fAttrHiddenSize + << " + batch * " << fAttrHiddenSize << " + h] = 0.;\n"; + } + out << "\t" << "\t" << "\t" << "\t" << "}\n"; + out << "\t" << "\t" << "\t" << "}\n"; + out << "\t" << "\t" << "}\n"; + out << "\t" << "}\n"; + } + + // Copy the hidden state into y and y_h + if (fAttrLayout == 0) { + if (!fNY_h.empty()) { + if (fNSequence_lens.empty()) { + size_t yh_size = batch_size * fAttrHiddenSize; + if (fAttrDirection == "backward") { + out << "\t" << "std::copy(" << OpName << "_hidden_state, " << OpName << "_hidden_state + " + << yh_size << ", tensor_" << fNY_h << ");\n"; + } else { + size_t offset = (seq_length - 1) * num_directions * batch_size * fAttrHiddenSize; + out << "\t" << "std::copy(" << OpName << "_hidden_state + " << offset << ", " << OpName + << "_hidden_state + " << offset << " + " << yh_size << ", tensor_" << fNY_h << ");\n"; + } + if (num_directions == 2) { + out << "\t" << "std::copy(" << OpName << "_hidden_state + " << yh_size << ", " << OpName + << "_hidden_state + " << 2 * yh_size << ", tensor_" << fNY_h << " + " << yh_size << ");\n"; + } + } else { // RNN with different sequence lengths + if (fAttrDirection == "backward") { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "size_t offset = batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + offset);\n"; + out << "\t" << "}\n"; + } else { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "size_t seq = " << "tensor_" << fNSequence_lens << "[batch] - 1;\n"; + out << "\t" << "\t" << "size_t offset = seq * " << num_directions * batch_size * fAttrHiddenSize + << " + batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t yh_offset = batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + yh_offset);\n"; + out << "\t" << "}\n"; + } + if (num_directions == 2) { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "size_t offset = " << batch_size * fAttrHiddenSize + << " + batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t yh_offset = " << batch_size * fAttrHiddenSize + << " + batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + yh_offset);\n"; + out << "\t" << "}\n"; + } + } + } + } else { // fAttrLayout=1 + if (!fNY.empty()) { + for (size_t direction = 0; direction < num_directions; direction++) { + out << "\t" << "for (size_t seq = 0; seq < " << seq_length << "; seq++) {\n"; + out << "\t" << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "\t" << "size_t offset = seq * " << num_directions * batch_size * fAttrHiddenSize + << " + " << direction * batch_size * fAttrHiddenSize << " + batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "\t" << "size_t y_offset = batch * " << seq_length * num_directions * fAttrHiddenSize + << " + seq * " << num_directions * fAttrHiddenSize << " + " << direction * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY << " + y_offset);\n"; + out << "\t" << "\t" << "}\n"; + out << "\t" << "}\n"; + } + } + if (!fNY_h.empty()) { + if (fAttrDirection == "backward") { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "size_t offset = batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t yh_offset = batch * " << num_directions * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + yh_offset);\n"; + out << "\t" << "}\n"; + } else { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + if (fNSequence_lens.empty()) { + out << "\t" << "\t" << "size_t seq = " << seq_length - 1 << ";\n"; + } else { + out << "\t" << "\t" << "size_t seq = " << "tensor_" << fNSequence_lens << "[batch] - 1;\n"; + } + out << "\t" << "\t" << "size_t offset = seq * " << num_directions * batch_size * fAttrHiddenSize + << " + batch * " << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t yh_offset = batch * " << num_directions * fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + yh_offset);\n"; + out << "\t" << "}\n"; + } + if (num_directions == 2) { + out << "\t" << "for (size_t batch = 0; batch < " << batch_size << "; batch++) {\n"; + out << "\t" << "\t" << "size_t offset = " << batch_size * fAttrHiddenSize << " + batch * " + << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "size_t yh_offset = batch * " << num_directions * fAttrHiddenSize << " + " + << fAttrHiddenSize << ";\n"; + out << "\t" << "\t" << "std::copy(" << OpName << "_hidden_state + offset, " << OpName + << "_hidden_state + offset + " << fAttrHiddenSize << ", tensor_" << fNY_h << " + yh_offset);\n"; + out << "\t" << "}\n"; + } + } + } + + return out.str(); +} + +} // namespace SOFIE +} // namespace Experimental +} // namespace TMVA + +#endif diff --git a/tmva/sofie/test/TestCustomModelsFromONNX.cxx b/tmva/sofie/test/TestCustomModelsFromONNX.cxx index 9216285fbb72a..795c3d5931728 100644 --- a/tmva/sofie/test/TestCustomModelsFromONNX.cxx +++ b/tmva/sofie/test/TestCustomModelsFromONNX.cxx @@ -27,9 +27,30 @@ #include "ConvWithAsymmetricPadding_FromONNX.hxx" #include "input_models/references/ConvWithAsymmetricPadding.ref.hxx" +#include "RNNBatchwise_FromONNX.hxx" +#include "input_models/references/RNNBatchwise.ref.hxx" + +#include "RNNBidirectional_FromONNX.hxx" +#include "input_models/references/RNNBidirectional.ref.hxx" + +#include "RNNBidirectionalBatchwise_FromONNX.hxx" +#include "input_models/references/RNNBidirectionalBatchwise.ref.hxx" + +#include "RNNDefaults_FromONNX.hxx" +#include "input_models/references/RNNDefaults.ref.hxx" + +#include "RNNSeqLength_FromONNX.hxx" +#include "input_models/references/RNNSeqLength.ref.hxx" + +#include "RNNSequence_FromONNX.hxx" +#include "input_models/references/RNNSequence.ref.hxx" + +#include "RNNSequenceBatchwise_FromONNX.hxx" +#include "input_models/references/RNNSequenceBatchwise.ref.hxx" + #include "gtest/gtest.h" -constexpr float DEFAULT_TOLERANCE = 1e-6f; +constexpr float DEFAULT_TOLERANCE = 1e-3f; TEST(ONNX, Linear16) { @@ -218,3 +239,238 @@ TEST(ONNX, ConvWithAsymmetricPadding) EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); } } + +TEST(ONNX, RNNBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(6); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBatchwise_ExpectedOutput::all_ones) / sizeof(float)); + EXPECT_EQ(output_yh.size(), sizeof(RNNBatchwise_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = RNNBatchwise_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct[i]), TOLERANCE); + EXPECT_LE(std::abs(output_yh[i] - correct[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNBidirectional) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({0., 0.01, 0.02, 0.03, 0.04, 0.05, + 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, + 0.12, 0.13, 0.14, 0.15, 0.16, 0.17}); + std::vector> output = TMVA_SOFIE_RNNBidirectional::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBidirectional_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNBidirectional_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNBidirectional_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNBidirectional_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNBidirectionalBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0, 0.01, 0.06, 0.07, 0.12, 0.13, + 0.02, 0.03, 0.08, 0.09, 0.14, 0.15, + 0.04, 0.05, 0.1, 0.11, 0.16, 0.17}); + std::vector> output = TMVA_SOFIE_RNNBidirectionalBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBidirectionalBatchwise_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNBidirectionalBatchwise_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNBidirectionalBatchwise_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNBidirectionalBatchwise_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNDefaults) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(9); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNDefaults::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNDefaults_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNDefaults_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNDefaults_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNDefaults_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNSeqLength) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(18); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNSeqLength::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSeqLength_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSeqLength_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSeqLength_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSeqLength_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNSequence) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0.01, -0.01, 0.08, 0.09, 0.001, + 0.09, -0.7, -0.35, 0.0, 0.001, + 0.16, -0.19, 0.003, 0.0, 0.0001, + 0.05, -0.09, 0.013, 0.5, 0.005, + 0.2, -0.05, 0.062, -0.04, -0.04, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.06, 0.087, 0.01, 0.3, -0.001, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0}); + std::vector> output = TMVA_SOFIE_RNNSequence::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSequence_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSequence_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSequence_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSequence_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ONNX, RNNSequenceBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0.01, -0.01, 0.08, 0.09, 0.001, + 0.05, -0.09, 0.013, 0.5, 0.005, + 0.06, 0.087, 0.01, 0.3, -0.001, + 0.09, -0.7, -0.35, 0.0, 0.001, + 0.2, -0.05, 0.062, -0.04, -0.04, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.16, -0.19, 0.003, 0.0, 0.0001, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0}); + std::vector> output = TMVA_SOFIE_RNNSequenceBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSequenceBatchwise_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSequenceBatchwise_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSequenceBatchwise_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSequenceBatchwise_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} diff --git a/tmva/sofie/test/TestCustomModelsFromROOT.cxx b/tmva/sofie/test/TestCustomModelsFromROOT.cxx index e326e9a710800..8fc54d88806fd 100644 --- a/tmva/sofie/test/TestCustomModelsFromROOT.cxx +++ b/tmva/sofie/test/TestCustomModelsFromROOT.cxx @@ -27,9 +27,30 @@ #include "ConvWithAsymmetricPadding_FromROOT.hxx" #include "input_models/references/ConvWithAsymmetricPadding.ref.hxx" +#include "RNNBatchwise_FromROOT.hxx" +#include "input_models/references/RNNBatchwise.ref.hxx" + +#include "RNNBidirectional_FromROOT.hxx" +#include "input_models/references/RNNBidirectional.ref.hxx" + +#include "RNNBidirectionalBatchwise_FromROOT.hxx" +#include "input_models/references/RNNBidirectionalBatchwise.ref.hxx" + +#include "RNNDefaults_FromROOT.hxx" +#include "input_models/references/RNNDefaults.ref.hxx" + +#include "RNNSeqLength_FromROOT.hxx" +#include "input_models/references/RNNSeqLength.ref.hxx" + +#include "RNNSequence_FromROOT.hxx" +#include "input_models/references/RNNSequence.ref.hxx" + +#include "RNNSequenceBatchwise_FromROOT.hxx" +#include "input_models/references/RNNSequenceBatchwise.ref.hxx" + #include "gtest/gtest.h" -constexpr float DEFAULT_TOLERANCE = 1e-6f; +constexpr float DEFAULT_TOLERANCE = 1e-3f; TEST(ROOT, Linear16) { @@ -218,3 +239,238 @@ TEST(ROOT, ConvWithAsymmetricPadding) EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); } } + +TEST(ROOT, RNNBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(6); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBatchwise_ExpectedOutput::all_ones) / sizeof(float)); + EXPECT_EQ(output_yh.size(), sizeof(RNNBatchwise_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = RNNBatchwise_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct[i]), TOLERANCE); + EXPECT_LE(std::abs(output_yh[i] - correct[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNBidirectional) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({0., 0.01, 0.02, 0.03, 0.04, 0.05, + 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, + 0.12, 0.13, 0.14, 0.15, 0.16, 0.17}); + std::vector> output = TMVA_SOFIE_RNNBidirectional::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBidirectional_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNBidirectional_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNBidirectional_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNBidirectional_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNBidirectionalBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0, 0.01, 0.06, 0.07, 0.12, 0.13, + 0.02, 0.03, 0.08, 0.09, 0.14, 0.15, + 0.04, 0.05, 0.1, 0.11, 0.16, 0.17}); + std::vector> output = TMVA_SOFIE_RNNBidirectionalBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNBidirectionalBatchwise_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNBidirectionalBatchwise_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNBidirectionalBatchwise_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNBidirectionalBatchwise_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNDefaults) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(9); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNDefaults::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNDefaults_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNDefaults_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNDefaults_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNDefaults_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNSeqLength) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(18); + std::iota(input.begin(), input.end(), 1.0f); + std::vector> output = TMVA_SOFIE_RNNSeqLength::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSeqLength_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSeqLength_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSeqLength_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSeqLength_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNSequence) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0.01, -0.01, 0.08, 0.09, 0.001, + 0.09, -0.7, -0.35, 0.0, 0.001, + 0.16, -0.19, 0.003, 0.0, 0.0001, + 0.05, -0.09, 0.013, 0.5, 0.005, + 0.2, -0.05, 0.062, -0.04, -0.04, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.06, 0.087, 0.01, 0.3, -0.001, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0}); + std::vector> output = TMVA_SOFIE_RNNSequence::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSequence_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSequence_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSequence_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSequence_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} + +TEST(ROOT, RNNSequenceBatchwise) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input({ + 0.01, -0.01, 0.08, 0.09, 0.001, + 0.05, -0.09, 0.013, 0.5, 0.005, + 0.06, 0.087, 0.01, 0.3, -0.001, + 0.09, -0.7, -0.35, 0.0, 0.001, + 0.2, -0.05, 0.062, -0.04, -0.04, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.16, -0.19, 0.003, 0.0, 0.0001, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0}); + std::vector> output = TMVA_SOFIE_RNNSequenceBatchwise::infer(input.data()); + std::vector output_y = output[0]; + std::vector output_yh = output[1]; + + // Checking output size + EXPECT_EQ(output_y.size(), sizeof(RNNSequenceBatchwise_ExpectedOutput::all_ones_y) / sizeof(float)); + + float *correct_y = RNNSequenceBatchwise_ExpectedOutput::all_ones_y; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_y[i] - correct_y[i]), TOLERANCE); + } + + // Checking output size + EXPECT_EQ(output_yh.size(), sizeof(RNNSequenceBatchwise_ExpectedOutput::all_ones_yh) / sizeof(float)); + + float *correct_yh = RNNSequenceBatchwise_ExpectedOutput::all_ones_yh; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output_yh[i] - correct_yh[i]), TOLERANCE); + } +} diff --git a/tmva/sofie/test/input_models/RNNBatchwise.onnx b/tmva/sofie/test/input_models/RNNBatchwise.onnx new file mode 100644 index 0000000000000000000000000000000000000000..fa91478e627479ecd9fda8d85328a50a96dafc50 GIT binary patch literal 404 zcma)&&1%9x6h?bzhC01k34?#7o08=~U!WjJmPK6zA=-_MNlFGJDM?z#)3_vQCA9p8!vfu5apLHgvD`XA>>L8Px0u)w* n-~!Z-q5=LDAU4lPO%AX}s~j?$Rp-gg6V@GH%r#he%<29CkgH?{ literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/RNNBidirectional.onnx b/tmva/sofie/test/input_models/RNNBidirectional.onnx new file mode 100644 index 0000000000000000000000000000000000000000..48f2f0a7a002ac3b484c7c536bf900bdab4e8844 GIT binary patch literal 862 zcmZuwZAep581`&8cX#Gw+;UBHR!$}Ej|d@uD7$A|qD<3h1)C$7n;Y)Nn5mnQePEwL zf@ayLBuhs@q^6-iD(~4^6qZRpG73a%g&AUoLj5qaGqW`5zlnWlgE7;st7XykIX_3{HDm4}svdK_kEAa|d zHm^|Tsm!DH+B~k`vmelGJfuq8!hwVsGW-CrS}1o26;47Z^Q0>6!rz6>?FUkpfeM%4 za5z2IN}<}Rq5MF?Dq*bKcBstf)er>JDFQmcNsM{U&QsgY4qCj6n#^)U}ac=le;1~@JJmTO!_49z{J*r z1wD%B)qsuHYQ}ysD=t5mJ3NcBiW;!-*trKo_g-@TaE4(x z&xAWC6VTSM5#6?D;)wYIN_m&a@xaLD6F+qHcKsjIM0F@V_<5?GYfEVr2PSg$vai#) z^vEsoj87+?sK^mR+10qK^(=n;q4r@1JCDY^?dWbtCY~$Zf_cER8)zw!ii?Rc82%Lh z?@O~j(oaf9?_XRu*C&FV$2p&*7iZ`6bCh;cjHH~zr(VhNXjmDv%6hSGMk6L@Z=g+7 z7wXw}r|;*{`=~-!r;l~W3=VS$2eLw_yJ|f;lVCZf!!5z3wfN$S;b4PmGjH^S;mfzMSXKs_fB7 z*ajddg1`uY009rxZn4}ex@@A^DZ1P+N^(ga$>KCS7*Nb8i_MM{rBGPNCc zJW`p1fh@_y*m7=yve*%ls2b3%WqaBjn zF1pNasan)gKA>RLFw$u`SmyQU0126R(v)9b$6Gu$N0sCj*#cTYQ?x<@QVc_5P3TRN z+K|`tja#3-4GASzxblWm=wf#wx2or-dYE7ueBHM#|>`=fDUR|xwbY6C+F zA7vgG*?O?3M-jamu<>fGyle0V9vyDfKQBr{-{&?5gwGimJe*Dmssn-^O!15ZHV&4;|ia;6s|M4W zWUgNIWd@fXzA2yfrpm`Fa^zrkHSTIXgCD)GebB)!pm9$-y3>(~=S#O>9`Ni2T1lj0 zA|eci-{4n1IqN0;lyrFilDhdm8SFg9c@@1lJ7<9F*>}6|$B}!eBDGE*X;&Gjq$xR+ zd;*_*8HLCC)d71^5c{)&sJ&nhH-`>kv#J-T&g$g2r0ZxC)rCf%TIB_$Q}*j7xZVDI z#Q(LIX)UoK!$1uUm>5VVSb`!<7?%+WLQn*Ygzz7NGOZ>?W@2Fsk)p$y1hgsPA8RuZ v(j*})r8KQuZuFHyEcUY|Kw^I_Ttg}};ff{vBI9BBV=NmbOfOQrLKFKF-gy>O literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/RNNDefaults.onnx b/tmva/sofie/test/input_models/RNNDefaults.onnx new file mode 100644 index 0000000000000000000000000000000000000000..c829c14c8282aa0702dc80c406f7905a7a8ff510 GIT binary patch literal 544 zcmbu6&q~8U5XPPSvFoIUuxeZJ7B8|_Z{lg`MGrj$A-0#YZBnuj5=~M?!RPRrxAJv5 z8!AZYL3ChPm~X$|2Q#d9^XcFR!XrYA5FtnoQ*KY^S!hR-i5Q@#mW_T{#UgAs literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/RNNSeqLength.onnx b/tmva/sofie/test/input_models/RNNSeqLength.onnx new file mode 100644 index 0000000000000000000000000000000000000000..84ea9ddd190749033bd9e18305a285aafaecd809 GIT binary patch literal 545 zcmbtR!AiqG6!axoyS~N{R&6WZa+1A?H_2&liu4eL*j`H7M6*y5n?^;!|L_>_>e*lM zLp%$)WK(WwAVQ z&XXcp9qt01k=H$yJ*&Kg{>rI`Q9gc)Q(>O literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/RNNSequence.onnx b/tmva/sofie/test/input_models/RNNSequence.onnx new file mode 100644 index 0000000000000000000000000000000000000000..6a0ff84e84f58a660f1b62f1722d50f11ddcaa19 GIT binary patch literal 739 zcmd;Jx4Om3)x*fe7{SFD&cztS#puMvTbx>0nwpoK8lRJzS1iOBDa0HZpP|GYJhOT#{LqSdy8aSM0?Sl9-pVfRRIskBcQaC$m750SFc_GHQu)ai(Mzr2>`a=P9wL zy;nO|BW0o2PR#0|7480rMA zRz?m+4mJ)}0Y;^YS5u4Zre5I$;+1xr4AfRNU>?{>s_Ed&l1WyVc|O z7j^aR@k?TH$QN?nZ^)rz^NPjhz>UUad)CE8``5Xj-0#E~t~C$h4mO}WCNReBYP45B z)V6Q;4&D7dUQPRX3poz_dYiplalh=+@bgBglhK@#Ce z5{y6zHXsH|1Ywb2ixLK=G9f-L9-vViK$RdJJW5hww1E_!nD9M~8%>_(_Vq79X a0RfNzR2PV5OOoUQrB5`Qz*0_30(<}qK*#g| literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/RNNSequenceBatchwise.onnx b/tmva/sofie/test/input_models/RNNSequenceBatchwise.onnx new file mode 100644 index 0000000000000000000000000000000000000000..f29d3e71d3d716cf0ef65c6eedc762f7a7820aba GIT binary patch literal 748 zcmd;Jw|dOV)x*fe7{SFD&cztS#puMvTbx>0nwpoK8lRJzS1iOBDa0HZpP|GYJhOT#{LqSdy8aSM0?Sl9-pVfRRIskBcQaC$m750SFc_GHQu)ai(Mzr2>`a=P9wL zy;nO|BW!3g9Ei2yAMhC0D1 zu_QU8JhM1etCf+1k%NtcRe({c;?>k5yQx<=fq13e>qp=ASxw^J_foCUes06FeI5ZO z2R6T&Y`5+6ReOP#)9t>qUAJF9C3OEXu4i@uz2df&5ghwh9Gh$}^ZL^M5*2s*wZC%q z@7}R@|8Dj8{Y71Ud;F4E9P)*n_ZxEP*t}w~IdG#f*`9TA(f)PrC-*xshHK4(xPuMo zjtPu$yBh7)54G*vy+e0@k5|)v-a?K8zuso=R^0H*e%8#1_T~H79oU3a>}4&O4@|6+ zKk)Uoxcx-_L-wy9x$V!oH_^^kC&ca&!@PY=+U5H{e#x?zI&gd6rws@8=Z4wtmzbJj zznIZx--6By`$c6t?N!+h+GT5-*|C4<+wZVMfB%(P^X!=`xc75!J+?2xl4Za6_COma z#vm make_ROperator_Transpose(const onnx::NodeProto& nodep std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); using factoryMethodMap = std::unordered_map (*)(const onnx::NodeProto&, const onnx::GraphProto&, std::unordered_map&)>; @@ -35,7 +36,8 @@ const factoryMethodMap mapOptypeOperator = { {"Gemm", &make_ROperator_Gemm}, {"Transpose", &make_ROperator_Transpose}, {"Relu", &make_ROperator_Relu}, - {"Conv", &make_ROperator_Conv} + {"Conv", &make_ROperator_Conv}, + {"RNN", &make_ROperator_RNN} }; diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx index 7a7849f3c1711..4b7e471c29f39 100644 --- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx @@ -214,6 +214,93 @@ std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, return op; } +std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { + + ETensorType input_type; + + auto input_name = nodeproto.input(0); + auto it = tensor_type.find(input_name); + if (it != tensor_type.end()) { + input_type = it->second; + } else { + throw + std::runtime_error("TMVA::SOFIE ONNX Parser RNN op has input tensor " + input_name + " but its type is not yet registered"); + } + + std::unique_ptr op; + + std::vector attr_activation_alpha = {}; + std::vector attr_activation_beta = {}; + std::vector attr_activations = {}; + float attr_clip = 0.; + std::string attr_direction = "forward"; + size_t attr_hidden_size = 0; + size_t attr_layout = 0; + + for (int_t i = 0; i < nodeproto.attribute_size(); i++) { + std::string attribute_name = nodeproto.attribute(i).name(); + if (attribute_name == "activation_alpha") { + attr_activation_alpha = {nodeproto.attribute(i).floats().begin(), nodeproto.attribute(i).floats().end()}; + } else if (attribute_name == "activation_beta") { + attr_activation_beta = {nodeproto.attribute(i).floats().begin(), nodeproto.attribute(i).floats().end()}; + } else if (attribute_name == "activations") { + attr_activations = {nodeproto.attribute(i).strings().begin(), nodeproto.attribute(i).strings().end()}; + } else if (attribute_name == "clip") { + attr_clip = nodeproto.attribute(i).i(); + } else if (attribute_name == "direction") { + attr_direction = nodeproto.attribute(i).s(); + } else if (attribute_name == "hidden_size") { + attr_hidden_size = nodeproto.attribute(i).i(); + } else if (attribute_name == "layout") { + attr_layout = nodeproto.attribute(i).i(); + } else { + std::cout << "TMVA SOFIE Warning - Model Loading - Attribute " << attribute_name << " in OperatorNode " << nodeproto.name() << " is not defined in ONNX IR and not applied!\n"; + } + } + + // Optional inputs and outputs + std::string name_b = ""; + std::string name_sequence_lens = ""; + std::string name_initial_h = ""; + std::string name_y = ""; + std::string name_y_h = ""; + if (nodeproto.input_size() > 3) { + name_b = nodeproto.input(3); + } + if (nodeproto.input_size() > 4) { + name_sequence_lens = nodeproto.input(4); + } + if (nodeproto.input_size() > 5) { + name_initial_h = nodeproto.input(5); + } + if (nodeproto.output_size() > 0) { + name_y = nodeproto.output(0); + } + if (nodeproto.output_size() > 1) { + name_y_h = nodeproto.output(1); + } + + switch(input_type) { + case ETensorType::FLOAT: + op.reset(new ROperator_RNN(attr_activation_alpha, attr_activation_beta, attr_activations, + attr_clip, attr_direction, attr_hidden_size, attr_layout, + nodeproto.input(0), nodeproto.input(1), nodeproto.input(2), + name_b, name_sequence_lens, name_initial_h, name_y, name_y_h)); + break; + default: + throw + std::runtime_error("TMVA::SOFIE - Unsupported - Operator RNN does not yet support input type " + std::to_string(static_cast(input_type))); + } + + auto output_type = op->TypeInference({input_type, input_type}); + for (size_t i = 0; i < 2; i++) { + if (tensor_type.find(nodeproto.output(i)) == tensor_type.end()) { + tensor_type[nodeproto.output(i)] = output_type[i]; + } + } + + return op; +} } //INTERNAL @@ -347,6 +434,8 @@ RModel RModelParser_ONNX::Parse(std::string filename){ rmodel.AddBlasRoutines({"Gemm", "Gemv"}); } else if (op_type == "Conv") { rmodel.AddBlasRoutines({"Gemm", "Axpy"}); + } else if (op_type == "RNN") { + rmodel.AddBlasRoutines({"Gemm", "Axpy"}); } } From bd41e8e85ddc0a344b17949ab5b33a3b3c628fb7 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 17:42:52 +0200 Subject: [PATCH 055/577] [DF] Make RResultHandle default-constructible Default-constructed RResultHandles might serve as placeholders in certain cases, the same way that a default constructor for RResultPtrs is sometimes useful e.g. as an array element. This means that RResultHandle can now be null, so some sanity checks are needed in its methods. --- tree/dataframe/inc/ROOT/RResultHandle.hxx | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RResultHandle.hxx b/tree/dataframe/inc/ROOT/RResultHandle.hxx index 4b4eeeb035d92..e836eb25c0010 100644 --- a/tree/dataframe/inc/ROOT/RResultHandle.hxx +++ b/tree/dataframe/inc/ROOT/RResultHandle.hxx @@ -25,12 +25,12 @@ namespace ROOT { namespace RDF { class RResultHandle { - ROOT::Detail::RDF::RLoopManager* fLoopManager; //< Pointer to the loop manager + ROOT::Detail::RDF::RLoopManager *fLoopManager = nullptr; //< Pointer to the loop manager /// Owning pointer to the action that will produce this result. /// Ownership is shared with RResultPtrs and RResultHandles that refer to the same result. std::shared_ptr fActionPtr; std::shared_ptr fObjPtr; ///< Type erased shared pointer encapsulating the wrapped result - const std::type_info& fType; ///< Type of the wrapped result + const std::type_info *fType = nullptr; ///< Type of the wrapped result // The ROOT::RDF::RunGraphs helper has to access the loop manager to check whether two RResultHandles belong to the same computation graph friend void RunGraphs(std::vector); @@ -48,21 +48,28 @@ class RResultHandle { /// Compare given type to the type of the wrapped result and throw if the types don't match. void CheckType(const std::type_info& type) { - if (fType != type) { + if (*fType != type) { std::stringstream ss; ss << "Got the type " << ROOT::Internal::RDF::TypeID2TypeName(type) - << " but the RResultHandle refers to a result of type " << ROOT::Internal::RDF::TypeID2TypeName(fType) + << " but the RResultHandle refers to a result of type " << ROOT::Internal::RDF::TypeID2TypeName(*fType) << "."; throw std::runtime_error(ss.str()); } } + void ThrowIfNull() + { + if (fObjPtr == nullptr) + throw std::runtime_error("Trying to access the contents of a null RResultHandle."); + } + public: template - RResultHandle(const RResultPtr &resultPtr) : fLoopManager(resultPtr.fLoopManager), fActionPtr(resultPtr.fActionPtr), fObjPtr(resultPtr.fObjPtr), fType(typeid(T)) {} + RResultHandle(const RResultPtr &resultPtr) : fLoopManager(resultPtr.fLoopManager), fActionPtr(resultPtr.fActionPtr), fObjPtr(resultPtr.fObjPtr), fType(&typeid(T)) {} RResultHandle(const RResultHandle&) = default; RResultHandle(RResultHandle&&) = default; + RResultHandle() = default; /// Get the pointer to the encapsulated object. /// Triggers event loop and execution of all actions booked in the associated RLoopManager. @@ -70,6 +77,7 @@ public: template T* GetPtr() { + ThrowIfNull(); CheckType(typeid(T)); return static_cast(Get()); } @@ -80,6 +88,7 @@ public: template const T& GetValue() { + ThrowIfNull(); CheckType(typeid(T)); return *static_cast(Get()); } @@ -94,6 +103,8 @@ public: /// res.IsReady(); // true /// ~~~ bool IsReady() const { + if (fActionPtr == nullptr) + return false; return fActionPtr->HasRun(); } From d32efb1e1c4e241b5e5bae2f669f9e6895f96135 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 10 Sep 2021 17:33:21 +0200 Subject: [PATCH 056/577] Fix in Cocoa. XSGui crashed in M1 (#8746) Patch proposed by Timur --- graf2d/cocoa/src/CocoaPrivate.mm | 8 ++++---- graf2d/cocoa/src/QuartzWindow.mm | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/graf2d/cocoa/src/CocoaPrivate.mm b/graf2d/cocoa/src/CocoaPrivate.mm index 38a0079ba3e28..434521ab61bcc 100644 --- a/graf2d/cocoa/src/CocoaPrivate.mm +++ b/graf2d/cocoa/src/CocoaPrivate.mm @@ -92,9 +92,9 @@ { const_drawable_iterator drawableIter = fDrawables.find(drawableID); -#ifdef DEBUG_ROOT_COCOA if (drawableIter == fDrawables.end()) { - NSLog(@"Fatal error: requested non-existing drawable %lu", drawableID); + NSLog(@"Fatal error: requested drawable %lu is not found among currently valid drawables.", drawableID); + /* //We do not care about efficiency, ROOT's gonna die on assert :) std::vector::const_iterator deletedDrawable = std::find(fFreeDrawableIDs.begin(), fFreeDrawableIDs.end(), drawableID); if (deletedDrawable != fFreeDrawableIDs.end()) { @@ -102,9 +102,9 @@ } else { NSLog(@"This drawable not found among allocated/deleted drawables"); } + */ + return nil; } -#endif - assert(drawableIter != fDrawables.end() && "GetDrawable, non-existing drawable requested"); return drawableIter->second.Get(); } diff --git a/graf2d/cocoa/src/QuartzWindow.mm b/graf2d/cocoa/src/QuartzWindow.mm index 922c5478be52e..5c731598ab690 100644 --- a/graf2d/cocoa/src/QuartzWindow.mm +++ b/graf2d/cocoa/src/QuartzWindow.mm @@ -1443,6 +1443,12 @@ - (void) setDrawableSize : (NSSize) newSize assert(!(newSize.height < 0) && "-setDrawableSize:, height is negative"); NSRect frame = self.frame; + // Some sanity check (rather random and inconsistent, based on the recent M1 crash/assert): + if (frame.origin.x < -100000. || frame.origin.x > 100000.) { + // Hope nobody has screens like this! + NSLog(@"Attempting to set a frame with X: %g", frame.origin.x); + frame.origin.x = 0.; // Otherwise, AppKit seems to use uint(-1) to initialise frames ... sometimes? + } //dY is potentially a titlebar height. const CGFloat dY = fContentView ? frame.size.height - fContentView.frame.size.height : 0.; //Adjust the frame. From 28e8cb7d3e3d051d98d884ba43afd69636e7e3be Mon Sep 17 00:00:00 2001 From: Nicolas Morange Date: Fri, 10 Sep 2021 21:34:19 +0200 Subject: [PATCH 057/577] [io] Accelerate TDirectoryFile Find/Get functions (#8932) * [io] Accelerate TDirectoryFile Find/Get functions Fix issue root-project#8046 by implementing the fix from Axel for other similar functions in TDirectoryFile Co-authored-by: Nicolas Morange Co-authored-by: Philippe Canal --- io/io/src/TDirectoryFile.cxx | 100 +++++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/io/io/src/TDirectoryFile.cxx b/io/io/src/TDirectoryFile.cxx index 46648f8241ce4..51be7983d1056 100644 --- a/io/io/src/TDirectoryFile.cxx +++ b/io/io/src/TDirectoryFile.cxx @@ -788,17 +788,25 @@ TKey *TDirectoryFile::FindKeyAny(const char *keyname) const DecodeNameCycle(keyname, name, cycle, kMaxLen); - TIter next(GetListOfKeys()); - TKey *key; - while ((key = (TKey *) next())) { - if (!strcmp(name, key->GetName())) - if ((cycle == 9999) || (cycle >= key->GetCycle())) { + auto listOfKeys = dynamic_cast(GetListOfKeys()); + if (!listOfKeys) { + Error("FindKeyAny", "Unexpected type of TDirectoryFile::fKeys!"); + return nullptr; + } + + if (const TList *keyList = listOfKeys->GetListForObject(name)) { + for (auto key: TRangeDynCast(*keyList)) { + if (key && !strcmp(key->GetName(), name) + && (cycle == 9999 || cycle >= key->GetCycle())) { const_cast(this)->cd(); // may be we should not make cd ??? return key; } + } } + //try with subdirectories - next.Reset(); + TIter next(GetListOfKeys()); + TKey *key; while ((key = (TKey *) next())) { //if (!strcmp(key->GetClassName(),"TDirectory")) { if (strstr(key->GetClassName(),"TDirectory")) { @@ -832,17 +840,24 @@ TObject *TDirectoryFile::FindObjectAny(const char *aname) const DecodeNameCycle(aname, name, cycle, kMaxLen); - TIter next(GetListOfKeys()); - TKey *key; - //may be a key in the current directory - while ((key = (TKey *) next())) { - if (!strcmp(name, key->GetName())) { - if (cycle == 9999) return key->ReadObj(); - if (cycle >= key->GetCycle()) return key->ReadObj(); + auto listOfKeys = dynamic_cast(GetListOfKeys()); + if (!listOfKeys) { + Error("FindObjectAny", "Unexpected type of TDirectoryFile::fKeys!"); + return nullptr; + } + + if (const TList *keyList = listOfKeys->GetListForObject(name)) { + for (auto key: TRangeDynCast(*keyList)) { + if (key && !strcmp(key->GetName(), name) + && (cycle == 9999 || cycle >= key->GetCycle())) { + return key->ReadObj(); + } } } + //try with subdirectories - next.Reset(); + TIter next(GetListOfKeys()); + TKey *key; while ((key = (TKey *) next())) { //if (!strcmp(key->GetClassName(),"TDirectory")) { if (strstr(key->GetClassName(),"TDirectory")) { @@ -946,19 +961,23 @@ TObject *TDirectoryFile::Get(const char *namecycle) //*-*---------------------Case of Key--------------------- // =========== - TKey *key; - TIter nextkey(GetListOfKeys()); - while ((key = (TKey *) nextkey())) { - if (strcmp(namobj,key->GetName()) == 0) { - if ((cycle == 9999) || (cycle == key->GetCycle())) { + auto listOfKeys = dynamic_cast(GetListOfKeys()); + if (!listOfKeys) { + Error("Get", "Unexpected type of TDirectoryFile::fKeys!"); + return nullptr; + } + + if (const TList *keyList = listOfKeys->GetListForObject(namobj)) { + for (auto key: TRangeDynCast(*keyList)) { + if (key && !strcmp(key->GetName(), namobj) + && (cycle == 9999 || cycle == key->GetCycle())) { TDirectory::TContext ctxt(this); - idcur = key->ReadObj(); - break; + return key->ReadObj(); } } } - return idcur; + return nullptr; } //////////////////////////////////////////////////////////////////////////////// @@ -1106,14 +1125,18 @@ TKey *TDirectoryFile::GetKey(const char *name, Short_t cycle) const { if (!fKeys) return nullptr; - // TIter::TIter() already checks for null pointers - TIter next( ((THashList *)(GetListOfKeys()))->GetListForObject(name) ); + auto listOfKeys = dynamic_cast(GetListOfKeys()); + if (!listOfKeys) { + Error("GetKey", "Unexpected type of TDirectoryFile::fKeys!"); + return nullptr; + } - TKey *key; - while (( key = (TKey *)next() )) { - if (!strcmp(name, key->GetName())) { - if ((cycle == 9999) || (cycle >= key->GetCycle())) + if (const TList *keyList = listOfKeys->GetListForObject(name)) { + for (auto key: TRangeDynCast(*keyList)) { + if (key && !strcmp(key->GetName(), name) + && (cycle == 9999 || cycle >= key->GetCycle())) { return key; + } } } @@ -1426,15 +1449,22 @@ Int_t TDirectoryFile::ReadKeys(Bool_t forceRead) Int_t TDirectoryFile::ReadTObject(TObject *obj, const char *keyname) { - if (!fFile) { Error("Read","No file open"); return 0; } - TKey *key = nullptr; - TIter nextkey(GetListOfKeys()); - while ((key = (TKey *) nextkey())) { - if (strcmp(keyname,key->GetName()) == 0) { - return key->Read(obj); + if (!fFile) { Error("ReadTObject","No file open"); return 0; } + auto listOfKeys = dynamic_cast(GetListOfKeys()); + if (!listOfKeys) { + Error("ReadTObject", "Unexpected type of TDirectoryFile::fKeys!"); + return 0; + } + + if (const TList *keyList = listOfKeys->GetListForObject(keyname)) { + for (auto key: TRangeDynCast(*keyList)) { + if (key && !strcmp(key->GetName(), keyname) ) { + return key->Read(obj); + } } } - Error("Read","Key not found"); + + Error("ReadTObject","Key not found"); return 0; } From e9a66f7aa5d153d70065af32a146dfc34136c99e Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Mon, 19 Jul 2021 16:42:48 +0200 Subject: [PATCH 058/577] add RooFit::TestStatistics This commit introduces a major refactoring of the RooAbs(Opt)TestStatistic-RooNLLVar inheritance tree into: 1. statistics-based classes on the one hand; 2. calculation/evaluation/optimization based classes on the other hand. The likelihood is the central unit on the statistics side. The RooAbsL class is implemented for four kinds of likelihoods: binned, unbinned, "subsidiary" (an optimization for numerical stability that gathers components like global observables) and "sum" (over multiple components of the other types). These classes provide ways to compute their components in parallelizable chunks that can be used by the calculator classes as they see fit. On top of the likelihood classes, we also provide for convenience a set of likelihood builders. The calculator "Wrapper" classes are abstract interfaces. These can be implemented for different kinds of algorithms, or with different kinds of optimization "back-ends" in mind. In an upcoming PR, we will introduce the fork-based multi-processing implementation based on RooFit::MultiProcess. Other possible implementations could use the GPU or external tools like TensorFlow. The coupling of all these classes to RooMinimizer is made via the MinuitFcnGrad class, which owns the Wrappers that calculate the likelihood components. --- roofit/roofitcore/CMakeLists.txt | 28 ++ roofit/roofitcore/inc/LinkDef.h | 1 + roofit/roofitcore/inc/RooAbsData.h | 9 + roofit/roofitcore/inc/RooDataHist.h | 7 + roofit/roofitcore/inc/RooMinimizer.h | 65 ++- .../LikelihoodGradientWrapper.h | 66 +++ .../inc/TestStatistics/LikelihoodSerial.h | 56 +++ .../inc/TestStatistics/LikelihoodWrapper.h | 101 ++++ .../inc/TestStatistics/MinuitFcnGrad.h | 166 +++++++ .../roofitcore/inc/TestStatistics/RooAbsL.h | 129 +++++ .../inc/TestStatistics/RooBinnedL.h | 45 ++ .../roofitcore/inc/TestStatistics/RooRealL.h | 63 +++ .../inc/TestStatistics/RooSubsidiaryL.h | 65 +++ .../roofitcore/inc/TestStatistics/RooSumL.h | 50 ++ .../inc/TestStatistics/RooUnbinnedL.h | 49 ++ .../roofitcore/inc/TestStatistics/kahan_sum.h | 88 ++++ .../inc/TestStatistics/likelihood_builders.h | 60 +++ .../inc/TestStatistics/optimization.h | 40 ++ .../TestStatistics/optional_parameter_types.h | 51 ++ roofit/roofitcore/src/RooMinimizer.cxx | 10 + .../LikelihoodGradientWrapper.cxx | 45 ++ .../src/TestStatistics/LikelihoodSerial.cxx | 105 ++++ .../src/TestStatistics/LikelihoodWrapper.cxx | 159 ++++++ .../src/TestStatistics/MinuitFcnGrad.cxx | 208 ++++++++ .../roofitcore/src/TestStatistics/RooAbsL.cxx | 451 +++++++++++++++++ .../src/TestStatistics/RooBinnedL.cxx | 163 +++++++ .../src/TestStatistics/RooRealL.cxx | 51 ++ .../src/TestStatistics/RooSubsidiaryL.cxx | 68 +++ .../roofitcore/src/TestStatistics/RooSumL.cxx | 90 ++++ .../src/TestStatistics/RooUnbinnedL.cxx | 185 +++++++ .../src/TestStatistics/kahan_sum.cxx | 31 ++ .../TestStatistics/likelihood_builders.cxx | 325 +++++++++++++ .../src/TestStatistics/optimization.cxx | 165 +++++++ .../optional_parameter_types.cxx | 40 ++ roofit/roofitcore/test/CMakeLists.txt | 3 + .../test/TestStatistics/RooRealL.cpp | 340 +++++++++++++ .../TestStatistics/testLikelihoodSerial.cxx | 452 ++++++++++++++++++ 37 files changed, 4029 insertions(+), 1 deletion(-) create mode 100644 roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h create mode 100644 roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h create mode 100644 roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h create mode 100644 roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooAbsL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooBinnedL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooRealL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooSumL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h create mode 100644 roofit/roofitcore/inc/TestStatistics/kahan_sum.h create mode 100644 roofit/roofitcore/inc/TestStatistics/likelihood_builders.h create mode 100644 roofit/roofitcore/inc/TestStatistics/optimization.h create mode 100644 roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h create mode 100644 roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooAbsL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooRealL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooSumL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/kahan_sum.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/optimization.cxx create mode 100644 roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx create mode 100644 roofit/roofitcore/test/TestStatistics/RooRealL.cpp create mode 100644 roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx diff --git a/roofit/roofitcore/CMakeLists.txt b/roofit/roofitcore/CMakeLists.txt index 089849d4de68d..b5809e40acd49 100644 --- a/roofit/roofitcore/CMakeLists.txt +++ b/roofit/roofitcore/CMakeLists.txt @@ -233,6 +233,20 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore RooFitLegacy/RooNameSet.h RooFitLegacy/RooSetPair.h RooFitLegacy/RooTreeData.h + TestStatistics/LikelihoodGradientWrapper.h + TestStatistics/LikelihoodWrapper.h + TestStatistics/LikelihoodSerial.h + TestStatistics/MinuitFcnGrad.h + TestStatistics/RooAbsL.h + TestStatistics/RooBinnedL.h + TestStatistics/RooSubsidiaryL.h + TestStatistics/RooSumL.h + TestStatistics/RooRealL.h + TestStatistics/RooUnbinnedL.h + TestStatistics/kahan_sum.h + TestStatistics/optional_parameter_types.h + TestStatistics/likelihood_builders.h + TestStatistics/optimization.h SOURCES src/BidirMMapPipe.cxx src/BidirMMapPipe.h @@ -449,6 +463,20 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore src/RooFitLegacy/RooMultiCatIter.cxx src/RooFitLegacy/RooNameSet.cxx src/RooFitLegacy/RooSetPair.cxx + src/TestStatistics/LikelihoodGradientWrapper.cxx + src/TestStatistics/LikelihoodWrapper.cxx + src/TestStatistics/LikelihoodSerial.cxx + src/TestStatistics/MinuitFcnGrad.cxx + src/TestStatistics/RooAbsL.cxx + src/TestStatistics/RooBinnedL.cxx + src/TestStatistics/RooSubsidiaryL.cxx + src/TestStatistics/RooSumL.cxx + src/TestStatistics/RooRealL.cxx + src/TestStatistics/RooUnbinnedL.cxx + src/TestStatistics/optional_parameter_types.cxx + src/TestStatistics/likelihood_builders.cxx + src/TestStatistics/kahan_sum.cxx + src/TestStatistics/optimization.cxx DICTIONARY_OPTIONS "-writeEmptyRootPCM" LIBRARIES diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h index 9b54f2b7e5ee1..2c2d14b7770e7 100644 --- a/roofit/roofitcore/inc/LinkDef.h +++ b/roofit/roofitcore/inc/LinkDef.h @@ -338,6 +338,7 @@ #pragma link C++ class RooUnitTest+ ; #pragma link C++ class RooMinimizer+ ; #pragma link C++ class RooMinimizerFcn+ ; +#pragma link C++ class RooFit::TestStatistics::RooRealL+ ; #pragma link C++ class RooAbsMoment+ ; #pragma link C++ class RooMoment+ ; #pragma link C++ class RooFirstMoment+ ; diff --git a/roofit/roofitcore/inc/RooAbsData.h b/roofit/roofitcore/inc/RooAbsData.h index 7a5b19a980fa4..6657583f9c1ad 100644 --- a/roofit/roofitcore/inc/RooAbsData.h +++ b/roofit/roofitcore/inc/RooAbsData.h @@ -47,6 +47,12 @@ class RooFormulaVar; namespace RooBatchCompute{ struct RunContext; } +namespace RooFit { +namespace TestStatistics { +class RooAbsL; +struct ConstantTermsOptimizer; +} +} // Writes a templated constructor for compatibility with ROOT builds using the @@ -321,6 +327,9 @@ class RooAbsData : public TNamed, public RooPrintable { friend class RooAbsReal ; friend class RooAbsOptTestStatistic ; friend class RooAbsCachedPdf ; + friend struct RooFit::TestStatistics::ConstantTermsOptimizer; + // for access into copied dataset: + friend class RooFit::TestStatistics::RooAbsL; virtual void cacheArgs(const RooAbsArg* owner, RooArgSet& varSet, const RooArgSet* nset=0, Bool_t skipZeroWeights=kFALSE) ; virtual void resetCache() ; diff --git a/roofit/roofitcore/inc/RooDataHist.h b/roofit/roofitcore/inc/RooDataHist.h index 59d4652932ea7..abcd1130f160a 100644 --- a/roofit/roofitcore/inc/RooDataHist.h +++ b/roofit/roofitcore/inc/RooDataHist.h @@ -35,6 +35,11 @@ class RooAbsArg; class RooCategory ; class RooPlot; class RooAbsLValue ; +namespace RooFit { +namespace TestStatistics { +class RooAbsL; +} +} class RooDataHist : public RooAbsData, public RooDirItem { public: @@ -222,6 +227,8 @@ class RooDataHist : public RooAbsData, public RooDirItem { friend class RooAbsCachedPdf ; friend class RooAbsCachedReal ; friend class RooDataHistSliceIter ; + // for access into copied dataset: + friend class RooFit::TestStatistics::RooAbsL; std::size_t calcTreeIndex(const RooAbsCollection& coords, bool fast) const; /// Legacy overload to calculate the tree index from the current value of `_vars`. diff --git a/roofit/roofitcore/inc/RooMinimizer.h b/roofit/roofitcore/inc/RooMinimizer.h index 835e71b0aa791..72ac76a7a0941 100644 --- a/roofit/roofitcore/inc/RooMinimizer.h +++ b/roofit/roofitcore/inc/RooMinimizer.h @@ -31,6 +31,7 @@ #include "RooMinimizerFcn.h" #include "RooGradMinimizerFcn.h" +#include "TestStatistics/RooAbsL.h" #include "RooSentinel.h" #include "RooMsgService.h" @@ -45,13 +46,24 @@ class RooRealVar ; class RooArgSet ; class TH2F ; class RooPlot ; +namespace RooFit { +namespace TestStatistics { +class MinuitFcnGrad; // this one is necessary due to circular include dependencies +class LikelihoodSerial; +class LikelihoodGradientSerial; +} +} // namespace RooFit class RooMinimizer : public TObject { public: - enum class FcnMode { classic, gradient }; + enum class FcnMode { classic, gradient, generic_wrapper }; explicit RooMinimizer(RooAbsReal &function, FcnMode fcnMode = FcnMode::classic); static std::unique_ptr create(RooAbsReal &function, FcnMode fcnMode = FcnMode::classic); + template + static std::unique_ptr create(std::shared_ptr likelihood); + ~RooMinimizer() override; enum Strategy { Speed=0, Balance=1, Robustness=2 } ; @@ -126,6 +138,11 @@ class RooMinimizer : public TObject { bool fitFcn() const; private: + template + RooMinimizer(std::shared_ptr likelihood, + LikelihoodWrapperT* /* used only for template deduction */ = static_cast(nullptr), + LikelihoodGradientWrapperT* /* used only for template deduction */ = static_cast(nullptr)); + Int_t _printLevel = 1; Int_t _status = -99; Bool_t _profile = kFALSE; @@ -150,4 +167,50 @@ class RooMinimizer : public TObject { ClassDefOverride(RooMinimizer,0) // RooFit interface to ROOT::Fit::Fitter } ; +// include here to avoid circular dependency issues in class definitions +#include "TestStatistics/MinuitFcnGrad.h" + +template +RooMinimizer::RooMinimizer(std::shared_ptr likelihood, LikelihoodWrapperT* /* value unused */, + LikelihoodGradientWrapperT* /* value unused */) : + _fcnMode(FcnMode::generic_wrapper) +{ + RooSentinel::activate(); + + if (_theFitter) + delete _theFitter; + _theFitter = new ROOT::Fit::Fitter; + _theFitter->Config().SetMinimizer(_minimizerType.c_str()); + setEps(1.0); // default tolerance + + _fcn = RooFit::TestStatistics::MinuitFcnGrad::create(likelihood, this, _verbose); + + // default max number of calls + _theFitter->Config().MinimizerOptions().SetMaxIterations(500 * _fcn->getNDim()); + _theFitter->Config().MinimizerOptions().SetMaxFunctionCalls(500 * _fcn->getNDim()); + + // Shut up for now + setPrintLevel(-1); + + // Use +0.5 for 1-sigma errors + setErrorLevel(likelihood->defaultErrorLevel()); + + // Declare our parameters to MINUIT + _fcn->Synchronize(_theFitter->Config().ParamsSettings(), _fcn->getOptConst(), _verbose); + + // Now set default verbosity + if (RooMsgService::instance().silentMode()) { + setPrintLevel(-1); + } else { + setPrintLevel(1); + } +} + +// static function +template +std::unique_ptr RooMinimizer::create(std::shared_ptr likelihood) { + return std::unique_ptr(new RooMinimizer(likelihood, static_cast(nullptr), + static_cast(nullptr))); +} + #endif diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h new file mode 100644 index 0000000000000..5135ecf2eadaf --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h @@ -0,0 +1,66 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_LikelihoodGradientWrapper +#define ROOT_ROOFIT_TESTSTATISTICS_LikelihoodGradientWrapper + +#include +#include +#include "Math/MinimizerOptions.h" + +#include +#include // shared_ptr + +// forward declaration +class RooMinimizer; + +namespace RooFit { +namespace TestStatistics { + +// forward declaration +class RooAbsL; +struct WrapperCalculationCleanFlags; + +class LikelihoodGradientWrapper { +public: + LikelihoodGradientWrapper(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean, std::size_t N_dim, RooMinimizer* minimizer); + virtual ~LikelihoodGradientWrapper() = default; + virtual LikelihoodGradientWrapper* clone() const = 0; + + virtual void fillGradient(double *grad) = 0; + + // synchronize minimizer settings with calculators in child classes + virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions &options); + virtual void synchronizeParameterSettings(const std::vector ¶meter_settings); + virtual void synchronizeParameterSettings(ROOT::Math::IMultiGenFunction* function, const std::vector ¶meter_settings) = 0; + // Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), + // but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values: + virtual void updateMinuitInternalParameterValues(const std::vector& minuit_internal_x); + virtual void updateMinuitExternalParameterValues(const std::vector& minuit_external_x); + + // completely depends on the implementation, so pure virtual + virtual bool usesMinuitInternalValues() = 0; + +protected: + std::shared_ptr likelihood_; + RooMinimizer * minimizer_; + std::shared_ptr calculation_is_clean_; +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_LikelihoodGradientWrapper diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h new file mode 100644 index 0000000000000..df385737be4c4 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h @@ -0,0 +1,56 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_LikelihoodSerial +#define ROOT_ROOFIT_LikelihoodSerial + +#include +#include "RooArgList.h" + +#include "Math/MinimizerOptions.h" + +#include + +namespace RooFit { +namespace TestStatistics { + +class LikelihoodSerial : public LikelihoodWrapper { +public: + LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, RooMinimizer *minimizer*/); + inline LikelihoodSerial *clone() const override { return new LikelihoodSerial(*this); } + + void initVars(); + + // TODO: implement override if necessary +// void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & options) override; + + void evaluate() override; + inline double getResult() const override { return result; } + +private: + double result = 0; + double carry = 0; + + RooArgList _vars; // Variables + RooArgList _saveVars; // Copy of variables + + LikelihoodType likelihood_type; +}; + +} +} + +#endif // ROOT_ROOFIT_LikelihoodSerial diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h new file mode 100644 index 0000000000000..609520e9d08e6 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h @@ -0,0 +1,101 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_LikelihoodWrapper +#define ROOT_ROOFIT_TESTSTATISTICS_LikelihoodWrapper + +#include "RooArgSet.h" +#include "RooAbsArg.h" // enum ConstOpCode + +#include +#include "Math/MinimizerOptions.h" + +#include // shared_ptr +#include + +// forward declaration +class RooMinimizer; + +namespace RooFit { +namespace TestStatistics { + +// forward declaration +class RooAbsL; +struct WrapperCalculationCleanFlags; + +enum class LikelihoodType { + unbinned, + binned, + subsidiary, + sum +}; + +// Previously, offsetting was only implemented for RooNLLVar components of a likelihood, +// not for RooConstraintSum terms. To emulate this behavior, use OffsettingMode::legacy. To +// also offset the RooSubsidiaryL component (equivalent of RooConstraintSum) of RooSumL +// likelihoods, use OffsettingMode::full. +enum class OffsettingMode { + legacy, + full +}; + +class LikelihoodWrapper { +public: + LikelihoodWrapper(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, RooMinimizer* minimizer*/); + virtual ~LikelihoodWrapper() = default; + virtual LikelihoodWrapper* clone() const = 0; + + virtual void evaluate() = 0; + virtual double getResult() const = 0; + + // synchronize minimizer settings with calculators in child classes + virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & options); + virtual void synchronizeParameterSettings(const std::vector ¶meter_settings); + // Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), + // but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values: + virtual void updateMinuitInternalParameterValues(const std::vector& minuit_internal_x); + virtual void updateMinuitExternalParameterValues(const std::vector& minuit_external_x); + + // necessary from MinuitFcnGrad to reach likelihood properties: + void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt); + double defaultErrorLevel() const; + virtual std::string GetName() const; + virtual std::string GetTitle() const; + inline virtual bool isOffsetting() const { return do_offset_; } + virtual void enableOffsetting(bool flag); + void setOffsettingMode(OffsettingMode mode); + inline double offset() const { return offset_; } + inline double offsetCarry() const { return offset_carry_; } + void setApplyWeightSquared(bool flag); + +protected: + std::shared_ptr likelihood_; + std::shared_ptr calculation_is_clean_; + + bool do_offset_ = false; + double offset_ = 0; + double offset_carry_ = 0; + double offset_save_ = 0; //! + double offset_carry_save_ = 0; //! + OffsettingMode offsetting_mode_ = OffsettingMode::legacy; + void applyOffsetting(double ¤t_value, double &carry); + void swapOffsets(); +}; + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_LikelihoodWrapper diff --git a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h new file mode 100644 index 0000000000000..6871f2bbf84e4 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h @@ -0,0 +1,166 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_MinuitFcnGrad +#define ROOT_ROOFIT_TESTSTATISTICS_MinuitFcnGrad + +#include "RooArgList.h" +#include "RooRealVar.h" +#include "TestStatistics/RooAbsL.h" +#include "TestStatistics/LikelihoodWrapper.h" +#include "TestStatistics/LikelihoodGradientWrapper.h" +//#include "TestStatistics/LikelihoodJob.h" +//#include "TestStatistics/LikelihoodGradientJob.h" +#include "RooAbsMinimizerFcn.h" + +#include +#include "Math/IFunction.h" // ROOT::Math::IMultiGradFunction + +// forward declaration +class RooAbsReal; +class RooMinimizer; + +namespace RooFit { +namespace TestStatistics { + +// forward declaration +class LikelihoodSerial; +class LikelihoodGradientSerial; + +// -- for communication with wrappers: -- +struct WrapperCalculationCleanFlags { + // indicate whether that part has been calculated since the last parameter update + bool likelihood = false; + bool gradient = false; + + void set_all(bool value) { + likelihood = value; + gradient = value; + } +}; + +class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimizerFcn { +public: + // factory + template + static MinuitFcnGrad *create(const std::shared_ptr &likelihood, + RooMinimizer *context, bool verbose = false); + + inline ROOT::Math::IMultiGradFunction *Clone() const override { return new MinuitFcnGrad(*this); } + + // override to include gradient strategy synchronization: + Bool_t Synchronize(std::vector ¶meter_settings, Bool_t optConst, + Bool_t verbose = kFALSE) override; + + // used inside Minuit: + inline bool returnsInMinuit2ParameterSpace() const override { return gradient->usesMinuitInternalValues(); } + + inline void setOptimizeConstOnFunction(RooAbsArg::ConstOpCode opcode, Bool_t doAlsoTrackingOpt) override + { + likelihood->constOptimizeTestStatistic(opcode, doAlsoTrackingOpt); + } + +private: + // IMultiGradFunction overrides necessary for Minuit: DoEval, Gradient + double DoEval(const double *x) const override; + +public: + void Gradient(const double *x, double *grad) const override; + + // part of IMultiGradFunction interface, used widely both in Minuit and in RooFit: + inline unsigned int NDim() const override { return _nDim; } + + inline std::string getFunctionName() const override { return likelihood->GetName(); } + + inline std::string getFunctionTitle() const override { return likelihood->GetTitle(); } + + inline void setOffsetting(Bool_t flag) override { likelihood->enableOffsetting(flag); } + +private: + template + MinuitFcnGrad(const std::shared_ptr &_likelihood, RooMinimizer *context, + bool verbose, + LikelihoodWrapperT * /* used only for template deduction */ = + static_cast(nullptr), + LikelihoodGradientWrapperT * /* used only for template deduction */ = + static_cast(nullptr)); + + // The following three overrides will not actually be used in this class, so they will throw: + double DoDerivative(const double *x, unsigned int icoord) const override; + + bool syncParameterValuesFromMinuitCalls(const double *x, bool minuit_internal) const; + + // members + std::shared_ptr likelihood; + std::shared_ptr gradient; + +public: + mutable std::shared_ptr calculation_is_clean; +private: + mutable std::vector minuit_internal_x_; + mutable std::vector minuit_external_x_; +public: + mutable bool minuit_internal_roofit_x_mismatch_ = false; +}; + +} // namespace TestStatistics +} // namespace RooFit + + +// include here to avoid circular dependency issues in class definitions +#include "RooMinimizer.h" + + +namespace RooFit { +namespace TestStatistics { + +template +MinuitFcnGrad::MinuitFcnGrad(const std::shared_ptr &_likelihood, RooMinimizer *context, + bool verbose, LikelihoodWrapperT * /* value unused */, + LikelihoodGradientWrapperT * /* value unused */) + : RooAbsMinimizerFcn(RooArgList(*_likelihood->getParameters()), context, verbose), minuit_internal_x_(NDim(), 0), + minuit_external_x_(NDim(), 0) +{ + auto parameters = _context->fitter()->Config().ParamsSettings(); + synchronizeParameterSettings(parameters, kTRUE, verbose); + + calculation_is_clean = std::make_shared(); + likelihood = std::make_shared(_likelihood, calculation_is_clean/*, _context*/); + gradient = std::make_shared(_likelihood, calculation_is_clean, getNDim(), _context); + + likelihood->synchronizeParameterSettings(parameters); + gradient->synchronizeParameterSettings(this, parameters); + + // Note: can be different than RooGradMinimizerFcn, where default options are passed (ROOT::Math::MinimizerOptions::DefaultStrategy() and ROOT::Math::MinimizerOptions::DefaultErrorDef()) + likelihood->synchronizeWithMinimizer(ROOT::Math::MinimizerOptions()); + gradient->synchronizeWithMinimizer(ROOT::Math::MinimizerOptions()); +} + +// static function +template +MinuitFcnGrad *MinuitFcnGrad::create(const std::shared_ptr& likelihood, + RooMinimizer *context, bool verbose) +{ + return new MinuitFcnGrad(likelihood, context, verbose, static_cast(nullptr), + static_cast(nullptr)); +} + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_MinuitFcnGrad diff --git a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h new file mode 100644 index 0000000000000..b6e42979266a4 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h @@ -0,0 +1,129 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooAbsL +#define ROOT_ROOFIT_TESTSTATISTICS_RooAbsL + +#include "RooArgSet.h" +#include "RooAbsArg.h" // enum ConstOpCode + +#include // std::size_t +#include + +// forward declarations +class RooAbsPdf; +class RooAbsData; + +namespace RooFit { +namespace TestStatistics { + +class RooAbsL { +public: + enum class Extended { Auto, Yes, No }; + static bool isExtendedHelper(RooAbsPdf *pdf, Extended extended); + + /// wrapper class used to distinguish ctors + struct ClonePdfData { + RooAbsPdf *pdf; + RooAbsData *data; + }; + + // RooAbsL() = default; +private: + RooAbsL(std::shared_ptr pdf, std::shared_ptr data, std::size_t N_events, + std::size_t N_components, Extended extended); + +public: + RooAbsL(RooAbsPdf *pdf, RooAbsData *data, std::size_t N_events, std::size_t N_components, + Extended extended = Extended::Auto); + RooAbsL(ClonePdfData in, std::size_t N_events, std::size_t N_components, Extended extended = Extended::Auto); + RooAbsL(const RooAbsL &other); + virtual ~RooAbsL() = default; + + void initClones(RooAbsPdf &inpdf, RooAbsData &indata); + + /// A part of some range delimited by two fractional points between 0 and 1 (inclusive). + struct Section { + Section(double begin, double end) : begin_fraction(begin), end_fraction(end) + { + if ((begin > end) || (begin < 0) || (end > 1)) { + throw std::domain_error("Invalid input values for section; begin must be >= 0, end <= 1 and begin < end."); + } + } + + Section(const Section §ion) = default; + + std::size_t begin(std::size_t N_total) const { return static_cast(N_total * begin_fraction); } + + std::size_t end(std::size_t N_total) const + { + if (end_fraction == 1) { + return N_total; + } else { + return static_cast(N_total * end_fraction); + } + } + + double begin_fraction; + double end_fraction; + }; + + virtual double evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) = 0; + inline double getCarry() const { return eval_carry_; } + + // necessary from MinuitFcnGrad to reach likelihood properties: + virtual RooArgSet *getParameters(); + virtual void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt); + + virtual std::string GetName() const; + virtual std::string GetTitle() const; + + // necessary in RooMinimizer (via LikelihoodWrapper) + inline virtual double defaultErrorLevel() const { return 0.5; } + + // necessary in LikelihoodJob + virtual std::size_t numDataEntries() const; + inline std::size_t getNEvents() const { return N_events_; } + inline std::size_t getNComponents() const { return N_components_; } + inline bool isExtended() const { return extended_; } + inline void setSimCount(std::size_t value) { sim_count_ = value; } + +protected: + virtual void optimizePdf(); + // Note: pdf_ and data_ can be constructed in two ways, one of which implies ownership and the other does not. + // Inspired by this: https://stackoverflow.com/a/61227865/1199693. + // The owning variant is used for classes that need a pdf/data clone (RooBinnedL and RooUnbinnedL), whereas the + // non-owning version is used for when a reference to the external pdf/dataset is good enough (RooSumL). + // This means that pdf_ and data_ are not meant to actually be shared! If there were a unique_ptr with optional + // ownership, we would have used that instead. + std::shared_ptr pdf_; + std::shared_ptr data_; + std::unique_ptr normSet_; // Pointer to set with observables used for normalization + + std::size_t N_events_ = 1; + std::size_t N_components_ = 1; + + bool extended_ = false; + + std::size_t sim_count_ = 1; // Total number of component p.d.f.s in RooSimultaneous (if any) + + mutable double eval_carry_ = 0; //! carry of Kahan sum in evaluatePartition +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooAbsL diff --git a/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h new file mode 100644 index 0000000000000..fa12d38fd8532 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h @@ -0,0 +1,45 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooBinnedL +#define ROOT_ROOFIT_TESTSTATISTICS_RooBinnedL + +#include +#include "RooAbsReal.h" +#include + +// forward declarations +class RooAbsPdf; +class RooAbsData; + +namespace RooFit { +namespace TestStatistics { + +class RooBinnedL : + public RooAbsL { +public: + RooBinnedL(RooAbsPdf* pdf, RooAbsData* data); + double evaluatePartition(Section bins, std::size_t components_begin, + std::size_t components_end) override; +private: + mutable bool _first = true; //! + mutable std::vector _binw; //! +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooBinnedL diff --git a/roofit/roofitcore/inc/TestStatistics/RooRealL.h b/roofit/roofitcore/inc/TestStatistics/RooRealL.h new file mode 100644 index 0000000000000..7b1263b3d088d --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooRealL.h @@ -0,0 +1,63 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooRealL +#define ROOT_ROOFIT_TESTSTATISTICS_RooRealL + +#include +#include "RooSetProxy.h" + +#include "Rtypes.h" // ClassDef, ClassImp + +#include // shared_ptr + +namespace RooFit { +namespace TestStatistics { + +// forward declaration +class RooAbsL; + +class RooRealL : public RooAbsReal { +public: + RooRealL(const char *name, const char *title, std::shared_ptr likelihood); + RooRealL(const RooRealL &other, const char *name = 0); + + // pure virtual overrides: + Double_t evaluate() const override; + inline TObject *clone(const char *newname) const override { return new RooRealL(*this, newname); } + + // virtual overrides: + inline double globalNormalization() const + { + // Default value of global normalization factor is 1.0 + return 1.0; + } + + inline double getCarry() const { return eval_carry; } + inline Double_t defaultErrorLevel() const override { return 0.5; } + +private: + std::shared_ptr likelihood_; + mutable double eval_carry = 0; + RooSetProxy vars_proxy_; // sets up client-server connections + + ClassDefOverride(RooRealL, 0); +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooRealL diff --git a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h new file mode 100644 index 0000000000000..5f50c70a62189 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h @@ -0,0 +1,65 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL +#define ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL + +#include +#include +#include + +namespace RooFit { +namespace TestStatistics { + +/// Gathers all subsidiary PDF terms from the component PDFs of RooSumL likelihoods. +/// These are summed separately for increased numerical stability, since these terms are often +/// small and cause numerical variances in their original PDFs, whereas by summing as one +/// separate subsidiary collective term, it is numerically very stable. +/// Note that when a subsidiary PDF is part of multiple component PDFs, it will only be summed +/// once in this class! This doesn't change the derivative of the log likelihood (which is what +/// matters in fitting the likelihood), but does change the value of the (log-)likelihood itself. +class RooSubsidiaryL : public RooAbsL { +public: + RooSubsidiaryL(const std::string &parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set); + + double evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; + inline RooArgSet *getParameters() override { return ¶meter_set_; } + inline std::string GetName() const override { return std::string("subsidiary_pdf_of_") + parent_pdf_name_; } + + inline std::string GetTitle() const override + { + return std::string("Subsidiary PDF set of simultaneous PDF ") + parent_pdf_name_; + } + + inline std::size_t numDataEntries() const override + { + // function only used in LikelihoodJob::evaluate, but this class must always be evaluated over Section(0,1), so + // not useful + return 0; + } + + void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) override; + +private: + std::string parent_pdf_name_; + RooArgList subsidiary_pdfs_{"subsidiary_pdfs"}; // Set of subsidiary PDF or "constraint" terms + RooArgSet parameter_set_{"parameter_set"}; // Set of parameters to which constraints apply +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL diff --git a/roofit/roofitcore/inc/TestStatistics/RooSumL.h b/roofit/roofitcore/inc/TestStatistics/RooSumL.h new file mode 100644 index 0000000000000..9a1caa190c7c5 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooSumL.h @@ -0,0 +1,50 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSumL +#define ROOT_ROOFIT_TESTSTATISTICS_RooSumL + +#include +#include + +namespace RooFit { +namespace TestStatistics { + +class RooSumL : public RooAbsL { +public: + // main constructor + RooSumL(RooAbsPdf* pdf, RooAbsData* data, std::vector> components, + RooAbsL::Extended extended = RooAbsL::Extended::Auto); + // Note: when above ctor is called without std::moving components, you get a really obscure error. Pass as std::move(components)! + + double evaluatePartition(Section events, std::size_t components_begin, + std::size_t components_end) override; + + // necessary only for legacy offsetting mode in LikelihoodWrapper; TODO: remove this if legacy mode is ever removed + std::tuple getSubsidiaryValue(); + + void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) override; + +private: + bool processEmptyDataSets() const; + + std::vector> components_; +}; + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooSumL diff --git a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h new file mode 100644 index 0000000000000..ff4c1483925f2 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h @@ -0,0 +1,49 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_RooUnbinnedL +#define ROOT_ROOFIT_TESTSTATISTICS_RooUnbinnedL + +#include + +// forward declarations +class RooAbsPdf; +class RooAbsData; +class RooArgSet; + +namespace RooFit { +namespace TestStatistics { + +class RooUnbinnedL : + public RooAbsL { +public: + RooUnbinnedL(RooAbsPdf* pdf, RooAbsData* data, RooAbsL::Extended extended = RooAbsL::Extended::Auto); + RooUnbinnedL(const RooUnbinnedL &other); + bool setApplyWeightSquared(bool flag); + + double evaluatePartition(Section events, std::size_t components_begin, + std::size_t components_end) override; + +private: + bool processEmptyDataSets() const; + bool apply_weight_squared = false; // Apply weights squared? + mutable bool _first = true; //! +}; + +} // namespace TestStatistics +} // namespace RooFit + +#endif // ROOT_ROOFIT_TESTSTATISTICS_RooUnbinnedL diff --git a/roofit/roofitcore/inc/TestStatistics/kahan_sum.h b/roofit/roofitcore/inc/TestStatistics/kahan_sum.h new file mode 100644 index 0000000000000..78a558a50571b --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/kahan_sum.h @@ -0,0 +1,88 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +// --- kahan summation templates --- + +#ifndef ROOT_ROOFIT_kahan_sum +#define ROOT_ROOFIT_kahan_sum + +#include + +namespace RooFit { + +template +typename C::value_type sum_kahan(const C& container) { + using ValueType = typename C::value_type; + ValueType sum = 0, carry = 0; + for (auto element : container) { + ValueType y = element - carry; + ValueType t = sum + y; + carry = (t - sum) - y; + sum = t; + } + return sum; +} + +template +ValueType sum_kahan(const std::map& map) { + ValueType sum = 0, carry = 0; + for (auto const& element : map) { + ValueType y = element.second - carry; + ValueType t = sum + y; + carry = (t - sum) - y; + sum = t; + } + return sum; +} + +template +std::pair sum_of_kahan_sums(const C& sum_values, const C& sum_carrys) { + using ValueType = typename C::value_type; + ValueType sum = 0, carry = 0; + for (std::size_t ix = 0; ix < sum_values.size(); ++ix) { + ValueType y = sum_values[ix]; + carry += sum_carrys[ix]; + y -= carry; + const ValueType t = sum + y; + carry = (t - sum) - y; + sum = t; + } + return std::pair(sum, carry); +} + + +template +std::pair sum_of_kahan_sums(const std::map& sum_values, const std::map& sum_carrys) { + ValueType sum = 0, carry = 0; + assert(sum_values.size() == sum_carrys.size()); + auto it_values = sum_values.cbegin(); + auto it_carrys = sum_carrys.cbegin(); + for (; it_values != sum_values.cend(); ++it_values, ++it_carrys) { + ValueType y = it_values->second; + carry += it_carrys->second; + y -= carry; + const ValueType t = sum + y; + carry = (t - sum) - y; + sum = t; + } + return std::pair(sum, carry); +} + +std::tuple kahan_add(double sum, double additive, double carry); + +} + +#endif // ROOT_ROOFIT_kahan_sum diff --git a/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h b/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h new file mode 100644 index 0000000000000..1a03c41e9c889 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h @@ -0,0 +1,60 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders +#define ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders + +#include +#include + +// forward declarations +class RooAbsPdf; +class RooAbsData; + +namespace RooFit { +namespace TestStatistics { + +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, + ConstrainedParameters constrained_parameters = {}, ExternalConstraints external_constraints = {}, + GlobalObservables global_observables = {}, std::string global_observables_tag = {}); + +// delegating builder calls, for more convenient "optional" parameter passing +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters); +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints); +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables); +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag); +std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables); + +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, + ConstrainedParameters constrained_parameters = {}, ExternalConstraints external_constraints = {}, + GlobalObservables global_observables = {}, std::string global_observables_tag = {}); + +// delegating builder calls, for more convenient "optional" parameter passing +std::shared_ptr +buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters); +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints); +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables); +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag); + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders diff --git a/roofit/roofitcore/inc/TestStatistics/optimization.h b/roofit/roofitcore/inc/TestStatistics/optimization.h new file mode 100644 index 0000000000000..cc578b139f3d7 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/optimization.h @@ -0,0 +1,40 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_optimization +#define ROOT_ROOFIT_TESTSTATISTICS_optimization + +// forward declarations +class RooAbsReal; +class RooArgSet; +class RooAbsData; + +namespace RooFit { +namespace TestStatistics { + +// this is a class only for convenience: it saves multiple friend definitions in RooAbsData for otherwise free functions +struct ConstantTermsOptimizer { + static void enableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooAbsData *dataset, + bool applyTrackingOpt); + static void optimizeCaching(RooAbsReal *function, RooArgSet *norm_set, RooArgSet* observables, RooAbsData *dataset); + static void disableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooArgSet* observables, RooAbsData *dataset); + static RooArgSet requiredExtraObservables(); +}; + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_optimization diff --git a/roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h b/roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h new file mode 100644 index 0000000000000..8e48621327180 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h @@ -0,0 +1,51 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_optional_parameter_types +#define ROOT_ROOFIT_TESTSTATISTICS_optional_parameter_types + +#include + +namespace RooFit { +namespace TestStatistics { + +// strongly named container types for use as optional parameters in the test statistics constructors + +/// Optional parameter used in buildLikelihood(), see documentation there. +struct ConstrainedParameters { + ConstrainedParameters(); + explicit ConstrainedParameters(const RooArgSet ¶meters); + RooArgSet set; +}; + +/// Optional parameter used in buildLikelihood(), see documentation there. +struct ExternalConstraints { + ExternalConstraints(); + explicit ExternalConstraints(const RooArgSet &constraints); + RooArgSet set; +}; + +/// Optional parameter used in buildLikelihood(), see documentation there. +struct GlobalObservables { + GlobalObservables(); + explicit GlobalObservables(const RooArgSet &observables); + RooArgSet set; +}; + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_optional_parameter_types diff --git a/roofit/roofitcore/src/RooMinimizer.cxx b/roofit/roofitcore/src/RooMinimizer.cxx index 7bcdab4c708c7..60eb861568322 100644 --- a/roofit/roofitcore/src/RooMinimizer.cxx +++ b/roofit/roofitcore/src/RooMinimizer.cxx @@ -329,6 +329,10 @@ bool RooMinimizer::fitFcn() const { ret = _theFitter->FitFCN(*dynamic_cast(_fcn)); break; } + case FcnMode::generic_wrapper: { + ret = _theFitter->FitFCN(*dynamic_cast(_fcn)); + break; + } default: { throw std::logic_error("In RooMinimizer::fitFcn: _fcnMode has an unsupported value!"); } @@ -872,6 +876,9 @@ ROOT::Math::IMultiGenFunction* RooMinimizer::getMultiGenFcn() const case FcnMode::gradient: { return static_cast(dynamic_cast(_fcn)); } + case FcnMode::generic_wrapper: { + return static_cast(dynamic_cast(_fcn)); + } default: { throw std::logic_error("In RooMinimizer::getMultiGenFcn: _fcnMode has an unsupported value!"); } @@ -890,6 +897,9 @@ const RooAbsMinimizerFcn *RooMinimizer::fitterFcn() const case FcnMode::gradient: { return static_cast(dynamic_cast(getFitterMultiGenFcn())); } + case FcnMode::generic_wrapper: { + return static_cast(dynamic_cast(getFitterMultiGenFcn())); + } default: { throw std::logic_error("In RooMinimizer::fitterFcn: _fcnMode has an unsupported value!"); } diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx new file mode 100644 index 0000000000000..167dd94a1f16e --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx @@ -0,0 +1,45 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include "RooMinimizer.h" + +namespace RooFit { +namespace TestStatistics { + +LikelihoodGradientWrapper::LikelihoodGradientWrapper(std::shared_ptr likelihood, + std::shared_ptr calculation_is_clean, + std::size_t /*N_dim*/, RooMinimizer *minimizer) + : likelihood_(std::move(likelihood)), minimizer_(minimizer), calculation_is_clean_(std::move(calculation_is_clean)) +{ + // Note to future maintainers: take care when storing the minimizer_fcn pointer. The + // RooAbsMinimizerFcn subclasses may get cloned inside MINUIT, which means the pointer + // should also somehow be updated in this class. +} + +void LikelihoodGradientWrapper::synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & /*options*/) {} + +void LikelihoodGradientWrapper::synchronizeParameterSettings( + const std::vector ¶meter_settings) +{ + synchronizeParameterSettings(minimizer_->getMultiGenFcn(), parameter_settings); +} + +void LikelihoodGradientWrapper::updateMinuitInternalParameterValues(const std::vector& /*minuit_internal_x*/) {} +void LikelihoodGradientWrapper::updateMinuitExternalParameterValues(const std::vector& /*minuit_external_x*/) {} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx new file mode 100644 index 0000000000000..9e816728ec381 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx @@ -0,0 +1,105 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + + +#include +#include +#include +#include +#include +#include +#include +#include "RooRealVar.h" + +namespace RooFit { +namespace TestStatistics { + +LikelihoodSerial::LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, + RooMinimizer *minimizer*/) + : LikelihoodWrapper(std::move(likelihood), std::move(calculation_is_clean)/*, minimizer*/) +{ + initVars(); + // determine likelihood type + if (dynamic_cast(likelihood_.get()) != nullptr) { + likelihood_type = LikelihoodType::unbinned; + } else if (dynamic_cast(likelihood_.get()) != nullptr) { + likelihood_type = LikelihoodType::binned; + } else if (dynamic_cast(likelihood_.get()) != nullptr) { + likelihood_type = LikelihoodType::sum; + } else if (dynamic_cast(likelihood_.get()) != nullptr) { + likelihood_type = LikelihoodType::subsidiary; + } else { + throw std::logic_error("in LikelihoodSerial constructor: _likelihood is not of a valid subclass!"); + } + // Note to future maintainers: take care when storing the minimizer_fcn pointer. The + // RooAbsMinimizerFcn subclasses may get cloned inside MINUIT, which means the pointer + // should also somehow be updated in this class. +} + +// This is a separate function (instead of just in ctor) for historical reasons. +// Its predecessor RooRealMPFE::initVars() was used from multiple ctors, but also +// from RooRealMPFE::constOptimizeTestStatistic at the end, which makes sense, +// because it might change the set of variables. We may at some point want to do +// this here as well. +void LikelihoodSerial::initVars() +{ + // Empty current lists + _vars.removeAll(); + _saveVars.removeAll(); + + // Retrieve non-constant parameters + auto vars = std::make_unique( + *likelihood_->getParameters()); // TODO: make sure this is the right list of parameters, compare to original + // implementation in RooRealMPFE.cxx + + RooArgList varList(*vars); + + // Save in lists + _vars.add(varList); + _saveVars.addClone(varList); +} + +void LikelihoodSerial::evaluate() { + switch (likelihood_type) { + case LikelihoodType::unbinned: + case LikelihoodType::binned: { + result = likelihood_->evaluatePartition({0, 1}, 0, 0); + carry = likelihood_->getCarry(); + break; + } + case LikelihoodType::sum: { + result = likelihood_->evaluatePartition({0, 1}, 0, likelihood_->getNComponents()); + carry = likelihood_->getCarry(); + // TODO: this normalization part below came from RooOptTestStatistic::evaluate, probably this just means you need to do the normalization on master only when doing parallel calculation. Make sure of this! In any case, it is currently not relevant, because the norm term is 1 by default and is only overridden for the RooDataWeightAverage class. +// // Only apply global normalization if SimMaster doesn't have MP master +// if (numSets() == 1) { +// const Double_t norm = globalNormalization(); +// result /= norm; +// carry /= norm; +// } + break; + } + default: { + throw std::logic_error("in LikelihoodSerial::evaluate_task: likelihood types other than binned, unbinned and simultaneous not yet implemented!"); + break; + } + } + + applyOffsetting(result, carry); +} + +} // namespace TestStatistics +} // namespace RooFit \ No newline at end of file diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx new file mode 100644 index 0000000000000..66ffa3e2ac05b --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx @@ -0,0 +1,159 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include // need complete type for likelihood->... +#include +#include +#include // need complete type for dynamic cast + +namespace RooFit { +namespace TestStatistics { + +LikelihoodWrapper::LikelihoodWrapper(std::shared_ptr likelihood, + std::shared_ptr calculation_is_clean/*, + RooMinimizer *minimizer*/) + : likelihood_(std::move(likelihood)),/* minimizer_(minimizer),*/ + calculation_is_clean_(std::move(calculation_is_clean)) /*, minimizer_fcn_(minimizer_fcn)*/ +{ + // Note to future maintainers: take care when storing the minimizer_fcn pointer. The + // RooAbsMinimizerFcn subclasses may get cloned inside MINUIT, which means the pointer + // should also somehow be updated in this class. +} + +void LikelihoodWrapper::synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & /*options*/) {} + +void LikelihoodWrapper::synchronizeParameterSettings( + const std::vector & /*parameter_settings*/) +{ +} + +void LikelihoodWrapper::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) +{ + likelihood_->constOptimizeTestStatistic(opcode, doAlsoTrackingOpt); +} + +double LikelihoodWrapper::defaultErrorLevel() const +{ + return likelihood_->defaultErrorLevel(); +} +std::string LikelihoodWrapper::GetName() const +{ + return likelihood_->GetName(); +} +std::string LikelihoodWrapper::GetTitle() const +{ + return likelihood_->GetTitle(); +} + +void LikelihoodWrapper::enableOffsetting(bool flag) +{ + do_offset_ = flag; + // Clear offset if feature is disabled so that it is recalculated next time it is enabled + if (!do_offset_) { + offset_ = 0; + offset_carry_ = 0; + } +} + +void LikelihoodWrapper::setOffsettingMode(OffsettingMode mode) +{ + offsetting_mode_ = mode; + if (isOffsetting()) { + oocoutI(static_cast(nullptr), Minimization) << "LikelihoodWrapper::setOffsettingMode(" << GetName() << "): changed offsetting mode while offsetting was enabled; resetting offset values" << std::endl; + offset_ = 0; + offset_carry_ = 0; + } +} + +void LikelihoodWrapper::applyOffsetting(double ¤t_value, double &carry) +{ + if (do_offset_) { + + // If no offset is stored enable this feature now + if (offset_ == 0 && current_value != 0) { + offset_ = current_value; + offset_carry_ = carry; + if (offsetting_mode_ == OffsettingMode::legacy) { + auto sum_likelihood = dynamic_cast(likelihood_.get()); + if (sum_likelihood != nullptr) { + double subsidiary_value, subsidiary_carry; + std::tie(subsidiary_value, subsidiary_carry) = sum_likelihood->getSubsidiaryValue(); + // "undo" the addition of the subsidiary value to emulate legacy behavior + offset_ -= subsidiary_value; + offset_carry_ -= subsidiary_carry; + // then add 0 in Kahan summation way to make sure the carry gets taken up into the value if it should be + double y = 0 - offset_carry_; + double t = offset_ + y; + offset_carry_ = (t - offset_) - y; + offset_ = t; + // also set carry to this value, again to emulate legacy behavior + carry = offset_carry_; + } + } + oocoutI(static_cast(nullptr), Minimization) + << "LikelihoodWrapper::applyOffsetting(" << GetName() << "): Likelihood offset now set to " << offset_ + << std::endl; + } + + // Subtract offset + // old method: +// { +// double y = -offset_ - (carry + offset_carry_); +// double t = current_value + y; +// carry = (t - current_value) - y; +// current_value = t; +// } + // Jonas method: + { + double new_value = current_value - offset_; + double new_carry = carry - offset_carry_; + // then add 0 in Kahan summation way to make sure the carry gets taken up into the value if it should be + double y = 0 - new_carry; + double t = new_value + y; + carry = (t - new_value) - y; + current_value = t; + } + } +} + +/// When calculating an unbinned likelihood with square weights applied, a different offset +/// is necessary. Similar situations may ask for a separate offset as well. This function +/// switches between the two sets of offset values. +void LikelihoodWrapper::swapOffsets() +{ + std::swap(offset_, offset_save_); + std::swap(offset_carry_, offset_carry_save_); +} + +void LikelihoodWrapper::setApplyWeightSquared(bool flag) +{ + RooUnbinnedL *unbinned_likelihood = dynamic_cast(likelihood_.get()); + if (unbinned_likelihood == nullptr) { + throw std::logic_error("LikelihoodWrapper::setApplyWeightSquared can only be used on unbinned likelihoods, but the wrapped likelihood_ member is not a RooUnbinnedL!"); + } + bool flag_was_changed = unbinned_likelihood->setApplyWeightSquared(flag); + + if (flag_was_changed) { + swapOffsets(); + } +} + +void LikelihoodWrapper::updateMinuitInternalParameterValues(const std::vector& /*minuit_internal_x*/) {} +void LikelihoodWrapper::updateMinuitExternalParameterValues(const std::vector& /*minuit_external_x*/) {} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx new file mode 100644 index 0000000000000..23cfe4c5a7c0e --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx @@ -0,0 +1,208 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include "TestStatistics/MinuitFcnGrad.h" + +#include "RooMsgService.h" +#include "RooAbsPdf.h" + +#include // std::setprecision + +namespace RooFit { +namespace TestStatistics { + +// IMultiGradFunction overrides necessary for Minuit: DoEval, Gradient +// The likelihood and gradient wrappers do the actual calculations. + +double MinuitFcnGrad::DoEval(const double *x) const +{ + Bool_t parameters_changed = syncParameterValuesFromMinuitCalls(x, false); + + // Calculate the function for these parameters +// RooAbsReal::setHideOffset(kFALSE); + likelihood->evaluate(); + double fvalue = likelihood->getResult(); + calculation_is_clean->likelihood = true; +// RooAbsReal::setHideOffset(kTRUE); + + if (!parameters_changed) { + return fvalue; + } + + if (!std::isfinite(fvalue) || RooAbsReal::numEvalErrors() > 0 || fvalue > 1e30) { + + if (_printEvalErrors >= 0) { + + if (_doEvalErrorWall) { + oocoutW(static_cast(nullptr), Eval) + << "RooGradMinimizerFcn: Minimized function has error status." << std::endl + << "Returning maximum FCN so far (" << _maxFCN + << ") to force MIGRAD to back out of this region. Error log follows" << std::endl; + } else { + oocoutW(static_cast(nullptr), Eval) + << "RooGradMinimizerFcn: Minimized function has error status but is ignored" << std::endl; + } + + TIterator *iter = _floatParamList->createIterator(); + RooRealVar *var; + Bool_t first(kTRUE); + ooccoutW(static_cast(nullptr), Eval) << "Parameter values: "; + while ((var = (RooRealVar *)iter->Next())) { + if (first) { + first = kFALSE; + } else + ooccoutW(static_cast(nullptr), Eval) << ", "; + ooccoutW(static_cast(nullptr), Eval) << var->GetName() << "=" << var->getVal(); + } + delete iter; + ooccoutW(static_cast(nullptr), Eval) << std::endl; + + RooAbsReal::printEvalErrors(ooccoutW(static_cast(nullptr), Eval), _printEvalErrors); + ooccoutW(static_cast(nullptr), Eval) << std::endl; + } + + if (_doEvalErrorWall) { + fvalue = _maxFCN + 1; + } + + RooAbsReal::clearEvalErrorLog(); + _numBadNLL++; + } else if (fvalue > _maxFCN) { + _maxFCN = fvalue; + } + + // Optional logging + if (_verbose) { + std::cout << "\nprevFCN" << (likelihood->isOffsetting() ? "-offset" : "") << " = " << std::setprecision(10) + << fvalue << std::setprecision(4) << " "; + std::cout.flush(); + } + + _evalCounter++; + return fvalue; +} + +/// Minuit calls (via FcnAdapters etc) DoEval or Gradient with a set of parameters x. +/// This function syncs these values to the proper places in RooFit. +/// +/// The first twist, and reason this function is more complicated than one may imagine, is that Minuit internally uses a +/// transformed parameter space to account for parameter boundaries. Whether we receive these Minuit "internal" +/// parameter values or "regular"/untransformed RooFit parameter space values depends on the situation. +/// - The values that arrive here via DoEval are always "normal" parameter values, since Minuit transforms these +/// back into regular space before passing to DoEval (see MnUserFcn::operator() which wraps the Fcn(Gradient)Base +/// in ModularFunctionMinimizer::Minimize and is used for direct function calls from that point on in the minimizer). +/// These can thus always be safely synced with this function's RooFit parameters using SetPdfParamVal. +/// - The values that arrive here via Gradient will be in internal coordinates if that is +/// what this class expects, and indeed this is the case for MinuitFcnGrad's current implementation. This is +/// communicated to Minuit via MinuitFcnGrad::returnsInMinuit2ParameterSpace. Inside Minuit, that function determines +/// whether this class's gradient calculator is wrapped inside a AnalyticalGradientCalculator, to which Minuit passes +/// "external" parameter values, or as an ExternalInternalGradientCalculator, which gets "internal" parameter values. +/// Long story short: when MinuitFcnGrad::returnsInMinuit2ParameterSpace() returns true, Minuit will pass "internal" +/// values to Gradient. These cannot be synced with this function's RooFit parameters using +/// SetPdfParamVal, unless a manual transformation step is performed in advance. However, they do need to be passed +/// on to the gradient calculator, since indeed we expect values there to be in "internal" space. However, this is +/// calculator dependent. Note that in the current MinuitFcnGrad implementation we do not actually allow for +/// calculators in "external" (i.e. regular RooFit parameter space) values, since +/// MinuitFcnGrad::returnsInMinuit2ParameterSpace is hardcoded to true. This should in a future version be changed so +/// that the calculator (the wrapper) is queried for this information. +/// Because some gradient calculators may also use the regular RooFit parameters (e.g. for calculating the likelihood's +/// value itself), this information is also passed on to the gradient wrapper. Vice versa, when updated "internal" +/// parameters are passed to Gradient, the likelihood may be affected as well. Even though a +/// transformation from internal to "external" may be necessary before the values can be used, the likelihood can at +/// least log that its parameter values are possibly no longer in sync with those of the gradient. +/// +/// The second twist is that the Minuit external parameters may still be different from the ones used in RooFit. This +/// happens when Minuit tries out values that lay outside the RooFit parameter's range(s). RooFit's setVal (called +/// inside SetPdfParamVal) then clips the RooAbsArg's value to one of the range limits, instead of setting it to the +/// value Minuit intended. When this happens, i.e. syncParameterValuesFromMinuitCalls is called with +/// minuit_internal = false and the values do not match the previous values stored in minuit_internal_x_ *but* the +/// values after SetPdfParamVal did not get set to the intended value, the minuit_internal_roofit_x_mismatch_ flag is +/// set. This information can be used by calculators, if desired, for instance when a calculator does not want to make +/// use of the range information in the RooAbsArg parameters. +bool MinuitFcnGrad::syncParameterValuesFromMinuitCalls(const double *x, bool minuit_internal) const +{ + bool a_parameter_has_been_updated = false; + if (minuit_internal) { + if (!returnsInMinuit2ParameterSpace()) { + throw std::logic_error("Updating Minuit-internal parameters only makes sense for (gradient) calculators that are defined in Minuit-internal parameter space."); + } + + for (std::size_t ix = 0; ix < NDim(); ++ix) { + bool parameter_changed = (x[ix] != minuit_internal_x_[ix]); + if (parameter_changed) { + minuit_internal_x_[ix] = x[ix]; + } + a_parameter_has_been_updated |= parameter_changed; + } + + if(a_parameter_has_been_updated) { + calculation_is_clean->set_all(false); + likelihood->updateMinuitInternalParameterValues(minuit_internal_x_); + gradient->updateMinuitInternalParameterValues(minuit_internal_x_); + } + } else { + bool a_parameter_is_mismatched = false; + + for (std::size_t ix = 0; ix < NDim(); ++ix) { + // Note: the return value of SetPdfParamVal does not always mean that the parameter's value in the RooAbsReal changed since last + // time! If the value was out of range bin, setVal was still called, but the value was not updated. + SetPdfParamVal(ix, x[ix]); + minuit_external_x_[ix] = x[ix]; + // The above is why we need minuit_external_x_. The minuit_external_x_ vector can also be passed to + // LikelihoodWrappers, if needed, but typically they will make use of the RooFit parameters directly. However, + // we log in the flag below whether they are different so that calculators can use this information. + bool parameter_changed = (x[ix] != minuit_external_x_[ix]); + a_parameter_has_been_updated |= parameter_changed; + a_parameter_is_mismatched |= (((RooRealVar *)_floatParamList->at(ix))->getVal() != minuit_external_x_[ix]); + } + + minuit_internal_roofit_x_mismatch_ = a_parameter_is_mismatched; + + if(a_parameter_has_been_updated) { + calculation_is_clean->set_all(false); + likelihood->updateMinuitExternalParameterValues(minuit_external_x_); + gradient->updateMinuitExternalParameterValues(minuit_external_x_); + } + } + return a_parameter_has_been_updated; +} + + +void MinuitFcnGrad::Gradient(const double *x, double *grad) const +{ + syncParameterValuesFromMinuitCalls(x, returnsInMinuit2ParameterSpace()); + gradient->fillGradient(grad); +} + +double MinuitFcnGrad::DoDerivative(const double * /*x*/, unsigned int /*icoord*/) const +{ + throw std::runtime_error("MinuitFcnGrad::DoDerivative is not implemented, please use Gradient instead."); +} + +Bool_t +MinuitFcnGrad::Synchronize(std::vector ¶meters, Bool_t optConst, Bool_t verbose) +{ + Bool_t returnee = synchronizeParameterSettings(parameters, optConst, verbose); + likelihood->synchronizeParameterSettings(parameters); + gradient->synchronizeParameterSettings(parameters); + + likelihood->synchronizeWithMinimizer(_context->fitter()->Config().MinimizerOptions()); + gradient->synchronizeWithMinimizer(_context->fitter()->Config().MinimizerOptions()); + return returnee; +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx new file mode 100644 index 0000000000000..c85aa7e4b1023 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx @@ -0,0 +1,451 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include +#include "RooAbsPdf.h" +#include "RooAbsData.h" + +// for dynamic casts in init_clones: +#include "RooAbsRealLValue.h" +#include "RooRealVar.h" +#include "RooDataHist.h" + +// other stuff in init_clones: +#include "RooErrorHandler.h" +#include "RooMsgService.h" + +// concrete classes in getParameters (testing, remove later) +#include "RooRealSumPdf.h" +#include "RooProdPdf.h" + +namespace RooFit { +namespace TestStatistics { + +// static function +bool RooAbsL::isExtendedHelper(RooAbsPdf* pdf, Extended extended) +{ + switch (extended) { + case RooAbsL::Extended::No: { + return false; + } + case RooAbsL::Extended::Yes: { + return true; + } + case RooAbsL::Extended::Auto: { + return ((pdf->extendMode() == RooAbsPdf::CanBeExtended || pdf->extendMode() == RooAbsPdf::MustBeExtended)); + } + default: { + throw std::logic_error("RooAbsL::isExtendedHelper got an unknown extended value!"); + } + } +} + +// private ctor +RooAbsL::RooAbsL(std::shared_ptr pdf, std::shared_ptr data, + std::size_t N_events, std::size_t N_components, Extended extended) + : pdf_(std::move(pdf)), data_(std::move(data)), N_events_(N_events), N_components_(N_components) +{ + // std::unique_ptr obs {pdf->getObservables(*data)}; + // data->attachBuffers(*obs); + extended_ = isExtendedHelper(pdf_.get(), extended); + if (extended == Extended::Auto) { + if (extended_) { + oocoutI((TObject *)nullptr, Minimization) + << "in RooAbsL ctor: p.d.f. provides expected number of events, including extended term in likelihood." + << std::endl; + } + } +} + +// this constructor clones the pdf/data and owns those cloned copies +RooAbsL::RooAbsL(RooAbsL::ClonePdfData in, std::size_t N_events, std::size_t N_components, Extended extended) + : RooAbsL(std::shared_ptr(static_cast(in.pdf->cloneTree())), + std::shared_ptr(static_cast(in.data->Clone())), N_events, N_components, extended) +{ + initClones(*in.pdf, *in.data); +} + +// this constructor does not clone pdf/data and uses the shared_ptr aliasing constructor to make it non-owning +RooAbsL::RooAbsL(RooAbsPdf *inpdf, RooAbsData *indata, std::size_t N_events, std::size_t N_components, + Extended extended) + : RooAbsL({std::shared_ptr(nullptr), inpdf}, {std::shared_ptr(nullptr), indata}, N_events, N_components, extended) +{} + + +RooAbsL::RooAbsL(const RooAbsL &other) + : pdf_(other.pdf_), data_(other.data_), N_events_(other.N_events_), N_components_(other.N_components_), extended_(other.extended_), sim_count_(other.sim_count_), eval_carry_(other.eval_carry_) +{ + // it can never be one, since we just copied the shared_ptr; if it is, something really weird is going on; also they must be equal (usually either zero or two) + assert((pdf_.use_count() != 1) && (data_.use_count() != 1) && (pdf_.use_count() == data_.use_count())); + // TODO: use aliasing ctor in initialization list, and then check in body here whether pdf and data were clones; if so, they need to be cloned again (and init_clones called on them) + if ((pdf_.use_count() > 1) && (data_.use_count() > 1)) { + pdf_.reset(static_cast(other.pdf_->cloneTree())); + data_.reset(static_cast(other.data_->Clone())); + initClones(*other.pdf_, *other.data_); + } +} + +void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) +{ + // RooArgSet obs(*indata.get()) ; + // obs.remove(projDeps,kTRUE,kTRUE) ; + + // ****************************************************************** + // *** PART 1 *** Clone incoming pdf, attach to each other * + // ****************************************************************** + + // moved to ctor + // pdf = static_cast(inpdf->cloneTree()); + + // Attach FUNC to data set + auto _funcObsSet = pdf_->getObservables(indata); + + if (pdf_->getAttribute("BinnedLikelihood")) { + pdf_->setAttribute("BinnedLikelihoodActive"); + } + + // Reattach FUNC to original parameters + std::unique_ptr origParams{inpdf.getParameters(indata)}; + pdf_->recursiveRedirectServers(*origParams); + + // Mark all projected dependents as such + // if (projDeps.getSize()>0) { + // RooArgSet *projDataDeps = (RooArgSet*) _funcObsSet->selectCommon(projDeps) ; + // projDataDeps->setAttribAll("projectedDependent") ; + // delete projDataDeps ; + // } + + // TODO: do we need this here? Or in RooSumL? + // // If PDF is a RooProdPdf (with possible constraint terms) + // // analyze pdf for actual parameters (i.e those in unconnected constraint terms should be + // // ignored as here so that the test statistic will not be recalculated if those + // // are changed + // RooProdPdf* pdfWithCons = dynamic_cast(pdf) ; + // if (pdfWithCons) { + // + // RooArgSet* connPars = pdfWithCons->getConnectedParameters(*indata.get()) ; + // // Add connected parameters as servers + // _paramSet.removeAll() ; + // _paramSet.add(*connPars) ; + // delete connPars ; + // + // } else { + // // Add parameters as servers + // _paramSet.add(*origParams) ; + // } + + // Store normalization set + normSet_.reset((RooArgSet *)indata.get()->snapshot(kFALSE)); + + // Expand list of observables with any observables used in parameterized ranges + RooAbsArg *realDep; + RooFIter iter = _funcObsSet->fwdIterator(); + while ((realDep = iter.next())) { + RooAbsRealLValue *realDepRLV = dynamic_cast(realDep); + if (realDepRLV && realDepRLV->isDerived()) { + RooArgSet tmp2; + realDepRLV->leafNodeServerList(&tmp2, 0, kTRUE); + _funcObsSet->add(tmp2, kTRUE); + } + } + + // ****************************************************************** + // *** PART 2 *** Clone and adjust incoming data, attach to PDF * + // ****************************************************************** + + // Check if the fit ranges of the dependents in the data and in the FUNC are consistent + const RooArgSet *dataDepSet = indata.get(); + iter = _funcObsSet->fwdIterator(); + RooAbsArg *arg; + while ((arg = iter.next())) { + + // Check that both dataset and function argument are of type RooRealVar + RooRealVar *realReal = dynamic_cast(arg); + if (!realReal) { + continue; + } + RooRealVar *datReal = dynamic_cast(dataDepSet->find(realReal->GetName())); + if (!datReal) { + continue; + } + + // Check that range of observables in pdf is equal or contained in range of observables in data + + if (!realReal->getBinning().lowBoundFunc() && realReal->getMin() < (datReal->getMin() - 1e-6)) { + oocoutE((TObject *)0, InputArguments) << "RooAbsL: ERROR minimum of FUNC observable " << arg->GetName() << "(" + << realReal->getMin() << ") is smaller than that of " << arg->GetName() + << " in the dataset (" << datReal->getMin() << ")" << std::endl; + RooErrorHandler::softAbort(); + return; + } + + if (!realReal->getBinning().highBoundFunc() && realReal->getMax() > (datReal->getMax() + 1e-6)) { + oocoutE((TObject *)0, InputArguments) + << "RooAbsL: ERROR maximum of FUNC observable " << arg->GetName() << " is larger than that of " + << arg->GetName() << " in the dataset" << std::endl; + RooErrorHandler::softAbort(); + return; + } + } + + // // Copy data and strip entries lost by adjusted fit range, data ranges will be copied from realDepSet ranges + // if (rangeName && strlen(rangeName)) { + // data = ((RooAbsData &)indata).reduce(RooFit::SelectVars(*_funcObsSet), RooFit::CutRange(rangeName)); + // // cout << "RooAbsOptTestStatistic: reducing dataset to fit in range named " << rangeName << " resulting + // // dataset has " << data->sumEntries() << " events" << endl ; + // } else { + + // moved to ctor + // data = static_cast(indata.Clone()); + + // } + // _ownData = kTRUE; + + // ****************************************************************** + // *** PART 3 *** Make adjustments for fit ranges, if specified * + // ****************************************************************** + + // RooArgSet *origObsSet = inpdf.getObservables(indata); + // RooArgSet *dataObsSet = (RooArgSet *)data->get(); + // if (rangeName && strlen(rangeName)) { + // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() + // << ") constructing test statistic for sub-range named " << rangeName << endl; + // // cout << "now adjusting observable ranges to requested fit range" << endl ; + // + // // Adjust FUNC normalization ranges to requested fitRange, store original ranges for RooAddPdf coefficient + // // interpretation + // iter = _funcObsSet->fwdIterator(); + // while ((arg = iter.next())) { + // + // RooRealVar *realObs = dynamic_cast(arg); + // if (realObs) { + // + // // If no explicit range is given for RooAddPdf coefficients, create explicit named range equivalent to + // // original observables range + // if (!(addCoefRangeName && strlen(addCoefRangeName))) { + // realObs->setRange(Form("NormalizationRangeFor%s", rangeName), realObs->getMin(), realObs->getMax()); + // // cout << "RAOTS::ctor() setting range " << Form("NormalizationRangeFor%s",rangeName) << " on + // // observable " + // // << realObs->GetName() << " to [" << realObs->getMin() << "," << realObs->getMax() << "]" + // << + // // endl ; + // } + // + // // Adjust range of function observable to those of given named range + // realObs->setRange(realObs->getMin(rangeName), realObs->getMax(rangeName)); + // // cout << "RAOTS::ctor() setting normalization range on observable " + // // << realObs->GetName() << " to [" << realObs->getMin() << "," << realObs->getMax() << "]" << + // endl + // // ; + // + // // Adjust range of data observable to those of given named range + // RooRealVar *dataObs = (RooRealVar *)dataObsSet->find(realObs->GetName()); + // dataObs->setRange(realObs->getMin(rangeName), realObs->getMax(rangeName)); + // + // // Keep track of list of fit ranges in string attribute fit range of original p.d.f. + // if (!_splitRange) { + // const char *origAttrib = inpdf.getStringAttribute("fitrange"); + // if (origAttrib) { + // inpdf.setStringAttribute("fitrange", Form("%s,fit_%s", origAttrib, GetName())); + // } else { + // inpdf.setStringAttribute("fitrange", Form("fit_%s", GetName())); + // } + // RooRealVar *origObs = (RooRealVar *)origObsSet->find(arg->GetName()); + // if (origObs) { + // origObs->setRange(Form("fit_%s", GetName()), realObs->getMin(rangeName), + // realObs->getMax(rangeName)); + // } + // } + // } + // } + // } + // delete origObsSet; + + // If dataset is binned, activate caching of bins that are invalid because they're outside the + // updated range definition (WVE need to add virtual interface here) + RooDataHist *tmph = dynamic_cast(data_.get()); + if (tmph) { + tmph->cacheValidEntries(); + } + + // // Fix RooAddPdf coefficients to original normalization range + // if (rangeName && strlen(rangeName)) { + // + // // WVE Remove projected dependents from normalization + // pdf->fixAddCoefNormalization(*data->get(), kFALSE); + // + // if (addCoefRangeName && strlen(addCoefRangeName)) { + // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() + // << ") fixing interpretation of coefficients of any RooAddPdf component to range " + // << addCoefRangeName << endl; + // pdf->fixAddCoefRange(addCoefRangeName, kFALSE); + // } else { + // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() + // << ") fixing interpretation of coefficients of any RooAddPdf to full domain of + // observables " + // << endl; + // pdf->fixAddCoefRange(Form("NormalizationRangeFor%s", rangeName), kFALSE); + // } + // } + + // This is deferred from part 2 - but must happen after part 3 - otherwise invalid bins cannot be properly marked in + // cacheValidEntries + data_->attachBuffers(*_funcObsSet); + // TODO: we pass event count to the ctor in the subclasses currently, because it's split into components and events + // now + // setEventCount(data->numEntries()); + + // ********************************************************************* + // *** PART 4 *** Adjust normalization range for projected observables * + // ********************************************************************* + + // // Remove projected dependents from normalization set + // if (projDeps.getSize() > 0) { + // + // _projDeps = (RooArgSet *)projDeps.snapshot(kFALSE); + // + // // RooArgSet* tobedel = (RooArgSet*) _normSet->selectCommon(*_projDeps) ; + // _normSet->remove(*_projDeps, kTRUE, kTRUE); + // + // // // Delete owned projected dependent copy in _normSet + // // TIterator* ii = tobedel->createIterator() ; + // // RooAbsArg* aa ; + // // while((aa=(RooAbsArg*)ii->Next())) { + // // delete aa ; + // // } + // // delete ii ; + // // delete tobedel ; + // + // // Mark all projected dependents as such + // RooArgSet *projDataDeps = (RooArgSet *)_funcObsSet->selectCommon(*_projDeps); + // projDataDeps->setAttribAll("projectedDependent"); + // delete projDataDeps; + // } + + // coutI(Optimization) + // << "RooAbsOptTestStatistic::ctor(" << GetName() + // << ") optimizing internal clone of p.d.f for likelihood evaluation." + // << "Lazy evaluation and associated change tracking will disabled for all nodes that depend on observables" + // << endl; + + // ********************************************************************* + // *** PART 4 *** Finalization and activation of optimization * + // ********************************************************************* + + //_origFunc = _func ; + //_origData = _data ; + + // // Redirect pointers of base class to clone + // _func = pdf ; + // _data = data ; + + // TODO: why this call? + // pdf->getVal(_normSet); + + // cout << "ROATS::ctor(" << GetName() << ") funcClone structure dump BEFORE opt" << endl ; + // pdf->Print("t") ; + + // optimizeCaching() ; + + // cout << "ROATS::ctor(" << GetName() << ") funcClone structure dump AFTER opt" << endl ; + // pdf->Print("t") ; + + // optimization steps (copied from ROATS::optimizeCaching) + + pdf_->getVal(normSet_.get()); + // Set value caching mode for all nodes that depend on any of the observables to ADirty + pdf_->optimizeCacheMode(*_funcObsSet); + // Disable propagation of dirty state flags for observables + data_->setDirtyProp(kFALSE); + + // Disable reading of observables that are not used + data_->optimizeReadingWithCaching(*pdf_, RooArgSet(), RooArgSet()) ; + +} + +RooArgSet *RooAbsL::getParameters() +{ + auto ding = pdf_->getParameters(*data_); + return ding; + +// // *** START HERE +// // WVE HACK determine if we have a RooRealSumPdf and then treat it like a binned likelihood +// RooAbsPdf *binnedPdf = 0; +// if (pdf_->getAttribute("BinnedLikelihood") && pdf_->IsA()->InheritsFrom(RooRealSumPdf::Class())) { +// // Simplest case: top-level of component is a RRSP +// binnedPdf = pdf_.get(); +// } else if (pdf_->IsA()->InheritsFrom(RooProdPdf::Class())) { +// // Default case: top-level pdf is a product of RRSP and other pdfs +// RooFIter iter = ((RooProdPdf *)pdf_.get())->pdfList().fwdIterator(); +// RooAbsArg *component; +// while ((component = iter.next())) { +// if (component->getAttribute("BinnedLikelihood") && +// component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { +// binnedPdf = (RooAbsPdf *)component; +// } +// if (component->getAttribute("MAIN_MEASUREMENT")) { +// // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to +// // be passed to the slave calculator +// binnedPdf = (RooAbsPdf *)component; +// } +// } +// } +// // WVE END HACK +// +// std::unique_ptr actualParams {binnedPdf ? binnedPdf->getParameters(data_.get()) : pdf_->getParameters(data_.get())}; +// RooArgSet* selTargetParams = (RooArgSet *)ding->selectCommon(*actualParams); +// +// std::cout << "RooAbsL::getParameters:" << std::endl; +// selTargetParams->Print("v"); +// +// return selTargetParams; +} + +void RooAbsL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) +{ + // to be further implemented, this is just a first test implementation + if (opcode == RooAbsArg::Activate) { + ConstantTermsOptimizer::enableConstantTermsOptimization(pdf_.get(), normSet_.get(), data_.get(), doAlsoTrackingOpt); + } +} + +std::string RooAbsL::GetName() const +{ + std::string output("likelihood of pdf "); + output.append(pdf_->GetName()); + return output; +} + +std::string RooAbsL::GetTitle() const +{ + std::string output("likelihood of pdf "); + output.append(pdf_->GetTitle()); + return output; +} + +void RooAbsL::optimizePdf() +{ + // TODO: implement, using ConstantTermsOptimizer +} + +std::size_t RooAbsL::numDataEntries() const +{ + return static_cast(data_->numEntries()); +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx new file mode 100644 index 0000000000000..652caa4744113 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx @@ -0,0 +1,163 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +/** +\file RooBinnedL.cxx +\class RooBinnedL +\ingroup Roofitcore + +Class RooBinnedL implements a a -log(likelihood) calculation from a dataset +and a PDF. The NLL is calculated as +
+ Sum[data] -log( pdf(x_data) )
+
+In extended mode, a (Nexpect - Nobserved*log(NExpected) term is added +**/ + +#include + +#include "RooAbsData.h" +#include "RooAbsPdf.h" +#include "RooAbsDataStore.h" +#include "RooRealSumPdf.h" +#include "RooRealVar.h" + +#include "TMath.h" + +namespace RooFit { +namespace TestStatistics { + +RooBinnedL::RooBinnedL(RooAbsPdf* pdf, RooAbsData* data) : + RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1) +{ + // pdf must be a RooRealSumPdf representing a yield vector for a binned likelihood calculation + if (!dynamic_cast(pdf)) { + throw std::logic_error("RooBinnedL can only be created from pdf of type RooRealSumPdf!"); + } + + // Retrieve and cache bin widths needed to convert unnormalized binned pdf values back to yields + + // The Active label will disable pdf integral calculations + pdf->setAttribute("BinnedLikelihoodActive"); + + RooArgSet *obs = pdf->getObservables(data); + if (obs->getSize() != 1) { + throw std::logic_error("RooBinnedL can only be created from combination of pdf and data which has exactly one observable!"); + } else { + RooRealVar *var = (RooRealVar *)obs->first(); + std::list *boundaries = pdf->binBoundaries(*var, var->getMin(), var->getMax()); + std::list::iterator biter = boundaries->begin(); + _binw.resize(boundaries->size() - 1); + Double_t lastBound = (*biter); + ++biter; + int ibin = 0; + while (biter != boundaries->end()) { + _binw[ibin] = (*biter) - lastBound; + lastBound = (*biter); + ibin++; + ++biter; + } + } +} + +////////////////////////////////////////////////////////////////////////////////// +///// Calculate and return likelihood on subset of data from firstEvent to lastEvent +///// processed with a step size of 'stepSize'. If this an extended likelihood and +///// and the zero event is processed the extended term is added to the return +///// likelihood. +// +double RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begin*/, + std::size_t /*components_end*/) +{ + // Throughout the calculation, we use Kahan's algorithm for summing to + // prevent loss of precision - this is a factor four more expensive than + // straight addition, but since evaluating the PDF is usually much more + // expensive than that, we tolerate the additional cost... + Double_t result(0), carry(0); + +// data->store()->recalculateCache(_projDeps, firstEvent, lastEvent, stepSize, (_binnedPdf?kFALSE:kTRUE)); + // TODO: check when we might need _projDeps (it seems to be mostly empty); ties in with TODO below + data_->store()->recalculateCache(nullptr, bins.begin(N_events_), bins.end(N_events_), 1, kFALSE); + + Double_t sumWeight(0), sumWeightCarry(0); + + for (std::size_t i = bins.begin(N_events_); i < bins.end(N_events_); ++i) { + + data_->get(i); + + if (!data_->valid()) + continue; + + Double_t eventWeight = data_->weight(); + + // Calculate log(Poisson(N|mu) for this bin + Double_t N = eventWeight; + Double_t mu = pdf_->getVal() * _binw[i]; + + if (mu <= 0 && N > 0) { + + // Catch error condition: data present where zero events are predicted +// logEvalError(Form("Observed %f events in bin %d with zero event yield", N, i)); + // TODO: check if using regular stream vs logEvalError error gathering is ok + oocoutI(static_cast(nullptr), Minimization) + << "Observed " << N << " events in bin " << i << " with zero event yield" << std::endl; + + } else if (fabs(mu) < 1e-10 && fabs(N) < 1e-10) { + + // Special handling of this case since log(Poisson(0,0)=0 but can't be calculated with usual log-formula + // since log(mu)=0. No update of result is required since term=0. + + } else { + + Double_t term = -1 * (-mu + N * log(mu) - TMath::LnGamma(N + 1)); + + // Kahan summation of sumWeight + Double_t y = eventWeight - sumWeightCarry; + Double_t t = sumWeight + y; + sumWeightCarry = (t - sumWeight) - y; + sumWeight = t; + + // Kahan summation of result + y = term - carry; + t = result + y; + carry = (t - result) - y; + result = t; + } + } + + + // If part of simultaneous PDF normalize probability over + // number of simultaneous PDFs: -sum(log(p/n)) = -sum(log(p)) + N*log(n) + if (sim_count_ > 1) { + Double_t y = sumWeight * log(1.0 * sim_count_) - carry; + Double_t t = result + y; + carry = (t - result) - y; + result = t; + } + + // At the end of the first full calculation, wire the caches + if (_first) { + _first = false; + pdf_->wireAllCaches(); + } + + eval_carry_ = carry; + return result; +} + + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx new file mode 100644 index 0000000000000..84396d664b034 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx @@ -0,0 +1,51 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include + +namespace RooFit { +namespace TestStatistics { + +RooRealL::RooRealL(const char *name, const char *title, std::shared_ptr likelihood) + : RooAbsReal(name, title), likelihood_(std::move(likelihood)), + vars_proxy_("varsProxy", "proxy set of parameters", this) +{ + vars_proxy_.add(*likelihood_->getParameters()); +} + +RooRealL::RooRealL(const RooRealL &other, const char *name) + : RooAbsReal(other, name), likelihood_(other.likelihood_), vars_proxy_("varsProxy", "proxy set of parameters", this) +{ + vars_proxy_.add(*likelihood_->getParameters()); +} + +Double_t RooRealL::evaluate() const +{ + // Evaluate as straight FUNC + std::size_t last_component = likelihood_->getNComponents(); + + Double_t ret = likelihood_->evaluatePartition({0, 1}, 0, last_component); + + const Double_t norm = globalNormalization(); + ret /= norm; + eval_carry = likelihood_->getCarry() / norm; + + return ret; +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx new file mode 100644 index 0000000000000..4a4f448799d63 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx @@ -0,0 +1,68 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include +#include // for dynamic cast +#include + +namespace RooFit { +namespace TestStatistics { + +RooSubsidiaryL::RooSubsidiaryL(const std::string& parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set) + : RooAbsL(nullptr, nullptr, 0, 0, RooAbsL::Extended::No), parent_pdf_name_(parent_pdf_name) +{ + std::unique_ptr inputIter{pdfs.createIterator()}; + RooAbsArg *comp; + while ((comp = (RooAbsArg *)inputIter->Next())) { + if (!dynamic_cast(comp)) { + oocoutE((TObject *)0, InputArguments) << "RooSubsidiaryL::ctor(" << GetName() << ") ERROR: component " + << comp->GetName() << " is not of type RooAbsPdf" << std::endl; + RooErrorHandler::softAbort(); + } + subsidiary_pdfs_.add(*comp); + } + parameter_set_.add(parameter_set); +} + +double +RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, std::size_t /*components_begin*/, std::size_t /*components_end*/) +{ + if (events.begin_fraction != 0 || events.end_fraction != 1) { + oocoutW((TObject *)0, InputArguments) << "RooSubsidiaryL::evaluatePartition can only calculate everything, so " + "section should be {0,1}, but it's not!" + << std::endl; + } + + double sum = 0, carry = 0; + RooAbsReal *comp; + RooFIter setIter1 = subsidiary_pdfs_.fwdIterator(); + + while ((comp = (RooAbsReal *)setIter1.next())) { + double term = -((RooAbsPdf *)comp)->getLogVal(¶meter_set_); + std::tie(sum, carry) = kahan_add(sum, term, carry); + } + eval_carry_ = carry; + + return sum; +} + +void RooSubsidiaryL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode /*opcode*/, bool /*doAlsoTrackingOpt*/) { + // do nothing, there's no dataset here to cache +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx new file mode 100644 index 0000000000000..1734a18df4e4c --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx @@ -0,0 +1,90 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include +#include +#include + +#include // min, max + +namespace RooFit { +namespace TestStatistics { + +// Note: components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! +RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, RooAbsL::Extended extended) + : RooAbsL(pdf, data, + data->numEntries(), // TODO: this may be misleading, because components in reality will have their own N_events... + components.size(), extended), components_(std::move(components)) +{} + + +bool RooSumL::processEmptyDataSets() const +{ + // TODO: check whether this is correct! This is copied the implementation of the RooNLLVar override; the + // implementation in RooAbsTestStatistic always returns true + return extended_; +} + +double RooSumL::evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) +{ + // Evaluate specified range of owned GOF objects + double ret = 0; + + // from RooAbsOptTestStatistic::combinedValue (which is virtual, so could be different for non-RooNLLVar!): + eval_carry_ = 0; + for (std::size_t ix = components_begin; ix < components_end; ++ix) { + // TODO: make sure we only calculate over events in the sub-range that the caller asked for + // std::size_t component_events_begin = std::max(events_begin, components_[ix]->get_N_events()) // THIS + // WON'T WORK, we need to somehow allow evaluate_partition to take in separate event ranges for all + // components... + + double y = components_[ix]->evaluatePartition(events, 0, 0); + + eval_carry_ += components_[ix]->getCarry(); + y -= eval_carry_; + double t = ret + y; + eval_carry_ = (t - ret) - y; + ret = t; + } + + // Note: compared to the RooAbsTestStatistic implementation that this was taken from, we leave out Hybrid and + // SimComponents interleaving support here, this should be implemented by calculator, if desired. + + return ret; +} + +// note: this assumes there is only one subsidiary component! +std::tuple RooSumL::getSubsidiaryValue() +{ + // iterate in reverse, because the subsidiary component is usually at the end: + for (auto component = components_.rbegin(); component != components_.rend(); ++component) { + if (dynamic_cast((*component).get()) != nullptr) { + double value = (*component)->evaluatePartition({0, 1}, 0, 0); + double carry = (*component)->getCarry(); + return {value, carry}; + } + } + return {0, 0}; +} + +void RooSumL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) { + for (auto& component : components_) { + component->constOptimizeTestStatistic(opcode, doAlsoTrackingOpt); + } +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx new file mode 100644 index 0000000000000..fe150da6dda77 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -0,0 +1,185 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +/** +\file RooUnbinnedL.cxx +\class RooUnbinnedL +\ingroup Roofitcore + +Class RooUnbinnedL implements a a -log(likelihood) calculation from a dataset +and a PDF. The NLL is calculated as +
+ Sum[data] -log( pdf(x_data) )
+
+In extended mode, a (Nexpect - Nobserved*log(NExpected) term is added +**/ + +#include + +#include "RooAbsData.h" +#include "RooAbsPdf.h" +#include "RooAbsDataStore.h" + +namespace RooFit { +namespace TestStatistics { + +RooUnbinnedL::RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, + RooAbsL::Extended extended) + : RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1, extended) +{} + +RooUnbinnedL::RooUnbinnedL(const RooUnbinnedL &other) + : RooAbsL(other), apply_weight_squared(other.apply_weight_squared), _first(other._first) +{} + + +bool RooUnbinnedL::processEmptyDataSets() const +{ + return extended_; +} + +////////////////////////////////////////////////////////////////////////////////// + +/// Returns true if value was changed, false otherwise. +bool RooUnbinnedL::setApplyWeightSquared(bool flag) +{ + if (apply_weight_squared != flag) { + apply_weight_squared = flag; + return true; + } + // setValueDirty(); + return false; +} + +////////////////////////////////////////////////////////////////////////////////// +///// Calculate and return likelihood on subset of data from firstEvent to lastEvent +///// processed with a step size of 'stepSize'. If this an extended likelihood and +///// and the zero event is processed the extended term is added to the return +///// likelihood. +// +double RooUnbinnedL::evaluatePartition(Section events, + std::size_t /*components_begin*/, std::size_t /*components_end*/) +{ + // Throughout the calculation, we use Kahan's algorithm for summing to + // prevent loss of precision - this is a factor four more expensive than + // straight addition, but since evaluating the PDF is usually much more + // expensive than that, we tolerate the additional cost... + Double_t result(0), carry(0); + + // data->store()->recalculateCache(_projDeps, firstEvent, lastEvent, stepSize, (_binnedPdf?kFALSE:kTRUE)); + // TODO: check when we might need _projDeps (it seems to be mostly empty); ties in with TODO below + data_->store()->recalculateCache(nullptr, events.begin(N_events_), events.end(N_events_), 1, kTRUE); + + Double_t sumWeight(0), sumWeightCarry(0); + + for (std::size_t i = events.begin(N_events_); i < events.end(N_events_); ++i) { + data_->get(i); + if (!data_->valid()) { + continue; + } + + Double_t eventWeight = data_->weight(); + if (0. == eventWeight * eventWeight) { + continue; + } + if (apply_weight_squared) { + eventWeight = data_->weightSquared(); + } + + Double_t term = -eventWeight * pdf_->getLogVal(normSet_.get()); + // TODO: normSet_ should be modified if _projDeps is non-null, connected to TODO above + + Double_t y = eventWeight - sumWeightCarry; + Double_t t = sumWeight + y; + sumWeightCarry = (t - sumWeight) - y; + sumWeight = t; + + y = term - carry; + t = result + y; + carry = (t - result) - y; + result = t; + } + + // include the extended maximum likelihood term, if requested + if (extended_) { + if (apply_weight_squared) { + + // Calculate sum of weights-squared here for extended term + Double_t sumW2(0), sumW2carry(0); + for (Int_t i = 0; i < data_->numEntries(); i++) { + data_->get(i); + Double_t y = data_->weightSquared() - sumW2carry; + Double_t t = sumW2 + y; + sumW2carry = (t - sumW2) - y; + sumW2 = t; + } + + Double_t expected = pdf_->expectedEvents(data_->get()); + + // Adjust calculation of extended term with W^2 weighting: adjust poisson such that + // estimate of Nexpected stays at the same value, but has a different variance, rescale + // both the observed and expected count of the Poisson with a factor sum[w] / sum[w^2] which is + // the effective weight of the Poisson term. + // i.e. change Poisson(Nobs = sum[w]| Nexp ) --> Poisson( sum[w] * sum[w] / sum[w^2] | Nexp * sum[w] / + // sum[w^2] ) weighted by the effective weight sum[w^2]/ sum[w] in the likelihood. Since here we compute + // the likelihood with the weight square we need to multiply by the square of the effective weight expectedW + // = expected * sum[w] / sum[w^2] : effective expected entries observedW = sum[w] * sum[w] / sum[w^2] : + // effective observed entries The extended term for the likelihood weighted by the square of the weight will + // be then: + // (sum[w^2]/ sum[w] )^2 * expectedW - (sum[w^2]/ sum[w] )^2 * observedW * log (expectedW) and this is + // using the previous expressions for expectedW and observedW + // sum[w^2] / sum[w] * expected - sum[w^2] * log (expectedW) + // and since the weights are constants in the likelihood we can use log(expected) instead of log(expectedW) + + Double_t expectedW2 = expected * sumW2 / data_->sumEntries(); + Double_t extra = expectedW2 - sumW2 * log(expected); + + // Double_t y = pdf->extendedTerm(sumW2, data->get()) - carry; + + Double_t y = extra - carry; + + Double_t t = result + y; + carry = (t - result) - y; + result = t; + } else { + Double_t y = pdf_->extendedTerm(data_->sumEntries(), data_->get()) - carry; + Double_t t = result + y; + carry = (t - result) - y; + result = t; + } + } + + // If part of simultaneous PDF normalize probability over + // number of simultaneous PDFs: -sum(log(p/n)) = -sum(log(p)) + N*log(n) + if (sim_count_ > 1) { + Double_t y = sumWeight * log(1.0 * sim_count_) - carry; + Double_t t = result + y; + carry = (t - result) - y; + result = t; + } + + // At the end of the first full calculation, wire the caches + if (_first) { + _first = false; + pdf_->wireAllCaches(); + } + + eval_carry_ = carry; + return result; +} + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx b/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx new file mode 100644 index 0000000000000..6a233f6e18a06 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx @@ -0,0 +1,31 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +namespace RooFit { + +std::tuple kahan_add(double sum, double additive, double carry) +{ + double y = additive - carry; + double t = sum + y; + carry = (t - sum) - y; + sum = t; + + return {sum, carry}; +} + +} \ No newline at end of file diff --git a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx new file mode 100644 index 0000000000000..4b1077d83f1b9 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx @@ -0,0 +1,325 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +namespace RooFit { +namespace TestStatistics { + +std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *data, + ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, + GlobalObservables global_observables, std::string global_observables_tag) +{ + // BEGIN CONSTRAINT COLLECTION; copied from RooAbsPdf::createNLL + + Bool_t doStripDisconnected = kFALSE; + // If no explicit list of parameters to be constrained is specified apply default algorithm + // All terms of RooProdPdfs that do not contain observables and share a parameters with one or more + // terms that do contain observables are added as constraints. +#ifndef NDEBUG + bool did_default_constraint_algo = false; + std::size_t N_default_constraints = 0; +#endif + if (constrained_parameters.set.getSize() == 0) { + std::unique_ptr default_constraints{pdf->getParameters(*data, kFALSE)}; + constrained_parameters.set.add(*default_constraints); + doStripDisconnected = kTRUE; +#ifndef NDEBUG + did_default_constraint_algo = true; + N_default_constraints = default_constraints->getSize(); +#endif + } +#ifndef NDEBUG + if (did_default_constraint_algo) { + assert(N_default_constraints == static_cast(constrained_parameters.set.getSize())); + } +#endif + + // Collect internal and external constraint specifications + RooArgSet allConstraints; + + if (!global_observables_tag.empty()) { + std::cout << "DEBUG: global_observables_tag > 0" << std::endl; + if (global_observables.set.getSize() > 0) { + global_observables.set.removeAll(); + } + std::unique_ptr allVars {pdf->getVariables()}; + global_observables.set.add(*dynamic_cast(allVars->selectByAttrib(global_observables_tag.c_str(), kTRUE))); + oocoutI((TObject*)nullptr, Minimization) << "User-defined specification of global observables definition with tag named '" << global_observables_tag << "'" << std::endl; + } else if (global_observables.set.getSize() == 0) { + // neither global_observables nor global_observables_tag was given - try if a default tag is defined in the head node + const char* defGlobObsTag = pdf->getStringAttribute("DefaultGlobalObservablesTag"); + if (defGlobObsTag) { + oocoutI((TObject*)nullptr, Minimization) << "p.d.f. provides built-in specification of global observables definition with tag named '" << defGlobObsTag << "'" << std::endl; + std::unique_ptr allVars {pdf->getVariables()}; + global_observables.set.add(*dynamic_cast(allVars->selectByAttrib(defGlobObsTag, kTRUE))); + } + } + + // EGP: removed workspace (RooAbsPdf::_myws) based stuff for now; TODO: reconnect this class to workspaces + + if (constrained_parameters.set.getSize() > 0) { + std::unique_ptr constraints{pdf->getAllConstraints(*data->get(), constrained_parameters.set, doStripDisconnected)}; + allConstraints.add(*constraints); + } + if (external_constraints.set.getSize() > 0) { + allConstraints.add(external_constraints.set); + } + + std::unique_ptr subsidiary_likelihood; + // Include constraints, if any, in likelihood + if (allConstraints.getSize() > 0) { + + oocoutI((TObject*) nullptr, Minimization) << " Including the following contraint terms in minimization: " << allConstraints << std::endl; + if (global_observables.set.getSize() > 0) { + oocoutI((TObject*) nullptr, Minimization) << "The following global observables have been defined: " << global_observables.set << std::endl; + } + std::string name("likelihood for pdf "); + name += pdf->GetName(); + subsidiary_likelihood = std::make_unique(name, allConstraints, + (global_observables.set.getSize() > 0) ? global_observables.set : constrained_parameters.set); + } + + // END CONSTRAINT COLLECTION; copied from RooAbsPdf::createNLL + + return subsidiary_likelihood; +} + + +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, + ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, + GlobalObservables global_observables, std::string global_observables_tag) { + auto sim_pdf = dynamic_cast(pdf); + if (sim_pdf == nullptr) { + throw std::logic_error("Can only build RooSumL from RooSimultaneous pdf!"); + } + + // the rest of this function is an adaptation of RooAbsTestStatistic::initSimMode: + + RooAbsCategoryLValue &simCat = (RooAbsCategoryLValue &)sim_pdf->indexCat(); + + // FIXME: process_empty_data_sets was previously member function processEmptyDataSets(), which returned extended_ for RooSumL (previously named RooSimultaneousL). See RooAbsL and RooSumL/RooUnbinnedL implementations. I think this should work here, but be careful in other subclasses! + bool process_empty_data_sets = RooAbsL::isExtendedHelper(pdf, extended); + + TString simCatName(simCat.GetName()); + // Note: important not to use cloned dataset here (possible when this code is run in Roo[...]L ctor), use the + // original one (which is data_ in Roo[...]L ctors, but data here) + std::unique_ptr dsetList{data->split(simCat, process_empty_data_sets)}; + if (!dsetList) { + throw std::logic_error("buildSimultaneousLikelihood ERROR, index category of simultaneous pdf is missing in dataset, aborting"); + } + + // Count number of used states + std::size_t N_components = 0; + + RooCatType *type; + std::unique_ptr catIter{simCat.typeIterator()}; + while ((type = (RooCatType *)catIter->Next())) { + // Retrieve the PDF for this simCat state + RooAbsPdf *component_pdf = sim_pdf->getPdf(type->GetName()); + auto dset = (RooAbsData *)dsetList->FindObject(type->GetName()); + + if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { + ++N_components; + } + } + + // Allocate arrays + std::vector> components; + components.reserve(N_components); + // _gofSplitMode.resize(N_components); // not used, Hybrid mode only, see below + + // Create array of regular fit contexts, containing subset of data and single fitCat PDF + catIter->Reset(); + std::size_t n = 0; + while ((type = (RooCatType *)catIter->Next())) { + // Retrieve the PDF for this simCat state + RooAbsPdf *component_pdf = sim_pdf->getPdf(type->GetName()); + auto dset = (RooAbsData *)dsetList->FindObject(type->GetName()); + + if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { + ooccoutI((TObject *)nullptr, Fitting) + << "RooSumL: creating slave calculator #" << n << " for state " << type->GetName() << " (" + << dset->numEntries() << " dataset entries)" << std::endl; + + // *** START HERE + // WVE HACK determine if we have a RooRealSumPdf and then treat it like a binned likelihood + RooAbsPdf *binnedPdf = 0; + Bool_t binnedL = kFALSE; + if (component_pdf->getAttribute("BinnedLikelihood") && + component_pdf->IsA()->InheritsFrom(RooRealSumPdf::Class())) { + // Simplest case: top-level of component is a RRSP + binnedPdf = component_pdf; + binnedL = kTRUE; + } else if (component_pdf->IsA()->InheritsFrom(RooProdPdf::Class())) { + // Default case: top-level pdf is a product of RRSP and other pdfs + RooFIter iter = ((RooProdPdf *)component_pdf)->pdfList().fwdIterator(); + RooAbsArg *component; + while ((component = iter.next())) { + if (component->getAttribute("BinnedLikelihood") && + component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { + binnedPdf = (RooAbsPdf *)component; + binnedL = kTRUE; + } + if (component->getAttribute("MAIN_MEASUREMENT")) { + // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to + // be passed to the slave calculator + binnedPdf = (RooAbsPdf *)component; + } + } + } + // WVE END HACK + // Below here directly pass binnedPdf instead of PROD(binnedPdf,constraints) as constraints are evaluated + // elsewhere anyway and omitting them reduces model complexity and associated handling/cloning times + // if (_splitRange && rangeName) { + // _gofArray[n] = + // create(type->GetName(), type->GetName(), (binnedPdf ? *binnedPdf : *component_pdf), *dset, + // *projDeps, + // Form("%s_%s", rangeName, type->GetName()), addCoefRangeName, _nCPU * (_mpinterl ? -1 : + // 1), _mpinterl, _CPUAffinity, _verbose, _splitRange, binnedL); + // } else { + // _gofArray[n] = + // create(type->GetName(), type->GetName(), (binnedPdf ? *binnedPdf : *component_pdf), *dset, + // *projDeps, rangeName, + // addCoefRangeName, _nCPU, _mpinterl, _CPUAffinity, _verbose, _splitRange, binnedL); + if (binnedL) { + components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); + } else { + components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); + } + // } + components.back()->setSimCount(N_components); + // *** END HERE + + // TODO: left out Hybrid mode for now, evaluate later whether to reinclude (also then change + // evaluate_partition) + // // Fill per-component split mode with Bulk Partition for now so that Auto will map to bulk-splitting + // of all components if (_mpinterl==RooFit::Hybrid) { + // if (dset->numEntries()<10) { + // //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component + // "<< n << " to SimComponents"<< endl ; _gofSplitMode[n] = RooFit::SimComponents; + // _gofArray[n]->_mpinterl = RooFit::SimComponents; + // } else { + // //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component + // "<< n << " to BulkPartition"<< endl ; _gofSplitMode[n] = RooFit::BulkPartition; + // _gofArray[n]->_mpinterl = RooFit::BulkPartition; + // } + // } + // + // Servers may have been redirected between instantiation and (deferred) initialization + + std::unique_ptr actualParams{binnedPdf ? binnedPdf->getParameters(dset) + : component_pdf->getParameters(dset)}; + std::unique_ptr selTargetParams{(RooArgSet *)pdf->getParameters(*data)->selectCommon(*actualParams)}; + + // TODO: I don't think we have to redirect servers, because our classes make no use of those, but we should + // make sure. Do we need to reset the parameter set instead? + // components_.back()->recursiveRedirectServers(*selTargetParams); + assert(selTargetParams->equals(*components.back()->getParameters())); + + ++n; + } else { + if ((!dset || (0. != dset->sumEntries() && !process_empty_data_sets)) && component_pdf) { + ooccoutD((TObject *)nullptr, Fitting) << "RooSumL: state " << type->GetName() + << " has no data entries, no slave calculator created" << std::endl; + } + } + } + oocoutI((TObject *)nullptr, Fitting) << "RooSumL: created " << n << " slave calculators." << std::endl; + + std::unique_ptr subsidiary = buildConstraints(pdf, data, constrained_parameters, external_constraints, global_observables, global_observables_tag); + if (subsidiary) { + components.push_back(std::move(subsidiary)); + } + + return std::make_shared(pdf, data, std::move(components), extended); +} + +// delegating convenience overloads +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters) +{ + return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters); +} +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints) +{ + return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, external_constraints); +} +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables) +{ + return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, global_observables); +} +std::shared_ptr +buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag) +{ + return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, {}, global_observables_tag); +} +std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables) +{ + return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters, {}, + global_observables); +} + + +std::shared_ptr +buildUnbinnedConstrainedLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, + ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, + GlobalObservables global_observables, std::string global_observables_tag) { + std::vector> components; + components.reserve(2); + components.push_back(std::make_unique(pdf, data, extended)); + components.push_back(buildConstraints(pdf, data, constrained_parameters, external_constraints, global_observables, global_observables_tag)); + return std::make_shared(pdf, data, std::move(components), extended); +} + +// delegating convenience overloads +std::shared_ptr +buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters) +{ + return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters); +} +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints) +{ + return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, external_constraints); +} +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables) +{ + return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, global_observables); +} +std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag) +{ + return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, {}, global_observables_tag); +} + +} +} + diff --git a/roofit/roofitcore/src/TestStatistics/optimization.cxx b/roofit/roofitcore/src/TestStatistics/optimization.cxx new file mode 100644 index 0000000000000..cc93c1ddff40f --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/optimization.cxx @@ -0,0 +1,165 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +#include +#include // complete type for dynamic cast +#include +#include +#include + +namespace RooFit { +namespace TestStatistics { + +RooArgSet ConstantTermsOptimizer::requiredExtraObservables() +{ + // TODO: the RooAbsOptTestStatistics::requiredExtraObservables() call this code was copied + // from was overloaded for RooXYChi2Var only; implement different options when necessary + return RooArgSet(); +} + +void ConstantTermsOptimizer::enableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooAbsData *dataset, + bool applyTrackingOpt) +{ + // Trigger create of all object caches now in nodes that have deferred object creation + // so that cache contents can be processed immediately + function->getVal(norm_set); + + // Apply tracking optimization here. Default strategy is to track components + // of RooAddPdfs and RooRealSumPdfs. If these components are a RooProdPdf + // or a RooProduct respectively, track the components of these products instead + // of the product term + RooArgSet trackNodes; + + // Add safety check here - applyTrackingOpt will only be applied if present + // dataset is constructed in terms of a RooVectorDataStore + if (applyTrackingOpt) { + if (!dynamic_cast(dataset->store())) { + oocoutW((TObject *)nullptr, Optimization) + << "enableConstantTermsOptimization(function: " << function->GetName() + << ", dataset: " << dataset->GetName() + << ") WARNING Cache-and-track optimization (Optimize level 2) is only available for datasets" + << " implemented in terms of RooVectorDataStore - ignoring this option for current dataset" << std::endl; + applyTrackingOpt = kFALSE; + } + } + + if (applyTrackingOpt) { + RooArgSet branches; + function->branchNodeServerList(&branches); + RooFIter iter = branches.fwdIterator(); + RooAbsArg *arg; + while ((arg = iter.next())) { + arg->setCacheAndTrackHints(trackNodes); + } + // Do not set CacheAndTrack on constant expressions + auto constNodes = (RooArgSet *)trackNodes.selectByAttrib("Constant", kTRUE); + trackNodes.remove(*constNodes); + delete constNodes; + + // Set CacheAndTrack flag on all remaining nodes + trackNodes.setAttribAll("CacheAndTrack", kTRUE); + } + + // Find all nodes that depend exclusively on constant parameters + RooArgSet cached_nodes; + + function->findConstantNodes(*dataset->get(), cached_nodes); + + // Cache constant nodes with dataset - also cache entries corresponding to zero-weights in data when using + // BinnedLikelihood + // NOTE: we pass nullptr as cache-owner here, because we don't use the cacheOwner() anywhere in TestStatistics + // TODO: make sure this (nullptr) is always correct + dataset->cacheArgs(nullptr, cached_nodes, norm_set, !function->getAttribute("BinnedLikelihood")); + + // Put all cached nodes in AClean value caching mode so that their evaluate() is never called + TIterator *cIter = cached_nodes.createIterator(); + RooAbsArg *cacheArg; + while ((cacheArg = (RooAbsArg *)cIter->Next())) { + cacheArg->setOperMode(RooAbsArg::AClean); + } + delete cIter; + + RooArgSet *constNodes = (RooArgSet *)cached_nodes.selectByAttrib("ConstantExpressionCached", kTRUE); + RooArgSet actualTrackNodes(cached_nodes); + actualTrackNodes.remove(*constNodes); + if (constNodes->getSize() > 0) { + if (constNodes->getSize() < 20) { + oocoutI((TObject*)nullptr, Minimization) + << " The following expressions have been identified as constant and will be precalculated and cached: " + << *constNodes << std::endl; + } else { + oocoutI((TObject*)nullptr, Minimization) << " A total of " << constNodes->getSize() + << " expressions have been identified as constant and will be precalculated and cached." + << std::endl; + } + } + if (actualTrackNodes.getSize() > 0) { + if (actualTrackNodes.getSize() < 20) { + oocoutI((TObject*)nullptr, Minimization) << " The following expressions will be evaluated in cache-and-track mode: " + << actualTrackNodes << std::endl; + } else { + oocoutI((TObject*)nullptr, Minimization) << " A total of " << constNodes->getSize() + << " expressions will be evaluated in cache-and-track-mode." << std::endl; + } + } + delete constNodes; + + // Disable reading of observables that are no longer used + dataset->optimizeReadingWithCaching(*function, cached_nodes, requiredExtraObservables()); + + // _optimized = kTRUE; +} + +void ConstantTermsOptimizer::disableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooArgSet *observables, + RooAbsData *dataset) +{ + // Delete the cache + dataset->resetCache(); + + // Reactivate all tree branches + dataset->setArgStatus(*dataset->get(), kTRUE); + + // Reset all nodes to ADirty + optimizeCaching(function, norm_set, observables, dataset); + + // Disable propagation of dirty state flags for observables + dataset->setDirtyProp(kFALSE); + + // _cachedNodes.removeAll(); + + // _optimized = kFALSE; +} + +void ConstantTermsOptimizer::optimizeCaching(RooAbsReal *function, RooArgSet *norm_set, RooArgSet *observables, RooAbsData *dataset) +{ + // Trigger create of all object caches now in nodes that have deferred object creation + // so that cache contents can be processed immediately + function->getVal(norm_set); + + // Set value caching mode for all nodes that depend on any of the observables to ADirty + function->optimizeCacheMode(*observables); + + // Disable propagation of dirty state flags for observables + dataset->setDirtyProp(kFALSE); + + // Disable reading of observables that are not used + dataset->optimizeReadingWithCaching(*function, RooArgSet(), requiredExtraObservables()) ; +} + +} // namespace TestStatistics +} // namespace RooFit \ No newline at end of file diff --git a/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx b/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx new file mode 100644 index 0000000000000..599ef21fbe861 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx @@ -0,0 +1,40 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +namespace RooFit { +namespace TestStatistics { + +ConstrainedParameters::ConstrainedParameters(const RooArgSet ¶meters) : set(parameters) {} +// N.B.: the default constructor must be _user-provided_ defaulted, otherwise aggregate initialization will be possible, +// which bypasses the explicit constructor and even leads to errors in some compilers; when initializing as +// ConstrainedParameters({someRooArgSet}) +// compilers can respond with +// call of overloaded ‘GlobalObservables()’ is ambiguous +// This problem is well documented in http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1008r0.pdf. The solution +// used here is detailed in section 1.4 of that paper. Note that in C++17, the workaround is no longer necessary and +// the constructor can be _user-declared_ default (i.e. directly in the declaration above). +ConstrainedParameters::ConstrainedParameters() = default; + +ExternalConstraints::ExternalConstraints(const RooArgSet &constraints) : set(constraints) {} +ExternalConstraints::ExternalConstraints() = default; + +GlobalObservables::GlobalObservables(const RooArgSet &observables) : set(observables) {} +GlobalObservables::GlobalObservables() = default; + +} +} \ No newline at end of file diff --git a/roofit/roofitcore/test/CMakeLists.txt b/roofit/roofitcore/test/CMakeLists.txt index 890723e81aefa..d64fd2252bbc8 100644 --- a/roofit/roofitcore/test/CMakeLists.txt +++ b/roofit/roofitcore/test/CMakeLists.txt @@ -44,3 +44,6 @@ ROOT_ADD_GTEST(testRooProductPdf testRooProductPdf.cxx LIBRARIES RooFitCore) ROOT_ADD_GTEST(testNaNPacker testNaNPacker.cxx LIBRARIES RooFitCore) ROOT_ADD_GTEST(testRooSimultaneous testRooSimultaneous.cxx LIBRARIES RooFitCore RooFit) ROOT_ADD_GTEST(testRooGradMinimizerFcn testRooGradMinimizerFcn.cxx LIBRARIES RooFitCore) + +ROOT_ADD_GTEST(testLikelihoodSerial TestStatistics/testLikelihoodSerial.cxx LIBRARIES RooFitCore RooFit) +ROOT_ADD_GTEST(testRooRealL TestStatistics/RooRealL.cpp LIBRARIES RooFitCore RooFit) diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp new file mode 100644 index 0000000000000..96a304cb6cd65 --- /dev/null +++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp @@ -0,0 +1,340 @@ +// Author: Patrick Bos, Inti Pelupessy, Vince Croft, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include "TestStatistics/RooRealL.h" +#include "TestStatistics/RooUnbinnedL.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gtest/gtest.h" + +class RooRealL + : public ::testing::TestWithParam> { +}; + +TEST_P(RooRealL, getVal) +{ + // Real-life test: calculate a NLL using event-based parallelization. This + // should replicate RooRealMPFE results. + RooRandom::randomGenerator()->SetSeed(std::get<0>(GetParam())); + RooWorkspace w; + w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); + auto x = w.var("x"); + RooAbsPdf *pdf = w.pdf("g"); + RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + auto nll = pdf->createNLL(*data); + + auto nominal_result = nll->getVal(); + + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + + auto mp_result = nll_new.getVal(); + + EXPECT_DOUBLE_EQ(nominal_result, mp_result); +} + +void check_NLL_type(RooAbsReal *nll) +{ + if (dynamic_cast(nll) != nullptr) { + std::cout << "the NLL object is a RooAddition*..." << std::endl; + bool has_rooconstraintsum = false; + RooFIter nll_component_iter = nll->getComponents()->fwdIterator(); + RooAbsArg *nll_component; + while ((nll_component = nll_component_iter.next())) { + if (nll_component->IsA() == RooConstraintSum::Class()) { + has_rooconstraintsum = true; + break; + } else if (nll_component->IsA() != RooNLLVar::Class() && nll_component->IsA() != RooAddition::Class()) { + std::cerr << "... containing an unexpected component class: " << nll_component->ClassName() << std::endl; + throw std::runtime_error("RooAddition* type NLL object contains unexpected component class!"); + } + } + if (has_rooconstraintsum) { + std::cout << "...containing a RooConstraintSum component: " << nll_component->GetName() << std::endl; + } else { + std::cout << "...containing only RooNLLVar components." << std::endl; + } + } else if (dynamic_cast(nll) != nullptr) { + std::cout << "the NLL object is a RooNLLVar*" << std::endl; + } +} + +void count_NLL_components(RooAbsReal *nll) +{ + if (dynamic_cast(nll) != nullptr) { + std::cout << "the NLL object is a RooAddition*..." << std::endl; + unsigned nll_component_count = 0; + RooFIter nll_component_iter = nll->getComponents()->fwdIterator(); + RooAbsArg *nll_component; + while ((nll_component = nll_component_iter.next())) { + if (nll_component->IsA() != RooNLLVar::Class()) { + ++nll_component_count; + } + } + std::cout << "...containing " << nll_component_count << " RooNLLVar components." << std::endl; + } else if (dynamic_cast(nll) != nullptr) { + std::cout << "the NLL object is a RooNLLVar*" << std::endl; + } +} + +TEST_P(RooRealL, getValRooAddition) +{ + RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); + + RooRandom::randomGenerator()->SetSeed(std::get<0>(GetParam())); + + RooWorkspace w; + w.factory("Gaussian::g(x[-10,10],mu[0,-3,3],sigma[1])"); + + RooRealVar *x = w.var("x"); + x->setRange("x_range", -3, 0); + x->setRange("another_range", 1, 7); + + RooAbsPdf *pdf = w.pdf("g"); + RooDataSet *data = pdf->generate(*x, 10000); + + RooAbsReal *nll = + pdf->createNLL(*data, RooFit::Range("x_range"), RooFit::Range("another_range")); + + check_NLL_type(nll); + count_NLL_components(nll); + + delete nll; + delete data; +} + +#if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) +TEST_P(RooRealL, getValRooConstraintSumAddition) +{ + // modified from + // https://github.com/roofit-dev/rootbench/blob/43d12f33e8dac7af7d587b53a2804ddf6717e92f/root/roofit/roofit/RooFitASUM.cxx#L417 + + RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); + + int bins = 10000; + + RooRealVar x("x", "x", 0, bins); + x.setBins(bins); + // Parameters + RooRealVar a0("a0", "a0", 0); + RooRealVar a1("a1", "a1", 1, 0, 2); + RooRealVar a2("a2", "a2", 0); + + RooPolynomial p0("p0", "p0", x); + RooPolynomial p1("p1", "p1", x, RooArgList(a0, a1, a2), 0); + + RooDataHist *dh_bkg = p0.generateBinned(x, 1000000000); + RooDataHist *dh_sig = p1.generateBinned(x, 100000000); + dh_bkg->SetName("dh_bkg"); + dh_sig->SetName("dh_sig"); + + a1.setVal(2); + RooDataHist *dh_sig_up = p1.generateBinned(x, 1100000000); + dh_sig_up->SetName("dh_sig_up"); + a1.setVal(.5); + RooDataHist *dh_sig_down = p1.generateBinned(x, 900000000); + dh_sig_down->SetName("dh_sig_down"); + + RooWorkspace w = RooWorkspace("w"); + w.import(x); + w.import(*dh_sig); + w.import(*dh_bkg); + w.import(*dh_sig_up); + w.import(*dh_sig_down); + w.factory("HistFunc::hf_sig(x,dh_sig)"); + w.factory("HistFunc::hf_bkg(x,dh_bkg)"); + w.factory("HistFunc::hf_sig_up(x,dh_sig_up)"); + w.factory("HistFunc::hf_sig_down(x,dh_sig_down)"); + w.factory("PiecewiseInterpolation::pi_sig(hf_sig,hf_sig_down,hf_sig_up,alpha[-5,5])"); + + w.factory("ASUM::model(mu[1,0,5]*pi_sig,nu[1]*hf_bkg)"); + w.factory("Gaussian::constraint(alpha,0,1)"); + w.factory("PROD::model2(model,constraint)"); + + RooAbsPdf *pdf = w.pdf("model2"); + + RooDataHist *data = pdf->generateBinned(x, 1100000); + RooAbsReal *nll = pdf->createNLL(*data); + + check_NLL_type(nll); + count_NLL_components(nll); + + delete nll; +} +#endif // !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) + +TEST_P(RooRealL, setVal) +{ + // calculate the NLL twice with different parameters + + RooRandom::randomGenerator()->SetSeed(std::get<0>(GetParam())); + RooWorkspace w; + w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); + auto x = w.var("x"); + RooAbsPdf *pdf = w.pdf("g"); + RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + auto nll = pdf->createNLL(*data); + + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + + // calculate first results + auto nominal_result1 = nll->getVal(); + auto mp_result1 = nll_new.getVal(); + + std::cout << "nominal_result1 = " << nominal_result1 << ", mp_result1 = " << mp_result1 << std::endl; + + EXPECT_EQ(nominal_result1, mp_result1); + + w.var("mu")->setVal(2); + + // calculate second results after parameter change + auto nominal_result2 = nll->getVal(); + auto mp_result2 = nll_new.getVal(); + + std::cout << "nominal_result2 = " << nominal_result2 << ", mp_result2 = " << mp_result2 << std::endl; + + EXPECT_EQ(nominal_result2, mp_result2); + if (HasFailure()) { + std::cout << "failed test had seed = " << std::get<0>(GetParam()) << std::endl; + } +} + +INSTANTIATE_TEST_SUITE_P(NworkersModeSeed, RooRealL, + ::testing::Values(2, 3)); // random seed + +class RealLVsMPFE + : public ::testing::TestWithParam> { +}; + +TEST_P(RealLVsMPFE, getVal) +{ + // Compare our MP NLL to actual RooRealMPFE results using the same strategies. + + RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); + + // parameters + std::size_t seed = std::get<0>(GetParam()); + + RooRandom::randomGenerator()->SetSeed(seed); + + RooWorkspace w; + w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); + auto x = w.var("x"); + RooAbsPdf *pdf = w.pdf("g"); + RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + + auto nll_mpfe = pdf->createNLL(*data); + + auto mpfe_result = nll_mpfe->getVal(); + + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + + auto mp_result = nll_new.getVal(); + + EXPECT_EQ(mpfe_result, mp_result); + if (HasFailure()) { + std::cout << "failed test had seed = " << std::get<0>(GetParam()) << std::endl; + } +} + +TEST_P(RealLVsMPFE, minimize) +{ + // do a minimization (e.g. like in GradMinimizer_Gaussian1D test) + + RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); + + // TODO: see whether it performs adequately + + // parameters + std::size_t seed = std::get<0>(GetParam()); + + RooRandom::randomGenerator()->SetSeed(seed); + + RooWorkspace w = RooWorkspace(); + + w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); + auto x = w.var("x"); + RooAbsPdf *pdf = w.pdf("g"); + RooRealVar *mu = w.var("mu"); + + RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + mu->setVal(-2.9); + + auto nll_mpfe = pdf->createNLL(*data); + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + + // save initial values for the start of all minimizations + RooArgSet values = RooArgSet(*mu, *pdf); + + RooArgSet *savedValues = dynamic_cast(values.snapshot()); + if (savedValues == nullptr) { + throw std::runtime_error("params->snapshot() cannot be casted to RooArgSet!"); + } + + // -------- + + RooMinimizer m0(*nll_mpfe); + m0.setMinimizerType("Minuit2"); + + m0.setStrategy(0); + m0.setPrintLevel(-1); + + m0.migrad(); + + RooFitResult *m0result = m0.lastMinuitFit(); + double minNll0 = m0result->minNll(); + double edm0 = m0result->edm(); + double mu0 = mu->getVal(); + double muerr0 = mu->getError(); + + values = *savedValues; + + RooMinimizer m1(nll_new); + m1.setMinimizerType("Minuit2"); + + m1.setStrategy(0); + m1.setPrintLevel(-1); + + m1.migrad(); + + RooFitResult *m1result = m1.lastMinuitFit(); + double minNll1 = m1result->minNll(); + double edm1 = m1result->edm(); + double mu1 = mu->getVal(); + double muerr1 = mu->getError(); + + EXPECT_EQ(minNll0, minNll1); + EXPECT_EQ(mu0, mu1); + EXPECT_EQ(muerr0, muerr1); + EXPECT_EQ(edm0, edm1); + + m1.cleanup(); // necessary in tests to clean up global _theFitter +} + +INSTANTIATE_TEST_SUITE_P(NworkersModeSeed, RealLVsMPFE, + ::testing::Values(2, 3)); // random seed diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx new file mode 100644 index 0000000000000..3fc4e452cd1df --- /dev/null +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -0,0 +1,452 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#include "RooDataHist.h" // complete type in Binned test +#include "RooCategory.h" // complete type in MultiBinnedConstraint test + +//#include +#include +#include +#include +#include +#include +//#include +//#include // need to complete type for debugging +#include +#include +#include + +#include // runtime_error + +#include "gtest/gtest.h" +#include "../test_lib.h" // generate_1D_gaussian_pdf_nll + +class Environment : public testing::Environment { +public: + void SetUp() override { + RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); + } +}; + +// Previously, we just called AddGlobalTestEnvironment in global namespace, but this caused either a warning about an +// unused declared variable (the return value of the call) or a parsing problem that the compiler can't handle if you +// don't store the return value at all. The solution is to just define this manual main function. The default gtest +// main function does InitGoogleTest and RUN_ALL_TESTS, we add the environment call in the middle. +int main(int argc, char** argv) +{ + testing::InitGoogleTest(&argc, argv); + testing::AddGlobalTestEnvironment(new Environment); + return RUN_ALL_TESTS(); +} + +class LikelihoodSerialTest: public ::testing::Test { +protected: + void SetUp() override { + RooRandom::randomGenerator()->SetSeed(seed); + clean_flags = std::make_shared(); + } + + std::size_t seed = 23; + RooWorkspace w; + std::unique_ptr nll; + std::unique_ptr values; + RooAbsPdf *pdf; + RooAbsData *data; + std::shared_ptr likelihood; + std::shared_ptr clean_flags; +}; + +class LikelihoodSerialBinnedDatasetTest : public LikelihoodSerialTest { +protected: + void SetUp() override { + LikelihoodSerialTest::SetUp(); + + // Unbinned pdfs that define template histograms + w.factory("Gaussian::g(x[-10,10],0,2)"); + w.factory("Uniform::u(x)"); + + // Generate template histograms + RooDataHist *h_sig = w.pdf("g")->generateBinned(*w.var("x"), 1000); + RooDataHist *h_bkg = w.pdf("u")->generateBinned(*w.var("x"), 1000); + + w.import(*h_sig, RooFit::Rename("h_sig")); + w.import(*h_bkg, RooFit::Rename("h_bkg")); + + // Construct binned pdf as sum of amplitudes + w.factory("HistFunc::hf_sig(x,h_sig)"); + w.factory("HistFunc::hf_bkg(x,h_bkg)"); + w.factory("ASUM::model(mu_sig[1,-1,10]*hf_sig,mu_bkg[1,-1,10]*hf_bkg)"); + + pdf = w.pdf("model"); + } +}; + +TEST_F(LikelihoodSerialTest, UnbinnedGaussian1D) +{ + std::tie(nll, pdf, data, values) = generate_1D_gaussian_pdf_nll(w, 10000); + likelihood = std::make_shared(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialTest, UnbinnedGaussianND) +{ + unsigned int N = 1; + + std::tie(nll, pdf, data, values) = generate_ND_gaussian_pdf_nll(w, N, 1000); + likelihood = std::make_shared(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialBinnedDatasetTest, UnbinnedPdf) +{ + data = pdf->generateBinned(*w.var("x")); + + nll.reset(pdf->createNLL(*data)); + + likelihood = std::make_shared(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + + +TEST_F(LikelihoodSerialBinnedDatasetTest, UnbinnedPdfWithBinnedLikelihoodAttribute) +{ + pdf->setAttribute("BinnedLikelihood"); + data = pdf->generateBinned(*w.var("x")); + + nll.reset(pdf->createNLL(*data)); + + likelihood = std::make_shared(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + + + +TEST_F(LikelihoodSerialBinnedDatasetTest, BinnedManualNLL) +{ + data = pdf->generateBinned(*w.var("x")); + + // manually create NLL, ripping all relevant parts from RooAbsPdf::createNLL, except here we also set binnedL = true + RooArgSet projDeps; + RooAbsTestStatistic::Configuration nll_config; + nll_config.verbose = false; + nll_config.cloneInputData = false; + nll_config.binnedL = true; + int extended = 2; + RooNLLVar nll_manual("nlletje", "-log(likelihood)", *pdf, *data, projDeps, nll_config, extended); + + likelihood = std::make_shared(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll_manual.getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + + +TEST_F(LikelihoodSerialTest, SimBinned) +{ + // Unbinned pdfs that define template histograms + w.factory("Gaussian::gA(x[-10,10],-2,3)"); + w.factory("Gaussian::gB(x[-10,10],2,1)"); + w.factory("Uniform::u(x)"); + + // Generate template histograms + RooDataHist *h_sigA = w.pdf("gA")->generateBinned(*w.var("x"), 1000); + RooDataHist *h_sigB = w.pdf("gB")->generateBinned(*w.var("x"), 1000); + RooDataHist *h_bkg = w.pdf("u")->generateBinned(*w.var("x"), 1000); + + w.import(*h_sigA, RooFit::Rename("h_sigA")); + w.import(*h_sigB, RooFit::Rename("h_sigB")); + w.import(*h_bkg, RooFit::Rename("h_bkg")); + + // Construct L_phys: binned pdf as sum of amplitudes + w.factory("HistFunc::hf_sigA(x,h_sigA)"); + w.factory("HistFunc::hf_sigB(x,h_sigB)"); + w.factory("HistFunc::hf_bkg(x,h_bkg)"); + + w.factory("ASUM::model_A(mu_sig[1,-1,10]*hf_sigA,mu_bkg_A[1,-1,10]*hf_bkg)"); + w.factory("ASUM::model_B(mu_sig*hf_sigB,mu_bkg_B[1,-1,10]*hf_bkg)"); + + w.pdf("model_A")->setAttribute("BinnedLikelihood"); + w.pdf("model_B")->setAttribute("BinnedLikelihood"); + + // Construct simulatenous pdf + w.factory("SIMUL::model(index[A,B],A=model_A,B=model_B)"); + + // Construct dataset + pdf = w.pdf("model"); + data = pdf->generate(RooArgSet(*w.var("x"), *w.cat("index")), RooFit::AllBinned()); + + nll.reset(pdf->createNLL(*data)); + + likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialTest, BinnedConstrained) +{ + // Unbinned pdfs that define template histograms + + w.factory("Gaussian::g(x[-10,10],0,2)"); + w.factory("Uniform::u(x)"); + + // Generate template histograms + + RooDataHist *h_sig = w.pdf("g")->generateBinned(*w.var("x"), 1000); + RooDataHist *h_bkg = w.pdf("u")->generateBinned(*w.var("x"), 1000); + + w.import(*h_sig, RooFit::Rename("h_sig")); + w.import(*h_bkg, RooFit::Rename("h_bkg")); + + // Construct binned pdf as sum of amplitudes + w.factory("HistFunc::hf_sig(x,h_sig)"); + w.factory("HistFunc::hf_bkg(x,h_bkg)"); + w.factory("ASUM::model_phys(mu_sig[1,-1,10]*hf_sig,expr::mu_bkg('1+0.02*alpha_bkg',alpha_bkg[-5,5])*hf_bkg)") ; + + // Construct L_subs: Gaussian subsidiary measurement that constrains alpha_bkg + w.factory("Gaussian:model_subs(alpha_bkg_obs[0],alpha_bkg,1)") ; + + // Construct full pdf + w.factory("PROD::model(model_phys,model_subs)") ; + + pdf = w.pdf("model"); + // Construct dataset from physics pdf + data = w.pdf("model_phys")->generateBinned(*w.var("x")); + + nll.reset(pdf->createNLL(*data, RooFit::GlobalObservables(*w.var("alpha_bkg_obs")))); + + // -------- + + auto nll0 = nll->getVal(); + + likelihood = +// std::make_shared(pdf, data, RooFit::GlobalObservables(*w.var("alpha_bkg_obs"))); +// std::make_shared(pdf, data); +// std::make_shared(pdf, data, RooFit::TestStatistics::GlobalObservables({*w.var("alpha_bkg_obs")})); + RooFit::TestStatistics::buildUnbinnedConstrainedLikelihood(pdf, data, RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs")))); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialTest, SimUnbinned) +{ + // SIMULTANEOUS FIT OF 2 UNBINNED DATASETS + + w.factory("ExtendPdf::egA(Gaussian::gA(x[-10,10],mA[2,-10,10],s[3,0.1,10]),nA[1000])") ; + w.factory("ExtendPdf::egB(Gaussian::gB(x,mB[-2,-10,10],s),nB[100])") ; + w.factory("SIMUL::model(index[A,B],A=egA,B=egB)") ; + + pdf = w.pdf("model"); + // Construct dataset from physics pdf + data = pdf->generate(RooArgSet(*w.var("x"),*w.cat("index"))); + + nll.reset(pdf->createNLL(*data)); + + // -------- + + auto nll0 = nll->getVal(); + + likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialTest, SimUnbinnedNonExtended) +{ + // SIMULTANEOUS FIT OF 2 UNBINNED DATASETS + + w.factory("ExtendPdf::egA(Gaussian::gA(x[-10,10],mA[2,-10,10],s[3,0.1,10]),nA[1000])") ; + w.factory("ExtendPdf::egB(Gaussian::gB(x,mB[-2,-10,10],s),nB[100])") ; + w.factory("SIMUL::model(index[A,B],A=gA,B=gB)") ; + + RooDataSet* dA = w.pdf("gA")->generate(*w.var("x"),1) ; + RooDataSet* dB = w.pdf("gB")->generate(*w.var("x"),1) ; + w.cat("index")->setLabel("A") ; + dA->addColumn(*w.cat("index")) ; + w.cat("index")->setLabel("B") ; + dB->addColumn(*w.cat("index")) ; + + data = (RooDataSet*) dA->Clone() ; + static_cast(data)->append(*dB) ; + + pdf = w.pdf("model"); + + nll.reset(pdf->createNLL(*data)); + + likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} + + +class LikelihoodSerialSimBinnedConstrainedTest : public LikelihoodSerialTest { +protected: + void SetUp() override { + LikelihoodSerialTest::SetUp(); + // Unbinned pdfs that define template histograms + + w.factory("Gaussian::gA(x[-10,10],-2,3)") ; + w.factory("Gaussian::gB(x[-10,10],2,1)") ; + w.factory("Uniform::u(x)"); + + // Generate template histograms + + RooDataHist* h_sigA = w.pdf("gA")->generateBinned(*w.var("x"),1000) ; + RooDataHist* h_sigB = w.pdf("gB")->generateBinned(*w.var("x"),1000) ; + RooDataHist *h_bkg = w.pdf("u")->generateBinned(*w.var("x"), 1000); + + w.import(*h_sigA, RooFit::Rename("h_sigA")); + w.import(*h_sigB, RooFit::Rename("h_sigB")); + w.import(*h_bkg, RooFit::Rename("h_bkg")); + + // Construct binned pdf as sum of amplitudes + w.factory("HistFunc::hf_sigA(x,h_sigA)") ; + w.factory("HistFunc::hf_sigB(x,h_sigB)") ; + w.factory("HistFunc::hf_bkg(x,h_bkg)") ; + + w.factory("ASUM::model_phys_A(mu_sig[1,-1,10]*hf_sigA,expr::mu_bkg_A('1+0.02*alpha_bkg_A',alpha_bkg_A[-5,5])*hf_bkg)") ; + w.factory("ASUM::model_phys_B(mu_sig*hf_sigB,expr::mu_bkg_B('1+0.05*alpha_bkg_B',alpha_bkg_B[-5,5])*hf_bkg)") ; + + // Construct L_subs: Gaussian subsidiary measurement that constrains alpha_bkg + w.factory("Gaussian:model_subs_A(alpha_bkg_obs_A[0],alpha_bkg_A,1)") ; + w.factory("Gaussian:model_subs_B(alpha_bkg_obs_B[0],alpha_bkg_B,1)") ; + + // Construct full pdfs for each component (A,B) + w.factory("PROD::model_A(model_phys_A,model_subs_A)") ; + w.factory("PROD::model_B(model_phys_B,model_subs_B)") ; + + // Construct simulatenous pdf + w.factory("SIMUL::model(index[A,B],A=model_A,B=model_B)") ; + + pdf = w.pdf("model"); + // Construct dataset from physics pdf + data = pdf->generate(RooArgSet(*w.var("x"), *w.cat("index")), RooFit::AllBinned()); + } +}; + +TEST_F(LikelihoodSerialSimBinnedConstrainedTest, BasicParameters) +{ + // original test: + nll.reset(pdf->createNLL(*data, RooFit::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs_A"), *w.var("alpha_bkg_obs_B"))))); + + // -------- + + auto nll0 = nll->getVal(); + + likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood( + pdf, data, RooFit::TestStatistics::GlobalObservables({*w.var("alpha_bkg_obs_A"), *w.var("alpha_bkg_obs_B")})); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_DOUBLE_EQ(nll0, nll1); +} + +TEST_F(LikelihoodSerialSimBinnedConstrainedTest, ConstrainedAndOffset) +{ + // a variation to test some additional parameters (ConstrainedParameters and offsetting) + nll.reset(pdf->createNLL(*data, RooFit::Constrain(RooArgSet(*w.var("alpha_bkg_obs_A"))), + RooFit::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs_B"))), RooFit::Offset(kTRUE))); + + // -------- + + auto nll0 = nll->getVal(); + + likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood( + pdf, data, RooFit::TestStatistics::ConstrainedParameters(RooArgSet(*w.var("alpha_bkg_obs_A"))), + RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs_B")))); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + nll_ts.enableOffsetting(true); + + nll_ts.evaluate(); + double nll1, carry1; + std::tie(nll1, carry1) = RooFit::kahan_add(nll_ts.getResult(), nll_ts.offset(), nll_ts.offsetCarry() + likelihood->getCarry()); + + EXPECT_DOUBLE_EQ(nll0, nll1); + EXPECT_FALSE(nll_ts.offset() == 0); + + // also check against RooRealL value + RooFit::TestStatistics::RooRealL nll_real("real_nll", "RooRealL version", likelihood); + + auto nll2 = nll_real.getVal(); + + EXPECT_EQ(nll0, nll2); + EXPECT_DOUBLE_EQ(nll1, nll2); + +// printf("nll0: %a\tnll1: %a\tnll2: %a\tnll_ts.getResult(): %a\tnll_ts.offset: %a\tnll_ts.offset_carry: %a\tlikelihood.get_carry: %a\tcarry1: %a\n", nll0, nll1, nll2, nll_ts.getResult(), nll_ts.offset(), nll_ts.offsetCarry(), likelihood->get_carry(), carry1); +} From 0fcec2b37200fae17a0cb4030c473078542eb632 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Thu, 22 Jul 2021 17:04:55 +0200 Subject: [PATCH 059/577] modernize and clean up RooFit::TestStatistics Based on review by @hageboeck and @guitargeek in PR #8700. - Cleaned remaining TODOs, commented out code, etc. - Replaced TIterator and RooFIter with range-based for-loops. - Include cleanup. - Replace raw with unique_ptrs where possible, also thereby fixing many memory leaks in tests. - Remove unused functions (processEmptyDataSets) - Use auto. - Break circular dependency between RooMinimizer & MinuitFcnGrad * Also fixes some minor ensuing include errors and reorders RooMinimizer.cxx includes. - Some minor automatic style fixes and corrects to debugging/warning prints in RooAbsMinimizerFcn. - Fixes RooFormulaVar failure in RooRealL test, thanks to @guitargeek. --- roofit/roofitcore/CMakeLists.txt | 4 +- roofit/roofitcore/inc/RooMinimizer.h | 12 ++-- ...ptimization.h => ConstantTermsOptimizer.h} | 6 +- .../inc/TestStatistics/LikelihoodSerial.h | 3 - .../inc/TestStatistics/MinuitFcnGrad.h | 56 ++++++++-------- .../roofitcore/inc/TestStatistics/RooAbsL.h | 1 + .../roofitcore/inc/TestStatistics/RooRealL.h | 5 +- .../inc/TestStatistics/RooSubsidiaryL.h | 6 +- .../roofitcore/inc/TestStatistics/RooSumL.h | 8 +-- .../inc/TestStatistics/RooUnbinnedL.h | 1 - .../inc/TestStatistics/likelihood_builders.h | 6 +- roofit/roofitcore/src/RooAbsMinimizerFcn.cxx | 6 +- roofit/roofitcore/src/RooMinimizer.cxx | 31 ++++----- ...ization.cxx => ConstantTermsOptimizer.cxx} | 16 ++--- .../LikelihoodGradientWrapper.cxx | 2 +- .../src/TestStatistics/LikelihoodWrapper.cxx | 3 + .../src/TestStatistics/MinuitFcnGrad.cxx | 10 +-- .../roofitcore/src/TestStatistics/RooAbsL.cxx | 16 ++--- .../src/TestStatistics/RooSubsidiaryL.cxx | 8 +-- .../roofitcore/src/TestStatistics/RooSumL.cxx | 18 +---- .../src/TestStatistics/RooUnbinnedL.cxx | 19 ++---- .../TestStatistics/likelihood_builders.cxx | 53 ++++----------- .../test/TestStatistics/RooRealL.cpp | 65 +++++++++---------- .../TestStatistics/testLikelihoodSerial.cxx | 30 +++------ 24 files changed, 143 insertions(+), 242 deletions(-) rename roofit/roofitcore/inc/TestStatistics/{optimization.h => ConstantTermsOptimizer.h} (91%) rename roofit/roofitcore/src/TestStatistics/{optimization.cxx => ConstantTermsOptimizer.cxx} (93%) diff --git a/roofit/roofitcore/CMakeLists.txt b/roofit/roofitcore/CMakeLists.txt index b5809e40acd49..9d7611efcd526 100644 --- a/roofit/roofitcore/CMakeLists.txt +++ b/roofit/roofitcore/CMakeLists.txt @@ -233,6 +233,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore RooFitLegacy/RooNameSet.h RooFitLegacy/RooSetPair.h RooFitLegacy/RooTreeData.h + TestStatistics/ConstantTermsOptimizer.h TestStatistics/LikelihoodGradientWrapper.h TestStatistics/LikelihoodWrapper.h TestStatistics/LikelihoodSerial.h @@ -246,7 +247,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore TestStatistics/kahan_sum.h TestStatistics/optional_parameter_types.h TestStatistics/likelihood_builders.h - TestStatistics/optimization.h SOURCES src/BidirMMapPipe.cxx src/BidirMMapPipe.h @@ -463,6 +463,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore src/RooFitLegacy/RooMultiCatIter.cxx src/RooFitLegacy/RooNameSet.cxx src/RooFitLegacy/RooSetPair.cxx + src/TestStatistics/ConstantTermsOptimizer.cxx src/TestStatistics/LikelihoodGradientWrapper.cxx src/TestStatistics/LikelihoodWrapper.cxx src/TestStatistics/LikelihoodSerial.cxx @@ -476,7 +477,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore src/TestStatistics/optional_parameter_types.cxx src/TestStatistics/likelihood_builders.cxx src/TestStatistics/kahan_sum.cxx - src/TestStatistics/optimization.cxx DICTIONARY_OPTIONS "-writeEmptyRootPCM" LIBRARIES diff --git a/roofit/roofitcore/inc/RooMinimizer.h b/roofit/roofitcore/inc/RooMinimizer.h index 72ac76a7a0941..6d590a983d547 100644 --- a/roofit/roofitcore/inc/RooMinimizer.h +++ b/roofit/roofitcore/inc/RooMinimizer.h @@ -29,9 +29,8 @@ #include "RooArgList.h" // cannot just use forward decl due to default argument in lastMinuitFit -#include "RooMinimizerFcn.h" -#include "RooGradMinimizerFcn.h" #include "TestStatistics/RooAbsL.h" +#include "TestStatistics/MinuitFcnGrad.h" #include "RooSentinel.h" #include "RooMsgService.h" @@ -48,7 +47,6 @@ class TH2F ; class RooPlot ; namespace RooFit { namespace TestStatistics { -class MinuitFcnGrad; // this one is necessary due to circular include dependencies class LikelihoodSerial; class LikelihoodGradientSerial; } @@ -167,8 +165,6 @@ class RooMinimizer : public TObject { ClassDefOverride(RooMinimizer,0) // RooFit interface to ROOT::Fit::Fitter } ; -// include here to avoid circular dependency issues in class definitions -#include "TestStatistics/MinuitFcnGrad.h" template RooMinimizer::RooMinimizer(std::shared_ptr likelihood, LikelihoodWrapperT* /* value unused */, @@ -183,7 +179,7 @@ RooMinimizer::RooMinimizer(std::shared_ptr like _theFitter->Config().SetMinimizer(_minimizerType.c_str()); setEps(1.0); // default tolerance - _fcn = RooFit::TestStatistics::MinuitFcnGrad::create(likelihood, this, _verbose); + _fcn = RooFit::TestStatistics::MinuitFcnGrad::create(likelihood, this, _theFitter->Config().ParamsSettings(), _verbose); // default max number of calls _theFitter->Config().MinimizerOptions().SetMaxIterations(500 * _fcn->getNDim()); @@ -209,8 +205,8 @@ RooMinimizer::RooMinimizer(std::shared_ptr like // static function template std::unique_ptr RooMinimizer::create(std::shared_ptr likelihood) { - return std::unique_ptr(new RooMinimizer(likelihood, static_cast(nullptr), - static_cast(nullptr))); + return std::make_unique(likelihood, static_cast(nullptr), + static_cast(nullptr)); } #endif diff --git a/roofit/roofitcore/inc/TestStatistics/optimization.h b/roofit/roofitcore/inc/TestStatistics/ConstantTermsOptimizer.h similarity index 91% rename from roofit/roofitcore/inc/TestStatistics/optimization.h rename to roofit/roofitcore/inc/TestStatistics/ConstantTermsOptimizer.h index cc578b139f3d7..ff303c07d50d1 100644 --- a/roofit/roofitcore/inc/TestStatistics/optimization.h +++ b/roofit/roofitcore/inc/TestStatistics/ConstantTermsOptimizer.h @@ -14,8 +14,8 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * *****************************************************************************/ -#ifndef ROOT_ROOFIT_TESTSTATISTICS_optimization -#define ROOT_ROOFIT_TESTSTATISTICS_optimization +#ifndef ROOT_ROOFIT_TESTSTATISTICS_ConstantTermsOptimizer +#define ROOT_ROOFIT_TESTSTATISTICS_ConstantTermsOptimizer // forward declarations class RooAbsReal; @@ -37,4 +37,4 @@ struct ConstantTermsOptimizer { } } -#endif // ROOT_ROOFIT_TESTSTATISTICS_optimization +#endif // ROOT_ROOFIT_TESTSTATISTICS_ConstantTermsOptimizer diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h index df385737be4c4..7605e8c49baec 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h @@ -34,9 +34,6 @@ class LikelihoodSerial : public LikelihoodWrapper { void initVars(); - // TODO: implement override if necessary -// void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & options) override; - void evaluate() override; inline double getResult() const override { return result; } diff --git a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h index 6871f2bbf84e4..dccfc31fa08a8 100644 --- a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h +++ b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h @@ -22,11 +22,10 @@ #include "TestStatistics/RooAbsL.h" #include "TestStatistics/LikelihoodWrapper.h" #include "TestStatistics/LikelihoodGradientWrapper.h" -//#include "TestStatistics/LikelihoodJob.h" -//#include "TestStatistics/LikelihoodGradientJob.h" #include "RooAbsMinimizerFcn.h" #include +#include #include "Math/IFunction.h" // ROOT::Math::IMultiGradFunction // forward declaration @@ -46,7 +45,8 @@ struct WrapperCalculationCleanFlags { bool likelihood = false; bool gradient = false; - void set_all(bool value) { + void set_all(bool value) + { likelihood = value; gradient = value; } @@ -57,8 +57,9 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi // factory template - static MinuitFcnGrad *create(const std::shared_ptr &likelihood, - RooMinimizer *context, bool verbose = false); + static MinuitFcnGrad * + create(const std::shared_ptr &likelihood, RooMinimizer *context, + std::vector ¶meters, bool verbose = false); inline ROOT::Math::IMultiGradFunction *Clone() const override { return new MinuitFcnGrad(*this); } @@ -93,12 +94,12 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi private: template - MinuitFcnGrad(const std::shared_ptr &_likelihood, RooMinimizer *context, - bool verbose, - LikelihoodWrapperT * /* used only for template deduction */ = - static_cast(nullptr), - LikelihoodGradientWrapperT * /* used only for template deduction */ = - static_cast(nullptr)); + MinuitFcnGrad( + const std::shared_ptr &_likelihood, RooMinimizer *context, + std::vector ¶meters, bool verbose, + LikelihoodWrapperT * /* used only for template deduction */ = static_cast(nullptr), + LikelihoodGradientWrapperT * /* used only for template deduction */ = + static_cast(nullptr)); // The following three overrides will not actually be used in this class, so they will throw: double DoDerivative(const double *x, unsigned int icoord) const override; @@ -111,52 +112,49 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi public: mutable std::shared_ptr calculation_is_clean; + private: mutable std::vector minuit_internal_x_; mutable std::vector minuit_external_x_; + public: mutable bool minuit_internal_roofit_x_mismatch_ = false; }; -} // namespace TestStatistics -} // namespace RooFit - - -// include here to avoid circular dependency issues in class definitions -#include "RooMinimizer.h" - - -namespace RooFit { -namespace TestStatistics { +/// \param[in] context RooMinimizer that creates and owns this class. +/// \param[in] parameters The vector of ParameterSettings objects that describe the parameters used in the Minuit +/// Fitter. Note that these must match the set used in the Fitter used by \p context! It can be passed in from +/// RooMinimizer with fitter()->Config().ParamsSettings(). template MinuitFcnGrad::MinuitFcnGrad(const std::shared_ptr &_likelihood, RooMinimizer *context, - bool verbose, LikelihoodWrapperT * /* value unused */, - LikelihoodGradientWrapperT * /* value unused */) + std::vector ¶meters, bool verbose, + LikelihoodWrapperT * /* value unused */, LikelihoodGradientWrapperT * /* value unused */) : RooAbsMinimizerFcn(RooArgList(*_likelihood->getParameters()), context, verbose), minuit_internal_x_(NDim(), 0), minuit_external_x_(NDim(), 0) { - auto parameters = _context->fitter()->Config().ParamsSettings(); synchronizeParameterSettings(parameters, kTRUE, verbose); calculation_is_clean = std::make_shared(); - likelihood = std::make_shared(_likelihood, calculation_is_clean/*, _context*/); + likelihood = std::make_shared(_likelihood, calculation_is_clean /*, _context*/); gradient = std::make_shared(_likelihood, calculation_is_clean, getNDim(), _context); likelihood->synchronizeParameterSettings(parameters); gradient->synchronizeParameterSettings(this, parameters); - // Note: can be different than RooGradMinimizerFcn, where default options are passed (ROOT::Math::MinimizerOptions::DefaultStrategy() and ROOT::Math::MinimizerOptions::DefaultErrorDef()) + // Note: can be different than RooGradMinimizerFcn, where default options are passed + // (ROOT::Math::MinimizerOptions::DefaultStrategy() and ROOT::Math::MinimizerOptions::DefaultErrorDef()) likelihood->synchronizeWithMinimizer(ROOT::Math::MinimizerOptions()); gradient->synchronizeWithMinimizer(ROOT::Math::MinimizerOptions()); } // static function template -MinuitFcnGrad *MinuitFcnGrad::create(const std::shared_ptr& likelihood, - RooMinimizer *context, bool verbose) +MinuitFcnGrad * +MinuitFcnGrad::create(const std::shared_ptr &likelihood, RooMinimizer *context, + std::vector ¶meters, bool verbose) { - return new MinuitFcnGrad(likelihood, context, verbose, static_cast(nullptr), + return new MinuitFcnGrad(likelihood, context, parameters, verbose, static_cast(nullptr), static_cast(nullptr)); } diff --git a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h index b6e42979266a4..395877d762ade 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h @@ -22,6 +22,7 @@ #include // std::size_t #include +#include // forward declarations class RooAbsPdf; diff --git a/roofit/roofitcore/inc/TestStatistics/RooRealL.h b/roofit/roofitcore/inc/TestStatistics/RooRealL.h index 7b1263b3d088d..3effc137cd80a 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooRealL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooRealL.h @@ -17,7 +17,7 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooRealL #define ROOT_ROOFIT_TESTSTATISTICS_RooRealL -#include +#include "RooAbsReal.h" #include "RooSetProxy.h" #include "Rtypes.h" // ClassDef, ClassImp @@ -27,7 +27,6 @@ namespace RooFit { namespace TestStatistics { -// forward declaration class RooAbsL; class RooRealL : public RooAbsReal { @@ -35,11 +34,9 @@ class RooRealL : public RooAbsReal { RooRealL(const char *name, const char *title, std::shared_ptr likelihood); RooRealL(const RooRealL &other, const char *name = 0); - // pure virtual overrides: Double_t evaluate() const override; inline TObject *clone(const char *newname) const override { return new RooRealL(*this, newname); } - // virtual overrides: inline double globalNormalization() const { // Default value of global normalization factor is 1.0 diff --git a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h index 5f50c70a62189..73cd7c6ae8db4 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h @@ -17,9 +17,9 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL #define ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL -#include -#include -#include +#include "TestStatistics/RooAbsL.h" +#include "RooArgList.h" +#include "RooArgSet.h" namespace RooFit { namespace TestStatistics { diff --git a/roofit/roofitcore/inc/TestStatistics/RooSumL.h b/roofit/roofitcore/inc/TestStatistics/RooSumL.h index 9a1caa190c7c5..285f5f2205883 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSumL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSumL.h @@ -17,8 +17,10 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSumL #define ROOT_ROOFIT_TESTSTATISTICS_RooSumL -#include -#include +#include "TestStatistics/RooAbsL.h" +#include "TestStatistics/optional_parameter_types.h" + +#include namespace RooFit { namespace TestStatistics { @@ -39,8 +41,6 @@ class RooSumL : public RooAbsL { void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) override; private: - bool processEmptyDataSets() const; - std::vector> components_; }; diff --git a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h index ff4c1483925f2..93932f75f7c62 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h @@ -38,7 +38,6 @@ class RooUnbinnedL : std::size_t components_end) override; private: - bool processEmptyDataSets() const; bool apply_weight_squared = false; // Apply weights squared? mutable bool _first = true; //! }; diff --git a/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h b/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h index 1a03c41e9c889..9193383ccb183 100644 --- a/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h +++ b/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h @@ -17,8 +17,10 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders #define ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders -#include -#include +#include "TestStatistics/RooAbsL.h" +#include "TestStatistics/optional_parameter_types.h" + +#include // forward declarations class RooAbsPdf; diff --git a/roofit/roofitcore/src/RooAbsMinimizerFcn.cxx b/roofit/roofitcore/src/RooAbsMinimizerFcn.cxx index 233f3759c0daf..ee578f60ce577 100644 --- a/roofit/roofitcore/src/RooAbsMinimizerFcn.cxx +++ b/roofit/roofitcore/src/RooAbsMinimizerFcn.cxx @@ -59,7 +59,7 @@ RooAbsMinimizerFcn::RooAbsMinimizerFcn(RooArgList paramList, RooMinimizer *conte for (unsigned int i = 0; i < _floatParamList->size(); ) { // Note: Counting loop, since removing from collection! const RooAbsArg* arg = (*_floatParamList).at(i); if (!arg->IsA()->InheritsFrom(RooAbsRealLValue::Class())) { - oocoutW(_context,Minimization) << "RooMinimizerFcn::RooMinimizerFcn: removing parameter " + oocoutW(_context,Minimization) << "RooAbsMinimizerFcn::RooAbsMinimizerFcn: removing parameter " << arg->GetName() << " from list because it is not of type RooRealVar" << endl; _floatParamList->remove(*arg); } else { @@ -424,11 +424,11 @@ void RooAbsMinimizerFcn::printEvalErrors() const { std::ostringstream msg; if (_doEvalErrorWall) { - msg << "RooMinimizerFcn: Minimized function has error status." << endl + msg << "RooAbsMinimizerFcn: Minimized function has error status." << endl << "Returning maximum FCN so far (" << _maxFCN << ") to force MIGRAD to back out of this region. Error log follows.\n"; } else { - msg << "RooMinimizerFcn: Minimized function has error status but is ignored.\n"; + msg << "RooAbsMinimizerFcn: Minimized function has error status but is ignored.\n"; } msg << "Parameter values: " ; diff --git a/roofit/roofitcore/src/RooMinimizer.cxx b/roofit/roofitcore/src/RooMinimizer.cxx index 60eb861568322..4b0706948728e 100644 --- a/roofit/roofitcore/src/RooMinimizer.cxx +++ b/roofit/roofitcore/src/RooMinimizer.cxx @@ -38,21 +38,9 @@ Various methods are available to control verbosity, profiling, automatic PDF optimization. **/ +#include "RooMinimizer.h" #include "RooFit.h" - -#include "TClass.h" - -#include -#include - -#include "TH2.h" -#include "TMarker.h" -#include "TGraph.h" -#include "Fit/FitConfig.h" -#include "TStopwatch.h" -#include "TMatrixDSym.h" - #include "RooArgSet.h" #include "RooArgList.h" #include "RooAbsReal.h" @@ -62,11 +50,21 @@ automatic PDF optimization. #include "RooSentinel.h" #include "RooMsgService.h" #include "RooPlot.h" - +#include "RooMinimizerFcn.h" +#include "RooGradMinimizerFcn.h" #include "RooFitResult.h" -#include "RooMinimizer.h" +#include "TClass.h" #include "Math/Minimizer.h" +#include "TH2.h" +#include "TMarker.h" +#include "TGraph.h" +#include "Fit/FitConfig.h" +#include "TStopwatch.h" +#include "TMatrixDSym.h" + +#include +#include #if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3) char* operator+( streampos&, char* ); @@ -251,9 +249,6 @@ void RooMinimizer::setOffsetting(Bool_t flag) //////////////////////////////////////////////////////////////////////////////// /// Choose the minimizer algorithm. -// forward declaration (necessary for avoiding circular dependency problems) -class RooGradMinimizerFcn; - void RooMinimizer::setMinimizerType(const char* type) { if (_fcnMode != FcnMode::classic && strcmp(type, "Minuit2") != 0) { diff --git a/roofit/roofitcore/src/TestStatistics/optimization.cxx b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx similarity index 93% rename from roofit/roofitcore/src/TestStatistics/optimization.cxx rename to roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx index cc93c1ddff40f..5a4cf8e5ab767 100644 --- a/roofit/roofitcore/src/TestStatistics/optimization.cxx +++ b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx @@ -14,7 +14,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * *****************************************************************************/ -#include +#include #include #include // complete type for dynamic cast @@ -61,9 +61,7 @@ void ConstantTermsOptimizer::enableConstantTermsOptimization(RooAbsReal *functio if (applyTrackingOpt) { RooArgSet branches; function->branchNodeServerList(&branches); - RooFIter iter = branches.fwdIterator(); - RooAbsArg *arg; - while ((arg = iter.next())) { + for (const auto arg : branches) { arg->setCacheAndTrackHints(trackNodes); } // Do not set CacheAndTrack on constant expressions @@ -87,14 +85,11 @@ void ConstantTermsOptimizer::enableConstantTermsOptimization(RooAbsReal *functio dataset->cacheArgs(nullptr, cached_nodes, norm_set, !function->getAttribute("BinnedLikelihood")); // Put all cached nodes in AClean value caching mode so that their evaluate() is never called - TIterator *cIter = cached_nodes.createIterator(); - RooAbsArg *cacheArg; - while ((cacheArg = (RooAbsArg *)cIter->Next())) { + for (const auto cacheArg : cached_nodes) { cacheArg->setOperMode(RooAbsArg::AClean); } - delete cIter; - RooArgSet *constNodes = (RooArgSet *)cached_nodes.selectByAttrib("ConstantExpressionCached", kTRUE); + std::unique_ptr constNodes {(RooArgSet *)cached_nodes.selectByAttrib("ConstantExpressionCached", kTRUE)}; RooArgSet actualTrackNodes(cached_nodes); actualTrackNodes.remove(*constNodes); if (constNodes->getSize() > 0) { @@ -117,12 +112,9 @@ void ConstantTermsOptimizer::enableConstantTermsOptimization(RooAbsReal *functio << " expressions will be evaluated in cache-and-track-mode." << std::endl; } } - delete constNodes; // Disable reading of observables that are no longer used dataset->optimizeReadingWithCaching(*function, cached_nodes, requiredExtraObservables()); - - // _optimized = kTRUE; } void ConstantTermsOptimizer::disableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooArgSet *observables, diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx index 167dd94a1f16e..565de46b9b9e8 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx @@ -14,7 +14,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * *****************************************************************************/ -#include +#include "TestStatistics/LikelihoodGradientWrapper.h" #include "RooMinimizer.h" namespace RooFit { diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx index 66ffa3e2ac05b..5cb68ae36e84c 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx @@ -15,11 +15,14 @@ *****************************************************************************/ #include + #include // need complete type for likelihood->... #include #include #include // need complete type for dynamic cast +#include "RooMsgService.h" + namespace RooFit { namespace TestStatistics { diff --git a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx index 23cfe4c5a7c0e..8c7345fd14e3e 100644 --- a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx +++ b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx @@ -16,6 +16,7 @@ #include "TestStatistics/MinuitFcnGrad.h" +#include "RooMinimizer.h" #include "RooMsgService.h" #include "RooAbsPdf.h" @@ -56,18 +57,17 @@ double MinuitFcnGrad::DoEval(const double *x) const << "RooGradMinimizerFcn: Minimized function has error status but is ignored" << std::endl; } - TIterator *iter = _floatParamList->createIterator(); - RooRealVar *var; Bool_t first(kTRUE); ooccoutW(static_cast(nullptr), Eval) << "Parameter values: "; - while ((var = (RooRealVar *)iter->Next())) { + for (const auto rooAbsArg : *_floatParamList) { + auto var = static_cast(rooAbsArg); if (first) { first = kFALSE; - } else + } else { ooccoutW(static_cast(nullptr), Eval) << ", "; + } ooccoutW(static_cast(nullptr), Eval) << var->GetName() << "=" << var->getVal(); } - delete iter; ooccoutW(static_cast(nullptr), Eval) << std::endl; RooAbsReal::printEvalErrors(ooccoutW(static_cast(nullptr), Eval), _printEvalErrors); diff --git a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx index c85aa7e4b1023..ecbec2f249291 100644 --- a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx @@ -15,7 +15,7 @@ *****************************************************************************/ #include -#include +#include #include "RooAbsPdf.h" #include "RooAbsData.h" @@ -152,10 +152,8 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) normSet_.reset((RooArgSet *)indata.get()->snapshot(kFALSE)); // Expand list of observables with any observables used in parameterized ranges - RooAbsArg *realDep; - RooFIter iter = _funcObsSet->fwdIterator(); - while ((realDep = iter.next())) { - RooAbsRealLValue *realDepRLV = dynamic_cast(realDep); + for (const auto realDep : *_funcObsSet) { + auto realDepRLV = dynamic_cast(realDep); if (realDepRLV && realDepRLV->isDerived()) { RooArgSet tmp2; realDepRLV->leafNodeServerList(&tmp2, 0, kTRUE); @@ -169,16 +167,14 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) // Check if the fit ranges of the dependents in the data and in the FUNC are consistent const RooArgSet *dataDepSet = indata.get(); - iter = _funcObsSet->fwdIterator(); - RooAbsArg *arg; - while ((arg = iter.next())) { + for (const auto arg : *_funcObsSet) { // Check that both dataset and function argument are of type RooRealVar - RooRealVar *realReal = dynamic_cast(arg); + auto realReal = dynamic_cast(arg); if (!realReal) { continue; } - RooRealVar *datReal = dynamic_cast(dataDepSet->find(realReal->GetName())); + auto datReal = dynamic_cast(dataDepSet->find(realReal->GetName())); if (!datReal) { continue; } diff --git a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx index 4a4f448799d63..e009e6c3e957f 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx @@ -25,9 +25,7 @@ namespace TestStatistics { RooSubsidiaryL::RooSubsidiaryL(const std::string& parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set) : RooAbsL(nullptr, nullptr, 0, 0, RooAbsL::Extended::No), parent_pdf_name_(parent_pdf_name) { - std::unique_ptr inputIter{pdfs.createIterator()}; - RooAbsArg *comp; - while ((comp = (RooAbsArg *)inputIter->Next())) { + for (const auto comp : pdfs) { if (!dynamic_cast(comp)) { oocoutE((TObject *)0, InputArguments) << "RooSubsidiaryL::ctor(" << GetName() << ") ERROR: component " << comp->GetName() << " is not of type RooAbsPdf" << std::endl; @@ -48,10 +46,8 @@ RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, std::size_t /*compone } double sum = 0, carry = 0; - RooAbsReal *comp; - RooFIter setIter1 = subsidiary_pdfs_.fwdIterator(); - while ((comp = (RooAbsReal *)setIter1.next())) { + for (const auto comp : subsidiary_pdfs_) { double term = -((RooAbsPdf *)comp)->getLogVal(¶meter_set_); std::tie(sum, carry) = kahan_add(sum, term, carry); } diff --git a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx index 1734a18df4e4c..d6609d29c5eac 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx @@ -23,21 +23,14 @@ namespace RooFit { namespace TestStatistics { -// Note: components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! +/// \note Components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! +/// \note The number of events in RooSumL is that of the full dataset. Components will have their own number of events that may be more relevant. RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, RooAbsL::Extended extended) : RooAbsL(pdf, data, - data->numEntries(), // TODO: this may be misleading, because components in reality will have their own N_events... + data->numEntries(), components.size(), extended), components_(std::move(components)) {} - -bool RooSumL::processEmptyDataSets() const -{ - // TODO: check whether this is correct! This is copied the implementation of the RooNLLVar override; the - // implementation in RooAbsTestStatistic always returns true - return extended_; -} - double RooSumL::evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) { // Evaluate specified range of owned GOF objects @@ -46,11 +39,6 @@ double RooSumL::evaluatePartition(Section events, std::size_t components_begin, // from RooAbsOptTestStatistic::combinedValue (which is virtual, so could be different for non-RooNLLVar!): eval_carry_ = 0; for (std::size_t ix = components_begin; ix < components_end; ++ix) { - // TODO: make sure we only calculate over events in the sub-range that the caller asked for - // std::size_t component_events_begin = std::max(events_begin, components_[ix]->get_N_events()) // THIS - // WON'T WORK, we need to somehow allow evaluate_partition to take in separate event ranges for all - // components... - double y = components_[ix]->evaluatePartition(events, 0, 0); eval_carry_ += components_[ix]->getCarry(); diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx index fe150da6dda77..844183955aeb5 100644 --- a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -45,12 +45,6 @@ RooUnbinnedL::RooUnbinnedL(const RooUnbinnedL &other) : RooAbsL(other), apply_weight_squared(other.apply_weight_squared), _first(other._first) {} - -bool RooUnbinnedL::processEmptyDataSets() const -{ - return extended_; -} - ////////////////////////////////////////////////////////////////////////////////// /// Returns true if value was changed, false otherwise. @@ -65,11 +59,11 @@ bool RooUnbinnedL::setApplyWeightSquared(bool flag) } ////////////////////////////////////////////////////////////////////////////////// -///// Calculate and return likelihood on subset of data from firstEvent to lastEvent -///// processed with a step size of 'stepSize'. If this an extended likelihood and -///// and the zero event is processed the extended term is added to the return -///// likelihood. -// +/// Calculate and return likelihood on subset of data from firstEvent to lastEvent +/// processed with a step size of 'stepSize'. If this an extended likelihood and +/// and the zero event is processed the extended term is added to the return +/// likelihood. +/// double RooUnbinnedL::evaluatePartition(Section events, std::size_t /*components_begin*/, std::size_t /*components_end*/) { @@ -79,8 +73,6 @@ double RooUnbinnedL::evaluatePartition(Section events, // expensive than that, we tolerate the additional cost... Double_t result(0), carry(0); - // data->store()->recalculateCache(_projDeps, firstEvent, lastEvent, stepSize, (_binnedPdf?kFALSE:kTRUE)); - // TODO: check when we might need _projDeps (it seems to be mostly empty); ties in with TODO below data_->store()->recalculateCache(nullptr, events.begin(N_events_), events.end(N_events_), 1, kTRUE); Double_t sumWeight(0), sumWeightCarry(0); @@ -100,7 +92,6 @@ double RooUnbinnedL::evaluatePartition(Section events, } Double_t term = -eventWeight * pdf_->getLogVal(normSet_.get()); - // TODO: normSet_ should be modified if _projDeps is non-null, connected to TODO above Double_t y = eventWeight - sumWeightCarry; Double_t t = sumWeight + y; diff --git a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx index 4b1077d83f1b9..413d74d8c6237 100644 --- a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx +++ b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx @@ -65,7 +65,6 @@ std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *dat RooArgSet allConstraints; if (!global_observables_tag.empty()) { - std::cout << "DEBUG: global_observables_tag > 0" << std::endl; if (global_observables.set.getSize() > 0) { global_observables.set.removeAll(); } @@ -125,7 +124,7 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended RooAbsCategoryLValue &simCat = (RooAbsCategoryLValue &)sim_pdf->indexCat(); - // FIXME: process_empty_data_sets was previously member function processEmptyDataSets(), which returned extended_ for RooSumL (previously named RooSimultaneousL). See RooAbsL and RooSumL/RooUnbinnedL implementations. I think this should work here, but be careful in other subclasses! + // note: this is valid for simultaneous likelihoods, not for other test statistic types (e.g. chi2) for which this should return true. bool process_empty_data_sets = RooAbsL::isExtendedHelper(pdf, extended); TString simCatName(simCat.GetName()); @@ -139,12 +138,10 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended // Count number of used states std::size_t N_components = 0; - RooCatType *type; - std::unique_ptr catIter{simCat.typeIterator()}; - while ((type = (RooCatType *)catIter->Next())) { + for (const auto& catState : simCat) { // Retrieve the PDF for this simCat state - RooAbsPdf *component_pdf = sim_pdf->getPdf(type->GetName()); - auto dset = (RooAbsData *)dsetList->FindObject(type->GetName()); + RooAbsPdf *component_pdf = sim_pdf->getPdf(catState.first.c_str()); + auto dset = (RooAbsData *)dsetList->FindObject(catState.first.c_str()); if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { ++N_components; @@ -157,16 +154,16 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended // _gofSplitMode.resize(N_components); // not used, Hybrid mode only, see below // Create array of regular fit contexts, containing subset of data and single fitCat PDF - catIter->Reset(); std::size_t n = 0; - while ((type = (RooCatType *)catIter->Next())) { + for (const auto& catState : simCat) { + const std::string& catName = catState.first; // Retrieve the PDF for this simCat state - RooAbsPdf *component_pdf = sim_pdf->getPdf(type->GetName()); - auto dset = (RooAbsData *)dsetList->FindObject(type->GetName()); + RooAbsPdf *component_pdf = sim_pdf->getPdf(catName.c_str()); + auto dset = (RooAbsData *)dsetList->FindObject(catName.c_str()); if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { ooccoutI((TObject *)nullptr, Fitting) - << "RooSumL: creating slave calculator #" << n << " for state " << type->GetName() << " (" + << "RooSumL: creating slave calculator #" << n << " for state " << catName << " (" << dset->numEntries() << " dataset entries)" << std::endl; // *** START HERE @@ -180,9 +177,7 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended binnedL = kTRUE; } else if (component_pdf->IsA()->InheritsFrom(RooProdPdf::Class())) { // Default case: top-level pdf is a product of RRSP and other pdfs - RooFIter iter = ((RooProdPdf *)component_pdf)->pdfList().fwdIterator(); - RooAbsArg *component; - while ((component = iter.next())) { + for (const auto component : ((RooProdPdf *)component_pdf)->pdfList()) { if (component->getAttribute("BinnedLikelihood") && component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { binnedPdf = (RooAbsPdf *)component; @@ -198,17 +193,6 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended // WVE END HACK // Below here directly pass binnedPdf instead of PROD(binnedPdf,constraints) as constraints are evaluated // elsewhere anyway and omitting them reduces model complexity and associated handling/cloning times - // if (_splitRange && rangeName) { - // _gofArray[n] = - // create(type->GetName(), type->GetName(), (binnedPdf ? *binnedPdf : *component_pdf), *dset, - // *projDeps, - // Form("%s_%s", rangeName, type->GetName()), addCoefRangeName, _nCPU * (_mpinterl ? -1 : - // 1), _mpinterl, _CPUAffinity, _verbose, _splitRange, binnedL); - // } else { - // _gofArray[n] = - // create(type->GetName(), type->GetName(), (binnedPdf ? *binnedPdf : *component_pdf), *dset, - // *projDeps, rangeName, - // addCoefRangeName, _nCPU, _mpinterl, _CPUAffinity, _verbose, _splitRange, binnedL); if (binnedL) { components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); } else { @@ -218,21 +202,6 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended components.back()->setSimCount(N_components); // *** END HERE - // TODO: left out Hybrid mode for now, evaluate later whether to reinclude (also then change - // evaluate_partition) - // // Fill per-component split mode with Bulk Partition for now so that Auto will map to bulk-splitting - // of all components if (_mpinterl==RooFit::Hybrid) { - // if (dset->numEntries()<10) { - // //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component - // "<< n << " to SimComponents"<< endl ; _gofSplitMode[n] = RooFit::SimComponents; - // _gofArray[n]->_mpinterl = RooFit::SimComponents; - // } else { - // //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component - // "<< n << " to BulkPartition"<< endl ; _gofSplitMode[n] = RooFit::BulkPartition; - // _gofArray[n]->_mpinterl = RooFit::BulkPartition; - // } - // } - // // Servers may have been redirected between instantiation and (deferred) initialization std::unique_ptr actualParams{binnedPdf ? binnedPdf->getParameters(dset) @@ -247,7 +216,7 @@ buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended ++n; } else { if ((!dset || (0. != dset->sumEntries() && !process_empty_data_sets)) && component_pdf) { - ooccoutD((TObject *)nullptr, Fitting) << "RooSumL: state " << type->GetName() + ooccoutD((TObject *)nullptr, Fitting) << "RooSumL: state " << catName << " has no data entries, no slave calculator created" << std::endl; } } diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp index 96a304cb6cd65..a2e13c04eb8c7 100644 --- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp @@ -31,6 +31,8 @@ #include #include +#include // count_if + #include "gtest/gtest.h" class RooRealL @@ -46,12 +48,12 @@ TEST_P(RooRealL, getVal) w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); auto x = w.var("x"); RooAbsPdf *pdf = w.pdf("g"); - RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); - auto nll = pdf->createNLL(*data); + std::unique_ptr data {pdf->generate(RooArgSet(*x), 10000)}; + std::unique_ptr nll {pdf->createNLL(*data)}; auto nominal_result = nll->getVal(); - RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data.get())); auto mp_result = nll_new.getVal(); @@ -63,20 +65,17 @@ void check_NLL_type(RooAbsReal *nll) if (dynamic_cast(nll) != nullptr) { std::cout << "the NLL object is a RooAddition*..." << std::endl; bool has_rooconstraintsum = false; - RooFIter nll_component_iter = nll->getComponents()->fwdIterator(); - RooAbsArg *nll_component; - while ((nll_component = nll_component_iter.next())) { + for (const auto nll_component : static_cast(nll)->list()) { if (nll_component->IsA() == RooConstraintSum::Class()) { has_rooconstraintsum = true; + std::cout << "...containing a RooConstraintSum component: " << nll_component->GetName() << std::endl; break; } else if (nll_component->IsA() != RooNLLVar::Class() && nll_component->IsA() != RooAddition::Class()) { std::cerr << "... containing an unexpected component class: " << nll_component->ClassName() << std::endl; throw std::runtime_error("RooAddition* type NLL object contains unexpected component class!"); } } - if (has_rooconstraintsum) { - std::cout << "...containing a RooConstraintSum component: " << nll_component->GetName() << std::endl; - } else { + if (!has_rooconstraintsum) { std::cout << "...containing only RooNLLVar components." << std::endl; } } else if (dynamic_cast(nll) != nullptr) { @@ -88,11 +87,9 @@ void count_NLL_components(RooAbsReal *nll) { if (dynamic_cast(nll) != nullptr) { std::cout << "the NLL object is a RooAddition*..." << std::endl; - unsigned nll_component_count = 0; - RooFIter nll_component_iter = nll->getComponents()->fwdIterator(); - RooAbsArg *nll_component; - while ((nll_component = nll_component_iter.next())) { - if (nll_component->IsA() != RooNLLVar::Class()) { + std::size_t nll_component_count = 0; + for (const auto& component : *nll->getComponents()) { + if (component->IsA() == RooNLLVar::Class()) { ++nll_component_count; } } @@ -116,7 +113,7 @@ TEST_P(RooRealL, getValRooAddition) x->setRange("another_range", 1, 7); RooAbsPdf *pdf = w.pdf("g"); - RooDataSet *data = pdf->generate(*x, 10000); + std::unique_ptr data {pdf->generate(RooArgSet(*x), 10000)}; RooAbsReal *nll = pdf->createNLL(*data, RooFit::Range("x_range"), RooFit::Range("another_range")); @@ -125,7 +122,6 @@ TEST_P(RooRealL, getValRooAddition) count_NLL_components(nll); delete nll; - delete data; } #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) @@ -148,16 +144,16 @@ TEST_P(RooRealL, getValRooConstraintSumAddition) RooPolynomial p0("p0", "p0", x); RooPolynomial p1("p1", "p1", x, RooArgList(a0, a1, a2), 0); - RooDataHist *dh_bkg = p0.generateBinned(x, 1000000000); - RooDataHist *dh_sig = p1.generateBinned(x, 100000000); + std::unique_ptr dh_bkg {p0.generateBinned(x, 1000000000)}; + std::unique_ptr dh_sig {p1.generateBinned(x, 100000000)}; dh_bkg->SetName("dh_bkg"); dh_sig->SetName("dh_sig"); a1.setVal(2); - RooDataHist *dh_sig_up = p1.generateBinned(x, 1100000000); + std::unique_ptr dh_sig_up {p1.generateBinned(x, 1100000000)}; dh_sig_up->SetName("dh_sig_up"); a1.setVal(.5); - RooDataHist *dh_sig_down = p1.generateBinned(x, 900000000); + std::unique_ptr dh_sig_down {p1.generateBinned(x, 900000000)}; dh_sig_down->SetName("dh_sig_down"); RooWorkspace w = RooWorkspace("w"); @@ -178,7 +174,7 @@ TEST_P(RooRealL, getValRooConstraintSumAddition) RooAbsPdf *pdf = w.pdf("model2"); - RooDataHist *data = pdf->generateBinned(x, 1100000); + std::unique_ptr data {pdf->generateBinned(x, 1100000)}; RooAbsReal *nll = pdf->createNLL(*data); check_NLL_type(nll); @@ -197,10 +193,10 @@ TEST_P(RooRealL, setVal) w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); auto x = w.var("x"); RooAbsPdf *pdf = w.pdf("g"); - RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); - auto nll = pdf->createNLL(*data); + std::unique_ptr data {pdf->generate(RooArgSet(*x), 10000)}; + std::unique_ptr nll {pdf->createNLL(*data)}; - RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data.get())); // calculate first results auto nominal_result1 = nll->getVal(); @@ -246,13 +242,13 @@ TEST_P(RealLVsMPFE, getVal) w.factory("Gaussian::g(x[-5,5],mu[0,-3,3],sigma[1])"); auto x = w.var("x"); RooAbsPdf *pdf = w.pdf("g"); - RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + std::unique_ptr data {pdf->generate(RooArgSet(*x), 10000)}; - auto nll_mpfe = pdf->createNLL(*data); + std::unique_ptr nll_mpfe {pdf->createNLL(*data)}; auto mpfe_result = nll_mpfe->getVal(); - RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data.get())); auto mp_result = nll_new.getVal(); @@ -268,8 +264,6 @@ TEST_P(RealLVsMPFE, minimize) RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR); - // TODO: see whether it performs adequately - // parameters std::size_t seed = std::get<0>(GetParam()); @@ -282,16 +276,16 @@ TEST_P(RealLVsMPFE, minimize) RooAbsPdf *pdf = w.pdf("g"); RooRealVar *mu = w.var("mu"); - RooDataSet *data = pdf->generate(RooArgSet(*x), 10000); + std::unique_ptr data {pdf->generate(RooArgSet(*x), 10000)}; mu->setVal(-2.9); - auto nll_mpfe = pdf->createNLL(*data); - RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data)); + std::unique_ptr nll_mpfe {pdf->createNLL(*data)}; + RooFit::TestStatistics::RooRealL nll_new("nll_new", "new style NLL", std::make_shared(pdf, data.get())); // save initial values for the start of all minimizations RooArgSet values = RooArgSet(*mu, *pdf); - RooArgSet *savedValues = dynamic_cast(values.snapshot()); + auto savedValues = dynamic_cast(values.snapshot()); if (savedValues == nullptr) { throw std::runtime_error("params->snapshot() cannot be casted to RooArgSet!"); } @@ -306,7 +300,7 @@ TEST_P(RealLVsMPFE, minimize) m0.migrad(); - RooFitResult *m0result = m0.lastMinuitFit(); + std::unique_ptr m0result {m0.lastMinuitFit()}; double minNll0 = m0result->minNll(); double edm0 = m0result->edm(); double mu0 = mu->getVal(); @@ -322,7 +316,7 @@ TEST_P(RealLVsMPFE, minimize) m1.migrad(); - RooFitResult *m1result = m1.lastMinuitFit(); + std::unique_ptr m1result {m1.lastMinuitFit()}; double minNll1 = m1result->minNll(); double edm1 = m1result->edm(); double mu1 = mu->getVal(); @@ -334,6 +328,7 @@ TEST_P(RealLVsMPFE, minimize) EXPECT_EQ(edm0, edm1); m1.cleanup(); // necessary in tests to clean up global _theFitter + delete savedValues; } INSTANTIATE_TEST_SUITE_P(NworkersModeSeed, RealLVsMPFE, diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index 3fc4e452cd1df..30f0458836b5d 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -18,23 +18,15 @@ #include #include - #include -#include #include - +#include #include "RooDataHist.h" // complete type in Binned test #include "RooCategory.h" // complete type in MultiBinnedConstraint test - -//#include #include #include -#include #include #include -//#include -//#include // need to complete type for debugging -#include #include #include @@ -279,11 +271,7 @@ TEST_F(LikelihoodSerialTest, BinnedConstrained) auto nll0 = nll->getVal(); - likelihood = -// std::make_shared(pdf, data, RooFit::GlobalObservables(*w.var("alpha_bkg_obs"))); -// std::make_shared(pdf, data); -// std::make_shared(pdf, data, RooFit::TestStatistics::GlobalObservables({*w.var("alpha_bkg_obs")})); - RooFit::TestStatistics::buildUnbinnedConstrainedLikelihood(pdf, data, RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs")))); + likelihood = RooFit::TestStatistics::buildUnbinnedConstrainedLikelihood(pdf, data, RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs")))); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); nll_ts.evaluate(); @@ -327,15 +315,15 @@ TEST_F(LikelihoodSerialTest, SimUnbinnedNonExtended) w.factory("ExtendPdf::egB(Gaussian::gB(x,mB[-2,-10,10],s),nB[100])") ; w.factory("SIMUL::model(index[A,B],A=gA,B=gB)") ; - RooDataSet* dA = w.pdf("gA")->generate(*w.var("x"),1) ; - RooDataSet* dB = w.pdf("gB")->generate(*w.var("x"),1) ; + std::unique_ptr dA {w.pdf("gA")->generate(*w.var("x"),1)}; + std::unique_ptr dB {w.pdf("gB")->generate(*w.var("x"),1)}; w.cat("index")->setLabel("A") ; dA->addColumn(*w.cat("index")) ; w.cat("index")->setLabel("B") ; dB->addColumn(*w.cat("index")) ; data = (RooDataSet*) dA->Clone() ; - static_cast(data)->append(*dB) ; + dynamic_cast(data)->append(*dB) ; pdf = w.pdf("model"); @@ -365,9 +353,9 @@ class LikelihoodSerialSimBinnedConstrainedTest : public LikelihoodSerialTest { // Generate template histograms - RooDataHist* h_sigA = w.pdf("gA")->generateBinned(*w.var("x"),1000) ; - RooDataHist* h_sigB = w.pdf("gB")->generateBinned(*w.var("x"),1000) ; - RooDataHist *h_bkg = w.pdf("u")->generateBinned(*w.var("x"), 1000); + std::unique_ptr h_sigA {w.pdf("gA")->generateBinned(*w.var("x"),1000)}; + std::unique_ptr h_sigB {w.pdf("gB")->generateBinned(*w.var("x"),1000)}; + std::unique_ptr h_bkg {w.pdf("u")->generateBinned(*w.var("x"), 1000)}; w.import(*h_sigA, RooFit::Rename("h_sigA")); w.import(*h_sigB, RooFit::Rename("h_sigB")); @@ -447,6 +435,4 @@ TEST_F(LikelihoodSerialSimBinnedConstrainedTest, ConstrainedAndOffset) EXPECT_EQ(nll0, nll2); EXPECT_DOUBLE_EQ(nll1, nll2); - -// printf("nll0: %a\tnll1: %a\tnll2: %a\tnll_ts.getResult(): %a\tnll_ts.offset: %a\tnll_ts.offset_carry: %a\tlikelihood.get_carry: %a\tcarry1: %a\n", nll0, nll1, nll2, nll_ts.getResult(), nll_ts.offset(), nll_ts.offsetCarry(), likelihood->get_carry(), carry1); } From 531761006aceba0de1039a9cbb61f1df0b2cb133 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Fri, 3 Sep 2021 13:25:51 +0200 Subject: [PATCH 060/577] add doxygen documentation to RooFit::TestStatistics Based on review by @hageboeck in PR #8700. --- .../LikelihoodGradientWrapper.h | 15 +- .../inc/TestStatistics/LikelihoodSerial.h | 2 +- .../inc/TestStatistics/LikelihoodWrapper.h | 27 +- .../inc/TestStatistics/MinuitFcnGrad.h | 12 +- .../roofitcore/inc/TestStatistics/RooAbsL.h | 22 +- .../inc/TestStatistics/RooSubsidiaryL.h | 7 - .../roofitcore/inc/TestStatistics/RooSumL.h | 1 - .../TestStatistics/ConstantTermsOptimizer.cxx | 13 + .../LikelihoodGradientWrapper.cxx | 16 ++ .../src/TestStatistics/LikelihoodSerial.cxx | 38 +-- .../src/TestStatistics/LikelihoodWrapper.cxx | 26 +- .../src/TestStatistics/MinuitFcnGrad.cxx | 16 +- .../roofitcore/src/TestStatistics/RooAbsL.cxx | 235 ++---------------- .../src/TestStatistics/RooBinnedL.cxx | 21 +- .../src/TestStatistics/RooRealL.cxx | 10 + .../src/TestStatistics/RooSubsidiaryL.cxx | 21 +- .../roofitcore/src/TestStatistics/RooSumL.cxx | 64 ++++- .../src/TestStatistics/RooUnbinnedL.cxx | 13 +- .../TestStatistics/likelihood_builders.cxx | 58 ++++- 19 files changed, 325 insertions(+), 292 deletions(-) diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h index 5135ecf2eadaf..44bb4397945ad 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h @@ -42,16 +42,23 @@ class LikelihoodGradientWrapper { virtual void fillGradient(double *grad) = 0; - // synchronize minimizer settings with calculators in child classes + /// Synchronize minimizer settings with calculators in child classes. virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions &options); virtual void synchronizeParameterSettings(const std::vector ¶meter_settings); virtual void synchronizeParameterSettings(ROOT::Math::IMultiGenFunction* function, const std::vector ¶meter_settings) = 0; - // Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), - // but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values: + /// Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), + /// but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values. virtual void updateMinuitInternalParameterValues(const std::vector& minuit_internal_x); virtual void updateMinuitExternalParameterValues(const std::vector& minuit_external_x); - // completely depends on the implementation, so pure virtual + /// \brief Implement usesMinuitInternalValues to return true when you want Minuit to send this class Minuit-internal values, or return false when you want "regular" Minuit-external values. + /// + /// Minuit internally uses a transformed parameter space to graciously handle externally mandated parameter range + /// boundaries. Transformation from Minuit-internal to external (i.e. "regular") parameters is done using + /// trigonometric functions that in some cases can cause a few bits of precision loss with respect to the original + /// parameter values. To circumvent this, Minuit also allows external gradient providers (like LikelihoodGradientWrapper) + /// to take the Minuit-internal parameter values directly, without transformation. This way, the gradient provider + /// (e.g. the implementation of this class) can handle transformation manually, possibly with higher precision. virtual bool usesMinuitInternalValues() = 0; protected: diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h index 7605e8c49baec..05528686b7437 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h @@ -29,7 +29,7 @@ namespace TestStatistics { class LikelihoodSerial : public LikelihoodWrapper { public: - LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, RooMinimizer *minimizer*/); + LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean); inline LikelihoodSerial *clone() const override { return new LikelihoodSerial(*this); } void initVars(); diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h index 609520e9d08e6..4dbb3921703e7 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h @@ -43,10 +43,10 @@ enum class LikelihoodType { sum }; -// Previously, offsetting was only implemented for RooNLLVar components of a likelihood, -// not for RooConstraintSum terms. To emulate this behavior, use OffsettingMode::legacy. To -// also offset the RooSubsidiaryL component (equivalent of RooConstraintSum) of RooSumL -// likelihoods, use OffsettingMode::full. +/// Previously, offsetting was only implemented for RooNLLVar components of a likelihood, +/// not for RooConstraintSum terms. To emulate this behavior, use OffsettingMode::legacy. To +/// also offset the RooSubsidiaryL component (equivalent of RooConstraintSum) of RooSumL +/// likelihoods, use OffsettingMode::full. enum class OffsettingMode { legacy, full @@ -54,22 +54,31 @@ enum class OffsettingMode { class LikelihoodWrapper { public: - LikelihoodWrapper(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, RooMinimizer* minimizer*/); + LikelihoodWrapper(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean); virtual ~LikelihoodWrapper() = default; virtual LikelihoodWrapper* clone() const = 0; + /// \brief Triggers (possibly asynchronous) evaluation of the likelihood + /// + /// In parallel strategies, it may be advantageous to allow a calling process to continue on with other tasks while + /// the calculation is offloaded to another process or device, like a GPU. For this reason, evaluate() does not + /// return the result, this is done in getResult(). virtual void evaluate() = 0; + /// \brief Return the latest result of a likelihood evaluation. + /// + /// Returns the result that was stored after calling evaluate(). It is up to the implementer to make sure the stored + /// value represents the most recent evaluation call, e.g. by using a mutex. virtual double getResult() const = 0; - // synchronize minimizer settings with calculators in child classes + /// Synchronize minimizer settings with calculators in child classes virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & options); virtual void synchronizeParameterSettings(const std::vector ¶meter_settings); - // Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), - // but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values: + /// Minuit passes in parameter values that may not conform to RooFit internal standards (like applying range clipping), + /// but that the specific calculator does need. This function can be implemented to receive these Minuit-internal values: virtual void updateMinuitInternalParameterValues(const std::vector& minuit_internal_x); virtual void updateMinuitExternalParameterValues(const std::vector& minuit_external_x); - // necessary from MinuitFcnGrad to reach likelihood properties: + // The following functions are necessary from MinuitFcnGrad to reach likelihood properties: void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt); double defaultErrorLevel() const; virtual std::string GetName() const; diff --git a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h index dccfc31fa08a8..5dca9126adc2a 100644 --- a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h +++ b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h @@ -39,7 +39,8 @@ namespace TestStatistics { class LikelihoodSerial; class LikelihoodGradientSerial; -// -- for communication with wrappers: -- +/// For communication with wrappers, an instance of this struct must be shared between them and MinuitFcnGrad. It keeps +/// track of what has been evaluated for the current parameter set provided by Minuit. struct WrapperCalculationCleanFlags { // indicate whether that part has been calculated since the last parameter update bool likelihood = false; @@ -63,7 +64,7 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi inline ROOT::Math::IMultiGradFunction *Clone() const override { return new MinuitFcnGrad(*this); } - // override to include gradient strategy synchronization: + /// Overridden from RooAbsMinimizerFcn to include gradient strategy synchronization. Bool_t Synchronize(std::vector ¶meter_settings, Bool_t optConst, Bool_t verbose = kFALSE) override; @@ -76,13 +77,14 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi } private: - // IMultiGradFunction overrides necessary for Minuit: DoEval, Gradient + /// IMultiGradFunction override necessary for Minuit double DoEval(const double *x) const override; public: + /// IMultiGradFunction override necessary for Minuit void Gradient(const double *x, double *grad) const override; - // part of IMultiGradFunction interface, used widely both in Minuit and in RooFit: + /// Part of IMultiGradFunction interface, used widely both in Minuit and in RooFit. inline unsigned int NDim() const override { return _nDim; } inline std::string getFunctionName() const override { return likelihood->GetName(); } @@ -101,7 +103,7 @@ class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimi LikelihoodGradientWrapperT * /* used only for template deduction */ = static_cast(nullptr)); - // The following three overrides will not actually be used in this class, so they will throw: + /// This override should not be used in this class, so it throws. double DoDerivative(const double *x, unsigned int icoord) const override; bool syncParameterValuesFromMinuitCalls(const double *x, bool minuit_internal) const; diff --git a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h index 395877d762ade..9828277cf4014 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h @@ -36,13 +36,12 @@ class RooAbsL { enum class Extended { Auto, Yes, No }; static bool isExtendedHelper(RooAbsPdf *pdf, Extended extended); - /// wrapper class used to distinguish ctors + /// Convenience wrapper class used to distinguish between pdf/data owning and non-owning constructors. struct ClonePdfData { RooAbsPdf *pdf; RooAbsData *data; }; - // RooAbsL() = default; private: RooAbsL(std::shared_ptr pdf, std::shared_ptr data, std::size_t N_events, std::size_t N_components, Extended extended); @@ -82,11 +81,28 @@ class RooAbsL { double end_fraction; }; + /* + * \brief Evaluate (part of) the likelihood over a given range of events and components + * + * A fractional event range is used because components may have different numbers of events. For a + * multi-component RooSumL, for instance, this means the caller need not indicate for each component which event + * ranges they want to evaluate, but can just pass one overall fractional range. + * + * \param[in] events The fractional event range. + * \param[in] components_begin The first component to be calculated. + * \param[in] components_end The *exclusive* upper limit to the range of components to be calculated, i.e. the component *before this one* is the last to be included. + * \return The value of part of the negative log likelihood. + */ virtual double evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) = 0; inline double getCarry() const { return eval_carry_; } // necessary from MinuitFcnGrad to reach likelihood properties: virtual RooArgSet *getParameters(); + + /// \brief Interface function signaling a request to perform constant term optimization. + /// + /// The default implementation takes no action other than to forward the calls to all servers. May be overridden in + /// likelihood classes without a cached dataset, like RooSubsidiaryL. virtual void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt); virtual std::string GetName() const; @@ -96,6 +112,7 @@ class RooAbsL { inline virtual double defaultErrorLevel() const { return 0.5; } // necessary in LikelihoodJob + /// Number of dataset entries. Typically equal to the number of dataset events, except in RooSubsidiaryL, which has no events. virtual std::size_t numDataEntries() const; inline std::size_t getNEvents() const { return N_events_; } inline std::size_t getNComponents() const { return N_components_; } @@ -103,7 +120,6 @@ class RooAbsL { inline void setSimCount(std::size_t value) { sim_count_ = value; } protected: - virtual void optimizePdf(); // Note: pdf_ and data_ can be constructed in two ways, one of which implies ownership and the other does not. // Inspired by this: https://stackoverflow.com/a/61227865/1199693. // The owning variant is used for classes that need a pdf/data clone (RooBinnedL and RooUnbinnedL), whereas the diff --git a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h index 73cd7c6ae8db4..99a2ebcd307fe 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h @@ -24,13 +24,6 @@ namespace RooFit { namespace TestStatistics { -/// Gathers all subsidiary PDF terms from the component PDFs of RooSumL likelihoods. -/// These are summed separately for increased numerical stability, since these terms are often -/// small and cause numerical variances in their original PDFs, whereas by summing as one -/// separate subsidiary collective term, it is numerically very stable. -/// Note that when a subsidiary PDF is part of multiple component PDFs, it will only be summed -/// once in this class! This doesn't change the derivative of the log likelihood (which is what -/// matters in fitting the likelihood), but does change the value of the (log-)likelihood itself. class RooSubsidiaryL : public RooAbsL { public: RooSubsidiaryL(const std::string &parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set); diff --git a/roofit/roofitcore/inc/TestStatistics/RooSumL.h b/roofit/roofitcore/inc/TestStatistics/RooSumL.h index 285f5f2205883..3509f215fd03a 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSumL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSumL.h @@ -27,7 +27,6 @@ namespace TestStatistics { class RooSumL : public RooAbsL { public: - // main constructor RooSumL(RooAbsPdf* pdf, RooAbsData* data, std::vector> components, RooAbsL::Extended extended = RooAbsL::Extended::Auto); // Note: when above ctor is called without std::moving components, you get a really obscure error. Pass as std::move(components)! diff --git a/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx index 5a4cf8e5ab767..ad35a9c900a55 100644 --- a/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx +++ b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx @@ -25,6 +25,19 @@ namespace RooFit { namespace TestStatistics { +/** \class ConstantTermsOptimizer + * + * \brief Analyzes a function given a dataset/observables for constant terms and caches those in the dataset + * + * This optimizer should be used on a consistent combination of function (usually a pdf) and a dataset with observables. + * It then analyzes the function to find parts that can be precalculated because they are constant given the set of + * observables. These are cached inside the dataset and used in subsequent evaluations of the function on that dataset. + * The typical use case for this is inside likelihood minimization where many calls of the same pdf/dataset combination + * are made. \p norm_set must provide the normalization set of the function, which would typically be the set of + * observables in the dataset; this is used to make sure all object caches are created before analysis by evaluating the + * function on this set at the beginning of enableConstantTermsOptimization. + */ + RooArgSet ConstantTermsOptimizer::requiredExtraObservables() { // TODO: the RooAbsOptTestStatistics::requiredExtraObservables() call this code was copied diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx index 565de46b9b9e8..ae0aee0f42f69 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx @@ -20,6 +20,22 @@ namespace RooFit { namespace TestStatistics { +/** \class LikelihoodGradientWrapper + * \brief Virtual base class for implementation of likelihood gradient calculation strategies + * + * This class provides the interface necessary for RooMinimizer (through MinuitFcnGrad) to get the likelihood gradient + * values it needs for fitting the pdf to the data. The strategy by which these values are obtained is up to the + * implementer of this class. Its intended purpose was mainly to allow for parallel calculation strategies. + * + * \note The class is not intended for use by end-users. We recommend to either use RooMinimizer with a RooAbsL derived + * likelihood object, or to use a higher level entry point like RooAbsPdf::fitTo() or RooAbsPdf::createNLL(). + */ + +/* + * \param[in] likelihood Shared pointer to the likelihood that must be evaluated + * \param[in] calculation_is_clean Shared pointer to the object that keeps track of what has been evaluated for the current parameter set provided by Minuit. This information can be used by different calculators, so must be shared between them. + * \param[in] minimizer Raw pointer to the minimizer that owns the MinuitFcnGrad object that owns this wrapper object. + */ LikelihoodGradientWrapper::LikelihoodGradientWrapper(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean, std::size_t /*N_dim*/, RooMinimizer *minimizer) diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx index 9e816728ec381..6939b1c62946e 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx @@ -27,9 +27,18 @@ namespace RooFit { namespace TestStatistics { -LikelihoodSerial::LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean/*, - RooMinimizer *minimizer*/) - : LikelihoodWrapper(std::move(likelihood), std::move(calculation_is_clean)/*, minimizer*/) +/** \class LikelihoodSerial + * \brief Serial likelihood calculation strategy implementation + * + * This class serves as a baseline reference implementation of the LikelihoodWrapper. It reimplements the previous + * RooNLLVar "BulkPartition" single CPU strategy in the new RooFit::TestStatistics framework. + * + * \note The class is not intended for use by end-users. We recommend to either use RooMinimizer with a RooAbsL derived + * likelihood object, or to use a higher level entry point like RooAbsPdf::fitTo() or RooAbsPdf::createNLL(). + */ + +LikelihoodSerial::LikelihoodSerial(std::shared_ptr likelihood, std::shared_ptr calculation_is_clean) + : LikelihoodWrapper(std::move(likelihood), std::move(calculation_is_clean)) { initVars(); // determine likelihood type @@ -49,11 +58,13 @@ LikelihoodSerial::LikelihoodSerial(std::shared_ptr likelihood, std::sha // should also somehow be updated in this class. } -// This is a separate function (instead of just in ctor) for historical reasons. -// Its predecessor RooRealMPFE::initVars() was used from multiple ctors, but also -// from RooRealMPFE::constOptimizeTestStatistic at the end, which makes sense, -// because it might change the set of variables. We may at some point want to do -// this here as well. +/// \brief Helper function for the constuctor. +/// +/// This is a separate function (instead of just in ctor) for historical reasons. +/// Its predecessor RooRealMPFE::initVars() was used from multiple ctors, but also +/// from RooRealMPFE::constOptimizeTestStatistic at the end, which makes sense, +/// because it might change the set of variables. We may at some point want to do +/// this here as well. void LikelihoodSerial::initVars() { // Empty current lists @@ -61,9 +72,7 @@ void LikelihoodSerial::initVars() _saveVars.removeAll(); // Retrieve non-constant parameters - auto vars = std::make_unique( - *likelihood_->getParameters()); // TODO: make sure this is the right list of parameters, compare to original - // implementation in RooRealMPFE.cxx + auto vars = std::make_unique(*likelihood_->getParameters()); RooArgList varList(*vars); @@ -83,13 +92,6 @@ void LikelihoodSerial::evaluate() { case LikelihoodType::sum: { result = likelihood_->evaluatePartition({0, 1}, 0, likelihood_->getNComponents()); carry = likelihood_->getCarry(); - // TODO: this normalization part below came from RooOptTestStatistic::evaluate, probably this just means you need to do the normalization on master only when doing parallel calculation. Make sure of this! In any case, it is currently not relevant, because the norm term is 1 by default and is only overridden for the RooDataWeightAverage class. -// // Only apply global normalization if SimMaster doesn't have MP master -// if (numSets() == 1) { -// const Double_t norm = globalNormalization(); -// result /= norm; -// carry /= norm; -// } break; } default: { diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx index 5cb68ae36e84c..cc956e6753ffb 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx @@ -26,11 +26,26 @@ namespace RooFit { namespace TestStatistics { +/** \class LikelihoodWrapper + * \brief Virtual base class for implementation of likelihood calculation strategies + * + * This class provides the interface necessary for RooMinimizer (through MinuitFcnGrad) to get the likelihood values it + * needs for fitting the pdf to the data. The strategy by which these values are obtained is up to the implementer of + * this class. Its intended purpose was mainly to allow for parallel calculation strategies, but serial strategies are + * possible too, as illustrated in LikelihoodSerial. + * + * \note The class is not intended for use by end-users. We recommend to either use RooMinimizer with a RooAbsL derived + * likelihood object, or to use a higher level entry point like RooAbsPdf::fitTo() or RooAbsPdf::createNLL(). + */ + +/* + * \param[in] likelihood Shared pointer to the likelihood that must be evaluated + * \param[in] calculation_is_clean Shared pointer to the object that keeps track of what has been evaluated for the current parameter set provided by Minuit. This information can be used by different calculators, so must be shared between them. + */ LikelihoodWrapper::LikelihoodWrapper(std::shared_ptr likelihood, - std::shared_ptr calculation_is_clean/*, - RooMinimizer *minimizer*/) - : likelihood_(std::move(likelihood)),/* minimizer_(minimizer),*/ - calculation_is_clean_(std::move(calculation_is_clean)) /*, minimizer_fcn_(minimizer_fcn)*/ + std::shared_ptr calculation_is_clean) + : likelihood_(std::move(likelihood)), + calculation_is_clean_(std::move(calculation_is_clean)) { // Note to future maintainers: take care when storing the minimizer_fcn pointer. The // RooAbsMinimizerFcn subclasses may get cloned inside MINUIT, which means the pointer @@ -120,7 +135,8 @@ void LikelihoodWrapper::applyOffsetting(double ¤t_value, double &carry) // carry = (t - current_value) - y; // current_value = t; // } - // Jonas method: + // TODO: make sure this change in methods (after replacing below by KahanSum object) doesn't affect results + // KahanSum method: { double new_value = current_value - offset_; double new_carry = carry - offset_carry_; diff --git a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx index 8c7345fd14e3e..14bad33109648 100644 --- a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx +++ b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx @@ -25,8 +25,20 @@ namespace RooFit { namespace TestStatistics { -// IMultiGradFunction overrides necessary for Minuit: DoEval, Gradient -// The likelihood and gradient wrappers do the actual calculations. +/** \class MinuitFcnGrad + * + * \brief Minuit-RooMinimizer interface which synchronizes parameter data and coordinates evaluation of likelihood (gradient) values + * + * This class provides an interface between RooFit and Minuit. It synchronizes parameter values from Minuit, calls + * calculator classes to evaluate likelihood and likelihood gradient values and returns them to Minuit. The Wrapper + * objects do the actual calculations. These are constructed inside the MinuitFcnGrad constructor using the RooAbsL + * likelihood passed in to the constructor, usually directly from RooMinimizer, with which this class is intimately + * coupled, being a RooAbsMinimizerFcn implementation. MinuitFcnGrad inherits from ROOT::Math::IMultiGradFunction as + * well, which allows it to be used as the FCN and GRAD parameters Minuit expects. + * + * \note The class is not intended for use by end-users. We recommend to either use RooMinimizer with a RooAbsL derived + * likelihood object, or to use a higher level entry point like RooAbsPdf::fitTo() or RooAbsPdf::createNLL(). + */ double MinuitFcnGrad::DoEval(const double *x) const { diff --git a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx index ecbec2f249291..3707aaf10e8a5 100644 --- a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx @@ -54,13 +54,11 @@ bool RooAbsL::isExtendedHelper(RooAbsPdf* pdf, Extended extended) } } -// private ctor +/// After handling cloning (or not) of the pdf and dataset, the public constructors call this private constructor to handle common tasks. RooAbsL::RooAbsL(std::shared_ptr pdf, std::shared_ptr data, std::size_t N_events, std::size_t N_components, Extended extended) : pdf_(std::move(pdf)), data_(std::move(data)), N_events_(N_events), N_components_(N_components) { - // std::unique_ptr obs {pdf->getObservables(*data)}; - // data->attachBuffers(*obs); extended_ = isExtendedHelper(pdf_.get(), extended); if (extended == Extended::Auto) { if (extended_) { @@ -71,7 +69,14 @@ RooAbsL::RooAbsL(std::shared_ptr pdf, std::shared_ptr dat } } -// this constructor clones the pdf/data and owns those cloned copies +/// Constructor that clones the pdf/data and owns those cloned copies. +/// +/// This constructor is used for classes that need a pdf/data clone (RooBinnedL and RooUnbinnedL). +/// +/// \param in Struct containing raw pointers to the pdf and dataset that are to be cloned. +/// \param N_events The number of events in this likelihood's dataset. +/// \param N_components The number of components in the likelihood. +/// \param extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. RooAbsL::RooAbsL(RooAbsL::ClonePdfData in, std::size_t N_events, std::size_t N_components, Extended extended) : RooAbsL(std::shared_ptr(static_cast(in.pdf->cloneTree())), std::shared_ptr(static_cast(in.data->Clone())), N_events, N_components, extended) @@ -79,7 +84,15 @@ RooAbsL::RooAbsL(RooAbsL::ClonePdfData in, std::size_t N_events, std::size_t N_c initClones(*in.pdf, *in.data); } -// this constructor does not clone pdf/data and uses the shared_ptr aliasing constructor to make it non-owning +/// Constructor that does not clone pdf/data and uses the shared_ptr aliasing constructor to make it non-owning. +/// +/// This constructor is used for classes where a reference to the external pdf/dataset is good enough (RooSumL and RooSubsidiaryL). +/// +/// \param inpdf Raw pointer to the pdf. +/// \param indata Raw pointer to the dataset. +/// \param N_events The number of events in this likelihood's dataset. +/// \param N_components The number of components in the likelihood. +/// \param extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. RooAbsL::RooAbsL(RooAbsPdf *inpdf, RooAbsData *indata, std::size_t N_events, std::size_t N_components, Extended extended) : RooAbsL({std::shared_ptr(nullptr), inpdf}, {std::shared_ptr(nullptr), indata}, N_events, N_components, extended) @@ -91,7 +104,6 @@ RooAbsL::RooAbsL(const RooAbsL &other) { // it can never be one, since we just copied the shared_ptr; if it is, something really weird is going on; also they must be equal (usually either zero or two) assert((pdf_.use_count() != 1) && (data_.use_count() != 1) && (pdf_.use_count() == data_.use_count())); - // TODO: use aliasing ctor in initialization list, and then check in body here whether pdf and data were clones; if so, they need to be cloned again (and init_clones called on them) if ((pdf_.use_count() > 1) && (data_.use_count() > 1)) { pdf_.reset(static_cast(other.pdf_->cloneTree())); data_.reset(static_cast(other.data_->Clone())); @@ -101,16 +113,10 @@ RooAbsL::RooAbsL(const RooAbsL &other) void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) { - // RooArgSet obs(*indata.get()) ; - // obs.remove(projDeps,kTRUE,kTRUE) ; - // ****************************************************************** // *** PART 1 *** Clone incoming pdf, attach to each other * // ****************************************************************** - // moved to ctor - // pdf = static_cast(inpdf->cloneTree()); - // Attach FUNC to data set auto _funcObsSet = pdf_->getObservables(indata); @@ -122,32 +128,6 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) std::unique_ptr origParams{inpdf.getParameters(indata)}; pdf_->recursiveRedirectServers(*origParams); - // Mark all projected dependents as such - // if (projDeps.getSize()>0) { - // RooArgSet *projDataDeps = (RooArgSet*) _funcObsSet->selectCommon(projDeps) ; - // projDataDeps->setAttribAll("projectedDependent") ; - // delete projDataDeps ; - // } - - // TODO: do we need this here? Or in RooSumL? - // // If PDF is a RooProdPdf (with possible constraint terms) - // // analyze pdf for actual parameters (i.e those in unconnected constraint terms should be - // // ignored as here so that the test statistic will not be recalculated if those - // // are changed - // RooProdPdf* pdfWithCons = dynamic_cast(pdf) ; - // if (pdfWithCons) { - // - // RooArgSet* connPars = pdfWithCons->getConnectedParameters(*indata.get()) ; - // // Add connected parameters as servers - // _paramSet.removeAll() ; - // _paramSet.add(*connPars) ; - // delete connPars ; - // - // } else { - // // Add parameters as servers - // _paramSet.add(*origParams) ; - // } - // Store normalization set normSet_.reset((RooArgSet *)indata.get()->snapshot(kFALSE)); @@ -198,78 +178,11 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) } } - // // Copy data and strip entries lost by adjusted fit range, data ranges will be copied from realDepSet ranges - // if (rangeName && strlen(rangeName)) { - // data = ((RooAbsData &)indata).reduce(RooFit::SelectVars(*_funcObsSet), RooFit::CutRange(rangeName)); - // // cout << "RooAbsOptTestStatistic: reducing dataset to fit in range named " << rangeName << " resulting - // // dataset has " << data->sumEntries() << " events" << endl ; - // } else { - - // moved to ctor - // data = static_cast(indata.Clone()); - - // } - // _ownData = kTRUE; - // ****************************************************************** // *** PART 3 *** Make adjustments for fit ranges, if specified * // ****************************************************************** - // RooArgSet *origObsSet = inpdf.getObservables(indata); - // RooArgSet *dataObsSet = (RooArgSet *)data->get(); - // if (rangeName && strlen(rangeName)) { - // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() - // << ") constructing test statistic for sub-range named " << rangeName << endl; - // // cout << "now adjusting observable ranges to requested fit range" << endl ; - // - // // Adjust FUNC normalization ranges to requested fitRange, store original ranges for RooAddPdf coefficient - // // interpretation - // iter = _funcObsSet->fwdIterator(); - // while ((arg = iter.next())) { - // - // RooRealVar *realObs = dynamic_cast(arg); - // if (realObs) { - // - // // If no explicit range is given for RooAddPdf coefficients, create explicit named range equivalent to - // // original observables range - // if (!(addCoefRangeName && strlen(addCoefRangeName))) { - // realObs->setRange(Form("NormalizationRangeFor%s", rangeName), realObs->getMin(), realObs->getMax()); - // // cout << "RAOTS::ctor() setting range " << Form("NormalizationRangeFor%s",rangeName) << " on - // // observable " - // // << realObs->GetName() << " to [" << realObs->getMin() << "," << realObs->getMax() << "]" - // << - // // endl ; - // } - // - // // Adjust range of function observable to those of given named range - // realObs->setRange(realObs->getMin(rangeName), realObs->getMax(rangeName)); - // // cout << "RAOTS::ctor() setting normalization range on observable " - // // << realObs->GetName() << " to [" << realObs->getMin() << "," << realObs->getMax() << "]" << - // endl - // // ; - // - // // Adjust range of data observable to those of given named range - // RooRealVar *dataObs = (RooRealVar *)dataObsSet->find(realObs->GetName()); - // dataObs->setRange(realObs->getMin(rangeName), realObs->getMax(rangeName)); - // - // // Keep track of list of fit ranges in string attribute fit range of original p.d.f. - // if (!_splitRange) { - // const char *origAttrib = inpdf.getStringAttribute("fitrange"); - // if (origAttrib) { - // inpdf.setStringAttribute("fitrange", Form("%s,fit_%s", origAttrib, GetName())); - // } else { - // inpdf.setStringAttribute("fitrange", Form("fit_%s", GetName())); - // } - // RooRealVar *origObs = (RooRealVar *)origObsSet->find(arg->GetName()); - // if (origObs) { - // origObs->setRange(Form("fit_%s", GetName()), realObs->getMin(rangeName), - // realObs->getMax(rangeName)); - // } - // } - // } - // } - // } - // delete origObsSet; + // TODO // If dataset is binned, activate caching of bins that are invalid because they're outside the // updated range definition (WVE need to add virtual interface here) @@ -278,88 +191,20 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) tmph->cacheValidEntries(); } - // // Fix RooAddPdf coefficients to original normalization range - // if (rangeName && strlen(rangeName)) { - // - // // WVE Remove projected dependents from normalization - // pdf->fixAddCoefNormalization(*data->get(), kFALSE); - // - // if (addCoefRangeName && strlen(addCoefRangeName)) { - // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() - // << ") fixing interpretation of coefficients of any RooAddPdf component to range " - // << addCoefRangeName << endl; - // pdf->fixAddCoefRange(addCoefRangeName, kFALSE); - // } else { - // cxcoutI(Fitting) << "RooAbsOptTestStatistic::ctor(" << GetName() - // << ") fixing interpretation of coefficients of any RooAddPdf to full domain of - // observables " - // << endl; - // pdf->fixAddCoefRange(Form("NormalizationRangeFor%s", rangeName), kFALSE); - // } - // } - // This is deferred from part 2 - but must happen after part 3 - otherwise invalid bins cannot be properly marked in // cacheValidEntries data_->attachBuffers(*_funcObsSet); - // TODO: we pass event count to the ctor in the subclasses currently, because it's split into components and events - // now - // setEventCount(data->numEntries()); // ********************************************************************* // *** PART 4 *** Adjust normalization range for projected observables * // ********************************************************************* - // // Remove projected dependents from normalization set - // if (projDeps.getSize() > 0) { - // - // _projDeps = (RooArgSet *)projDeps.snapshot(kFALSE); - // - // // RooArgSet* tobedel = (RooArgSet*) _normSet->selectCommon(*_projDeps) ; - // _normSet->remove(*_projDeps, kTRUE, kTRUE); - // - // // // Delete owned projected dependent copy in _normSet - // // TIterator* ii = tobedel->createIterator() ; - // // RooAbsArg* aa ; - // // while((aa=(RooAbsArg*)ii->Next())) { - // // delete aa ; - // // } - // // delete ii ; - // // delete tobedel ; - // - // // Mark all projected dependents as such - // RooArgSet *projDataDeps = (RooArgSet *)_funcObsSet->selectCommon(*_projDeps); - // projDataDeps->setAttribAll("projectedDependent"); - // delete projDataDeps; - // } - - // coutI(Optimization) - // << "RooAbsOptTestStatistic::ctor(" << GetName() - // << ") optimizing internal clone of p.d.f for likelihood evaluation." - // << "Lazy evaluation and associated change tracking will disabled for all nodes that depend on observables" - // << endl; + // TODO // ********************************************************************* // *** PART 4 *** Finalization and activation of optimization * // ********************************************************************* - //_origFunc = _func ; - //_origData = _data ; - - // // Redirect pointers of base class to clone - // _func = pdf ; - // _data = data ; - - // TODO: why this call? - // pdf->getVal(_normSet); - - // cout << "ROATS::ctor(" << GetName() << ") funcClone structure dump BEFORE opt" << endl ; - // pdf->Print("t") ; - - // optimizeCaching() ; - - // cout << "ROATS::ctor(" << GetName() << ") funcClone structure dump AFTER opt" << endl ; - // pdf->Print("t") ; - // optimization steps (copied from ROATS::optimizeCaching) pdf_->getVal(normSet_.get()); @@ -369,46 +214,13 @@ void RooAbsL::initClones(RooAbsPdf &inpdf, RooAbsData &indata) data_->setDirtyProp(kFALSE); // Disable reading of observables that are not used - data_->optimizeReadingWithCaching(*pdf_, RooArgSet(), RooArgSet()) ; - + data_->optimizeReadingWithCaching(*pdf_, RooArgSet(), RooArgSet()); } RooArgSet *RooAbsL::getParameters() { auto ding = pdf_->getParameters(*data_); return ding; - -// // *** START HERE -// // WVE HACK determine if we have a RooRealSumPdf and then treat it like a binned likelihood -// RooAbsPdf *binnedPdf = 0; -// if (pdf_->getAttribute("BinnedLikelihood") && pdf_->IsA()->InheritsFrom(RooRealSumPdf::Class())) { -// // Simplest case: top-level of component is a RRSP -// binnedPdf = pdf_.get(); -// } else if (pdf_->IsA()->InheritsFrom(RooProdPdf::Class())) { -// // Default case: top-level pdf is a product of RRSP and other pdfs -// RooFIter iter = ((RooProdPdf *)pdf_.get())->pdfList().fwdIterator(); -// RooAbsArg *component; -// while ((component = iter.next())) { -// if (component->getAttribute("BinnedLikelihood") && -// component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { -// binnedPdf = (RooAbsPdf *)component; -// } -// if (component->getAttribute("MAIN_MEASUREMENT")) { -// // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to -// // be passed to the slave calculator -// binnedPdf = (RooAbsPdf *)component; -// } -// } -// } -// // WVE END HACK -// -// std::unique_ptr actualParams {binnedPdf ? binnedPdf->getParameters(data_.get()) : pdf_->getParameters(data_.get())}; -// RooArgSet* selTargetParams = (RooArgSet *)ding->selectCommon(*actualParams); -// -// std::cout << "RooAbsL::getParameters:" << std::endl; -// selTargetParams->Print("v"); -// -// return selTargetParams; } void RooAbsL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) @@ -433,11 +245,6 @@ std::string RooAbsL::GetTitle() const return output; } -void RooAbsL::optimizePdf() -{ - // TODO: implement, using ConstantTermsOptimizer -} - std::size_t RooAbsL::numDataEntries() const { return static_cast(data_->numEntries()); diff --git a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx index 652caa4744113..2751f8596f0de 100644 --- a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx @@ -19,12 +19,13 @@ \class RooBinnedL \ingroup Roofitcore -Class RooBinnedL implements a a -log(likelihood) calculation from a dataset -and a PDF. The NLL is calculated as -
- Sum[data] -log( pdf(x_data) )
-
-In extended mode, a (Nexpect - Nobserved*log(NExpected) term is added +Class RooBinnedL implements a -log(likelihood) calculation from a dataset +(assumed to be binned) and a PDF. The NLL is calculated as +\f + \sum_\mathrm{data} -\log( \mathrm{pdf}(x_\mathrm{data})) +\f] +In extended mode, a +\f$ N_\mathrm{expect} - N_\mathrm{observed}*log(N_\mathrm{expect}) \f$ term is added. **/ #include @@ -74,10 +75,10 @@ RooBinnedL::RooBinnedL(RooAbsPdf* pdf, RooAbsData* data) : } ////////////////////////////////////////////////////////////////////////////////// -///// Calculate and return likelihood on subset of data from firstEvent to lastEvent -///// processed with a step size of 'stepSize'. If this an extended likelihood and -///// and the zero event is processed the extended term is added to the return -///// likelihood. +/// Calculate and return likelihood on subset of data from firstEvent to lastEvent +/// processed with a step size of 'stepSize'. If this an extended likelihood and +/// and the zero event is processed the extended term is added to the return +/// likelihood. // double RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begin*/, std::size_t /*components_end*/) diff --git a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx index 84396d664b034..1f18acbcac436 100644 --- a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx @@ -20,6 +20,16 @@ namespace RooFit { namespace TestStatistics { +/** \class RooRealL + * \ingroup Roofitcore + * + * \brief RooAbsReal that wraps RooAbsL likelihoods for use in RooFit outside of the RooMinimizer context + * + * This class provides a simple wrapper to evaluate RooAbsL derived likelihood objects like a regular RooFit real value. + * Whereas the RooAbsL objects are meant to be used within the context of minimization, RooRealL can be used in any + * RooFit context, like plotting. The value can be accessed through getVal(), like with other RooFit real variables. + **/ + RooRealL::RooRealL(const char *name, const char *title, std::shared_ptr likelihood) : RooAbsReal(name, title), likelihood_(std::move(likelihood)), vars_proxy_("varsProxy", "proxy set of parameters", this) diff --git a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx index e009e6c3e957f..a84abe8da7e8e 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx @@ -14,6 +14,26 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * *****************************************************************************/ +/** +\file RooSubsidiaryL.cxx +\class RooSubsidiaryL +\ingroup Roofitcore + +\brief RooSubsidiaryL calculates the sum of the -(log) likelihoods of a set of RooAbsPdf objects that represent subsidiary or constraint functions. + +This class is used to gather all subsidiary PDF terms from the component PDFs of RooSumL likelihoods and calculate the +composite -log(L). Such subsidiary terms can be marked using RooFit::Constrain arguments to RooAbsPdf::fitTo() or +RooAbsPdf::createNLL(). + +Subsidiary terms are summed separately for increased numerical stability, since these terms are often small and cause +numerical variances in their original PDFs, whereas by summing as one separate subsidiary collective term, it is +numerically very stable. + +\note When a subsidiary PDF is part of multiple component PDFs, it will only be summed once in this class! This doesn't +change the derivative of the log likelihood (which is what matters in fitting the likelihood), but does change the +value of the (log-)likelihood itself. +**/ + #include #include #include // for dynamic cast @@ -57,7 +77,6 @@ RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, std::size_t /*compone } void RooSubsidiaryL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode /*opcode*/, bool /*doAlsoTrackingOpt*/) { - // do nothing, there's no dataset here to cache } } // namespace TestStatistics diff --git a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx index d6609d29c5eac..2f8b47fa85e82 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx @@ -23,14 +23,71 @@ namespace RooFit { namespace TestStatistics { -/// \note Components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! +/** \class RooSumL + * \ingroup Roofitcore + * + * \brief Likelihood class that sums over multiple -log components + * + * The likelihood is often a product of components, for instance when fitting simultaneous pdfs, but also when using + * subsidiary pdfs. Hence, the negative log likelihood that we, in fact, calculate is often a sum over these components. + * This sum is implemented by this class. + **/ + +/// \param[in] pdf Raw pointer to the pdf; will not be cloned in this object. +/// \param[in] data Raw pointer to the dataset; will not be cloned in this object. +/// \param[in] components The component likelihoods. +/// \param extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. +/// \warning components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! /// \note The number of events in RooSumL is that of the full dataset. Components will have their own number of events that may be more relevant. RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, RooAbsL::Extended extended) : RooAbsL(pdf, data, data->numEntries(), components.size(), extended), components_(std::move(components)) {} +// Developer note on the std::move() warning above: +// +// The point here was that you don't want to clone RooAbsL's too much, because they contain clones of the pdf and dataset +// that may have been mangled for optimization. You probably don't want to be doing that all the time, although it is a +// premature optimization, since we haven't timed its impact. That is the motivation behind using unique_ptrs for the +// components. The way the classes are built, the RooSumL doesn't care about what components it gets, so by definition it +// cannot create them internally, so they have to be passed in somehow. Forcing the user to call the function with a +// std::move is a way to make them fully realize that their local components will be destroyed and the contents moved +// into the RooSumL. +// +// We could change the type to an rvalue reference to make it clearer from the compiler error that std::move is +// necessary, instead of the obscure error that you get now. Compare the compiler error messages from these two types: +// +//#include +//#include +//#include +// +//struct Clear { +// Clear(std::vector>&& vec) : vec_(std::move(vec)) { +// printf("number is %d", *vec_[0]); +// } +// +// std::vector> vec_; +//}; +// +//struct Obscure { +// Obscure(std::vector> vec) : vec_(std::move(vec)) { +// printf("number is %d", *vec_[0]); +// } +// +// std::vector> vec_; +//}; +// +//int main() { +// std::vector> vec; +// vec.emplace_back(new int(4)); +// Clear thing(vec); +// Obscure thingy(vec); +//} + +/// \note Compared to the RooAbsTestStatistic implementation that this was taken from, we leave out Hybrid and +/// SimComponents interleaving support here. This should be implemented by a calculator (i.e. LikelihoodWrapper or +/// LikelihoodGradientWrapper derived class), if desired. double RooSumL::evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) { // Evaluate specified range of owned GOF objects @@ -48,13 +105,10 @@ double RooSumL::evaluatePartition(Section events, std::size_t components_begin, ret = t; } - // Note: compared to the RooAbsTestStatistic implementation that this was taken from, we leave out Hybrid and - // SimComponents interleaving support here, this should be implemented by calculator, if desired. - return ret; } -// note: this assumes there is only one subsidiary component! +/// \note This function assumes there is only one subsidiary component. std::tuple RooSumL::getSubsidiaryValue() { // iterate in reverse, because the subsidiary component is usually at the end: diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx index 844183955aeb5..818779a4f8141 100644 --- a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -19,12 +19,13 @@ \class RooUnbinnedL \ingroup Roofitcore -Class RooUnbinnedL implements a a -log(likelihood) calculation from a dataset -and a PDF. The NLL is calculated as -
- Sum[data] -log( pdf(x_data) )
-
-In extended mode, a (Nexpect - Nobserved*log(NExpected) term is added +Class RooUnbinnedL implements a -log(likelihood) calculation from a dataset +(assumed to be unbinned) and a PDF. The NLL is calculated as +\f[ + \sum_\mathrm{data} -\log( \mathrm{pdf}(x_\mathrm{data})) +\f] +In extended mode, a +\f$ N_\mathrm{expect} - N_\mathrm{observed}*log(N_\mathrm{expect}) \f$ term is added. **/ #include diff --git a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx index 413d74d8c6237..5e18fb0cfc2ee 100644 --- a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx +++ b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx @@ -30,8 +30,40 @@ namespace RooFit { +/** + * \brief Namespace for new RooFit test statistic calculation. + * + * RooFit::TestStatistics contains a major refactoring of the RooAbsTestStatistic-RooAbsOptTestStatistic-RooNLLVar inheritance tree into: + * 1. statistics-based classes on the one hand; + * 2. calculation/evaluation/optimization based classes on the other hand. + * + * The likelihood is the central unit on the statistics side. The RooAbsL class is implemented for four kinds of likelihoods: + * binned, unbinned, "subsidiary" (an optimization for numerical stability that gathers components like global observables) + * and "sum" (over multiple components of the other types). These classes provide ways to compute their components in parallelizable + * chunks that can be used by the calculator classes as they see fit. + * + * On top of the likelihood classes, we also provide for convenience a set of likelihood builders, as free functions in the namespace. + * + * The calculator "Wrapper" classes are abstract interfaces. These can be implemented for different kinds of algorithms, or with + * different kinds of optimization "back-ends" in mind. In an upcoming PR, we will introduce the fork-based multi-processing + * implementation based on RooFit::MultiProcess. Other possible implementations could use the GPU or external tools like TensorFlow. + * + * The coupling of all these classes to RooMinimizer is made via the MinuitFcnGrad class, which owns the Wrappers that calculate + * the likelihood components. + */ namespace TestStatistics { +/* + * \brief Extract a collection of subsidiary likelihoods from a pdf + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. + * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. + * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. + * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. + * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. + */ std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, GlobalObservables global_observables, std::string global_observables_tag) @@ -40,7 +72,7 @@ std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *dat Bool_t doStripDisconnected = kFALSE; // If no explicit list of parameters to be constrained is specified apply default algorithm - // All terms of RooProdPdfs that do not contain observables and share a parameters with one or more + // All terms of RooProdPdfs that do not contain observables and share parameters with one or more // terms that do contain observables are added as constraints. #ifndef NDEBUG bool did_default_constraint_algo = false; @@ -111,6 +143,18 @@ std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *dat } +/* + * \brief Build a likelihood from a simultaneous pdf, possibly including subsidiary likelihood component + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. + * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. + * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. + * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. + * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. + * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. + */ std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, @@ -259,6 +303,18 @@ std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* } +/* + * \brief Build a likelihood from an unbinned pdf with a subsidiary likelihood component + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. + * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. + * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. + * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. + * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. + * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. + */ std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, From 6b4139711c9dd6235419f1052552b96220933dd0 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Tue, 7 Sep 2021 11:07:38 +0200 Subject: [PATCH 061/577] finish RooFit::TestStatistics::buildLikelihood buildLikelihood is a likelihood builder that takes a pdf, dataset and optional parameters, analyzes all input, and returns the most suitable likelihood class object. The builder is now also used in testLikelihoodSerial. We removed one of the tests, because it highlights an oversight in RooNLLVar, and should hence be tested there. The oversight is that RooAbsPdf::createNLL only activates binned mode for simultaneous PDFs, not for single PDFs, even if you explicitly set the BinnedLikelihood attribute. --- roofit/roofitcore/CMakeLists.txt | 4 +- .../inc/TestStatistics/buildLikelihood.h | 49 +++ .../inc/TestStatistics/likelihood_builders.h | 62 --- .../src/TestStatistics/buildLikelihood.cxx | 410 ++++++++++++++++++ .../TestStatistics/likelihood_builders.cxx | 350 --------------- .../TestStatistics/testLikelihoodSerial.cxx | 43 +- 6 files changed, 473 insertions(+), 445 deletions(-) create mode 100644 roofit/roofitcore/inc/TestStatistics/buildLikelihood.h delete mode 100644 roofit/roofitcore/inc/TestStatistics/likelihood_builders.h create mode 100644 roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx delete mode 100644 roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx diff --git a/roofit/roofitcore/CMakeLists.txt b/roofit/roofitcore/CMakeLists.txt index 9d7611efcd526..d4053e3e8dea6 100644 --- a/roofit/roofitcore/CMakeLists.txt +++ b/roofit/roofitcore/CMakeLists.txt @@ -246,7 +246,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore TestStatistics/RooUnbinnedL.h TestStatistics/kahan_sum.h TestStatistics/optional_parameter_types.h - TestStatistics/likelihood_builders.h + TestStatistics/buildLikelihood.h SOURCES src/BidirMMapPipe.cxx src/BidirMMapPipe.h @@ -475,7 +475,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore src/TestStatistics/RooRealL.cxx src/TestStatistics/RooUnbinnedL.cxx src/TestStatistics/optional_parameter_types.cxx - src/TestStatistics/likelihood_builders.cxx + src/TestStatistics/buildLikelihood.cxx src/TestStatistics/kahan_sum.cxx DICTIONARY_OPTIONS "-writeEmptyRootPCM" diff --git a/roofit/roofitcore/inc/TestStatistics/buildLikelihood.h b/roofit/roofitcore/inc/TestStatistics/buildLikelihood.h new file mode 100644 index 0000000000000..d68ba253979b7 --- /dev/null +++ b/roofit/roofitcore/inc/TestStatistics/buildLikelihood.h @@ -0,0 +1,49 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#ifndef ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders +#define ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders + +#include "TestStatistics/RooAbsL.h" +#include "TestStatistics/optional_parameter_types.h" + +#include + +// forward declarations +class RooAbsPdf; +class RooAbsData; + +namespace RooFit { +namespace TestStatistics { + +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, + ConstrainedParameters constrained_parameters = {}, ExternalConstraints external_constraints = {}, + GlobalObservables global_observables = {}, std::string global_observables_tag = {}); + +// delegating builder calls, for more convenient "optional" parameter passing +std::shared_ptr +buildLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters); +std::shared_ptr buildLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints); +std::shared_ptr buildLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables); +std::shared_ptr buildLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag); +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables); + +} +} + +#endif // ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders diff --git a/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h b/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h deleted file mode 100644 index 9193383ccb183..0000000000000 --- a/roofit/roofitcore/inc/TestStatistics/likelihood_builders.h +++ /dev/null @@ -1,62 +0,0 @@ -// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 - -/***************************************************************************** - * RooFit - * Authors: * - * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * - * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * - * * - * Copyright (c) 2000-2021, Regents of the University of California * - * and Stanford University. All rights reserved. * - * * - * Redistribution and use in source and binary forms, * - * with or without modification, are permitted according to the terms * - * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * - *****************************************************************************/ - -#ifndef ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders -#define ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders - -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/optional_parameter_types.h" - -#include - -// forward declarations -class RooAbsPdf; -class RooAbsData; - -namespace RooFit { -namespace TestStatistics { - -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, - ConstrainedParameters constrained_parameters = {}, ExternalConstraints external_constraints = {}, - GlobalObservables global_observables = {}, std::string global_observables_tag = {}); - -// delegating builder calls, for more convenient "optional" parameter passing -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters); -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints); -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables); -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag); -std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables); - -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, - ConstrainedParameters constrained_parameters = {}, ExternalConstraints external_constraints = {}, - GlobalObservables global_observables = {}, std::string global_observables_tag = {}); - -// delegating builder calls, for more convenient "optional" parameter passing -std::shared_ptr -buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters); -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints); -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables); -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag); - -} -} - -#endif // ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders diff --git a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx new file mode 100644 index 0000000000000..ae37d4db9b821 --- /dev/null +++ b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx @@ -0,0 +1,410 @@ +// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 + +/***************************************************************************** + * RooFit + * Authors: * + * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * + * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * + * * + * Copyright (c) 2000-2021, Regents of the University of California * + * and Stanford University. All rights reserved. * + * * + * Redistribution and use in source and binary forms, * + * with or without modification, are permitted according to the terms * + * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * + *****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace RooFit { +/** + * \brief Namespace for new RooFit test statistic calculation. + * + * RooFit::TestStatistics contains a major refactoring of the RooAbsTestStatistic-RooAbsOptTestStatistic-RooNLLVar + * inheritance tree into: + * 1. statistics-based classes on the one hand; + * 2. calculation/evaluation/optimization based classes on the other hand. + * + * The likelihood is the central unit on the statistics side. The RooAbsL class is implemented for four kinds of + * likelihoods: binned, unbinned, "subsidiary" (an optimization for numerical stability that gathers components like + * global observables) and "sum" (over multiple components of the other types). These classes provide ways to compute + * their components in parallelizable chunks that can be used by the calculator classes as they see fit. + * + * On top of the likelihood classes, we also provide for convenience a likelihood builder buildLikelihood, as a free + * function in the namespace. This function analyzes the pdf and automatically constructs the proper likelihood, built + * up from the available RooAbsL subclasses. + * + * The calculator "Wrapper" classes are abstract interfaces. These can be implemented for different kinds of algorithms, + * or with different kinds of optimization "back-ends" in mind. In an upcoming PR, we will introduce the fork-based + * multi-processing implementation based on RooFit::MultiProcess. Other possible implementations could use the GPU or + * external tools like TensorFlow. + * + * The coupling of all these classes to RooMinimizer is made via the MinuitFcnGrad class, which owns the Wrappers that + * calculate the likelihood components. + */ +namespace TestStatistics { + +namespace { // private implementation details + +RooArgSet getConstraintsSet(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters, + ExternalConstraints external_constraints, GlobalObservables global_observables, + std::string global_observables_tag) +{ + // BEGIN CONSTRAINT COLLECTION; copied from RooAbsPdf::createNLL + + Bool_t doStripDisconnected = kFALSE; + // If no explicit list of parameters to be constrained is specified apply default algorithm + // All terms of RooProdPdfs that do not contain observables and share parameters with one or more + // terms that do contain observables are added as constraints. +#ifndef NDEBUG + bool did_default_constraint_algo = false; + std::size_t N_default_constraints = 0; +#endif + if (constrained_parameters.set.getSize() == 0) { + std::unique_ptr default_constraints{pdf->getParameters(*data, kFALSE)}; + constrained_parameters.set.add(*default_constraints); + doStripDisconnected = kTRUE; +#ifndef NDEBUG + did_default_constraint_algo = true; + N_default_constraints = default_constraints->getSize(); +#endif + } +#ifndef NDEBUG + if (did_default_constraint_algo) { + assert(N_default_constraints == static_cast(constrained_parameters.set.getSize())); + } +#endif + + // Collect internal and external constraint specifications + RooArgSet allConstraints; + + if (!global_observables_tag.empty()) { + if (global_observables.set.getSize() > 0) { + global_observables.set.removeAll(); + } + std::unique_ptr allVars{pdf->getVariables()}; + global_observables.set.add( + *dynamic_cast(allVars->selectByAttrib(global_observables_tag.c_str(), kTRUE))); + oocoutI((TObject *)nullptr, Minimization) + << "User-defined specification of global observables definition with tag named '" << global_observables_tag + << "'" << std::endl; + } else if (global_observables.set.getSize() == 0) { + // neither global_observables nor global_observables_tag was given - try if a default tag is defined in the head + // node + const char *defGlobObsTag = pdf->getStringAttribute("DefaultGlobalObservablesTag"); + if (defGlobObsTag) { + oocoutI((TObject *)nullptr, Minimization) + << "p.d.f. provides built-in specification of global observables definition with tag named '" + << defGlobObsTag << "'" << std::endl; + std::unique_ptr allVars{pdf->getVariables()}; + global_observables.set.add(*dynamic_cast(allVars->selectByAttrib(defGlobObsTag, kTRUE))); + } + } + + // EGP: removed workspace (RooAbsPdf::_myws) based stuff for now; TODO: reconnect this class to workspaces + + if (constrained_parameters.set.getSize() > 0) { + std::unique_ptr constraints{ + pdf->getAllConstraints(*data->get(), constrained_parameters.set, doStripDisconnected)}; + allConstraints.add(*constraints); + } + if (external_constraints.set.getSize() > 0) { + allConstraints.add(external_constraints.set); + } + + return allConstraints; +} + +/* + * \brief Extract a collection of subsidiary likelihoods from a pdf + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are + * added to the subsidiary likelihood. + * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints + * not necessarily in the pdf itself. These are always added to the subsidiary likelihood. + * \param[in] global_observables + * Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone + * are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p + * constrained_parameters) if present. + * \param[in] global_observables_tag String that can be set as attribute in pdf + * components to indicate that it is a global observable. Can be used instead of or in addition to \p + * global_observables. + * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be + * calculated separately from the other components in the full likelihood. + */ +std::unique_ptr +buildSubsidiaryL(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters, + ExternalConstraints external_constraints, GlobalObservables global_observables, + std::string global_observables_tag) +{ + auto allConstraints = getConstraintsSet(pdf, data, constrained_parameters, external_constraints, global_observables, + global_observables_tag); + + std::unique_ptr subsidiary_likelihood; + // Include constraints, if any, in likelihood + if (allConstraints.getSize() > 0) { + + oocoutI((TObject *)nullptr, Minimization) + << " Including the following contraint terms in minimization: " << allConstraints << std::endl; + if (global_observables.set.getSize() > 0) { + oocoutI((TObject *)nullptr, Minimization) + << "The following global observables have been defined: " << global_observables.set << std::endl; + } + std::string name("likelihood for pdf "); + name += pdf->GetName(); + subsidiary_likelihood = std::make_unique( + name, allConstraints, + (global_observables.set.getSize() > 0) ? global_observables.set : constrained_parameters.set); + } + + return subsidiary_likelihood; +} + +bool isSimultaneous(RooAbsPdf *pdf) +{ + auto sim_pdf = dynamic_cast(pdf); + return sim_pdf != nullptr; +} + +/// Get the binned part of a pdf +/// +/// \param pdf Raw pointer to the pdf +/// \return A pdf is binned if it has attribute "BinnedLikelihood" and it is a RooRealSumPdf (or derived class). +/// If \p pdf itself is binned, it will be returned. If the pdf is a RooProdPdf (or derived), the product terms +/// will be searched for a binned component and the first such term that is found will be returned. Note that +/// the simultaneous pdf setup is such that it is assumed that only one component is binned, so this should +/// always return the correct binned component. If no binned component is found, nullptr is returned. +RooAbsPdf *getBinnedPdf(RooAbsPdf *pdf) +{ + RooAbsPdf *binnedPdf = nullptr; + if (pdf->getAttribute("BinnedLikelihood") && pdf->IsA()->InheritsFrom(RooRealSumPdf::Class())) { + // Simplest case: top-level of pdf is a RRSP + binnedPdf = pdf; + } else if (pdf->IsA()->InheritsFrom(RooProdPdf::Class())) { + // Default case: top-level pdf is a product of RRSP and other pdfs + for (const auto component : ((RooProdPdf *)pdf)->pdfList()) { + if (component->getAttribute("BinnedLikelihood") && component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { + binnedPdf = (RooAbsPdf *)component; + break; + } + } + } + return binnedPdf; +} + +/* + * \brief Build a set of likelihood components to build a likelihood from a simultaneous pdf + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on + * the pdf whether to activate or not. + * \return A vector to RooAbsL unique_ptrs that contain all component binned and/or + * unbinned likelihoods. Note: subsidiary components are not included; use getConstraintsSet and/or + * buildSubsidiaryLikelihood to add those. + */ +std::vector> +getSimultaneousComponents(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended) +{ + auto sim_pdf = dynamic_cast(pdf); + + // the rest of this function is an adaptation of RooAbsTestStatistic::initSimMode: + + RooAbsCategoryLValue &simCat = (RooAbsCategoryLValue &)sim_pdf->indexCat(); + + // note: this is valid for simultaneous likelihoods, not for other test statistic types (e.g. chi2) for which this + // should return true. + bool process_empty_data_sets = RooAbsL::isExtendedHelper(pdf, extended); + + TString simCatName(simCat.GetName()); + // Note: important not to use cloned dataset here (possible when this code is run in Roo[...]L ctor), use the + // original one (which is data_ in Roo[...]L ctors, but data here) + std::unique_ptr dsetList{data->split(simCat, process_empty_data_sets)}; + if (!dsetList) { + throw std::logic_error( + "getSimultaneousComponents ERROR, index category of simultaneous pdf is missing in dataset, aborting"); + } + + // Count number of used states + std::size_t N_components = 0; + + for (const auto &catState : simCat) { + // Retrieve the PDF for this simCat state + RooAbsPdf *component_pdf = sim_pdf->getPdf(catState.first.c_str()); + auto dset = (RooAbsData *)dsetList->FindObject(catState.first.c_str()); + + if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { + ++N_components; + } + } + + // Allocate arrays + std::vector> components; + components.reserve(N_components); + // _gofSplitMode.resize(N_components); // not used, Hybrid mode only, see below + + // Create array of regular fit contexts, containing subset of data and single fitCat PDF + std::size_t n = 0; + for (const auto &catState : simCat) { + const std::string &catName = catState.first; + // Retrieve the PDF for this simCat state + RooAbsPdf *component_pdf = sim_pdf->getPdf(catName.c_str()); + auto dset = (RooAbsData *)dsetList->FindObject(catName.c_str()); + + if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { + ooccoutI((TObject *)nullptr, Fitting) + << "getSimultaneousComponents: creating slave calculator #" << n << " for state " << catName << " (" + << dset->numEntries() << " dataset entries)" << std::endl; + + RooAbsPdf *binnedPdf = getBinnedPdf(component_pdf); + Bool_t binnedL = (binnedPdf != nullptr); + if (binnedPdf == nullptr && component_pdf->IsA()->InheritsFrom(RooProdPdf::Class())) { + // Default case: top-level pdf is a product of RRSP and other pdfs + for (const auto component : ((RooProdPdf *)component_pdf)->pdfList()) { + if (component->getAttribute("MAIN_MEASUREMENT")) { + // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to + // be passed to the slave calculator + binnedPdf = (RooAbsPdf *)component; + break; + } + } + } + // Below here directly pass binnedPdf instead of PROD(binnedPdf,constraints) as constraints are evaluated + // elsewhere anyway and omitting them reduces model complexity and associated handling/cloning times + if (binnedL) { + components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); + } else { + components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); + } + // } + components.back()->setSimCount(N_components); + + // Servers may have been redirected between instantiation and (deferred) initialization + + std::unique_ptr actualParams{binnedPdf ? binnedPdf->getParameters(dset) + : component_pdf->getParameters(dset)}; + std::unique_ptr selTargetParams{ + (RooArgSet *)pdf->getParameters(*data)->selectCommon(*actualParams)}; + + assert(selTargetParams->equals(*components.back()->getParameters())); + + ++n; + } else { + if ((!dset || (0. != dset->sumEntries() && !process_empty_data_sets)) && component_pdf) { + ooccoutD((TObject *)nullptr, Fitting) << "getSimultaneousComponents: state " << catName + << " has no data entries, no slave calculator created" << std::endl; + } + } + } + oocoutI((TObject *)nullptr, Fitting) << "getSimultaneousComponents: created " << n << " slave calculators." + << std::endl; + + return components; +} + +} // anonymous namespace with private implementation details + + +/* + * \brief Build a likelihood from a pdf + dataset, optionally with a subsidiary likelihood component + * + * This function analyzes the pdf and automatically constructs the proper likelihood, built up from the available + * RooAbsL subclasses. In essence, this can give 8 conceptually different combinations, based on three questions: + * 1. Is it a simultaneous pdf? + * 2. Is the pdf binned? + * 3. Does the pdf have subsidiary terms? + * If questions 1 and 3 are answered negatively, this function will either return a RooBinnedL or RooUnbinnedL. In all + * other cases it returns a RooSumL, which will contain RooBinnedL and/or RooUnbinnedL component(s) and possibly a + * RooSubsidiaryL component with constraint terms. + * + * \param[in] pdf Raw pointer to the pdf + * \param[in] data Raw pointer to the dataset + * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on + * the pdf whether to activate or not. + * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are + * added to the subsidiary likelihood. + * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints + * not necessarily in the pdf itself. These are always added to the subsidiary likelihood. + * \param[in] global_observables + * Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone + * are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p + * constrained_parameters) if present. + * \param[in] global_observables_tag String that can be set as attribute in pdf + * components to indicate that it is a global observable. Can be used instead of or in addition to \p + * global_observables. + * \return A unique pointer to a RooSubsidiaryL that contains all terms in + * the pdf that can be calculated separately from the other components in the full likelihood. + */ +std::shared_ptr buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, + ConstrainedParameters constrained_parameters, + ExternalConstraints external_constraints, GlobalObservables global_observables, + std::string global_observables_tag) +{ + std::unique_ptr likelihood; + std::vector> components; + + if (isSimultaneous(pdf)) { + components = getSimultaneousComponents(pdf, data, extended); + } else if (auto binnedPdf = getBinnedPdf(pdf)) { + likelihood = std::make_unique(binnedPdf, data); + } else { // unbinned + likelihood = std::make_unique(pdf, data, extended); + } + + auto subsidiary = buildSubsidiaryL(pdf, data, constrained_parameters, external_constraints, global_observables, global_observables_tag); + if (subsidiary) { + if (likelihood) { + components.push_back(std::move(likelihood)); + } + components.push_back(std::move(subsidiary)); + } + if (components.size() > 0) { + likelihood = std::make_unique(pdf, data, std::move(components), extended); + } + return likelihood; +} + +// delegating convenience overloads +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters) +{ + return buildLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters); +} +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, ExternalConstraints external_constraints) +{ + return buildLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, external_constraints); +} +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, GlobalObservables global_observables) +{ + return buildLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, global_observables); +} +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, std::string global_observables_tag) +{ + return buildLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, {}, global_observables_tag); +} +std::shared_ptr +buildLikelihood(RooAbsPdf *pdf, RooAbsData *data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables) +{ + return buildLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters, {}, global_observables); +} + + +} // namespace TestStatistics +} // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx b/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx deleted file mode 100644 index 5e18fb0cfc2ee..0000000000000 --- a/roofit/roofitcore/src/TestStatistics/likelihood_builders.cxx +++ /dev/null @@ -1,350 +0,0 @@ -// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 - -/***************************************************************************** - * RooFit - * Authors: * - * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * - * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * - * * - * Copyright (c) 2000-2021, Regents of the University of California * - * and Stanford University. All rights reserved. * - * * - * Redistribution and use in source and binary forms, * - * with or without modification, are permitted according to the terms * - * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * - *****************************************************************************/ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - - -namespace RooFit { -/** - * \brief Namespace for new RooFit test statistic calculation. - * - * RooFit::TestStatistics contains a major refactoring of the RooAbsTestStatistic-RooAbsOptTestStatistic-RooNLLVar inheritance tree into: - * 1. statistics-based classes on the one hand; - * 2. calculation/evaluation/optimization based classes on the other hand. - * - * The likelihood is the central unit on the statistics side. The RooAbsL class is implemented for four kinds of likelihoods: - * binned, unbinned, "subsidiary" (an optimization for numerical stability that gathers components like global observables) - * and "sum" (over multiple components of the other types). These classes provide ways to compute their components in parallelizable - * chunks that can be used by the calculator classes as they see fit. - * - * On top of the likelihood classes, we also provide for convenience a set of likelihood builders, as free functions in the namespace. - * - * The calculator "Wrapper" classes are abstract interfaces. These can be implemented for different kinds of algorithms, or with - * different kinds of optimization "back-ends" in mind. In an upcoming PR, we will introduce the fork-based multi-processing - * implementation based on RooFit::MultiProcess. Other possible implementations could use the GPU or external tools like TensorFlow. - * - * The coupling of all these classes to RooMinimizer is made via the MinuitFcnGrad class, which owns the Wrappers that calculate - * the likelihood components. - */ -namespace TestStatistics { - -/* - * \brief Extract a collection of subsidiary likelihoods from a pdf - * - * \param[in] pdf Raw pointer to the pdf - * \param[in] data Raw pointer to the dataset - * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. - * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. - * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. - * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. - * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. - */ -std::unique_ptr buildConstraints(RooAbsPdf *pdf, RooAbsData *data, - ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, - GlobalObservables global_observables, std::string global_observables_tag) -{ - // BEGIN CONSTRAINT COLLECTION; copied from RooAbsPdf::createNLL - - Bool_t doStripDisconnected = kFALSE; - // If no explicit list of parameters to be constrained is specified apply default algorithm - // All terms of RooProdPdfs that do not contain observables and share parameters with one or more - // terms that do contain observables are added as constraints. -#ifndef NDEBUG - bool did_default_constraint_algo = false; - std::size_t N_default_constraints = 0; -#endif - if (constrained_parameters.set.getSize() == 0) { - std::unique_ptr default_constraints{pdf->getParameters(*data, kFALSE)}; - constrained_parameters.set.add(*default_constraints); - doStripDisconnected = kTRUE; -#ifndef NDEBUG - did_default_constraint_algo = true; - N_default_constraints = default_constraints->getSize(); -#endif - } -#ifndef NDEBUG - if (did_default_constraint_algo) { - assert(N_default_constraints == static_cast(constrained_parameters.set.getSize())); - } -#endif - - // Collect internal and external constraint specifications - RooArgSet allConstraints; - - if (!global_observables_tag.empty()) { - if (global_observables.set.getSize() > 0) { - global_observables.set.removeAll(); - } - std::unique_ptr allVars {pdf->getVariables()}; - global_observables.set.add(*dynamic_cast(allVars->selectByAttrib(global_observables_tag.c_str(), kTRUE))); - oocoutI((TObject*)nullptr, Minimization) << "User-defined specification of global observables definition with tag named '" << global_observables_tag << "'" << std::endl; - } else if (global_observables.set.getSize() == 0) { - // neither global_observables nor global_observables_tag was given - try if a default tag is defined in the head node - const char* defGlobObsTag = pdf->getStringAttribute("DefaultGlobalObservablesTag"); - if (defGlobObsTag) { - oocoutI((TObject*)nullptr, Minimization) << "p.d.f. provides built-in specification of global observables definition with tag named '" << defGlobObsTag << "'" << std::endl; - std::unique_ptr allVars {pdf->getVariables()}; - global_observables.set.add(*dynamic_cast(allVars->selectByAttrib(defGlobObsTag, kTRUE))); - } - } - - // EGP: removed workspace (RooAbsPdf::_myws) based stuff for now; TODO: reconnect this class to workspaces - - if (constrained_parameters.set.getSize() > 0) { - std::unique_ptr constraints{pdf->getAllConstraints(*data->get(), constrained_parameters.set, doStripDisconnected)}; - allConstraints.add(*constraints); - } - if (external_constraints.set.getSize() > 0) { - allConstraints.add(external_constraints.set); - } - - std::unique_ptr subsidiary_likelihood; - // Include constraints, if any, in likelihood - if (allConstraints.getSize() > 0) { - - oocoutI((TObject*) nullptr, Minimization) << " Including the following contraint terms in minimization: " << allConstraints << std::endl; - if (global_observables.set.getSize() > 0) { - oocoutI((TObject*) nullptr, Minimization) << "The following global observables have been defined: " << global_observables.set << std::endl; - } - std::string name("likelihood for pdf "); - name += pdf->GetName(); - subsidiary_likelihood = std::make_unique(name, allConstraints, - (global_observables.set.getSize() > 0) ? global_observables.set : constrained_parameters.set); - } - - // END CONSTRAINT COLLECTION; copied from RooAbsPdf::createNLL - - return subsidiary_likelihood; -} - - -/* - * \brief Build a likelihood from a simultaneous pdf, possibly including subsidiary likelihood component - * - * \param[in] pdf Raw pointer to the pdf - * \param[in] data Raw pointer to the dataset - * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. - * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. - * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. - * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. - * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. - * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. - */ -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, - ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, - GlobalObservables global_observables, std::string global_observables_tag) { - auto sim_pdf = dynamic_cast(pdf); - if (sim_pdf == nullptr) { - throw std::logic_error("Can only build RooSumL from RooSimultaneous pdf!"); - } - - // the rest of this function is an adaptation of RooAbsTestStatistic::initSimMode: - - RooAbsCategoryLValue &simCat = (RooAbsCategoryLValue &)sim_pdf->indexCat(); - - // note: this is valid for simultaneous likelihoods, not for other test statistic types (e.g. chi2) for which this should return true. - bool process_empty_data_sets = RooAbsL::isExtendedHelper(pdf, extended); - - TString simCatName(simCat.GetName()); - // Note: important not to use cloned dataset here (possible when this code is run in Roo[...]L ctor), use the - // original one (which is data_ in Roo[...]L ctors, but data here) - std::unique_ptr dsetList{data->split(simCat, process_empty_data_sets)}; - if (!dsetList) { - throw std::logic_error("buildSimultaneousLikelihood ERROR, index category of simultaneous pdf is missing in dataset, aborting"); - } - - // Count number of used states - std::size_t N_components = 0; - - for (const auto& catState : simCat) { - // Retrieve the PDF for this simCat state - RooAbsPdf *component_pdf = sim_pdf->getPdf(catState.first.c_str()); - auto dset = (RooAbsData *)dsetList->FindObject(catState.first.c_str()); - - if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { - ++N_components; - } - } - - // Allocate arrays - std::vector> components; - components.reserve(N_components); - // _gofSplitMode.resize(N_components); // not used, Hybrid mode only, see below - - // Create array of regular fit contexts, containing subset of data and single fitCat PDF - std::size_t n = 0; - for (const auto& catState : simCat) { - const std::string& catName = catState.first; - // Retrieve the PDF for this simCat state - RooAbsPdf *component_pdf = sim_pdf->getPdf(catName.c_str()); - auto dset = (RooAbsData *)dsetList->FindObject(catName.c_str()); - - if (component_pdf && dset && (0. != dset->sumEntries() || process_empty_data_sets)) { - ooccoutI((TObject *)nullptr, Fitting) - << "RooSumL: creating slave calculator #" << n << " for state " << catName << " (" - << dset->numEntries() << " dataset entries)" << std::endl; - - // *** START HERE - // WVE HACK determine if we have a RooRealSumPdf and then treat it like a binned likelihood - RooAbsPdf *binnedPdf = 0; - Bool_t binnedL = kFALSE; - if (component_pdf->getAttribute("BinnedLikelihood") && - component_pdf->IsA()->InheritsFrom(RooRealSumPdf::Class())) { - // Simplest case: top-level of component is a RRSP - binnedPdf = component_pdf; - binnedL = kTRUE; - } else if (component_pdf->IsA()->InheritsFrom(RooProdPdf::Class())) { - // Default case: top-level pdf is a product of RRSP and other pdfs - for (const auto component : ((RooProdPdf *)component_pdf)->pdfList()) { - if (component->getAttribute("BinnedLikelihood") && - component->IsA()->InheritsFrom(RooRealSumPdf::Class())) { - binnedPdf = (RooAbsPdf *)component; - binnedL = kTRUE; - } - if (component->getAttribute("MAIN_MEASUREMENT")) { - // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to - // be passed to the slave calculator - binnedPdf = (RooAbsPdf *)component; - } - } - } - // WVE END HACK - // Below here directly pass binnedPdf instead of PROD(binnedPdf,constraints) as constraints are evaluated - // elsewhere anyway and omitting them reduces model complexity and associated handling/cloning times - if (binnedL) { - components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); - } else { - components.push_back(std::make_unique((binnedPdf ? binnedPdf : component_pdf), dset)); - } - // } - components.back()->setSimCount(N_components); - // *** END HERE - - // Servers may have been redirected between instantiation and (deferred) initialization - - std::unique_ptr actualParams{binnedPdf ? binnedPdf->getParameters(dset) - : component_pdf->getParameters(dset)}; - std::unique_ptr selTargetParams{(RooArgSet *)pdf->getParameters(*data)->selectCommon(*actualParams)}; - - // TODO: I don't think we have to redirect servers, because our classes make no use of those, but we should - // make sure. Do we need to reset the parameter set instead? - // components_.back()->recursiveRedirectServers(*selTargetParams); - assert(selTargetParams->equals(*components.back()->getParameters())); - - ++n; - } else { - if ((!dset || (0. != dset->sumEntries() && !process_empty_data_sets)) && component_pdf) { - ooccoutD((TObject *)nullptr, Fitting) << "RooSumL: state " << catName - << " has no data entries, no slave calculator created" << std::endl; - } - } - } - oocoutI((TObject *)nullptr, Fitting) << "RooSumL: created " << n << " slave calculators." << std::endl; - - std::unique_ptr subsidiary = buildConstraints(pdf, data, constrained_parameters, external_constraints, global_observables, global_observables_tag); - if (subsidiary) { - components.push_back(std::move(subsidiary)); - } - - return std::make_shared(pdf, data, std::move(components), extended); -} - -// delegating convenience overloads -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters) -{ - return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters); -} -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints) -{ - return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, external_constraints); -} -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables) -{ - return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, global_observables); -} -std::shared_ptr -buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag) -{ - return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, {}, global_observables_tag); -} -std::shared_ptr buildSimultaneousLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters, GlobalObservables global_observables) -{ - return buildSimultaneousLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters, {}, - global_observables); -} - - -/* - * \brief Build a likelihood from an unbinned pdf with a subsidiary likelihood component - * - * \param[in] pdf Raw pointer to the pdf - * \param[in] data Raw pointer to the dataset - * \param[in] extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. - * \param[in] constrained_parameters Set of parameters that are constrained. Pdf components dependent on these alone are added to the subsidiary likelihood. - * \param[in] external_constraints Set of external constraint pdfs, i.e. constraints not necessarily in the pdf itself. These are always added to the subsidiary likelihood. - * \param[in] global_observables Observables that have a constant value, independent of the dataset events. Pdf components dependent on these alone are added to the subsidiary likelihood. \note Overrides all other likelihood parameters (like those in \p constrained_parameters) if present. - * \param[in] global_observables_tag String that can be set as attribute in pdf components to indicate that it is a global observable. Can be used instead of or in addition to \p global_observables. - * \return A unique pointer to a RooSubsidiaryL that contains all terms in the pdf that can be calculated separately from the other components in the full likelihood. - */ -std::shared_ptr -buildUnbinnedConstrainedLikelihood(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, - ConstrainedParameters constrained_parameters, ExternalConstraints external_constraints, - GlobalObservables global_observables, std::string global_observables_tag) { - std::vector> components; - components.reserve(2); - components.push_back(std::make_unique(pdf, data, extended)); - components.push_back(buildConstraints(pdf, data, constrained_parameters, external_constraints, global_observables, global_observables_tag)); - return std::make_shared(pdf, data, std::move(components), extended); -} - -// delegating convenience overloads -std::shared_ptr -buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ConstrainedParameters constrained_parameters) -{ - return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, constrained_parameters); -} -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, ExternalConstraints external_constraints) -{ - return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, external_constraints); -} -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, GlobalObservables global_observables) -{ - return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, global_observables); -} -std::shared_ptr buildUnbinnedConstrainedLikelihood(RooAbsPdf* pdf, RooAbsData* data, std::string global_observables_tag) -{ - return buildUnbinnedConstrainedLikelihood(pdf, data, RooAbsL::Extended::Auto, {}, {}, {}, global_observables_tag); -} - -} -} - diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index 30f0458836b5d..40296cbbcb7b3 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include @@ -98,7 +98,7 @@ class LikelihoodSerialBinnedDatasetTest : public LikelihoodSerialTest { TEST_F(LikelihoodSerialTest, UnbinnedGaussian1D) { std::tie(nll, pdf, data, values) = generate_1D_gaussian_pdf_nll(w, 10000); - likelihood = std::make_shared(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll->getVal(); @@ -114,7 +114,7 @@ TEST_F(LikelihoodSerialTest, UnbinnedGaussianND) unsigned int N = 1; std::tie(nll, pdf, data, values) = generate_ND_gaussian_pdf_nll(w, N, 1000); - likelihood = std::make_shared(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll->getVal(); @@ -131,7 +131,7 @@ TEST_F(LikelihoodSerialBinnedDatasetTest, UnbinnedPdf) nll.reset(pdf->createNLL(*data)); - likelihood = std::make_shared(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll->getVal(); @@ -143,28 +143,9 @@ TEST_F(LikelihoodSerialBinnedDatasetTest, UnbinnedPdf) } -TEST_F(LikelihoodSerialBinnedDatasetTest, UnbinnedPdfWithBinnedLikelihoodAttribute) -{ - pdf->setAttribute("BinnedLikelihood"); - data = pdf->generateBinned(*w.var("x")); - - nll.reset(pdf->createNLL(*data)); - - likelihood = std::make_shared(pdf, data); - RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); - - auto nll0 = nll->getVal(); - - nll_ts.evaluate(); - auto nll1 = nll_ts.getResult(); - - EXPECT_EQ(nll0, nll1); -} - - - TEST_F(LikelihoodSerialBinnedDatasetTest, BinnedManualNLL) { + pdf->setAttribute("BinnedLikelihood"); data = pdf->generateBinned(*w.var("x")); // manually create NLL, ripping all relevant parts from RooAbsPdf::createNLL, except here we also set binnedL = true @@ -176,7 +157,7 @@ TEST_F(LikelihoodSerialBinnedDatasetTest, BinnedManualNLL) int extended = 2; RooNLLVar nll_manual("nlletje", "-log(likelihood)", *pdf, *data, projDeps, nll_config, extended); - likelihood = std::make_shared(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll_manual.getVal(); @@ -224,7 +205,7 @@ TEST_F(LikelihoodSerialTest, SimBinned) nll.reset(pdf->createNLL(*data)); - likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll->getVal(); @@ -271,7 +252,7 @@ TEST_F(LikelihoodSerialTest, BinnedConstrained) auto nll0 = nll->getVal(); - likelihood = RooFit::TestStatistics::buildUnbinnedConstrainedLikelihood(pdf, data, RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs")))); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data, RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs")))); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); nll_ts.evaluate(); @@ -298,7 +279,7 @@ TEST_F(LikelihoodSerialTest, SimUnbinned) auto nll0 = nll->getVal(); - likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); nll_ts.evaluate(); @@ -329,7 +310,7 @@ TEST_F(LikelihoodSerialTest, SimUnbinnedNonExtended) nll.reset(pdf->createNLL(*data)); - likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood(pdf, data); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); auto nll0 = nll->getVal(); @@ -395,7 +376,7 @@ TEST_F(LikelihoodSerialSimBinnedConstrainedTest, BasicParameters) auto nll0 = nll->getVal(); - likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood( + likelihood = RooFit::TestStatistics::buildLikelihood( pdf, data, RooFit::TestStatistics::GlobalObservables({*w.var("alpha_bkg_obs_A"), *w.var("alpha_bkg_obs_B")})); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); @@ -415,7 +396,7 @@ TEST_F(LikelihoodSerialSimBinnedConstrainedTest, ConstrainedAndOffset) auto nll0 = nll->getVal(); - likelihood = RooFit::TestStatistics::buildSimultaneousLikelihood( + likelihood = RooFit::TestStatistics::buildLikelihood( pdf, data, RooFit::TestStatistics::ConstrainedParameters(RooArgSet(*w.var("alpha_bkg_obs_A"))), RooFit::TestStatistics::GlobalObservables(RooArgSet(*w.var("alpha_bkg_obs_B")))); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); From 92fee1657fca4ff12a819015c38e3f7d3e360433 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Tue, 7 Sep 2021 20:41:22 +0200 Subject: [PATCH 062/577] use Math::KahanSum in RooFit::TestStatistics We previously used a set of custom Kahan summation routines, but now switched from those and from a few manual Kahan summation lines of code strewn around to ROOT::Math::KahanSum. In addition, we refactored evaluatePartition and friends to return KahanSum objects instead of returning a single double result value and storing the carry separately in the classes. This simplifies the code, and also made it easier to retain the OffsettingMode::Legacy option, which was built for numerical compatibility with the old test statistics classes. --- roofit/roofitcore/CMakeLists.txt | 2 - .../inc/TestStatistics/LikelihoodSerial.h | 5 +- .../inc/TestStatistics/LikelihoodWrapper.h | 13 ++- .../roofitcore/inc/TestStatistics/RooAbsL.h | 16 ++-- .../inc/TestStatistics/RooBinnedL.h | 12 +-- .../inc/TestStatistics/RooSubsidiaryL.h | 5 +- .../roofitcore/inc/TestStatistics/RooSumL.h | 17 ++-- .../inc/TestStatistics/RooUnbinnedL.h | 13 ++- .../roofitcore/inc/TestStatistics/kahan_sum.h | 88 ------------------- .../src/TestStatistics/LikelihoodSerial.cxx | 5 +- .../src/TestStatistics/LikelihoodWrapper.cxx | 45 ++-------- .../src/TestStatistics/MinuitFcnGrad.cxx | 2 +- .../roofitcore/src/TestStatistics/RooAbsL.cxx | 2 +- .../src/TestStatistics/RooBinnedL.cxx | 37 +++----- .../src/TestStatistics/RooRealL.cxx | 6 +- .../src/TestStatistics/RooSubsidiaryL.cxx | 23 ++--- .../roofitcore/src/TestStatistics/RooSumL.cxx | 65 ++++++-------- .../src/TestStatistics/RooUnbinnedL.cxx | 55 ++++-------- .../src/TestStatistics/kahan_sum.cxx | 31 ------- .../TestStatistics/testLikelihoodSerial.cxx | 11 ++- 20 files changed, 137 insertions(+), 316 deletions(-) delete mode 100644 roofit/roofitcore/inc/TestStatistics/kahan_sum.h delete mode 100644 roofit/roofitcore/src/TestStatistics/kahan_sum.cxx diff --git a/roofit/roofitcore/CMakeLists.txt b/roofit/roofitcore/CMakeLists.txt index d4053e3e8dea6..b61c89b77d5f0 100644 --- a/roofit/roofitcore/CMakeLists.txt +++ b/roofit/roofitcore/CMakeLists.txt @@ -244,7 +244,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore TestStatistics/RooSumL.h TestStatistics/RooRealL.h TestStatistics/RooUnbinnedL.h - TestStatistics/kahan_sum.h TestStatistics/optional_parameter_types.h TestStatistics/buildLikelihood.h SOURCES @@ -476,7 +475,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore src/TestStatistics/RooUnbinnedL.cxx src/TestStatistics/optional_parameter_types.cxx src/TestStatistics/buildLikelihood.cxx - src/TestStatistics/kahan_sum.cxx DICTIONARY_OPTIONS "-writeEmptyRootPCM" LIBRARIES diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h index 05528686b7437..720483e3bfc46 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h @@ -35,11 +35,10 @@ class LikelihoodSerial : public LikelihoodWrapper { void initVars(); void evaluate() override; - inline double getResult() const override { return result; } + inline ROOT::Math::KahanSum getResult() const override { return result; } private: - double result = 0; - double carry = 0; + ROOT::Math::KahanSum result; RooArgList _vars; // Variables RooArgList _saveVars; // Copy of variables diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h index 4dbb3921703e7..45973089485e3 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h +++ b/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h @@ -68,7 +68,7 @@ class LikelihoodWrapper { /// /// Returns the result that was stored after calling evaluate(). It is up to the implementer to make sure the stored /// value represents the most recent evaluation call, e.g. by using a mutex. - virtual double getResult() const = 0; + virtual ROOT::Math::KahanSum getResult() const = 0; /// Synchronize minimizer settings with calculators in child classes virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions & options); @@ -86,8 +86,7 @@ class LikelihoodWrapper { inline virtual bool isOffsetting() const { return do_offset_; } virtual void enableOffsetting(bool flag); void setOffsettingMode(OffsettingMode mode); - inline double offset() const { return offset_; } - inline double offsetCarry() const { return offset_carry_; } + inline ROOT::Math::KahanSum offset() const { return offset_; } void setApplyWeightSquared(bool flag); protected: @@ -95,12 +94,10 @@ class LikelihoodWrapper { std::shared_ptr calculation_is_clean_; bool do_offset_ = false; - double offset_ = 0; - double offset_carry_ = 0; - double offset_save_ = 0; //! - double offset_carry_save_ = 0; //! + ROOT::Math::KahanSum offset_; + ROOT::Math::KahanSum offset_save_ = 0; //! OffsettingMode offsetting_mode_ = OffsettingMode::legacy; - void applyOffsetting(double ¤t_value, double &carry); + ROOT::Math::KahanSum applyOffsetting(ROOT::Math::KahanSum current_value); void swapOffsets(); }; diff --git a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h index 9828277cf4014..68881b6065e48 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooAbsL.h @@ -20,6 +20,8 @@ #include "RooArgSet.h" #include "RooAbsArg.h" // enum ConstOpCode +#include "Math/Util.h" // KahanSum + #include // std::size_t #include #include @@ -90,11 +92,12 @@ class RooAbsL { * * \param[in] events The fractional event range. * \param[in] components_begin The first component to be calculated. - * \param[in] components_end The *exclusive* upper limit to the range of components to be calculated, i.e. the component *before this one* is the last to be included. - * \return The value of part of the negative log likelihood. + * \param[in] components_end The *exclusive* upper limit to the range of components to be calculated, i.e. the + * component *before this one* is the last to be included. \return The value of part of the negative log likelihood, + * returned as a KahanSum object which also includes a carry term. */ - virtual double evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) = 0; - inline double getCarry() const { return eval_carry_; } + virtual ROOT::Math::KahanSum + evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) = 0; // necessary from MinuitFcnGrad to reach likelihood properties: virtual RooArgSet *getParameters(); @@ -112,7 +115,8 @@ class RooAbsL { inline virtual double defaultErrorLevel() const { return 0.5; } // necessary in LikelihoodJob - /// Number of dataset entries. Typically equal to the number of dataset events, except in RooSubsidiaryL, which has no events. + /// Number of dataset entries. Typically equal to the number of dataset events, except in RooSubsidiaryL, which has + /// no events. virtual std::size_t numDataEntries() const; inline std::size_t getNEvents() const { return N_events_; } inline std::size_t getNComponents() const { return N_components_; } @@ -136,8 +140,6 @@ class RooAbsL { bool extended_ = false; std::size_t sim_count_ = 1; // Total number of component p.d.f.s in RooSimultaneous (if any) - - mutable double eval_carry_ = 0; //! carry of Kahan sum in evaluatePartition }; } // namespace TestStatistics diff --git a/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h index fa12d38fd8532..2a72a5cccfe89 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h @@ -28,14 +28,14 @@ class RooAbsData; namespace RooFit { namespace TestStatistics { -class RooBinnedL : - public RooAbsL { +class RooBinnedL : public RooAbsL { public: - RooBinnedL(RooAbsPdf* pdf, RooAbsData* data); - double evaluatePartition(Section bins, std::size_t components_begin, - std::size_t components_end) override; + RooBinnedL(RooAbsPdf *pdf, RooAbsData *data); + ROOT::Math::KahanSum + evaluatePartition(Section bins, std::size_t components_begin, std::size_t components_end) override; + private: - mutable bool _first = true; //! + mutable bool _first = true; //! mutable std::vector _binw; //! }; diff --git a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h index 99a2ebcd307fe..d5a454df78319 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h @@ -21,6 +21,8 @@ #include "RooArgList.h" #include "RooArgSet.h" +#include "Math/Util.h" // KahanSum + namespace RooFit { namespace TestStatistics { @@ -28,7 +30,8 @@ class RooSubsidiaryL : public RooAbsL { public: RooSubsidiaryL(const std::string &parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set); - double evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; + ROOT::Math::KahanSum + evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; inline RooArgSet *getParameters() override { return ¶meter_set_; } inline std::string GetName() const override { return std::string("subsidiary_pdf_of_") + parent_pdf_name_; } diff --git a/roofit/roofitcore/inc/TestStatistics/RooSumL.h b/roofit/roofitcore/inc/TestStatistics/RooSumL.h index 3509f215fd03a..d8b30389f4700 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSumL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooSumL.h @@ -20,6 +20,8 @@ #include "TestStatistics/RooAbsL.h" #include "TestStatistics/optional_parameter_types.h" +#include "Math/Util.h" // KahanSum + #include namespace RooFit { @@ -27,15 +29,16 @@ namespace TestStatistics { class RooSumL : public RooAbsL { public: - RooSumL(RooAbsPdf* pdf, RooAbsData* data, std::vector> components, + RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, RooAbsL::Extended extended = RooAbsL::Extended::Auto); - // Note: when above ctor is called without std::moving components, you get a really obscure error. Pass as std::move(components)! + // Note: when above ctor is called without std::moving components, you get a really obscure error. Pass as + // std::move(components)! - double evaluatePartition(Section events, std::size_t components_begin, - std::size_t components_end) override; + ROOT::Math::KahanSum + evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; // necessary only for legacy offsetting mode in LikelihoodWrapper; TODO: remove this if legacy mode is ever removed - std::tuple getSubsidiaryValue(); + ROOT::Math::KahanSum getSubsidiaryValue(); void constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) override; @@ -43,7 +46,7 @@ class RooSumL : public RooAbsL { std::vector> components_; }; -} -} +} // namespace TestStatistics +} // namespace RooFit #endif // ROOT_ROOFIT_TESTSTATISTICS_RooSumL diff --git a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h index 93932f75f7c62..89e29e9bf3551 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h @@ -27,19 +27,18 @@ class RooArgSet; namespace RooFit { namespace TestStatistics { -class RooUnbinnedL : - public RooAbsL { +class RooUnbinnedL : public RooAbsL { public: - RooUnbinnedL(RooAbsPdf* pdf, RooAbsData* data, RooAbsL::Extended extended = RooAbsL::Extended::Auto); + RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto); RooUnbinnedL(const RooUnbinnedL &other); bool setApplyWeightSquared(bool flag); - double evaluatePartition(Section events, std::size_t components_begin, - std::size_t components_end) override; + ROOT::Math::KahanSum + evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; private: - bool apply_weight_squared = false; // Apply weights squared? - mutable bool _first = true; //! + bool apply_weight_squared = false; // Apply weights squared? + mutable bool _first = true; //! }; } // namespace TestStatistics diff --git a/roofit/roofitcore/inc/TestStatistics/kahan_sum.h b/roofit/roofitcore/inc/TestStatistics/kahan_sum.h deleted file mode 100644 index 78a558a50571b..0000000000000 --- a/roofit/roofitcore/inc/TestStatistics/kahan_sum.h +++ /dev/null @@ -1,88 +0,0 @@ -// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 - -/***************************************************************************** - * RooFit - * Authors: * - * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * - * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * - * * - * Copyright (c) 2000-2021, Regents of the University of California * - * and Stanford University. All rights reserved. * - * * - * Redistribution and use in source and binary forms, * - * with or without modification, are permitted according to the terms * - * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * - *****************************************************************************/ - -// --- kahan summation templates --- - -#ifndef ROOT_ROOFIT_kahan_sum -#define ROOT_ROOFIT_kahan_sum - -#include - -namespace RooFit { - -template -typename C::value_type sum_kahan(const C& container) { - using ValueType = typename C::value_type; - ValueType sum = 0, carry = 0; - for (auto element : container) { - ValueType y = element - carry; - ValueType t = sum + y; - carry = (t - sum) - y; - sum = t; - } - return sum; -} - -template -ValueType sum_kahan(const std::map& map) { - ValueType sum = 0, carry = 0; - for (auto const& element : map) { - ValueType y = element.second - carry; - ValueType t = sum + y; - carry = (t - sum) - y; - sum = t; - } - return sum; -} - -template -std::pair sum_of_kahan_sums(const C& sum_values, const C& sum_carrys) { - using ValueType = typename C::value_type; - ValueType sum = 0, carry = 0; - for (std::size_t ix = 0; ix < sum_values.size(); ++ix) { - ValueType y = sum_values[ix]; - carry += sum_carrys[ix]; - y -= carry; - const ValueType t = sum + y; - carry = (t - sum) - y; - sum = t; - } - return std::pair(sum, carry); -} - - -template -std::pair sum_of_kahan_sums(const std::map& sum_values, const std::map& sum_carrys) { - ValueType sum = 0, carry = 0; - assert(sum_values.size() == sum_carrys.size()); - auto it_values = sum_values.cbegin(); - auto it_carrys = sum_carrys.cbegin(); - for (; it_values != sum_values.cend(); ++it_values, ++it_carrys) { - ValueType y = it_values->second; - carry += it_carrys->second; - y -= carry; - const ValueType t = sum + y; - carry = (t - sum) - y; - sum = t; - } - return std::pair(sum, carry); -} - -std::tuple kahan_add(double sum, double additive, double carry); - -} - -#endif // ROOT_ROOFIT_kahan_sum diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx index 6939b1c62946e..971338139958c 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx @@ -16,7 +16,6 @@ #include -#include #include #include #include @@ -86,12 +85,10 @@ void LikelihoodSerial::evaluate() { case LikelihoodType::unbinned: case LikelihoodType::binned: { result = likelihood_->evaluatePartition({0, 1}, 0, 0); - carry = likelihood_->getCarry(); break; } case LikelihoodType::sum: { result = likelihood_->evaluatePartition({0, 1}, 0, likelihood_->getNComponents()); - carry = likelihood_->getCarry(); break; } default: { @@ -100,7 +97,7 @@ void LikelihoodSerial::evaluate() { } } - applyOffsetting(result, carry); + result = applyOffsetting(result); } } // namespace TestStatistics diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx index cc956e6753ffb..4370839099ad4 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx @@ -82,8 +82,7 @@ void LikelihoodWrapper::enableOffsetting(bool flag) do_offset_ = flag; // Clear offset if feature is disabled so that it is recalculated next time it is enabled if (!do_offset_) { - offset_ = 0; - offset_carry_ = 0; + offset_ = {}; } } @@ -92,34 +91,25 @@ void LikelihoodWrapper::setOffsettingMode(OffsettingMode mode) offsetting_mode_ = mode; if (isOffsetting()) { oocoutI(static_cast(nullptr), Minimization) << "LikelihoodWrapper::setOffsettingMode(" << GetName() << "): changed offsetting mode while offsetting was enabled; resetting offset values" << std::endl; - offset_ = 0; - offset_carry_ = 0; + offset_ = {}; } } -void LikelihoodWrapper::applyOffsetting(double ¤t_value, double &carry) +ROOT::Math::KahanSum LikelihoodWrapper::applyOffsetting(ROOT::Math::KahanSum current_value) { if (do_offset_) { // If no offset is stored enable this feature now if (offset_ == 0 && current_value != 0) { offset_ = current_value; - offset_carry_ = carry; if (offsetting_mode_ == OffsettingMode::legacy) { auto sum_likelihood = dynamic_cast(likelihood_.get()); if (sum_likelihood != nullptr) { - double subsidiary_value, subsidiary_carry; - std::tie(subsidiary_value, subsidiary_carry) = sum_likelihood->getSubsidiaryValue(); + auto subsidiary_value = sum_likelihood->getSubsidiaryValue(); // "undo" the addition of the subsidiary value to emulate legacy behavior offset_ -= subsidiary_value; - offset_carry_ -= subsidiary_carry; - // then add 0 in Kahan summation way to make sure the carry gets taken up into the value if it should be - double y = 0 - offset_carry_; - double t = offset_ + y; - offset_carry_ = (t - offset_) - y; - offset_ = t; - // also set carry to this value, again to emulate legacy behavior - carry = offset_carry_; + // manually calculate result with zero carry, again to emulate legacy behavior + return {current_value.Result() - offset_.Result()}; } } oocoutI(static_cast(nullptr), Minimization) @@ -127,25 +117,9 @@ void LikelihoodWrapper::applyOffsetting(double ¤t_value, double &carry) << std::endl; } - // Subtract offset - // old method: -// { -// double y = -offset_ - (carry + offset_carry_); -// double t = current_value + y; -// carry = (t - current_value) - y; -// current_value = t; -// } - // TODO: make sure this change in methods (after replacing below by KahanSum object) doesn't affect results - // KahanSum method: - { - double new_value = current_value - offset_; - double new_carry = carry - offset_carry_; - // then add 0 in Kahan summation way to make sure the carry gets taken up into the value if it should be - double y = 0 - new_carry; - double t = new_value + y; - carry = (t - new_value) - y; - current_value = t; - } + return current_value - offset_; + } else { + return current_value; } } @@ -155,7 +129,6 @@ void LikelihoodWrapper::applyOffsetting(double ¤t_value, double &carry) void LikelihoodWrapper::swapOffsets() { std::swap(offset_, offset_save_); - std::swap(offset_carry_, offset_carry_save_); } void LikelihoodWrapper::setApplyWeightSquared(bool flag) diff --git a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx index 14bad33109648..46a9e68a3b2b5 100644 --- a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx +++ b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx @@ -47,7 +47,7 @@ double MinuitFcnGrad::DoEval(const double *x) const // Calculate the function for these parameters // RooAbsReal::setHideOffset(kFALSE); likelihood->evaluate(); - double fvalue = likelihood->getResult(); + double fvalue = likelihood->getResult().Sum(); calculation_is_clean->likelihood = true; // RooAbsReal::setHideOffset(kTRUE); diff --git a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx index 3707aaf10e8a5..831335013b675 100644 --- a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx @@ -100,7 +100,7 @@ RooAbsL::RooAbsL(RooAbsPdf *inpdf, RooAbsData *indata, std::size_t N_events, std RooAbsL::RooAbsL(const RooAbsL &other) - : pdf_(other.pdf_), data_(other.data_), N_events_(other.N_events_), N_components_(other.N_components_), extended_(other.extended_), sim_count_(other.sim_count_), eval_carry_(other.eval_carry_) + : pdf_(other.pdf_), data_(other.data_), N_events_(other.N_events_), N_components_(other.N_components_), extended_(other.extended_), sim_count_(other.sim_count_) { // it can never be one, since we just copied the shared_ptr; if it is, something really weird is going on; also they must be equal (usually either zero or two) assert((pdf_.use_count() != 1) && (data_.use_count() != 1) && (pdf_.use_count() == data_.use_count())); diff --git a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx index 2751f8596f0de..b8f18bdc23c29 100644 --- a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx @@ -37,12 +37,13 @@ In extended mode, a #include "RooRealVar.h" #include "TMath.h" +#include "Math/Util.h" // KahanSum namespace RooFit { namespace TestStatistics { -RooBinnedL::RooBinnedL(RooAbsPdf* pdf, RooAbsData* data) : - RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1) +RooBinnedL::RooBinnedL(RooAbsPdf *pdf, RooAbsData *data) + : RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1) { // pdf must be a RooRealSumPdf representing a yield vector for a binned likelihood calculation if (!dynamic_cast(pdf)) { @@ -56,7 +57,8 @@ RooBinnedL::RooBinnedL(RooAbsPdf* pdf, RooAbsData* data) : RooArgSet *obs = pdf->getObservables(data); if (obs->getSize() != 1) { - throw std::logic_error("RooBinnedL can only be created from combination of pdf and data which has exactly one observable!"); + throw std::logic_error( + "RooBinnedL can only be created from combination of pdf and data which has exactly one observable!"); } else { RooRealVar *var = (RooRealVar *)obs->first(); std::list *boundaries = pdf->binBoundaries(*var, var->getMin(), var->getMax()); @@ -80,20 +82,20 @@ RooBinnedL::RooBinnedL(RooAbsPdf* pdf, RooAbsData* data) : /// and the zero event is processed the extended term is added to the return /// likelihood. // -double RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begin*/, - std::size_t /*components_end*/) +ROOT::Math::KahanSum +RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begin*/, std::size_t /*components_end*/) { // Throughout the calculation, we use Kahan's algorithm for summing to // prevent loss of precision - this is a factor four more expensive than // straight addition, but since evaluating the PDF is usually much more // expensive than that, we tolerate the additional cost... - Double_t result(0), carry(0); + ROOT::Math::KahanSum result; // data->store()->recalculateCache(_projDeps, firstEvent, lastEvent, stepSize, (_binnedPdf?kFALSE:kTRUE)); // TODO: check when we might need _projDeps (it seems to be mostly empty); ties in with TODO below data_->store()->recalculateCache(nullptr, bins.begin(N_events_), bins.end(N_events_), 1, kFALSE); - Double_t sumWeight(0), sumWeightCarry(0); + ROOT::Math::KahanSum sumWeight; for (std::size_t i = bins.begin(N_events_); i < bins.end(N_events_); ++i) { @@ -125,28 +127,15 @@ double RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begi Double_t term = -1 * (-mu + N * log(mu) - TMath::LnGamma(N + 1)); - // Kahan summation of sumWeight - Double_t y = eventWeight - sumWeightCarry; - Double_t t = sumWeight + y; - sumWeightCarry = (t - sumWeight) - y; - sumWeight = t; - - // Kahan summation of result - y = term - carry; - t = result + y; - carry = (t - result) - y; - result = t; + sumWeight += eventWeight; + result += term; } } - // If part of simultaneous PDF normalize probability over // number of simultaneous PDFs: -sum(log(p/n)) = -sum(log(p)) + N*log(n) if (sim_count_ > 1) { - Double_t y = sumWeight * log(1.0 * sim_count_) - carry; - Double_t t = result + y; - carry = (t - result) - y; - result = t; + result += sumWeight * log(1.0 * sim_count_); } // At the end of the first full calculation, wire the caches @@ -155,10 +144,8 @@ double RooBinnedL::evaluatePartition(Section bins, std::size_t /*components_begi pdf_->wireAllCaches(); } - eval_carry_ = carry; return result; } - } // namespace TestStatistics } // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx index 1f18acbcac436..6afdfedd7293f 100644 --- a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx @@ -48,11 +48,11 @@ Double_t RooRealL::evaluate() const // Evaluate as straight FUNC std::size_t last_component = likelihood_->getNComponents(); - Double_t ret = likelihood_->evaluatePartition({0, 1}, 0, last_component); + auto ret_kahan = likelihood_->evaluatePartition({0, 1}, 0, last_component); const Double_t norm = globalNormalization(); - ret /= norm; - eval_carry = likelihood_->getCarry() / norm; + double ret = ret_kahan.Sum() / norm; + eval_carry = ret_kahan.Carry() / norm; return ret; } diff --git a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx index a84abe8da7e8e..a4e78e1f78731 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx @@ -19,7 +19,8 @@ \class RooSubsidiaryL \ingroup Roofitcore -\brief RooSubsidiaryL calculates the sum of the -(log) likelihoods of a set of RooAbsPdf objects that represent subsidiary or constraint functions. +\brief RooSubsidiaryL calculates the sum of the -(log) likelihoods of a set of RooAbsPdf objects that represent +subsidiary or constraint functions. This class is used to gather all subsidiary PDF terms from the component PDFs of RooSumL likelihoods and calculate the composite -log(L). Such subsidiary terms can be marked using RooFit::Constrain arguments to RooAbsPdf::fitTo() or @@ -35,14 +36,16 @@ value of the (log-)likelihood itself. **/ #include -#include #include // for dynamic cast #include +#include "Math/Util.h" // KahanSum + namespace RooFit { namespace TestStatistics { -RooSubsidiaryL::RooSubsidiaryL(const std::string& parent_pdf_name, const RooArgSet &pdfs, const RooArgSet ¶meter_set) +RooSubsidiaryL::RooSubsidiaryL(const std::string &parent_pdf_name, const RooArgSet &pdfs, + const RooArgSet ¶meter_set) : RooAbsL(nullptr, nullptr, 0, 0, RooAbsL::Extended::No), parent_pdf_name_(parent_pdf_name) { for (const auto comp : pdfs) { @@ -56,8 +59,9 @@ RooSubsidiaryL::RooSubsidiaryL(const std::string& parent_pdf_name, const RooArgS parameter_set_.add(parameter_set); } -double -RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, std::size_t /*components_begin*/, std::size_t /*components_end*/) +ROOT::Math::KahanSum RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, + std::size_t /*components_begin*/, + std::size_t /*components_end*/) { if (events.begin_fraction != 0 || events.end_fraction != 1) { oocoutW((TObject *)0, InputArguments) << "RooSubsidiaryL::evaluatePartition can only calculate everything, so " @@ -65,19 +69,16 @@ RooSubsidiaryL::evaluatePartition(RooAbsL::Section events, std::size_t /*compone << std::endl; } - double sum = 0, carry = 0; + ROOT::Math::KahanSum sum; for (const auto comp : subsidiary_pdfs_) { - double term = -((RooAbsPdf *)comp)->getLogVal(¶meter_set_); - std::tie(sum, carry) = kahan_add(sum, term, carry); + sum += -((RooAbsPdf *)comp)->getLogVal(¶meter_set_); } - eval_carry_ = carry; return sum; } -void RooSubsidiaryL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode /*opcode*/, bool /*doAlsoTrackingOpt*/) { -} +void RooSubsidiaryL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode /*opcode*/, bool /*doAlsoTrackingOpt*/) {} } // namespace TestStatistics } // namespace RooFit diff --git a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx index 2f8b47fa85e82..698559aca9932 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx @@ -36,23 +36,24 @@ namespace TestStatistics { /// \param[in] pdf Raw pointer to the pdf; will not be cloned in this object. /// \param[in] data Raw pointer to the dataset; will not be cloned in this object. /// \param[in] components The component likelihoods. -/// \param extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the pdf whether to activate or not. -/// \warning components must be passed with std::move, otherwise it cannot be moved into the RooSumL because of the unique_ptr! -/// \note The number of events in RooSumL is that of the full dataset. Components will have their own number of events that may be more relevant. -RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, RooAbsL::Extended extended) - : RooAbsL(pdf, data, - data->numEntries(), - components.size(), extended), components_(std::move(components)) -{} +/// \param extended Set extended term calculation on, off or use Extended::Auto to determine automatically based on the +/// pdf whether to activate or not. \warning components must be passed with std::move, otherwise it cannot be moved into +/// the RooSumL because of the unique_ptr! \note The number of events in RooSumL is that of the full dataset. Components +/// will have their own number of events that may be more relevant. +RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> components, + RooAbsL::Extended extended) + : RooAbsL(pdf, data, data->numEntries(), components.size(), extended), components_(std::move(components)) +{ +} // Developer note on the std::move() warning above: // -// The point here was that you don't want to clone RooAbsL's too much, because they contain clones of the pdf and dataset -// that may have been mangled for optimization. You probably don't want to be doing that all the time, although it is a -// premature optimization, since we haven't timed its impact. That is the motivation behind using unique_ptrs for the -// components. The way the classes are built, the RooSumL doesn't care about what components it gets, so by definition it -// cannot create them internally, so they have to be passed in somehow. Forcing the user to call the function with a -// std::move is a way to make them fully realize that their local components will be destroyed and the contents moved -// into the RooSumL. +// The point here was that you don't want to clone RooAbsL's too much, because they contain clones of the pdf and +// dataset that may have been mangled for optimization. You probably don't want to be doing that all the time, although +// it is a premature optimization, since we haven't timed its impact. That is the motivation behind using unique_ptrs +// for the components. The way the classes are built, the RooSumL doesn't care about what components it gets, so by +// definition it cannot create them internally, so they have to be passed in somehow. Forcing the user to call the +// function with a std::move is a way to make them fully realize that their local components will be destroyed and the +// contents moved into the RooSumL. // // We could change the type to an rvalue reference to make it clearer from the compiler error that std::move is // necessary, instead of the obscure error that you get now. Compare the compiler error messages from these two types: @@ -61,7 +62,7 @@ RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector //#include // -//struct Clear { +// struct Clear { // Clear(std::vector>&& vec) : vec_(std::move(vec)) { // printf("number is %d", *vec_[0]); // } @@ -69,7 +70,7 @@ RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> vec_; //}; // -//struct Obscure { +// struct Obscure { // Obscure(std::vector> vec) : vec_(std::move(vec)) { // printf("number is %d", *vec_[0]); // } @@ -77,53 +78,45 @@ RooSumL::RooSumL(RooAbsPdf *pdf, RooAbsData *data, std::vector> vec_; //}; // -//int main() { +// int main() { // std::vector> vec; // vec.emplace_back(new int(4)); // Clear thing(vec); // Obscure thingy(vec); //} - /// \note Compared to the RooAbsTestStatistic implementation that this was taken from, we leave out Hybrid and /// SimComponents interleaving support here. This should be implemented by a calculator (i.e. LikelihoodWrapper or /// LikelihoodGradientWrapper derived class), if desired. -double RooSumL::evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) +ROOT::Math::KahanSum +RooSumL::evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) { // Evaluate specified range of owned GOF objects - double ret = 0; + ROOT::Math::KahanSum ret; // from RooAbsOptTestStatistic::combinedValue (which is virtual, so could be different for non-RooNLLVar!): - eval_carry_ = 0; for (std::size_t ix = components_begin; ix < components_end; ++ix) { - double y = components_[ix]->evaluatePartition(events, 0, 0); - - eval_carry_ += components_[ix]->getCarry(); - y -= eval_carry_; - double t = ret + y; - eval_carry_ = (t - ret) - y; - ret = t; + ret += components_[ix]->evaluatePartition(events, 0, 0); } return ret; } /// \note This function assumes there is only one subsidiary component. -std::tuple RooSumL::getSubsidiaryValue() +ROOT::Math::KahanSum RooSumL::getSubsidiaryValue() { // iterate in reverse, because the subsidiary component is usually at the end: for (auto component = components_.rbegin(); component != components_.rend(); ++component) { if (dynamic_cast((*component).get()) != nullptr) { - double value = (*component)->evaluatePartition({0, 1}, 0, 0); - double carry = (*component)->getCarry(); - return {value, carry}; + return (*component)->evaluatePartition({0, 1}, 0, 0); } } - return {0, 0}; + return {}; } -void RooSumL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) { - for (auto& component : components_) { +void RooSumL::constOptimizeTestStatistic(RooAbsArg::ConstOpCode opcode, bool doAlsoTrackingOpt) +{ + for (auto &component : components_) { component->constOptimizeTestStatistic(opcode, doAlsoTrackingOpt); } } diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx index 818779a4f8141..00cc2df26139f 100644 --- a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -34,17 +34,20 @@ In extended mode, a #include "RooAbsPdf.h" #include "RooAbsDataStore.h" +#include "Math/Util.h" // KahanSum + namespace RooFit { namespace TestStatistics { -RooUnbinnedL::RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, - RooAbsL::Extended extended) +RooUnbinnedL::RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended) : RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1, extended) -{} +{ +} RooUnbinnedL::RooUnbinnedL(const RooUnbinnedL &other) : RooAbsL(other), apply_weight_squared(other.apply_weight_squared), _first(other._first) -{} +{ +} ////////////////////////////////////////////////////////////////////////////////// @@ -65,18 +68,18 @@ bool RooUnbinnedL::setApplyWeightSquared(bool flag) /// and the zero event is processed the extended term is added to the return /// likelihood. /// -double RooUnbinnedL::evaluatePartition(Section events, - std::size_t /*components_begin*/, std::size_t /*components_end*/) +ROOT::Math::KahanSum +RooUnbinnedL::evaluatePartition(Section events, std::size_t /*components_begin*/, std::size_t /*components_end*/) { // Throughout the calculation, we use Kahan's algorithm for summing to // prevent loss of precision - this is a factor four more expensive than // straight addition, but since evaluating the PDF is usually much more // expensive than that, we tolerate the additional cost... - Double_t result(0), carry(0); + ROOT::Math::KahanSum result; data_->store()->recalculateCache(nullptr, events.begin(N_events_), events.end(N_events_), 1, kTRUE); - Double_t sumWeight(0), sumWeightCarry(0); + ROOT::Math::KahanSum sumWeight; for (std::size_t i = events.begin(N_events_); i < events.end(N_events_); ++i) { data_->get(i); @@ -94,15 +97,8 @@ double RooUnbinnedL::evaluatePartition(Section events, Double_t term = -eventWeight * pdf_->getLogVal(normSet_.get()); - Double_t y = eventWeight - sumWeightCarry; - Double_t t = sumWeight + y; - sumWeightCarry = (t - sumWeight) - y; - sumWeight = t; - - y = term - carry; - t = result + y; - carry = (t - result) - y; - result = t; + sumWeight += eventWeight; + result += term; } // include the extended maximum likelihood term, if requested @@ -110,13 +106,11 @@ double RooUnbinnedL::evaluatePartition(Section events, if (apply_weight_squared) { // Calculate sum of weights-squared here for extended term - Double_t sumW2(0), sumW2carry(0); + ROOT::Math::KahanSum sumW2; + for (Int_t i = 0; i < data_->numEntries(); i++) { data_->get(i); - Double_t y = data_->weightSquared() - sumW2carry; - Double_t t = sumW2 + y; - sumW2carry = (t - sumW2) - y; - sumW2 = t; + sumW2 += data_->weightSquared(); } Double_t expected = pdf_->expectedEvents(data_->get()); @@ -141,26 +135,16 @@ double RooUnbinnedL::evaluatePartition(Section events, // Double_t y = pdf->extendedTerm(sumW2, data->get()) - carry; - Double_t y = extra - carry; - - Double_t t = result + y; - carry = (t - result) - y; - result = t; + result += extra; } else { - Double_t y = pdf_->extendedTerm(data_->sumEntries(), data_->get()) - carry; - Double_t t = result + y; - carry = (t - result) - y; - result = t; + result += pdf_->extendedTerm(data_->sumEntries(), data_->get()); } } // If part of simultaneous PDF normalize probability over // number of simultaneous PDFs: -sum(log(p/n)) = -sum(log(p)) + N*log(n) if (sim_count_ > 1) { - Double_t y = sumWeight * log(1.0 * sim_count_) - carry; - Double_t t = result + y; - carry = (t - result) - y; - result = t; + result += sumWeight * log(1.0 * sim_count_); } // At the end of the first full calculation, wire the caches @@ -169,7 +153,6 @@ double RooUnbinnedL::evaluatePartition(Section events, pdf_->wireAllCaches(); } - eval_carry_ = carry; return result; } diff --git a/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx b/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx deleted file mode 100644 index 6a233f6e18a06..0000000000000 --- a/roofit/roofitcore/src/TestStatistics/kahan_sum.cxx +++ /dev/null @@ -1,31 +0,0 @@ -// Author: Patrick Bos, Netherlands eScience Center / NIKHEF 2021 - -/***************************************************************************** - * RooFit - * Authors: * - * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * - * DK, David Kirkby, UC Irvine, dkirkby@uci.edu * - * * - * Copyright (c) 2000-2021, Regents of the University of California * - * and Stanford University. All rights reserved. * - * * - * Redistribution and use in source and binary forms, * - * with or without modification, are permitted according to the terms * - * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * - *****************************************************************************/ - -#include - -namespace RooFit { - -std::tuple kahan_add(double sum, double additive, double carry) -{ - double y = additive - carry; - double t = sum + y; - carry = (t - sum) - y; - sum = t; - - return {sum, carry}; -} - -} \ No newline at end of file diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index 40296cbbcb7b3..641410793a527 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -28,7 +28,8 @@ #include #include #include -#include + +#include "Math/Util.h" // KahanSum #include // runtime_error @@ -403,8 +404,12 @@ TEST_F(LikelihoodSerialSimBinnedConstrainedTest, ConstrainedAndOffset) nll_ts.enableOffsetting(true); nll_ts.evaluate(); - double nll1, carry1; - std::tie(nll1, carry1) = RooFit::kahan_add(nll_ts.getResult(), nll_ts.offset(), nll_ts.offsetCarry() + likelihood->getCarry()); + // The RooFit::TestStatistics classes used for minimization (RooAbsL and Wrapper derivatives) will return offset + // values, whereas RooNLLVar::getVal will always return the non-offset value, since that is the "actual" likelihood + // value. RooRealL will also give the non-offset value, so that can be directly compared to the RooNLLVar::getVal + // result (the nll0 vs nll2 comparison below). To compare to the raw RooAbsL/Wrapper value nll1, however, we need to + // manually add the offset. + ROOT::Math::KahanSum nll1 = nll_ts.getResult() + nll_ts.offset(); EXPECT_DOUBLE_EQ(nll0, nll1); EXPECT_FALSE(nll_ts.offset() == 0); From f0e52580ba3ece65bdca853df04a1e581c312003 Mon Sep 17 00:00:00 2001 From: "E. G. Patrick Bos" Date: Wed, 8 Sep 2021 14:41:53 +0200 Subject: [PATCH 063/577] unify unbinned likelihood calculation in RooNLLVar and RooUnbinnedL RooUnbinnedL contained an old version of the "scalar" calculation method from RooNLLVar. This code switches RooUnbinnedL to instead use the scalar compuation method from RooNLLVar by default. To do this, the computation was factored out into a static member function inside RooNLLVar, so that RooUnbinnedL can reach it too and we avoid code duplication. In addition, RooUnbinnedL can now also be set into batch-evaluation mode. This too uses the existing batch calculation methods inside RooNLLVar, which also was factored out into a static member function. testLikelihoodSerial also contains a test that covers the batch mode now. Based on code review by @hageboeck in PR #8700. --- roofit/roofitcore/inc/RooNLLVar.h | 8 +++ .../inc/TestStatistics/RooUnbinnedL.h | 13 +++- roofit/roofitcore/src/RooNLLVar.cxx | 55 +++++++++------ .../src/TestStatistics/RooUnbinnedL.cxx | 67 +++++++++++-------- .../src/TestStatistics/buildLikelihood.cxx | 1 + .../test/TestStatistics/RooRealL.cpp | 1 + .../TestStatistics/testLikelihoodSerial.cxx | 21 +++++- roofit/roofitcore/test/test_lib.h | 4 +- 8 files changed, 116 insertions(+), 54 deletions(-) diff --git a/roofit/roofitcore/inc/RooNLLVar.h b/roofit/roofitcore/inc/RooNLLVar.h index daecdc9b4a8df..78019a9066a40 100644 --- a/roofit/roofitcore/inc/RooNLLVar.h +++ b/roofit/roofitcore/inc/RooNLLVar.h @@ -62,6 +62,14 @@ class RooNLLVar : public RooAbsOptTestStatistic { using ComputeResult = std::pair, double>; + static RooNLLVar::ComputeResult computeBatchedFunc(const RooAbsPdf *pdfClone, RooAbsData *dataClone, + std::unique_ptr &evalData, + RooArgSet *normSet, bool weightSq, std::size_t stepSize, + std::size_t firstEvent, std::size_t lastEvent); + static RooNLLVar::ComputeResult computeScalarFunc(const RooAbsPdf *pdfClone, RooAbsData *dataClone, RooArgSet *normSet, + bool weightSq, std::size_t stepSize, std::size_t firstEvent, + std::size_t lastEvent); + protected: virtual Bool_t processEmptyDataSets() const { return _extended ; } diff --git a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h index 89e29e9bf3551..ae8cabfa9c550 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h +++ b/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h @@ -23,22 +23,29 @@ class RooAbsPdf; class RooAbsData; class RooArgSet; +namespace RooBatchCompute { +struct RunContext; +} namespace RooFit { namespace TestStatistics { class RooUnbinnedL : public RooAbsL { public: - RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto); + RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended = RooAbsL::Extended::Auto, + bool useBatchedEvaluations = false); RooUnbinnedL(const RooUnbinnedL &other); bool setApplyWeightSquared(bool flag); ROOT::Math::KahanSum evaluatePartition(Section events, std::size_t components_begin, std::size_t components_end) override; + void setUseBatchedEvaluations(bool flag); private: - bool apply_weight_squared = false; // Apply weights squared? - mutable bool _first = true; //! + bool apply_weight_squared = false; // Apply weights squared? + mutable bool _first = true; //! + bool useBatchedEvaluations_ = false; + mutable std::unique_ptr evalData_; //! Struct to store function evaluation workspaces. }; } // namespace TestStatistics diff --git a/roofit/roofitcore/src/RooNLLVar.cxx b/roofit/roofitcore/src/RooNLLVar.cxx index 540647bb463c2..92d73bc54858f 100644 --- a/roofit/roofitcore/src/RooNLLVar.cxx +++ b/roofit/roofitcore/src/RooNLLVar.cxx @@ -459,6 +459,16 @@ Double_t RooNLLVar::evaluatePartition(std::size_t firstEvent, std::size_t lastEv /// \param[in] lastEvent First event not to be processed. /// \return Tuple with (Kahan sum of probabilities, carry of kahan sum, sum of weights) RooNLLVar::ComputeResult RooNLLVar::computeBatched(std::size_t stepSize, std::size_t firstEvent, std::size_t lastEvent) const +{ + auto pdfClone = static_cast(_funcClone); + return computeBatchedFunc(pdfClone, _dataClone, _evalData, _normSet, _weightSq, stepSize, firstEvent, lastEvent); +} + +// static function, also used from TestStatistics::RooUnbinnedL +RooNLLVar::ComputeResult RooNLLVar::computeBatchedFunc(const RooAbsPdf *pdfClone, RooAbsData *dataClone, + std::unique_ptr &evalData, + RooArgSet *normSet, bool weightSq, std::size_t stepSize, + std::size_t firstEvent, std::size_t lastEvent) { const auto nEvents = lastEvent - firstEvent; @@ -466,37 +476,35 @@ RooNLLVar::ComputeResult RooNLLVar::computeBatched(std::size_t stepSize, std::si throw std::invalid_argument(std::string("Error in ") + __FILE__ + ": Step size for batch computations can only be 1."); } - auto pdfClone = static_cast(_funcClone); - // Create a RunContext that will own the memory where computation results are stored. // Holding on to this struct in between function calls will make sure that the memory // is only allocated once. - if (!_evalData) { - _evalData.reset(new RooBatchCompute::RunContext); + if (!evalData) { + evalData.reset(new RooBatchCompute::RunContext); } - _evalData->clear(); - _dataClone->getBatches(*_evalData, firstEvent, nEvents); + evalData->clear(); + dataClone->getBatches(*evalData, firstEvent, nEvents); - auto results = pdfClone->getLogProbabilities(*_evalData, _normSet); + auto results = pdfClone->getLogProbabilities(*evalData, normSet); #ifdef ROOFIT_CHECK_CACHED_VALUES for (std::size_t evtNo = firstEvent; evtNo < std::min(lastEvent, firstEvent + 10); ++evtNo) { - _dataClone->get(evtNo); - if (_dataClone->weight() == 0.) // 0-weight events are not cached, so cannot compare against them. + dataClone->get(evtNo); + if (dataClone->weight() == 0.) // 0-weight events are not cached, so cannot compare against them. continue; - assert(_dataClone->valid()); + assert(dataClone->valid()); try { // Cross check results with strict tolerance and complain - BatchInterfaceAccessor::checkBatchComputation(*pdfClone, *_evalData, evtNo-firstEvent, _normSet, 1.E-13); + BatchInterfaceAccessor::checkBatchComputation(*pdfClone, *evalData, evtNo-firstEvent, normSet, 1.E-13); } catch (std::exception& e) { std::cerr << __FILE__ << ":" << __LINE__ << " ERROR when checking batch computation for event " << evtNo << ":\n" << e.what() << std::endl; // It becomes a real problem if it's very wrong. We fail in this case: try { - BatchInterfaceAccessor::checkBatchComputation(*pdfClone, *_evalData, evtNo-firstEvent, _normSet, 1.E-9); + BatchInterfaceAccessor::checkBatchComputation(*pdfClone, *evalData, evtNo-firstEvent, normSet, 1.E-9); } catch (std::exception& e2) { assert(false); } @@ -507,9 +515,9 @@ RooNLLVar::ComputeResult RooNLLVar::computeBatched(std::size_t stepSize, std::si // Compute sum of event weights. First check if we need squared weights - const RooSpan eventWeights = _dataClone->getWeightBatch(firstEvent, nEvents); + const RooSpan eventWeights = dataClone->getWeightBatch(firstEvent, nEvents); //Capture member for lambda: - const bool retrieveSquaredWeights = _weightSq; + const bool retrieveSquaredWeights = weightSq; auto retrieveWeight = [&eventWeights, retrieveSquaredWeights](std::size_t i) { return retrieveSquaredWeights ? eventWeights[i] * eventWeights[i] : eventWeights[i]; }; @@ -519,7 +527,7 @@ RooNLLVar::ComputeResult RooNLLVar::computeBatched(std::size_t stepSize, std::si double uniformSingleEventWeight{0.0}; double sumOfWeights; if (eventWeights.empty()) { - uniformSingleEventWeight = retrieveSquaredWeights ? _dataClone->weightSquared() : _dataClone->weight(); + uniformSingleEventWeight = retrieveSquaredWeights ? dataClone->weightSquared() : dataClone->weight(); sumOfWeights = nEvents * uniformSingleEventWeight; for (std::size_t i = 0; i < results.size(); ++i) { //CHECK_VECTORISE kahanProb.AddIndexed(-uniformSingleEventWeight * results[i], i); @@ -567,21 +575,28 @@ RooNLLVar::ComputeResult RooNLLVar::computeBatched(std::size_t stepSize, std::si RooNLLVar::ComputeResult RooNLLVar::computeScalar(std::size_t stepSize, std::size_t firstEvent, std::size_t lastEvent) const { auto pdfClone = static_cast(_funcClone); + return computeScalarFunc(pdfClone, _dataClone, _normSet, _weightSq, stepSize, firstEvent, lastEvent); +} +// static function, also used from TestStatistics::RooUnbinnedL +RooNLLVar::ComputeResult RooNLLVar::computeScalarFunc(const RooAbsPdf *pdfClone, RooAbsData *dataClone, + RooArgSet *normSet, bool weightSq, std::size_t stepSize, + std::size_t firstEvent, std::size_t lastEvent) +{ ROOT::Math::KahanSum kahanWeight; ROOT::Math::KahanSum kahanProb; RooNaNPacker packedNaN(0.f); for (auto i=firstEvent; iget(i) ; + dataClone->get(i) ; - if (!_dataClone->valid()) continue; + if (!dataClone->valid()) continue; - Double_t eventWeight = _dataClone->weight(); //FIXME + Double_t eventWeight = dataClone->weight(); //FIXME if (0. == eventWeight * eventWeight) continue ; - if (_weightSq) eventWeight = _dataClone->weightSquared() ; + if (weightSq) eventWeight = dataClone->weightSquared() ; - const double term = -eventWeight * pdfClone->getLogVal(_normSet); + const double term = -eventWeight * pdfClone->getLogVal(normSet); kahanWeight.Add(eventWeight); kahanProb.Add(term); diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx index 00cc2df26139f..dbea172346032 100644 --- a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -33,19 +33,24 @@ In extended mode, a #include "RooAbsData.h" #include "RooAbsPdf.h" #include "RooAbsDataStore.h" +#include "RooNLLVar.h" // RooNLLVar::ComputeScalar +#include "RunContext.h" // complete type BatchCompute::RunContext #include "Math/Util.h" // KahanSum namespace RooFit { namespace TestStatistics { -RooUnbinnedL::RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended) - : RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1, extended) +RooUnbinnedL::RooUnbinnedL(RooAbsPdf *pdf, RooAbsData *data, RooAbsL::Extended extended, + bool useBatchedEvaluations) + : RooAbsL(RooAbsL::ClonePdfData{pdf, data}, data->numEntries(), 1, extended), + useBatchedEvaluations_(useBatchedEvaluations) { } RooUnbinnedL::RooUnbinnedL(const RooUnbinnedL &other) - : RooAbsL(other), apply_weight_squared(other.apply_weight_squared), _first(other._first) + : RooAbsL(other), apply_weight_squared(other.apply_weight_squared), _first(other._first), + useBatchedEvaluations_(other.useBatchedEvaluations_) { } @@ -62,6 +67,10 @@ bool RooUnbinnedL::setApplyWeightSquared(bool flag) return false; } +void RooUnbinnedL::setUseBatchedEvaluations(bool flag) { + useBatchedEvaluations_ = flag; +} + ////////////////////////////////////////////////////////////////////////////////// /// Calculate and return likelihood on subset of data from firstEvent to lastEvent /// processed with a step size of 'stepSize'. If this an extended likelihood and @@ -76,41 +85,43 @@ RooUnbinnedL::evaluatePartition(Section events, std::size_t /*components_begin*/ // straight addition, but since evaluating the PDF is usually much more // expensive than that, we tolerate the additional cost... ROOT::Math::KahanSum result; + double sumWeight; data_->store()->recalculateCache(nullptr, events.begin(N_events_), events.end(N_events_), 1, kTRUE); - ROOT::Math::KahanSum sumWeight; - - for (std::size_t i = events.begin(N_events_); i < events.end(N_events_); ++i) { - data_->get(i); - if (!data_->valid()) { - continue; - } - - Double_t eventWeight = data_->weight(); - if (0. == eventWeight * eventWeight) { - continue; - } - if (apply_weight_squared) { - eventWeight = data_->weightSquared(); - } - - Double_t term = -eventWeight * pdf_->getLogVal(normSet_.get()); - - sumWeight += eventWeight; - result += term; + if (useBatchedEvaluations_) { + std::tie(result, sumWeight) = RooNLLVar::computeBatchedFunc(pdf_.get(), data_.get(), evalData_, normSet_.get(), apply_weight_squared, + 1, events.begin(N_events_), events.end(N_events_)); + } else { + std::tie(result, sumWeight) = RooNLLVar::computeScalarFunc(pdf_.get(), data_.get(), normSet_.get(), apply_weight_squared, + 1, events.begin(N_events_), events.end(N_events_)); } // include the extended maximum likelihood term, if requested if (extended_) { if (apply_weight_squared) { + // TODO: the following should also be factored out into free/static functions like RooNLLVar::Compute* // Calculate sum of weights-squared here for extended term - ROOT::Math::KahanSum sumW2; - - for (Int_t i = 0; i < data_->numEntries(); i++) { - data_->get(i); - sumW2 += data_->weightSquared(); + Double_t sumW2; + if (useBatchedEvaluations_) { + const RooSpan eventWeights = data_->getWeightBatch(0, N_events_); + if (eventWeights.empty()) { + sumW2 = (events.end(N_events_) - events.begin(N_events_)) * data_->weightSquared(); + } else { + ROOT::Math::KahanSum kahanWeight; + for (std::size_t i = 0; i < eventWeights.size(); ++i) { + kahanWeight.AddIndexed(eventWeights[i] * eventWeights[i], i); + } + sumW2 = kahanWeight.Sum(); + } + } else { // scalar mode + ROOT::Math::KahanSum sumW2KahanSum; + for (Int_t i = 0; i < data_->numEntries(); i++) { + data_->get(i); + sumW2KahanSum += data_->weightSquared(); + } + sumW2 = sumW2KahanSum.Sum(); } Double_t expected = pdf_->expectedEvents(data_->get()); diff --git a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx index ae37d4db9b821..8d61ab0697cbf 100644 --- a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx +++ b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx @@ -19,6 +19,7 @@ #include #include #include +#include // necessary to complete RooUnbinnedL #include #include #include diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp index a2e13c04eb8c7..5217d404d321d 100644 --- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp @@ -16,6 +16,7 @@ #include "TestStatistics/RooRealL.h" #include "TestStatistics/RooUnbinnedL.h" +#include // necessary to complete RooUnbinnedL #include #include diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index 641410793a527..caf5e95de1e70 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -112,7 +112,7 @@ TEST_F(LikelihoodSerialTest, UnbinnedGaussian1D) TEST_F(LikelihoodSerialTest, UnbinnedGaussianND) { - unsigned int N = 1; + unsigned int N = 4; std::tie(nll, pdf, data, values) = generate_ND_gaussian_pdf_nll(w, N, 1000); likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); @@ -422,3 +422,22 @@ TEST_F(LikelihoodSerialSimBinnedConstrainedTest, ConstrainedAndOffset) EXPECT_EQ(nll0, nll2); EXPECT_DOUBLE_EQ(nll1, nll2); } + +TEST_F(LikelihoodSerialTest, BatchedUnbinnedGaussianND) +{ + unsigned int N = 4; + + bool batch_mode = true; + + std::tie(nll, pdf, data, values) = generate_ND_gaussian_pdf_nll(w, N, 1000, batch_mode); + likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); + dynamic_cast(likelihood.get())->setUseBatchedEvaluations(true); + RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); + + auto nll0 = nll->getVal(); + + nll_ts.evaluate(); + auto nll1 = nll_ts.getResult(); + + EXPECT_EQ(nll0, nll1); +} diff --git a/roofit/roofitcore/test/test_lib.h b/roofit/roofitcore/test/test_lib.h index df6ead82c263d..676ade0f95642 100644 --- a/roofit/roofitcore/test/test_lib.h +++ b/roofit/roofitcore/test/test_lib.h @@ -58,7 +58,7 @@ generate_1D_gaussian_pdf_nll(RooWorkspace &w, unsigned long N_events) // return two unique_ptrs, the first because nll is a pointer, // the second because RooArgSet doesn't have a move ctor std::tuple, RooAbsPdf *, RooDataSet *, std::unique_ptr> -generate_ND_gaussian_pdf_nll(RooWorkspace &w, unsigned int n, unsigned long N_events) { +generate_ND_gaussian_pdf_nll(RooWorkspace &w, unsigned int n, unsigned long N_events, bool batch_mode = false) { RooArgSet obs_set; // create gaussian parameters @@ -126,7 +126,7 @@ generate_ND_gaussian_pdf_nll(RooWorkspace &w, unsigned int n, unsigned long N_ev // --- Generate a toyMC sample from composite PDF --- RooDataSet *data = sum->generate(obs_set, N_events); - std::unique_ptr nll {sum->createNLL(*data)}; + std::unique_ptr nll {sum->createNLL(*data, RooFit::BatchMode(batch_mode))}; // set values randomly so that they actually need to do some fitting for (unsigned ix = 0; ix < n; ++ix) { From a2f6561dbb52aa0f2edce2eecc5bd2f3d7c66c31 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 14 Sep 2021 16:06:36 +0200 Subject: [PATCH 064/577] [DF] Add two simple tutorials in C++ and Python To be linked from the ROOT manual in the "First Steps" section. --- tutorials/dataframe/df000_simple.C | 26 ++++++++++++++++++++++++++ tutorials/dataframe/df000_simple.py | 25 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tutorials/dataframe/df000_simple.C create mode 100644 tutorials/dataframe/df000_simple.py diff --git a/tutorials/dataframe/df000_simple.C b/tutorials/dataframe/df000_simple.C new file mode 100644 index 0000000000000..3bcacbe529dda --- /dev/null +++ b/tutorials/dataframe/df000_simple.C @@ -0,0 +1,26 @@ +/// \file +/// \ingroup tutorial_dataframe +/// Simple RDataFrame example in C++. +/// +/// This tutorial shows a minimal example of RDataFrame that creates an +/// empty-source data frame, adds a new column `x` with random numbers +/// and finally creates and draws a histogram for `x`. +/// +/// \macro_code +/// \macro_output +/// +/// \date September 2021 +/// \author Enric Tejedor (CERN) + +void df000_simple() +{ + // Create a data frame with 100 rows + ROOT::RDataFrame rdf(100); + + // Define a new column `x` that contains random numbers + auto rdf_x = rdf.Define("x", [](){ return gRandom->Rndm(); }); + + // Create a histogram from `x` and draw it + auto h = rdf_x.Histo1D("x"); + h->DrawClone(); +} diff --git a/tutorials/dataframe/df000_simple.py b/tutorials/dataframe/df000_simple.py new file mode 100644 index 0000000000000..e6acbfbdf0beb --- /dev/null +++ b/tutorials/dataframe/df000_simple.py @@ -0,0 +1,25 @@ +## \file +## \ingroup tutorial_dataframe +## Simple RDataFrame example in Python. +## +## This tutorial shows a minimal example of RDataFrame that creates an +## empty-source data frame, adds a new column `x` with random numbers +## and finally creates and draws a histogram for `x`. +## +## \macro_code +## \macro_output +## +## \date September 2021 +## \author Enric Tejedor (CERN) + +import ROOT + +# Create a data frame with 100 rows +rdf = ROOT.RDataFrame(100) + +# Define a new column `x` that contains random numbers +rdf_x = rdf.Define("x", "gRandom->Rndm()") + +# Create a histogram from `x` and draw it +h = rdf_x.Histo1D("x") +h.Draw() From 6928212418a16a113b2037b6dfe94af38129d4fa Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 14 Sep 2021 17:17:45 +0200 Subject: [PATCH 065/577] [DF] Rephrase comments as suggested by Axel --- tutorials/dataframe/df000_simple.C | 11 +++++++---- tutorials/dataframe/df000_simple.py | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/tutorials/dataframe/df000_simple.C b/tutorials/dataframe/df000_simple.C index 3bcacbe529dda..f4f56a7a514e6 100644 --- a/tutorials/dataframe/df000_simple.C +++ b/tutorials/dataframe/df000_simple.C @@ -2,9 +2,9 @@ /// \ingroup tutorial_dataframe /// Simple RDataFrame example in C++. /// -/// This tutorial shows a minimal example of RDataFrame that creates an -/// empty-source data frame, adds a new column `x` with random numbers -/// and finally creates and draws a histogram for `x`. +/// This tutorial shows a minimal example of RDataFrame. It starts without input +/// data, generates a new column `x` with random numbers, and finally draws +/// a histogram for `x`. /// /// \macro_code /// \macro_output @@ -20,7 +20,10 @@ void df000_simple() // Define a new column `x` that contains random numbers auto rdf_x = rdf.Define("x", [](){ return gRandom->Rndm(); }); - // Create a histogram from `x` and draw it + // Create a histogram from `x` auto h = rdf_x.Histo1D("x"); + + // At the end of this function, the histogram pointed to by `h` will be deleted. + // Draw a copy of the histogram object instead: h->DrawClone(); } diff --git a/tutorials/dataframe/df000_simple.py b/tutorials/dataframe/df000_simple.py index e6acbfbdf0beb..aa9b6a88793ba 100644 --- a/tutorials/dataframe/df000_simple.py +++ b/tutorials/dataframe/df000_simple.py @@ -2,9 +2,9 @@ ## \ingroup tutorial_dataframe ## Simple RDataFrame example in Python. ## -## This tutorial shows a minimal example of RDataFrame that creates an -## empty-source data frame, adds a new column `x` with random numbers -## and finally creates and draws a histogram for `x`. +## This tutorial shows a minimal example of RDataFrame. It starts without input +## data, generates a new column `x` with random numbers, and finally draws +## a histogram for `x`. ## ## \macro_code ## \macro_output From bbc9b7b891f7f38781a08a791f05a9b4b7b6138d Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Wed, 25 Aug 2021 21:42:53 +0200 Subject: [PATCH 066/577] [RF] New `RooAbsPdf::minimizeNLL()` for minimization outside of fitTo The `RooAbsPdf::fitTo()` function creates the likelihood function itself, using the `RooAbsPdf::createNLL()` function. But if one has already created the NLL manually, it is not possible to easily reproduce the minimizer configuration that `RooAbsPdf::fitTo()` uses. This commit refactors `RooAbsPdf::fitTo()` such that the minimizer part is put into a new function called `RooAbsPdf::minimizeNLL()`. This is useful for unit tests and debuggings where one wants to do something with the likelihood function before proceeding with the minimization. --- roofit/roofitcore/inc/RooAbsPdf.h | 30 ++- roofit/roofitcore/src/RooAbsPdf.cxx | 339 ++++++++++++++-------------- 2 files changed, 196 insertions(+), 173 deletions(-) diff --git a/roofit/roofitcore/inc/RooAbsPdf.h b/roofit/roofitcore/inc/RooAbsPdf.h index 4ad0e2a7ab84c..bdfb332bed70e 100644 --- a/roofit/roofitcore/inc/RooAbsPdf.h +++ b/roofit/roofitcore/inc/RooAbsPdf.h @@ -159,6 +159,32 @@ class RooAbsPdf : public RooAbsReal { const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ; virtual RooFitResult* fitTo(RooAbsData& data, const RooLinkedList& cmdList) ; + /// Configuration struct for RooAbsPdf::minimizeNLL with all the default + //values that also should be taked as the default values for + //RooAbsPdf::fitTo. + struct MinimizerConfig { + double recoverFromNaN = 10.; + std::string fitOpt = ""; + int optConst = 2; + int verbose = 0; + int doSave = 0; + int doTimer = 0; + int printLevel = 1; + int strat = 1; + int initHesse = 0; + int hesse = 1; + int minos = 0; + int numee = 10; + int doEEWall = 1; + int doWarn = 1; + int doSumW2 = -1; + int doAsymptotic = -1; + const RooArgSet* minosSet = nullptr; + std::string minType = "Minuit"; + std::string minAlg = "minuit"; + }; + std::unique_ptr minimizeNLL(RooAbsReal & nll, RooAbsData const& data, MinimizerConfig const& cfg); + virtual RooAbsReal* createNLL(RooAbsData& data, const RooLinkedList& cmdList) ; virtual RooAbsReal* createNLL(RooAbsData& data, const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(), const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(), @@ -359,8 +385,8 @@ class RooAbsPdf : public RooAbsReal { static TString _normRangeOverride ; private: - int calculateAsymptoticCorrectedCovMatrix(RooMinimizer& minimizer, RooAbsData const& data); - int calculateSumW2CorrectedCovMatrix(RooMinimizer& minimizer, RooAbsReal const& nll) const; + int calcAsymptoticCorrectedCovariance(RooMinimizer& minimizer, RooAbsData const& data); + int calcSumW2CorrectedCovariance(RooMinimizer& minimizer, RooAbsReal const& nll) const; ClassDef(RooAbsPdf,5) // Abstract PDF with normalization support }; diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index 28025304e572c..1a1a49a717597 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -1149,7 +1149,18 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) } -int RooAbsPdf::calculateAsymptoticCorrectedCovMatrix(RooMinimizer &minimizer, RooAbsData const &data) +//////////////////////////////////////////////////////////////////////////////// +/// Use the asymptotically correct approach to estimate errors in the presence of weights. +/// This is slower but more accurate than `SumW2Error`. See also https://arxiv.org/abs/1911.01303). +/// Applies the calculated covaraince matrix to the RooMinimizer and returns +/// the quality of the covariance matrix. +/// See also the documentation of RooAbsPdf::fitTo(), where this function is used. +/// \param[in] minimizer The RooMinimizer to get the fit result from. The state +/// of the minimizer will be altered by this function: the covariance +/// matrix caltulated here will be applied to it via +/// RooMinimizer::applyCovarianceMatrix(). +/// \param[in] data The dataset that was used for the fit. +int RooAbsPdf::calcAsymptoticCorrectedCovariance(RooMinimizer &minimizer, RooAbsData const &data) { // Calculated corrected errors for weighted likelihood fits std::unique_ptr rw(minimizer.save()); @@ -1216,7 +1227,20 @@ int RooAbsPdf::calculateAsymptoticCorrectedCovMatrix(RooMinimizer &minimizer, Ro return rw->covQual(); } -int RooAbsPdf::calculateSumW2CorrectedCovMatrix(RooMinimizer &minimizer, RooAbsReal const &nll) const + +//////////////////////////////////////////////////////////////////////////////// +/// Apply correction to errors and covariance matrix. This uses two covariance +/// matrices, one with the weights, the other with squared weights, to obtain +/// the correct errors for weighted likelihood fits. +/// Applies the calculated covaraince matrix to the RooMinimizer and returns +/// the quality of the covariance matrix. +/// See also the documentation of RooAbsPdf::fitTo(), where this function is used. +/// \param[in] minimizer The RooMinimizer to get the fit result from. The state +/// of the minimizer will be altered by this function: the covariance +/// matrix caltulated here will be applied to it via +/// RooMinimizer::applyCovarianceMatrix(). +/// \param[in] nll The NLL object that was used for the fit. +int RooAbsPdf::calcSumW2CorrectedCovariance(RooMinimizer &minimizer, RooAbsReal const &nll) const { // Make list of RooNLLVar components of FCN @@ -1420,6 +1444,101 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooCmdArg& arg1, const Ro } +//////////////////////////////////////////////////////////////////////////////// +/// Minimizes a given NLL variable by finding the optimal parameters with the +/// RooMinimzer. The NLL variable can be created with RooAbsPdf::createNLL. +/// If you are looking for a function that combines likelihood creation with +/// fitting, see RooAbsPdf::fitTo. +/// \param[in] nll The negative log-likelihood variable to minimize. +/// \param[in] data The dataset that was als used for the NLL. It's a necessary +/// parameter because it is used in the asymptotic error correction. +/// \param[in] cfg Configuration struct with all the configuration options for +/// the RooMinimizer. These are a subset of the options that you can +/// also pass to RooAbsPdf::fitTo via the RooFit command arguments. +std::unique_ptr RooAbsPdf::minimizeNLL(RooAbsReal & nll, + RooAbsData const& data, MinimizerConfig const& cfg) { + + // Determine if the dataset has weights + bool weightedData = data.isNonPoissonWeighted(); + + // Warn user that a method to determine parameter uncertainties should be provided if weighted data is offered + if (weightedData && cfg.doSumW2==-1 && cfg.doAsymptotic==-1) { + coutW(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") WARNING: a likelihood fit is requested of what appears to be weighted data.\n" + << " While the estimated values of the parameters will always be calculated taking the weights into account,\n" + << " there are multiple ways to estimate the errors of the parameters. You are advised to make an \n" + << " explicit choice for the error calculation:\n" + << " - Either provide SumW2Error(true), to calculate a sum-of-weights-corrected HESSE error matrix\n" + << " (error will be proportional to the number of events in MC).\n" + << " - Or provide SumW2Error(false), to return errors from original HESSE error matrix\n" + << " (which will be proportional to the sum of the weights, i.e., a dataset with events).\n" + << " - Or provide AsymptoticError(true), to use the asymptotically correct expression\n" + << " (for details see https://arxiv.org/abs/1911.01303)." + << endl ; + } + + if (cfg.minos && (cfg.doSumW2==1 || cfg.doAsymptotic == 1)) { + coutE(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << "): sum-of-weights and asymptotic error correction do not work with MINOS errors. Not fitting." << endl; + return nullptr; + } + if (cfg.doAsymptotic==1 && cfg.minos) { + coutW(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") WARNING: asymptotic correction does not apply to MINOS errors" << endl ; + } + + //avoid setting both SumW2 and Asymptotic for uncertainty correction + if (cfg.doSumW2==1 && cfg.doAsymptotic==1) { + coutE(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") ERROR: Cannot compute both asymptotically correct and SumW2 errors." << endl ; + return nullptr; + } + + // Instantiate RooMinimizer + + RooMinimizer m(nll); + m.setMinimizerType(cfg.minType.c_str()); + m.setEvalErrorWall(cfg.doEEWall); + m.setRecoverFromNaNStrength(cfg.recoverFromNaN); + m.setPrintEvalErrors(cfg.numee); + if (cfg.printLevel!=1) m.setPrintLevel(cfg.printLevel); + if (cfg.optConst) m.optimizeConst(cfg.optConst); // Activate constant term optimization + + if (!cfg.fitOpt.empty()) { + + // Play fit options as historically defined + std::unique_ptr ret{m.fit(cfg.fitOpt.c_str())}; + if (cfg.optConst) m.optimizeConst(0) ; + return ret; + + } + + if (cfg.verbose) m.setVerbose(1); // Activate verbose options + if (cfg.doTimer) m.setProfile(1); // Activate timer options + if (cfg.strat!=1) m.setStrategy(cfg.strat); // Modify fit strategy + if (cfg.initHesse) m.hesse(); // Initialize errors with hesse + m.minimize(cfg.minType.c_str(), cfg.minAlg.c_str()); // Minimize using chosen algorithm + if (cfg.hesse) m.hesse(); // Evaluate errors with Hesse + + int corrCovQual = -1; + + if (m.getNPar()>0) { + if (cfg.doAsymptotic == 1) corrCovQual = calcAsymptoticCorrectedCovariance(m, data); // Asymptotically correct + if (cfg.doSumW2 == 1) corrCovQual = calcSumW2CorrectedCovariance(m, nll); + } + + if (cfg.minos) cfg.minosSet ? m.minos(*cfg.minosSet) : m.minos(); // Evaluate errs with Minos + + // Optionally return fit result + std::unique_ptr ret; + if (cfg.doSave) { + auto name = std::string("fitresult_") + GetName() + "_" + data.GetName(); + auto title = std::string("Result of fit of p.d.f. ") + GetName() + " to dataset " + data.GetName(); + ret.reset(m.save(name.c_str(),title.c_str())); + if((cfg.doSumW2==1 || cfg.doAsymptotic==1) && m.getNPar()>0) ret->setCovQual(corrCovQual); + } + + if (cfg.optConst) m.optimizeConst(0) ; + return ret ; +} + + //////////////////////////////////////////////////////////////////////////////// /// Fit PDF to given dataset. If dataset is unbinned, an unbinned maximum likelihood is performed. If the dataset @@ -1440,29 +1559,33 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList) "RangeWithName,SumCoefRange,NumCPU,SplitRange,Constrained,Constrain,ExternalConstraints," "CloneData,GlobalObservables,GlobalObservablesTag,OffsetLikelihood,BatchMode,IntegrateBins"); + // Default-initialized instance of MinimizerConfig to get the default + // minimizer parameter values. + MinimizerConfig minimizerDefaults; + pc.defineDouble("prefit", "Prefit",0,0); - pc.defineDouble("RecoverFromUndefinedRegions", "RecoverFromUndefinedRegions",0,10.); - pc.defineString("fitOpt","FitOptions",0,"") ; - pc.defineInt("optConst","Optimize",0,2) ; - pc.defineInt("verbose","Verbose",0,0) ; - pc.defineInt("doSave","Save",0,0) ; - pc.defineInt("doTimer","Timer",0,0) ; - pc.defineInt("plevel","PrintLevel",0,1) ; - pc.defineInt("strat","Strategy",0,1) ; - pc.defineInt("initHesse","InitialHesse",0,0) ; - pc.defineInt("hesse","Hesse",0,1) ; - pc.defineInt("minos","Minos",0,0) ; + pc.defineDouble("RecoverFromUndefinedRegions", "RecoverFromUndefinedRegions",0,minimizerDefaults.recoverFromNaN); + pc.defineString("fitOpt","FitOptions",0,minimizerDefaults.fitOpt.c_str()) ; + pc.defineInt("optConst","Optimize",0,minimizerDefaults.optConst) ; + pc.defineInt("verbose","Verbose",0,minimizerDefaults.verbose) ; + pc.defineInt("doSave","Save",0,minimizerDefaults.doSave) ; + pc.defineInt("doTimer","Timer",0,minimizerDefaults.doTimer) ; + pc.defineInt("printLevel","PrintLevel",0,minimizerDefaults.printLevel) ; + pc.defineInt("strat","Strategy",0,minimizerDefaults.strat) ; + pc.defineInt("initHesse","InitialHesse",0,minimizerDefaults.initHesse) ; + pc.defineInt("hesse","Hesse",0,minimizerDefaults.hesse) ; + pc.defineInt("minos","Minos",0,minimizerDefaults.minos) ; pc.defineInt("ext","Extended",0,2) ; pc.defineInt("numcpu","NumCPU",0,1) ; - pc.defineInt("numee","PrintEvalErrors",0,10) ; - pc.defineInt("doEEWall","EvalErrorWall",0,1) ; - pc.defineInt("doWarn","Warnings",0,1) ; - pc.defineInt("doSumW2","SumW2Error",0,-1) ; - pc.defineInt("doAsymptoticError","AsymptoticError",0,-1) ; + pc.defineInt("numee","PrintEvalErrors",0,minimizerDefaults.numee) ; + pc.defineInt("doEEWall","EvalErrorWall",0,minimizerDefaults.doEEWall) ; + pc.defineInt("doWarn","Warnings",0,minimizerDefaults.doWarn) ; + pc.defineInt("doSumW2","SumW2Error",0,minimizerDefaults.doSumW2) ; + pc.defineInt("doAsymptoticError","AsymptoticError",0,minimizerDefaults.doAsymptotic) ; pc.defineInt("doOffset","OffsetLikelihood",0,0) ; - pc.defineString("mintype","Minimizer",0,"Minuit") ; - pc.defineString("minalg","Minimizer",1,"minuit") ; - pc.defineObject("minosSet","Minos",0,0) ; + pc.defineString("mintype","Minimizer",0,minimizerDefaults.minType.c_str()) ; + pc.defineString("minalg","Minimizer",1,minimizerDefaults.minAlg.c_str()) ; + pc.defineObject("minosSet","Minos",0,minimizerDefaults.minosSet) ; pc.defineSet("cPars","Constrain",0,0) ; pc.defineSet("extCons","ExternalConstraints",0,0) ; pc.defineMutex("FitOptions","Verbose") ; @@ -1483,25 +1606,7 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList) // Decode command line arguments Double_t prefit = pc.getDouble("prefit"); - const double recoverFromNaN = pc.getDouble("RecoverFromUndefinedRegions"); - const char* fitOpt = pc.getString("fitOpt",0,kTRUE) ; Int_t optConst = pc.getInt("optConst") ; - Int_t verbose = pc.getInt("verbose") ; - Int_t doSave = pc.getInt("doSave") ; - Int_t doTimer = pc.getInt("doTimer") ; - Int_t plevel = pc.getInt("plevel") ; - Int_t strat = pc.getInt("strat") ; - Int_t initHesse= pc.getInt("initHesse") ; - Int_t hesse = pc.getInt("hesse") ; - Int_t minos = pc.getInt("minos") ; - Int_t numee = pc.getInt("numee") ; - Int_t doEEWall = pc.getInt("doEEWall") ; - Int_t doWarn = pc.getInt("doWarn") ; - Int_t doSumW2 = pc.getInt("doSumW2") ; - Int_t doAsymptotic = pc.getInt("doAsymptoticError"); - const RooArgSet* minosSet = static_cast(pc.getObject("minosSet")) ; - const char* minType = pc.getString("mintype","Minuit") ; - const char* minAlg = pc.getString("minalg","minuit") ; if (optConst > 1) { // optConst >= 2 is pre-computating values, which are never used when @@ -1516,33 +1621,6 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList) } } - - // Determine if the dataset has weights - Bool_t weightedData = data.isNonPoissonWeighted() ; - - // Warn user that a method to determine parameter uncertainties should be provided if weighted data is offered - if (weightedData && doSumW2==-1 && doAsymptotic==-1) { - coutW(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") WARNING: a likelihood fit is requested of what appears to be weighted data.\n" - << " While the estimated values of the parameters will always be calculated taking the weights into account,\n" - << " there are multiple ways to estimate the errors of the parameters. You are advised to make an \n" - << " explicit choice for the error calculation:\n" - << " - Either provide SumW2Error(true), to calculate a sum-of-weights-corrected HESSE error matrix\n" - << " (error will be proportional to the number of events in MC).\n" - << " - Or provide SumW2Error(false), to return errors from original HESSE error matrix\n" - << " (which will be proportional to the sum of the weights, i.e., a dataset with events).\n" - << " - Or provide AsymptoticError(true), to use the asymptotically correct expression\n" - << " (for details see https://arxiv.org/abs/1911.01303)." - << endl ; - } - - if (minos && (doSumW2==1 || doAsymptotic == 1)) { - coutE(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << "): sum-of-weights and asymptotic error correction do not work with MINOS errors. Not fitting." << endl; - return nullptr; - } - if (doAsymptotic==1 && minos) { - coutW(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") WARNING: asymptotic correction does not apply to MINOS errors" << endl ; - } - if (prefit != 0) { size_t nEvents = static_cast(prefit*data.numEntries()); if (prefit > 0.5 || nEvents < 100) { @@ -1578,111 +1656,30 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList) } } - RooAbsReal* nll = createNLL(data,nllCmdList) ; - RooFitResult *ret = 0 ; - - //avoid setting both SumW2 and Asymptotic for uncertainty correction - if (doSumW2==1 && doAsymptotic==1) { - coutE(InputArguments) << "RooAbsPdf::fitTo(" << GetName() << ") ERROR: Cannot compute both asymptotically correct and SumW2 errors." << endl ; - return ret; - } - - // Instantiate MINUIT - - RooMinimizer m(*nll) ; - - m.setMinimizerType(minType) ; - - m.setEvalErrorWall(doEEWall) ; - m.setRecoverFromNaNStrength(recoverFromNaN); - if (doWarn==0) { - // m.setNoWarn() ; WVE FIX THIS - } - - m.setPrintEvalErrors(numee) ; - if (plevel!=1) { - m.setPrintLevel(plevel) ; - } - - if (optConst) { - // Activate constant term optimization - m.optimizeConst(optConst) ; - } - - if (fitOpt) { - - // Play fit options as historically defined - ret = m.fit(fitOpt) ; - - } else { - - if (verbose) { - // Activate verbose options - m.setVerbose(1) ; - } - if (doTimer) { - // Activate timer options - m.setProfile(1) ; - } - - if (strat!=1) { - // Modify fit strategy - m.setStrategy(strat) ; - } - - if (initHesse) { - // Initialize errors with hesse - m.hesse() ; - } - - // Minimize using chosen algorithm - m.minimize(minType,minAlg) ; - - if (hesse) { - // Evaluate errors with Hesse - m.hesse() ; - } - - int corrCovQual = -1; - - //asymptotically correct approach - if (doAsymptotic==1 && m.getNPar()>0) { - corrCovQual = calculateAsymptoticCorrectedCovMatrix(m, data); - } - - if (doSumW2==1 && m.getNPar()>0) { - corrCovQual = calculateSumW2CorrectedCovMatrix(m, *nll); - } - - if (minos) { - // Evaluate errs with Minos - if (minosSet) { - m.minos(*minosSet) ; - } else { - m.minos() ; - } - } - - // Optionally return fit result - if (doSave) { - string name = Form("fitresult_%s_%s",GetName(),data.GetName()) ; - string title = Form("Result of fit of p.d.f. %s to dataset %s",GetName(),data.GetName()) ; - ret = m.save(name.c_str(),title.c_str()) ; - if((doSumW2==1 || doAsymptotic==1) && m.getNPar()>0) { - ret->setCovQual(corrCovQual); - } - } - - } - - if (optConst) { - m.optimizeConst(0) ; - } - - - // Cleanup - delete nll ; - return ret ; + std::unique_ptr nll{createNLL(data,nllCmdList)}; + + MinimizerConfig cfg; + cfg.recoverFromNaN = pc.getDouble("RecoverFromUndefinedRegions"); + cfg.fitOpt = pc.getString("fitOpt",0,true) ? pc.getString("fitOpt",0,true) : ""; + cfg.optConst = optConst; + cfg.verbose = pc.getInt("verbose"); + cfg.doSave = pc.getInt("doSave"); + cfg.doTimer = pc.getInt("doTimer"); + cfg.printLevel = pc.getInt("printLevel"); + cfg.strat = pc.getInt("strat"); + cfg.initHesse = pc.getInt("initHesse"); + cfg.hesse = pc.getInt("hesse"); + cfg.minos = pc.getInt("minos"); + cfg.numee = pc.getInt("numee"); + cfg.doEEWall = pc.getInt("doEEWall"); + cfg.doWarn = pc.getInt("doWarn"); + cfg.doSumW2 = pc.getInt("doSumW2"); + cfg.doAsymptotic = pc.getInt("doAsymptoticError"); + cfg.minosSet = static_cast(pc.getObject("minosSet")); + cfg.minType = pc.getString("mintype","Minuit"); + cfg.minAlg = pc.getString("minalg","minuit"); + + return minimizeNLL(*nll, data, cfg).release(); } From cb20703d3e99033e437a401c6666d5ad670ff4d5 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Tue, 17 Aug 2021 19:02:51 +0200 Subject: [PATCH 067/577] [RF] Allow for storing global observable values in RooAbsData This commit doesn't change any fitting behavior. It only adds the possibility to attach global observable snapshots to the RooAbsData. --- roofit/roofitcore/inc/RooAbsData.h | 13 ++- roofit/roofitcore/src/RooAbsData.cxx | 125 +++++++++++++++++++++++---- 2 files changed, 119 insertions(+), 19 deletions(-) diff --git a/roofit/roofitcore/inc/RooAbsData.h b/roofit/roofitcore/inc/RooAbsData.h index 6657583f9c1ad..e8e9c9725ab03 100644 --- a/roofit/roofitcore/inc/RooAbsData.h +++ b/roofit/roofitcore/inc/RooAbsData.h @@ -303,6 +303,13 @@ class RooAbsData : public TNamed, public RooPrintable { static StorageType getDefaultStorageType(); + /// Returns snapshot of global observables stored in this data. + /// \return Pointer to a RooArgSet with the snapshot of global observables + /// stored in the data. Can be `nullptr` if no global observales are + /// stored. + RooArgSet const* getGlobalObservables() const { return _globalObservables.get(); } + void setGlobalObservables(RooArgSet const& globalObservables); + protected: static StorageType defaultStorageType ; @@ -350,8 +357,12 @@ class RooAbsData : public TNamed, public RooPrintable { std::map _ownedComponents ; // Owned external components + std::unique_ptr _globalObservables; // Snapshot of global observables + private: - ClassDef(RooAbsData, 5) // Abstract data collection + void copyGlobalObservables(const RooAbsData& other); + + ClassDef(RooAbsData, 6) // Abstract data collection }; #endif diff --git a/roofit/roofitcore/src/RooAbsData.cxx b/roofit/roofitcore/src/RooAbsData.cxx index 0651026751ab6..be00bfb9bb866 100644 --- a/roofit/roofitcore/src/RooAbsData.cxx +++ b/roofit/roofitcore/src/RooAbsData.cxx @@ -23,6 +23,58 @@ RooAbsData is the common abstract base class for binned and unbinned datasets. The abstract interface defines plotting and tabulating entry points for its contents and provides an iterator over its elements (bins for binned data sets, data points for unbinned datasets). + +### Storing global observables in RooFit datasets + +RooFit groups model variables into *observables* and *parameters*, depending on +if their values are stored in the dataset. For fits with parameter +constraints, there is a third kind of variables, called *global observables*. +These represent the results of auxiliary measurements that constrain the +nuisance parameters. In the RooFit implementation, a likelihood is generally +the sum of two terms: +- the likelihood of the data given the parameters, where the normalization set + is the set of observables (implemented by RooNLLVar) +- the constraint term, where the normalization set is the set of *global +observables* (implemented by RooConstraintSum) + +Before this release, the global observable values were always taken from the +model/pdf. With this release, a mechanism is added to store a snapshot of +global observables in any RooDataSet or RooDataHist. For toy studies where the +global observables assume a different values for each toy, the bookkeeping of +the set of global observables and in particular their values is much easier +with this change. + +Usage example for a model with global observables `g1` and `g2`: +``` +auto data = model.generate(x, 1000); // data has only the single observables x +data->setGlobalObservables(g1, g2); // now, data also stores a snapshot of g1 and g2 + +// If you fit the model to the data, the global observables and their values +// are taken from the dataset: +model.fitTo(*data); + +// You can still define the set of global observables yourself, but the values +// will be takes from the dataset if available: +model.fitTo(*data, GlobalObservables(g1, g2)); + +// To force `fitTo` to take the global observable values from the model even +// though they are in the dataset, you can use the new `GlobalObservablesSource` +// command argument: +model.fitTo(*data, GlobalObservables(g1, g2), GlobalObservablesSource("model")); +// The only other allowed value for `GlobalObservablesSource` is "data", which +// corresponds to the new default behavior explained above. +``` + +In case you create a RooFit dataset directly by calling its constructor, you +can also pass the global observables in a command argument instead of calling +RooAbsData::setGlobalObservables() later: +``` +RooDataSet data{"dataset", "dataset", x, RooFit::GlobalObservables(g1, g2)}; +``` + +To access the set of global observables stored in a RooAbsData, call +RooAbsData::getGlobalObservables(). It returns a `nullptr` if no global +observable snapshots are stored in the dataset. **/ #include "RooAbsData.h" @@ -206,6 +258,8 @@ RooAbsData::RooAbsData(const RooAbsData& other, const char* newname) : storageType = other.storageType; } + copyGlobalObservables(other); + RooTrace::create(this) ; } @@ -245,9 +299,23 @@ RooAbsData& RooAbsData::operator=(const RooAbsData& other) { storageType = other.storageType; } + copyGlobalObservables(other); + return *this; } + +void RooAbsData::copyGlobalObservables(const RooAbsData& other) { + if (other._globalObservables) { + if(_globalObservables == nullptr) _globalObservables = std::make_unique(); + else _globalObservables->clear(); + other._globalObservables->snapshot(*_globalObservables); + } else { + _globalObservables.reset(nullptr); + } +} + + //////////////////////////////////////////////////////////////////////////////// /// Destructor @@ -397,8 +465,8 @@ RooAbsData* RooAbsData::reduce(const RooCmdArg& arg1,const RooCmdArg& arg2,const // Process & check varargs pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ; - if (!pc.ok(kTRUE)) { - return 0 ; + if (!pc.ok(true)) { + return nullptr; } // Extract values from named arguments @@ -442,15 +510,12 @@ RooAbsData* RooAbsData::reduce(const RooCmdArg& arg1,const RooCmdArg& arg2,const } - if (!ret) return 0 ; + if (!ret) return nullptr; - if (name) { - ret->SetName(name) ; - } - if (title) { - ret->SetTitle(title) ; - } + if (name) ret->SetName(name) ; + if (title) ret->SetTitle(title) ; + ret->copyGlobalObservables(*this); return ret ; } @@ -463,7 +528,9 @@ RooAbsData* RooAbsData::reduce(const RooCmdArg& arg1,const RooCmdArg& arg2,const RooAbsData* RooAbsData::reduce(const char* cut) { RooFormulaVar cutVar(cut,cut,*get()) ; - return reduceEng(*get(),&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + RooAbsData* ret = reduceEng(*get(),&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + ret->copyGlobalObservables(*this); + return ret; } //////////////////////////////////////////////////////////////////////////////// @@ -473,7 +540,9 @@ RooAbsData* RooAbsData::reduce(const char* cut) RooAbsData* RooAbsData::reduce(const RooFormulaVar& cutVar) { - return reduceEng(*get(),&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + RooAbsData* ret = reduceEng(*get(),&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + ret->copyGlobalObservables(*this); + return ret; } //////////////////////////////////////////////////////////////////////////////// @@ -496,11 +565,15 @@ RooAbsData* RooAbsData::reduce(const RooArgSet& varSubset, const char* cut) } } + RooAbsData* ret = nullptr; if (cut && strlen(cut)>0) { RooFormulaVar cutVar(cut, cut, *get(), false); - return reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + ret = reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits::max(),false); + } else { + ret = reduceEng(varSubset2,0,0,0,std::numeric_limits::max(),false); } - return reduceEng(varSubset2,0,0,0,std::numeric_limits::max(),kFALSE) ; + ret->copyGlobalObservables(*this); + return ret; } //////////////////////////////////////////////////////////////////////////////// @@ -514,18 +587,17 @@ RooAbsData* RooAbsData::reduce(const RooArgSet& varSubset, const RooFormulaVar& { // Make sure varSubset doesn't contain any variable not in this dataset RooArgSet varSubset2(varSubset) ; - TIterator* iter = varSubset.createIterator() ; - RooAbsArg* arg ; - while((arg=(RooAbsArg*)iter->Next())) { + for(RooAbsArg * arg : varSubset) { if (!_vars.find(arg->GetName())) { coutW(InputArguments) << "RooAbsData::reduce(" << GetName() << ") WARNING: variable " << arg->GetName() << " not in dataset, ignored" << endl ; varSubset2.remove(*arg) ; } } - delete iter ; - return reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + RooAbsData* ret = reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits::max(),kFALSE) ; + ret->copyGlobalObservables(*this); + return ret; } @@ -2357,3 +2429,20 @@ void RooAbsData::RecursiveRemove(TObject *obj) } } } + +//////////////////////////////////////////////////////////////////////////////// +/// Sets the global observables stored in this data. A snapshot of the +/// observables will be saved. +/// \param[in] globalObservables The set of global observables to take a snapshot of. + +void RooAbsData::setGlobalObservables(RooArgSet const& globalObservables) { + if(_globalObservables == nullptr) _globalObservables = std::make_unique(); + else _globalObservables->clear(); + globalObservables.snapshot(*_globalObservables); + for(auto * arg : *_globalObservables) { + arg->setAttribute("global",true); + // Global observables are also always constant in fits + if(auto lval = dynamic_cast(arg)) lval->setConstant(true); + if(auto lval = dynamic_cast(arg)) lval->setConstant(true); + } +} From 773945fcf750925c3379e7983c375a38be655c23 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 3 Sep 2021 13:31:03 +0200 Subject: [PATCH 068/577] [RF] Add `GlobalObservables` cmd arg to `RooDataSet/Hist` constructors This is to conveniently define the global observables stored in the `RooDataSet` or `RooDataHist` in the constructor. --- roofit/roofitcore/src/RooDataHist.cxx | 6 ++++++ roofit/roofitcore/src/RooDataSet.cxx | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx index fa341993d7260..5428c9a8bc5c5 100644 --- a/roofit/roofitcore/src/RooDataHist.cxx +++ b/roofit/roofitcore/src/RooDataHist.cxx @@ -270,6 +270,9 @@ RooDataHist::RooDataHist(std::string_view name, std::string_view title, const Ro /// category it will be added on the fly. The import command can be specified /// multiple times. /// Import(map&) As above, but allows specification of many imports in a single operation +/// `GlobalObservables(const RooArgSet&)` Define the set of global observables to be stored in this RooDataHist. +/// A snapshot of the passed RooArgSet is stored, meaning the values wont't change unexpectedly. +/// /// RooDataHist::RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2, const RooCmdArg& arg3, @@ -292,6 +295,7 @@ RooDataHist::RooDataHist(std::string_view name, std::string_view title, const Ro pc.defineDouble("weight","Weight",0,1) ; pc.defineObject("dummy1","ImportDataHistSliceMany",0) ; pc.defineObject("dummy2","ImportHistoSliceMany",0) ; + pc.defineSet("glObs","GlobalObservables",0,0) ; pc.defineMutex("ImportHisto","ImportHistoSlice","ImportDataHistSlice") ; pc.defineDependency("ImportHistoSlice","IndexCat") ; pc.defineDependency("ImportDataHistSlice","IndexCat") ; @@ -309,6 +313,8 @@ RooDataHist::RooDataHist(std::string_view name, std::string_view title, const Ro return ; } + if(pc.getSet("glObs")) setGlobalObservables(*pc.getSet("glObs")); + TH1* impHist = static_cast(pc.getObject("impHist")) ; Bool_t impDens = pc.getInt("impDens") ; Double_t initWgt = pc.getDouble("weight") ; diff --git a/roofit/roofitcore/src/RooDataSet.cxx b/roofit/roofitcore/src/RooDataSet.cxx index 70f3073464e28..ecfa82c289b2e 100644 --- a/roofit/roofitcore/src/RooDataSet.cxx +++ b/roofit/roofitcore/src/RooDataSet.cxx @@ -215,6 +215,8 @@ RooDataSet::RooDataSet() : _wgtVar(0) /// Interpret the given variable as event weight rather than as observable /// StoreError(const RooArgSet&) Store symmetric error along with value for given subset of observables /// StoreAsymError(const RooArgSet&) Store asymmetric error along with value for given subset of observables +/// `GlobalObservables(const RooArgSet&)` Define the set of global observables to be stored in this RooDataSet. +/// A snapshot of the passed RooArgSet is stored, meaning the values wont't change unexpectedly. /// /// @@ -245,6 +247,7 @@ RooDataSet::RooDataSet(std::string_view name, std::string_view title, const RooA pc.defineObject("dummy2","LinkDataSliceMany",0) ; pc.defineSet("errorSet","StoreError",0) ; pc.defineSet("asymErrSet","StoreAsymError",0) ; + pc.defineSet("glObs","GlobalObservables",0,0) ; pc.defineMutex("ImportTree","ImportData","ImportDataSlice","LinkDataSlice","ImportFromFile") ; pc.defineMutex("CutSpec","CutVar") ; pc.defineMutex("WeightVarName","WeightVar") ; @@ -266,6 +269,8 @@ RooDataSet::RooDataSet(std::string_view name, std::string_view title, const RooA return ; } + if(pc.getSet("glObs")) setGlobalObservables(*pc.getSet("glObs")); + // Extract relevant objects TTree* impTree = static_cast(pc.getObject("impTree")) ; RooDataSet* impData = static_cast(pc.getObject("impData")) ; From d3e098a7c8f44e720f870c1799d5cfac6e07f27f Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Wed, 18 Aug 2021 09:57:32 +0200 Subject: [PATCH 069/577] [RF] Consider global observables stored in dataset in fits Adapt `RooConstraintSum::createConstraintTerm` to consider when the dataset stores global observables. The RooFit behavior changes in two ways: * If no global observables are specified with `GlobalObservables` in the `RooAbsPdf::fitTo()` command arguments, the set of global observables is automatically detected from the dataset and the values from the dataset are used. * If the global observables are specified with `GlobalObservables`, their values are taken from the dataset if they are stored in it, otherwise they are taken from the model as before. It's also supported that only a subset of the specified global observables is stored in the data. --- roofit/roofitcore/inc/RooConstraintSum.h | 2 +- roofit/roofitcore/src/RooAbsPdf.cxx | 2 +- roofit/roofitcore/src/RooConstraintSum.cxx | 71 ++++++++++++++++++---- 3 files changed, 62 insertions(+), 13 deletions(-) diff --git a/roofit/roofitcore/inc/RooConstraintSum.h b/roofit/roofitcore/inc/RooConstraintSum.h index d721e42761cfc..99b4225eac390 100644 --- a/roofit/roofitcore/inc/RooConstraintSum.h +++ b/roofit/roofitcore/inc/RooConstraintSum.h @@ -38,7 +38,7 @@ class RooConstraintSum : public RooAbsReal { static std::unique_ptr createConstraintTerm( std::string const& name, RooAbsPdf const& pdf, - RooArgSet const& observables, + RooAbsData const& data, RooArgSet const* constrainedParameters, RooArgSet const* externalConstraints, RooArgSet const* globalObservables, diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index 1a1a49a717597..0ff89897f5fdc 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -1122,7 +1122,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) auto constraintTerm = RooConstraintSum::createConstraintTerm( baseName + "_constr", // name *this, // pdf - *data.get(), // observables + data, // data pc.getSet("cPars"), // Constrain RooCmdArg pc.getSet("extCons"), // ExternalConstraints RooCmdArg pc.getSet("glObs"), // GlobalObservables RooCmdArg diff --git a/roofit/roofitcore/src/RooConstraintSum.cxx b/roofit/roofitcore/src/RooConstraintSum.cxx index 89f602b1f8155..2adb7ec76c99f 100644 --- a/roofit/roofitcore/src/RooConstraintSum.cxx +++ b/roofit/roofitcore/src/RooConstraintSum.cxx @@ -28,6 +28,7 @@ arguments. #include "RooConstraintSum.h" +#include "RooAbsData.h" #include "RooAbsReal.h" #include "RooAbsPdf.h" #include "RooErrorHandler.h" @@ -35,6 +36,8 @@ arguments. #include "RooMsgService.h" #include "RooHelpers.h" #include "RooWorkspace.h" +#include "RooAbsRealLValue.h" +#include "RooAbsCategoryLValue.h" #include @@ -155,8 +158,10 @@ RooArgSet const* tryToGetConstraintSetFromWorkspace( /// \param[in] pdf The pdf model whose parameters should be constrained. /// Constraint terms will be extracted from RooProdPdf instances /// that are servers of the pdf (internal constraints). -/// \param[in] observables Observable variables (used to determine which model -/// variables are parameters). +/// \param[in] data Dataset used in the fit with the constraint sum. It is +/// used to figure out which are the observables and also to get the +/// global observables definition and values if they are stored in +/// the dataset. /// \param[in] constraints Set of parameters to constrain. If `nullptr`, all /// parameters will be considered. /// \param[in] externalConstraints Set of constraint terms that are not @@ -174,13 +179,15 @@ RooArgSet const* tryToGetConstraintSetFromWorkspace( std::unique_ptr RooConstraintSum::createConstraintTerm( std::string const& name, RooAbsPdf const& pdf, - RooArgSet const& observables, + RooAbsData const& data, RooArgSet const* constrainedParameters, RooArgSet const* externalConstraints, RooArgSet const* globalObservables, const char* globalObservablesTag, RooWorkspace * workspace) { + RooArgSet const& observables = *data.get(); + bool doStripDisconnected = false ; // If no explicit list of parameters to be constrained is specified apply default algorithm @@ -221,17 +228,59 @@ std::unique_ptr RooConstraintSum::createConstraintTerm( } } - auto glObs = getGlobalObservables(pdf, globalObservables, globalObservablesTag); - if (!allConstraints.empty()) { - oocoutI(&pdf, Minimization) << " Including the following constraint terms in minimization: " << allConstraints << std::endl ; - if (glObs) { - oocoutI(&pdf, Minimization) << "The following global observables have been defined: " << *glObs << std::endl ; + oocoutI(&pdf, Minimization) << " Including the following constraint terms in minimization: " + << allConstraints << std::endl ; + + // Identify global observables in the model. + auto glObs = getGlobalObservables(pdf, globalObservables, globalObservablesTag); + if(data.getGlobalObservables()) { + if(!glObs) { + // There were no global observables specified, but there are some in the + // dataset. We will just take them from the dataset. + oocoutI(&pdf, Minimization) + << "The following global observables have been automatically defined according to the dataset " + << "which also provides their values: " << *data.getGlobalObservables() << std::endl; + glObs = std::make_unique(*data.getGlobalObservables()); + } else { + // There are global observables specified by the user and also some in + // the dataset. + RooArgSet globalsFromDataset; + data.getGlobalObservables()->selectCommon(*glObs, globalsFromDataset); + oocoutI(&pdf, Minimization) + << "The following global observables have been defined: " << *glObs + << "," << " with the values of " << globalsFromDataset << " obtained from the dataset." << std::endl; + } + } else if(glObs) { + oocoutI(&pdf, Minimization) + << "The following global observables have been defined: " << *glObs << std::endl; } - auto constraintTerm = std::make_unique(name.c_str(),"nllCons",allConstraints,glObs ? *glObs : cPars) ; - constraintTerm->setOperMode(RooAbsArg::ADirty) ; - return constraintTerm; + + // The constraint terms need to be cloned, because the global observables + // might be changed to have the same values as stored in data. + RooConstraintSum constraintTerm{name.c_str(),"nllCons", allConstraints, glObs ? *glObs : cPars}; + std::unique_ptr constraintTermClone{static_cast(constraintTerm.cloneTree())}; + + // Set the global observables values from the dataset if applicable + // Redirect the global observables to the ones from the dataset if applicable. + if(data.getGlobalObservables()) { + constraintTermClone->recursiveRedirectServers(*data.getGlobalObservables()) ; + } + + // The parameters that are not connected to global observables from data + // need to be redirected to the original args to get the changes made by + // the minimizer. This excludes the global observables, where we take the + // clones with the values set to the values from the dataset if available. + RooArgSet allOriginalParams; + constraintTerm.getParameters(data.getGlobalObservables(),allOriginalParams); + constraintTermClone->recursiveRedirectServers(allOriginalParams) ; + + // The computation graph for the constraints is very small, no need to do + // the tracking of clean and dirty nodes here. + constraintTermClone->setOperMode(RooAbsArg::ADirty) ; + + return constraintTermClone; } // no constraints From 9cbb2fc4f770e56440d1564cf7ec9160c913773f Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Wed, 25 Aug 2021 21:51:07 +0200 Subject: [PATCH 070/577] [RF] Implement `RooConstraintSum::setData()` Since the parameters of the RooConstraintSum need to be syncronized with the dataset now when global observables are used from the dataset, the `RooAbsReal::setData()` function needs to be overridden. --- roofit/roofitcore/inc/RooConstraintSum.h | 12 ++++++++--- roofit/roofitcore/src/RooConstraintSum.cxx | 24 +++++++++++++++------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/roofit/roofitcore/inc/RooConstraintSum.h b/roofit/roofitcore/inc/RooConstraintSum.h index 99b4225eac390..ffbcb9483f3df 100644 --- a/roofit/roofitcore/inc/RooConstraintSum.h +++ b/roofit/roofitcore/inc/RooConstraintSum.h @@ -31,7 +31,7 @@ class RooConstraintSum : public RooAbsReal { RooConstraintSum(const char *name, const char *title, const RooArgSet& constraintSet, const RooArgSet& paramSet) ; RooConstraintSum(const RooConstraintSum& other, const char* name = 0); - virtual TObject* clone(const char* newname) const { return new RooConstraintSum(*this, newname); } + virtual TObject* clone(const char* newname) const override { return new RooConstraintSum(*this, newname); } const RooArgList& list() { return _set1 ; } @@ -45,14 +45,20 @@ class RooConstraintSum : public RooAbsReal { const char* globalObservablesTag, RooWorkspace * workspace = nullptr); + bool setData(RooAbsData const& data, bool cloneData=true); + /// \copydoc setData(RooAbsData const&, bool) + bool setData(RooAbsData& data, bool cloneData=true) override { + return setData(static_cast(data), cloneData); + } + protected: RooListProxy _set1 ; // Set of constraint terms RooSetProxy _paramSet ; // Set of parameters to which constraints apply - Double_t evaluate() const; + Double_t evaluate() const override; - ClassDef(RooConstraintSum,2) // sum of -log of set of RooAbsPdf representing parameter constraints + ClassDefOverride(RooConstraintSum,2) // sum of -log of set of RooAbsPdf representing parameter constraints }; #endif diff --git a/roofit/roofitcore/src/RooConstraintSum.cxx b/roofit/roofitcore/src/RooConstraintSum.cxx index 2adb7ec76c99f..6fa6274145171 100644 --- a/roofit/roofitcore/src/RooConstraintSum.cxx +++ b/roofit/roofitcore/src/RooConstraintSum.cxx @@ -91,6 +91,19 @@ Double_t RooConstraintSum::evaluate() const } +//////////////////////////////////////////////////////////////////////////////// +/// Replace the variables in this RooConstraintSum with the global observables +/// in the dataset if they match by name. This function will do nothing if this +/// RooConstraintSum is configured to not use the global observables stored in +/// datasets. +bool RooConstraintSum::setData(RooAbsData const& data, bool /*cloneData=true*/) { + if(data.getGlobalObservables()) { + this->recursiveRedirectServers(*data.getGlobalObservables()) ; + } + return true; +} + + namespace { std::unique_ptr getGlobalObservables( @@ -262,20 +275,17 @@ std::unique_ptr RooConstraintSum::createConstraintTerm( RooConstraintSum constraintTerm{name.c_str(),"nllCons", allConstraints, glObs ? *glObs : cPars}; std::unique_ptr constraintTermClone{static_cast(constraintTerm.cloneTree())}; - // Set the global observables values from the dataset if applicable - // Redirect the global observables to the ones from the dataset if applicable. - if(data.getGlobalObservables()) { - constraintTermClone->recursiveRedirectServers(*data.getGlobalObservables()) ; - } - // The parameters that are not connected to global observables from data // need to be redirected to the original args to get the changes made by // the minimizer. This excludes the global observables, where we take the // clones with the values set to the values from the dataset if available. RooArgSet allOriginalParams; - constraintTerm.getParameters(data.getGlobalObservables(),allOriginalParams); + constraintTerm.getParameters(nullptr,allOriginalParams); constraintTermClone->recursiveRedirectServers(allOriginalParams) ; + // Redirect the global observables to the ones from the dataset if applicable. + static_cast(constraintTermClone.get())->setData(data, false) ; + // The computation graph for the constraints is very small, no need to do // the tracking of clean and dirty nodes here. constraintTermClone->setOperMode(RooAbsArg::ADirty) ; From 1bd4475bb22715c5d21f4bd578b7e479cc7cbe4e Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 3 Sep 2021 12:28:44 +0200 Subject: [PATCH 071/577] [RF] New `GlobalObservablesSource` cmd arg for `RooAbsPdf::createNLL` The `GlobalObservablesSource` command argument can take one of two values: * `data`: to take the values from the dataset, falling back to the pdf value if a given global observable is not available. If no `GlobalObservables` or `GlobalObservablesTag` command argument is given, the set of global observables will be automatically defined to be the set stored in the data. * `model`: to take all values from the pdf and completely ignore the set of global observables stored in the data (not even using it to automatically define the set of global observables if the `GlobalObservables` or `GlobalObservablesTag` command arguments are not given). The default option is `data`. The `model` option basically means to ignore the new feature of global observables stored in the dataset. A unit test to implement that the `model` source works is also implemented in this commit. --- roofit/roofitcore/inc/RooConstraintSum.h | 6 +++-- roofit/roofitcore/inc/RooGlobalFunc.h | 10 +++++--- roofit/roofitcore/src/RooAbsPdf.cxx | 24 ++++++++++++++++++- roofit/roofitcore/src/RooConstraintSum.cxx | 27 +++++++++++++++------- roofit/roofitcore/src/RooGlobalFunc.cxx | 4 +--- 5 files changed, 54 insertions(+), 17 deletions(-) diff --git a/roofit/roofitcore/inc/RooConstraintSum.h b/roofit/roofitcore/inc/RooConstraintSum.h index ffbcb9483f3df..f0942f96b2c0d 100644 --- a/roofit/roofitcore/inc/RooConstraintSum.h +++ b/roofit/roofitcore/inc/RooConstraintSum.h @@ -28,7 +28,7 @@ class RooConstraintSum : public RooAbsReal { public: RooConstraintSum() {} - RooConstraintSum(const char *name, const char *title, const RooArgSet& constraintSet, const RooArgSet& paramSet) ; + RooConstraintSum(const char *name, const char *title, const RooArgSet& constraintSet, const RooArgSet& paramSet, bool takeGlobalObservablesFromData=false) ; RooConstraintSum(const RooConstraintSum& other, const char* name = 0); virtual TObject* clone(const char* newname) const override { return new RooConstraintSum(*this, newname); } @@ -43,6 +43,7 @@ class RooConstraintSum : public RooAbsReal { RooArgSet const* externalConstraints, RooArgSet const* globalObservables, const char* globalObservablesTag, + bool takeGlobalObservablesFromData, RooWorkspace * workspace = nullptr); bool setData(RooAbsData const& data, bool cloneData=true); @@ -55,10 +56,11 @@ class RooConstraintSum : public RooAbsReal { RooListProxy _set1 ; // Set of constraint terms RooSetProxy _paramSet ; // Set of parameters to which constraints apply + const bool _takeGlobalObservablesFromData = false; // If the global observable values are taken from data Double_t evaluate() const override; - ClassDefOverride(RooConstraintSum,2) // sum of -log of set of RooAbsPdf representing parameter constraints + ClassDefOverride(RooConstraintSum,3) // sum of -log of set of RooAbsPdf representing parameter constraints }; #endif diff --git a/roofit/roofitcore/inc/RooGlobalFunc.h b/roofit/roofitcore/inc/RooGlobalFunc.h index e22f5341bfb3d..0e8b2a0372bac 100644 --- a/roofit/roofitcore/inc/RooGlobalFunc.h +++ b/roofit/roofitcore/inc/RooGlobalFunc.h @@ -239,10 +239,14 @@ RooCmdArg SplitRange(Bool_t flag=kTRUE) ; RooCmdArg SumCoefRange(const char* rangeName) ; RooCmdArg Constrain(const RooArgSet& params) ; RooCmdArg Constrain(RooArgSet && params) ; -RooCmdArg GlobalObservables(const RooArgSet& globs) ; -RooCmdArg GlobalObservables(RooArgSet && globs) ; + +template +RooCmdArg GlobalObservables(Args_t &&... argsOrArgSet) { + return RooCmdArg("GlobalObservables",0,0,0,0,0,0,0,0,0,0, + &RooCmdArg::take(RooArgSet{std::forward(argsOrArgSet)...})); +} +RooCmdArg GlobalObservablesSource(const char* sourceName); RooCmdArg GlobalObservablesTag(const char* tagName) ; -//RooCmdArg Constrained() ; RooCmdArg ExternalConstraints(const RooArgSet& constraintPdfs) ; RooCmdArg ExternalConstraints(RooArgSet && constraintPdfs) ; RooCmdArg PrintEvalErrors(Int_t numErrors) ; diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index 0ff89897f5fdc..759c9a4507026 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -891,6 +891,16 @@ Double_t RooAbsPdf::extendedTerm(Double_t observed, const RooArgSet* nset) const /// `ExternalConstraints(const RooArgSet& )` Include given external constraints to likelihood by multiplying them with the original likelihood. /// `GlobalObservables(const RooArgSet&)` Define the set of normalization observables to be used for the constraint terms. /// If none are specified the constrained parameters are used. +/// `GlobalObservablesSource(const char* sourceName)` Which source to prioritize for global observable values. +/// Can be either: +/// - `data`: to take the values from the dataset, +/// falling back to the pdf value if a given global observable is not available. +/// If no `GlobalObservables` or `GlobalObservablesTag` command argument is given, the set +/// of global observables will be automatically defined to be the set stored in the data. +/// - `model`: to take all values from the pdf and completely ignore the set of global observables stored in the data +/// (not even using it to automatically define the set of global observables +/// if the `GlobalObservables` or `GlobalObservablesTag` command arguments are not given). +/// The default option is `data`. /// `GlobalObservablesTag(const char* tagName)` Define the set of normalization observables to be used for the constraint terms by /// a string attribute associated with pdf observables that match the given tagName. /// `Verbose(Bool_t flag)` Controls RooFit informational messages in likelihood construction @@ -984,6 +994,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) pc.defineString("rangeName","RangeWithName",0,"",kTRUE) ; pc.defineString("addCoefRange","SumCoefRange",0,"") ; pc.defineString("globstag","GlobalObservablesTag",0,"") ; + pc.defineString("globssource","GlobalObservablesSource",0,"data") ; pc.defineDouble("rangeLo","Range",0,-999.) ; pc.defineDouble("rangeHi","Range",1,-999.) ; pc.defineInt("splitRange","SplitRange",0,0) ; @@ -1119,6 +1130,15 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) } RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ; + const std::string globalObservablesSource = pc.getString("globssource","data",false); + if(globalObservablesSource != "data" && globalObservablesSource != "model") { + std::string errMsg = "RooAbsPdf::fitTo: GlobalObservablesSource can only be \"data\" or \"model\"!"; + coutE(InputArguments) << errMsg << std::endl; + throw std::invalid_argument(errMsg); + } + const bool takeGlobsFromData = globalObservablesSource == "data"; + + auto constraintTerm = RooConstraintSum::createConstraintTerm( baseName + "_constr", // name *this, // pdf @@ -1127,6 +1147,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) pc.getSet("extCons"), // ExternalConstraints RooCmdArg pc.getSet("glObs"), // GlobalObservables RooCmdArg pc.getString("globstag",0,true), // GlobalObservablesTag RooCmdArg + takeGlobalObservablesFromData, // From GlobalObservablesSource RooCmdArg _myws // passing workspace to cache the set of constraints ); @@ -1557,7 +1578,8 @@ RooFitResult* RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList) RooLinkedList fitCmdList(cmdList) ; RooLinkedList nllCmdList = pc.filterCmdList(fitCmdList,"ProjectedObservables,Extended,Range," "RangeWithName,SumCoefRange,NumCPU,SplitRange,Constrained,Constrain,ExternalConstraints," - "CloneData,GlobalObservables,GlobalObservablesTag,OffsetLikelihood,BatchMode,IntegrateBins"); + "CloneData,GlobalObservables,GlobalObservablesSource,GlobalObservablesTag,OffsetLikelihood," + "BatchMode,IntegrateBins"); // Default-initialized instance of MinimizerConfig to get the default // minimizer parameter values. diff --git a/roofit/roofitcore/src/RooConstraintSum.cxx b/roofit/roofitcore/src/RooConstraintSum.cxx index 6fa6274145171..0cdb6372ac75f 100644 --- a/roofit/roofitcore/src/RooConstraintSum.cxx +++ b/roofit/roofitcore/src/RooConstraintSum.cxx @@ -47,10 +47,11 @@ ClassImp(RooConstraintSum); //////////////////////////////////////////////////////////////////////////////// /// Constructor with set of constraint p.d.f.s. All elements in constraintSet must inherit from RooAbsPdf. -RooConstraintSum::RooConstraintSum(const char* name, const char* title, const RooArgSet& constraintSet, const RooArgSet& normSet) : +RooConstraintSum::RooConstraintSum(const char* name, const char* title, const RooArgSet& constraintSet, const RooArgSet& normSet, bool takeGlobalObservablesFromData) : RooAbsReal(name, title), _set1("set1","First set of components",this), - _paramSet("paramSet","Set of parameters",this) + _paramSet("paramSet","Set of parameters",this), + _takeGlobalObservablesFromData{takeGlobalObservablesFromData} { for (const auto comp : constraintSet) { if (!dynamic_cast(comp)) { @@ -71,7 +72,8 @@ RooConstraintSum::RooConstraintSum(const char* name, const char* title, const Ro RooConstraintSum::RooConstraintSum(const RooConstraintSum& other, const char* name) : RooAbsReal(other, name), _set1("set1",this,other._set1), - _paramSet("paramSet",this,other._paramSet) + _paramSet("paramSet",this,other._paramSet), + _takeGlobalObservablesFromData{other._takeGlobalObservablesFromData} { } @@ -97,7 +99,7 @@ Double_t RooConstraintSum::evaluate() const /// RooConstraintSum is configured to not use the global observables stored in /// datasets. bool RooConstraintSum::setData(RooAbsData const& data, bool /*cloneData=true*/) { - if(data.getGlobalObservables()) { + if(_takeGlobalObservablesFromData && data.getGlobalObservables()) { this->recursiveRedirectServers(*data.getGlobalObservables()) ; } return true; @@ -188,6 +190,12 @@ RooArgSet const* tryToGetConstraintSetFromWorkspace( /// used. The `globalObservables` and `globalObservablesTag` /// parameters are mutually exclusive, meaning at least one of them /// has to be `nullptr`. +/// \param[in] takeGlobalObservablesFromData If the dataset should be used to automatically +/// define the set of global observables. If this is the case and the +/// set of global observables is still defined manually with the +/// `globalObservables` or `globalObservablesTag` parameters, the +/// values of all global observables that are not stored in the +/// dataset are taken from the model. /// \param[in] workspace RooWorkspace to cache the set of constraints. std::unique_ptr RooConstraintSum::createConstraintTerm( std::string const& name, @@ -197,6 +205,7 @@ std::unique_ptr RooConstraintSum::createConstraintTerm( RooArgSet const* externalConstraints, RooArgSet const* globalObservables, const char* globalObservablesTag, + bool takeGlobalObservablesFromData, RooWorkspace * workspace) { RooArgSet const& observables = *data.get(); @@ -248,7 +257,7 @@ std::unique_ptr RooConstraintSum::createConstraintTerm( // Identify global observables in the model. auto glObs = getGlobalObservables(pdf, globalObservables, globalObservablesTag); - if(data.getGlobalObservables()) { + if(data.getGlobalObservables() && takeGlobalObservablesFromData) { if(!glObs) { // There were no global observables specified, but there are some in the // dataset. We will just take them from the dataset. @@ -263,16 +272,18 @@ std::unique_ptr RooConstraintSum::createConstraintTerm( data.getGlobalObservables()->selectCommon(*glObs, globalsFromDataset); oocoutI(&pdf, Minimization) << "The following global observables have been defined: " << *glObs - << "," << " with the values of " << globalsFromDataset << " obtained from the dataset." << std::endl; + << "," << " with the values of " << globalsFromDataset + << " obtained from the dataset and the other values from the model." << std::endl; } } else if(glObs) { oocoutI(&pdf, Minimization) - << "The following global observables have been defined: " << *glObs << std::endl; + << "The following global observables have been defined and their values are taken from the model: " + << *glObs << std::endl; } // The constraint terms need to be cloned, because the global observables // might be changed to have the same values as stored in data. - RooConstraintSum constraintTerm{name.c_str(),"nllCons", allConstraints, glObs ? *glObs : cPars}; + RooConstraintSum constraintTerm{name.c_str(),"nllCons", allConstraints, glObs ? *glObs : cPars, takeGlobalObservablesFromData}; std::unique_ptr constraintTermClone{static_cast(constraintTerm.cloneTree())}; // The parameters that are not connected to global observables from data diff --git a/roofit/roofitcore/src/RooGlobalFunc.cxx b/roofit/roofitcore/src/RooGlobalFunc.cxx index 5661e33a44200..5e8ca5558ccf4 100644 --- a/roofit/roofitcore/src/RooGlobalFunc.cxx +++ b/roofit/roofitcore/src/RooGlobalFunc.cxx @@ -222,10 +222,8 @@ namespace RooFit { RooCmdArg SumCoefRange(const char* rangeName) { return RooCmdArg("SumCoefRange",0,0,0,0,rangeName,0,0,0) ; } RooCmdArg Constrain(const RooArgSet& params) { return RooCmdArg("Constrain",0,0,0,0,0,0,0,0,0,0,¶ms) ; } RooCmdArg Constrain(RooArgSet && params) { return Constrain(RooCmdArg::take(std::move(params))); } - RooCmdArg GlobalObservables(const RooArgSet& globs) { return RooCmdArg("GlobalObservables",0,0,0,0,0,0,0,0,0,0,&globs) ; } - RooCmdArg GlobalObservables(RooArgSet && globs) { return GlobalObservables(RooCmdArg::take(std::move(globs))); } + RooCmdArg GlobalObservablesSource(const char* sourceName) { return {"GlobalObservablesSource",0,0,0,0,sourceName,0,0,0}; } RooCmdArg GlobalObservablesTag(const char* tagName) { return RooCmdArg("GlobalObservablesTag",0,0,0,0,tagName,0,0,0) ; } -// RooCmdArg Constrained() { return RooCmdArg("Constrained",kTRUE,0,0,0,0,0,0,0) ; } RooCmdArg ExternalConstraints(const RooArgSet& cpdfs) { return RooCmdArg("ExternalConstraints",0,0,0,0,0,0,&cpdfs,0,0,0,&cpdfs) ; } RooCmdArg ExternalConstraints(RooArgSet && cpdfs) { return ExternalConstraints(RooCmdArg::take(std::move(cpdfs))); } RooCmdArg PrintEvalErrors(Int_t numErrors) { return RooCmdArg("PrintEvalErrors",numErrors,0,0,0,0,0,0,0) ; } From 6125567170d68ab7c3999561c194ab4ab436e736 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 3 Sep 2021 18:07:54 +0200 Subject: [PATCH 072/577] [RF] Redirect global observables to dataset also outside of constraints The global observables need to be treated consistently in the constraint sum and the actual likelihood term, even though it would be unusual that global observables appear in the likelihood outside of the constraints. --- roofit/roofitcore/inc/RooAbsTestStatistic.h | 4 ++- .../roofitcore/src/RooAbsOptTestStatistic.cxx | 25 ++++++++++++++--- roofit/roofitcore/src/RooAbsPdf.cxx | 18 ++++++------ roofit/roofitcore/src/RooAbsTestStatistic.cxx | 28 +++++++++---------- 4 files changed, 47 insertions(+), 28 deletions(-) diff --git a/roofit/roofitcore/inc/RooAbsTestStatistic.h b/roofit/roofitcore/inc/RooAbsTestStatistic.h index 5274220bbb121..bc9407ff2b211 100644 --- a/roofit/roofitcore/inc/RooAbsTestStatistic.h +++ b/roofit/roofitcore/inc/RooAbsTestStatistic.h @@ -51,6 +51,7 @@ class RooAbsTestStatistic : public RooAbsReal { bool cloneInputData = true; double integrateOverBinsPrecision = -1.; bool binnedL = false; + bool takeGlobalObservablesFromData = false; }; // Constructors, assignment etc @@ -155,10 +156,11 @@ class RooAbsTestStatistic : public RooAbsReal { RooFit::MPSplit _mpinterl = RooFit::BulkPartition; // Use interleaving strategy rather than N-wise split for partioning of dataset for multiprocessor-split Bool_t _doOffset = false; // Apply interval value offset to control numeric precision? + const bool _takeGlobalObservablesFromData = false; // If the global observable values are taken from data mutable ROOT::Math::KahanSum _offset = 0.0; //! Offset as KahanSum to avoid loss of precision mutable Double_t _evalCarry = 0.0; //! carry of Kahan sum in evaluatePartition - ClassDef(RooAbsTestStatistic,2) // Abstract base class for real-valued test statistics + ClassDef(RooAbsTestStatistic,3) // Abstract base class for real-valued test statistics }; diff --git a/roofit/roofitcore/src/RooAbsOptTestStatistic.cxx b/roofit/roofitcore/src/RooAbsOptTestStatistic.cxx index 42ae9f78af5c2..3489723fe306b 100644 --- a/roofit/roofitcore/src/RooAbsOptTestStatistic.cxx +++ b/roofit/roofitcore/src/RooAbsOptTestStatistic.cxx @@ -410,6 +410,13 @@ void RooAbsOptTestStatistic::initSlave(RooAbsReal& real, RooAbsData& indata, con optimizeCaching() ; + // It would be unusual if the global observables are used in the likelihood + // outside of the constraint terms, but if they are we have to be consistent + // and also redirect them to the snapshots in the dataset if appropriate. + if(_takeGlobalObservablesFromData && _data->getGlobalObservables()) { + recursiveRedirectServers(*_data->getGlobalObservables()) ; + } + } @@ -716,10 +723,15 @@ Bool_t RooAbsOptTestStatistic::setDataSlave(RooAbsData& indata, Bool_t cloneData //indata.Print("v") ; - // Delete previous dataset now, if it was owned + // If the current dataset is owned, transfer the ownership to unique pointer + // that will get out of scope at the end of this function. We can't delete it + // right now, because there might be global observables in the model that + // first need to be redirected to the new dataset with a later call to + // RooAbsArg::recursiveRedirectServers. + std::unique_ptr oldOwnedData; if (_ownData) { - delete _dataClone ; - _dataClone = 0 ; + oldOwnedData.reset(_dataClone); + _dataClone = nullptr ; } if (!cloneData && _rangeName.size()>0) { @@ -760,7 +772,12 @@ Bool_t RooAbsOptTestStatistic::setDataSlave(RooAbsData& indata, Bool_t cloneData setValueDirty() ; -// cout << "RAOTS::setDataSlave(" << this << ") END" << endl ; + // It would be unusual if the global observables are used in the likelihood + // outside of the constraint terms, but if they are we have to be consistent + // and also redirect them to the snapshots in the dataset if appropriate. + if(_takeGlobalObservablesFromData && _data->getGlobalObservables()) { + recursiveRedirectServers(*_data->getGlobalObservables()) ; + } return kTRUE ; } diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index 759c9a4507026..f8ddc456af029 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -1078,6 +1078,14 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) projDeps.add(*tmp) ; } + const std::string globalObservablesSource = pc.getString("globssource","data",false); + if(globalObservablesSource != "data" && globalObservablesSource != "model") { + std::string errMsg = "RooAbsPdf::fitTo: GlobalObservablesSource can only be \"data\" or \"model\"!"; + coutE(InputArguments) << errMsg << std::endl; + throw std::invalid_argument(errMsg); + } + const bool takeGlobalObservablesFromData = globalObservablesSource == "data"; + // Construct NLL RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ; RooAbsReal* nll ; @@ -1091,6 +1099,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) cfg.cloneInputData = static_cast(cloneData); cfg.integrateOverBinsPrecision = pc.getDouble("IntegrateBins"); cfg.binnedL = false; + cfg.takeGlobalObservablesFromData = takeGlobalObservablesFromData; if (!rangeName || strchr(rangeName,',')==0) { // Simple case: default range, or single restricted range //cout<<"FK: Data test 1: "<1 || cfg.nCPU==-1) ? MPMaster : (dynamic_cast(_func) ? SimMaster : Slave)}, _nEvents{data.numEntries()}, _nCPU(cfg.nCPU != -1 ? cfg.nCPU : 1), - _mpinterl(cfg.interleave) + _mpinterl(cfg.interleave), + _takeGlobalObservablesFromData{cfg.takeGlobalObservablesFromData} { // Register all parameters as servers _paramSet.add(*std::unique_ptr{real.getParameters(&data)}); @@ -138,6 +139,7 @@ RooAbsTestStatistic::RooAbsTestStatistic(const RooAbsTestStatistic& other, const _nCPU(other._nCPU != -1 ? other._nCPU : 1), _mpinterl(other._mpinterl), _doOffset(other._doOffset), + _takeGlobalObservablesFromData{other._takeGlobalObservablesFromData}, _offset(other._offset), _evalCarry(other._evalCarry) { @@ -412,6 +414,7 @@ void RooAbsTestStatistic::initMPMode(RooAbsReal* real, RooAbsData* data, const R cfg.interleave = _mpinterl; cfg.verbose = _verbose; cfg.splitCutRange = _splitRange; + cfg.takeGlobalObservablesFromData = _takeGlobalObservablesFromData; // This configuration parameter is stored in the RooAbsOptTestStatistic. // It would have been cleaner to move the member variable into RooAbsTestStatistic, // but to avoid incrementing the class version we do the dynamic_cast trick. @@ -524,6 +527,7 @@ void RooAbsTestStatistic::initSimMode(RooSimultaneous* simpdf, RooAbsData* data, cfg.verbose = _verbose; cfg.splitCutRange = _splitRange; cfg.binnedL = binnedL; + cfg.takeGlobalObservablesFromData = _takeGlobalObservablesFromData; // This configuration parameter is stored in the RooAbsOptTestStatistic. // It would have been cleaner to move the member variable into RooAbsTestStatistic, // but to avoid incrementing the class version we do the dynamic_cast trick. @@ -601,20 +605,19 @@ Bool_t RooAbsTestStatistic::setData(RooAbsData& indata, Bool_t cloneData) return setDataSlave(indata, cloneData); case SimMaster: // Forward to slaves - // cout << "RATS::setData(" << GetName() << ") SimMaster, calling setDataSlave() on slave nodes" << endl; if (indata.canSplitFast()) { - for (Int_t i = 0; i < _nGof; ++i) { - RooAbsData* compData = indata.getSimData(_gofArray[i]->GetName()); - _gofArray[i]->setDataSlave(*compData, cloneData); + for (int i = 0; i < _nGof; ++i) { + RooAbsData* compData = indata.getSimData(_gofArray[i]->GetName()); + _gofArray[i]->setDataSlave(*compData, cloneData); } } else if (0 == indata.numEntries()) { // For an unsplit empty dataset, simply assign empty dataset to each component - for (Int_t i = 0; i < _nGof; ++i) { - _gofArray[i]->setDataSlave(indata, cloneData); + for (int i = 0; i < _nGof; ++i) { + _gofArray[i]->setDataSlave(indata, cloneData); } } else { const RooAbsCategoryLValue& indexCat = static_cast(_func)->indexCat(); - TList* dlist = indata.split(indexCat, kTRUE); + std::unique_ptr dlist{indata.split(indexCat, true)}; if (!dlist) { coutF(DataHandling) << "Tried to split '" << indata.GetName() << "' into categories of '" << indexCat.GetName() << "', but splitting failed. Input data:" << std::endl; @@ -622,16 +625,13 @@ Bool_t RooAbsTestStatistic::setData(RooAbsData& indata, Bool_t cloneData) throw std::runtime_error("Error when setting up test statistic: dataset couldn't be split into categories."); } - for (Int_t i = 0; i < _nGof; ++i) { - RooAbsData* compData = (RooAbsData*) dlist->FindObject(_gofArray[i]->GetName()); - // cout << "component data for index " << _gofArray[i]->GetName() << " is " << compData << endl; - if (compData) { + for (int i = 0; i < _nGof; ++i) { + if (auto compData = static_cast(dlist->FindObject(_gofArray[i]->GetName()))) { _gofArray[i]->setDataSlave(*compData,kFALSE,kTRUE); } else { coutE(DataHandling) << "RooAbsTestStatistic::setData(" << GetName() << ") ERROR: Cannot find component data for state " << _gofArray[i]->GetName() << endl; } } - delete dlist; // delete only list, data will be used } break; case MPMaster: @@ -641,7 +641,7 @@ Bool_t RooAbsTestStatistic::setData(RooAbsData& indata, Bool_t cloneData) break; } - return kTRUE; + return true; } From f8897ea66264aa8a818b4074c88303fcc8c18376 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Wed, 25 Aug 2021 21:54:45 +0200 Subject: [PATCH 073/577] [RF] New testGlobalObservables to validate global observables in data --- roofit/roofitcore/test/CMakeLists.txt | 2 +- .../roofitcore/test/testGlobalObservables.cxx | 432 ++++++++++++++++++ 2 files changed, 433 insertions(+), 1 deletion(-) create mode 100644 roofit/roofitcore/test/testGlobalObservables.cxx diff --git a/roofit/roofitcore/test/CMakeLists.txt b/roofit/roofitcore/test/CMakeLists.txt index d64fd2252bbc8..4e2e833eb70e1 100644 --- a/roofit/roofitcore/test/CMakeLists.txt +++ b/roofit/roofitcore/test/CMakeLists.txt @@ -44,6 +44,6 @@ ROOT_ADD_GTEST(testRooProductPdf testRooProductPdf.cxx LIBRARIES RooFitCore) ROOT_ADD_GTEST(testNaNPacker testNaNPacker.cxx LIBRARIES RooFitCore) ROOT_ADD_GTEST(testRooSimultaneous testRooSimultaneous.cxx LIBRARIES RooFitCore RooFit) ROOT_ADD_GTEST(testRooGradMinimizerFcn testRooGradMinimizerFcn.cxx LIBRARIES RooFitCore) - ROOT_ADD_GTEST(testLikelihoodSerial TestStatistics/testLikelihoodSerial.cxx LIBRARIES RooFitCore RooFit) ROOT_ADD_GTEST(testRooRealL TestStatistics/RooRealL.cpp LIBRARIES RooFitCore RooFit) +ROOT_ADD_GTEST(testGlobalObservables testGlobalObservables.cxx LIBRARIES RooFit) diff --git a/roofit/roofitcore/test/testGlobalObservables.cxx b/roofit/roofitcore/test/testGlobalObservables.cxx new file mode 100644 index 0000000000000..fdf4799cf1a04 --- /dev/null +++ b/roofit/roofitcore/test/testGlobalObservables.cxx @@ -0,0 +1,432 @@ +// Tests for global observables +// Authors: Jonas Rembser, CERN 08/2021 + +#include "RooRealVar.h" +#include "RooMsgService.h" +#include "RooGaussian.h" +#include "RooPolynomial.h" +#include "RooAddPdf.h" +#include "RooDataSet.h" +#include "RooProdPdf.h" +#include "RooFitResult.h" +#include "RooConstVar.h" +#include "RooPoisson.h" +#include "RooProduct.h" +#include "RooWorkspace.h" + +#include "gtest/gtest.h" + +#include +#include + +namespace { + +// Helper function to check if two RooFitResults are not identical. +// We can't use RooFitResult::isIdentical() here, because it will print +// something when the comparison fails even with verbose set to false. +bool isNotIdentical(RooFitResult const &res1, RooFitResult const &res2) +{ + std::size_t n = res1.floatParsFinal().size(); + if (n != res2.floatParsFinal().size()) + return true; + for (std::size_t i = 0; i < n; ++i) { + if (static_cast(res1.floatParsFinal()[i]).getVal() != + static_cast(res2.floatParsFinal()[i]).getVal()) + return true; + } + return false; +} + +} // namespace + +// Test environment to verify that if we use the feature of storing global +// observables in a RooDataSet, we can reproduce the same fit results as when +// we track the global observables separately. +class TestGlobalObservables : public ::testing::Test { +public: + void SetUp() override + { + // silence log output + RooMsgService::instance().setGlobalKillBelow(RooFit::WARNING); + + // observables + RooRealVar x("x", "x", 0.0, 0.0, 20.0); + + // global observables, always constant in fits + RooRealVar gm("gm", "gm", 11.0, 0.0, 20.0); + RooRealVar gs("gs", "gs", 1.0, 0.1, 10.0); + gm.setConstant(true); + gs.setConstant(true); + + // constrained parameters + RooRealVar f("f", "f", 0.5, 0.0, 1.0); + + // other parameters + RooRealVar m("m", "m", 10.0, 0.0, 20.0); + RooRealVar s("s", "s", 2.0, 0.1, 10.0); + + // We use the global observable also in the model for the event + // observables. It's unusual, but let's better do this to also cover the + // corner case where the global observable is not only part of the + // constraint term. + RooProduct sigma{"sigma", "sigma", {s, gs}}; + + // build the unconstrained model + RooGaussian model("model", "model", x, m, sigma); + + // the constraint pdfs, they are RooPoisson so we can't have tests that accidentally + // pass because of the symmetry of normalizing over x or mu + RooPoisson mconstraint("mconstraint", "mconstraint", gm, m); + RooPoisson sconstraint("sconstraint", "sconstraint", gs, s); + + // the model multiplied with the constraint term + RooProdPdf modelc("modelc", "modelc", RooArgSet(model, mconstraint, sconstraint)); + + // generate small dataset for use in fitting below, also cloned versions + // with one or two global observables attached + _data.reset(model.generate(x, 50)); + + _dataWithMeanSigmaGlobs.reset( + static_cast(_data->Clone((std::string(_data->GetName()) + "_gm_gs").c_str()))); + _dataWithMeanSigmaGlobs->setGlobalObservables({gm, gs}); + + _dataWithMeanGlob.reset(static_cast(_data->Clone((std::string(_data->GetName()) + "_gm").c_str()))); + _dataWithMeanGlob->setGlobalObservables(gm); + + _workspace = std::make_unique("workspace", "workspace"); + _workspace->import(modelc); + } + + // reset the parameter values to initial values before fits + void resetParameters() + { + std::vector names{"x", "m", "s", "gm", "gs"}; + std::vector values{0.0, 10.0, 2.0, 11.0, 1.0}; + for (std::size_t i = 0; i < names.size(); ++i) { + auto *var = _workspace->var(names[i].c_str()); + var->setVal(values[i]); + var->setError(0.0); + } + } + + RooWorkspace &ws() { return *_workspace; } + RooDataSet &data() { return *_data; } + RooDataSet &dataWithMeanSigmaGlobs() { return *_dataWithMeanSigmaGlobs; } + RooDataSet &dataWithMeanGlob() { return *_dataWithMeanGlob; } + RooAbsPdf &model() { return *ws().pdf("model"); } + RooAbsPdf &modelc() { return *ws().pdf("modelc"); } + + std::unique_ptr doFit(RooAbsPdf &model, RooAbsData &data, RooCmdArg const &arg1 = RooCmdArg::none(), + RooCmdArg const &arg2 = RooCmdArg::none(), + RooCmdArg const &arg3 = RooCmdArg::none(), + RooCmdArg const &arg4 = RooCmdArg::none()) + { + using namespace RooFit; + return std::unique_ptr( + model.fitTo(data, Save(), Verbose(false), PrintLevel(-1), arg1, arg2, arg3, arg4)); + } + + void TearDown() override + { + _workspace.reset(); + _data.reset(); + _dataWithMeanSigmaGlobs.reset(); + _data.reset(); + } + +private: + std::unique_ptr _workspace; + std::unique_ptr _data; + std::unique_ptr _dataWithMeanSigmaGlobs; + std::unique_ptr _dataWithMeanGlob; +}; + +TEST_F(TestGlobalObservables, NoConstraints) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + + // fit with no constraints + resetParameters(); + auto res1 = doFit(model(), data()); + resetParameters(); + // vary global observable to verify true value is picked up from the dataset + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + double gmVaryVal = gm.getVal(); + double gsVaryVal = gs.getVal(); + auto res2 = doFit(model(), dataWithMeanSigmaGlobs()); + EXPECT_TRUE(res1->isIdentical(*res2)) << "fitting an unconstrained model " + "gave a different result when unrelated global observables were stored in " + "the dataset"; + + // verify that taking the global observable values from data has not changed + // the values in the model + { + const auto message = "taking the global observable values from data has changed the values in the model"; + EXPECT_EQ(gmVaryVal, gm.getVal()) << message; + EXPECT_EQ(gsVaryVal, gs.getVal()) << message; + } +} + +TEST_F(TestGlobalObservables, InternalConstrains) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + + // constrained fit with RooProdPdf + resetParameters(); + auto res1 = doFit(modelc(), data(), GlobalObservables(gm, gs)); + resetParameters(); + // vary global observable to verify true value is picked up from the dataset + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + double gmVaryVal = gm.getVal(); + double gsVaryVal = gs.getVal(); + auto res2 = doFit(modelc(), dataWithMeanSigmaGlobs()); + EXPECT_TRUE(res1->isIdentical(*res2)) << "fitting an model with internal " + "constraints in a RooPrdPdf gave a different result when global " + "observables were stored in the dataset"; + + // verify that taking the global observable values from data has not changed + // the values in the model + { + const auto message = "taking the global observable values from data has changed the values in the model"; + EXPECT_EQ(gmVaryVal, gm.getVal()) << message; + EXPECT_EQ(gsVaryVal, gs.getVal()) << message; + } +} + +TEST_F(TestGlobalObservables, ExternalConstraints) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + auto &mconstraint = *ws().pdf("mconstraint"); + auto &sconstraint = *ws().pdf("sconstraint"); + + // constrained fit with external constraints + resetParameters(); + auto res1 = doFit(model(), data(), ExternalConstraints({mconstraint, sconstraint}), GlobalObservables(gm, gs)); + resetParameters(); + // vary global observable to verify true value is picked up from the dataset + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + double gmVaryVal = gm.getVal(); + double gsVaryVal = gs.getVal(); + auto res2 = doFit(model(), dataWithMeanSigmaGlobs(), ExternalConstraints({mconstraint, sconstraint})); + EXPECT_TRUE(res1->isIdentical(*res2)) + << "fitting an model with external " + "constraints passed via ExternalConstraints() gave a different result when global " + "observables were stored in the dataset"; + + // verify that taking the global observable values from data has not changed + // the values in the model + { + const auto message = "taking the global observable values from data has changed the values in the model"; + EXPECT_EQ(gmVaryVal, gm.getVal()) << message; + EXPECT_EQ(gsVaryVal, gs.getVal()) << message; + } +} + +TEST_F(TestGlobalObservables, SubsetOfConstraintsFromData) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + + // check if only a subset of constraints it taken from data + resetParameters(); + auto res1 = doFit(modelc(), data(), GlobalObservables(gm, gs)); + resetParameters(); + // Vary global observable to verify true value is picked up from the dataset. + // This time we only get gm from the dataset, so we don't vary gs for now. + gm.setVal(gm.getVal() + 0.5); + double gmVaryVal = gm.getVal(); + double gsVaryVal = gs.getVal(); + // if we take the global observables from the model, they have to be constant: + auto res2 = doFit(modelc(), dataWithMeanGlob(), GlobalObservables(gm, gs)); + EXPECT_TRUE(res1->isIdentical(*res2)) << "fitting a constrained model " + "to a dataset that only stores a subset of the defined global observables " + "gave the wrong result"; + + // verify that taking the global observable values from data has not changed + // the values in the model + { + const auto message = "taking the global observable values from data has changed the values in the model"; + EXPECT_EQ(gmVaryVal, gm.getVal()) << message; + EXPECT_EQ(gsVaryVal, gs.getVal()) << message; + } + + resetParameters(); + // Now that we also vary gs, the fit results should not be identical. + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + gmVaryVal = gm.getVal(); + gsVaryVal = gs.getVal(); + auto res3 = doFit(modelc(), dataWithMeanGlob(), GlobalObservables(gm, gs)); + EXPECT_TRUE(isNotIdentical(*res1, *res3)) + << "fitting a constrained model " + "to a dataset that only stores a subset of the defined global observables " + "gave the wrong result"; + + // verify that taking the global observable values from data has not changed + // the values in the model + { + const auto message = "taking the global observable values from data has changed the values in the model"; + EXPECT_EQ(gmVaryVal, gm.getVal()) << message; + EXPECT_EQ(gsVaryVal, gs.getVal()) << message; + } +} + +TEST_F(TestGlobalObservables, ResetDataToWrongData) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + auto &model = modelc(); + + // constrained fit with RooProdPdf + resetParameters(); + auto res1 = doFit(model, data(), GlobalObservables(gm, gs)); + + resetParameters(); + // vary global observable to deliberately store "wrong" values in a cloned dataset + std::unique_ptr wrongData{static_cast(data().Clone())}; + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + wrongData->setGlobalObservables({gm, gs}); + + // check that the fit works when using the dataset with the correct values + std::unique_ptr nll{model.createNLL(dataWithMeanSigmaGlobs())}; + RooAbsPdf::MinimizerConfig minimizerCfg; + minimizerCfg.doSave = true; + minimizerCfg.printLevel = -1; + auto res2 = model.minimizeNLL(*nll, dataWithMeanSigmaGlobs(), minimizerCfg); + EXPECT_TRUE(res1->isIdentical(*res2)) << "fitting an model with internal " + "constraints in a RooPrdPdf gave a different result when global " + "observables were stored in the dataset"; + + nll->setData(*wrongData); + resetParameters(); + auto res3 = model.minimizeNLL(*nll, *wrongData, minimizerCfg); + + // If resetting the dataset used for the nll worked correctly also for + // global observables, the fit will now give the wrong result. + EXPECT_TRUE(isNotIdentical(*res1, *res3)) + << "resetting the dataset " + "underlying a RooNLLVar didn't change the global observable value, but it " + "should have"; +} + +TEST_F(TestGlobalObservables, ResetDataToCorrectData) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + auto &model = modelc(); + + // constrained fit with RooProdPdf + resetParameters(); + auto res1 = doFit(model, data(), GlobalObservables(gm, gs)); + + resetParameters(); + // vary global observable to deliberately store "wrong" values in a cloned dataset + std::unique_ptr wrongData{static_cast(data().Clone())}; + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + wrongData->setGlobalObservables({gm, gs}); + resetParameters(); + + // check that the fit doesn't work when using the dataset with the wrong values + std::unique_ptr nll{model.createNLL(*wrongData)}; + RooAbsPdf::MinimizerConfig minimizerCfg; + minimizerCfg.doSave = true; + minimizerCfg.printLevel = -1; + auto res2 = model.minimizeNLL(*nll, *wrongData, minimizerCfg); + EXPECT_TRUE(isNotIdentical(*res1, *res2)) << "fitting an model with internal " + "constraints in a RooPrdPdf ignored the global " + "observables stored in the dataset"; + + nll->setData(dataWithMeanSigmaGlobs()); + resetParameters(); + auto res3 = model.minimizeNLL(*nll, dataWithMeanSigmaGlobs(), minimizerCfg); + EXPECT_TRUE(res1->isIdentical(*res3)) << "resetting the dataset " + "underlying a RooNLLVar didn't change the global observable value, but it " + "should have"; +} + +TEST_F(TestGlobalObservables, GlobalObservablesSourceFromModel) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + + // constrained fit with RooProdPdf + resetParameters(); + auto res1 = doFit(modelc(), data(), GlobalObservables(gm, gs)); + resetParameters(); + // vary global observable to verify true value is picked up from the dataset + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + + // verify that fit results are identical when global observable values are + // taken from data + auto res2 = doFit(modelc(), dataWithMeanSigmaGlobs()); + EXPECT_TRUE(res1->isIdentical(*res2)); + + auto res3 = doFit(modelc(), dataWithMeanSigmaGlobs(), GlobalObservablesSource("model")); + + // If the global observable values are indeed taken from the model and not + // from data, the comparison will fail now because we have changed the + // global observable values of the model after the first fit. + EXPECT_TRUE(isNotIdentical(*res2, *res3)); +} + +TEST_F(TestGlobalObservables, ResetDataButSourceFromModel) +{ + using namespace RooFit; + + auto &gm = *ws().var("gm"); + auto &gs = *ws().var("gs"); + auto &model = modelc(); + + // constrained fit with RooProdPdf + resetParameters(); + auto res1 = doFit(model, data(), GlobalObservables(gm, gs)); + + resetParameters(); + // vary global observable to deliberately store "wrong" values in a cloned dataset + std::unique_ptr wrongData{static_cast(data().Clone())}; + gm.setVal(gm.getVal() + 0.5); + gs.setVal(gs.getVal() + 2.5); + wrongData->setGlobalObservables({gm, gs}); + + resetParameters(); + + // check that the fit works when using the dataset with the correct values + std::unique_ptr nll{ + model.createNLL(dataWithMeanSigmaGlobs(), GlobalObservablesSource("model"), GlobalObservables(gm, gs))}; + RooAbsPdf::MinimizerConfig minimizerCfg; + minimizerCfg.doSave = true; + minimizerCfg.printLevel = -1; + auto res2 = model.minimizeNLL(*nll, dataWithMeanSigmaGlobs(), minimizerCfg); + EXPECT_TRUE(res1->isIdentical(*res2)); + + nll->setData(*wrongData); + resetParameters(); + auto res3 = model.minimizeNLL(*nll, *wrongData, minimizerCfg); + + // this time it should still be identical because even though we reset to + // the wrong data, we set the global observables source to "model" + EXPECT_TRUE(res1->isIdentical(*res3)); +} From 19b23674350ce291adac0324e210b3cd5880f3c7 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 3 Sep 2021 17:31:38 +0200 Subject: [PATCH 074/577] [RelNotes] Write about storing global observables in RooFit datasets --- README/ReleaseNotes/v626/index.md | 44 ++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index e587ddf6cf9e2..971bf8e78cf00 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -96,6 +96,48 @@ RooFit now contains two RDataFrame action helpers, `RooDataSetHelper` and `RooDa ``` For more details, consult the tutorial [rf408_RDataFrameToRooFit](https://root.cern/doc/v626/rf408__RDataFrameToRooFit_8C.html). +### Storing global observables in RooFit datasets + +RooFit groups model variables into *observables* and *parameters*, depending on if their values are stored in the dataset. +For fits with parameter constraints, there is a third kind of variables, called *global observables*. +These represent the results of auxiliary measurements that constrain the nuisance parameters. +In the RooFit implementation, a likelihood is generally the sum of two terms: + * the likelihood of the data given the parameters, where the normalization set is the set of observables (implemented by `RooNLLVar`) + * the constraint term, where the normalization set is the set of *global observables* (implemented by `RooConstraintSum`) + +Before this release, the global observable values were always taken from the model/pdf. +With this release, a mechanism is added to store a snapshot of global observables in any `RooDataSet` or `RooDataHist`. +For toy studies where the global observables assume a different values for each toy, the bookkeeping of the set of global observables and in particular their values is much easier with this change. + +Usage example for a model with global observables `g1` and `g2`: +```C++ +auto data = model.generate(x, 1000); // data has only the single observables x +data->setGlobalObservables(g1, g2); // now, data also stores a snapshot of g1 and g2 + +// If you fit the model to the data, the global observables and their values +// are taken from the dataset: +model.fitTo(*data); + +// You can still define the set of global observables yourself, but the values +// will be takes from the dataset if available: +model.fitTo(*data, GlobalObservables(g1, g2)); + +// To force `fitTo` to take the global observable values from the model even +// though they are in the dataset, you can use the new `GlobalObservablesSource` +// command argument: +model.fitTo(*data, GlobalObservables(g1, g2), GlobalObservablesSource("model")); +// The only other allowed value for `GlobalObservablesSource` is "data", which +// corresponds to the new default behavior explained above. +``` + +In case you create a RooFit dataset directly by calling its constructor, you can also pass the global observables in a command argument instead of calling `setGlobalObservables()` later: +```C++ +RooDataSet data{"dataset", "dataset", x, RooFit::GlobalObservables(g1, g2)}; +``` + +To access the set of global observables stored in a `RooAbsData`, call `RooAbsData::getGlobalObservables()`. +It returns a `nullptr` if no global observable snapshots are stored in the dataset. + ### Changes in `RooAbsPdf::fitTo` behaviour for multi-range fits The `RooAbsPdf::fitTo` and `RooAbsPdf::createNLL` functions accept a command argument to specify the fit range. @@ -106,7 +148,7 @@ From now on, the likelihoods are normalized by the sum of integrals in each rang ### Deprecation of the `RooMinuit` class -The `RooMinuit` class was the old interface between RooFit and minuit. With ROOT version 5.24, a the more general `RooMinimizer` adapter was introduced, which became the default with ROOT 6.08. +The `RooMinuit` class was the old interface between RooFit and minuit. With ROOT version 5.24, a the more general `RooMinimizer` adapter was introduced, which became the default with ROOT 6.08. Before 6.26, it was possible to still use the `RooMinuit` by passing the `Minimizer("OldMinuit", "minimizer")` command argument to `RooAbsPdf::fitTo()`. This option is now removed. From 1003d29e1abb7453ac691d3389561ca43989d077 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Mon, 13 Sep 2021 19:46:50 +0200 Subject: [PATCH 075/577] [RF] Change RooNLLVar constructors to be backwards compatible In https://github.com/root-project/root/pull/7616, it was not taken care that the `RooNLLVar` constructor interface changes were backwards compatible, since the affected constructors were considered as internal. However, this caused problems for users nonetheless, hence the interface was changed to be backwards compatible. Closing https://github.com/root-project/root/issues/8976. --- roofit/roofitcore/inc/RooNLLVar.h | 7 ++++--- roofit/roofitcore/src/RooAbsPdf.cxx | 4 ++-- roofit/roofitcore/src/RooNLLVar.cxx | 6 +++--- .../test/TestStatistics/testLikelihoodSerial.cxx | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/roofit/roofitcore/inc/RooNLLVar.h b/roofit/roofitcore/inc/RooNLLVar.h index 78019a9066a40..a3c8e5623610f 100644 --- a/roofit/roofitcore/inc/RooNLLVar.h +++ b/roofit/roofitcore/inc/RooNLLVar.h @@ -38,11 +38,12 @@ class RooNLLVar : public RooAbsOptTestStatistic { const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none(),const RooCmdArg& arg9=RooCmdArg::none()) ; RooNLLVar(const char *name, const char *title, RooAbsPdf& pdf, RooAbsData& data, - RooAbsTestStatistic::Configuration const& cfg, bool extended); + bool extended, + RooAbsTestStatistic::Configuration const& cfg=RooAbsTestStatistic::Configuration{}); RooNLLVar(const char *name, const char *title, RooAbsPdf& pdf, RooAbsData& data, - const RooArgSet& projDeps, RooAbsTestStatistic::Configuration const& cfg, - bool extended = false) ; + const RooArgSet& projDeps, bool extended = false, + RooAbsTestStatistic::Configuration const& cfg=RooAbsTestStatistic::Configuration{}); RooNLLVar(const RooNLLVar& other, const char* name=0); virtual TObject* clone(const char* newname) const { return new RooNLLVar(*this,newname); } diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index f8ddc456af029..9c42e53ecfe77 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -1105,7 +1105,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) //cout<<"FK: Data test 1: "<batchMode(pc.getInt("BatchMode")); nll = theNLL; } else { @@ -1119,7 +1119,7 @@ RooAbsReal* RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList) for (const auto& token : tokens) { cfg.rangeName = token; auto nllComp = new RooNLLVar((baseName + "_" + token).c_str(),"-log(likelihood)", - *this,data,projDeps,cfg,ext); + *this,data,projDeps,ext,cfg); nllComp->batchMode(pc.getInt("BatchMode")); nllList.add(*nllComp) ; } diff --git a/roofit/roofitcore/src/RooNLLVar.cxx b/roofit/roofitcore/src/RooNLLVar.cxx index 92d73bc54858f..c832984266fee 100644 --- a/roofit/roofitcore/src/RooNLLVar.cxx +++ b/roofit/roofitcore/src/RooNLLVar.cxx @@ -124,7 +124,7 @@ RooNLLVar::RooNLLVar(const char *name, const char* title, RooAbsPdf& pdf, RooAbs /// For internal use. RooNLLVar::RooNLLVar(const char *name, const char *title, RooAbsPdf& pdf, RooAbsData& indata, - RooAbsTestStatistic::Configuration const& cfg, bool extended) : + bool extended, RooAbsTestStatistic::Configuration const& cfg) : RooAbsOptTestStatistic(name,title,pdf,indata,RooArgSet(),cfg), _extended(extended), _weightSq(kFALSE), @@ -169,7 +169,7 @@ RooNLLVar::RooNLLVar(const char *name, const char *title, RooAbsPdf& pdf, RooAbs RooNLLVar::RooNLLVar(const char *name, const char *title, RooAbsPdf& pdf, RooAbsData& indata, const RooArgSet& projDeps, - RooAbsTestStatistic::Configuration const& cfg, bool extended) : + bool extended, RooAbsTestStatistic::Configuration const& cfg) : RooAbsOptTestStatistic(name,title,pdf,indata,projDeps, cfg), _extended(extended), _weightSq(kFALSE), @@ -229,7 +229,7 @@ RooAbsTestStatistic* RooNLLVar::create(const char *name, const char *title, RooA // check if pdf can be extended bool extendedPdf = _extended && thePdf.canBeExtended(); - auto testStat = new RooNLLVar(name, title, thePdf, adata, projDeps, cfg, extendedPdf); + auto testStat = new RooNLLVar(name, title, thePdf, adata, projDeps, extendedPdf, cfg); testStat->batchMode(_batchEvaluations); return testStat; } diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index caf5e95de1e70..ffb80c2aeeb99 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -156,7 +156,7 @@ TEST_F(LikelihoodSerialBinnedDatasetTest, BinnedManualNLL) nll_config.cloneInputData = false; nll_config.binnedL = true; int extended = 2; - RooNLLVar nll_manual("nlletje", "-log(likelihood)", *pdf, *data, projDeps, nll_config, extended); + RooNLLVar nll_manual("nlletje", "-log(likelihood)", *pdf, *data, projDeps, extended, nll_config); likelihood = RooFit::TestStatistics::buildLikelihood(pdf, data); RooFit::TestStatistics::LikelihoodSerial nll_ts(likelihood, clean_flags/*, nullptr*/); From 6a9ebe3b5587deabea5f5d770ce89eb1e249347e Mon Sep 17 00:00:00 2001 From: Tong Qiu <36209665+tong-qiu@users.noreply.github.com> Date: Wed, 15 Sep 2021 08:27:35 +0100 Subject: [PATCH 076/577] [TMVA][SOFIE]Selu and Sigmoid activation functions for PyTorch Parser (#8958) * add sel * add selu for pytorch * add sigmoid function to pytorch parser * delete merge conflict message * add missing comma Co-authored-by: Tong Qiu --- tmva/pymva/src/RModelParser_PyTorch.cxx | 55 +++++++++++++++ tmva/sofie/CMakeLists.txt | 2 + tmva/sofie/inc/TMVA/OperatorList.hxx | 2 + tmva/sofie/inc/TMVA/ROperator_Selu.hxx | 70 +++++++++++++++++++ tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx | 70 +++++++++++++++++++ .../inc/TMVA/RModelParser_ONNX.hxx | 6 +- tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 64 +++++++++++++++++ 7 files changed, 268 insertions(+), 1 deletion(-) create mode 100644 tmva/sofie/inc/TMVA/ROperator_Selu.hxx create mode 100644 tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx diff --git a/tmva/pymva/src/RModelParser_PyTorch.cxx b/tmva/pymva/src/RModelParser_PyTorch.cxx index 68754ac4ac125..4821d749a1b8c 100644 --- a/tmva/pymva/src/RModelParser_PyTorch.cxx +++ b/tmva/pymva/src/RModelParser_PyTorch.cxx @@ -45,6 +45,8 @@ std::unique_ptr MakePyTorchNode(PyObject* fNode); std::unique_ptr MakePyTorchGemm(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Gemm operator std::unique_ptr MakePyTorchRelu(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Relu operator +std::unique_ptr MakePyTorchSelu(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Selu operator +std::unique_ptr MakePyTorchSigmoid(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Sigmoid operator std::unique_ptr MakePyTorchTranspose(PyObject* fNode); // For instantiating ROperator for PyTorch ONNX's Transpose operator // For mapping PyTorch ONNX Graph's Node with the preparatory functions for ROperators @@ -54,6 +56,8 @@ const PyTorchMethodMap mapPyTorchNode = { {"onnx::Gemm", &MakePyTorchGemm}, {"onnx::Relu", &MakePyTorchRelu}, + {"onnx::Selu", &MakePyTorchSelu}, + {"onnx::Sigmoid", &MakePyTorchSigmoid}, {"onnx::Transpose", &MakePyTorchTranspose} }; @@ -163,6 +167,57 @@ std::unique_ptr MakePyTorchRelu(PyObject* fNode){ return op; } +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Selu object +/// +/// \param[in] fNode Python PyTorch ONNX Graph node +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Selu object, the names of +/// input & output tensors and the data-type of the Graph node +/// are extracted. +std::unique_ptr MakePyTorchSelu(PyObject* fNode){ + PyObject* fInputs = PyDict_GetItemString(fNode,"nodeInputs"); + PyObject* fOutputs = PyDict_GetItemString(fNode,"nodeOutputs"); + std::string fNodeDType = PyStringAsString(PyList_GetItem(PyDict_GetItemString(fNode,"nodeDType"),0)); + + std::unique_ptr op; + switch(ConvertStringToType(fNodeDType)){ + case ETensorType::FLOAT: { + op.reset(new ROperator_Selu(PyStringAsString(PyList_GetItem(fInputs,0)), PyStringAsString(PyList_GetItem(fOutputs,0)))); + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Selu does not yet support input type " + fNodeDType); + } + return op; +} + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator_Sigmoid object +/// +/// \param[in] fNode Python PyTorch ONNX Graph node +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Sigmoid object, the names of +/// input & output tensors and the data-type of the Graph node +/// are extracted. +std::unique_ptr MakePyTorchSigmoid(PyObject* fNode){ + PyObject* fInputs = PyDict_GetItemString(fNode,"nodeInputs"); + PyObject* fOutputs = PyDict_GetItemString(fNode,"nodeOutputs"); + std::string fNodeDType = PyStringAsString(PyList_GetItem(PyDict_GetItemString(fNode,"nodeDType"),0)); + + std::unique_ptr op; + switch(ConvertStringToType(fNodeDType)){ + case ETensorType::FLOAT: { + op.reset(new ROperator_Sigmoid(PyStringAsString(PyList_GetItem(fInputs,0)), PyStringAsString(PyList_GetItem(fOutputs,0)))); + break; + } + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Sigmoid does not yet support input type " + fNodeDType); + } + return op; +} ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares a ROperator_Transpose object diff --git a/tmva/sofie/CMakeLists.txt b/tmva/sofie/CMakeLists.txt index 79acc06406dc8..2263cebac06e3 100644 --- a/tmva/sofie/CMakeLists.txt +++ b/tmva/sofie/CMakeLists.txt @@ -18,6 +18,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTTMVASofie TMVA/ROperator.hxx TMVA/ROperator_Gemm.hxx TMVA/ROperator_Relu.hxx + TMVA/ROperator_Selu.hxx + TMVA/ROperator_Sigmoid.hxx TMVA/ROperator_Transpose.hxx TMVA/ROperator_Conv.hxx TMVA/SOFIE_common.hxx diff --git a/tmva/sofie/inc/TMVA/OperatorList.hxx b/tmva/sofie/inc/TMVA/OperatorList.hxx index f914bd5a3eb3e..a0ff4d5319864 100644 --- a/tmva/sofie/inc/TMVA/OperatorList.hxx +++ b/tmva/sofie/inc/TMVA/OperatorList.hxx @@ -1,5 +1,7 @@ #include "TMVA/ROperator_Transpose.hxx" #include "TMVA/ROperator_Gemm.hxx" #include "TMVA/ROperator_Relu.hxx" +#include "TMVA/ROperator_Selu.hxx" +#include "TMVA/ROperator_Sigmoid.hxx" #include "TMVA/ROperator_Conv.hxx" #include "TMVA/ROperator_RNN.hxx" diff --git a/tmva/sofie/inc/TMVA/ROperator_Selu.hxx b/tmva/sofie/inc/TMVA/ROperator_Selu.hxx new file mode 100644 index 0000000000000..d8e8d7ff244c1 --- /dev/null +++ b/tmva/sofie/inc/TMVA/ROperator_Selu.hxx @@ -0,0 +1,70 @@ +#ifndef TMVA_SOFIE_ROPERATOR_SELU +#define TMVA_SOFIE_ROPERATOR_SELU + +#include "TMVA/SOFIE_common.hxx" +#include "TMVA/ROperator.hxx" +#include "TMVA/RModel.hxx" + +#include + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ + +template +class ROperator_Selu final : public ROperator +{ + +private: + + std::string fNX; + std::string fNY; + std::vector fShape; + +public: + ROperator_Selu(){} + ROperator_Selu(std::string nameX, std::string nameY): + fNX(UTILITY::Clean_name(nameX)), fNY(UTILITY::Clean_name(nameY)){} + + std::vector TypeInference(std::vector input){ + return input; + } + + std::vector> ShapeInference(std::vector> input){ + auto ret = input; //suggest copy to compiler + return ret; + } + + void Initialize(RModel& model){ + if (model.CheckIfTensorAlreadyExist(fNX) == false){ //input must be a graph input, or already initialized intermediate tensor + throw std::runtime_error("TMVA SOFIE Selu Op Input Tensor is not found in model"); + } + fShape = model.GetTensorShape(fNX); + model.AddIntermediateTensor(fNY, model.GetTensorType(fNX), fShape); + } + + + std::string Generate(std::string OpName){ + OpName = "op_" + OpName; + if (fShape.empty()){ + throw std::runtime_error("TMVA SOFIE Transpose Selu called to Generate without being initialized first"); + } + std::stringstream out; + int length = 1; + for(auto& i: fShape){ + length *= i; + } + out << "\t" << "for (int id = 0; id < " << length << " ; id++){\n"; + out << "\t\t" << "tensor_" << fNY << "[id] = 1.0507009873554804934193349852946 * (std::max(float(0.0), tensor_" << fNX << "[id]) + std::min(0.0, 1.6732632423543772848170429916717 * (exp(" << "tensor_" << fNX << "[id]" <<")-1)));\n"; + out << "\t}\n"; + return out.str(); + } + +}; + +}//SOFIE +}//Experimental +}//TMVA + + +#endif //TMVA_SOFIE_ROPERATOR_SELU diff --git a/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx b/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx new file mode 100644 index 0000000000000..eed667a4648c5 --- /dev/null +++ b/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx @@ -0,0 +1,70 @@ +#ifndef TMVA_SOFIE_ROPERATOR_Sigmoid +#define TMVA_SOFIE_ROPERATOR_Sigmoid + +#include "TMVA/SOFIE_common.hxx" +#include "TMVA/ROperator.hxx" +#include "TMVA/RModel.hxx" + +#include + +namespace TMVA{ +namespace Experimental{ +namespace SOFIE{ + +template +class ROperator_Sigmoid final : public ROperator +{ + +private: + + std::string fNX; + std::string fNY; + std::vector fShape; + +public: + ROperator_Sigmoid(){} + ROperator_Sigmoid(std::string nameX, std::string nameY): + fNX(UTILITY::Clean_name(nameX)), fNY(UTILITY::Clean_name(nameY)){} + + std::vector TypeInference(std::vector input){ + return input; + } + + std::vector> ShapeInference(std::vector> input){ + auto ret = input; //suggest copy to compiler + return ret; + } + + void Initialize(RModel& model){ + if (model.CheckIfTensorAlreadyExist(fNX) == false){ //input must be a graph input, or already initialized intermediate tensor + throw std::runtime_error("TMVA SOFIE Sigmoid Op Input Tensor is not found in model"); + } + fShape = model.GetTensorShape(fNX); + model.AddIntermediateTensor(fNY, model.GetTensorType(fNX), fShape); + } + + + std::string Generate(std::string OpName){ + OpName = "op_" + OpName; + if (fShape.empty()){ + throw std::runtime_error("TMVA SOFIE Transpose Sigmoid called to Generate without being initialized first"); + } + std::stringstream out; + int length = 1; + for(auto& i: fShape){ + length *= i; + } + out << "\t" << "for (int id = 0; id < " << length << " ; id++){\n"; + out << "\t\t" << "tensor_" << fNY << "[id] = 1 / (1 + exp( - tensor_" << fNX << "[id]));\n"; + out << "\t}\n"; + return out.str(); + } + +}; + +}//SOFIE +}//Experimental +}//TMVA + + +#endif //TMVA_SOFIE_ROPERATOR_Sigmoid diff --git a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx index 86af31270a81f..a925f34482159 100644 --- a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx +++ b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx @@ -26,6 +26,8 @@ namespace INTERNAL{ std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); @@ -37,7 +39,9 @@ const factoryMethodMap mapOptypeOperator = { {"Transpose", &make_ROperator_Transpose}, {"Relu", &make_ROperator_Relu}, {"Conv", &make_ROperator_Conv}, - {"RNN", &make_ROperator_RNN} + {"RNN", &make_ROperator_RNN}, + {"Selu", &make_ROperator_Selu}, + {"Sigmoid", &make_ROperator_Sigmoid} }; diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx index 4b7e471c29f39..4632a10cfb002 100644 --- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx @@ -92,6 +92,70 @@ std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, return op; } +std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ + + ETensorType input_type; + + auto input_name = nodeproto.input(0); + auto it = tensor_type.find(input_name); + if (it != tensor_type.end()){ + input_type = it->second; + }else{ + throw std::runtime_error("TMVA::SOFIE ONNX Parser selu op has input tensor" + input_name + " but its type is not yet registered"); + } + + std::unique_ptr op; + + + switch(input_type){ + case ETensorType::FLOAT: + op.reset(new ROperator_Selu(nodeproto.input(0), nodeproto.output(0))); + break; + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Selu does not yet support input type " + std::to_string(static_cast(input_type))); + } + + ETensorType output_type = (op->TypeInference({input_type}))[0]; + auto it2 = tensor_type.find(nodeproto.output(0)); + if (it2 == tensor_type.end()){ + tensor_type[nodeproto.output(0)] = output_type; + } + + return op; +} + +std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ + + ETensorType input_type; + + auto input_name = nodeproto.input(0); + auto it = tensor_type.find(input_name); + if (it != tensor_type.end()){ + input_type = it->second; + }else{ + throw std::runtime_error("TMVA::SOFIE ONNX Parser Sigmoid op has input tensor" + input_name + " but its type is not yet registered"); + } + + std::unique_ptr op; + + + switch(input_type){ + case ETensorType::FLOAT: + op.reset(new ROperator_Sigmoid(nodeproto.input(0), nodeproto.output(0))); + break; + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Sigmoid does not yet support input type " + std::to_string(static_cast(input_type))); + } + + ETensorType output_type = (op->TypeInference({input_type}))[0]; + auto it2 = tensor_type.find(nodeproto.output(0)); + if (it2 == tensor_type.end()){ + tensor_type[nodeproto.output(0)] = output_type; + } + + return op; +} + std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type){ ETensorType input_type; From d932be3f6512f3adc31dffc3309869350f54de6c Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 15 Sep 2021 14:45:36 +0200 Subject: [PATCH 077/577] [DF] Trigger the creation of notebooks for RDF simple tutorials --- tutorials/dataframe/df000_simple.C | 1 + tutorials/dataframe/df000_simple.py | 1 + 2 files changed, 2 insertions(+) diff --git a/tutorials/dataframe/df000_simple.C b/tutorials/dataframe/df000_simple.C index f4f56a7a514e6..2044525d492d5 100644 --- a/tutorials/dataframe/df000_simple.C +++ b/tutorials/dataframe/df000_simple.C @@ -1,5 +1,6 @@ /// \file /// \ingroup tutorial_dataframe +/// \notebook -draw /// Simple RDataFrame example in C++. /// /// This tutorial shows a minimal example of RDataFrame. It starts without input diff --git a/tutorials/dataframe/df000_simple.py b/tutorials/dataframe/df000_simple.py index aa9b6a88793ba..797e59fe3adc7 100644 --- a/tutorials/dataframe/df000_simple.py +++ b/tutorials/dataframe/df000_simple.py @@ -1,5 +1,6 @@ ## \file ## \ingroup tutorial_dataframe +## \notebook -draw ## Simple RDataFrame example in Python. ## ## This tutorial shows a minimal example of RDataFrame. It starts without input From c9a6eb6f13af6cb040511fa4ce6564d888a86117 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 15 Sep 2021 17:01:49 +0200 Subject: [PATCH 078/577] [skip-ci] move doc from the manual (#8991) * [skip-ci] move doc from the manual * Typos and formatting * Default style is "Modern" * better comments * TAttAxis --- core/base/src/TAttAxis.cxx | 23 ++++++++++++----------- core/base/src/TStyle.cxx | 10 +++++----- graf2d/graf/src/TLine.cxx | 15 ++++++++++++++- graf2d/graf/src/TMarker.cxx | 22 ++++++++++++++++++++-- 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/core/base/src/TAttAxis.cxx b/core/base/src/TAttAxis.cxx index db16ad330f4b0..2cab83df29014 100644 --- a/core/base/src/TAttAxis.cxx +++ b/core/base/src/TAttAxis.cxx @@ -28,17 +28,18 @@ Manages histogram axis attributes. They are: - - The number of divisions - - The line axis' color - - The labels' color - - The labels' font - - The labels' offset - - The labels' size - - The tick marks' - - The axis title's offset - - The axis title's size - - The axis title's color - - The axis title's font + - The number of divisions. + - The line axis' color. + - The axis labels' color. + - The axis labels' font. + - The axis labels' offset. + - The axis labels' size. + - The tick marks's length. + - The axis title's offset. + - The axis title's size. + - The axis title's color. + - The axis title's font. + */ TAttAxis::TAttAxis() diff --git a/core/base/src/TStyle.cxx b/core/base/src/TStyle.cxx index 546db26c75cae..dd0f711294a26 100644 --- a/core/base/src/TStyle.cxx +++ b/core/base/src/TStyle.cxx @@ -64,9 +64,9 @@ style is created simply by: auto default = new TStyle("Default","Default Style"); ~~~ -The "**Plain**" style can be used if you are working on a monochrome display or +The `Plain` style can be used if you are working on a monochrome display or if you want to get a "conventional" Postscript output. These are the instructions -in the ROOT constructor to create the "Plain*" style. +in the ROOT constructor to create the `Plain` style. ``` auto plain = new TStyle("Plain","Plain Style (no colors/fill areas)"); @@ -150,12 +150,12 @@ TStyle::TStyle() :TNamed() //////////////////////////////////////////////////////////////////////////////// /// Create a new TStyle. /// The following names are reserved to create special styles -/// - `Classic`: the default style set in TStyle::Reset +/// - `Classic`: Similar to 'Default` style set in TStyle::Reset /// - `Plain`: a black&white oriented style /// - `Bold` /// - `Video` /// - `Pub` -/// - `Modern` +/// - `Modern` Used when ROOT starts /// - `ATLAS`: style used by the ATLAS experiment /// - `BELLE2`: style used by the BELLE II experiment /// (see the definition of these styles below). @@ -445,7 +445,7 @@ TStyle::TStyle(const char *name, const char *title) SetLabelOffset(0.015,"z"); SetTickLength(0.03,"x"); - SetTickLength(0.02,"y"); // This way we slighty achive equal length ticks for x and y + SetTickLength(0.02,"y"); // This way we slightly achieve equal length ticks for x and y // use bold lines and markers SetMarkerStyle(20); diff --git a/graf2d/graf/src/TLine.cxx b/graf2d/graf/src/TLine.cxx index d58cfde34b8ab..2b31aa7d80ca8 100644 --- a/graf2d/graf/src/TLine.cxx +++ b/graf2d/graf/src/TLine.cxx @@ -26,7 +26,20 @@ ClassImp(TLine); /** \class TLine \ingroup BasicGraphics -A simple line. +Use the TLine constructor to create a simple line. + +~~~ {.cpp} + TLine(Double_t x1,Double_t y1,Double_t x2,Double_t y2) +~~~ + +`x1`, `y1`, `x2`, `y2` are the coordinates of the first and the second point. + +_**Example**_: + +~~~ {.cpp} + root[] l = new TLine(0.2,0.2,0.8,0.3) + root[] l->Draw() +~~~ */ diff --git a/graf2d/graf/src/TMarker.cxx b/graf2d/graf/src/TMarker.cxx index d8056cd87f0aa..0c3e16e4ee087 100644 --- a/graf2d/graf/src/TMarker.cxx +++ b/graf2d/graf/src/TMarker.cxx @@ -28,7 +28,25 @@ ClassImp(TMarker); /** \class TMarker \ingroup BasicGraphics -Manages Markers. Marker attributes are managed by TAttMarker. +Manages Markers. + +Use the TMarker constructor to create a marker. + +~~~ {.cpp} + TMarker(Double_t x,Double_t y,Int_t marker) +~~~ + +The parameters `x` and `y` are the marker coordinates and `marker` is the marker type. + +Use the TPolyMarker to create an array on N points in a 2D space. +At each point `x[i]`, `y[i]` a marker is drawn. + +Use the TAttMarker class to change the attributes color, style and size of a marker. + +_**Example**_ + +- Use the `TAttMarker::SetMarkerSize(size)` method to set the `size` of a marker. + */ //////////////////////////////////////////////////////////////////////////////// @@ -397,7 +415,7 @@ Rectangle_t TMarker::GetBBox() TPoint TMarker::GetBBoxCenter() { TPoint p; - if (!gPad) return (p); + if (!gPad) return (p); p.SetX(gPad->XtoPixel(fX)); p.SetY(gPad->YtoPixel(fY)); return(p); From 24f451a1719eb1c521e20e8bd8be6266aaa6e632 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 15 Sep 2021 17:16:37 +0200 Subject: [PATCH 079/577] [skip-ci] doc update. (#9003) --- core/base/src/TAttAxis.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/base/src/TAttAxis.cxx b/core/base/src/TAttAxis.cxx index 2cab83df29014..a794258073c88 100644 --- a/core/base/src/TAttAxis.cxx +++ b/core/base/src/TAttAxis.cxx @@ -221,10 +221,17 @@ void TAttAxis::SetLabelSize(Float_t size) /// n2 is the number of second order divisions and /// n3 is the number of third order divisions. /// -/// e.g. 512 means 12 primary and 5 secondary divisions. -/// /// If the number of divisions is "optimized" (see above) n1, n2, n3 are /// maximum values. +/// +/// Examples: +/// +/// - ndiv = 0: no tick marks. +/// - ndiv = 2: 2 divisions, one tick mark in the middle of the axis. +/// - ndiv = 510: 10 primary divisions, 5 secondary divisions. +/// - ndiv = -10: exactly 10 primary divisions. + + void TAttAxis::SetNdivisions(Int_t n, Bool_t optim) { From 96944d367d95fdc90ff8a2c54c95999d301617c7 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Wed, 15 Sep 2021 16:17:49 +0200 Subject: [PATCH 080/577] [RF] Avoid using forward-declared class as default template arguments Avoid using forward-declared class as default template arguments in `RooMinimizer` and `MinuitFcnGrad`. This is the fix for the following test failures in the nightlies: ``` projectroot.roottest.python.cling.roottest_python_cling_class projectroot.roottest.python.cling.roottest_python_cling_api projectroot.roottest.root.meta.tclass.regression.roottest_root_meta_tclass_regression_execNormalizationInfPy projectroot.roottest.python.cling.roottest_python_cling_cling projectroot.roottest.root.meta.enumPayloadManipulation.roottest_root_meta_enumPayloadManipulation_checkEnumFwdDecl ``` For sure we know that these failures got introduced by https://github.com/root-project/root/pull/8700. The failures that we see since [root-project/root#8700](https://github.com/root-project/root/pull/8700), here are the comments where the bot reported them first: First Ubuntu 16 fail: [root-project/root#8700 (comment)](https://github.com/root-project/root/pull/8700#issuecomment-916924242) First Windows 10 fail: [root-project/root#8700 (comment)](https://github.com/root-project/root/pull/8700#issuecomment-916992359) I narrowed down the origin of this regression to a small part of the diff of the full PR. The bad guy is some change in one of these files: * roofit/roofitcore/inc/RooMinimizer.h * roofit/roofitcore/test/CMakeLists.txt * roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx What was fishy in `RooMinimizer.h` was the usage of a forward-declared class as default template argument. The default template arguments are commented out now, because these will only become relevant in later developments by @egpbos. --- roofit/roofitcore/inc/RooMinimizer.h | 12 ++++++------ roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/roofit/roofitcore/inc/RooMinimizer.h b/roofit/roofitcore/inc/RooMinimizer.h index 6d590a983d547..e614e62dbb296 100644 --- a/roofit/roofitcore/inc/RooMinimizer.h +++ b/roofit/roofitcore/inc/RooMinimizer.h @@ -48,7 +48,7 @@ class RooPlot ; namespace RooFit { namespace TestStatistics { class LikelihoodSerial; -class LikelihoodGradientSerial; +//class LikelihoodGradientSerial; } } // namespace RooFit @@ -58,8 +58,8 @@ class RooMinimizer : public TObject { explicit RooMinimizer(RooAbsReal &function, FcnMode fcnMode = FcnMode::classic); static std::unique_ptr create(RooAbsReal &function, FcnMode fcnMode = FcnMode::classic); - template + template static std::unique_ptr create(std::shared_ptr likelihood); ~RooMinimizer() override; @@ -136,10 +136,10 @@ class RooMinimizer : public TObject { bool fitFcn() const; private: - template + template RooMinimizer(std::shared_ptr likelihood, - LikelihoodWrapperT* /* used only for template deduction */ = static_cast(nullptr), - LikelihoodGradientWrapperT* /* used only for template deduction */ = static_cast(nullptr)); + LikelihoodWrapperT* /* used only for template deduction = static_cast(nullptr) */, + LikelihoodGradientWrapperT* /* used only for template deduction = static_cast(nullptr) */); Int_t _printLevel = 1; Int_t _status = -99; diff --git a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h index 5dca9126adc2a..c0752f90d0cb8 100644 --- a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h +++ b/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h @@ -37,7 +37,7 @@ namespace TestStatistics { // forward declaration class LikelihoodSerial; -class LikelihoodGradientSerial; +//class LikelihoodGradientSerial; /// For communication with wrappers, an instance of this struct must be shared between them and MinuitFcnGrad. It keeps /// track of what has been evaluated for the current parameter set provided by Minuit. @@ -56,8 +56,8 @@ struct WrapperCalculationCleanFlags { class MinuitFcnGrad : public ROOT::Math::IMultiGradFunction, public RooAbsMinimizerFcn { public: // factory - template + template static MinuitFcnGrad * create(const std::shared_ptr &likelihood, RooMinimizer *context, std::vector ¶meters, bool verbose = false); From 9778d799c78fdc94328604ec7b4f51a16086118a Mon Sep 17 00:00:00 2001 From: Lorenzo Moneta Date: Thu, 16 Sep 2021 15:06:55 +0200 Subject: [PATCH 081/577] [TMVA][SOFIE] Fix problem with broadcasting bias tensor in the Conv operator. (#8993) * Fix problem with broacastying bias tensor in conv operator. Add also a function to convert shape of tensor to a string * Adjust shape of Bias tensor before broadcasting in the COnv operator. Kepp broadcasting as it was since it is uni-directional Fix issue with name of function converting shape tensor to a string as suggested by Sanjiban --- tmva/sofie/inc/TMVA/ROperator_Conv.hxx | 15 +++++++-- tmva/sofie/inc/TMVA/SOFIE_common.hxx | 2 ++ tmva/sofie/src/SOFIE_common.cxx | 42 +++++++++++++++++++++++--- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/tmva/sofie/inc/TMVA/ROperator_Conv.hxx b/tmva/sofie/inc/TMVA/ROperator_Conv.hxx index ce40abd4922d0..424d161e35fe2 100755 --- a/tmva/sofie/inc/TMVA/ROperator_Conv.hxx +++ b/tmva/sofie/inc/TMVA/ROperator_Conv.hxx @@ -156,6 +156,8 @@ public: throw std::runtime_error("TMVA SOFIE Conv Op input tensor" + fNW + " is not of 4 dimensions"); } + fShapeY = ShapeInference({fShapeX, fShapeW})[0]; + model.AddIntermediateTensor(fNY, model.GetTensorType(fNX), fShapeY); if (fNB != "") { if (!model.CheckIfTensorAlreadyExist(fNB)) { throw @@ -165,6 +167,16 @@ public: bool broadcast_needed = (fShapeB.size() != fShapeY.size()); if (broadcast_needed) { auto original_data = model.GetInitializedTensorData(fNB); + // make bias shape equal to Y shape by adding 1 + if (fShapeB.size() < 1) + throw std::runtime_error("TMVA SOFIE Conv op: Bias Tensor has empty shape"); + // we assume bias tensor dimension is equal to number of filters that is first dimension in + // the output tensor + if (fShapeB[0] != fShapeY[0]) + throw std::runtime_error("TMVA SOFIE Conv op: Bias Tensor has wrong shape: " + + ConvertShapeToString(fShapeB)); + fShapeB.resize(fShapeY.size(), 1.); + if (fType == "float") { std::shared_ptr new_data_ptr(UTILITY::Unidirectional_broadcast( static_cast(original_data.get()), fShapeB, fShapeY), std::default_delete()); @@ -173,8 +185,7 @@ public: } } } - fShapeY = ShapeInference({fShapeX, fShapeW})[0]; - model.AddIntermediateTensor(fNY, model.GetTensorType(fNX), fShapeY); + } std::string Generate(std::string OpName) { diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx index 6bebee0385f17..a685b26c5c502 100644 --- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx +++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx @@ -48,6 +48,8 @@ struct TensorInfo{ std::size_t ConvertShapeToLength(std::vector shape); +std::string ConvertShapeToString(std::vector shape); + struct InitializedTensor{ ETensorType fType; std::vector fShape; diff --git a/tmva/sofie/src/SOFIE_common.cxx b/tmva/sofie/src/SOFIE_common.cxx index bd16f4cbfbc8d..78feff703cb48 100644 --- a/tmva/sofie/src/SOFIE_common.cxx +++ b/tmva/sofie/src/SOFIE_common.cxx @@ -1,5 +1,6 @@ #include "TMVA/SOFIE_common.hxx" #include +#include namespace TMVA{ namespace Experimental{ @@ -39,6 +40,17 @@ ETensorType ConvertStringToType(std::string type){ } } +std::string ConvertShapeToString(std::vector shape) { + std::stringstream out; + out << "{ "; + for (size_t i = 0; i < shape.size(); i++) { + out << shape[i]; + if (i < shape.size()-1) out << " , "; + } + out << " }"; + return out.str(); +} + namespace{ template static inline void copy_vector_data(int_t no_of_copies, int_t input_size, T* input, T* target){ //only visible within this translation unit @@ -60,7 +72,6 @@ template T* UTILITY::Unidirectional_broadcast(const T* original_data, const std::vector original_shape, const std::vector target_shape) { - std::vector current_shape(original_shape); int original_length = 1; int target_length = 1; for (size_t i = 0; i < original_shape.size(); i++){ @@ -69,19 +80,40 @@ T* UTILITY::Unidirectional_broadcast(const T* original_data, const std::vector target_shape.size()) throw std::runtime_error("TMVA::SOFIE Error in Broadcasting Tensor : original array has more dimensions than target shape "); + if (original_shape.size() > target_shape.size()) { + std::string targetShape = "target : " + ConvertShapeToString(target_shape); + std::string originalShape = "original : " + ConvertShapeToString(original_shape); + throw std::runtime_error( + "TMVA::SOFIE Error in Broadcasting Tensor : original array has more dimensions than target shape," + originalShape + ", " + targetShape); + } + // if shape's sizes are different prepend 1 to get tensor with same shape size + // since the broadcast is unidirectional we can only prepend + std::vector current_shape(original_shape); auto it = current_shape.begin(); - while (current_shape.size() < target_shape.size()){ + while (current_shape.size() < target_shape.size()) { it = current_shape.insert(it, 1); } + // this code below will work + // when shape are not equal e.g. (3,4,5,6) and (3) and we add 1 in all missing positions + // since broadcasting is uni-directional we do not use it + // std::vector current_shape(target_shape.size(),1); + // for (size_t i = 0; i < original_shape.size(); i++) { + // for (size_t j = 0; j < target_shape.size(); j++) { + // if (target_shape[j] == original_shape[i]) + // current_shape[j] = original_shape[i]; + // } + // } T* new_datavector = new T[target_length]; std::memcpy(new_datavector, original_data, original_length * sizeof(T)); for (int dim = (int) target_shape.size() - 1; dim >= 0; dim--){ if (current_shape[dim] != target_shape[dim]){ - if (current_shape[dim] != 1) throw std::runtime_error ("TMVA::SOFIE Error in Broadcasting Tensor at least one dimension to be broadcast of the original array is not 1"); - + if (current_shape[dim] != 1) { + std::string targetShape = "target : " + ConvertShapeToString(target_shape); + std::string originalShape = "original : " + ConvertShapeToString(current_shape); + throw std::runtime_error ("TMVA::SOFIE Error in Broadcasting Tensor at least one dimension to be broadcast of the original array is not 1, " + originalShape + ", " + targetShape); + } int_t group_size = 1; int_t no_of_groups = 1; int_t no_of_copies = target_shape[dim]; From 731519a1f661f5bdfd79b981220447407f4c76da Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 16 Sep 2021 16:56:22 +0200 Subject: [PATCH 082/577] [skip-ci] doc update. (#9006) --- core/base/src/TAttAxis.cxx | 23 ++++++++++++----------- core/base/src/TAttMarker.cxx | 2 ++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core/base/src/TAttAxis.cxx b/core/base/src/TAttAxis.cxx index a794258073c88..f313c7327c3f1 100644 --- a/core/base/src/TAttAxis.cxx +++ b/core/base/src/TAttAxis.cxx @@ -28,17 +28,17 @@ Manages histogram axis attributes. They are: - - The number of divisions. - - The line axis' color. - - The axis labels' color. - - The axis labels' font. - - The axis labels' offset. - - The axis labels' size. - - The tick marks's length. - - The axis title's offset. - - The axis title's size. - - The axis title's color. - - The axis title's font. + - The number of divisions: TAttAxis::SetNdivisions. + - The line axis' color: TAttAxis::SetAxisColor. + - The axis labels' color: TAttAxis::SetLabelColor. + - The axis labels' font: TAttAxis::SetLabelFont. + - The axis labels' offset: TAttAxis::SetLabelOffset. + - The axis labels' size: TAttAxis::SetLabelSize. + - The tick marks's length: TAttAxis::SetTickLength or TAttAxis::SetTickSize . + - The axis title's offset: TAttAxis::SetTitleOffset. + - The axis title's size: TAttAxis::SetTitleSize. + - The axis title's color: TAttAxis::SetTitleColor. + - The axis title's font: TAttAxis::SetTitleFont. */ @@ -189,6 +189,7 @@ void TAttAxis::SetLabelFont(Style_t font) //////////////////////////////////////////////////////////////////////////////// /// Set distance between the axis and the labels. /// The distance is expressed in per cent of the pad width. +/// A negative value allow to draw the label on the other side of the axis. void TAttAxis::SetLabelOffset(Float_t offset) { diff --git a/core/base/src/TAttMarker.cxx b/core/base/src/TAttMarker.cxx index 481cb6c63e467..17a129a2b0e8f 100644 --- a/core/base/src/TAttMarker.cxx +++ b/core/base/src/TAttMarker.cxx @@ -134,6 +134,8 @@ Begin_Macro } End_Macro +\warning Non-symmetric symbols should be used carefully. See markerwarning.C + \anchor ATTMARKER21 ### Marker line width From de7bcdff077be4ec08892c1d8349d9f8e62dd420 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 17 Sep 2021 08:10:28 +0200 Subject: [PATCH 083/577] [skip-ci] Improve grouping for TH1 and ROOT 7 histo (#9007) * [skip-ci] Improve grouping for TH1 and ROOT 7 histo * define the HistV7 group * More in HistV7 * More grouping --- hist/doc/Hist.md | 3 +++ hist/hist/doc/index.md | 8 +++++++ hist/hist/src/TAxis.cxx | 2 +- hist/hist/src/TF1.cxx | 2 +- hist/hist/src/TF12.cxx | 2 +- hist/hist/src/TF1Convolution.cxx | 22 ++++++++--------- hist/hist/src/TF1NormSum.cxx | 8 +++---- hist/hist/src/TF2.cxx | 2 +- hist/hist/src/TF3.cxx | 2 +- hist/hist/src/TGraph.cxx | 2 +- hist/hist/src/TGraph2D.cxx | 2 +- hist/hist/src/TGraph2DErrors.cxx | 2 +- hist/hist/src/TGraphAsymmErrors.cxx | 2 +- hist/hist/src/TGraphBentErrors.cxx | 2 +- hist/hist/src/TGraphDelaunay.cxx | 2 +- hist/hist/src/TGraphDelaunay2D.cxx | 2 +- hist/hist/src/TGraphErrors.cxx | 2 +- hist/hist/src/TGraphMultiErrors.cxx | 2 +- hist/hist/src/TGraphSmooth.cxx | 2 +- hist/hist/src/TGraphTime.cxx | 2 +- hist/hist/src/TH1.cxx | 9 +++---- hist/hist/src/TH2.cxx | 2 +- hist/hist/src/TH2Poly.cxx | 4 ++-- hist/hist/src/TH3.cxx | 4 ++-- hist/hist/src/THLimitsFinder.cxx | 2 +- hist/hist/src/THStack.cxx | 2 +- hist/hist/src/THn.cxx | 2 +- hist/hist/src/TMultiGraph.cxx | 2 +- hist/hist/src/TPolyMarker.cxx | 2 +- hist/hist/src/TProfile.cxx | 2 +- hist/hist/src/TProfile2D.cxx | 2 +- hist/hist/src/TProfile2Poly.cxx | 2 +- hist/hist/src/TProfile3D.cxx | 2 +- hist/hist/src/TVirtualGraphPainter.cxx | 2 +- hist/hist/src/TVirtualHistPainter.cxx | 2 +- hist/histdrawv7/doc/index.md | 2 ++ hist/histdrawv7/inc/ROOT/RHistDisplayItem.hxx | 4 ++-- hist/histdrawv7/inc/ROOT/RHistDrawable.hxx | 2 +- hist/histdrawv7/src/RHistDisplayItem.cxx | 2 +- hist/histdrawv7/src/RHistDrawable.cxx | 2 +- hist/histpainter/doc/index.md | 2 +- hist/histv7/doc/index.md | 4 ++++ hist/histv7/inc/ROOT/RAxis.hxx | 2 +- hist/histv7/inc/ROOT/RAxisConfig.hxx | 2 +- hist/histv7/inc/ROOT/RHist.hxx | 2 +- hist/histv7/inc/ROOT/RHistBinIter.hxx | 2 +- hist/histv7/inc/ROOT/RHistBufferedFill.hxx | 2 +- hist/histv7/inc/ROOT/RHistConcurrentFill.hxx | 2 +- hist/histv7/inc/ROOT/RHistData.hxx | 6 ++--- hist/histv7/inc/ROOT/RHistImpl.hxx | 24 +++++++++---------- hist/histv7/inc/ROOT/RHistUtils.hxx | 2 +- hist/histv7/inc/ROOT/RHistView.hxx | 2 +- hist/histv7/src/RAxis.cxx | 2 +- hist/spectrumpainter/doc/index.md | 2 +- 54 files changed, 100 insertions(+), 82 deletions(-) create mode 100644 hist/hist/doc/index.md create mode 100644 hist/histdrawv7/doc/index.md create mode 100644 hist/histv7/doc/index.md diff --git a/hist/doc/Hist.md b/hist/doc/Hist.md index 427d974cb4358..cd7cc3031c1a8 100644 --- a/hist/doc/Hist.md +++ b/hist/doc/Hist.md @@ -31,3 +31,6 @@ ROOT supports the following histogram types: - [How to Fit Histograms](https://root.cern/manual/fitting/) - [How to Fit find peaks in histograms](https://root.cern/doc/master/peaks_8C.html) - [How to convert Hbook/PAW files to ROOT](https://root-forum.cern.ch/t/how-to-convert-hbook-paw-files-to-root/) + +\defgroup HistPainting Painting classes +\ingroup Hist diff --git a/hist/hist/doc/index.md b/hist/hist/doc/index.md new file mode 100644 index 0000000000000..42d0d73e98a8f --- /dev/null +++ b/hist/hist/doc/index.md @@ -0,0 +1,8 @@ +\defgroup Histograms Histogram classes. +\ingroup Hist + +\defgroup Graphs Graph classes. +\ingroup Hist + +\defgroup Functions Function classes. +\ingroup Hist diff --git a/hist/hist/src/TAxis.cxx b/hist/hist/src/TAxis.cxx index 36780a57469c4..aa701888cfbb6 100644 --- a/hist/hist/src/TAxis.cxx +++ b/hist/hist/src/TAxis.cxx @@ -33,7 +33,7 @@ ClassImp(TAxis); //////////////////////////////////////////////////////////////////////////////// /** \class TAxis - \ingroup Hist + \ingroup Histograms \brief Class to manage histogram axis This class manages histogram axis. It is referenced by TH1 and TGraph. diff --git a/hist/hist/src/TF1.cxx b/hist/hist/src/TF1.cxx index 7255e7ba1e0fb..f178a97da3988 100644 --- a/hist/hist/src/TF1.cxx +++ b/hist/hist/src/TF1.cxx @@ -239,7 +239,7 @@ class TF1_EvalWrapper : public ROOT::Math::IGenFunction { //////////////////////////////////////////////////////////////////////////////// /** \class TF1 - \ingroup Hist + \ingroup Functions \brief 1-Dim function class diff --git a/hist/hist/src/TF12.cxx b/hist/hist/src/TF12.cxx index 9ab49f05b2fab..137254297c2bf 100644 --- a/hist/hist/src/TF12.cxx +++ b/hist/hist/src/TF12.cxx @@ -16,7 +16,7 @@ ClassImp(TF12); /** \class TF12 - \ingroup Hist + \ingroup Functions A projection of a TF2 along X or Y It has the same behaviour as a TF1 diff --git a/hist/hist/src/TF1Convolution.cxx b/hist/hist/src/TF1Convolution.cxx index d1bd820c3dd42..c64c22a0b98b5 100644 --- a/hist/hist/src/TF1Convolution.cxx +++ b/hist/hist/src/TF1Convolution.cxx @@ -24,7 +24,7 @@ #include "TVirtualFFT.h" /** \class TF1Convolution - \ingroup Hist + \ingroup Functions \brief Class wrapping convolution of two functions Class wrapping convolution of two functions: evaluation of \f$\int f(x)g(x-t)dx\f$ @@ -49,7 +49,7 @@ class TF1Convolution_EvalWrapper Double_t fT0; public: - TF1Convolution_EvalWrapper(TF1 &f1, TF1 &f2, Double_t t) : + TF1Convolution_EvalWrapper(TF1 &f1, TF1 &f2, Double_t t) : fFunc1(&f1), fFunc2(&f2), fT0(t) @@ -65,7 +65,7 @@ class TF1Convolution_EvalWrapper }; //////////////////////////////////////////////////////////////////////////////// -/// Internal function to initialize data members. +/// Internal function to initialize data members. /// Use TF1::Copy instead of Clone. void TF1Convolution::InitializeDataMembers(TF1* function1, TF1* function2, Bool_t useFFT) @@ -93,7 +93,7 @@ void TF1Convolution::InitializeDataMembers(TF1* function1, TF1* function2, Bool_ fFunction1->SetBit(TF1::kNotGlobal, kTRUE); fFunction2->SetBit(TF1::kNotGlobal, kTRUE); - // use by default range of first function + // use by default range of first function fFunction1->GetRange(fXmin, fXmax); // when using FFT add by default an extra 10% on each side if (useFFT) { @@ -200,7 +200,7 @@ TF1Convolution::TF1Convolution(TString formula, Double_t xmin, Double_t xmax, B //////////////////////////////////////////////////////////////////////////////// /// Constructor from 2 function names where f1 and f2 are two functions known to -/// ROOT. +/// ROOT. /// /// If the function names are not known to ROOT, tries to interpret them as /// TFormula. @@ -319,7 +319,7 @@ void TF1Convolution::MakeFFTConv() // delete the fft objects delete fft1; delete fft2; - delete fftinverse; + delete fftinverse; } //////////////////////////////////////////////////////////////////////////////// @@ -338,7 +338,7 @@ Double_t TF1Convolution::EvalFFTConv(Double_t t) //////////////////////////////////////////////////////////////////////////////// /// Perform numerical convolution. -/// +/// Double_t TF1Convolution::EvalNumConv(Double_t t) { @@ -429,7 +429,7 @@ void TF1Convolution::SetParameters(Double_t p0, Double_t p1, Double_t p2, Double //////////////////////////////////////////////////////////////////////////////// /// Set the fraction of extra range used when doing an FFT convolution. -/// The extra range is often needed to avoid mirroring effect of the resulting convolution +/// The extra range is often needed to avoid mirroring effect of the resulting convolution /// function at the borders. /// By default an extra range of 0.1 is used. @@ -444,7 +444,7 @@ void TF1Convolution::SetExtraRange(Double_t percentage) //////////////////////////////////////////////////////////////////////////////// /// Set the actual range used for the convolution. -/// In case a or b are -inf or +inf and FFT convolution is used, then the +/// In case a or b are -inf or +inf and FFT convolution is used, then the /// range of the first function will be used and extended by the default extra range fraction. void TF1Convolution::SetRange(Double_t a, Double_t b) @@ -519,7 +519,7 @@ void TF1Convolution::Copy(TObject &obj) const // we need to copy the content of the unique_ptr's ((TF1Convolution &)obj).fFunction1 = std::unique_ptr((TF1 *)new TF1() ); ((TF1Convolution &)obj).fFunction2 = std::unique_ptr((TF1 *)new TF1() ); - fFunction1->Copy(*(((TF1Convolution &)obj).fFunction1 ) ); - fFunction2->Copy(*(((TF1Convolution &)obj).fFunction2 ) ); + fFunction1->Copy(*(((TF1Convolution &)obj).fFunction1 ) ); + fFunction2->Copy(*(((TF1Convolution &)obj).fFunction2 ) ); // fGraphConv is transient anyway, so we don't bother to copy it } diff --git a/hist/hist/src/TF1NormSum.cxx b/hist/hist/src/TF1NormSum.cxx index e4dbcd54db69e..4144367ab9885 100644 --- a/hist/hist/src/TF1NormSum.cxx +++ b/hist/hist/src/TF1NormSum.cxx @@ -19,7 +19,7 @@ ClassImp(TF1NormSum); /** \class TF1NormSum - \ingroup Hist + \ingroup Functions Class adding two functions: c1*f1+c2*f2 */ @@ -67,11 +67,11 @@ void TF1NormSum::InitializeDataMembers(const std::vector &functions, cons fFunctions = std::vector>(functions.size()); for (unsigned int n = 0; n < fNOfFunctions; n++) { // use TF1::Copy and not clone to copy the TF1 pointers - // and use IsA()::New() in case we have base class pointers + // and use IsA()::New() in case we have base class pointers TF1 * f = (TF1*) functions[n]->IsA()->New(); functions[n]->Copy(*f); fFunctions[n] = std::unique_ptr(f); - + if (!fFunctions[n]) Fatal("InitializeDataMembers", "Invalid input function -- abort"); @@ -421,7 +421,7 @@ void TF1NormSum::Copy(TObject &obj) const // Clone objects in unique_ptr's ((TF1NormSum &)obj).fFunctions = std::vector>(fNOfFunctions); for (unsigned int n = 0; n < fNOfFunctions; n++) { - TF1 * f = (TF1*) fFunctions[n]->IsA()->New(); + TF1 * f = (TF1*) fFunctions[n]->IsA()->New(); fFunctions[n]->Copy(*f); ((TF1NormSum &)obj).fFunctions[n] = std::unique_ptr(f); } diff --git a/hist/hist/src/TF2.cxx b/hist/hist/src/TF2.cxx index aabe092909e5e..8ba4c8126d86a 100644 --- a/hist/hist/src/TF2.cxx +++ b/hist/hist/src/TF2.cxx @@ -25,7 +25,7 @@ ClassImp(TF2); /** \class TF2 - \ingroup Hist + \ingroup Functions A 2-Dim function with parameters. ### Expression using variables x and y diff --git a/hist/hist/src/TF3.cxx b/hist/hist/src/TF3.cxx index d496fa82920fc..006da28aca2bb 100644 --- a/hist/hist/src/TF3.cxx +++ b/hist/hist/src/TF3.cxx @@ -27,7 +27,7 @@ ClassImp(TF3); /** \class TF3 - \ingroup Hist + \ingroup Functions A 3-Dim function with parameters */ diff --git a/hist/hist/src/TGraph.cxx b/hist/hist/src/TGraph.cxx index 6a42b506dc5d7..d74c93c7c1e03 100644 --- a/hist/hist/src/TGraph.cxx +++ b/hist/hist/src/TGraph.cxx @@ -48,7 +48,7 @@ ClassImp(TGraph); //////////////////////////////////////////////////////////////////////////////// /** \class TGraph - \ingroup Hist + \ingroup Graphs A TGraph is an object made of two arrays X and Y with npoints each. The TGraph painting is performed thanks to the TGraphPainter class. All details about the various painting options are given in this class. diff --git a/hist/hist/src/TGraph2D.cxx b/hist/hist/src/TGraph2D.cxx index c718b08e5bcff..df411aa186a4b 100644 --- a/hist/hist/src/TGraph2D.cxx +++ b/hist/hist/src/TGraph2D.cxx @@ -39,7 +39,7 @@ ClassImp(TGraph2D); /** \class TGraph2D - \ingroup Hist + \ingroup Graphs Graphics object made of three arrays X, Y and Z with the same number of points each. This class has different constructors: diff --git a/hist/hist/src/TGraph2DErrors.cxx b/hist/hist/src/TGraph2DErrors.cxx index 9eff2cbb42449..f1f94478083ff 100644 --- a/hist/hist/src/TGraph2DErrors.cxx +++ b/hist/hist/src/TGraph2DErrors.cxx @@ -20,7 +20,7 @@ ClassImp(TGraph2DErrors); /** \class TGraph2DErrors - \ingroup Hist + \ingroup Graphs Graph 2D class with errors. A TGraph2DErrors is a TGraph2D with errors. It behaves like a TGraph2D and has diff --git a/hist/hist/src/TGraphAsymmErrors.cxx b/hist/hist/src/TGraphAsymmErrors.cxx index 1df312877f3db..9c6973cd56bc6 100644 --- a/hist/hist/src/TGraphAsymmErrors.cxx +++ b/hist/hist/src/TGraphAsymmErrors.cxx @@ -34,7 +34,7 @@ ClassImp(TGraphAsymmErrors); /** \class TGraphAsymmErrors - \ingroup Hist + \ingroup Graphs TGraph with asymmetric error bars. The TGraphAsymmErrors painting is performed thanks to the TGraphPainter diff --git a/hist/hist/src/TGraphBentErrors.cxx b/hist/hist/src/TGraphBentErrors.cxx index a40b18589ea3a..52a05397b8101 100644 --- a/hist/hist/src/TGraphBentErrors.cxx +++ b/hist/hist/src/TGraphBentErrors.cxx @@ -25,7 +25,7 @@ ClassImp(TGraphBentErrors); //////////////////////////////////////////////////////////////////////////////// /** \class TGraphBentErrors - \ingroup Hist + \ingroup Graphs A TGraphBentErrors is a TGraph with bent, asymmetric error bars. The TGraphBentErrors painting is performed thanks to the TGraphPainter diff --git a/hist/hist/src/TGraphDelaunay.cxx b/hist/hist/src/TGraphDelaunay.cxx index 950aa433cb8e3..fe7cada6e77ac 100644 --- a/hist/hist/src/TGraphDelaunay.cxx +++ b/hist/hist/src/TGraphDelaunay.cxx @@ -17,7 +17,7 @@ ClassImp(TGraphDelaunay); /** \class TGraphDelaunay - \ingroup Hist + \ingroup Graphs TGraphDelaunay generates a Delaunay triangulation of a TGraph2D. This triangulation code derives from an implementation done by Luke Jones (Royal Holloway, University of London) in April 2002 in the PAW context. diff --git a/hist/hist/src/TGraphDelaunay2D.cxx b/hist/hist/src/TGraphDelaunay2D.cxx index 3b71b4483d0cd..55bdeb9ca4bd9 100644 --- a/hist/hist/src/TGraphDelaunay2D.cxx +++ b/hist/hist/src/TGraphDelaunay2D.cxx @@ -16,7 +16,7 @@ ClassImp(TGraphDelaunay2D); /** \class TGraphDelaunay2D - \ingroup Hist + \ingroup Graphs TGraphDelaunay2D generates a Delaunay triangulation of a TGraph2D. This triangulation code derives from an implementation done by Luke Jones (Royal Holloway, University of London) in April 2002 in the PAW context. diff --git a/hist/hist/src/TGraphErrors.cxx b/hist/hist/src/TGraphErrors.cxx index 3043685b8b79f..2756206e711af 100644 --- a/hist/hist/src/TGraphErrors.cxx +++ b/hist/hist/src/TGraphErrors.cxx @@ -33,7 +33,7 @@ ClassImp(TGraphErrors); //////////////////////////////////////////////////////////////////////////////// /** \class TGraphErrors - \ingroup Hist + \ingroup Graphs A TGraphErrors is a TGraph with error bars. The TGraphErrors painting is performed thanks to the TGraphPainter diff --git a/hist/hist/src/TGraphMultiErrors.cxx b/hist/hist/src/TGraphMultiErrors.cxx index 9bd6c10a3f077..3f0d341e8dcb4 100644 --- a/hist/hist/src/TGraphMultiErrors.cxx +++ b/hist/hist/src/TGraphMultiErrors.cxx @@ -27,7 +27,7 @@ ClassImp(TGraphMultiErrors) /** \class TGraphMultiErrors - \ingroup Hist + \ingroup Graphs TGraph with asymmetric error bars and multiple y error dimensions. The TGraphMultiErrors painting is performed thanks to the TGraphPainter diff --git a/hist/hist/src/TGraphSmooth.cxx b/hist/hist/src/TGraphSmooth.cxx index a32fbc517fb4b..6acc1e3581cad 100644 --- a/hist/hist/src/TGraphSmooth.cxx +++ b/hist/hist/src/TGraphSmooth.cxx @@ -33,7 +33,7 @@ ClassImp(TGraphSmooth); //______________________________________________________________________ /** \class TGraphSmooth - \ingroup Hist + \ingroup Graph A helper class to smooth TGraph. see examples in $ROOTSYS/tutorials/graphs/motorcycle.C and approx.C */ diff --git a/hist/hist/src/TGraphTime.cxx b/hist/hist/src/TGraphTime.cxx index b47fcb06293a5..552cedc4ef57c 100644 --- a/hist/hist/src/TGraphTime.cxx +++ b/hist/hist/src/TGraphTime.cxx @@ -19,7 +19,7 @@ ClassImp(TGraphTime); /** \class TGraphTime - \ingroup Hist + \ingroup Graphs TGraphTime is used to draw a set of objects evolving with nsteps in time between tmin and tmax. Each time step has a new list of objects. This list can be identical to the list of objects in the previous steps, but with different attributes. diff --git a/hist/hist/src/TH1.cxx b/hist/hist/src/TH1.cxx index 5e6a58cd0f0f0..520ceb5417850 100644 --- a/hist/hist/src/TH1.cxx +++ b/hist/hist/src/TH1.cxx @@ -53,7 +53,7 @@ #include "TH1Merger.h" -/** \addtogroup Hist +/** \addtogroup Histograms @{ \class TH1C \brief 1-D histogram with a byte per channel (see TH1 documentation) @@ -69,6 +69,7 @@ */ /** \class TH1 + \ingroup Histograms TH1 is the base class of all histogram classes in %ROOT. It provides the common interface for operations such as binning, filling, drawing, which @@ -8382,8 +8383,8 @@ void TH1::SetContourLevel(Int_t level, Double_t value) /// ~~~ {.cpp} /// h->GetBinContent(h->GetMaximumBin()) /// ~~~ -/// -/// TH1::GetMaximumBin can be used to get the location of the maximum +/// +/// TH1::GetMaximumBin can be used to get the location of the maximum /// value. Double_t TH1::GetMaximum(Double_t maxval) const @@ -8473,7 +8474,7 @@ Int_t TH1::GetMaximumBin(Int_t &locmax, Int_t &locmay, Int_t &locmaz) const /// h->GetBinContent(h->GetMinimumBin()) /// ~~~ /// -/// TH1::GetMinimumBin can be used to get the location of the +/// TH1::GetMinimumBin can be used to get the location of the /// minimum value. Double_t TH1::GetMinimum(Double_t minval) const diff --git a/hist/hist/src/TH2.cxx b/hist/hist/src/TH2.cxx index ab81fd5a4648f..ef1b4da7dc212 100644 --- a/hist/hist/src/TH2.cxx +++ b/hist/hist/src/TH2.cxx @@ -30,7 +30,7 @@ ClassImp(TH2); -/** \addtogroup Hist +/** \addtogroup Histograms @{ \class TH2C \brief 2-D histogram with a byte per channel (see TH1 documentation) diff --git a/hist/hist/src/TH2Poly.cxx b/hist/hist/src/TH2Poly.cxx index e363ce8363c32..7be47bcf400ad 100644 --- a/hist/hist/src/TH2Poly.cxx +++ b/hist/hist/src/TH2Poly.cxx @@ -21,7 +21,7 @@ ClassImp(TH2Poly); /** \class TH2Poly - \ingroup Hist + \ingroup Histograms 2D Histogram with Polygonal Bins ## Overview @@ -1322,7 +1322,7 @@ void TH2Poly::GetStats(Double_t *stats) const } /** \class TH2PolyBin - \ingroup Hist + \ingroup Histograms Helper class to represent a bin in the TH2Poly histogram */ diff --git a/hist/hist/src/TH3.cxx b/hist/hist/src/TH3.cxx index c32296e65210b..0e596e43cf5e0 100644 --- a/hist/hist/src/TH3.cxx +++ b/hist/hist/src/TH3.cxx @@ -27,7 +27,7 @@ ClassImp(TH3); -/** \addtogroup Hist +/** \addtogroup Histograms @{ \class TH3C \brief 3-D histogram with a byte per channel (see TH1 documentation) @@ -43,7 +43,7 @@ ClassImp(TH3); */ /** \class TH3 - \ingroup Hist + \ingroup Histograms The 3-D histogram classes derived from the 1-D histogram classes. All operations are supported (fill, fit). Drawing is currently restricted to one single option. diff --git a/hist/hist/src/THLimitsFinder.cxx b/hist/hist/src/THLimitsFinder.cxx index c5f659b41f81c..05e21b6828ede 100644 --- a/hist/hist/src/THLimitsFinder.cxx +++ b/hist/hist/src/THLimitsFinder.cxx @@ -17,7 +17,7 @@ THLimitsFinder *THLimitsFinder::fgLimitsFinder = 0; ClassImp(THLimitsFinder); /** \class THLimitsFinder - \ingroup Hist + \ingroup Histograms Class to compute nice axis limits. This class is called by default by the histogramming system diff --git a/hist/hist/src/THStack.cxx b/hist/hist/src/THStack.cxx index 5acdf5d1e311c..32718d5d98443 100644 --- a/hist/hist/src/THStack.cxx +++ b/hist/hist/src/THStack.cxx @@ -32,7 +32,7 @@ ClassImp(THStack); //////////////////////////////////////////////////////////////////////////////// /** \class THStack - \ingroup Hist + \ingroup Histograms The Histogram stack class A THStack is a collection of TH1 or TH2 histograms. diff --git a/hist/hist/src/THn.cxx b/hist/hist/src/THn.cxx index 46445a90cd898..55441b3b052f4 100644 --- a/hist/hist/src/THn.cxx +++ b/hist/hist/src/THn.cxx @@ -120,7 +120,7 @@ namespace { /** \class THn - \ingroup Hist + \ingroup Histograms Multidimensional histogram. Use a THn if you really, really have to store more than three dimensions, diff --git a/hist/hist/src/TMultiGraph.cxx b/hist/hist/src/TMultiGraph.cxx index 1026c1c2be78a..b7ba5f85ad15d 100644 --- a/hist/hist/src/TMultiGraph.cxx +++ b/hist/hist/src/TMultiGraph.cxx @@ -39,7 +39,7 @@ ClassImp(TMultiGraph); //////////////////////////////////////////////////////////////////////////////// /** \class TMultiGraph - \ingroup Hist + \ingroup Graphs \brief A TMultiGraph is a collection of TGraph (or derived) objects. - [Introduction](\ref MG00) diff --git a/hist/hist/src/TPolyMarker.cxx b/hist/hist/src/TPolyMarker.cxx index ab4423ad20419..ae9062dd3eb41 100644 --- a/hist/hist/src/TPolyMarker.cxx +++ b/hist/hist/src/TPolyMarker.cxx @@ -20,7 +20,7 @@ ClassImp(TPolyMarker); /** \class TPolyMarker - \ingroup Hist + \ingroup Graphs A PolyMarker is defined by an array on N points in a 2-D space. At each point x[i], y[i] a marker is drawn. Marker attributes are managed by TAttMarker. diff --git a/hist/hist/src/TProfile.cxx b/hist/hist/src/TProfile.cxx index ee27077a0f761..6bde0a86c7e15 100644 --- a/hist/hist/src/TProfile.cxx +++ b/hist/hist/src/TProfile.cxx @@ -26,7 +26,7 @@ Bool_t TProfile::fgApproximate = kFALSE; ClassImp(TProfile); /** \class TProfile - \ingroup Hist + \ingroup Histograms Profile Histogram. Profile histograms are used to display the mean value of Y and its error for each bin in X. The displayed error is by default the diff --git a/hist/hist/src/TProfile2D.cxx b/hist/hist/src/TProfile2D.cxx index 18883e2e399e4..b7d22ddcb32f6 100644 --- a/hist/hist/src/TProfile2D.cxx +++ b/hist/hist/src/TProfile2D.cxx @@ -23,7 +23,7 @@ Bool_t TProfile2D::fgApproximate = kFALSE; ClassImp(TProfile2D); /** \class TProfile2D - \ingroup Hist + \ingroup Histograms Profile2D histograms are used to display the mean value of Z and its error for each cell in X,Y. Profile2D histograms are in many cases an diff --git a/hist/hist/src/TProfile2Poly.cxx b/hist/hist/src/TProfile2Poly.cxx index 4aa3dc5ab64b1..8c12f079e381c 100644 --- a/hist/hist/src/TProfile2Poly.cxx +++ b/hist/hist/src/TProfile2Poly.cxx @@ -20,7 +20,7 @@ #include /** \class TProfile2Poly - \ingroup Hist + \ingroup Histograms 2D Profile Histogram with Polygonal Bins. tprofile2polyRealisticModuleError.C and tprofile2polyRealistic.C illustrate how diff --git a/hist/hist/src/TProfile3D.cxx b/hist/hist/src/TProfile3D.cxx index c781ba62640e9..ba3cfc75cd1ad 100644 --- a/hist/hist/src/TProfile3D.cxx +++ b/hist/hist/src/TProfile3D.cxx @@ -25,7 +25,7 @@ Bool_t TProfile3D::fgApproximate = kFALSE; ClassImp(TProfile3D); /** \class TProfile3D - \ingroup Hist + \ingroup Histograms Profile3D histograms are used to display the mean value of T and its RMS for each cell in X,Y,Z. Profile3D histograms are in many cases an diff --git a/hist/hist/src/TVirtualGraphPainter.cxx b/hist/hist/src/TVirtualGraphPainter.cxx index dd93d004e93b2..49526c4b77938 100644 --- a/hist/hist/src/TVirtualGraphPainter.cxx +++ b/hist/hist/src/TVirtualGraphPainter.cxx @@ -18,7 +18,7 @@ TVirtualGraphPainter *TVirtualGraphPainter::fgPainter = nullptr; ClassImp(TVirtualGraphPainter); /** \class TVirtualGraphPainter - \ingroup Hist + \ingroup Histpainter Abstract interface to a histogram painter */ diff --git a/hist/hist/src/TVirtualHistPainter.cxx b/hist/hist/src/TVirtualHistPainter.cxx index f31b1d44ad92b..bd880d9eea73a 100644 --- a/hist/hist/src/TVirtualHistPainter.cxx +++ b/hist/hist/src/TVirtualHistPainter.cxx @@ -18,7 +18,7 @@ TClass *TVirtualHistPainter::fgPainter = nullptr; ClassImp(TVirtualHistPainter); /** \class TVirtualHistPainter - \ingroup Hist + \ingroup Histpainter Abstract interface to a histogram painter */ diff --git a/hist/histdrawv7/doc/index.md b/hist/histdrawv7/doc/index.md new file mode 100644 index 0000000000000..4562da0a85c72 --- /dev/null +++ b/hist/histdrawv7/doc/index.md @@ -0,0 +1,2 @@ +\defgroup HistDrawV7 ROOT 7 Histograms painting classes. +\ingroup HistPainting diff --git a/hist/histdrawv7/inc/ROOT/RHistDisplayItem.hxx b/hist/histdrawv7/inc/ROOT/RHistDisplayItem.hxx index 35f61a532414f..dfb6a5eb65ae1 100644 --- a/hist/histdrawv7/inc/ROOT/RHistDisplayItem.hxx +++ b/hist/histdrawv7/inc/ROOT/RHistDisplayItem.hxx @@ -1,5 +1,5 @@ -/// \file ROOT/RHistDisplayItem.h -/// \ingroup HistDraw ROOT7 +/// \file ROOT/RHistDisplayItem.hxx +/// \ingroup HistDrawV7 /// \author Sergey Linev /// \date 2020-06-25 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx b/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx index cd696247dde5f..57e75c0ef6cc6 100644 --- a/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx +++ b/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistDrawable.hxx -/// \ingroup HistDraw ROOT7 +/// \ingroup HistDrawV7 /// \author Axel Naumann /// \date 2015-07-09 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histdrawv7/src/RHistDisplayItem.cxx b/hist/histdrawv7/src/RHistDisplayItem.cxx index 58baa7530055f..a68fee7319ebb 100644 --- a/hist/histdrawv7/src/RHistDisplayItem.cxx +++ b/hist/histdrawv7/src/RHistDisplayItem.cxx @@ -1,5 +1,5 @@ /// \file RHistDisplayItem.cxx -/// \ingroup Hist ROOT7 +/// \ingroup HistDrawV7 /// \author Sergey Linev /// \date 2020-06-25 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histdrawv7/src/RHistDrawable.cxx b/hist/histdrawv7/src/RHistDrawable.cxx index 3c05d578df0d1..6af82bcae9929 100644 --- a/hist/histdrawv7/src/RHistDrawable.cxx +++ b/hist/histdrawv7/src/RHistDrawable.cxx @@ -1,5 +1,5 @@ /// \file RHistDrawable.cxx -/// \ingroup Hist ROOT7 +/// \ingroup HistDrawV7 /// \author Axel Naumann /// \date 2015-09-11 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histpainter/doc/index.md b/hist/histpainter/doc/index.md index d64ba2645d2b6..f31c0679ec5fc 100644 --- a/hist/histpainter/doc/index.md +++ b/hist/histpainter/doc/index.md @@ -1,5 +1,5 @@ \defgroup Histpainter Histograms and graphs painting classes. -\ingroup Hist +\ingroup HistPainting The histograms and graphs plotting options are described in details in the THistPainter and TGraphPainter classes. Some related tutorials: diff --git a/hist/histv7/doc/index.md b/hist/histv7/doc/index.md new file mode 100644 index 0000000000000..9854f75aaeb25 --- /dev/null +++ b/hist/histv7/doc/index.md @@ -0,0 +1,4 @@ +\defgroup HistV7 ROOT 7 histogram classes. +\ingroup Hist + +\warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RAxis.hxx b/hist/histv7/inc/ROOT/RAxis.hxx index cbb5f1687505d..e3c16d83c273c 100644 --- a/hist/histv7/inc/ROOT/RAxis.hxx +++ b/hist/histv7/inc/ROOT/RAxis.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RAxis.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-03-23 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RAxisConfig.hxx b/hist/histv7/inc/ROOT/RAxisConfig.hxx index 34bf2f6a4a1c2..adfc54821605f 100644 --- a/hist/histv7/inc/ROOT/RAxisConfig.hxx +++ b/hist/histv7/inc/ROOT/RAxisConfig.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RAxisConfig.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2020-02-05 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RHist.hxx b/hist/histv7/inc/ROOT/RHist.hxx index bfa8a0d444d4f..cec2e7b3e32fe 100644 --- a/hist/histv7/inc/ROOT/RHist.hxx +++ b/hist/histv7/inc/ROOT/RHist.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHist.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-03-23 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RHistBinIter.hxx b/hist/histv7/inc/ROOT/RHistBinIter.hxx index ab77dfbeaa532..06bec9465c073 100644 --- a/hist/histv7/inc/ROOT/RHistBinIter.hxx +++ b/hist/histv7/inc/ROOT/RHistBinIter.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistBinIter.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-08-07 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RHistBufferedFill.hxx b/hist/histv7/inc/ROOT/RHistBufferedFill.hxx index 8efe00e207e86..b9c8e5d5a08d5 100644 --- a/hist/histv7/inc/ROOT/RHistBufferedFill.hxx +++ b/hist/histv7/inc/ROOT/RHistBufferedFill.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistBufferedFill.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-07-03 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx b/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx index 8ff76eb6592f7..9b67fbf33f7f8 100644 --- a/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx +++ b/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistConcurrentFill.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-07-03 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/inc/ROOT/RHistData.hxx b/hist/histv7/inc/ROOT/RHistData.hxx index 9757986ff4912..1b9deee5d9662 100644 --- a/hist/histv7/inc/ROOT/RHistData.hxx +++ b/hist/histv7/inc/ROOT/RHistData.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistData.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-06-14 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback @@ -86,7 +86,7 @@ public: RHistStatContent(size_t bin_size, size_t overflow_size): fBinContent(bin_size), fOverflowBinContent(overflow_size) {} /// Get a reference to the bin corresponding to `binidx` of the correct bin - /// content array + /// content array /// i.e. depending if `binidx` is a regular bin or an under- / overflow bin. Weight_t GetBinArray(int binidx) const { @@ -310,7 +310,7 @@ public: RHistStatUncertainty(size_t bin_size, size_t overflow_size): fSumWeightsSquared(bin_size), fOverflowSumWeightsSquared(overflow_size) {} /// Get a reference to the bin corresponding to `binidx` of the correct bin - /// content array + /// content array /// i.e. depending if `binidx` is a regular bin or an under- / overflow bin. Weight_t GetBinArray(int binidx) const { diff --git a/hist/histv7/inc/ROOT/RHistImpl.hxx b/hist/histv7/inc/ROOT/RHistImpl.hxx index 3ec2b60931871..d53ad431bbbd3 100644 --- a/hist/histv7/inc/ROOT/RHistImpl.hxx +++ b/hist/histv7/inc/ROOT/RHistImpl.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistImpl.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-03-23 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback @@ -210,17 +210,17 @@ public: int GetNOverflowBins() const noexcept final { return fStatistics.sizeUnderOver(); } /// Get the bin content (sum of weights) for bin index `binidx`. - Weight_t GetBinContent(int binidx) const + Weight_t GetBinContent(int binidx) const { assert(binidx != 0); - return fStatistics[binidx]; + return fStatistics[binidx]; } /// Get the bin content (sum of weights) for bin index `binidx` (non-const). - Weight_t &GetBinContent(int binidx) + Weight_t &GetBinContent(int binidx) { assert(binidx != 0); - return fStatistics[binidx]; + return fStatistics[binidx]; } /// Const access to statistics. @@ -234,10 +234,10 @@ public: double GetBinContentAsDouble(int binidx) const final { return (double)GetBinContent(binidx); } /// Add `w` to the bin at index `bin`. - void AddBinContent(int binidx, Weight_t w) + void AddBinContent(int binidx, Weight_t w) { assert(binidx != 0); - fStatistics[binidx] += w; + fStatistics[binidx] += w; } }; } // namespace Detail @@ -410,7 +410,7 @@ struct RComputeGlobalBin { // will be no regular bins in there. if (localBins[I] < 1) return total_regular_bins_before; - + return RComputeGlobalBin()(total_regular_bins_before, axes, virtualBins, binSizes, localBins); } }; @@ -533,7 +533,7 @@ struct RComputeLocalBins { // overflow bins that were associated with regular bins. if (unprocessed_previous_overflow_bin == 0) return; - + return Internal::RComputeLocalBins() (axes, unprocessed_previous_overflow_bin, num_regular_bins_before, bins_per_hyperplane, regular_bins_per_hyperplane, curr_bins_per_hyperplane, curr_regular_bins_per_hyperplane); @@ -747,8 +747,8 @@ public: /// Retrieve the fill function for this histogram implementation, to prevent /// the virtual function call for high-frequency fills. - FillFunc_t GetFillFunc() const final { - return (FillFunc_t)&RHistImpl::Fill; + FillFunc_t GetFillFunc() const final { + return (FillFunc_t)&RHistImpl::Fill; } /// Get the axes of this histogram. @@ -934,7 +934,7 @@ public: std::array bins_per_hyperplane; std::array regular_bins_per_hyperplane; Internal::RComputeLocalBinsInitialisation()(bins_per_hyperplane, regular_bins_per_hyperplane, fAxes); - + int curr_bins_per_hyperplane = Internal::RGetNBinsCount()(fAxes); int curr_regular_bins_per_hyperplane = Internal::RGetNBinsNoOverCount()(fAxes); diff --git a/hist/histv7/inc/ROOT/RHistUtils.hxx b/hist/histv7/inc/ROOT/RHistUtils.hxx index 0c70d4e5ad5f5..3cc947709ff43 100644 --- a/hist/histv7/inc/ROOT/RHistUtils.hxx +++ b/hist/histv7/inc/ROOT/RHistUtils.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistUtils.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2016-06-01 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback is welcome! diff --git a/hist/histv7/inc/ROOT/RHistView.hxx b/hist/histv7/inc/ROOT/RHistView.hxx index d2b40e0f35adb..b023277e1577b 100644 --- a/hist/histv7/inc/ROOT/RHistView.hxx +++ b/hist/histv7/inc/ROOT/RHistView.hxx @@ -1,5 +1,5 @@ /// \file ROOT/RHistView.hxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV /// \author Axel Naumann /// \date 2015-08-06 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/histv7/src/RAxis.cxx b/hist/histv7/src/RAxis.cxx index 5274dfd888e0d..7818be3d89fea 100644 --- a/hist/histv7/src/RAxis.cxx +++ b/hist/histv7/src/RAxis.cxx @@ -1,5 +1,5 @@ /// \file RAxis.cxx -/// \ingroup Hist ROOT7 +/// \ingroup HistV7 /// \author Axel Naumann /// \date 2015-08-06 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback diff --git a/hist/spectrumpainter/doc/index.md b/hist/spectrumpainter/doc/index.md index 4260492a423c2..40256a98c1227 100644 --- a/hist/spectrumpainter/doc/index.md +++ b/hist/spectrumpainter/doc/index.md @@ -1,4 +1,4 @@ \defgroup Spectrumpainter TSpectrum painting class. -\ingroup Hist +\ingroup HistPainting - [TSpectrum2Painter options/attributes.](http://root.cern.ch/root/html/TSpectrum2Painter.html#TSpectrum2Painter:PaintSpectrum) From fc300fd4030ea599f2b884bcbcc9365f36c0fd56 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 15 Sep 2021 10:16:42 +0200 Subject: [PATCH 084/577] [tree,net] Doc style improvements (NFC). --- net/net/src/TS3WebFile.cxx | 20 ++++++++++++++------ tree/tree/src/TTree.cxx | 23 ++++++++++++----------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/net/net/src/TS3WebFile.cxx b/net/net/src/TS3WebFile.cxx index cf7277ab06362..bc0d15cdce5fb 100644 --- a/net/net/src/TS3WebFile.cxx +++ b/net/net/src/TS3WebFile.cxx @@ -72,16 +72,20 @@ ClassImp(TS3WebFile); /// Construct a TS3WebFile object. The path argument is a URL of one of the /// following forms: /// -/// s3://host.example.com/bucket/path/to/my/file -/// s3http://host.example.com/bucket/path/to/my/file -/// s3https://host.example.com/bucket/path/to/my/file -/// as3://host.example.com/bucket/path/to/my/file +/// ``` +/// s3://host.example.com/bucket/path/to/my/file +/// s3http://host.example.com/bucket/path/to/my/file +/// s3https://host.example.com/bucket/path/to/my/file +/// as3://host.example.com/bucket/path/to/my/file +/// ``` /// /// For files hosted by Google Storage, use the following forms: /// -/// gs://storage.googleapis.com/bucket/path/to/my/file -/// gshttp://storage.googleapis.com/bucket/path/to/my/file +/// ``` +/// gs://storage.googleapis.com/bucket/path/to/my/file +/// gshttp://storage.googleapis.com/bucket/path/to/my/file /// gsthttps://storage.googleapis.com/bucket/path/to/my/file +/// ``` /// /// The 'as3' scheme is accepted for backwards compatibility but its usage is /// deprecated. @@ -89,8 +93,10 @@ ClassImp(TS3WebFile); /// The recommended way to create an instance of this class is through /// TFile::Open, for instance: /// +/// ```c++ /// TFile* f1 = TFile::Open("s3://host.example.com/bucket/path/to/my/file") /// TFile* f2 = TFile::Open("gs://storage.googleapis.com/bucket/path/to/my/file") +/// ``` /// /// The specified scheme (i.e. s3, s3http, s3https, ...) determines the underlying /// transport protocol to use for downloading the file contents, namely HTTP or HTTPS. @@ -120,12 +126,14 @@ ClassImp(TS3WebFile); /// "NOPROXY AUTH=F38XYZABCDeFgH4D0E1F:V+frt4re7J1euSNFnmaf8wwmI4AAAE7kzxZ/TTM+" /// /// Examples: +/// ``` /// TFile* f1 = TFile::Open("s3://host.example.com/bucket/path/to/my/file", /// "NOPROXY AUTH=F38XYZABCDeFgH4D0E1F:V+frt4re7J1euSNFnmaf8wwmI4AAAE7kzxZ/TTM+"); /// TFile* f2 = TFile::Open("s3://host.example.com/bucket/path/to/my/file", /// "AUTH=F38XYZABCDeFgH4D0E1F:V+frt4re7J1euSNFnmaf8wwmI4AAAE7kzxZ/TTM+"); /// TFile* f3 = TFile::Open("s3://host.example.com/bucket/path/to/my/file", /// "TOKEN=AQoDYXdzEM///////////wEa8AHEYmCinjD+TsGEjtgKSMAT6wnY"); +/// ``` /// /// If there is no authentication information in the 'options' argument /// (i.e. not AUTH="....") the values of the environmental variables diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index a1bd6bba3747f..ff71dc2918966 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -43,10 +43,11 @@ one single I/O buffer or to make several branches. Making several branches is particularly interesting in the data analysis phase, when it is desirable to have a high reading rate and not all columns are equally interesting -## Table of contents: -- [Creating a TTree](\ref creatingattree) -- [Add a Column of Fundamental Types and Arrays thereof](\ref addcolumnoffundamentaltypes) -- [Add a Column of a STL Collection instances](\ref addingacolumnofstl) +\anchor creatingattreetoc +## Create a TTree to store columnar data +- [Construct a TTree](\ref creatingattree) +- [Add a column of Fundamental Types and Arrays thereof](\ref addcolumnoffundamentaltypes) +- [Add a column of a STL Collection instances](\ref addingacolumnofstl) - [Add a column holding an object](\ref addingacolumnofobjs) - [Add a column holding a TObjectArray](\ref addingacolumnofobjs) - [Fill the tree](\ref fillthetree) @@ -54,7 +55,7 @@ when it is desirable to have a high reading rate and not all columns are equally - [An Example](\ref fullexample) \anchor creatingattree -## Creating a TTree +## Construct a TTree ~~~ {.cpp} TTree tree(name, title) @@ -69,7 +70,7 @@ structures. In the following, the details about the creation of different types of branches are given. \anchor addcolumnoffundamentaltypes -## Add a column (`branch`) of fundamental types and arrays thereof +## Add a column ("branch") holding fundamental types and arrays thereof This strategy works also for lists of variables, e.g. to describe simple structures. It is strongly recommended to persistify those as objects rather than lists of leaves. @@ -113,7 +114,7 @@ It is strongly recommended to persistify those as objects rather than lists of l - If the address points to a single numerical variable, the leaflist is optional: ~~~ {.cpp} int value; - `tree->Branch(branchname, &value);` + tree->Branch(branchname, &value); ~~~ - If the address points to more than one numerical variable, we strongly recommend that the variable be sorted in decreasing order of size. Any other order will @@ -130,7 +131,7 @@ It is strongly recommended to persistify those as objects rather than lists of l 18 bits were sufficient, the syntax would become: `myArr[myArrSize]/d[0,twopi,18]` \anchor addingacolumnofstl -## Adding a column of STL collection instances (e.g. std::vector, std::list, std::unordered_map) +## Adding a column holding STL collection instances (e.g. std::vector, std::list, std::unordered_map) ~~~ {.cpp} auto branch = tree.Branch( branchname, STLcollection, buffsize, splitlevel); @@ -151,7 +152,7 @@ redefine the branch address before filling the branch again. This is done via the TBranch::SetAddress member function. \anchor addingacolumnofobjs -## Add a column of objects +## Add a column holding objects ~~~ {.cpp} MyClass object; @@ -205,7 +206,7 @@ by TTree::Branch if the pointer p_object is zero, the object will not be deleted when the TTree is deleted. \anchor addingacolumnoftclonesarray -## Add a column of TClonesArray instances +## Add a column holding TClonesArray instances *It is recommended to use STL containers instead of TClonesArrays*. @@ -219,7 +220,7 @@ this function will create one subbranch for each data member of the object TTrack. \anchor fillthetree -## Fill the Tree: +## Fill the Tree A TTree instance is filled with the invocation of the TTree::Fill method: ~~~ {.cpp} From 72b48b586e844e1ef64d38d46cd720866a8e2c1a Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 20 Sep 2021 14:03:08 +0200 Subject: [PATCH 085/577] [skip-ci] add a TOC to ease external referencing. (#9014) --- hist/hist/src/TGraph2D.cxx | 39 ++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/hist/hist/src/TGraph2D.cxx b/hist/hist/src/TGraph2D.cxx index df411aa186a4b..8dcf012fbd411 100644 --- a/hist/hist/src/TGraph2D.cxx +++ b/hist/hist/src/TGraph2D.cxx @@ -42,6 +42,18 @@ ClassImp(TGraph2D); \ingroup Graphs Graphics object made of three arrays X, Y and Z with the same number of points each. +- [Creating a TGraph2D](\ref G2D00) +- [Drawing options](\ref G2D01) +- [Examples](\ref G2D02) + - [SURF1 Example](\ref G2D021) + - [Fitting Example](\ref G2D022) + - [PCOL Example](\ref G2D023) +- [Definition of the Delaunay triangulation (After B. Delaunay)](\ref G2D03) + + +\anchor G2D00 +## Creating a TGraph2D + This class has different constructors: - With an array's dimension and three arrays x, y, and z: ~~~ {.cpp} @@ -74,12 +86,15 @@ Note that in any of these three cases, `SetPoint()` can be used to change a data point or add a new one. If the data point index (`i`) is greater than the current size of the internal arrays, they are automatically extended. -Like TGraph the TGraph2D constructors do not have the TGraph2D title and name as parameters. -A TGraph2D has the default title and name "Graph2D". To change the default title -and name `SetTitle` and `SetName` should be called on the TGraph2D after its creation. +Like TGraph some TGraph2D constructors do not have the TGraph2D title and name as parameters. +For these constructors TGraph2D has the default title and name "Graph2D". To change the +default title and name `SetTitle` and `SetName` should be called on the TGraph2D after its +creation. -Specific drawing options can be used to paint a TGraph2D: +\anchor G2D01 +## Drawing options +Specific drawing options can be used to paint a TGraph2D: | Option | Description | |----------|-------------------------------------------------------------------| @@ -127,7 +142,11 @@ at drawing time only. Therefore they should called after the TGraph2D is drawn: g->GetXaxis()->SetTitle("X axis title"); ~~~ -Example: +\anchor G2D02 +## Examples + +\anchor G2D021 +### SURF1 Example Begin_Macro(source) { @@ -149,12 +168,18 @@ Begin_Macro(source) } End_Macro +\anchor G2D022 +### Fitting Example + 2D graphs can be fitted as shown by the following example: Begin_Macro(source) ../../../tutorials/fit/graph2dfit.C End_Macro +\anchor G2D023 +### PCOL Example + Example showing the PCOL option. Begin_Macro(source) @@ -189,7 +214,9 @@ Begin_Macro(source) } End_Macro -### Definition of Delaunay triangulation (After B. Delaunay) +\anchor G2D03 +## Definition of the Delaunay triangulation (After B. Delaunay) + For a set S of points in the Euclidean plane, the unique triangulation DT(S) of S such that no point in S is inside the circumcircle of any triangle in DT(S). DT(S) is the dual of the Voronoi diagram of S. From 97879a0e58d55a245733dc5493e6de17821ebe21 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 21 Sep 2021 09:02:42 +0200 Subject: [PATCH 086/577] [skip-ci] better doc (#9016) --- tree/tree/src/TTreeCache.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/tree/src/TTreeCache.cxx b/tree/tree/src/TTreeCache.cxx index acb44dd57a2af..a895734724d89 100644 --- a/tree/tree/src/TTreeCache.cxx +++ b/tree/tree/src/TTreeCache.cxx @@ -2109,7 +2109,7 @@ void TTreeCache::SetEntryRange(Long64_t emin, Long64_t emax) } //////////////////////////////////////////////////////////////////////////////// -/// Overload to make sure that the object specific +/// Change the file that is being cached. void TTreeCache::SetFile(TFile *file, TFile::ECacheAction action) { From ab84f38cd443fb4af459b6c29b88930afe7cbbce Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 11:26:44 +0200 Subject: [PATCH 087/577] [ntuple] Default page size on write to 64kB (WIP) --- tree/ntuple/v7/inc/ROOT/RNTuple.hxx | 3 ++- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 24 ++++++++++++++++------ tree/ntuple/v7/src/RPageStorageDaos.cxx | 6 +++--- tree/ntuple/v7/src/RPageStorageFile.cxx | 4 ++-- tree/ntuple/v7/test/ntuple_basics.cxx | 7 ++++--- tree/ntuple/v7/test/ntuple_view.cxx | 10 ++++----- tree/ntuple/v7/test/rfield_string.cxx | 2 +- 7 files changed, 35 insertions(+), 21 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx index 2195accb0119b..9598848f0d749 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx @@ -386,7 +386,8 @@ public: value.GetField()->Append(value); } fNEntries++; - if ((fNEntries % fSink->GetWriteOptions().GetNEntriesPerCluster()) == 0) + // FIXME(jblomer) + if ((fNEntries % 64000/* fSink->GetWriteOptions().GetNEntriesPerCluster() */) == 0) CommitCluster(); } /// Ensure that the data from the so far seen Fill calls has been written to storage diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index 07004821cc257..90e1751f02adf 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -17,6 +17,7 @@ #define ROOT7_RNTupleOptions #include +#include #include namespace ROOT { @@ -47,8 +48,12 @@ All page sink classes need to support the common options. class RNTupleWriteOptions { int fCompression{RCompressionSetting::EDefaults::kUseAnalysis}; ENTupleContainerFormat fContainerFormat{ENTupleContainerFormat::kTFile}; - NTupleSize_t fNEntriesPerCluster = 64000; - NTupleSize_t fNElementsPerPage = 10000; + /// Approximation of the minimum compressed cluster size + std::size_t fMinZippedClusterSize = 64 * 1000 * 1000; + /// Approximation of the max compressed cluster size + std::size_t fMaxZippedClusterSize = 128 * 1000 * 1000; + /// Should be just large enough so that the compression ratio does not benefit much more from larger pages + std::size_t fMaxUnzippedPageSize = 64 * 1024; bool fUseBufferedWrite = true; public: @@ -65,11 +70,18 @@ public: ENTupleContainerFormat GetContainerFormat() const { return fContainerFormat; } void SetContainerFormat(ENTupleContainerFormat val) { fContainerFormat = val; } - NTupleSize_t GetNElementsPerPage() const { return fNElementsPerPage; } - void SetNElementsPerPage(NTupleSize_t val) { fNElementsPerPage = val; } + std::size_t GetMinZippedClusterSize() const { return fMinZippedClusterSize; } + void SetMinZippedClusterSize(std::size_t val) { fMinZippedClusterSize = val; } - NTupleSize_t GetNEntriesPerCluster() const { return fNEntriesPerCluster; } - void SetNEntriesPerCluster(NTupleSize_t val) { fNEntriesPerCluster = val; } + std::size_t GetMaxZippedClusterSize() const { return fMaxZippedClusterSize; } + void SetMaxZippedClusterSize(std::size_t val) { fMaxZippedClusterSize = val; } + + std::size_t GetMaxUnzippedPageSize() const { return fMaxUnzippedPageSize; } + void SetMaxUnzippedPageSize(std::size_t val) { + if (val < 64) + throw RException(R__FAIL("page size too small")); + fMaxUnzippedPageSize = val; + } bool GetUseBufferedWrite() const { return fUseBufferedWrite; } void SetUseBufferedWrite(bool val) { fUseBufferedWrite = val; } diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index 9b6b509e75363..d573596ceb087 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -60,7 +60,7 @@ RDaosURI ParseDaosURI(std::string_view uri) } /// \brief Some random distribution/attribute key. TODO: apply recommended schema, i.e. -/// an OID for each cluster + a dkey for each page. +/// an OID for each cluster + a dkey for each page. static constexpr std::uint64_t kDistributionKey = 0x5a3c69f0cafe4a11; static constexpr std::uint64_t kAttributeKey = 0x4243544b5344422d; @@ -246,9 +246,9 @@ void ROOT::Experimental::Detail::RPageSinkDaos::WriteNTupleAnchor() { ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSinkDaos::ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) { - if (nElements == 0) - nElements = GetWriteOptions().GetNElementsPerPage(); auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); + if (nElements == 0) + nElements = GetWriteOptions().GetMaxUnzippedPageSize() / elementSize; return fPageAllocator->NewPage(columnHandle.fId, elementSize, nElements); } diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index e2ec8cf5f00a1..6f94a14a05f7f 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -177,9 +177,9 @@ void ROOT::Experimental::Detail::RPageSinkFile::CommitDatasetImpl() ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSinkFile::ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) { - if (nElements == 0) - nElements = GetWriteOptions().GetNElementsPerPage(); auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); + if (nElements == 0) + nElements = GetWriteOptions().GetMaxUnzippedPageSize() / elementSize; return fPageAllocator->NewPage(columnHandle.fId, elementSize, nElements); } diff --git a/tree/ntuple/v7/test/ntuple_basics.cxx b/tree/ntuple/v7/test/ntuple_basics.cxx index 54c31b7782987..be8bdde29019f 100644 --- a/tree/ntuple/v7/test/ntuple_basics.cxx +++ b/tree/ntuple/v7/test/ntuple_basics.cxx @@ -220,7 +220,8 @@ TEST(RNTuple, ClusterEntries) { RNTupleWriteOptions opt; - opt.SetNEntriesPerCluster(5); + // FIXME(jblomer) + //opt.SetNEntriesPerCluster(5); auto ntuple = RNTupleWriter::Recreate( std::move(model), "ntuple", fileGuard.GetPath(), opt ); @@ -234,7 +235,7 @@ TEST(RNTuple, ClusterEntries) EXPECT_EQ(20, ntuple->GetDescriptor().GetNClusters()); } -TEST(RNTuple, ElementsPerPage) +TEST(RNTuple, PageSize) { FileRaii fileGuard("test_ntuple_elements_per_page.root"); auto model = RNTupleModel::Create(); @@ -242,7 +243,7 @@ TEST(RNTuple, ElementsPerPage) { RNTupleWriteOptions opt; - opt.SetNElementsPerPage(5); + opt.SetMaxUnzippedPageSize(20); auto ntuple = RNTupleWriter::Recreate( std::move(model), "ntuple", fileGuard.GetPath(), opt ); diff --git a/tree/ntuple/v7/test/ntuple_view.cxx b/tree/ntuple/v7/test/ntuple_view.cxx index bbd79cf8a3a2a..66014b7b19320 100644 --- a/tree/ntuple/v7/test/ntuple_view.cxx +++ b/tree/ntuple/v7/test/ntuple_view.cxx @@ -63,7 +63,7 @@ TEST(RNTuple, BulkView) auto eltsPerPage = 10'000; { RNTupleWriteOptions opt; - opt.SetNElementsPerPage(eltsPerPage); + opt.SetMaxUnzippedPageSize(eltsPerPage * sizeof(float)); auto ntuple = RNTupleWriter::Recreate(std::move(model), "myNTuple", fileGuard.GetPath(), opt); for (int i = 0; i < 100'000; i++) { @@ -99,10 +99,10 @@ TEST(RNTuple, BulkViewCollection) auto model = RNTupleModel::Create(); auto fieldVec = model->MakeField>({"vec", "some data"}); - auto eltsPerPage = 10'000; + auto pageSize = 80 * 1024; { RNTupleWriteOptions opt; - opt.SetNElementsPerPage(eltsPerPage); + opt.SetMaxUnzippedPageSize(pageSize); auto ntuple = RNTupleWriter::Recreate(std::move(model), "myNTuple", fileGuard.GetPath(), opt); for (int i = 0; i < 100'000; i++) { @@ -116,7 +116,7 @@ TEST(RNTuple, BulkViewCollection) NTupleSize_t nPageItems = 0; const ClusterSize_t *offsets_buf = viewVecOffsets.MapV(0, nPageItems); - ASSERT_EQ(eltsPerPage, nPageItems); + ASSERT_EQ(pageSize / sizeof(ClusterSize_t), nPageItems); std::unique_ptr offsets = std::make_unique(nPageItems + 1); auto raw_offsets = offsets.get(); // offsets implicitly start at zero, RNTuple does not store that information @@ -126,7 +126,7 @@ TEST(RNTuple, BulkViewCollection) ASSERT_EQ((i - 1) % 5, raw_offsets[i] - raw_offsets[i-1]) << i; } const double *buf = viewVecData.MapV(0, nPageItems); - ASSERT_EQ(eltsPerPage, nPageItems); + ASSERT_EQ(pageSize / sizeof(double), nPageItems); for (NTupleSize_t i = 0; i < nPageItems; i++) { ASSERT_EQ(100.0f, buf[i]) << i; } diff --git a/tree/ntuple/v7/test/rfield_string.cxx b/tree/ntuple/v7/test/rfield_string.cxx index 9206d22be1680..bdaf37b24254c 100644 --- a/tree/ntuple/v7/test/rfield_string.cxx +++ b/tree/ntuple/v7/test/rfield_string.cxx @@ -4,7 +4,7 @@ TEST(RNTuple, ReadString) { const std::string_view ntupleName = "rs"; - constexpr int numEntries = 2500; + constexpr int numEntries = 25000; const std::string contentString = "foooooo"; FileRaii fileGuard("test_ntuple_readstring.root"); From 20ff10502c6a857e9ae042135645f6887ba2f98e Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 13:29:13 +0200 Subject: [PATCH 088/577] [ntuple] Return new cluster ID from CommitCluster() --- tree/ntuple/v7/inc/ROOT/RPageStorage.hxx | 4 ++-- tree/ntuple/v7/src/RPageStorage.cxx | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx index a63c56503c54c..63461fab22619 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx @@ -240,8 +240,8 @@ public: /// Write a preprocessed page to storage. The column must have been added before. /// TODO(jblomer): allow for vector commit of sealed pages void CommitSealedPage(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage); - /// Finalize the current cluster and create a new one for the following data. - void CommitCluster(NTupleSize_t nEntries); + /// Finalize the current cluster and create a new one for the following data. Returns the cluster ID. + DescriptorId_t CommitCluster(NTupleSize_t nEntries); /// Finalize the current cluster and the entrire data set. void CommitDataset() { CommitDatasetImpl(); } diff --git a/tree/ntuple/v7/src/RPageStorage.cxx b/tree/ntuple/v7/src/RPageStorage.cxx index dcaa2ad955cb2..14d1149278225 100644 --- a/tree/ntuple/v7/src/RPageStorage.cxx +++ b/tree/ntuple/v7/src/RPageStorage.cxx @@ -344,7 +344,8 @@ void ROOT::Experimental::Detail::RPageSink::CommitSealedPage( } -void ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NTupleSize_t nEntries) +ROOT::Experimental::DescriptorId_t +ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NTupleSize_t nEntries) { auto locator = CommitClusterImpl(nEntries); @@ -363,8 +364,8 @@ void ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NT range.fColumnId = fullRange.fColumnId; fDescriptorBuilder.AddClusterPageRange(fLastClusterId, std::move(fullRange)); } - ++fLastClusterId; fPrevClusterNEntries = nEntries; + return fLastClusterId++; } ROOT::Experimental::Detail::RPageStorage::RSealedPage From 86565ef698fd6ca0bcedfc53d57cb86fd777adb9 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 13:29:55 +0200 Subject: [PATCH 089/577] [ntuple] Return number of unzipped bytes added from RField::Append() --- tree/ntuple/v7/inc/ROOT/RField.hxx | 36 +++++++++++++------------ tree/ntuple/v7/src/RField.cxx | 42 ++++++++++++++++++++---------- 2 files changed, 48 insertions(+), 30 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx index 996ba5096ea95..811c544bf2a67 100644 --- a/tree/ntuple/v7/inc/ROOT/RField.hxx +++ b/tree/ntuple/v7/inc/ROOT/RField.hxx @@ -114,7 +114,7 @@ protected: /// Operations on values of complex types, e.g. ones that involve multiple columns or for which no direct /// column type exists. - virtual void AppendImpl(const RFieldValue &value); + virtual std::size_t AppendImpl(const RFieldValue &value); virtual void ReadGlobalImpl(NTupleSize_t globalIndex, RFieldValue *value); virtual void ReadInClusterImpl(const RClusterIndex &clusterIndex, RFieldValue *value) { ReadGlobalImpl(fPrincipalColumn->GetGlobalIndex(clusterIndex), value); @@ -197,12 +197,13 @@ public: virtual size_t GetAlignment() const { return GetValueSize(); } /// Write the given value into columns. The value object has to be of the same type as the field. - void Append(const RFieldValue& value) { - if (!fIsSimple) { - AppendImpl(value); - return; - } + /// Returns the number of uncompressed bytes written. + std::size_t Append(const RFieldValue& value) { + if (!fIsSimple) + return AppendImpl(value); + fPrincipalColumn->Append(value.fMappedElement); + return value.fMappedElement.GetSize(); } /// Populate a single value with data from the tree, which needs to be of the fitting type. @@ -294,7 +295,7 @@ private: protected: std::unique_ptr CloneImpl(std::string_view newName) const final; - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; void ReadInClusterImpl(const RClusterIndex &clusterIndex, Detail::RFieldValue *value) final; @@ -327,7 +328,7 @@ private: protected: std::unique_ptr CloneImpl(std::string_view newName) const final; - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; void ReadInClusterImpl(const RClusterIndex &clusterIndex, Detail::RFieldValue *value) final; @@ -357,7 +358,7 @@ private: protected: std::unique_ptr CloneImpl(std::string_view newName) const final; - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; public: @@ -394,7 +395,7 @@ private: protected: std::unique_ptr CloneImpl(std::string_view newName) const final; - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; void ReadInClusterImpl(const RClusterIndex &clusterIndex, Detail::RFieldValue *value) final; @@ -434,7 +435,7 @@ private: protected: std::unique_ptr CloneImpl(std::string_view newName) const final; - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; public: @@ -1159,7 +1160,7 @@ private: std::unique_ptr CloneImpl(std::string_view newName) const final { return std::make_unique(newName); } - void AppendImpl(const ROOT::Experimental::Detail::RFieldValue& value) final; + std::size_t AppendImpl(const ROOT::Experimental::Detail::RFieldValue& value) final; void ReadGlobalImpl(ROOT::Experimental::NTupleSize_t globalIndex, ROOT::Experimental::Detail::RFieldValue *value) final; @@ -1306,7 +1307,7 @@ protected: std::unique_ptr CloneImpl(std::string_view newName) const final { return std::make_unique(newName); } - void AppendImpl(const Detail::RFieldValue& value) final; + std::size_t AppendImpl(const Detail::RFieldValue& value) final; void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final; void GenerateColumnsImpl() final; void GenerateColumnsImpl(const RNTupleDescriptor &desc) final; @@ -1363,16 +1364,18 @@ protected: auto newItemField = fSubFields[0]->Clone(fSubFields[0]->GetName()); return std::make_unique>>(newName, std::move(newItemField)); } - void AppendImpl(const Detail::RFieldValue& value) final { + std::size_t AppendImpl(const Detail::RFieldValue& value) final { auto typedValue = value.Get(); + auto nbytes = 0; auto count = typedValue->size(); for (unsigned i = 0; i < count; ++i) { auto itemValue = fSubFields[0]->CaptureValue(&typedValue->data()[i]); - fSubFields[0]->Append(itemValue); + nbytes += fSubFields[0]->Append(itemValue); } Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); + return nbytes + sizeof(ClusterSize_t); } void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final { auto typedValue = value->Get(); @@ -1455,7 +1458,7 @@ protected: std::unique_ptr CloneImpl(std::string_view newName) const final { return std::make_unique>>(newName); } - void AppendImpl(const Detail::RFieldValue& value) final { + std::size_t AppendImpl(const Detail::RFieldValue& value) final { auto typedValue = value.Get(); auto count = typedValue->size(); for (unsigned i = 0; i < count; ++i) { @@ -1466,6 +1469,7 @@ protected: Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); + return count + sizeof(ClusterSize_t); } void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final { auto typedValue = value->Get(); diff --git a/tree/ntuple/v7/src/RField.cxx b/tree/ntuple/v7/src/RField.cxx index 2785002bb2b17..b67e0a8ecf13e 100644 --- a/tree/ntuple/v7/src/RField.cxx +++ b/tree/ntuple/v7/src/RField.cxx @@ -241,8 +241,10 @@ ROOT::Experimental::Detail::RFieldBase::Clone(std::string_view newName) const return clone; } -void ROOT::Experimental::Detail::RFieldBase::AppendImpl(const ROOT::Experimental::Detail::RFieldValue& /*value*/) { +std::size_t ROOT::Experimental::Detail::RFieldBase::AppendImpl(const ROOT::Experimental::Detail::RFieldValue& /*value*/) +{ R__ASSERT(false); + return 0; } void ROOT::Experimental::Detail::RFieldBase::ReadGlobalImpl( @@ -716,7 +718,7 @@ void ROOT::Experimental::RField::GenerateColumnsImpl(const RNTupleD GenerateColumnsImpl(); } -void ROOT::Experimental::RField::AppendImpl(const ROOT::Experimental::Detail::RFieldValue& value) +std::size_t ROOT::Experimental::RField::AppendImpl(const ROOT::Experimental::Detail::RFieldValue& value) { auto typedValue = value.Get(); auto length = typedValue->length(); @@ -724,6 +726,7 @@ void ROOT::Experimental::RField::AppendImpl(const ROOT::Experimenta fColumns[1]->AppendV(elemChars, length); fIndex += length; fColumns[0]->Append(fElemIndex); + return length + sizeof(ClusterSize_t); } void ROOT::Experimental::RField::ReadGlobalImpl( @@ -781,14 +784,16 @@ ROOT::Experimental::RClassField::CloneImpl(std::string_view newName) const return std::make_unique(newName, GetType()); } -void ROOT::Experimental::RClassField::AppendImpl(const Detail::RFieldValue& value) { +std::size_t ROOT::Experimental::RClassField::AppendImpl(const Detail::RFieldValue& value) { TIter next(fClass->GetListOfDataMembers()); + std::size_t nbytes = 0; unsigned i = 0; while (auto dataMember = static_cast(next())) { auto memberValue = fSubFields[i]->CaptureValue(value.Get() + dataMember->GetOffset()); - fSubFields[i]->Append(memberValue); + nbytes += fSubFields[i]->Append(memberValue); i++; } + return nbytes; } void ROOT::Experimental::RClassField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) @@ -897,13 +902,15 @@ ROOT::Experimental::RRecordField::CloneImpl(std::string_view newName) const return std::make_unique(newName, cloneItems); } -void ROOT::Experimental::RRecordField::AppendImpl(const Detail::RFieldValue &value) { +std::size_t ROOT::Experimental::RRecordField::AppendImpl(const Detail::RFieldValue &value) { + std::size_t nbytes = 0; std::size_t offset = 0; for (auto &item : fSubFields) { auto memberValue = item->CaptureValue(value.Get() + offset); - item->Append(memberValue); - offset += GetItemPadding(offset, item->GetAlignment()) + item->GetValueSize(); + nbytes += item->Append(memberValue); + offset += GetItemPadding(offset, item->GetAlignment()) + item->GetValueSize(); } + return nbytes; } void ROOT::Experimental::RRecordField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) @@ -992,17 +999,19 @@ ROOT::Experimental::RVectorField::CloneImpl(std::string_view newName) const return std::make_unique(newName, std::move(newItemField)); } -void ROOT::Experimental::RVectorField::AppendImpl(const Detail::RFieldValue& value) { +std::size_t ROOT::Experimental::RVectorField::AppendImpl(const Detail::RFieldValue& value) { auto typedValue = value.Get>(); R__ASSERT((typedValue->size() % fItemSize) == 0); + std::size_t nbytes = 0; auto count = typedValue->size() / fItemSize; for (unsigned i = 0; i < count; ++i) { auto itemValue = fSubFields[0]->CaptureValue(typedValue->data() + (i * fItemSize)); - fSubFields[0]->Append(itemValue); + nbytes += fSubFields[0]->Append(itemValue); } Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); + return nbytes + sizeof(ClusterSize_t); } void ROOT::Experimental::RVectorField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) @@ -1091,7 +1100,7 @@ ROOT::Experimental::RField>::RField(std::string_view name) Attach(std::make_unique>("bool")); } -void ROOT::Experimental::RField>::AppendImpl(const Detail::RFieldValue& value) { +std::size_t ROOT::Experimental::RField>::AppendImpl(const Detail::RFieldValue& value) { auto typedValue = value.Get>(); auto count = typedValue->size(); for (unsigned i = 0; i < count; ++i) { @@ -1102,6 +1111,7 @@ void ROOT::Experimental::RField>::AppendImpl(const Detail::RFi Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); + return count + sizeof(ClusterSize_t); } void ROOT::Experimental::RField>::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue* value) @@ -1187,12 +1197,14 @@ ROOT::Experimental::RArrayField::CloneImpl(std::string_view newName) const return std::make_unique(newName, std::move(newItemField), fArrayLength); } -void ROOT::Experimental::RArrayField::AppendImpl(const Detail::RFieldValue& value) { +std::size_t ROOT::Experimental::RArrayField::AppendImpl(const Detail::RFieldValue& value) { + std::size_t nbytes = 0; auto arrayPtr = value.Get(); for (unsigned i = 0; i < fArrayLength; ++i) { auto itemValue = fSubFields[0]->CaptureValue(arrayPtr + (i * fItemSize)); - fSubFields[0]->Append(itemValue); + nbytes += fSubFields[0]->Append(itemValue); } + return nbytes; } void ROOT::Experimental::RArrayField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) @@ -1318,18 +1330,20 @@ void ROOT::Experimental::RVariantField::SetTag(void *variantPtr, std::uint32_t t *index = static_cast(tag - 1); } -void ROOT::Experimental::RVariantField::AppendImpl(const Detail::RFieldValue& value) +std::size_t ROOT::Experimental::RVariantField::AppendImpl(const Detail::RFieldValue& value) { auto tag = GetTag(value.GetRawPtr()); + std::size_t nbytes = 0; auto index = 0; if (tag > 0) { auto itemValue = fSubFields[tag - 1]->CaptureValue(value.GetRawPtr()); - fSubFields[tag - 1]->Append(itemValue); + nbytes += fSubFields[tag - 1]->Append(itemValue); index = fNWritten[tag - 1]++; } RColumnSwitch varSwitch(ClusterSize_t(index), tag); Detail::RColumnElement elemSwitch(&varSwitch); fColumns[0]->Append(elemSwitch); + return nbytes + sizeof(RColumnSwitch); } void ROOT::Experimental::RVariantField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) From 227746c7ae4500fd516b398b6315d0e970fe91d3 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 13:52:25 +0200 Subject: [PATCH 090/577] [ntuple] Add RClusterDescriptor::GetBytesOnStorage() --- tree/ntuple/v7/inc/ROOT/RNTupleDescriptor.hxx | 1 + tree/ntuple/v7/src/RNTupleDescriptor.cxx | 12 +++++++++ tree/ntuple/v7/test/ntuple_descriptor.cxx | 26 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleDescriptor.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleDescriptor.hxx index 01805d9480cb9..6478176782705 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleDescriptor.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleDescriptor.hxx @@ -285,6 +285,7 @@ public: const RPageRange &GetPageRange(DescriptorId_t columnId) const { return fPageRanges.at(columnId); } bool ContainsColumn(DescriptorId_t columnId) const; std::unordered_set GetColumnIds() const; + std::uint64_t GetBytesOnStorage() const; }; diff --git a/tree/ntuple/v7/src/RNTupleDescriptor.cxx b/tree/ntuple/v7/src/RNTupleDescriptor.cxx index 53508941a611b..ceb09a3e9ace4 100644 --- a/tree/ntuple/v7/src/RNTupleDescriptor.cxx +++ b/tree/ntuple/v7/src/RNTupleDescriptor.cxx @@ -483,6 +483,18 @@ bool ROOT::Experimental::RClusterDescriptor::ContainsColumn(DescriptorId_t colum } +std::uint64_t ROOT::Experimental::RClusterDescriptor::GetBytesOnStorage() const +{ + std::uint64_t nbytes = 0; + for (const auto &pr : fPageRanges) { + for (const auto &pi : pr.second.fPageInfos) { + nbytes += pi.fLocator.fBytesOnStorage; + } + } + return nbytes; +} + + //////////////////////////////////////////////////////////////////////////////// diff --git a/tree/ntuple/v7/test/ntuple_descriptor.cxx b/tree/ntuple/v7/test/ntuple_descriptor.cxx index e2a2e5419a074..0de42f04d89ec 100644 --- a/tree/ntuple/v7/test/ntuple_descriptor.cxx +++ b/tree/ntuple/v7/test/ntuple_descriptor.cxx @@ -417,3 +417,29 @@ TEST(RColumnDescriptorIterable, IterateOverColumns) } EXPECT_EQ(3, counter); } + +TEST(RClusterDescriptor, GetBytesOnStorage) +{ + auto model = RNTupleModel::Create(); + auto fldJets = model->MakeField>("jets"); + auto fldTag = model->MakeField("tag"); + + FileRaii fileGuard("test_descriptor_bytes_on_storage.root"); + { + RNTupleWriteOptions options; + options.SetCompression(0); + RNTupleWriter ntuple(std::move(model), + std::make_unique("ntuple", fileGuard.GetPath(), options)); + fldJets->push_back(1.0); + fldJets->push_back(2.0); + *fldTag = "abc"; + ntuple.Fill(); + } + + auto ntuple = RNTupleReader::Open("ntuple", fileGuard.GetPath()); + const auto &desc = ntuple->GetDescriptor(); + + auto clusterID = desc.FindClusterId(0, 0); + ASSERT_NE(ROOT::Experimental::kInvalidDescriptorId, clusterID); + EXPECT_EQ(4 + 8 + 4 + 3, desc.GetClusterDescriptor(clusterID).GetBytesOnStorage()); +} From d3286aabade78baebc46f9645b41b0f60ad6b01c Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 14:31:38 +0200 Subject: [PATCH 091/577] [ntuple] Add RNTupleWriteOptions::fMaxUnzippedClusterSize --- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index 90e1751f02adf..b7abd385bbd27 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -52,6 +52,9 @@ class RNTupleWriteOptions { std::size_t fMinZippedClusterSize = 64 * 1000 * 1000; /// Approximation of the max compressed cluster size std::size_t fMaxZippedClusterSize = 128 * 1000 * 1000; + /// Memory limit for committing a cluster: with very high compression ratio, we need a limit + /// on how large the I/O buffer can grow during writing. + std::size_t fMaxUnzippedClusterSize = 512 * 1000 * 1000; /// Should be just large enough so that the compression ratio does not benefit much more from larger pages std::size_t fMaxUnzippedPageSize = 64 * 1024; bool fUseBufferedWrite = true; @@ -76,6 +79,9 @@ public: std::size_t GetMaxZippedClusterSize() const { return fMaxZippedClusterSize; } void SetMaxZippedClusterSize(std::size_t val) { fMaxZippedClusterSize = val; } + std::size_t GetMaxUnzippedClusterSize() const { return fMaxUnzippedClusterSize; } + void SetMaxUnzippedClusterSize(std::size_t val) { fMaxUnzippedClusterSize = val; } + std::size_t GetMaxUnzippedPageSize() const { return fMaxUnzippedPageSize; } void SetMaxUnzippedPageSize(std::size_t val) { if (val < 64) From 92d0255a4eeb55ae35b03bf9ac143f5583befcc3 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 15:07:03 +0200 Subject: [PATCH 092/577] [ntuple] Return number of bytes written to storage from CommitCluster() --- tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx | 2 +- tree/ntuple/v7/inc/ROOT/RPageStorage.hxx | 8 +++++--- tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx | 4 +++- tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx | 4 +++- tree/ntuple/v7/src/RPageSinkBuf.cxx | 7 ++----- tree/ntuple/v7/src/RPageStorage.cxx | 11 ++++++----- tree/ntuple/v7/src/RPageStorageDaos.cxx | 10 +++++----- tree/ntuple/v7/src/RPageStorageFile.cxx | 13 ++++--------- 8 files changed, 29 insertions(+), 30 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx index 537e308086085..f08c7fe2a5f35 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx @@ -111,7 +111,7 @@ protected: void CreateImpl(const RNTupleModel &model) final; RClusterDescriptor::RLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) final; RClusterDescriptor::RLocator CommitSealedPageImpl(DescriptorId_t columnId, const RSealedPage &sealedPage) final; - RClusterDescriptor::RLocator CommitClusterImpl(NTupleSize_t nEntries) final; + std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final; void CommitDatasetImpl() final; public: diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx index 63461fab22619..707353371f50d 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx @@ -187,7 +187,8 @@ protected: virtual RClusterDescriptor::RLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) = 0; virtual RClusterDescriptor::RLocator CommitSealedPageImpl(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) = 0; - virtual RClusterDescriptor::RLocator CommitClusterImpl(NTupleSize_t nEntries) = 0; + /// Returns the number of bytes written to storage (excluding metadata) + virtual std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) = 0; virtual void CommitDatasetImpl() = 0; /// Helper for streaming a page. This is commonly used in derived, concrete page sinks. Note that if @@ -240,8 +241,9 @@ public: /// Write a preprocessed page to storage. The column must have been added before. /// TODO(jblomer): allow for vector commit of sealed pages void CommitSealedPage(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage); - /// Finalize the current cluster and create a new one for the following data. Returns the cluster ID. - DescriptorId_t CommitCluster(NTupleSize_t nEntries); + /// Finalize the current cluster and create a new one for the following data. + /// Returns the number of bytes written to storage (excluding meta-data). + std::uint64_t CommitCluster(NTupleSize_t nEntries); /// Finalize the current cluster and the entrire data set. void CommitDataset() { CommitDatasetImpl(); } diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx index 4ad5e2b1fc245..6708e652855bb 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx @@ -100,6 +100,8 @@ private: std::atomic fOid{0}; /// \brief A URI to a DAOS pool of the form 'daos://pool-uuid:svc_replicas/container-uuid' std::string fURI; + /// Tracks the number of bytes committed to the current cluster + std::uint64_t fNBytesCurrentCluster{0}; RDaosNTupleAnchor fNTupleAnchor; @@ -108,7 +110,7 @@ protected: RClusterDescriptor::RLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) final; RClusterDescriptor::RLocator CommitSealedPageImpl(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) final; - RClusterDescriptor::RLocator CommitClusterImpl(NTupleSize_t nEntries) final; + std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final; void CommitDatasetImpl() final; void WriteNTupleHeader(const void *data, size_t nbytes, size_t lenHeader); void WriteNTupleFooter(const void *data, size_t nbytes, size_t lenFooter); diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx index 204f8c6a12ae7..9c64e2fe9c756 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx @@ -61,6 +61,8 @@ private: std::uint64_t fClusterMinOffset = std::uint64_t(-1); /// Byte offset of the end of the last page of the current cluster std::uint64_t fClusterMaxOffset = 0; + /// Number of bytes committed to storage in the current cluster + std::uint64_t fNBytesCurrentCluster = 0; RPageSinkFile(std::string_view ntupleName, const RNTupleWriteOptions &options); RClusterDescriptor::RLocator WriteSealedPage(const RPageStorage::RSealedPage &sealedPage, @@ -71,7 +73,7 @@ protected: RClusterDescriptor::RLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) final; RClusterDescriptor::RLocator CommitSealedPageImpl(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) final; - RClusterDescriptor::RLocator CommitClusterImpl(NTupleSize_t nEntries) final; + std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final; void CommitDatasetImpl() final; public: diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx index 541757b4fd525..45cf969cb76a8 100644 --- a/tree/ntuple/v7/src/RPageSinkBuf.cxx +++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx @@ -82,7 +82,7 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitSealedPageImpl( return RClusterDescriptor::RLocator{}; } -ROOT::Experimental::RClusterDescriptor::RLocator +std::uint64_t ROOT::Experimental::Detail::RPageSinkBuf::CommitClusterImpl(ROOT::Experimental::NTupleSize_t nEntries) { if (fTaskScheduler) { @@ -100,10 +100,7 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitClusterImpl(ROOT::Experimental:: ReleasePage(bufPage.fPage); } } - fInnerSink->CommitCluster(nEntries); - // we're feeding bad locators to fOpenPageRanges but it should not matter - // because they never get written out - return RClusterDescriptor::RLocator{}; + return fInnerSink->CommitCluster(nEntries); } void ROOT::Experimental::Detail::RPageSinkBuf::CommitDatasetImpl() diff --git a/tree/ntuple/v7/src/RPageStorage.cxx b/tree/ntuple/v7/src/RPageStorage.cxx index 14d1149278225..a616152afce0f 100644 --- a/tree/ntuple/v7/src/RPageStorage.cxx +++ b/tree/ntuple/v7/src/RPageStorage.cxx @@ -344,15 +344,15 @@ void ROOT::Experimental::Detail::RPageSink::CommitSealedPage( } -ROOT::Experimental::DescriptorId_t -ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NTupleSize_t nEntries) +std::uint64_t ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NTupleSize_t nEntries) { - auto locator = CommitClusterImpl(nEntries); + auto nbytes = CommitClusterImpl(nEntries); R__ASSERT((nEntries - fPrevClusterNEntries) < ClusterSize_t(-1)); fDescriptorBuilder.AddCluster(fLastClusterId, RNTupleVersion(), fPrevClusterNEntries, ClusterSize_t(nEntries - fPrevClusterNEntries)); - fDescriptorBuilder.SetClusterLocator(fLastClusterId, locator); + // TODO(jblomer): Remove me with the v1 Serialization + fDescriptorBuilder.SetClusterLocator(fLastClusterId, RClusterDescriptor::RLocator()); for (auto &range : fOpenColumnRanges) { fDescriptorBuilder.AddClusterColumnRange(fLastClusterId, range); range.fFirstElementIndex += range.fNElements; @@ -365,7 +365,8 @@ ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experimental::NTupleS fDescriptorBuilder.AddClusterPageRange(fLastClusterId, std::move(fullRange)); } fPrevClusterNEntries = nEntries; - return fLastClusterId++; + ++fLastClusterId; + return nbytes; } ROOT::Experimental::Detail::RPageStorage::RSealedPage diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index d573596ceb087..8d917d7fa9bfc 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -188,17 +188,17 @@ ROOT::Experimental::Detail::RPageSinkDaos::CommitSealedPageImpl( result.fBytesOnStorage = sealedPage.fSize; fCounters->fNPageCommitted.Inc(); fCounters->fSzWritePayload.Add(sealedPage.fSize); + fNBytesCurrentCluster += sealedPage.fSize; return result; } -// TODO(jalopezg): the current byte range arithmetic makes little sense for the -// object store. We might find out, however, that there are native ways to group -// clusters in DAOS. -ROOT::Experimental::RClusterDescriptor::RLocator +std::uint64_t ROOT::Experimental::Detail::RPageSinkDaos::CommitClusterImpl(ROOT::Experimental::NTupleSize_t /* nEntries */) { - return {}; + auto result = fNBytesCurrentCluster; + fNBytesCurrentCluster = 0; + return result; } diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index 6f94a14a05f7f..3587b91a74418 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -116,6 +116,7 @@ ROOT::Experimental::Detail::RPageSinkFile::WriteSealedPage( result.fBytesOnStorage = sealedPage.fSize; fCounters->fNPageCommitted.Inc(); fCounters->fSzWritePayload.Add(sealedPage.fSize); + fNBytesCurrentCluster += sealedPage.fSize; return result; } @@ -147,14 +148,11 @@ ROOT::Experimental::Detail::RPageSinkFile::CommitSealedPageImpl( } -ROOT::Experimental::RClusterDescriptor::RLocator +std::uint64_t ROOT::Experimental::Detail::RPageSinkFile::CommitClusterImpl(ROOT::Experimental::NTupleSize_t /* nEntries */) { - RClusterDescriptor::RLocator result; - result.fPosition = fClusterMinOffset; - result.fBytesOnStorage = fClusterMaxOffset - fClusterMinOffset; - fClusterMinOffset = std::uint64_t(-1); - fClusterMaxOffset = 0; + auto result = fNBytesCurrentCluster; + fNBytesCurrentCluster = 0; return result; } @@ -380,9 +378,6 @@ ROOT::Experimental::Detail::RPageSourceFile::LoadCluster(DescriptorId_t clusterI fCounters->fNClusterLoaded.Inc(); const auto &clusterDesc = GetDescriptor().GetClusterDescriptor(clusterId); - auto clusterLocator = clusterDesc.GetLocator(); - auto clusterSize = clusterLocator.fBytesOnStorage; - R__ASSERT(clusterSize > 0); struct ROnDiskPageLocator { ROnDiskPageLocator() = default; From d876cc8dc7d0213e21905e0ae437e6316d23d3d8 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 15:17:34 +0200 Subject: [PATCH 093/577] [ntuple] Auto-tune cluster size according to expected zipped size --- tree/ntuple/v7/inc/ROOT/RNTuple.hxx | 15 ++++++++++----- tree/ntuple/v7/src/RNTuple.cxx | 15 ++++++++++++--- tree/ntuple/v7/test/ntuple_basics.cxx | 14 ++++++-------- tree/ntuple/v7/test/ntuple_extended.cxx | 3 ++- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx index 9598848f0d749..3a050f3216d56 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx @@ -357,8 +357,14 @@ private: /// Needs to be destructed before fSink std::unique_ptr fModel; Detail::RNTupleMetrics fMetrics; - NTupleSize_t fLastCommitted; - NTupleSize_t fNEntries; + NTupleSize_t fLastCommitted = 0; + NTupleSize_t fNEntries = 0; + /// Keeps track of the number of bytes written into the current cluster + std::size_t fUnzippedClusterSize = 0; + /// Limit for committing cluster no matter the other tunables + std::size_t fMaxUnzippedClusterSize; + /// Estimator of minimum uncompressed cluster size, taking into account the estimated compression ratio + NTupleSize_t fMinUnzippedClusterSizeEst; public: /// Throws an exception if the model is null. @@ -383,11 +389,10 @@ public: /// a light check whether the entry comes from the ntuple's own model void Fill(REntry &entry) { for (auto& value : entry) { - value.GetField()->Append(value); + fUnzippedClusterSize += value.GetField()->Append(value); } fNEntries++; - // FIXME(jblomer) - if ((fNEntries % 64000/* fSink->GetWriteOptions().GetNEntriesPerCluster() */) == 0) + if ((fUnzippedClusterSize >= fMaxUnzippedClusterSize) || (fUnzippedClusterSize >= fMinUnzippedClusterSizeEst)) CommitCluster(); } /// Ensure that the data from the so far seen Fill calls has been written to storage diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 9b48593c522ec..a9f6c59aca013 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -277,8 +277,6 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( : fSink(std::move(sink)) , fModel(std::move(model)) , fMetrics("RNTupleWriter") - , fLastCommitted(0) - , fNEntries(0) { if (!fModel) { throw RException(R__FAIL("null model")); @@ -294,6 +292,11 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( #endif fSink->Create(*fModel.get()); fMetrics.ObserveMetrics(fSink->GetMetrics()); + + fMaxUnzippedClusterSize = fSink->GetWriteOptions().GetMaxUnzippedClusterSize(); + // First estimate is a factor 2 compression if compression is used at all + fMinUnzippedClusterSizeEst = (fSink->GetWriteOptions().GetCompression() == 0) ? + fSink->GetWriteOptions().GetMinZippedClusterSize() : 2 * fSink->GetWriteOptions().GetMinZippedClusterSize(); } ROOT::Experimental::RNTupleWriter::~RNTupleWriter() @@ -333,8 +336,14 @@ void ROOT::Experimental::RNTupleWriter::CommitCluster() field.Flush(); field.CommitCluster(); } - fSink->CommitCluster(fNEntries); + float nbytes = fSink->CommitCluster(fNEntries); + // Cap the compression factor at 1000 to prevent overflow of fMinUnzippedClusterSizeEst + float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); + fMinUnzippedClusterSizeEst = + compressionFactor * static_cast(fSink->GetWriteOptions().GetMinZippedClusterSize()); + fLastCommitted = fNEntries; + fUnzippedClusterSize = 0; } diff --git a/tree/ntuple/v7/test/ntuple_basics.cxx b/tree/ntuple/v7/test/ntuple_basics.cxx index be8bdde29019f..0f513e0e734ad 100644 --- a/tree/ntuple/v7/test/ntuple_basics.cxx +++ b/tree/ntuple/v7/test/ntuple_basics.cxx @@ -220,13 +220,11 @@ TEST(RNTuple, ClusterEntries) { RNTupleWriteOptions opt; - // FIXME(jblomer) - //opt.SetNEntriesPerCluster(5); - auto ntuple = RNTupleWriter::Recreate( - std::move(model), "ntuple", fileGuard.GetPath(), opt - ); + auto ntuple = RNTupleWriter::Recreate(std::move(model), "ntuple", fileGuard.GetPath(), opt); for (int i = 0; i < 100; i++) { ntuple->Fill(); + if (i && ((i % 5) == 0)) + ntuple->CommitCluster(); } } @@ -243,18 +241,18 @@ TEST(RNTuple, PageSize) { RNTupleWriteOptions opt; - opt.SetMaxUnzippedPageSize(20); + opt.SetMaxUnzippedPageSize(200); auto ntuple = RNTupleWriter::Recreate( std::move(model), "ntuple", fileGuard.GetPath(), opt ); - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 1000; i++) { ntuple->Fill(); } } auto ntuple = RNTupleReader::Open("ntuple", fileGuard.GetPath()); const auto &col0_pages = ntuple->GetDescriptor().GetClusterDescriptor(0).GetPageRange(0); - // 100 column elements / 5 elements per page + // 1000 column elements / 50 elements per page EXPECT_EQ(20, col0_pages.fPageInfos.size()); } diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx index 52b665a89926b..afdb1c258f73b 100644 --- a/tree/ntuple/v7/test/ntuple_extended.cxx +++ b/tree/ntuple/v7/test/ntuple_extended.cxx @@ -84,6 +84,7 @@ TEST(RNTuple, RandomAccess) { RNTupleWriteOptions options; options.SetCompression(0); + options.SetMinZippedClusterSize(nEvents * sizeof(std::int32_t) / 10); auto ntuple = RNTupleWriter::Recreate(std::move(modelWrite), "myNTuple", fileGuard.GetPath(), options); for (unsigned int i = 0; i < nEvents; ++i) ntuple->Fill(); @@ -92,7 +93,7 @@ TEST(RNTuple, RandomAccess) RNTupleReadOptions options; options.SetClusterCache(RNTupleReadOptions::EClusterCache::kOn); auto ntuple = RNTupleReader::Open("myNTuple", fileGuard.GetPath(), options); - EXPECT_GT(ntuple->GetDescriptor().GetNClusters(), 10); + EXPECT_GE(ntuple->GetDescriptor().GetNClusters(), 10); auto viewValue = ntuple->GetView("value"); From 54544ca9145986db6da53241a4738d294068b9b5 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 16:13:51 +0200 Subject: [PATCH 094/577] [ntuple] Use approximate target cluster size instead of min/max --- tree/ntuple/v7/inc/ROOT/RNTuple.hxx | 6 +++--- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 13 ++++--------- tree/ntuple/v7/src/RNTuple.cxx | 9 +++++---- tree/ntuple/v7/test/ntuple_extended.cxx | 4 ++-- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx index 3a050f3216d56..81d482438878a 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx @@ -363,8 +363,8 @@ private: std::size_t fUnzippedClusterSize = 0; /// Limit for committing cluster no matter the other tunables std::size_t fMaxUnzippedClusterSize; - /// Estimator of minimum uncompressed cluster size, taking into account the estimated compression ratio - NTupleSize_t fMinUnzippedClusterSizeEst; + /// Estimator of uncompressed cluster size, taking into account the estimated compression ratio + NTupleSize_t fUnzippedClusterSizeEst; public: /// Throws an exception if the model is null. @@ -392,7 +392,7 @@ public: fUnzippedClusterSize += value.GetField()->Append(value); } fNEntries++; - if ((fUnzippedClusterSize >= fMaxUnzippedClusterSize) || (fUnzippedClusterSize >= fMinUnzippedClusterSizeEst)) + if ((fUnzippedClusterSize >= fMaxUnzippedClusterSize) || (fUnzippedClusterSize >= fUnzippedClusterSizeEst)) CommitCluster(); } /// Ensure that the data from the so far seen Fill calls has been written to storage diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index b7abd385bbd27..def8a3a9181c4 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -48,10 +48,8 @@ All page sink classes need to support the common options. class RNTupleWriteOptions { int fCompression{RCompressionSetting::EDefaults::kUseAnalysis}; ENTupleContainerFormat fContainerFormat{ENTupleContainerFormat::kTFile}; - /// Approximation of the minimum compressed cluster size - std::size_t fMinZippedClusterSize = 64 * 1000 * 1000; - /// Approximation of the max compressed cluster size - std::size_t fMaxZippedClusterSize = 128 * 1000 * 1000; + /// Approximation of the target compressed cluster size + std::size_t fApproxZippedClusterSize = 64 * 1000 * 1000; /// Memory limit for committing a cluster: with very high compression ratio, we need a limit /// on how large the I/O buffer can grow during writing. std::size_t fMaxUnzippedClusterSize = 512 * 1000 * 1000; @@ -73,11 +71,8 @@ public: ENTupleContainerFormat GetContainerFormat() const { return fContainerFormat; } void SetContainerFormat(ENTupleContainerFormat val) { fContainerFormat = val; } - std::size_t GetMinZippedClusterSize() const { return fMinZippedClusterSize; } - void SetMinZippedClusterSize(std::size_t val) { fMinZippedClusterSize = val; } - - std::size_t GetMaxZippedClusterSize() const { return fMaxZippedClusterSize; } - void SetMaxZippedClusterSize(std::size_t val) { fMaxZippedClusterSize = val; } + std::size_t GetApproxZippedClusterSize() const { return fApproxZippedClusterSize; } + void SetApproxZippedClusterSize(std::size_t val) { fApproxZippedClusterSize = val; } std::size_t GetMaxUnzippedClusterSize() const { return fMaxUnzippedClusterSize; } void SetMaxUnzippedClusterSize(std::size_t val) { fMaxUnzippedClusterSize = val; } diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index a9f6c59aca013..5d14d61ad902c 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -295,8 +295,9 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( fMaxUnzippedClusterSize = fSink->GetWriteOptions().GetMaxUnzippedClusterSize(); // First estimate is a factor 2 compression if compression is used at all - fMinUnzippedClusterSizeEst = (fSink->GetWriteOptions().GetCompression() == 0) ? - fSink->GetWriteOptions().GetMinZippedClusterSize() : 2 * fSink->GetWriteOptions().GetMinZippedClusterSize(); + fUnzippedClusterSizeEst = (fSink->GetWriteOptions().GetCompression() == 0) + ? fSink->GetWriteOptions().GetApproxZippedClusterSize() + : 2 * fSink->GetWriteOptions().GetApproxZippedClusterSize(); } ROOT::Experimental::RNTupleWriter::~RNTupleWriter() @@ -339,8 +340,8 @@ void ROOT::Experimental::RNTupleWriter::CommitCluster() float nbytes = fSink->CommitCluster(fNEntries); // Cap the compression factor at 1000 to prevent overflow of fMinUnzippedClusterSizeEst float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); - fMinUnzippedClusterSizeEst = - compressionFactor * static_cast(fSink->GetWriteOptions().GetMinZippedClusterSize()); + fUnzippedClusterSizeEst = + compressionFactor * static_cast(fSink->GetWriteOptions().GetApproxZippedClusterSize()); fLastCommitted = fNEntries; fUnzippedClusterSize = 0; diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx index afdb1c258f73b..cd0f1e97c5b80 100644 --- a/tree/ntuple/v7/test/ntuple_extended.cxx +++ b/tree/ntuple/v7/test/ntuple_extended.cxx @@ -84,7 +84,7 @@ TEST(RNTuple, RandomAccess) { RNTupleWriteOptions options; options.SetCompression(0); - options.SetMinZippedClusterSize(nEvents * sizeof(std::int32_t) / 10); + options.SetApproxZippedClusterSize(nEvents * sizeof(std::int32_t) / 10); auto ntuple = RNTupleWriter::Recreate(std::move(modelWrite), "myNTuple", fileGuard.GetPath(), options); for (unsigned int i = 0; i < nEvents; ++i) ntuple->Fill(); @@ -93,7 +93,7 @@ TEST(RNTuple, RandomAccess) RNTupleReadOptions options; options.SetClusterCache(RNTupleReadOptions::EClusterCache::kOn); auto ntuple = RNTupleReader::Open("myNTuple", fileGuard.GetPath(), options); - EXPECT_GE(ntuple->GetDescriptor().GetNClusters(), 10); + EXPECT_EQ(10, ntuple->GetDescriptor().GetNClusters()); auto viewValue = ntuple->GetView("value"); From 7aca987495e6d4769dadc65d23c498d579425eba Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 19 Jul 2021 16:58:05 +0200 Subject: [PATCH 095/577] [ntuple] Adjust cluster size tunables --- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index def8a3a9181c4..6768d184f620e 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -49,10 +49,10 @@ class RNTupleWriteOptions { int fCompression{RCompressionSetting::EDefaults::kUseAnalysis}; ENTupleContainerFormat fContainerFormat{ENTupleContainerFormat::kTFile}; /// Approximation of the target compressed cluster size - std::size_t fApproxZippedClusterSize = 64 * 1000 * 1000; + std::size_t fApproxZippedClusterSize = 50 * 1000 * 1000; /// Memory limit for committing a cluster: with very high compression ratio, we need a limit /// on how large the I/O buffer can grow during writing. - std::size_t fMaxUnzippedClusterSize = 512 * 1000 * 1000; + std::size_t fMaxUnzippedClusterSize = 512 * 1024 * 1024; /// Should be just large enough so that the compression ratio does not benefit much more from larger pages std::size_t fMaxUnzippedPageSize = 64 * 1024; bool fUseBufferedWrite = true; From 76a0e349b0c4ca7196ffd044c02901101b951257 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Tue, 20 Jul 2021 03:19:51 +0200 Subject: [PATCH 096/577] [ntuple] Avoid small tail pages --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 60 +++++++++++++++----- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 13 +++-- tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx | 2 +- tree/ntuple/v7/inc/ROOT/RPageStorage.hxx | 2 +- tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx | 2 +- tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx | 2 +- tree/ntuple/v7/src/RColumn.cxx | 35 +++++++++--- tree/ntuple/v7/src/RPageStorageDaos.cxx | 4 +- tree/ntuple/v7/src/RPageStorageFile.cxx | 4 +- tree/ntuple/v7/test/ntuple_basics.cxx | 2 +- tree/ntuple/v7/test/ntuple_view.cxx | 4 +- 11 files changed, 92 insertions(+), 38 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index c2b2328bb4a46..b76f9543ff3ee 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -48,18 +48,26 @@ private: * the offset column with index 0 and the character value column with index 1. */ std::uint32_t fIndex; - RPageSink *fPageSink; - RPageSource *fPageSource; + RPageSink *fPageSink = nullptr; + RPageSource *fPageSource = nullptr; RPageStorage::ColumnHandle_t fHandleSink; RPageStorage::ColumnHandle_t fHandleSource; - /// Open page into which new elements are being written - RPage fHeadPage; + /// A set of open pages into which new elements are being written. The pages are used + /// in rotation. They are 50% bigger than the target size given by the write options. + /// The current page is filled until the target size, but it is only committed once the other + /// head page is filled at least 50%. If a flush occurs earlier, a slightly oversize, single + /// page will be committed. + RPage fHeadPage[2]; + /// Index of the current head page + int fHeadPageIdx = 0; + /// For writing, the targeted page size as given by the write options + std::uint32_t fApproxNElementsPerPage = 0; /// The number of elements written resp. available in the column - NTupleSize_t fNElements; + NTupleSize_t fNElements = 0; /// The currently mapped page for reading RPage fCurrentPage; /// The column id is used to find matching pages with content when reading - ColumnId_t fColumnIdSource; + ColumnId_t fColumnIdSource = kInvalidColumnId; /// Used to pack and unpack pages on writing/reading std::unique_ptr fElement; @@ -81,26 +89,52 @@ public: void Connect(DescriptorId_t fieldId, RPageStorage *pageStorage); void Append(const RColumnElementBase &element) { - void *dst = fHeadPage.TryGrow(1); - if (dst == nullptr) { - Flush(); - dst = fHeadPage.TryGrow(1); - R__ASSERT(dst != nullptr); + void *dst = fHeadPage[fHeadPageIdx].TryGrow(1); + R__ASSERT(dst != nullptr); + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage / 2) { + // Current page is at 50% fill level, we can now commit the previously used page + auto otherIdx = (fHeadPageIdx + 1) % 2; + if (fHeadPage[otherIdx].GetNElements()) + fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); } + element.WriteTo(dst, 1); fNElements++; + + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) { + // We are at 100% fill level, switch to the other head page + fHeadPageIdx = (fHeadPageIdx + 1) % 2; + fHeadPage[fHeadPageIdx].Reset(fNElements); + } } void AppendV(const RColumnElementBase &elemArray, std::size_t count) { - void *dst = fHeadPage.TryGrow(count); - if (dst == nullptr) { + if (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage) { for (unsigned i = 0; i < count; ++i) { Append(RColumnElementBase(elemArray, i)); } return; } + + if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && + (fHeadPage[fHeadPageIdx].GetNElements() + count >= fApproxNElementsPerPage / 2)) + { + // Current page jumps over 50% fill level, we can now commit the previously used page + auto otherIdx = (fHeadPageIdx + 1) % 2; + if (fHeadPage[otherIdx].GetNElements()) + fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); + } + + void *dst = fHeadPage[fHeadPageIdx].TryGrow(count); + R__ASSERT(dst != nullptr); elemArray.WriteTo(dst, count); fNElements += count; + + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) { + // We are at 100% fill level, switch to the other head page + fHeadPageIdx = (fHeadPageIdx + 1) % 2; + fHeadPage[fHeadPageIdx].Reset(fNElements); + } } void Read(const NTupleSize_t globalIndex, RColumnElementBase *element) { diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index 6768d184f620e..e3bcebf9a2534 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -53,8 +53,11 @@ class RNTupleWriteOptions { /// Memory limit for committing a cluster: with very high compression ratio, we need a limit /// on how large the I/O buffer can grow during writing. std::size_t fMaxUnzippedClusterSize = 512 * 1024 * 1024; - /// Should be just large enough so that the compression ratio does not benefit much more from larger pages - std::size_t fMaxUnzippedPageSize = 64 * 1024; + /// Should be just large enough so that the compression ratio does not benefit much more from larger pages. + /// Unless the cluster is too small to contain a sufficiently large page, pages are + /// fApproxUnzippedPageSize in size and tail pages (the last page in a cluster) is between + /// fApproxUnzippedPageSize/2 and fApproxUnzippedPageSize * 2 in size. + std::size_t fApproxUnzippedPageSize = 64 * 1024; bool fUseBufferedWrite = true; public: @@ -77,11 +80,11 @@ public: std::size_t GetMaxUnzippedClusterSize() const { return fMaxUnzippedClusterSize; } void SetMaxUnzippedClusterSize(std::size_t val) { fMaxUnzippedClusterSize = val; } - std::size_t GetMaxUnzippedPageSize() const { return fMaxUnzippedPageSize; } - void SetMaxUnzippedPageSize(std::size_t val) { + std::size_t GetApproxUnzippedPageSize() const { return fApproxUnzippedPageSize; } + void SetApproxUnzippedPageSize(std::size_t val) { if (val < 64) throw RException(R__FAIL("page size too small")); - fMaxUnzippedPageSize = val; + fApproxUnzippedPageSize = val; } bool GetUseBufferedWrite() const { return fUseBufferedWrite; } diff --git a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx index f08c7fe2a5f35..a2859b74056e7 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx @@ -122,7 +122,7 @@ public: RPageSinkBuf& operator=(RPageSinkBuf&&) = default; virtual ~RPageSinkBuf() = default; - RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements = 0) final; + RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) final; void ReleasePage(RPage &page) final; RNTupleMetrics &GetMetrics() final { return fMetrics; } diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx index 707353371f50d..f067185bb32ce 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorage.hxx @@ -249,7 +249,7 @@ public: /// Get a new, empty page for the given column that can be filled with up to nElements. If nElements is zero, /// the page sink picks an appropriate size. - virtual RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements = 0) = 0; + virtual RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) = 0; /// Returns the default metrics object. Subclasses might alternatively provide their own metrics object by overriding this. virtual RNTupleMetrics &GetMetrics() override { return fMetrics; }; diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx index 6708e652855bb..5e05415d6ef22 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorageDaos.hxx @@ -120,7 +120,7 @@ public: RPageSinkDaos(std::string_view ntupleName, std::string_view uri, const RNTupleWriteOptions &options); virtual ~RPageSinkDaos(); - RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements = 0) final; + RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) final; void ReleasePage(RPage &page) final; }; diff --git a/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx b/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx index 9c64e2fe9c756..00958e4cb0c4c 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx @@ -87,7 +87,7 @@ public: RPageSinkFile& operator=(RPageSinkFile&&) = default; virtual ~RPageSinkFile(); - RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements = 0) final; + RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) final; void ReleasePage(RPage &page) final; }; diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 97f3d0a3d2fa6..0079bbba4ec57 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -22,16 +22,16 @@ #include ROOT::Experimental::Detail::RColumn::RColumn(const RColumnModel& model, std::uint32_t index) - : fModel(model), fIndex(index), fPageSink(nullptr), fPageSource(nullptr), fHeadPage(), fNElements(0), - fCurrentPage(), - fColumnIdSource(kInvalidColumnId) + : fModel(model), fIndex(index) { } ROOT::Experimental::Detail::RColumn::~RColumn() { - if (!fHeadPage.IsNull()) - fPageSink->ReleasePage(fHeadPage); + if (!fHeadPage[0].IsNull()) + fPageSink->ReleasePage(fHeadPage[0]); + if (!fHeadPage[1].IsNull()) + fPageSink->ReleasePage(fHeadPage[1]); if (!fCurrentPage.IsNull()) fPageSource->ReleasePage(fCurrentPage); if (fHandleSink) @@ -46,7 +46,9 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS case EPageStorageType::kSink: fPageSink = static_cast(pageStorage); // the page sink initializes fHeadPage on AddColumn fHandleSink = fPageSink->AddColumn(fieldId, *this); - fHeadPage = fPageSink->ReservePage(fHandleSink); + fApproxNElementsPerPage = fPageSink->GetWriteOptions().GetApproxUnzippedPageSize() / fElement->GetSize(); + fHeadPage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); + fHeadPage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); break; case EPageStorageType::kSource: fPageSource = static_cast(pageStorage); @@ -61,10 +63,25 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS void ROOT::Experimental::Detail::RColumn::Flush() { - if (fHeadPage.GetSize() == 0) return; + auto otherIdx = (fHeadPageIdx + 1) % 2; + if (fHeadPage[fHeadPageIdx].GetSize() == 0 && fHeadPage[otherIdx].GetSize() == 0) + return; - fPageSink->CommitPage(fHandleSink, fHeadPage); - fHeadPage.Reset(fNElements); + if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && + fHeadPage[otherIdx].GetNElements()) + { + // Small tail page: merge with previously used page + void *dst = fHeadPage[otherIdx].TryGrow(fHeadPage[fHeadPageIdx].GetNElements()); + R__ASSERT(dst != nullptr); + RColumnElementBase elem(fHeadPage[fHeadPageIdx].GetBuffer(), fHeadPage[fHeadPageIdx].GetElementSize()); + elem.WriteTo(dst, fHeadPage[fHeadPageIdx].GetNElements()); + fHeadPage[fHeadPageIdx].Reset(0); + fHeadPageIdx = otherIdx; + } else { + fHeadPage[otherIdx].Reset(0); + } + fPageSink->CommitPage(fHandleSink, fHeadPage[fHeadPageIdx]); + fHeadPage[fHeadPageIdx].Reset(fNElements); } void ROOT::Experimental::Detail::RColumn::MapPage(const NTupleSize_t index) diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index 8d917d7fa9bfc..270e50dfec120 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -246,9 +246,9 @@ void ROOT::Experimental::Detail::RPageSinkDaos::WriteNTupleAnchor() { ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSinkDaos::ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) { - auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); if (nElements == 0) - nElements = GetWriteOptions().GetMaxUnzippedPageSize() / elementSize; + throw RException(R__FAIL("invalid call: request empty page")); + auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); return fPageAllocator->NewPage(columnHandle.fId, elementSize, nElements); } diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index 3587b91a74418..ac6e492c3e29f 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -175,9 +175,9 @@ void ROOT::Experimental::Detail::RPageSinkFile::CommitDatasetImpl() ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSinkFile::ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) { - auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); if (nElements == 0) - nElements = GetWriteOptions().GetMaxUnzippedPageSize() / elementSize; + throw RException(R__FAIL("invalid call: request empty page")); + auto elementSize = columnHandle.fColumn->GetElement()->GetSize(); return fPageAllocator->NewPage(columnHandle.fId, elementSize, nElements); } diff --git a/tree/ntuple/v7/test/ntuple_basics.cxx b/tree/ntuple/v7/test/ntuple_basics.cxx index 0f513e0e734ad..9687a9ddb6529 100644 --- a/tree/ntuple/v7/test/ntuple_basics.cxx +++ b/tree/ntuple/v7/test/ntuple_basics.cxx @@ -241,7 +241,7 @@ TEST(RNTuple, PageSize) { RNTupleWriteOptions opt; - opt.SetMaxUnzippedPageSize(200); + opt.SetApproxUnzippedPageSize(200); auto ntuple = RNTupleWriter::Recreate( std::move(model), "ntuple", fileGuard.GetPath(), opt ); diff --git a/tree/ntuple/v7/test/ntuple_view.cxx b/tree/ntuple/v7/test/ntuple_view.cxx index 66014b7b19320..7ecbc386383c4 100644 --- a/tree/ntuple/v7/test/ntuple_view.cxx +++ b/tree/ntuple/v7/test/ntuple_view.cxx @@ -63,7 +63,7 @@ TEST(RNTuple, BulkView) auto eltsPerPage = 10'000; { RNTupleWriteOptions opt; - opt.SetMaxUnzippedPageSize(eltsPerPage * sizeof(float)); + opt.SetApproxUnzippedPageSize(eltsPerPage * sizeof(float)); auto ntuple = RNTupleWriter::Recreate(std::move(model), "myNTuple", fileGuard.GetPath(), opt); for (int i = 0; i < 100'000; i++) { @@ -102,7 +102,7 @@ TEST(RNTuple, BulkViewCollection) auto pageSize = 80 * 1024; { RNTupleWriteOptions opt; - opt.SetMaxUnzippedPageSize(pageSize); + opt.SetApproxUnzippedPageSize(pageSize); auto ntuple = RNTupleWriter::Recreate(std::move(model), "myNTuple", fileGuard.GetPath(), opt); for (int i = 0; i < 100'000; i++) { From 0d466e48f0802eee9cb8ffb5c326fc78d15e76be Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 22 Jul 2021 09:38:18 +0200 Subject: [PATCH 097/577] [ntuple] Prevent current reading code from choking on 0-byte clusters --- tree/ntuple/v7/src/RPageStorage.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RPageStorage.cxx b/tree/ntuple/v7/src/RPageStorage.cxx index a616152afce0f..68acba4f33cf7 100644 --- a/tree/ntuple/v7/src/RPageStorage.cxx +++ b/tree/ntuple/v7/src/RPageStorage.cxx @@ -352,7 +352,8 @@ std::uint64_t ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experim fDescriptorBuilder.AddCluster(fLastClusterId, RNTupleVersion(), fPrevClusterNEntries, ClusterSize_t(nEntries - fPrevClusterNEntries)); // TODO(jblomer): Remove me with the v1 Serialization - fDescriptorBuilder.SetClusterLocator(fLastClusterId, RClusterDescriptor::RLocator()); + // For now, we set a non-zero locator to make sure current reading code does not choke + fDescriptorBuilder.SetClusterLocator(fLastClusterId, RClusterDescriptor::RLocator({0, 1, ""})); for (auto &range : fOpenColumnRanges) { fDescriptorBuilder.AddClusterColumnRange(fLastClusterId, range); range.fFirstElementIndex += range.fNElements; From ec6020b16f95a4621d37f68e90593621cc9d76ee Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 22 Jul 2021 13:38:42 +0200 Subject: [PATCH 098/577] [ntuple] Simplify setting compression estimate for 1st cluster Co-authored-by: Axel Naumann --- tree/ntuple/v7/src/RNTuple.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 5d14d61ad902c..ca750bfc951a0 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -295,9 +295,9 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( fMaxUnzippedClusterSize = fSink->GetWriteOptions().GetMaxUnzippedClusterSize(); // First estimate is a factor 2 compression if compression is used at all - fUnzippedClusterSizeEst = (fSink->GetWriteOptions().GetCompression() == 0) - ? fSink->GetWriteOptions().GetApproxZippedClusterSize() - : 2 * fSink->GetWriteOptions().GetApproxZippedClusterSize(); + const auto &writeOpts = fSink->GetWriteOptions(); + int scale = writeOpts.GetCompression() ? 1 : 2; + fUnzippedClusterSizeEst = scale * writeOpts.GetApproxZippedClusterSize(); } ROOT::Experimental::RNTupleWriter::~RNTupleWriter() From aabd77becf222bca1c27f60339550baec5c68027 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 22 Jul 2021 13:41:31 +0200 Subject: [PATCH 099/577] [ntuple] Add description to R_ASSERT in AppendImpl Co-authored-by: Axel Naumann --- tree/ntuple/v7/src/RField.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RField.cxx b/tree/ntuple/v7/src/RField.cxx index b67e0a8ecf13e..9f7b8a3c0ca8c 100644 --- a/tree/ntuple/v7/src/RField.cxx +++ b/tree/ntuple/v7/src/RField.cxx @@ -243,7 +243,7 @@ ROOT::Experimental::Detail::RFieldBase::Clone(std::string_view newName) const std::size_t ROOT::Experimental::Detail::RFieldBase::AppendImpl(const ROOT::Experimental::Detail::RFieldValue& /*value*/) { - R__ASSERT(false); + R__ASSERT(false && "A non-simple RField must implement its own AppendImpl"); return 0; } From 1e60c587428cc44438c6e714f1b83becc43c2d79 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 22 Jul 2021 13:43:11 +0200 Subject: [PATCH 100/577] [ntuple] Use more concise expression for flapping index Co-authored-by: Axel Naumann --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index b76f9543ff3ee..05d22b14168c0 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -93,7 +93,7 @@ public: R__ASSERT(dst != nullptr); if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage / 2) { // Current page is at 50% fill level, we can now commit the previously used page - auto otherIdx = (fHeadPageIdx + 1) % 2; + auto otherIdx = 1 - fHeadPageIdx; if (fHeadPage[otherIdx].GetNElements()) fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); } From e580b05858bcecb0a379194ad5e8405fd5aabf1d Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 26 Jul 2021 12:14:15 +0200 Subject: [PATCH 101/577] [ntuple] Add tuning.md initially explaining cluster/page sizes --- tree/ntuple/v7/doc/tuning.md | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tree/ntuple/v7/doc/tuning.md diff --git a/tree/ntuple/v7/doc/tuning.md b/tree/ntuple/v7/doc/tuning.md new file mode 100644 index 0000000000000..8d0cee9308f2d --- /dev/null +++ b/tree/ntuple/v7/doc/tuning.md @@ -0,0 +1,46 @@ +Cluster Sizes +============= + +A cluster contains all the data of a given event range. +As clusters are usually compressed and tied to event boundaries, an exact size cannot be enforced. +Instead, RNTuple uses a *target size* for the compressed data as a guideline for when to flush a cluster. + +The default cluster target size is 50MB of compressed data. +The default can be changed by the `RNTupleWriteOptions`. +The default should work well in the majority of cases. +In general, larger clusters provide room for more and larger pages and should improve compression ratio and speed. +However, clusters also need to be buffered during write and (partially) during read, +so larger cluster increase the memory footprint. + +A second option in `RNTupleWriteOptions` specifies the maximum uncompressed cluster size. +The default is 512MiB. +This setting acts as an "emergency break" and should prevent very compressible clusters from growing too large. + +Given the two settings, writing works as follows: +when the current cluster is larger than the maximum uncompressed size, it will be flushed unconditionally. +When the current cluster size reaches the estimate for the compressed cluster size, it will be flushed, too. +The estimated compression ratio for the first cluster is 0.5 if compression is used, and 1 otherwise. +The following clusters use the compression ratio of the last cluster as estimate. + + +Page Sizes +========== + +Pages contain consecutive elements of a certain columns. +They are the unit of compression and of addressability on storage. +RNTuple uses a *target size* for the uncompressed data as a guideline for when to flush a page. + +The default page target size is 64KiB. +The default can be changed by the `RNTupleWriteOptions`. +In general, larger pages give better compression ratios; smaller pages reduce the memory footprint. +When reading, every active column requires at least one page buffer. +For the number of read requests, the page size does not matter +because pages of the same column are written consecutively and therefore read in one go. + +Given the target size, writing works as follows: +Pages are filled until the target size and then flushed. +If a column has enough elements to fill at least half a page, there is a mechanism to prevent undersized tail pages: +writing uses two page buffers in turns and flushes the previous buffer only once the next buffer is at least at 50%. +If the cluster gets flushed with an undersized tail page, +the small page is appended to the previous page before flushing. +Therefore, tail pages sizes are between [0.5 * target size .. 1.5 * target size]. From 352370b5e94ca738cea292a1aa29005965c0c34e Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 26 Jul 2021 12:31:21 +0200 Subject: [PATCH 102/577] [ntuple] Improve readability of some sizeof() calls --- tree/ntuple/v7/inc/ROOT/RField.hxx | 4 ++-- tree/ntuple/v7/src/RField.cxx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx index 811c544bf2a67..4413c474a920e 100644 --- a/tree/ntuple/v7/inc/ROOT/RField.hxx +++ b/tree/ntuple/v7/inc/ROOT/RField.hxx @@ -1375,7 +1375,7 @@ protected: Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); - return nbytes + sizeof(ClusterSize_t); + return nbytes + sizeof(elemIndex); } void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final { auto typedValue = value->Get(); @@ -1469,7 +1469,7 @@ protected: Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); - return count + sizeof(ClusterSize_t); + return count + sizeof(elemIndex); } void ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) final { auto typedValue = value->Get(); diff --git a/tree/ntuple/v7/src/RField.cxx b/tree/ntuple/v7/src/RField.cxx index 9f7b8a3c0ca8c..4547a57b0c279 100644 --- a/tree/ntuple/v7/src/RField.cxx +++ b/tree/ntuple/v7/src/RField.cxx @@ -726,7 +726,7 @@ std::size_t ROOT::Experimental::RField::AppendImpl(const ROOT::Expe fColumns[1]->AppendV(elemChars, length); fIndex += length; fColumns[0]->Append(fElemIndex); - return length + sizeof(ClusterSize_t); + return length + sizeof(fElemIndex); } void ROOT::Experimental::RField::ReadGlobalImpl( @@ -1011,7 +1011,7 @@ std::size_t ROOT::Experimental::RVectorField::AppendImpl(const Detail::RFieldVal Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); - return nbytes + sizeof(ClusterSize_t); + return nbytes + sizeof(elemIndex); } void ROOT::Experimental::RVectorField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) @@ -1111,7 +1111,7 @@ std::size_t ROOT::Experimental::RField>::AppendImpl(const Deta Detail::RColumnElement elemIndex(&fNWritten); fNWritten += count; fColumns[0]->Append(elemIndex); - return count + sizeof(ClusterSize_t); + return count + sizeof(elemIndex); } void ROOT::Experimental::RField>::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue* value) From 6c8f743b7082dec81cd19c464334325632e453a5 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 26 Jul 2021 12:52:16 +0200 Subject: [PATCH 103/577] [ntuple] Fix initial cluster compression estimate --- tree/ntuple/v7/src/RNTuple.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index ca750bfc951a0..986962208ec48 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -293,10 +293,10 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( fSink->Create(*fModel.get()); fMetrics.ObserveMetrics(fSink->GetMetrics()); - fMaxUnzippedClusterSize = fSink->GetWriteOptions().GetMaxUnzippedClusterSize(); - // First estimate is a factor 2 compression if compression is used at all const auto &writeOpts = fSink->GetWriteOptions(); - int scale = writeOpts.GetCompression() ? 1 : 2; + fMaxUnzippedClusterSize = writeOpts.GetMaxUnzippedClusterSize(); + // First estimate is a factor 2 compression if compression is used at all + int scale = writeOpts.GetCompression() ? 2 : 1; fUnzippedClusterSizeEst = scale * writeOpts.GetApproxZippedClusterSize(); } From c1f6854aceada010808d9b1ecc8e7d6055207d23 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 14:31:02 +0200 Subject: [PATCH 104/577] [ntuple] Count page capacity in number of elements --- tree/ntuple/v7/inc/ROOT/RPage.hxx | 23 +++++++++++------------ tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx | 2 +- tree/ntuple/v7/src/RColumn.cxx | 2 +- tree/ntuple/v7/src/RPageAllocator.cxx | 2 +- tree/ntuple/v7/src/RPageSinkBuf.cxx | 2 +- tree/ntuple/v7/src/RPageStorage.cxx | 2 +- tree/ntuple/v7/src/RPageStorageDaos.cxx | 4 ++-- tree/ntuple/v7/src/RPageStorageFile.cxx | 4 ++-- tree/ntuple/v7/test/ntuple_pages.cxx | 6 +++--- 9 files changed, 23 insertions(+), 24 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RPage.hxx b/tree/ntuple/v7/inc/ROOT/RPage.hxx index a05620e628a21..150f7aee912f7 100644 --- a/tree/ntuple/v7/inc/ROOT/RPage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPage.hxx @@ -59,28 +59,29 @@ public: private: ColumnId_t fColumnId; void *fBuffer; - ClusterSize_t::ValueType fCapacity; ClusterSize_t::ValueType fElementSize; ClusterSize_t::ValueType fNElements; + /// The capacity of the page in number of elements + ClusterSize_t::ValueType fMaxElements; NTupleSize_t fRangeFirst; RClusterInfo fClusterInfo; public: - RPage() : fColumnId(kInvalidColumnId), fBuffer(nullptr), fCapacity(0), fElementSize(0), fNElements(0), fRangeFirst(0) + RPage() + : fColumnId(kInvalidColumnId), fBuffer(nullptr), fElementSize(0), fNElements(0), fMaxElements(0), fRangeFirst(0) {} - RPage(ColumnId_t columnId, void* buffer, ClusterSize_t::ValueType capacity, ClusterSize_t::ValueType elementSize) - : fColumnId(columnId), fBuffer(buffer), fCapacity(capacity), fElementSize(elementSize), fNElements(0), + RPage(ColumnId_t columnId, void* buffer, ClusterSize_t::ValueType elementSize, ClusterSize_t::ValueType maxElements) + : fColumnId(columnId), fBuffer(buffer), fElementSize(elementSize), fNElements(0), fMaxElements(maxElements), fRangeFirst(0) {} ~RPage() = default; ColumnId_t GetColumnId() const { return fColumnId; } - /// The total space available in the page - ClusterSize_t::ValueType GetCapacity() const { return fCapacity; } /// The space taken by column elements in the buffer - ClusterSize_t::ValueType GetSize() const { return fElementSize * fNElements; } + ClusterSize_t::ValueType GetNBytes() const { return fElementSize * fNElements; } ClusterSize_t::ValueType GetElementSize() const { return fElementSize; } ClusterSize_t::ValueType GetNElements() const { return fNElements; } + ClusterSize_t::ValueType GetMaxElements() const { return fMaxElements; } NTupleSize_t GetGlobalRangeFirst() const { return fRangeFirst; } NTupleSize_t GetGlobalRangeLast() const { return fRangeFirst + NTupleSize_t(fNElements) - 1; } ClusterSize_t::ValueType GetClusterRangeFirst() const { return fRangeFirst - fClusterInfo.GetIndexOffset(); } @@ -105,11 +106,9 @@ public: /// Return a pointer after the last element that has space for nElements new elements. If there is not enough capacity, /// return nullptr void* TryGrow(ClusterSize_t::ValueType nElements) { - auto offset = GetSize(); - auto nbyte = nElements * fElementSize; - if (offset + nbyte > fCapacity) { - return nullptr; - } + if (fNElements + nElements > fMaxElements) + return nullptr; + auto offset = GetNBytes(); fNElements += nElements; return static_cast(fBuffer) + offset; } diff --git a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx index a2859b74056e7..27f693ce79e21 100644 --- a/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPageSinkBuf.hxx @@ -52,7 +52,7 @@ private: return fSealedPage.fBuffer != nullptr; } void AllocateSealedPageBuf() { - fBuf = std::make_unique(fPage.GetSize()); + fBuf = std::make_unique(fPage.GetNBytes()); } }; public: diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 0079bbba4ec57..659d2d670a35e 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -64,7 +64,7 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS void ROOT::Experimental::Detail::RColumn::Flush() { auto otherIdx = (fHeadPageIdx + 1) % 2; - if (fHeadPage[fHeadPageIdx].GetSize() == 0 && fHeadPage[otherIdx].GetSize() == 0) + if (fHeadPage[fHeadPageIdx].GetNBytes() == 0 && fHeadPage[otherIdx].GetNBytes() == 0) return; if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && diff --git a/tree/ntuple/v7/src/RPageAllocator.cxx b/tree/ntuple/v7/src/RPageAllocator.cxx index 1130e07aef55e..466a948d9716e 100644 --- a/tree/ntuple/v7/src/RPageAllocator.cxx +++ b/tree/ntuple/v7/src/RPageAllocator.cxx @@ -24,7 +24,7 @@ ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageAllocatorHeap R__ASSERT((elementSize > 0) && (nElements > 0)); auto nbytes = elementSize * nElements; auto buffer = new unsigned char[nbytes]; - return RPage(columnId, buffer, nbytes, elementSize); + return RPage(columnId, buffer, elementSize, nElements); } void ROOT::Experimental::Detail::RPageAllocatorHeap::DeletePage(const RPage& page) diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx index 45cf969cb76a8..5bcd851db6162 100644 --- a/tree/ntuple/v7/src/RPageSinkBuf.cxx +++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx @@ -45,7 +45,7 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitPageImpl(ColumnHandle_t columnHa RPage bufPage = ReservePage(columnHandle, page.GetNElements()); // make sure the page is aware of how many elements it will have R__ASSERT(bufPage.TryGrow(page.GetNElements())); - memcpy(bufPage.GetBuffer(), page.GetBuffer(), page.GetSize()); + memcpy(bufPage.GetBuffer(), page.GetBuffer(), page.GetNBytes()); // Safety: RColumnBuf::iterators are guaranteed to be valid until the // element is destroyed. In other words, all buffered page iterators are // valid until the return value of DrainBufferedPages() goes out of scope in diff --git a/tree/ntuple/v7/src/RPageStorage.cxx b/tree/ntuple/v7/src/RPageStorage.cxx index 68acba4f33cf7..ce34eac6b93be 100644 --- a/tree/ntuple/v7/src/RPageStorage.cxx +++ b/tree/ntuple/v7/src/RPageStorage.cxx @@ -376,7 +376,7 @@ ROOT::Experimental::Detail::RPageSink::SealPage(const RPage &page, { unsigned char *pageBuf = reinterpret_cast(page.GetBuffer()); bool isAdoptedBuffer = true; - auto packedBytes = page.GetSize(); + auto packedBytes = page.GetNBytes(); if (!element.IsMappable()) { packedBytes = element.GetPackedSize(page.GetNElements()); diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index 270e50dfec120..f5795df61df1e 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -167,7 +167,7 @@ ROOT::Experimental::Detail::RPageSinkDaos::CommitPageImpl(ColumnHandle_t columnH sealedPage = SealPage(page, *element, GetWriteOptions().GetCompression()); } - fCounters->fSzZip.Add(page.GetSize()); + fCounters->fSzZip.Add(page.GetNBytes()); return CommitSealedPageImpl(columnHandle.fId, sealedPage); } @@ -264,7 +264,7 @@ void ROOT::Experimental::Detail::RPageSinkDaos::ReleasePage(RPage &page) ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageAllocatorDaos::NewPage( ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements) { - RPage newPage(columnId, mem, elementSize * nElements, elementSize); + RPage newPage(columnId, mem, elementSize, elementSize * nElements); newPage.TryGrow(nElements); return newPage; } diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index ac6e492c3e29f..10beb4ee24e1d 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -131,7 +131,7 @@ ROOT::Experimental::Detail::RPageSinkFile::CommitPageImpl(ColumnHandle_t columnH sealedPage = SealPage(page, *element, GetWriteOptions().GetCompression()); } - fCounters->fSzZip.Add(page.GetSize()); + fCounters->fSzZip.Add(page.GetNBytes()); return WriteSealedPage(sealedPage, element->GetPackedSize(page.GetNElements())); } @@ -193,7 +193,7 @@ void ROOT::Experimental::Detail::RPageSinkFile::ReleasePage(RPage &page) ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageAllocatorFile::NewPage( ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements) { - RPage newPage(columnId, mem, elementSize * nElements, elementSize); + RPage newPage(columnId, mem, elementSize, elementSize * nElements); newPage.TryGrow(nElements); return newPage; } diff --git a/tree/ntuple/v7/test/ntuple_pages.cxx b/tree/ntuple/v7/test/ntuple_pages.cxx index 2810b7833fcda..6cfb00caed3d2 100644 --- a/tree/ntuple/v7/test/ntuple_pages.cxx +++ b/tree/ntuple/v7/test/ntuple_pages.cxx @@ -6,9 +6,9 @@ TEST(Pages, Allocation) auto page = allocator.NewPage(42, 4, 16); EXPECT_FALSE(page.IsNull()); - EXPECT_EQ(64U, page.GetCapacity()); + EXPECT_EQ(16U, page.GetMaxElements()); EXPECT_EQ(0U, page.GetNElements()); - EXPECT_EQ(0U, page.GetSize()); + EXPECT_EQ(0U, page.GetNBytes()); allocator.DeletePage(page); } @@ -21,7 +21,7 @@ TEST(Pages, Pool) pool.ReturnPage(page); // should not crash RPage::RClusterInfo clusterInfo(2, 40); - page = RPage(1, &page, 10, 1); + page = RPage(1, &page, 1, 10); EXPECT_NE(nullptr, page.TryGrow(10)); page.SetWindow(50, clusterInfo); EXPECT_FALSE(page.IsNull()); From 1cd6eb86fff39264a9d52d70cdbdc566d9f5737a Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 14:42:16 +0200 Subject: [PATCH 105/577] [ntuple] Change RPage::TryGrow() --> RPage::GrowUnchecked() --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 6 ++---- tree/ntuple/v7/inc/ROOT/RPage.hxx | 9 ++++----- tree/ntuple/v7/src/RColumn.cxx | 3 +-- tree/ntuple/v7/src/RPageSinkBuf.cxx | 2 +- tree/ntuple/v7/src/RPageStorageDaos.cxx | 4 ++-- tree/ntuple/v7/src/RPageStorageFile.cxx | 4 ++-- tree/ntuple/v7/test/ntuple_pages.cxx | 3 ++- 7 files changed, 14 insertions(+), 17 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 05d22b14168c0..406fbea9a6637 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -89,8 +89,7 @@ public: void Connect(DescriptorId_t fieldId, RPageStorage *pageStorage); void Append(const RColumnElementBase &element) { - void *dst = fHeadPage[fHeadPageIdx].TryGrow(1); - R__ASSERT(dst != nullptr); + void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(1); if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage / 2) { // Current page is at 50% fill level, we can now commit the previously used page auto otherIdx = 1 - fHeadPageIdx; @@ -125,8 +124,7 @@ public: fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); } - void *dst = fHeadPage[fHeadPageIdx].TryGrow(count); - R__ASSERT(dst != nullptr); + void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(count); elemArray.WriteTo(dst, count); fNElements += count; diff --git a/tree/ntuple/v7/inc/ROOT/RPage.hxx b/tree/ntuple/v7/inc/ROOT/RPage.hxx index 150f7aee912f7..ff005d6863e0c 100644 --- a/tree/ntuple/v7/inc/ROOT/RPage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPage.hxx @@ -103,11 +103,10 @@ public: } void* GetBuffer() const { return fBuffer; } - /// Return a pointer after the last element that has space for nElements new elements. If there is not enough capacity, - /// return nullptr - void* TryGrow(ClusterSize_t::ValueType nElements) { - if (fNElements + nElements > fMaxElements) - return nullptr; + /// Called during writing: returns a pointer after the last element and increases the element counter + /// in anticpation of the caller filling nElements in the page. It is the responsibility of the caller + /// to prevent page overflows, i.e. that fNElements + nElements <= fMaxElements + void* GrowUnchecked(ClusterSize_t::ValueType nElements) { auto offset = GetNBytes(); fNElements += nElements; return static_cast(fBuffer) + offset; diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 659d2d670a35e..fa9e08f6b7372 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -71,8 +71,7 @@ void ROOT::Experimental::Detail::RColumn::Flush() fHeadPage[otherIdx].GetNElements()) { // Small tail page: merge with previously used page - void *dst = fHeadPage[otherIdx].TryGrow(fHeadPage[fHeadPageIdx].GetNElements()); - R__ASSERT(dst != nullptr); + void *dst = fHeadPage[otherIdx].GrowUnchecked(fHeadPage[fHeadPageIdx].GetNElements()); RColumnElementBase elem(fHeadPage[fHeadPageIdx].GetBuffer(), fHeadPage[fHeadPageIdx].GetElementSize()); elem.WriteTo(dst, fHeadPage[fHeadPageIdx].GetNElements()); fHeadPage[fHeadPageIdx].Reset(0); diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx index 5bcd851db6162..ee8d310a07d33 100644 --- a/tree/ntuple/v7/src/RPageSinkBuf.cxx +++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx @@ -44,7 +44,7 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitPageImpl(ColumnHandle_t columnHa // TODO avoid frequent (de)allocations by holding on to allocated buffers in RColumnBuf RPage bufPage = ReservePage(columnHandle, page.GetNElements()); // make sure the page is aware of how many elements it will have - R__ASSERT(bufPage.TryGrow(page.GetNElements())); + bufPage.GrowUnchecked(page.GetNElements()); memcpy(bufPage.GetBuffer(), page.GetBuffer(), page.GetNBytes()); // Safety: RColumnBuf::iterators are guaranteed to be valid until the // element is destroyed. In other words, all buffered page iterators are diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index f5795df61df1e..7bd7e1e4297e9 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -264,8 +264,8 @@ void ROOT::Experimental::Detail::RPageSinkDaos::ReleasePage(RPage &page) ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageAllocatorDaos::NewPage( ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements) { - RPage newPage(columnId, mem, elementSize, elementSize * nElements); - newPage.TryGrow(nElements); + RPage newPage(columnId, mem, elementSize, nElements); + newPage.GrowUnchecked(nElements); return newPage; } diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index 10beb4ee24e1d..853118043d411 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -193,8 +193,8 @@ void ROOT::Experimental::Detail::RPageSinkFile::ReleasePage(RPage &page) ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageAllocatorFile::NewPage( ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements) { - RPage newPage(columnId, mem, elementSize, elementSize * nElements); - newPage.TryGrow(nElements); + RPage newPage(columnId, mem, elementSize, nElements); + newPage.GrowUnchecked(nElements); return newPage; } diff --git a/tree/ntuple/v7/test/ntuple_pages.cxx b/tree/ntuple/v7/test/ntuple_pages.cxx index 6cfb00caed3d2..1d7db895b1e23 100644 --- a/tree/ntuple/v7/test/ntuple_pages.cxx +++ b/tree/ntuple/v7/test/ntuple_pages.cxx @@ -22,7 +22,8 @@ TEST(Pages, Pool) RPage::RClusterInfo clusterInfo(2, 40); page = RPage(1, &page, 1, 10); - EXPECT_NE(nullptr, page.TryGrow(10)); + page.GrowUnchecked(10); + EXPECT_EQ(page.GetMaxElements(), page.GetNElements()); page.SetWindow(50, clusterInfo); EXPECT_FALSE(page.IsNull()); unsigned int nCallDeleter = 0; From 1193559eece941e2c84a1a37a77f862db1671c0b Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 14:46:56 +0200 Subject: [PATCH 106/577] [ntuple] Add TODO (NFC) --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 1 + 1 file changed, 1 insertion(+) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 406fbea9a6637..938335caf4156 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -109,6 +109,7 @@ public: void AppendV(const RColumnElementBase &elemArray, std::size_t count) { if (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage) { + // TODO(jblomer): use (fewer) calls to AppendV to write the data page-by-page for (unsigned i = 0; i < count; ++i) { Append(RColumnElementBase(elemArray, i)); } From 7e1328152a692970d7eb73099d33f75e4ce45f7a Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 16:44:15 +0200 Subject: [PATCH 107/577] [ntuple] Enforce target size of >=2 elements per page on write --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 4 ++-- tree/ntuple/v7/inc/ROOT/RPage.hxx | 1 + tree/ntuple/v7/src/RColumn.cxx | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 938335caf4156..5958f8e26b0dd 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -102,7 +102,7 @@ public: if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) { // We are at 100% fill level, switch to the other head page - fHeadPageIdx = (fHeadPageIdx + 1) % 2; + fHeadPageIdx = 1 - fHeadPageIdx; fHeadPage[fHeadPageIdx].Reset(fNElements); } } @@ -120,7 +120,7 @@ public: (fHeadPage[fHeadPageIdx].GetNElements() + count >= fApproxNElementsPerPage / 2)) { // Current page jumps over 50% fill level, we can now commit the previously used page - auto otherIdx = (fHeadPageIdx + 1) % 2; + auto otherIdx = 1 - fHeadPageIdx; if (fHeadPage[otherIdx].GetNElements()) fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); } diff --git a/tree/ntuple/v7/inc/ROOT/RPage.hxx b/tree/ntuple/v7/inc/ROOT/RPage.hxx index ff005d6863e0c..928e14deca20a 100644 --- a/tree/ntuple/v7/inc/ROOT/RPage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPage.hxx @@ -128,6 +128,7 @@ public: } bool IsNull() const { return fBuffer == nullptr; } + bool IsEmpty() const { return fNElements == 0; } bool operator ==(const RPage &other) const { return fBuffer == other.fBuffer; } bool operator !=(const RPage &other) const { return !(*this == other); } }; diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index fa9e08f6b7372..9522fbcaf4149 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -47,6 +47,8 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS fPageSink = static_cast(pageStorage); // the page sink initializes fHeadPage on AddColumn fHandleSink = fPageSink->AddColumn(fieldId, *this); fApproxNElementsPerPage = fPageSink->GetWriteOptions().GetApproxUnzippedPageSize() / fElement->GetSize(); + if (fApproxNElementsPerPage < 2) + throw RException(R__FAIL("Page size too small for writing")); fHeadPage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); fHeadPage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); break; @@ -63,8 +65,8 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS void ROOT::Experimental::Detail::RColumn::Flush() { - auto otherIdx = (fHeadPageIdx + 1) % 2; - if (fHeadPage[fHeadPageIdx].GetNBytes() == 0 && fHeadPage[otherIdx].GetNBytes() == 0) + auto otherIdx = 1 - fHeadPageIdx; + if (fHeadPage[fHeadPageIdx].IsEmpty() && fHeadPage[otherIdx].IsEmpty()) return; if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && From de62274ab8717e1a90129c92a62ec6b592b3c2cf Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 18:06:28 +0200 Subject: [PATCH 108/577] [ntuple] Catch and test invalid tunables --- tree/ntuple/CMakeLists.txt | 1 + tree/ntuple/v7/inc/ROOT/RColumn.hxx | 4 +- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 17 +++--- tree/ntuple/v7/src/RColumn.cxx | 2 +- tree/ntuple/v7/src/RNTupleOptions.cxx | 66 ++++++++++++++++++++++ tree/ntuple/v7/test/ntuple_storage.cxx | 43 ++++++++++++++ 6 files changed, 121 insertions(+), 12 deletions(-) create mode 100644 tree/ntuple/v7/src/RNTupleOptions.cxx diff --git a/tree/ntuple/CMakeLists.txt b/tree/ntuple/CMakeLists.txt index 3f056a388a83f..e37b9994776da 100644 --- a/tree/ntuple/CMakeLists.txt +++ b/tree/ntuple/CMakeLists.txt @@ -56,6 +56,7 @@ SOURCES v7/src/RNTupleMerger.cxx v7/src/RNTupleMetrics.cxx v7/src/RNTupleModel.cxx + v7/src/RNTupleOptions.cxx v7/src/RNTupleUtil.cxx v7/src/RPage.cxx v7/src/RPageAllocator.cxx diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 5958f8e26b0dd..bbd09e361f7f5 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -60,7 +60,9 @@ private: RPage fHeadPage[2]; /// Index of the current head page int fHeadPageIdx = 0; - /// For writing, the targeted page size as given by the write options + /// For writing, the targeted page size as given by the write options. + /// We ensure this value to be >= 2 in Connect() so that we have meaningful + /// "page full" and "page half full" events when writing the page. std::uint32_t fApproxNElementsPerPage = 0; /// The number of elements written resp. available in the column NTupleSize_t fNElements = 0; diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index e3bcebf9a2534..7a4048170d30f 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -20,6 +20,8 @@ #include #include +#include + namespace ROOT { namespace Experimental { @@ -62,30 +64,25 @@ class RNTupleWriteOptions { public: virtual ~RNTupleWriteOptions() = default; - virtual std::unique_ptr Clone() const - { return std::make_unique(*this); } + virtual std::unique_ptr Clone() const; int GetCompression() const { return fCompression; } void SetCompression(int val) { fCompression = val; } void SetCompression(RCompressionSetting::EAlgorithm algorithm, int compressionLevel) { - fCompression = CompressionSettings(algorithm, compressionLevel); + fCompression = CompressionSettings(algorithm, compressionLevel); } ENTupleContainerFormat GetContainerFormat() const { return fContainerFormat; } void SetContainerFormat(ENTupleContainerFormat val) { fContainerFormat = val; } std::size_t GetApproxZippedClusterSize() const { return fApproxZippedClusterSize; } - void SetApproxZippedClusterSize(std::size_t val) { fApproxZippedClusterSize = val; } + void SetApproxZippedClusterSize(std::size_t val); std::size_t GetMaxUnzippedClusterSize() const { return fMaxUnzippedClusterSize; } - void SetMaxUnzippedClusterSize(std::size_t val) { fMaxUnzippedClusterSize = val; } + void SetMaxUnzippedClusterSize(std::size_t val); std::size_t GetApproxUnzippedPageSize() const { return fApproxUnzippedPageSize; } - void SetApproxUnzippedPageSize(std::size_t val) { - if (val < 64) - throw RException(R__FAIL("page size too small")); - fApproxUnzippedPageSize = val; - } + void SetApproxUnzippedPageSize(std::size_t val); bool GetUseBufferedWrite() const { return fUseBufferedWrite; } void SetUseBufferedWrite(bool val) { fUseBufferedWrite = val; } diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 9522fbcaf4149..5fc82d96c70e1 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -48,7 +48,7 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS fHandleSink = fPageSink->AddColumn(fieldId, *this); fApproxNElementsPerPage = fPageSink->GetWriteOptions().GetApproxUnzippedPageSize() / fElement->GetSize(); if (fApproxNElementsPerPage < 2) - throw RException(R__FAIL("Page size too small for writing")); + throw RException(R__FAIL("page size too small for writing")); fHeadPage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); fHeadPage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); break; diff --git a/tree/ntuple/v7/src/RNTupleOptions.cxx b/tree/ntuple/v7/src/RNTupleOptions.cxx new file mode 100644 index 0000000000000..60f3c1beb3aa1 --- /dev/null +++ b/tree/ntuple/v7/src/RNTupleOptions.cxx @@ -0,0 +1,66 @@ +/// \file RNTupleOptions.cxx +/// \ingroup NTuple ROOT7 +/// \author Jakob Blomer +/// \date 2021-07-28 +/// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback +/// is welcome! + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#include +#include + +#include + +namespace { + +void EnsureValidTunables(std::size_t zippedClusterSize, std::size_t unzippedClusterSize, std::size_t unzippedPageSize) +{ + using RException = ROOT::Experimental::RException; + if (zippedClusterSize == 0) { + throw RException(R__FAIL("invalid target cluster size: 0")); + } + if (zippedClusterSize > unzippedClusterSize) { + throw RException(R__FAIL("compressed target cluster size must not be larger than " + "maximum uncompressed cluster size")); + } + if (unzippedPageSize > unzippedClusterSize) { + throw RException(R__FAIL("compressed target page size must not be larger than " + "maximum uncompressed cluster size")); + } + if (unzippedPageSize == 0) { + throw RException(R__FAIL("invalid target page size: 0")); + } +} + +} // anonymous namespace + +std::unique_ptr +ROOT::Experimental::RNTupleWriteOptions::Clone() const +{ + return std::make_unique(*this); +} + +void ROOT::Experimental::RNTupleWriteOptions::SetApproxZippedClusterSize(std::size_t val) +{ + EnsureValidTunables(val, fMaxUnzippedClusterSize, fApproxUnzippedPageSize); + fApproxZippedClusterSize = val; +} + +void ROOT::Experimental::RNTupleWriteOptions::SetMaxUnzippedClusterSize(std::size_t val) +{ + EnsureValidTunables(fApproxZippedClusterSize, val, fApproxUnzippedPageSize); + fMaxUnzippedClusterSize = val; +} + +void ROOT::Experimental::RNTupleWriteOptions::SetApproxUnzippedPageSize(std::size_t val) +{ + EnsureValidTunables(fApproxZippedClusterSize, fMaxUnzippedClusterSize, val); + fApproxUnzippedPageSize = val; +} diff --git a/tree/ntuple/v7/test/ntuple_storage.cxx b/tree/ntuple/v7/test/ntuple_storage.cxx index 37562c80f97a1..7d47ecef39229 100644 --- a/tree/ntuple/v7/test/ntuple_storage.cxx +++ b/tree/ntuple/v7/test/ntuple_storage.cxx @@ -71,6 +71,49 @@ TEST(RNTuple, Extended) EXPECT_EQ(chksumRead, chksumWrite); } +TEST(RNTuple, InvalidWriteOptions) { + RNTupleWriteOptions options; + try { + options.SetApproxUnzippedPageSize(0); + FAIL() << "should not allow zero-sized page"; + } catch (const RException &err) { + EXPECT_THAT(err.what(), testing::HasSubstr("page size")); + } + options.SetApproxUnzippedPageSize(10); + options.SetApproxZippedClusterSize(50); + try { + options.SetMaxUnzippedClusterSize(40); + FAIL() << "should not allow undersized cluster"; + } catch (const RException &err) { + EXPECT_THAT(err.what(), testing::HasSubstr("must not be larger than")); + } + options.SetApproxZippedClusterSize(5); + try { + options.SetMaxUnzippedClusterSize(7); + FAIL() << "should not allow undersized cluster"; + } catch (const RException &err) { + EXPECT_THAT(err.what(), testing::HasSubstr("must not be larger than")); + } + + FileRaii fileGuard("test_ntuple_invalid_write_options.root"); + auto model = RNTupleModel::Create(); + model->MakeField("x"); + options.SetApproxUnzippedPageSize(3); + auto m2 = model->Clone(); + try { + auto ntuple = RNTupleWriter::Recreate(std::move(model), "ntpl", fileGuard.GetPath(), options); + FAIL() << "should not allow undersized pages"; + } catch (const RException &err) { + EXPECT_THAT(err.what(), testing::HasSubstr("page size too small")); + } + options.SetApproxUnzippedPageSize(4); + try { + auto ntuple = RNTupleWriter::Recreate(std::move(m2), "ntpl", fileGuard.GetPath(), options); + } catch (const RException &err) { + FAIL() << "pages size should be just large enough for 2 elements"; + } +} + TEST(RPageSinkBuf, Basics) { struct TestModel { From 8b418321870ebc4205b108caee7107b7693383c8 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 21:59:28 +0200 Subject: [PATCH 109/577] [ntuple] Restructure page writing and flushing code --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 56 ++++++++++++++++++----------- tree/ntuple/v7/src/RColumn.cxx | 13 ++++--- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index bbd09e361f7f5..960b6689f0f1e 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -75,6 +75,25 @@ private: RColumn(const RColumnModel &model, std::uint32_t index); + /// Used in Append() and AppendV() to switch pages when the main page reached the target size + /// The other page has been flushed when the main page reached 50%. + void SwapHeadPages() { + fHeadPageIdx = 1 - fHeadPageIdx; + R__ASSERT(fHeadPage[fHeadPageIdx].IsEmpty()); + fHeadPage[fHeadPageIdx].Reset(fNElements); + } + + /// When the main head page surpasses the 50% fill level, the (full) shadow head page gets flushed + void FlushShadowHeadPage() { + auto otherIdx = 1 - fHeadPageIdx; + if (fHeadPage[otherIdx].IsEmpty()) + return; + fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); + // Mark the page as flushed; the rangeFirst is zero for now but will be reset to + // fNElements in SwapHeadPages() when the pages swap + fHeadPage[otherIdx].Reset(0); + } + public: template static RColumn *Create(const RColumnModel &model, std::uint32_t index) { @@ -92,24 +111,20 @@ public: void Append(const RColumnElementBase &element) { void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(1); + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage / 2) { - // Current page is at 50% fill level, we can now commit the previously used page - auto otherIdx = 1 - fHeadPageIdx; - if (fHeadPage[otherIdx].GetNElements()) - fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); + FlushShadowHeadPage(); } element.WriteTo(dst, 1); fNElements++; - if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) { - // We are at 100% fill level, switch to the other head page - fHeadPageIdx = 1 - fHeadPageIdx; - fHeadPage[fHeadPageIdx].Reset(fNElements); - } + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) + SwapHeadPages(); } void AppendV(const RColumnElementBase &elemArray, std::size_t count) { + // We might not have enough space in the current page. In this case, fall back to one by one filling. if (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage) { // TODO(jblomer): use (fewer) calls to AppendV to write the data page-by-page for (unsigned i = 0; i < count; ++i) { @@ -118,24 +133,23 @@ public: return; } - if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && - (fHeadPage[fHeadPageIdx].GetNElements() + count >= fApproxNElementsPerPage / 2)) + void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(count); + + // The check for flushing the shadow page is more complicated than for the Append() case + // because we don't necessarily fill up to exactly fApproxNElementsPerPage / 2 elements; + // we might instead jump over the 50% fill level + if ((fHeadPage[fHeadPageIdx].GetNElements() <= fApproxNElementsPerPage / 2) && + (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage / 2)) { - // Current page jumps over 50% fill level, we can now commit the previously used page - auto otherIdx = 1 - fHeadPageIdx; - if (fHeadPage[otherIdx].GetNElements()) - fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); + FlushShadowHeadPage(); } - void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(count); elemArray.WriteTo(dst, count); fNElements += count; - if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) { - // We are at 100% fill level, switch to the other head page - fHeadPageIdx = (fHeadPageIdx + 1) % 2; - fHeadPage[fHeadPageIdx].Reset(fNElements); - } + // Note that by the very first check, we cannot have filled more than fApproxNElementsPerPage elements + if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) + SwapHeadPages(); } void Read(const NTupleSize_t globalIndex, RColumnElementBase *element) { diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 5fc82d96c70e1..d9da1315e27c0 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -49,6 +49,7 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS fApproxNElementsPerPage = fPageSink->GetWriteOptions().GetApproxUnzippedPageSize() / fElement->GetSize(); if (fApproxNElementsPerPage < 2) throw RException(R__FAIL("page size too small for writing")); + // We now have 0 < fApproxNElementsPerPage / 2 < fApproxNElementsPerPage fHeadPage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); fHeadPage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); break; @@ -69,18 +70,16 @@ void ROOT::Experimental::Detail::RColumn::Flush() if (fHeadPage[fHeadPageIdx].IsEmpty() && fHeadPage[otherIdx].IsEmpty()) return; - if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && - fHeadPage[otherIdx].GetNElements()) - { - // Small tail page: merge with previously used page + if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && !fHeadPage[otherIdx].IsEmpty()) { + // Small tail page: merge with previously used page; we know that there is enough space in the shadow page void *dst = fHeadPage[otherIdx].GrowUnchecked(fHeadPage[fHeadPageIdx].GetNElements()); RColumnElementBase elem(fHeadPage[fHeadPageIdx].GetBuffer(), fHeadPage[fHeadPageIdx].GetElementSize()); elem.WriteTo(dst, fHeadPage[fHeadPageIdx].GetNElements()); fHeadPage[fHeadPageIdx].Reset(0); - fHeadPageIdx = otherIdx; - } else { - fHeadPage[otherIdx].Reset(0); + std::swap(fHeadPageIdx, otherIdx); } + + R__ASSERT(fHeadPage[otherIdx].IsEmpty()); fPageSink->CommitPage(fHandleSink, fHeadPage[fHeadPageIdx]); fHeadPage[fHeadPageIdx].Reset(fNElements); } From 12cbb139bc57e6f15cab9564c4654ba8e9107ad5 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 28 Jul 2021 22:53:05 +0200 Subject: [PATCH 110/577] [ntuple] Add unit test to exercise page filling --- tree/ntuple/v7/test/ntuple_storage.cxx | 105 +++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/tree/ntuple/v7/test/ntuple_storage.cxx b/tree/ntuple/v7/test/ntuple_storage.cxx index 7d47ecef39229..fc6049ee2a0b8 100644 --- a/tree/ntuple/v7/test/ntuple_storage.cxx +++ b/tree/ntuple/v7/test/ntuple_storage.cxx @@ -114,6 +114,111 @@ TEST(RNTuple, InvalidWriteOptions) { } } +TEST(RNTuple, PageFilling) { + FileRaii fileGuard("test_ntuple_page_filling.root"); + + auto model = RNTupleModel::Create(); + auto fldX = model->MakeField("x"); + + RNTupleWriteOptions options; + // Exercises the page swapping algorithm with pages just big enough to hold 2 elements + options.SetApproxUnzippedPageSize(4); + + { + auto ntuple = RNTupleWriter::Recreate(std::move(model), "ntpl", fileGuard.GetPath(), options); + for (std::int16_t i = 0; i < 8; ++i) { + *fldX = i; + ntuple->Fill(); + // Flush half-full pages + if (i == 2) + ntuple->CommitCluster(); + // Flush just after automatic flush + if (i == 4) + ntuple->CommitCluster(); + } + } + + auto ntuple = RNTupleReader::Open("ntpl", fileGuard.GetPath()); + auto viewX = ntuple->GetView("x"); + ASSERT_EQ(8u, ntuple->GetNEntries()); + for (std::int16_t i = 0; i < 8; ++i) + EXPECT_EQ(i, viewX(i)); + + const auto &desc = ntuple->GetDescriptor(); + EXPECT_EQ(3u, desc.GetNClusters()); + const auto &cd1 = desc.GetClusterDescriptor(desc.FindClusterId(0, 0)); + const auto &pr1 = cd1.GetPageRange(0); + ASSERT_EQ(2u, pr1.fPageInfos.size()); + EXPECT_EQ(2u, pr1.fPageInfos[0].fNElements); + EXPECT_EQ(1u, pr1.fPageInfos[1].fNElements); + const auto &cd2 = desc.GetClusterDescriptor(desc.FindNextClusterId(cd1.GetId())); + const auto &pr2 = cd2.GetPageRange(0); + ASSERT_EQ(1u, pr2.fPageInfos.size()); + EXPECT_EQ(2u, pr2.fPageInfos[0].fNElements); + const auto &cd3 = desc.GetClusterDescriptor(desc.FindNextClusterId(cd2.GetId())); + const auto &pr3 = cd3.GetPageRange(0); + ASSERT_EQ(2u, pr3.fPageInfos.size()); + EXPECT_EQ(2u, pr3.fPageInfos[0].fNElements); + EXPECT_EQ(1u, pr3.fPageInfos[1].fNElements); +} + +TEST(RNTuple, PageFillingString) { + FileRaii fileGuard("test_ntuple_page_filling_string.root"); + + auto model = RNTupleModel::Create(); + // A string column exercises RColumn::AppendV + auto fldX = model->MakeField("x"); + + RNTupleWriteOptions options; + options.SetApproxUnzippedPageSize(16); + + { + auto ntuple = RNTupleWriter::Recreate(std::move(model), "ntpl", fileGuard.GetPath(), options); + // 1 page: 17 characters + *fldX = "01234567890123456"; + ntuple->Fill(); + ntuple->CommitCluster(); + // 1 pages: 16 characters + *fldX = "0123456789012345"; + ntuple->Fill(); + ntuple->CommitCluster(); + // 0 pages + *fldX = ""; + ntuple->Fill(); + ntuple->CommitCluster(); + // 2 pages: 16 and 8 characters + *fldX = "012345678901234567890123"; + ntuple->Fill(); + } + + auto ntuple = RNTupleReader::Open("ntpl", fileGuard.GetPath()); + auto viewX = ntuple->GetView("x"); + ASSERT_EQ(4u, ntuple->GetNEntries()); + EXPECT_EQ("01234567890123456", viewX(0)); + EXPECT_EQ("0123456789012345", viewX(1)); + EXPECT_EQ("", viewX(2)); + EXPECT_EQ("012345678901234567890123", viewX(3)); + + const auto &desc = ntuple->GetDescriptor(); + EXPECT_EQ(4u, desc.GetNClusters()); + const auto &cd1 = desc.GetClusterDescriptor(desc.FindClusterId(1, 0)); + const auto &pr1 = cd1.GetPageRange(1); + ASSERT_EQ(1u, pr1.fPageInfos.size()); + EXPECT_EQ(17u, pr1.fPageInfos[0].fNElements); + const auto &cd2 = desc.GetClusterDescriptor(desc.FindNextClusterId(cd1.GetId())); + const auto &pr2 = cd2.GetPageRange(1); + ASSERT_EQ(1u, pr2.fPageInfos.size()); + EXPECT_EQ(16u, pr2.fPageInfos[0].fNElements); + const auto &cd3 = desc.GetClusterDescriptor(desc.FindNextClusterId(cd2.GetId())); + const auto &pr3 = cd3.GetPageRange(1); + ASSERT_EQ(0u, pr3.fPageInfos.size()); + const auto &cd4 = desc.GetClusterDescriptor(desc.FindNextClusterId(cd3.GetId())); + const auto &pr4 = cd4.GetPageRange(1); + ASSERT_EQ(2u, pr4.fPageInfos.size()); + EXPECT_EQ(16u, pr4.fPageInfos[0].fNElements); + EXPECT_EQ(8u, pr4.fPageInfos[1].fNElements); +} + TEST(RPageSinkBuf, Basics) { struct TestModel { From 450f25ba2589d2532f9c08f7e52c48c8b96c5a28 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 15 Sep 2021 14:55:02 +0200 Subject: [PATCH 111/577] [ntuple, NFC] Minor improvement to documentation Co-authored-by: Philippe Canal --- tree/ntuple/v7/doc/tuning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/doc/tuning.md b/tree/ntuple/v7/doc/tuning.md index 8d0cee9308f2d..f0f72058a668e 100644 --- a/tree/ntuple/v7/doc/tuning.md +++ b/tree/ntuple/v7/doc/tuning.md @@ -43,4 +43,4 @@ If a column has enough elements to fill at least half a page, there is a mechani writing uses two page buffers in turns and flushes the previous buffer only once the next buffer is at least at 50%. If the cluster gets flushed with an undersized tail page, the small page is appended to the previous page before flushing. -Therefore, tail pages sizes are between [0.5 * target size .. 1.5 * target size]. +Therefore, tail pages sizes are between `[0.5 * target size .. 1.5 * target size]`. From 34622ca40028080890ca35c61fddae353003cbfd Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 15 Sep 2021 15:16:13 +0200 Subject: [PATCH 112/577] [ntuple, NFC] Code comment improvement --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 960b6689f0f1e..2178d1b378446 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -78,7 +78,7 @@ private: /// Used in Append() and AppendV() to switch pages when the main page reached the target size /// The other page has been flushed when the main page reached 50%. void SwapHeadPages() { - fHeadPageIdx = 1 - fHeadPageIdx; + fHeadPageIdx = 1 - fHeadPageIdx; // == (fHeadPageIdx + 1) % 2 R__ASSERT(fHeadPage[fHeadPageIdx].IsEmpty()); fHeadPage[fHeadPageIdx].Reset(fNElements); } From 9958fd045507578ae2001ceae45a72f2b5d20390 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Wed, 15 Sep 2021 15:37:16 +0200 Subject: [PATCH 113/577] [ntuple] Add assert on expected file format version --- tree/ntuple/v7/src/RPageStorage.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/tree/ntuple/v7/src/RPageStorage.cxx b/tree/ntuple/v7/src/RPageStorage.cxx index ce34eac6b93be..687f4a85596c3 100644 --- a/tree/ntuple/v7/src/RPageStorage.cxx +++ b/tree/ntuple/v7/src/RPageStorage.cxx @@ -353,6 +353,7 @@ std::uint64_t ROOT::Experimental::Detail::RPageSink::CommitCluster(ROOT::Experim ClusterSize_t(nEntries - fPrevClusterNEntries)); // TODO(jblomer): Remove me with the v1 Serialization // For now, we set a non-zero locator to make sure current reading code does not choke + R__ASSERT(RNTupleDescriptor::kFrameVersionCurrent < 1); fDescriptorBuilder.SetClusterLocator(fLastClusterId, RClusterDescriptor::RLocator({0, 1, ""})); for (auto &range : fOpenColumnRanges) { fDescriptorBuilder.AddClusterColumnRange(fLastClusterId, range); From 8dee04a4c66f42b42bd12f07eb25ba87f39d33f8 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:25:32 +0200 Subject: [PATCH 114/577] [ntuple, NFC] Fix typo in code comment Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/inc/ROOT/RPage.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RPage.hxx b/tree/ntuple/v7/inc/ROOT/RPage.hxx index 928e14deca20a..e827d7a8f054b 100644 --- a/tree/ntuple/v7/inc/ROOT/RPage.hxx +++ b/tree/ntuple/v7/inc/ROOT/RPage.hxx @@ -104,7 +104,7 @@ public: void* GetBuffer() const { return fBuffer; } /// Called during writing: returns a pointer after the last element and increases the element counter - /// in anticpation of the caller filling nElements in the page. It is the responsibility of the caller + /// in anticipation of the caller filling nElements in the page. It is the responsibility of the caller /// to prevent page overflows, i.e. that fNElements + nElements <= fMaxElements void* GrowUnchecked(ClusterSize_t::ValueType nElements) { auto offset = GetNBytes(); From 6e5508bbd5cf8876a63877248a98fe02de9293b9 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:26:34 +0200 Subject: [PATCH 115/577] [ntuple, NFC] Improve code comment Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 2178d1b378446..577b6030300a0 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -60,7 +60,7 @@ private: RPage fHeadPage[2]; /// Index of the current head page int fHeadPageIdx = 0; - /// For writing, the targeted page size as given by the write options. + /// For writing, the targeted number of elements, given by `fApproxNElementsPerPage` (in the write options) and the element size. /// We ensure this value to be >= 2 in Connect() so that we have meaningful /// "page full" and "page half full" events when writing the page. std::uint32_t fApproxNElementsPerPage = 0; From a9983b06d4aef31f2fa205aec5d687ca7c040171 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:27:12 +0200 Subject: [PATCH 116/577] [ntuple, NFC] Fix typo in code comment Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 577b6030300a0..cb32e3532cbf9 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -55,7 +55,7 @@ private: /// A set of open pages into which new elements are being written. The pages are used /// in rotation. They are 50% bigger than the target size given by the write options. /// The current page is filled until the target size, but it is only committed once the other - /// head page is filled at least 50%. If a flush occurs earlier, a slightly oversize, single + /// head page is filled at least 50%. If a flush occurs earlier, a slightly oversized, single /// page will be committed. RPage fHeadPage[2]; /// Index of the current head page From 92f31e74b7756d025939323bed936726fab37474 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:30:47 +0200 Subject: [PATCH 117/577] [ntuple] Fix typo in error message Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/src/RNTupleOptions.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RNTupleOptions.cxx b/tree/ntuple/v7/src/RNTupleOptions.cxx index 60f3c1beb3aa1..2dee33baeaf2b 100644 --- a/tree/ntuple/v7/src/RNTupleOptions.cxx +++ b/tree/ntuple/v7/src/RNTupleOptions.cxx @@ -31,7 +31,7 @@ void EnsureValidTunables(std::size_t zippedClusterSize, std::size_t unzippedClus "maximum uncompressed cluster size")); } if (unzippedPageSize > unzippedClusterSize) { - throw RException(R__FAIL("compressed target page size must not be larger than " + throw RException(R__FAIL("target page size must not be larger than " "maximum uncompressed cluster size")); } if (unzippedPageSize == 0) { From 07221eae742921c7f028e90ac0ee3b536c50bf67 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:33:04 +0200 Subject: [PATCH 118/577] [ntuple] Clarify constness of local variable Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/src/RNTuple.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 986962208ec48..775bba27e5a2c 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -296,7 +296,7 @@ ROOT::Experimental::RNTupleWriter::RNTupleWriter( const auto &writeOpts = fSink->GetWriteOptions(); fMaxUnzippedClusterSize = writeOpts.GetMaxUnzippedClusterSize(); // First estimate is a factor 2 compression if compression is used at all - int scale = writeOpts.GetCompression() ? 2 : 1; + const int scale = writeOpts.GetCompression() ? 2 : 1; fUnzippedClusterSizeEst = scale * writeOpts.GetApproxZippedClusterSize(); } From 1686e86f1d7a5f6953391000e2cf47e78f7ead3e Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:34:05 +0200 Subject: [PATCH 119/577] [ntuple] Clarify constness of local variable Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/src/RNTuple.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 775bba27e5a2c..09a2aedc349d3 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -337,7 +337,7 @@ void ROOT::Experimental::RNTupleWriter::CommitCluster() field.Flush(); field.CommitCluster(); } - float nbytes = fSink->CommitCluster(fNEntries); + const float nbytes = fSink->CommitCluster(fNEntries); // Cap the compression factor at 1000 to prevent overflow of fMinUnzippedClusterSizeEst float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); fUnzippedClusterSizeEst = From 6dafc5f00b30ea2dc6f740ec6cf505dc37dd9147 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:34:35 +0200 Subject: [PATCH 120/577] [ntuple] Clarify constness of local variable Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/src/RNTuple.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 09a2aedc349d3..30ccfbd35cb51 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -339,7 +339,7 @@ void ROOT::Experimental::RNTupleWriter::CommitCluster() } const float nbytes = fSink->CommitCluster(fNEntries); // Cap the compression factor at 1000 to prevent overflow of fMinUnzippedClusterSizeEst - float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); + const float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); fUnzippedClusterSizeEst = compressionFactor * static_cast(fSink->GetWriteOptions().GetApproxZippedClusterSize()); From 7a39221c570048f0ef92fe9ef9a40f5ed5ec2d6e Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:35:57 +0200 Subject: [PATCH 121/577] [ntuple] More concise implementation of RPageSinkDaos::CommitSealedPageImpl --- tree/ntuple/v7/src/RPageStorageDaos.cxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tree/ntuple/v7/src/RPageStorageDaos.cxx b/tree/ntuple/v7/src/RPageStorageDaos.cxx index 7bd7e1e4297e9..8c01411647e35 100644 --- a/tree/ntuple/v7/src/RPageStorageDaos.cxx +++ b/tree/ntuple/v7/src/RPageStorageDaos.cxx @@ -196,9 +196,7 @@ ROOT::Experimental::Detail::RPageSinkDaos::CommitSealedPageImpl( std::uint64_t ROOT::Experimental::Detail::RPageSinkDaos::CommitClusterImpl(ROOT::Experimental::NTupleSize_t /* nEntries */) { - auto result = fNBytesCurrentCluster; - fNBytesCurrentCluster = 0; - return result; + return std::exchange(fNBytesCurrentCluster, 0); } From cacbddac1787dea0bdf8a66e4b0a178bb0483acc Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:46:25 +0200 Subject: [PATCH 122/577] [ntuple] Improve input check ordering in RNTupleWriteOptions --- tree/ntuple/v7/src/RNTupleOptions.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tree/ntuple/v7/src/RNTupleOptions.cxx b/tree/ntuple/v7/src/RNTupleOptions.cxx index 2dee33baeaf2b..ce441e8e3cc8d 100644 --- a/tree/ntuple/v7/src/RNTupleOptions.cxx +++ b/tree/ntuple/v7/src/RNTupleOptions.cxx @@ -26,6 +26,9 @@ void EnsureValidTunables(std::size_t zippedClusterSize, std::size_t unzippedClus if (zippedClusterSize == 0) { throw RException(R__FAIL("invalid target cluster size: 0")); } + if (unzippedPageSize == 0) { + throw RException(R__FAIL("invalid target page size: 0")); + } if (zippedClusterSize > unzippedClusterSize) { throw RException(R__FAIL("compressed target cluster size must not be larger than " "maximum uncompressed cluster size")); @@ -34,9 +37,6 @@ void EnsureValidTunables(std::size_t zippedClusterSize, std::size_t unzippedClus throw RException(R__FAIL("target page size must not be larger than " "maximum uncompressed cluster size")); } - if (unzippedPageSize == 0) { - throw RException(R__FAIL("invalid target page size: 0")); - } } } // anonymous namespace From b354651a473c05b3baf03d4308b80a2e31d7f962 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 09:53:05 +0200 Subject: [PATCH 123/577] [ntuple] Remove unnecessary include --- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 1 - 1 file changed, 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index 7a4048170d30f..106c23489a76a 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -17,7 +17,6 @@ #define ROOT7_RNTupleOptions #include -#include #include #include From 0c5b59223b4e6214491f4c11490d6403090a71ce Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 10:10:37 +0200 Subject: [PATCH 124/577] [ntuple] Rename RColumn::fHeadPage --> RColumn::fWritePage --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 34 +++++++++++++-------------- tree/ntuple/v7/src/RColumn.cxx | 36 ++++++++++++++--------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index cb32e3532cbf9..4566458f50bb8 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -57,9 +57,9 @@ private: /// The current page is filled until the target size, but it is only committed once the other /// head page is filled at least 50%. If a flush occurs earlier, a slightly oversized, single /// page will be committed. - RPage fHeadPage[2]; + RPage fWritePage[2]; /// Index of the current head page - int fHeadPageIdx = 0; + int fWritePageIdx = 0; /// For writing, the targeted number of elements, given by `fApproxNElementsPerPage` (in the write options) and the element size. /// We ensure this value to be >= 2 in Connect() so that we have meaningful /// "page full" and "page half full" events when writing the page. @@ -78,20 +78,20 @@ private: /// Used in Append() and AppendV() to switch pages when the main page reached the target size /// The other page has been flushed when the main page reached 50%. void SwapHeadPages() { - fHeadPageIdx = 1 - fHeadPageIdx; // == (fHeadPageIdx + 1) % 2 - R__ASSERT(fHeadPage[fHeadPageIdx].IsEmpty()); - fHeadPage[fHeadPageIdx].Reset(fNElements); + fWritePageIdx = 1 - fWritePageIdx; // == (fWritePageIdx + 1) % 2 + R__ASSERT(fWritePage[fWritePageIdx].IsEmpty()); + fWritePage[fWritePageIdx].Reset(fNElements); } /// When the main head page surpasses the 50% fill level, the (full) shadow head page gets flushed void FlushShadowHeadPage() { - auto otherIdx = 1 - fHeadPageIdx; - if (fHeadPage[otherIdx].IsEmpty()) + auto otherIdx = 1 - fWritePageIdx; + if (fWritePage[otherIdx].IsEmpty()) return; - fPageSink->CommitPage(fHandleSink, fHeadPage[otherIdx]); + fPageSink->CommitPage(fHandleSink, fWritePage[otherIdx]); // Mark the page as flushed; the rangeFirst is zero for now but will be reset to // fNElements in SwapHeadPages() when the pages swap - fHeadPage[otherIdx].Reset(0); + fWritePage[otherIdx].Reset(0); } public: @@ -110,22 +110,22 @@ public: void Connect(DescriptorId_t fieldId, RPageStorage *pageStorage); void Append(const RColumnElementBase &element) { - void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(1); + void *dst = fWritePage[fWritePageIdx].GrowUnchecked(1); - if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage / 2) { + if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage / 2) { FlushShadowHeadPage(); } element.WriteTo(dst, 1); fNElements++; - if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) + if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) SwapHeadPages(); } void AppendV(const RColumnElementBase &elemArray, std::size_t count) { // We might not have enough space in the current page. In this case, fall back to one by one filling. - if (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage) { + if (fWritePage[fWritePageIdx].GetNElements() + count > fApproxNElementsPerPage) { // TODO(jblomer): use (fewer) calls to AppendV to write the data page-by-page for (unsigned i = 0; i < count; ++i) { Append(RColumnElementBase(elemArray, i)); @@ -133,13 +133,13 @@ public: return; } - void *dst = fHeadPage[fHeadPageIdx].GrowUnchecked(count); + void *dst = fWritePage[fWritePageIdx].GrowUnchecked(count); // The check for flushing the shadow page is more complicated than for the Append() case // because we don't necessarily fill up to exactly fApproxNElementsPerPage / 2 elements; // we might instead jump over the 50% fill level - if ((fHeadPage[fHeadPageIdx].GetNElements() <= fApproxNElementsPerPage / 2) && - (fHeadPage[fHeadPageIdx].GetNElements() + count > fApproxNElementsPerPage / 2)) + if ((fWritePage[fWritePageIdx].GetNElements() <= fApproxNElementsPerPage / 2) && + (fWritePage[fWritePageIdx].GetNElements() + count > fApproxNElementsPerPage / 2)) { FlushShadowHeadPage(); } @@ -148,7 +148,7 @@ public: fNElements += count; // Note that by the very first check, we cannot have filled more than fApproxNElementsPerPage elements - if (fHeadPage[fHeadPageIdx].GetNElements() == fApproxNElementsPerPage) + if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) SwapHeadPages(); } diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index d9da1315e27c0..3a8f128efb17d 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -28,10 +28,10 @@ ROOT::Experimental::Detail::RColumn::RColumn(const RColumnModel& model, std::uin ROOT::Experimental::Detail::RColumn::~RColumn() { - if (!fHeadPage[0].IsNull()) - fPageSink->ReleasePage(fHeadPage[0]); - if (!fHeadPage[1].IsNull()) - fPageSink->ReleasePage(fHeadPage[1]); + if (!fWritePage[0].IsNull()) + fPageSink->ReleasePage(fWritePage[0]); + if (!fWritePage[1].IsNull()) + fPageSink->ReleasePage(fWritePage[1]); if (!fCurrentPage.IsNull()) fPageSource->ReleasePage(fCurrentPage); if (fHandleSink) @@ -44,14 +44,14 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS { switch (pageStorage->GetType()) { case EPageStorageType::kSink: - fPageSink = static_cast(pageStorage); // the page sink initializes fHeadPage on AddColumn + fPageSink = static_cast(pageStorage); // the page sink initializes fWritePage on AddColumn fHandleSink = fPageSink->AddColumn(fieldId, *this); fApproxNElementsPerPage = fPageSink->GetWriteOptions().GetApproxUnzippedPageSize() / fElement->GetSize(); if (fApproxNElementsPerPage < 2) throw RException(R__FAIL("page size too small for writing")); // We now have 0 < fApproxNElementsPerPage / 2 < fApproxNElementsPerPage - fHeadPage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); - fHeadPage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); + fWritePage[0] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); + fWritePage[1] = fPageSink->ReservePage(fHandleSink, fApproxNElementsPerPage + fApproxNElementsPerPage / 2); break; case EPageStorageType::kSource: fPageSource = static_cast(pageStorage); @@ -66,22 +66,22 @@ void ROOT::Experimental::Detail::RColumn::Connect(DescriptorId_t fieldId, RPageS void ROOT::Experimental::Detail::RColumn::Flush() { - auto otherIdx = 1 - fHeadPageIdx; - if (fHeadPage[fHeadPageIdx].IsEmpty() && fHeadPage[otherIdx].IsEmpty()) + auto otherIdx = 1 - fWritePageIdx; + if (fWritePage[fWritePageIdx].IsEmpty() && fWritePage[otherIdx].IsEmpty()) return; - if ((fHeadPage[fHeadPageIdx].GetNElements() < fApproxNElementsPerPage / 2) && !fHeadPage[otherIdx].IsEmpty()) { + if ((fWritePage[fWritePageIdx].GetNElements() < fApproxNElementsPerPage / 2) && !fWritePage[otherIdx].IsEmpty()) { // Small tail page: merge with previously used page; we know that there is enough space in the shadow page - void *dst = fHeadPage[otherIdx].GrowUnchecked(fHeadPage[fHeadPageIdx].GetNElements()); - RColumnElementBase elem(fHeadPage[fHeadPageIdx].GetBuffer(), fHeadPage[fHeadPageIdx].GetElementSize()); - elem.WriteTo(dst, fHeadPage[fHeadPageIdx].GetNElements()); - fHeadPage[fHeadPageIdx].Reset(0); - std::swap(fHeadPageIdx, otherIdx); + void *dst = fWritePage[otherIdx].GrowUnchecked(fWritePage[fWritePageIdx].GetNElements()); + RColumnElementBase elem(fWritePage[fWritePageIdx].GetBuffer(), fWritePage[fWritePageIdx].GetElementSize()); + elem.WriteTo(dst, fWritePage[fWritePageIdx].GetNElements()); + fWritePage[fWritePageIdx].Reset(0); + std::swap(fWritePageIdx, otherIdx); } - R__ASSERT(fHeadPage[otherIdx].IsEmpty()); - fPageSink->CommitPage(fHandleSink, fHeadPage[fHeadPageIdx]); - fHeadPage[fHeadPageIdx].Reset(fNElements); + R__ASSERT(fWritePage[otherIdx].IsEmpty()); + fPageSink->CommitPage(fHandleSink, fWritePage[fWritePageIdx]); + fWritePage[fWritePageIdx].Reset(fNElements); } void ROOT::Experimental::Detail::RColumn::MapPage(const NTupleSize_t index) From ba1c9df1eeec9fa094e4df58b096e268a18a42e9 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 10:16:10 +0200 Subject: [PATCH 125/577] [ntuple] Rename RColumn::fCurrentPage --> RColumn::fReadPage --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 68 ++++++++++++++--------------- tree/ntuple/v7/src/RColumn.cxx | 12 ++--- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 4566458f50bb8..6114fe31d9781 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -67,7 +67,7 @@ private: /// The number of elements written resp. available in the column NTupleSize_t fNElements = 0; /// The currently mapped page for reading - RPage fCurrentPage; + RPage fReadPage; /// The column id is used to find matching pages with content when reading ColumnId_t fColumnIdSource = kInvalidColumnId; /// Used to pack and unpack pages on writing/reading @@ -153,36 +153,36 @@ public: } void Read(const NTupleSize_t globalIndex, RColumnElementBase *element) { - if (!fCurrentPage.Contains(globalIndex)) { + if (!fReadPage.Contains(globalIndex)) { MapPage(globalIndex); - R__ASSERT(fCurrentPage.Contains(globalIndex)); + R__ASSERT(fReadPage.Contains(globalIndex)); } - void *src = static_cast(fCurrentPage.GetBuffer()) + - (globalIndex - fCurrentPage.GetGlobalRangeFirst()) * element->GetSize(); + void *src = static_cast(fReadPage.GetBuffer()) + + (globalIndex - fReadPage.GetGlobalRangeFirst()) * element->GetSize(); element->ReadFrom(src, 1); } void Read(const RClusterIndex &clusterIndex, RColumnElementBase *element) { - if (!fCurrentPage.Contains(clusterIndex)) { + if (!fReadPage.Contains(clusterIndex)) { MapPage(clusterIndex); } - void *src = static_cast(fCurrentPage.GetBuffer()) + - (clusterIndex.GetIndex() - fCurrentPage.GetClusterRangeFirst()) * element->GetSize(); + void *src = static_cast(fReadPage.GetBuffer()) + + (clusterIndex.GetIndex() - fReadPage.GetClusterRangeFirst()) * element->GetSize(); element->ReadFrom(src, 1); } void ReadV(const NTupleSize_t globalIndex, const ClusterSize_t::ValueType count, RColumnElementBase *elemArray) { R__ASSERT(count > 0); - if (!fCurrentPage.Contains(globalIndex)) { + if (!fReadPage.Contains(globalIndex)) { MapPage(globalIndex); } - NTupleSize_t idxInPage = globalIndex - fCurrentPage.GetGlobalRangeFirst(); + NTupleSize_t idxInPage = globalIndex - fReadPage.GetGlobalRangeFirst(); - void *src = static_cast(fCurrentPage.GetBuffer()) + idxInPage * elemArray->GetSize(); - if (globalIndex + count <= fCurrentPage.GetGlobalRangeLast() + 1) { + void *src = static_cast(fReadPage.GetBuffer()) + idxInPage * elemArray->GetSize(); + if (globalIndex + count <= fReadPage.GetGlobalRangeLast() + 1) { elemArray->ReadFrom(src, count); } else { - ClusterSize_t::ValueType nBatch = fCurrentPage.GetNElements() - idxInPage; + ClusterSize_t::ValueType nBatch = fReadPage.GetNElements() - idxInPage; elemArray->ReadFrom(src, nBatch); RColumnElementBase elemTail(*elemArray, nBatch); ReadV(globalIndex + nBatch, count - nBatch, &elemTail); @@ -191,16 +191,16 @@ public: void ReadV(const RClusterIndex &clusterIndex, const ClusterSize_t::ValueType count, RColumnElementBase *elemArray) { - if (!fCurrentPage.Contains(clusterIndex)) { + if (!fReadPage.Contains(clusterIndex)) { MapPage(clusterIndex); } - NTupleSize_t idxInPage = clusterIndex.GetIndex() - fCurrentPage.GetClusterRangeFirst(); + NTupleSize_t idxInPage = clusterIndex.GetIndex() - fReadPage.GetClusterRangeFirst(); - void* src = static_cast(fCurrentPage.GetBuffer()) + idxInPage * elemArray->GetSize(); - if (clusterIndex.GetIndex() + count <= fCurrentPage.GetClusterRangeLast() + 1) { + void* src = static_cast(fReadPage.GetBuffer()) + idxInPage * elemArray->GetSize(); + if (clusterIndex.GetIndex() + count <= fReadPage.GetClusterRangeLast() + 1) { elemArray->ReadFrom(src, count); } else { - ClusterSize_t::ValueType nBatch = fCurrentPage.GetNElements() - idxInPage; + ClusterSize_t::ValueType nBatch = fReadPage.GetNElements() - idxInPage; elemArray->ReadFrom(src, nBatch); RColumnElementBase elemTail(*elemArray, nBatch); ReadV(RClusterIndex(clusterIndex.GetClusterId(), clusterIndex.GetIndex() + nBatch), count - nBatch, &elemTail); @@ -221,41 +221,41 @@ public: template CppT *MapV(const NTupleSize_t globalIndex, NTupleSize_t &nItems) { - if (!fCurrentPage.Contains(globalIndex)) { + if (!fReadPage.Contains(globalIndex)) { MapPage(globalIndex); } // +1 to go from 0-based indexing to 1-based number of items - nItems = fCurrentPage.GetGlobalRangeLast() - globalIndex + 1; + nItems = fReadPage.GetGlobalRangeLast() - globalIndex + 1; return reinterpret_cast( - static_cast(fCurrentPage.GetBuffer()) + - (globalIndex - fCurrentPage.GetGlobalRangeFirst()) * RColumnElement::kSize); + static_cast(fReadPage.GetBuffer()) + + (globalIndex - fReadPage.GetGlobalRangeFirst()) * RColumnElement::kSize); } template CppT *MapV(const RClusterIndex &clusterIndex, NTupleSize_t &nItems) { - if (!fCurrentPage.Contains(clusterIndex)) { + if (!fReadPage.Contains(clusterIndex)) { MapPage(clusterIndex); } // +1 to go from 0-based indexing to 1-based number of items - nItems = fCurrentPage.GetClusterRangeLast() - clusterIndex.GetIndex() + 1; + nItems = fReadPage.GetClusterRangeLast() - clusterIndex.GetIndex() + 1; return reinterpret_cast( - static_cast(fCurrentPage.GetBuffer()) + - (clusterIndex.GetIndex() - fCurrentPage.GetClusterRangeFirst()) * RColumnElement::kSize); + static_cast(fReadPage.GetBuffer()) + + (clusterIndex.GetIndex() - fReadPage.GetClusterRangeFirst()) * RColumnElement::kSize); } NTupleSize_t GetGlobalIndex(const RClusterIndex &clusterIndex) { - if (!fCurrentPage.Contains(clusterIndex)) { + if (!fReadPage.Contains(clusterIndex)) { MapPage(clusterIndex); } - return fCurrentPage.GetClusterInfo().GetIndexOffset() + clusterIndex.GetIndex(); + return fReadPage.GetClusterInfo().GetIndexOffset() + clusterIndex.GetIndex(); } RClusterIndex GetClusterIndex(NTupleSize_t globalIndex) { - if (!fCurrentPage.Contains(globalIndex)) { + if (!fReadPage.Contains(globalIndex)) { MapPage(globalIndex); } - return RClusterIndex(fCurrentPage.GetClusterInfo().GetId(), - globalIndex - fCurrentPage.GetClusterInfo().GetIndexOffset()); + return RClusterIndex(fReadPage.GetClusterInfo().GetId(), + globalIndex - fReadPage.GetClusterInfo().GetIndexOffset()); } /// For offset columns only, look at the two adjacent values that define a collection's coordinates @@ -263,13 +263,13 @@ public: { auto idxStart = (globalIndex == 0) ? 0 : *Map(globalIndex - 1); auto idxEnd = *Map(globalIndex); - auto selfOffset = fCurrentPage.GetClusterInfo().GetIndexOffset(); + auto selfOffset = fReadPage.GetClusterInfo().GetIndexOffset(); if (globalIndex == selfOffset) { // Passed cluster boundary idxStart = 0; } *collectionSize = idxEnd - idxStart; - *collectionStart = RClusterIndex(fCurrentPage.GetClusterInfo().GetId(), idxStart); + *collectionStart = RClusterIndex(fReadPage.GetClusterInfo().GetId(), idxStart); } void GetCollectionInfo(const RClusterIndex &clusterIndex, @@ -285,7 +285,7 @@ public: /// Get the currently active cluster id void GetSwitchInfo(NTupleSize_t globalIndex, RClusterIndex *varIndex, std::uint32_t *tag) { auto varSwitch = Map(globalIndex); - *varIndex = RClusterIndex(fCurrentPage.GetClusterInfo().GetId(), varSwitch->GetIndex()); + *varIndex = RClusterIndex(fReadPage.GetClusterInfo().GetId(), varSwitch->GetIndex()); *tag = varSwitch->GetTag(); } diff --git a/tree/ntuple/v7/src/RColumn.cxx b/tree/ntuple/v7/src/RColumn.cxx index 3a8f128efb17d..9bb216a82b940 100644 --- a/tree/ntuple/v7/src/RColumn.cxx +++ b/tree/ntuple/v7/src/RColumn.cxx @@ -32,8 +32,8 @@ ROOT::Experimental::Detail::RColumn::~RColumn() fPageSink->ReleasePage(fWritePage[0]); if (!fWritePage[1].IsNull()) fPageSink->ReleasePage(fWritePage[1]); - if (!fCurrentPage.IsNull()) - fPageSource->ReleasePage(fCurrentPage); + if (!fReadPage.IsNull()) + fPageSource->ReleasePage(fReadPage); if (fHandleSink) fPageSink->DropColumn(fHandleSink); if (fHandleSource) @@ -86,12 +86,12 @@ void ROOT::Experimental::Detail::RColumn::Flush() void ROOT::Experimental::Detail::RColumn::MapPage(const NTupleSize_t index) { - fPageSource->ReleasePage(fCurrentPage); - fCurrentPage = fPageSource->PopulatePage(fHandleSource, index); + fPageSource->ReleasePage(fReadPage); + fReadPage = fPageSource->PopulatePage(fHandleSource, index); } void ROOT::Experimental::Detail::RColumn::MapPage(const RClusterIndex &clusterIndex) { - fPageSource->ReleasePage(fCurrentPage); - fCurrentPage = fPageSource->PopulatePage(fHandleSource, clusterIndex); + fPageSource->ReleasePage(fReadPage); + fReadPage = fPageSource->PopulatePage(fHandleSource, clusterIndex); } From 6b56833ad6c24d1023726c15aa8d35e5ff82b5fd Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 10:25:57 +0200 Subject: [PATCH 126/577] [ntuple, NFC] Fix code comment --- tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx index 106c23489a76a..8908769f5811c 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleOptions.hxx @@ -57,7 +57,7 @@ class RNTupleWriteOptions { /// Should be just large enough so that the compression ratio does not benefit much more from larger pages. /// Unless the cluster is too small to contain a sufficiently large page, pages are /// fApproxUnzippedPageSize in size and tail pages (the last page in a cluster) is between - /// fApproxUnzippedPageSize/2 and fApproxUnzippedPageSize * 2 in size. + /// fApproxUnzippedPageSize/2 and fApproxUnzippedPageSize * 1.5 in size. std::size_t fApproxUnzippedPageSize = 64 * 1024; bool fUseBufferedWrite = true; From 8d70ac6232ff0929347c8129c2f3402cafb7cedd Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 11:09:28 +0200 Subject: [PATCH 127/577] [ntuple] Rename RColumn::SwapHeadPages --> RColumn::SwapWritePages --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 6114fe31d9781..67e6e9b23d096 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -77,7 +77,7 @@ private: /// Used in Append() and AppendV() to switch pages when the main page reached the target size /// The other page has been flushed when the main page reached 50%. - void SwapHeadPages() { + void SwapWritePages() { fWritePageIdx = 1 - fWritePageIdx; // == (fWritePageIdx + 1) % 2 R__ASSERT(fWritePage[fWritePageIdx].IsEmpty()); fWritePage[fWritePageIdx].Reset(fNElements); @@ -90,7 +90,7 @@ private: return; fPageSink->CommitPage(fHandleSink, fWritePage[otherIdx]); // Mark the page as flushed; the rangeFirst is zero for now but will be reset to - // fNElements in SwapHeadPages() when the pages swap + // fNElements in SwapWritePages() when the pages swap fWritePage[otherIdx].Reset(0); } @@ -120,7 +120,7 @@ public: fNElements++; if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) - SwapHeadPages(); + SwapWritePages(); } void AppendV(const RColumnElementBase &elemArray, std::size_t count) { @@ -149,7 +149,7 @@ public: // Note that by the very first check, we cannot have filled more than fApproxNElementsPerPage elements if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) - SwapHeadPages(); + SwapWritePages(); } void Read(const NTupleSize_t globalIndex, RColumnElementBase *element) { From a9ca7dc8777b5579e0c4aad3c7ec2a3322fc6664 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 11:13:39 +0200 Subject: [PATCH 128/577] [ntuple] Rename RColumn::FlushShadowHeadPage --> RColumn::FlushShadowWritePage --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 67e6e9b23d096..2d50ea74c784d 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -55,10 +55,10 @@ private: /// A set of open pages into which new elements are being written. The pages are used /// in rotation. They are 50% bigger than the target size given by the write options. /// The current page is filled until the target size, but it is only committed once the other - /// head page is filled at least 50%. If a flush occurs earlier, a slightly oversized, single + /// write page is filled at least 50%. If a flush occurs earlier, a slightly oversized, single /// page will be committed. RPage fWritePage[2]; - /// Index of the current head page + /// Index of the current write page int fWritePageIdx = 0; /// For writing, the targeted number of elements, given by `fApproxNElementsPerPage` (in the write options) and the element size. /// We ensure this value to be >= 2 in Connect() so that we have meaningful @@ -83,8 +83,8 @@ private: fWritePage[fWritePageIdx].Reset(fNElements); } - /// When the main head page surpasses the 50% fill level, the (full) shadow head page gets flushed - void FlushShadowHeadPage() { + /// When the main write page surpasses the 50% fill level, the (full) shadow write page gets flushed + void FlushShadowWritePage() { auto otherIdx = 1 - fWritePageIdx; if (fWritePage[otherIdx].IsEmpty()) return; @@ -113,7 +113,7 @@ public: void *dst = fWritePage[fWritePageIdx].GrowUnchecked(1); if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage / 2) { - FlushShadowHeadPage(); + FlushShadowWritePage(); } element.WriteTo(dst, 1); @@ -141,7 +141,7 @@ public: if ((fWritePage[fWritePageIdx].GetNElements() <= fApproxNElementsPerPage / 2) && (fWritePage[fWritePageIdx].GetNElements() + count > fApproxNElementsPerPage / 2)) { - FlushShadowHeadPage(); + FlushShadowWritePage(); } elemArray.WriteTo(dst, count); From 1a230ba3bf79ad213819f3b0385d21e208d46969 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 11:26:25 +0200 Subject: [PATCH 129/577] [ntuple] Consolidate check for full pages in RColumn --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 2d50ea74c784d..aed035357a387 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -16,6 +16,7 @@ #ifndef ROOT7_RColumn #define ROOT7_RColumn +#include // for R__likely #include #include #include @@ -77,7 +78,10 @@ private: /// Used in Append() and AppendV() to switch pages when the main page reached the target size /// The other page has been flushed when the main page reached 50%. - void SwapWritePages() { + void SwapWritePagesIfFull() { + if (R__likely(fWritePage[fWritePageIdx].GetNElements() < fApproxNElementsPerPage)) + return; + fWritePageIdx = 1 - fWritePageIdx; // == (fWritePageIdx + 1) % 2 R__ASSERT(fWritePage[fWritePageIdx].IsEmpty()); fWritePage[fWritePageIdx].Reset(fNElements); @@ -90,7 +94,7 @@ private: return; fPageSink->CommitPage(fHandleSink, fWritePage[otherIdx]); // Mark the page as flushed; the rangeFirst is zero for now but will be reset to - // fNElements in SwapWritePages() when the pages swap + // fNElements in SwapWritePagesIfFull() when the pages swap fWritePage[otherIdx].Reset(0); } @@ -119,8 +123,7 @@ public: element.WriteTo(dst, 1); fNElements++; - if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) - SwapWritePages(); + SwapWritePagesIfFull(); } void AppendV(const RColumnElementBase &elemArray, std::size_t count) { @@ -138,8 +141,8 @@ public: // The check for flushing the shadow page is more complicated than for the Append() case // because we don't necessarily fill up to exactly fApproxNElementsPerPage / 2 elements; // we might instead jump over the 50% fill level - if ((fWritePage[fWritePageIdx].GetNElements() <= fApproxNElementsPerPage / 2) && - (fWritePage[fWritePageIdx].GetNElements() + count > fApproxNElementsPerPage / 2)) + if ((fWritePage[fWritePageIdx].GetNElements() < fApproxNElementsPerPage / 2) && + (fWritePage[fWritePageIdx].GetNElements() + count >= fApproxNElementsPerPage / 2)) { FlushShadowWritePage(); } @@ -147,9 +150,8 @@ public: elemArray.WriteTo(dst, count); fNElements += count; - // Note that by the very first check, we cannot have filled more than fApproxNElementsPerPage elements - if (fWritePage[fWritePageIdx].GetNElements() == fApproxNElementsPerPage) - SwapWritePages(); + // Note that by the very first check in AppendV, we cannot have filled more than fApproxNElementsPerPage elements + SwapWritePagesIfFull(); } void Read(const NTupleSize_t globalIndex, RColumnElementBase *element) { From afe34953a181f717ed2a7f643e96ba886e2e6203 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 17 Sep 2021 12:04:55 +0200 Subject: [PATCH 130/577] [ntuple, NFC] Add discussion section on compressed cluster size estimator --- tree/ntuple/v7/doc/tuning.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tree/ntuple/v7/doc/tuning.md b/tree/ntuple/v7/doc/tuning.md index f0f72058a668e..a65bdc882b0af 100644 --- a/tree/ntuple/v7/doc/tuning.md +++ b/tree/ntuple/v7/doc/tuning.md @@ -21,6 +21,7 @@ when the current cluster is larger than the maximum uncompressed size, it will b When the current cluster size reaches the estimate for the compressed cluster size, it will be flushed, too. The estimated compression ratio for the first cluster is 0.5 if compression is used, and 1 otherwise. The following clusters use the compression ratio of the last cluster as estimate. +See the notes below on a discussion of this approximation. Page Sizes @@ -44,3 +45,31 @@ writing uses two page buffers in turns and flushes the previous buffer only once If the cluster gets flushed with an undersized tail page, the small page is appended to the previous page before flushing. Therefore, tail pages sizes are between `[0.5 * target size .. 1.5 * target size]`. + + +Notes +===== + +Approximation of the compressed cluster size +-------------------------------------------- + +The estimator for the compressed cluster size uses the compression factor of the previously written cluster. +This has been choosen as a simple, yet (expectedly) accurate enough estimator. +The following alternative strategies were discussed: + + - The average compression factor of all so-far written pages. + Easy to implement. + It would better prevent outlier clusters from skewing the estimate of the successor clusters. + It would be slower though in adjusting to systematic changes in the data set, + e.g. ones that are caused by changing experimental conditions during data taking + + - The average over a window of the last $k$ clusters, possibly with exponential smoothing. + More accurate than just the last cluster but also more code to implement. + Could be a viable option if cluster compression ratios turn out to change significantly. + + - Calculate the cluster compression ratio from column-based individual estimators. + More complex to implement and to recalculate the estimator on every fill, + requires additional state for every column. + One might reduce the additional state and complexity by only applying the fine-grained estimator for collections. + Such an estimator would react better to a sudden change in the amount of data written for collections / columns + that have substentially different compression ratios. From d0bda4c9fc667119d5fd4ceb4ab31647f22937fb Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Sun, 19 Sep 2021 13:14:54 +0200 Subject: [PATCH 131/577] [ntuple] Use avg compression ratio of all clusters as estimate for next --- tree/ntuple/v7/doc/tuning.md | 15 +++++++++------ tree/ntuple/v7/inc/ROOT/RNTuple.hxx | 5 +++++ tree/ntuple/v7/src/RNTuple.cxx | 9 ++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/tree/ntuple/v7/doc/tuning.md b/tree/ntuple/v7/doc/tuning.md index a65bdc882b0af..2514795444302 100644 --- a/tree/ntuple/v7/doc/tuning.md +++ b/tree/ntuple/v7/doc/tuning.md @@ -10,7 +10,7 @@ The default can be changed by the `RNTupleWriteOptions`. The default should work well in the majority of cases. In general, larger clusters provide room for more and larger pages and should improve compression ratio and speed. However, clusters also need to be buffered during write and (partially) during read, -so larger cluster increase the memory footprint. +so larger clusters increase the memory footprint. A second option in `RNTupleWriteOptions` specifies the maximum uncompressed cluster size. The default is 512MiB. @@ -20,7 +20,7 @@ Given the two settings, writing works as follows: when the current cluster is larger than the maximum uncompressed size, it will be flushed unconditionally. When the current cluster size reaches the estimate for the compressed cluster size, it will be flushed, too. The estimated compression ratio for the first cluster is 0.5 if compression is used, and 1 otherwise. -The following clusters use the compression ratio of the last cluster as estimate. +The following clusters use the average compression ratio of all so-far written clusters as an estimate. See the notes below on a discussion of this approximation. @@ -53,8 +53,9 @@ Notes Approximation of the compressed cluster size -------------------------------------------- -The estimator for the compressed cluster size uses the compression factor of the previously written cluster. -This has been choosen as a simple, yet (expectedly) accurate enough estimator. +The estimator for the compressed cluster size uses the average compression factor +of the so far written clusters. +This has been choosen as a simple, yet expectedly accurate enough estimator (to be validated). The following alternative strategies were discussed: - The average compression factor of all so-far written pages. @@ -64,8 +65,10 @@ The following alternative strategies were discussed: e.g. ones that are caused by changing experimental conditions during data taking - The average over a window of the last $k$ clusters, possibly with exponential smoothing. - More accurate than just the last cluster but also more code to implement. - Could be a viable option if cluster compression ratios turn out to change significantly. + More code compared to the average compression factor or all so-far written clusters. + It would be faster in adjusting to systematic changes in the data set, + e.g. ones that are caused by changing experimental conditions during data taking. + Could be a viable option if cluster compression ratios turn out to change significantly in a single file. - Calculate the cluster compression ratio from column-based individual estimators. More complex to implement and to recalculate the estimator on every fill, diff --git a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx index 81d482438878a..11119aa527aa8 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTuple.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTuple.hxx @@ -361,6 +361,11 @@ private: NTupleSize_t fNEntries = 0; /// Keeps track of the number of bytes written into the current cluster std::size_t fUnzippedClusterSize = 0; + /// The total number of bytes written to storage (i.e., after compression) + std::uint64_t fNBytesCommitted = 0; + /// The total number of bytes filled into all the so far committed clusters, + /// i.e. the uncompressed size of the written clusters + std::uint64_t fNBytesFilled = 0; /// Limit for committing cluster no matter the other tunables std::size_t fMaxUnzippedClusterSize; /// Estimator of uncompressed cluster size, taking into account the estimated compression ratio diff --git a/tree/ntuple/v7/src/RNTuple.cxx b/tree/ntuple/v7/src/RNTuple.cxx index 30ccfbd35cb51..5f0ab20650ee7 100644 --- a/tree/ntuple/v7/src/RNTuple.cxx +++ b/tree/ntuple/v7/src/RNTuple.cxx @@ -337,9 +337,12 @@ void ROOT::Experimental::RNTupleWriter::CommitCluster() field.Flush(); field.CommitCluster(); } - const float nbytes = fSink->CommitCluster(fNEntries); - // Cap the compression factor at 1000 to prevent overflow of fMinUnzippedClusterSizeEst - const float compressionFactor = std::min(1000.f, static_cast(fUnzippedClusterSize) / nbytes); + fNBytesCommitted += fSink->CommitCluster(fNEntries); + fNBytesFilled += fUnzippedClusterSize; + + // Cap the compression factor at 1000 to prevent overflow of fUnzippedClusterSizeEst + const float compressionFactor = std::min(1000.f, + static_cast(fNBytesFilled) / static_cast(fNBytesCommitted)); fUnzippedClusterSizeEst = compressionFactor * static_cast(fSink->GetWriteOptions().GetApproxZippedClusterSize()); From 61124f23898c91256536ee2b08fe6019404f706a Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Sun, 19 Sep 2021 13:21:56 +0200 Subject: [PATCH 132/577] [ntuple, doc] Add validation checklist stub --- tree/ntuple/v7/doc/validation.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 tree/ntuple/v7/doc/validation.md diff --git a/tree/ntuple/v7/doc/validation.md b/tree/ntuple/v7/doc/validation.md new file mode 100644 index 0000000000000..fdaf9a2393101 --- /dev/null +++ b/tree/ntuple/v7/doc/validation.md @@ -0,0 +1,13 @@ +RNTuple Format and API Validation +================================= + +This document is a stub. +It is meant to be edited during the RNTuple development phase until its transition into production. +The document should collect observables that need to be tested and verified +during the large-scale validation of RNTuple (we foresee test with petabyte-scale of volume and >10^5 files). + +Checks +------ + +- Automatic sizing of cluster and page sizes: + check page size and cluster size histograms From a7a2a3311945983353dc6a2916bdd2ffc0bc4bc6 Mon Sep 17 00:00:00 2001 From: Simon Spies <5320187+Triple-S@users.noreply.github.com> Date: Tue, 21 Sep 2021 15:14:09 +0200 Subject: [PATCH 133/577] Graph Errorbar Offsets for new Marker Styles and Thick Markers (#9015) * Update TGraphPainter.cxx Added relative marker sizes to truncate graph error bars for new markers (35 - 49) and for markers with linewidths > 1. Furthermore, some values of existing markers were slightly adjusted. * Update TGraphPainter.cxx Fixed the error offsets in TGraphPainter for marker style 49. * Update THistPainter.cxx Added the errorbar offsets used already by TGraphPainter for different marker styles since some markers are in x- or y- direction more narrow than the reserved bounding box. --- hist/histpainter/src/TGraphPainter.cxx | 32 +++++++++++++------------- hist/histpainter/src/THistPainter.cxx | 16 +++++++++---- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/hist/histpainter/src/TGraphPainter.cxx b/hist/histpainter/src/TGraphPainter.cxx index 7098ecfa4401e..33aeb3d299e87 100644 --- a/hist/histpainter/src/TGraphPainter.cxx +++ b/hist/histpainter/src/TGraphPainter.cxx @@ -2420,8 +2420,8 @@ void TGraphPainter::PaintGraphAsymmErrors(TGraph *theGraph, Option_t *option) const Int_t kBASEMARKER=8; Double_t s2x, s2y, symbolsize, sbase; Double_t x, y, xl1, xl2, xr1, xr2, yup1, yup2, ylow1, ylow2, tx, ty; - static Float_t cxx[15] = {1,1,0.6,0.6,1,1,0.6,0.5,1,0.6,0.6,1,0.6,1,1}; - static Float_t cyy[15] = {1,1,1,1,1,1,1,1,1,0.5,0.6,1,1,1,1}; + static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; + static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; Int_t theNpoints = theGraph->GetN(); Double_t *theX = theGraph->GetX(); Double_t *theY = theGraph->GetY(); @@ -2487,10 +2487,10 @@ void TGraphPainter::PaintGraphAsymmErrors(TGraph *theGraph, Option_t *option) symbolsize = theGraph->GetMarkerSize(); sbase = symbolsize*kBASEMARKER; - Int_t mark = theGraph->GetMarkerStyle(); + Int_t mark = TAttMarker::GetMarkerStyleBase(theGraph->GetMarkerStyle()); Double_t cx = 0; Double_t cy = 0; - if (mark >= 20 && mark <= 34) { + if (mark >= 20 && mark <= 49) { cx = cxx[mark-20]; cy = cyy[mark-20]; } @@ -2704,8 +2704,8 @@ void TGraphPainter::PaintGraphMultiErrors(TGraph *theGraph, Option_t *option) const Int_t kBASEMARKER = 8; Double_t s2x, s2y, symbolsize, sbase; Double_t x, y, xl1, xl2, xr1, xr2, yup1, yup2, ylow1, ylow2, tx, ty; - static Float_t cxx[15] = {1., 1., 0.6, 0.6, 1., 1., 0.6, 0.5, 1., 0.6, 0.6, 1., 0.6, 1., 1.}; - static Float_t cyy[15] = {1., 1., 1., 1., 1., 1., 1., 1., 1., 0.5, 0.6, 1., 1., 1., 1.}; + static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; + static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; Int_t theNpoints = tg->GetN(); Double_t *theX = tg->GetX(); Double_t *theY = tg->GetY(); @@ -2864,11 +2864,11 @@ void TGraphPainter::PaintGraphMultiErrors(TGraph *theGraph, Option_t *option) symbolsize = tg->GetMarkerSize(); sbase = symbolsize * kBASEMARKER; - Int_t mark = tg->GetMarkerStyle(); + Int_t mark = TAttMarker::GetMarkerStyleBase(tg->GetMarkerStyle()); Double_t cx = 0.; Double_t cy = 0.; - if (mark >= 20 && mark <= 34) { + if (mark >= 20 && mark <= 49) { cx = cxx[mark - 20]; cy = cyy[mark - 20]; } @@ -3138,8 +3138,8 @@ void TGraphPainter::PaintGraphBentErrors(TGraph *theGraph, Option_t *option) Double_t s2x, s2y, symbolsize, sbase; Double_t x, y, xl1, xl2, xr1, xr2, yup1, yup2, ylow1, ylow2, tx, ty; Double_t bxl, bxh, byl, byh; - static Float_t cxx[15] = {1,1,0.6,0.6,1,1,0.6,0.5,1,0.6,0.6,1,0.6,1,1}; - static Float_t cyy[15] = {1,1,1,1,1,1,1,1,1,0.5,0.6,1,1,1,1}; + static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; + static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; Int_t theNpoints = theGraph->GetN(); Double_t *theX = theGraph->GetX(); Double_t *theY = theGraph->GetY(); @@ -3209,10 +3209,10 @@ void TGraphPainter::PaintGraphBentErrors(TGraph *theGraph, Option_t *option) symbolsize = theGraph->GetMarkerSize(); sbase = symbolsize*kBASEMARKER; - Int_t mark = theGraph->GetMarkerStyle(); + Int_t mark = TAttMarker::GetMarkerStyleBase(theGraph->GetMarkerStyle()); Double_t cx = 0; Double_t cy = 0; - if (mark >= 20 && mark <= 34) { + if (mark >= 20 && mark <= 49) { cx = cxx[mark-20]; cy = cyy[mark-20]; } @@ -3393,8 +3393,8 @@ void TGraphPainter::PaintGraphErrors(TGraph *theGraph, Option_t *option) const Int_t kBASEMARKER=8; Double_t s2x, s2y, symbolsize, sbase; Double_t x, y, ex, ey, xl1, xl2, xr1, xr2, yup1, yup2, ylow1, ylow2, tx, ty; - static Float_t cxx[15] = {1,1,0.6,0.6,1,1,0.6,0.5,1,0.6,0.6,1,0.6,1,1}; - static Float_t cyy[15] = {1,1,1,1,1,1,1,1,1,0.5,0.6,1,1,1,1}; + static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; + static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; Int_t theNpoints = theGraph->GetN(); Double_t *theX = theGraph->GetX(); Double_t *theY = theGraph->GetY(); @@ -3458,10 +3458,10 @@ void TGraphPainter::PaintGraphErrors(TGraph *theGraph, Option_t *option) symbolsize = theGraph->GetMarkerSize(); sbase = symbolsize*kBASEMARKER; - Int_t mark = theGraph->GetMarkerStyle(); + Int_t mark = TAttMarker::GetMarkerStyleBase(theGraph->GetMarkerStyle()); Double_t cx = 0; Double_t cy = 0; - if (mark >= 20 && mark <= 34) { + if (mark >= 20 && mark <= 49) { cx = cxx[mark-20]; cy = cyy[mark-20]; } diff --git a/hist/histpainter/src/THistPainter.cxx b/hist/histpainter/src/THistPainter.cxx index d56239458b12a..a49a493583be0 100644 --- a/hist/histpainter/src/THistPainter.cxx +++ b/hist/histpainter/src/THistPainter.cxx @@ -6319,7 +6319,7 @@ void THistPainter::PaintErrors(Option_t *) const Int_t kBASEMARKER=8; Double_t xp, yp, ex1, ex2, ey1, ey2; Double_t delta; - Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbase; + Double_t s2x, s2y, bxsize, bysize, symbolsize, xerror, sbasex, sbasey; Double_t xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4; Double_t xmin, xmax, ymin, ymax; Double_t logxmin = 0; @@ -6331,6 +6331,8 @@ void THistPainter::PaintErrors(Option_t *) Int_t if2 = 0; Int_t drawmarker, errormarker; Int_t option0, option1, option2, option3, option4, optionE, optionEX0, optionI0; + static Float_t cxx[30] = {1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.6,1.0,0.5,0.5,1.0,0.5,0.6,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; + static Float_t cyy[30] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,1.0,0.5,0.5,0.5,1.0}; Double_t *xline = 0; Double_t *yline = 0; @@ -6352,7 +6354,7 @@ void THistPainter::PaintErrors(Option_t *) offset = fH->GetBarOffset(); width = fH->GetBarWidth(); - errormarker = fH->GetMarkerStyle(); + errormarker = TAttMarker::GetMarkerStyleBase(fH->GetMarkerStyle()); if (optionEX0) { xerror = 0; } else { @@ -6360,7 +6362,11 @@ void THistPainter::PaintErrors(Option_t *) } symbolsize = fH->GetMarkerSize(); if (errormarker == 1) symbolsize = 0.01; - sbase = symbolsize*kBASEMARKER; + sbasex = sbasey = symbolsize*kBASEMARKER; + if (errormarker >= 20 && errormarker <= 49) { + sbasex *= cxx[errormarker-20]; + sbasey *= cyy[errormarker-20]; + } // set the graphics attributes fH->TAttLine::Modify(); @@ -6391,8 +6397,8 @@ void THistPainter::PaintErrors(Option_t *) } // compute the offset of the error bars due to the symbol size - s2x = gPad->PixeltoX(Int_t(0.5*sbase)) - gPad->PixeltoX(0); - s2y =-gPad->PixeltoY(Int_t(0.5*sbase)) + gPad->PixeltoY(0); + s2x = gPad->PixeltoX(Int_t(0.5*sbasex)) - gPad->PixeltoX(0); + s2y =-gPad->PixeltoY(Int_t(0.5*sbasey)) + gPad->PixeltoY(0); // compute size of the lines at the end of the error bars Int_t dxend = Int_t(gStyle->GetEndErrorSize()); From 8cac072e2e770746b1833df49e4936a72669bcb8 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 21 Sep 2021 21:55:02 +0200 Subject: [PATCH 134/577] Add missing header (-Ddev). --- roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx index 8d61ab0697cbf..937de18ce237b 100644 --- a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx +++ b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx @@ -26,6 +26,7 @@ #include #include #include +#include #include From 4cfe8f1ec96f17c5667379f07645a0965beb0d00 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 14 Jul 2021 09:30:31 +0200 Subject: [PATCH 135/577] [DF] Implement a C++ workflow generator for DistRDF workers This is a first stab to an optimized DF workflow generator in the DistRDF workers. The optimization consists in generating the C++ code of the workflow, compile it with ACLiC and execute it. A compiled workflow might be faster than its purely jitted version. The optimized mode coexists with the old (jitted) mode, which is the default. To enable the optimized mode the following flag can be used: ROOT.RDF.Experimental.Distributed.optimized = True --- .../distrdf/python/DistRDF/Backends/Base.py | 41 +- .../DistRDF/ComputationGraphGenerator.py | 73 +++ .../distrdf/python/DistRDF/CppWorkflow.py | 512 ++++++++++++++++++ .../distrdf/python/DistRDF/__init__.py | 3 + .../python/ROOT/pythonization/_rdataframe.py | 92 +++- tree/dataframe/inc/ROOT/RResultHandle.hxx | 9 + 6 files changed, 698 insertions(+), 32 deletions(-) create mode 100644 bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py diff --git a/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py b/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py index 1cd33941399af..e53eee2ac640c 100644 --- a/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py +++ b/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py @@ -117,9 +117,15 @@ def execute(self, generator): given RDataFrame object and a range of entries. The range is needed for the `Snapshot` operation. """ - headnode = generator.headnode - computation_graph_callable = generator.get_callable() + # Check if the workflow must be generated in optimized mode + optimized = ROOT.RDF.Experimental.Distributed.optimized + + if optimized: + computation_graph_callable = generator.get_callable_optimized() + else: + computation_graph_callable = generator.get_callable() + headnode = generator.headnode if isinstance(headnode, TreeHeadNode): maintreename = headnode.maintreename defaultbranches = headnode.defaultbranches @@ -228,16 +234,31 @@ def mapper(current_range): # user, then limit processing to the entries in this range. rdf = ROOT.RDataFrame(nentries).Range(current_range.start, current_range.end) + if optimized: + # Create the RDF computation graph and execute it on this ranged + # dataset. The results of the actions of the graph and their types + # are returned + results, res_types = computation_graph_callable(rdf, current_range.id) + + # Get RResultPtrs out of the type-erased RResultHandles by + # instantiating with the type of the value + mergeables = [ + ROOT.ROOT.Detail.RDF.GetMergeableValue(res.GetResultPtr[res_type]()) + if isinstance(res, ROOT.RDF.RResultHandle) + else res + for res, res_type in zip(results, res_types) + ] + else: + # Output of the callable + resultptr_list = computation_graph_callable(rdf, current_range.id) - # Output of the callable - resultptr_list = computation_graph_callable(rdf, current_range.id) + mergeables = [ + resultptr # Here resultptr is already the result value + if isinstance(resultptr, (dict, list)) + else ROOT.ROOT.Detail.RDF.GetMergeableValue(resultptr) + for resultptr in resultptr_list + ] - mergeables = [ - resultptr # Here resultptr is already the result value - if isinstance(resultptr, (dict, list)) - else ROOT.ROOT.Detail.RDF.GetMergeableValue(resultptr) - for resultptr in resultptr_list - ] return mergeables def reducer(mergeables_out, mergeables_in): diff --git a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py index fb28e5ac6f612..16e79e38c5a45 100644 --- a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py +++ b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py @@ -10,6 +10,14 @@ # For the list of contributors see $ROOTSYS/README/CREDITS. # ################################################################################ +import logging + +import ROOT +from .CppWorkflow import CppWorkflow + +logger = logging.getLogger(__name__) + + class ComputationGraphGenerator(object): """ Class that generates a callable to parse a DistRDF graph. @@ -143,3 +151,68 @@ def generate_computation_graph(node_cpp, range_id, node_py=None): return return_vals return generate_computation_graph + + def get_callable_optimized(self): + """ + Converts a given graph into a callable and returns the same. + The callable is optimized to execute the graph with compiled C++ + performance. + + Returns: + function: The callable that takes in a PyROOT RDataFrame object + and executes all operations from the DistRDF graph + on it, recursively. + """ + # Prune the graph to check user references + self.headnode.graph_prune() + + def run_computation_graph(rdf_node, range_id): + """ + The callable that traverses the DistRDF graph nodes, generates the + code to create the same graph in C++, compiles it and runs it. + This function triggers the event loop via the CppWorkflow class. + + Args: + rdf_node (ROOT.RDF.RNode): The main RDataFrame node on which + the graph will be executed. + range_id (int): Id of the current range. Needed to assign a name + to a partial Snapshot output file. + + Returns: + tuple: the first element is the list of results of the actions + in the C++ workflow, the second element is the list of + result types corresponding to those actions. + """ + + py_headnode = self.headnode + cpp_workflow = CppWorkflow() + parent_idx = 0 + + # Recurse over children nodes + for py_node in py_headnode.children: + explore_graph(py_node, cpp_workflow, range_id, parent_idx) + + logger.debug("Generated C++ workflow is:\n{}".format(cpp_workflow)) + + return cpp_workflow.execute(ROOT.RDF.AsRNode(rdf_node)) + + def explore_graph(py_node, cpp_workflow, range_id, parent_idx): + """ + Recursively traverses the DistRDF graph nodes in DFS order and, + for each of them, adds a new node to the C++ workflow. + + Args: + py_node (Node): Object that contains the information to add the + corresponding node to the C++ workflow. + cpp_workflow (CppWorkflow): Object that encapsulates the creation + of the C++ workflow graph. + range_id (int): Id of the current range. Needed to assign a name to a + partial Snapshot output file. + parent_idx (int): Index of the parent node in the C++ workflow. + """ + node_idx = cpp_workflow.add_node(py_node.operation, range_id, parent_idx) + + for child_node in py_node.children: + explore_graph(child_node, cpp_workflow, range_id, node_idx) + + return run_computation_graph diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py new file mode 100644 index 0000000000000..2ebbacfa0f684 --- /dev/null +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -0,0 +1,512 @@ +# @author Enric Tejedor +# @date 2021-07 + +################################################################################ +# Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. # +# All rights reserved. # +# # +# For the licensing terms see $ROOTSYS/LICENSE. # +# For the list of contributors see $ROOTSYS/README/CREDITS. # +################################################################################ + +import os +from collections import namedtuple + +import ROOT +RunGraphs = ROOT.RDF.RunGraphs + +class CppWorkflow(object): + ''' + Class that encapsulates the generation of the code of an RDataFrame workflow + in C++, together with its compilation into a shared library and execution. + + This class is used by worker processes to execute in C++ the RDataFrame + graph they receive. This is done for the sake of performance, since running + the graph from Python necessarily relies on jitted code, which is less + optimized and thus slower than a shared library compiled with ACLiC. + + Attributes: + action_res_types (dict): result types for each supported action. + + cached_wfs (set): ids of workflow functions that have been already + compiled and loaded by the current process. Used to prevent + recompilation of already executed workflow functions. + + FUNCTION_NAME (string): name of the function that encapsulates the + RDataFrame graph creation + + FUNCTION_NAMESPACE (string): namespace of the function that + encapsulates the RDataFrame graph creation + + graph_nodes (list): statements that add nodes to the graph. + + includes (list): include statements needed by the workflow. + + lambdas (list): lambda functions used by the workflow. + + lambda_id (int): counter used to generate ids for each defined lambda + function. + + node_id (int): counter used to generate ids for each graph node. + + py_actions (list): list that contains PyActionData pairs + `(res_id,operation)`, where `res_id` is the Python action result + index in the vector of workflow results and `operation` is the + Operation object corresponding to the action. + + res_ptr_id (int): counter used to generate ids for each result generated + by graph actions. + + snapshots (list): list that contains SnapshotData pairs + `(res_id,filename)`, where `res_id` is the Snapshot result index in + the vector of workflow results and `filename` is its modified output + file name. + ''' + + FUNCTION_NAME = 'GenerateGraph' + FUNCTION_NAMESPACE = 'DistRDF_Internal' + + cached_wfs = set() + + SnapshotData = namedtuple('SnapshotData', ['res_id', 'filename']) + PyActionData = namedtuple('PyActionData', ['res_id', 'operation']) + + class ListWithLifeline(list): + ''' + List-like helper class that is constructed from the elements stored in + an std::vector. Moreover, it stores a reference to the std::tuple that + contains the vector, so that the life of the tuple is tied to that + of the new list. + + Attributes: + v (std::vector): vector used to construct the list. + t (std::tuple): tuple that contains `v`. It must not be destroyed + before the list is. + ''' + def __init__(self, v, t): + super(CppWorkflow.ListWithLifeline, self).__init__() + for elem in v: + self.append(elem) + self.t = t # set lifeline for tuple + + def __init__(self): + ''' + Initializes the attributes used in the generation of the workflow. + ''' + + self.includes = ''' +#include "ROOT/RDataFrame.hxx" +#include "ROOT/RResultHandle.hxx" +#include "ROOT/RDFHelpers.hxx" + +#include +#include +''' + + self.lambdas = '' + self.lambda_id = 0 + + self.graph_nodes = '' + self.node_id = 1 # 0 is the parent node we receive + + self.res_ptr_id = 0 + + self.snapshots = [] + + self.py_actions = [] + + def add_include(self, header): + ''' + Adds a new include statement. + + Args: + header (str): header to be included. + ''' + + self.includes += '\n#include "{}"'.format(header) + + def add_lambda(self, lambda_code): + ''' + Adds a new lambda to be defined, which is needed by some operation + in the workflow. + + Args: + lambda_code (str): code of the lambda to be defined. + ''' + + self.lambdas += '\n auto rdf_lambda{n} = {code};' \ + .format(n=lambda_id, code=lambda_code) + self.lambda_id += 1 + + def add_node(self, operation, range_id, parent_id): + ''' + Adds the corresponding statement to add a new node in the RDataFrame + graph. What the statement returns depends on the type of the + operation: + - Transformation: the statement produces a new dataset node. + - Action: the statement returns an RResultPtr, which is added to a + vector of results to be returned at the end of the workflow + generation function. The type of the elements of the vector is + ROOT::RDF::RResultHandle to do type erasure since there could be + multiple booked actions with results of different types (e.g. integers, + TH1D, etc.). + + Args: + operation (Operation): object representing the operation to be added + to the graph. + + range_id (int): id of the current range. Needed to assign a name to + a partial Snapshot output file. + + parent_id (int): id of the parent node in this workflow. Used to + connect the new node to be added with its parent. + + Returns: + int: identifier of the node that was added to the graph + corresponding to its DFS order, if the operation is a + transformation, or None, if the operation is an action. + ''' + + # Operations that need special treatment + if operation.name == 'Snapshot': + self._handle_snapshot(operation, range_id) + elif operation.name == 'AsNumpy': + self._handle_asnumpy(operation, parent_id) + return None + + # Add operation node to the graph + self.graph_nodes += '\n ' + new_node_id = self.node_id + if operation.is_transformation(): + self.graph_nodes += 'auto rdf{}'.format(new_node_id) + else: # action or instant action + self.graph_nodes += 'auto res_ptr{}'.format(self.res_ptr_id) + + template_args = self._get_template_args(operation) + self.graph_nodes += ' = rdf{n}.{op_name}{templ_args}(' \ + .format(n=parent_id, op_name=operation.name, \ + templ_args=template_args) + self._process_args(operation) + self.graph_nodes += ');' + + if operation.is_transformation(): + self.node_id += 1 + else: + # Action or instant action + + # The result is stored in the vector of results to be returned + self.graph_nodes += '\n result_handles.emplace_back(res_ptr{});' \ + .format(self.res_ptr_id) + + # The result type is stored in the vector of result types to be + # returned + self.graph_nodes += \ + '\n auto c{} = TClass::GetClass(typeid(res_ptr{}));' \ + .format(self.res_ptr_id, self.res_ptr_id) + self.graph_nodes += \ + '\n result_types.emplace_back(c{}->GetName());' \ + .format(self.res_ptr_id) + + self.res_ptr_id += 1 + return None + + return new_node_id + + def _handle_snapshot(self, operation, range_id): + ''' + Does three extra settings needed for Snapshot nodes: + - Modifies the output file name to be of the form `filename_rangeid`, + since it is a partial snapshot for a given range. + - Stores the index of the returned vector in which the + result of this Snapshot is stored, together with the modified file + path. + + Args: + operation (Operation): object representing the operation to be added + to the graph. + + range_id (int): id of the current range. Needed to assign a name to + a partial Snapshot output file. + ''' + + # Modify file name + filename = operation.args[1].partition('.root')[0] + path_with_range = '{filename}_{rangeid}.root' \ + .format(filename=filename, rangeid=range_id) + operation.args[1] = path_with_range + + # Store Snapshot result index -> path + self.snapshots.append( + CppWorkflow.SnapshotData(self.res_ptr_id, path_with_range)) + + def _handle_asnumpy(self, operation, parent_id): + ''' + Since AsNumpy is a Python-only action, it can't be included in the + C++ workflow built by this class. Therefore, this function takes care + of saving the RDF node, generated in C++, on which an AsNumpy action + should be applied from Python. + This function also stores the index of the AsNumpy result in the final + list of results, where the index depends on the DFS traversal of the + computation graph. + + Args: + operation (Operation): object representing the AsNumpy operation + + parent_id (int): id of the parent node in this workflow. Used to + save that node in the vector of output nodes. + ''' + + self.py_actions.append(CppWorkflow.PyActionData(self.res_ptr_id, operation)) + self.graph_nodes += \ + '\n output_nodes.push_back(ROOT::RDF::AsRNode(rdf{}));' \ + .format(parent_id) + self.res_ptr_id += 1 + + def _get_template_args(self, operation): + ''' + Gets the template arguments with which to generate a given operation. + + Args: + operation (Operation): object representing the operation whose + template arguments need to be returned. + + Returns: + string: template arguments for this operation. + ''' + + # TODO: generate templated operations when possible, e.g. Max + + return '' + + def _process_args(self, operation): + ''' + Processes the arguments of an operation node. + + Args: + operation (Operation): object representing the operation whose + arguments need to be processed. + ''' + + # TODO + # - Do a more thorough type conversion + # - Use RDF helper functions to convert jitted strings to lambdas + + # Argument type conversion + for narg, arg in enumerate(operation.args): + if (narg > 0): + self.graph_nodes += ', ' + + if isinstance(arg, str): + self.graph_nodes += '"{}"'.format(arg) + elif isinstance(arg, tuple): + self.graph_nodes += '{' + for nelem, elem in enumerate(arg): + if nelem > 0: + self.graph_nodes += ',' + if isinstance(elem, str): + self.graph_nodes += '"{}"'.format(elem) + else: + self.graph_nodes += '{}'.format(elem) + self.graph_nodes += '}' + + # Make Snapshot lazy + # TODO: Do a proper processing of the args (user might have specified + # her own options object) + if operation.name == 'Snapshot': + self.graph_nodes += ', "", lazy_options' + + + def execute(self, rdf): + ''' + Compiles the workflow generation code and executes it. + + Args: + rdf (ROOT::RDF::RNode): object that represents the dataset on + which to execute the workflow. + + Returns: + tuple: the first element is the list of results of the actions in + the C++ workflow, the second element is the list of result types + corresponding to those actions. + ''' + + function_id = self._compile() + return self._run_function(rdf, function_id) + + def _compile(self): + ''' + Generates the workflow code C++ file and compiles it with ACLiC + into a shared library. The library is also loaded as part of the + `TSystem::CompileMacro` call. + + The name of the generated C++ file contains both a hash of its + code and the ID of the process that created it. This is done to + prevent clashes between multiple (non-sandboxed) worker processes + that try to write to the same file concurrently. + + A class-level cache keeps track of the workflows that have been already + compiled to prevent unncessary recompilation (e.g. when a worker + process runs multiple times the same workflow). + + Returns: + string: the id of the function to be executed. Such id is appended + to CppWorkflow.FUNCTION_NAME to prevent name clashes (a worker + process might compile and load multiple workflow functions). + A function id is mostly the hash of its code. + ''' + + # TODO: Make this function thread-safe? To support Dask threaded + # workers + + code = self._get_code() + code_hash = hash(code) + # A hash can be a negative value, replace '-' with '_' so it can be + # part of a function name + function_id = str(code_hash).replace('-', '_', 1) + if code_hash in CppWorkflow.cached_wfs: + # We already compiled and loaded a workflow function with this + # code. Return the id of that function + return function_id + + # We are trying to run this workflow for the first time in this + # process. First dump the code in a file with the right function name + cpp_file_name = 'rdfworkflow_{code_hash}_{pid}.cpp' \ + .format(code_hash=code_hash, pid=os.getpid()) + code = code.replace(CppWorkflow.FUNCTION_NAME, CppWorkflow.FUNCTION_NAME + function_id, 1) + with open(cpp_file_name, 'w') as f: + f.write(code) + + # Now compile and load the code + if not ROOT.gSystem.CompileMacro(cpp_file_name, 'O'): + raise RuntimeError( + 'Error compiling the RDataFrame workflow file: {}' \ + .format(cpp_file_name)) + + # Let the cache know there is a new workflow + CppWorkflow.cached_wfs.add(code_hash) + + return function_id + + def _run_function(self, rdf, function_id): + ''' + Runs the workflow generation function. + + Args: + rdf (ROOT::RDF::RNode): object that represents the dataset on + which to execute the workflow. + function_id (string): identifier of the workflow function to be + executed. + + Returns: + tuple: the first element is the list of results of the actions in + the C++ workflow, the second element is the list of result types + corresponding to those actions. + ''' + + ns = getattr(ROOT, CppWorkflow.FUNCTION_NAMESPACE) + func = getattr(ns, CppWorkflow.FUNCTION_NAME + function_id) + + # Run the workflow generator function + vectors = func(rdf) + v_results, v_res_types, v_nodes = vectors + + # Convert the vector of results into a list so that we can mix + # different types in it. + # The std::tuple `vectors` is passed as parameter to tie its life with + # that of the new list + results = self.ListWithLifeline(v_results, vectors) + + # Strip out the ROOT::RDF::RResultPtr<> part of the type + def get_result_type(s): + s = str(s) + pos = s.find('<') + if pos == -1: + raise RuntimeError( + 'Error parsing the result types of RDataFrame workflow') + return s[pos+1:-1].strip() + + res_types = [ get_result_type(elem) for elem in v_res_types ] + + # Add Python-only actions on their corresponding nodes + for (i, operation), n in zip(self.py_actions, v_nodes): + operation.kwargs['lazy'] = True # make it lazy + res = getattr(n, operation.name)(*operation.args, **operation.kwargs) + results.insert(i, res) + res_types.insert(i, None) # placeholder + + if v_results: + # We trigger the event loop here, so make sure we release the GIL + old_rg = RunGraphs.__release_gil__ + RunGraphs.__release_gil__ = True + RunGraphs(v_results) + RunGraphs.__release_gil__ = old_rg + + # Replace the RResultHandle of each Snapshot by its modified output + # path, since the latter is what we actually need in the reducer + for i, path in self.snapshots: + results[i] = [path] + res_types[i] = None # placeholder + + # Replace the future-like result of every Python-only action (e.g. + # AsNumpyResult) by its actual value + for i, operation in self.py_actions: + results[i] = results[i].GetValue() + + return results, res_types + + def __repr__(self): + ''' + Generates a string representation for this C++ workflow. + + Returns: + string: code of this C++ workflow. + ''' + + return self._get_code() + + def _get_code(self): + ''' + Composes the workflow generation code from the different attributes + of this class. The resulting code contains a function that will be + called to generate the RDataFrame graph. Such function returns a tuple + of three elements: + 1. A vector of results of the graph actions. + 2. A vector with the result types of those actions. + 3. A vector of RDF nodes that will be used in Python to invoke + Python-only actions on them (e.g. `AsNumpy`). + ''' + + code = ''' +{includes} + +namespace {namespace} {{ + +typedef std::tuple, + std::vector, + std::vector> + CppWorkflowResult; + +CppWorkflowResult {func_name}(ROOT::RDF::RNode &rdf0) +{{ + std::vector result_handles; + std::vector result_types; + std::vector output_nodes; + + // To make Snapshots lazy + ROOT::RDF::RSnapshotOptions lazy_options; + lazy_options.fLazy = true; + +{lambdas} + +{nodes} + + return {{ result_handles, result_types, output_nodes }}; +}} + +}} +'''.format(func_name=CppWorkflow.FUNCTION_NAME, + namespace=CppWorkflow.FUNCTION_NAMESPACE, + includes=self.includes, lambdas=self.lambdas, nodes=self.graph_nodes) + + return code + diff --git a/bindings/experimental/distrdf/python/DistRDF/__init__.py b/bindings/experimental/distrdf/python/DistRDF/__init__.py index f9f405fc3094f..d9d7357c12d75 100644 --- a/bindings/experimental/distrdf/python/DistRDF/__init__.py +++ b/bindings/experimental/distrdf/python/DistRDF/__init__.py @@ -85,4 +85,7 @@ def create_distributed_module(parentmodule): distributed.initialize = initialize distributed.create_logger = create_logger + # Set non-optimized default mode + distributed.optimized = False + return distributed diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py index 61d8ef9eaf303..bab24618109d4 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py @@ -25,7 +25,7 @@ def __get__(self, instance, owner): return partial(self.func, instance, *(self.args or ()), **(self.keywords or {})) -def RDataFrameAsNumpy(df, columns=None, exclude=None): +def RDataFrameAsNumpy(df, columns=None, exclude=None, lazy=False): """Read-out the RDataFrame as a collection of numpy arrays. The values of the dataframe are read out as numpy array of the respective type @@ -45,9 +45,12 @@ def RDataFrameAsNumpy(df, columns=None, exclude=None): Parameters: columns: If None return all branches as columns, otherwise specify names in iterable. exclude: Exclude branches from selection. + lazy: Determines whether this action is instant (False, default) or lazy (True). Returns: - dict: Dict with column names as keys and 1D numpy arrays with content as values + dict or AsNumpyResult: if instant (default), dict with column names as keys and + 1D numpy arrays with content as values; if lazy, AsNumpyResult containing + the result pointers obtained from the Take actions. """ # Sanitize input arguments if isinstance(columns, str): @@ -55,13 +58,6 @@ def RDataFrameAsNumpy(df, columns=None, exclude=None): if isinstance(exclude, str): raise TypeError("The exclude argument requires a list of strings") - # Import numpy and numpy.array derived class lazily - try: - import numpy - from ROOT.pythonization._rdf_utils import ndarray - except: - raise ImportError("Failed to import numpy during call of RDataFrame.AsNumpy.") - # Find all column names in the dataframe if no column are specified if not columns: columns = [str(c) for c in df.GetColumnNames()] @@ -77,20 +73,72 @@ def RDataFrameAsNumpy(df, columns=None, exclude=None): column_type = df.GetColumnType(column) result_ptrs[column] = df.Take[column_type](column) - # Convert the C++ vectors to numpy arrays - py_arrays = {} - for column in columns: - cpp_reference = result_ptrs[column].GetValue() - if hasattr(cpp_reference, "__array_interface__"): - tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. - py_arrays[column] = ndarray(tmp, result_ptrs[column]) - else: - tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) - for i, x in enumerate(cpp_reference): - tmp[i] = x # This creates only the wrapping of the objects and does not copy. - py_arrays[column] = ndarray(tmp, result_ptrs[column]) + result = AsNumpyResult(result_ptrs, columns) + + if lazy: + return result + else: + return result.GetValue() - return py_arrays + +class AsNumpyResult(object): + """Future-like class that represents the result of an AsNumpy call. + + Provides AsNumpy with laziness when it comes to triggering the event loop. + + Attributes: + columns (list): list of the names of the columns returned by + AsNumpy. + py_arrays (dict): results of the AsNumpy action. The key is the + column name, the value is the NumPy array for that column. + result_ptrs (dict): results of the AsNumpy action. The key is the + column name, the value is the result pointer for that column. + """ + def __init__(self, result_ptrs, columns): + """Constructs an AsNumpyResult object. + + Parameters: + result_ptrs (dict): results of the AsNumpy action. The key is the + column name, the value is the result pointer for that column. + columns (list): list of the names of the columns returned by + AsNumpy. + """ + + self.result_ptrs = result_ptrs + self.columns = columns + self.py_arrays = None + + def GetValue(self): + """Triggers, if necessary, the event loop to run the Take actions for + the requested columns and produce the NumPy arrays as result. + + Returns: + dict: key is the column name, value is the NumPy array for that + column. + """ + + if self.py_arrays is None: + # Import numpy and numpy.array derived class lazily + try: + import numpy + from ROOT.pythonization._rdf_utils import ndarray + except: + raise ImportError("Failed to import numpy during call of RDataFrame.AsNumpy.") + + # Convert the C++ vectors to numpy arrays + self.py_arrays = {} + for column in self.columns: + cpp_reference = self.result_ptrs[column].GetValue() + if hasattr(cpp_reference, "__array_interface__"): + tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. + self.py_arrays[column] = ndarray(tmp, self.result_ptrs[column]) + else: + tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) + for i, x in enumerate(cpp_reference): + tmp[i] = x # This creates only the wrapping of the objects and does not copy. + self.py_arrays[column] = ndarray(tmp, self.result_ptrs[column]) + + return self.py_arrays def _histo_profile(self, fixed_args, *args): diff --git a/tree/dataframe/inc/ROOT/RResultHandle.hxx b/tree/dataframe/inc/ROOT/RResultHandle.hxx index e836eb25c0010..4b9736ae506d9 100644 --- a/tree/dataframe/inc/ROOT/RResultHandle.hxx +++ b/tree/dataframe/inc/ROOT/RResultHandle.hxx @@ -93,6 +93,15 @@ public: return *static_cast(Get()); } + /// Get an RResultPtr to the encapsulated object. + /// \tparam T Type of the action result + template + RResultPtr GetResultPtr() + { + CheckType(typeid(T)); + return RResultPtr(std::static_pointer_cast(fObjPtr), fLoopManager, fActionPtr); + } + /// Check whether the result has already been computed /// /// ~~~{.cpp} From 8ce6b64e0384400d23f056f9acd0cd36872dd33f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 13:51:22 +0200 Subject: [PATCH 136/577] [DF] Rephrase description of parameter --- .../distrdf/python/DistRDF/ComputationGraphGenerator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py index 16e79e38c5a45..30d0db9ed5a22 100644 --- a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py +++ b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py @@ -173,8 +173,8 @@ def run_computation_graph(rdf_node, range_id): This function triggers the event loop via the CppWorkflow class. Args: - rdf_node (ROOT.RDF.RNode): The main RDataFrame node on which - the graph will be executed. + rdf_node (ROOT.RDF.RNode): The RDataFrame node that will serve as + the root of the computation graph. range_id (int): Id of the current range. Needed to assign a name to a partial Snapshot output file. From 61200134a672c4ee7c8901c7d7af5e538250b3ef Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 13:57:35 +0200 Subject: [PATCH 137/577] [DF] Specify types in the tuple return value --- .../distrdf/python/DistRDF/ComputationGraphGenerator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py index 30d0db9ed5a22..2f930855b3107 100644 --- a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py +++ b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py @@ -179,7 +179,7 @@ def run_computation_graph(rdf_node, range_id): to a partial Snapshot output file. Returns: - tuple: the first element is the list of results of the actions + tuple[list, list]: the first element is the list of results of the actions in the C++ workflow, the second element is the list of result types corresponding to those actions. """ From 02d62d0463d8c00e165ed27ffe38128bde482a2f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 14:20:51 +0200 Subject: [PATCH 138/577] [DF] Reorder operation check --- .../experimental/distrdf/python/DistRDF/CppWorkflow.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 2ebbacfa0f684..8561cf71c006e 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -168,11 +168,12 @@ def add_node(self, operation, range_id, parent_id): ''' # Operations that need special treatment - if operation.name == 'Snapshot': - self._handle_snapshot(operation, range_id) - elif operation.name == 'AsNumpy': + if operation.name == 'AsNumpy': self._handle_asnumpy(operation, parent_id) - return None + return None # nothing else to do + + if operation.name == 'Snapshot': + self._handle_snapshot(operation, range_id) # this modifies operation.args # Add operation node to the graph self.graph_nodes += '\n ' From b93bff229029f9e38d02c92ef6bfcd5eea3cbadd Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 10 Sep 2021 10:51:59 +0200 Subject: [PATCH 139/577] [DF] Replace typedef with using --- .../experimental/distrdf/python/DistRDF/CppWorkflow.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 8561cf71c006e..fcc43bf416323 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -482,10 +482,9 @@ def _get_code(self): namespace {namespace} {{ -typedef std::tuple, - std::vector, - std::vector> - CppWorkflowResult; +using CppWorkflowResult = std::tuple, + std::vector, + std::vector>; CppWorkflowResult {func_name}(ROOT::RDF::RNode &rdf0) {{ From 09196a85949f5034deb8144a588012ca419c3413 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Mon, 20 Sep 2021 13:57:24 +0200 Subject: [PATCH 140/577] [DF] Fix function docs --- bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index fcc43bf416323..4051892557d2c 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -215,7 +215,7 @@ def add_node(self, operation, range_id, parent_id): def _handle_snapshot(self, operation, range_id): ''' - Does three extra settings needed for Snapshot nodes: + Does two extra settings needed for Snapshot nodes: - Modifies the output file name to be of the form `filename_rangeid`, since it is a partial snapshot for a given range. - Stores the index of the returned vector in which the From 78aa58286fed44b8691bbc11fd7afd2f92af992f Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Mon, 20 Sep 2021 14:59:02 +0200 Subject: [PATCH 141/577] [DF] Move graph traversal logic into CppWorkflow --- .../DistRDF/ComputationGraphGenerator.py | 10 ++--- .../distrdf/python/DistRDF/CppWorkflow.py | 37 +++++++++++++++++-- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py index 2f930855b3107..aa88fcd3d17ee 100644 --- a/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py +++ b/bindings/experimental/distrdf/python/DistRDF/ComputationGraphGenerator.py @@ -184,16 +184,12 @@ def run_computation_graph(rdf_node, range_id): result types corresponding to those actions. """ - py_headnode = self.headnode - cpp_workflow = CppWorkflow() - parent_idx = 0 - - # Recurse over children nodes - for py_node in py_headnode.children: - explore_graph(py_node, cpp_workflow, range_id, parent_idx) + # Generate the code of the C++ workflow + cpp_workflow = CppWorkflow(self.headnode, range_id) logger.debug("Generated C++ workflow is:\n{}".format(cpp_workflow)) + # Compile and run the C++ workflow on the received RDF head node return cpp_workflow.execute(ROOT.RDF.AsRNode(rdf_node)) def explore_graph(py_node, cpp_workflow, range_id, parent_idx): diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 4051892557d2c..96b92e4cab5e7 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -89,9 +89,17 @@ def __init__(self, v, t): self.append(elem) self.t = t # set lifeline for tuple - def __init__(self): + def __init__(self, head_node, range_id): ''' - Initializes the attributes used in the generation of the workflow. + Generates the C++ code of an RDF workflow that corresponds to the + received graph and data range. + + Args: + head_node (Node): head node of a graph that represents an RDF + workflow. + range_id (int): id of the data range to be processed by this + workflow. Needed to assign a name to a partial Snapshot output + file. ''' self.includes = ''' @@ -107,7 +115,7 @@ def __init__(self): self.lambda_id = 0 self.graph_nodes = '' - self.node_id = 1 # 0 is the parent node we receive + self.node_id = 1 # 0 is the head node we receive self.res_ptr_id = 0 @@ -115,6 +123,29 @@ def __init__(self): self.py_actions = [] + # Generate the C++ workflow. + # Recurse over children nodes of received graph head node + head_node_id = 0 + for child_node in head_node.children: + self._explore_graph(child_node, range_id, head_node_id) + + def _explore_graph(self, node, range_id, parent_id): + """ + Recursively traverses the graph nodes in DFS order and, for each of + them, adds a new node to the C++ workflow. + + Args: + node (Node): object that contains the information to add the + corresponding node to the C++ workflow. + range_id (int): id of the current range. Needed to assign a name to a + partial Snapshot output file. + parent_id (int): id of the parent node in the C++ workflow. + """ + node_id = self.add_node(node.operation, range_id, parent_id) + + for child_node in node.children: + self._explore_graph(child_node, range_id, node_id) + def add_include(self, header): ''' Adds a new include statement. From f5622026c963f3a6b7caae809e0a317dab0a5159 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Mon, 20 Sep 2021 15:40:09 +0200 Subject: [PATCH 142/577] [DF] Refactor add_node to do less ifs --- .../distrdf/python/DistRDF/CppWorkflow.py | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 96b92e4cab5e7..b64c592700397 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -206,43 +206,37 @@ def add_node(self, operation, range_id, parent_id): if operation.name == 'Snapshot': self._handle_snapshot(operation, range_id) # this modifies operation.args - # Add operation node to the graph - self.graph_nodes += '\n ' - new_node_id = self.node_id - if operation.is_transformation(): - self.graph_nodes += 'auto rdf{}'.format(new_node_id) - else: # action or instant action - self.graph_nodes += 'auto res_ptr{}'.format(self.res_ptr_id) - - template_args = self._get_template_args(operation) - self.graph_nodes += ' = rdf{n}.{op_name}{templ_args}(' \ - .format(n=parent_id, op_name=operation.name, \ - templ_args=template_args) - self._process_args(operation) - self.graph_nodes += ');' + # Generate the code of the call that creates the new node + op_call = 'rdf{n}.{op}{templ_args}({args});' \ + .format(n=parent_id, op=operation.name, \ + templ_args=self._get_template_args(operation), \ + args=self._get_call_args(operation)) if operation.is_transformation(): + new_node_id = self.node_id + self.graph_nodes += '\n auto rdf{n} = {call}' \ + .format(n=new_node_id, call=op_call) self.node_id += 1 - else: - # Action or instant action + return new_node_id - # The result is stored in the vector of results to be returned - self.graph_nodes += '\n result_handles.emplace_back(res_ptr{});' \ - .format(self.res_ptr_id) + # Else it's an action or instant action + self.graph_nodes += '\n auto res_ptr{n} = {call}' \ + .format(n=self.res_ptr_id, call=op_call) - # The result type is stored in the vector of result types to be - # returned - self.graph_nodes += \ - '\n auto c{} = TClass::GetClass(typeid(res_ptr{}));' \ - .format(self.res_ptr_id, self.res_ptr_id) - self.graph_nodes += \ - '\n result_types.emplace_back(c{}->GetName());' \ - .format(self.res_ptr_id) + # The result is stored in the vector of results to be returned + self.graph_nodes += '\n result_handles.emplace_back(res_ptr{});' \ + .format(self.res_ptr_id) - self.res_ptr_id += 1 - return None + # The result type is stored in the vector of result types to be + # returned + self.graph_nodes += \ + '\n auto c{} = TClass::GetClass(typeid(res_ptr{}));' \ + .format(self.res_ptr_id, self.res_ptr_id) + self.graph_nodes += \ + '\n result_types.emplace_back(c{}->GetName());' \ + .format(self.res_ptr_id) - return new_node_id + self.res_ptr_id += 1 def _handle_snapshot(self, operation, range_id): ''' @@ -296,7 +290,8 @@ def _handle_asnumpy(self, operation, parent_id): def _get_template_args(self, operation): ''' - Gets the template arguments with which to generate a given operation. + Gets the template arguments with which to generate the call to a given + operation. Args: operation (Operation): object representing the operation whose @@ -310,43 +305,49 @@ def _get_template_args(self, operation): return '' - def _process_args(self, operation): + def _get_call_args(self, operation): ''' - Processes the arguments of an operation node. + Gets the arguments with which to generate the call to a given operation. Args: operation (Operation): object representing the operation whose - arguments need to be processed. + call arguments need to be returned. + + Returns: + string: call arguments for this operation. ''' # TODO # - Do a more thorough type conversion # - Use RDF helper functions to convert jitted strings to lambdas + args = "" + # Argument type conversion for narg, arg in enumerate(operation.args): if (narg > 0): - self.graph_nodes += ', ' + args += ', ' if isinstance(arg, str): - self.graph_nodes += '"{}"'.format(arg) + args += '"{}"'.format(arg) elif isinstance(arg, tuple): - self.graph_nodes += '{' + args += '{' for nelem, elem in enumerate(arg): if nelem > 0: - self.graph_nodes += ',' + args += ',' if isinstance(elem, str): - self.graph_nodes += '"{}"'.format(elem) + args += '"{}"'.format(elem) else: - self.graph_nodes += '{}'.format(elem) - self.graph_nodes += '}' + args += '{}'.format(elem) + args += '}' # Make Snapshot lazy # TODO: Do a proper processing of the args (user might have specified # her own options object) if operation.name == 'Snapshot': - self.graph_nodes += ', "", lazy_options' + args += ', "", lazy_options' + return args def execute(self, rdf): ''' From 8f0585e71f40e5ca195bdb0acf42e5f0fe5e3e2e Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Mon, 20 Sep 2021 18:21:49 +0200 Subject: [PATCH 143/577] [DF] Store placeholders in C++ for results of Python-only actions --- .../distrdf/python/DistRDF/CppWorkflow.py | 21 ++++++++++++------- tree/dataframe/src/RDFHelpers.cxx | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index b64c592700397..91d8dda9041a0 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -271,9 +271,6 @@ def _handle_asnumpy(self, operation, parent_id): C++ workflow built by this class. Therefore, this function takes care of saving the RDF node, generated in C++, on which an AsNumpy action should be applied from Python. - This function also stores the index of the AsNumpy result in the final - list of results, where the index depends on the DFS traversal of the - computation graph. Args: operation (Operation): object representing the AsNumpy operation @@ -282,11 +279,19 @@ def _handle_asnumpy(self, operation, parent_id): save that node in the vector of output nodes. ''' + # Store DFS-order index of the AsNumpy operation, together with the + # operation information, for later invocation from Python self.py_actions.append(CppWorkflow.PyActionData(self.res_ptr_id, operation)) + self.res_ptr_id += 1 + + # Save parent RDF node to run AsNumpy on it later from Python self.graph_nodes += \ '\n output_nodes.push_back(ROOT::RDF::AsRNode(rdf{}));' \ .format(parent_id) - self.res_ptr_id += 1 + + # Add placeholders to the result lists + self.graph_nodes += '\n result_handles.emplace_back();' + self.graph_nodes += '\n result_types.emplace_back();' def _get_template_args(self, operation): ''' @@ -451,6 +456,10 @@ def _run_function(self, rdf, function_id): # Strip out the ROOT::RDF::RResultPtr<> part of the type def get_result_type(s): + if s.empty(): + # Python-only actions have an empty return type in C++ + return '' + s = str(s) pos = s.find('<') if pos == -1: @@ -463,9 +472,7 @@ def get_result_type(s): # Add Python-only actions on their corresponding nodes for (i, operation), n in zip(self.py_actions, v_nodes): operation.kwargs['lazy'] = True # make it lazy - res = getattr(n, operation.name)(*operation.args, **operation.kwargs) - results.insert(i, res) - res_types.insert(i, None) # placeholder + results[i] = getattr(n, operation.name)(*operation.args, **operation.kwargs) if v_results: # We trigger the event loop here, so make sure we release the GIL diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx index 150ea0fa1d881..69134c6fdda5c 100644 --- a/tree/dataframe/src/RDFHelpers.cxx +++ b/tree/dataframe/src/RDFHelpers.cxx @@ -47,7 +47,7 @@ void ROOT::RDF::RunGraphs(std::vector handles) std::vector uniqueLoops(s.begin(), s.end()); // Trigger the unique event loops - auto run = [](RResultHandle &h) { h.fLoopManager->Run(); }; + auto run = [](RResultHandle &h) { if (h.fLoopManager) h.fLoopManager->Run(); }; #ifdef R__USE_IMT if (ROOT::IsImplicitMTEnabled()) { ROOT::TThreadExecutor{}.Foreach(run, uniqueLoops); From f7f04a49d7e1c3044bc5d9c1a31651cd7a525c81 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 11:10:04 +0200 Subject: [PATCH 144/577] [DF] Throw exception if result type can't be obtained --- .../distrdf/python/DistRDF/CppWorkflow.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 91d8dda9041a0..6774fb1552f50 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -230,11 +230,13 @@ def add_node(self, operation, range_id, parent_id): # The result type is stored in the vector of result types to be # returned self.graph_nodes += \ - '\n auto c{} = TClass::GetClass(typeid(res_ptr{}));' \ - .format(self.res_ptr_id, self.res_ptr_id) - self.graph_nodes += \ - '\n result_types.emplace_back(c{}->GetName());' \ - .format(self.res_ptr_id) + '\n auto c{0} = TClass::GetClass(typeid(res_ptr{0}));' \ + '\n if (c{0} == nullptr)' \ + '\n throw std::runtime_error(' \ + '\n "Cannot get type of result {0} of action {1} during "' \ + '\n "generation of RDF C++ workflow");' \ + '\n result_types.emplace_back(c{0}->GetName());' \ + .format(self.res_ptr_id, operation.name) self.res_ptr_id += 1 From fb80a4b99b9b31abf508da327fcfb19afb013cda Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 11:28:33 +0200 Subject: [PATCH 145/577] [DF] Add warning when ignoring RSnapshotOptions arg --- bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 6774fb1552f50..6ec381f84d009 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -347,10 +347,14 @@ def _get_call_args(self, operation): else: args += '{}'.format(elem) args += '}' + elif isinstance(arg, ROOT.RDF.RSnapshotOptions): + ROOT.Warning('DistRDF', + 'Processing of RSnapshotOptions not implemented') # Make Snapshot lazy # TODO: Do a proper processing of the args (user might have specified # her own options object) + # Remove warning above when this is implemented if operation.name == 'Snapshot': args += ', "", lazy_options' From eea16936d5254c173c1f4365b9c6245adc33fa24 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 11:57:52 +0200 Subject: [PATCH 146/577] [DF] Use code of workflow functions as key of cache This is done to prevent any hash colision at the expense of storing the code of the workflow functions. --- .../distrdf/python/DistRDF/CppWorkflow.py | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 6ec381f84d009..6e3c904ae6c97 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -28,8 +28,9 @@ class CppWorkflow(object): Attributes: action_res_types (dict): result types for each supported action. - cached_wfs (set): ids of workflow functions that have been already - compiled and loaded by the current process. Used to prevent + cached_wfs (dict): uses as key the code of workflow functions that have + been already compiled and loaded by the current process, while the + value is the id of a given workflow function. Used to prevent recompilation of already executed workflow functions. FUNCTION_NAME (string): name of the function that encapsulates the @@ -61,12 +62,15 @@ class CppWorkflow(object): `(res_id,filename)`, where `res_id` is the Snapshot result index in the vector of workflow results and `filename` is its modified output file name. + + wf_id (int): used to assign new ids to workflow functions ''' FUNCTION_NAME = 'GenerateGraph' FUNCTION_NAMESPACE = 'DistRDF_Internal' - cached_wfs = set() + cached_wfs = {} + wf_id = 0 SnapshotData = namedtuple('SnapshotData', ['res_id', 'filename']) PyActionData = namedtuple('PyActionData', ['res_id', 'operation']) @@ -374,8 +378,8 @@ def execute(self, rdf): corresponding to those actions. ''' - function_id = self._compile() - return self._run_function(rdf, function_id) + wf_id = self._compile() + return self._run_function(rdf, wf_id) def _compile(self): ''' @@ -393,32 +397,30 @@ def _compile(self): process runs multiple times the same workflow). Returns: - string: the id of the function to be executed. Such id is appended - to CppWorkflow.FUNCTION_NAME to prevent name clashes (a worker - process might compile and load multiple workflow functions). - A function id is mostly the hash of its code. + int: the id of the workflow function to be executed. Such id is + appended to CppWorkflow.FUNCTION_NAME to prevent name clashes + (a worker process might compile and load multiple workflow + functions). ''' # TODO: Make this function thread-safe? To support Dask threaded # workers code = self._get_code() - code_hash = hash(code) - # A hash can be a negative value, replace '-' with '_' so it can be - # part of a function name - function_id = str(code_hash).replace('-', '_', 1) - if code_hash in CppWorkflow.cached_wfs: + this_wf_id = CppWorkflow.cached_wfs.get(code) + if this_wf_id is not None: # We already compiled and loaded a workflow function with this # code. Return the id of that function - return function_id + return this_wf_id # We are trying to run this workflow for the first time in this # process. First dump the code in a file with the right function name - cpp_file_name = 'rdfworkflow_{code_hash}_{pid}.cpp' \ - .format(code_hash=code_hash, pid=os.getpid()) - code = code.replace(CppWorkflow.FUNCTION_NAME, CppWorkflow.FUNCTION_NAME + function_id, 1) + this_wf_id = CppWorkflow.wf_id + cpp_file_name = 'rdfworkflow_{wf_id}_{pid}.cxx' \ + .format(wf_id=this_wf_id, pid=os.getpid()) + final_code = code.replace(CppWorkflow.FUNCTION_NAME, CppWorkflow.FUNCTION_NAME + str(this_wf_id), 1) with open(cpp_file_name, 'w') as f: - f.write(code) + f.write(final_code) # Now compile and load the code if not ROOT.gSystem.CompileMacro(cpp_file_name, 'O'): @@ -427,19 +429,19 @@ def _compile(self): .format(cpp_file_name)) # Let the cache know there is a new workflow - CppWorkflow.cached_wfs.add(code_hash) + CppWorkflow.cached_wfs[code] = this_wf_id + CppWorkflow.wf_id += 1 - return function_id + return this_wf_id - def _run_function(self, rdf, function_id): + def _run_function(self, rdf, wf_id): ''' Runs the workflow generation function. Args: rdf (ROOT::RDF::RNode): object that represents the dataset on which to execute the workflow. - function_id (string): identifier of the workflow function to be - executed. + wf_id (int): identifier of the workflow function to be executed. Returns: tuple: the first element is the list of results of the actions in @@ -448,7 +450,7 @@ def _run_function(self, rdf, function_id): ''' ns = getattr(ROOT, CppWorkflow.FUNCTION_NAMESPACE) - func = getattr(ns, CppWorkflow.FUNCTION_NAME + function_id) + func = getattr(ns, CppWorkflow.FUNCTION_NAME + str(wf_id)) # Run the workflow generator function vectors = func(rdf) From 4aa95a9ab39c38facf02c3c3bd5defb183387b3a Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 12:13:42 +0200 Subject: [PATCH 147/577] [DF] Use a more uncommon name for workflow functions to prevent clashes --- bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 6e3c904ae6c97..856fcd90f02ca 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -66,7 +66,7 @@ class CppWorkflow(object): wf_id (int): used to assign new ids to workflow functions ''' - FUNCTION_NAME = 'GenerateGraph' + FUNCTION_NAME = '__RDF_WORKFLOW_FUNCTION__' FUNCTION_NAMESPACE = 'DistRDF_Internal' cached_wfs = {} From 46b1616b7d42f2bc5c348429f684c835ea078710 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 13:18:03 +0200 Subject: [PATCH 148/577] [DF] Make copies of RResultHandles so they survive the vector destruction --- .../distrdf/python/DistRDF/CppWorkflow.py | 26 +++---------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 856fcd90f02ca..569691aa51f61 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -75,24 +75,6 @@ class CppWorkflow(object): SnapshotData = namedtuple('SnapshotData', ['res_id', 'filename']) PyActionData = namedtuple('PyActionData', ['res_id', 'operation']) - class ListWithLifeline(list): - ''' - List-like helper class that is constructed from the elements stored in - an std::vector. Moreover, it stores a reference to the std::tuple that - contains the vector, so that the life of the tuple is tied to that - of the new list. - - Attributes: - v (std::vector): vector used to construct the list. - t (std::tuple): tuple that contains `v`. It must not be destroyed - before the list is. - ''' - def __init__(self, v, t): - super(CppWorkflow.ListWithLifeline, self).__init__() - for elem in v: - self.append(elem) - self.t = t # set lifeline for tuple - def __init__(self, head_node, range_id): ''' Generates the C++ code of an RDF workflow that corresponds to the @@ -453,14 +435,14 @@ def _run_function(self, rdf, wf_id): func = getattr(ns, CppWorkflow.FUNCTION_NAME + str(wf_id)) # Run the workflow generator function - vectors = func(rdf) + vectors = func(rdf) # need to keep the tuple alive v_results, v_res_types, v_nodes = vectors # Convert the vector of results into a list so that we can mix # different types in it. - # The std::tuple `vectors` is passed as parameter to tie its life with - # that of the new list - results = self.ListWithLifeline(v_results, vectors) + # We copy the results since the life of the original ones is tied to + # that of the vector + results = [ ROOT.RDF.RResultHandle(res) for res in v_results ] # Strip out the ROOT::RDF::RResultPtr<> part of the type def get_result_type(s): From 265d015869b811349493e33339c4a012b908c13e Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 13:27:07 +0200 Subject: [PATCH 149/577] [DF] Do an early check for numpy in AsNumpy --- .../python/ROOT/pythonization/_rdataframe.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py index bab24618109d4..a1c2f58826ccb 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py @@ -58,6 +58,12 @@ def RDataFrameAsNumpy(df, columns=None, exclude=None, lazy=False): if isinstance(exclude, str): raise TypeError("The exclude argument requires a list of strings") + # Early check for numpy + try: + import numpy + except: + raise ImportError("Failed to import numpy during call of RDataFrame.AsNumpy.") + # Find all column names in the dataframe if no column are specified if not columns: columns = [str(c) for c in df.GetColumnNames()] @@ -118,12 +124,8 @@ def GetValue(self): """ if self.py_arrays is None: - # Import numpy and numpy.array derived class lazily - try: - import numpy - from ROOT.pythonization._rdf_utils import ndarray - except: - raise ImportError("Failed to import numpy during call of RDataFrame.AsNumpy.") + import numpy + from ROOT.pythonization._rdf_utils import ndarray # Convert the C++ vectors to numpy arrays self.py_arrays = {} From fca774d83a38cda5253c40b79a78b83605c82ece Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 13:52:19 +0200 Subject: [PATCH 150/577] [DF] Flag private attributes as such --- .../distrdf/python/DistRDF/CppWorkflow.py | 131 +++++++++--------- .../python/ROOT/pythonization/_rdataframe.py | 26 ++-- 2 files changed, 80 insertions(+), 77 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 569691aa51f61..0b2be9313be0d 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -26,54 +26,52 @@ class CppWorkflow(object): optimized and thus slower than a shared library compiled with ACLiC. Attributes: - action_res_types (dict): result types for each supported action. - - cached_wfs (dict): uses as key the code of workflow functions that have + _cached_wfs (dict): uses as key the code of workflow functions that have been already compiled and loaded by the current process, while the value is the id of a given workflow function. Used to prevent recompilation of already executed workflow functions. - FUNCTION_NAME (string): name of the function that encapsulates the + _FUNCTION_NAME (string): name of the function that encapsulates the RDataFrame graph creation - FUNCTION_NAMESPACE (string): namespace of the function that + _FUNCTION_NAMESPACE (string): namespace of the function that encapsulates the RDataFrame graph creation - graph_nodes (list): statements that add nodes to the graph. + _graph_nodes (string): statements that add nodes to the graph. - includes (list): include statements needed by the workflow. + _includes (string): include statements needed by the workflow. - lambdas (list): lambda functions used by the workflow. + _lambdas (string): lambda functions used by the workflow. - lambda_id (int): counter used to generate ids for each defined lambda + _lambda_id (int): counter used to generate ids for each defined lambda function. - node_id (int): counter used to generate ids for each graph node. + _node_id (int): counter used to generate ids for each graph node. - py_actions (list): list that contains PyActionData pairs + _py_actions (list): list that contains _PyActionData pairs `(res_id,operation)`, where `res_id` is the Python action result index in the vector of workflow results and `operation` is the Operation object corresponding to the action. - res_ptr_id (int): counter used to generate ids for each result generated - by graph actions. + _res_ptr_id (int): counter used to generate ids for each result + generated by graph actions. - snapshots (list): list that contains SnapshotData pairs + _snapshots (list): list that contains _SnapshotData pairs `(res_id,filename)`, where `res_id` is the Snapshot result index in the vector of workflow results and `filename` is its modified output file name. - wf_id (int): used to assign new ids to workflow functions + _wf_id (int): used to assign new ids to workflow functions ''' - FUNCTION_NAME = '__RDF_WORKFLOW_FUNCTION__' - FUNCTION_NAMESPACE = 'DistRDF_Internal' + _FUNCTION_NAME = '__RDF_WORKFLOW_FUNCTION__' + _FUNCTION_NAMESPACE = 'DistRDF_Internal' - cached_wfs = {} - wf_id = 0 + _cached_wfs = {} + _wf_id = 0 - SnapshotData = namedtuple('SnapshotData', ['res_id', 'filename']) - PyActionData = namedtuple('PyActionData', ['res_id', 'operation']) + _SnapshotData = namedtuple('SnapshotData', ['res_id', 'filename']) + _PyActionData = namedtuple('PyActionData', ['res_id', 'operation']) def __init__(self, head_node, range_id): ''' @@ -88,7 +86,7 @@ def __init__(self, head_node, range_id): file. ''' - self.includes = ''' + self._includes = ''' #include "ROOT/RDataFrame.hxx" #include "ROOT/RResultHandle.hxx" #include "ROOT/RDFHelpers.hxx" @@ -97,17 +95,17 @@ def __init__(self, head_node, range_id): #include ''' - self.lambdas = '' - self.lambda_id = 0 + self._lambdas = '' + self._lambda_id = 0 - self.graph_nodes = '' - self.node_id = 1 # 0 is the head node we receive + self._graph_nodes = '' + self._node_id = 1 # 0 is the head node we receive - self.res_ptr_id = 0 + self._res_ptr_id = 0 - self.snapshots = [] + self._snapshots = [] - self.py_actions = [] + self._py_actions = [] # Generate the C++ workflow. # Recurse over children nodes of received graph head node @@ -140,7 +138,7 @@ def add_include(self, header): header (str): header to be included. ''' - self.includes += '\n#include "{}"'.format(header) + self._includes += '\n#include "{}"'.format(header) def add_lambda(self, lambda_code): ''' @@ -151,9 +149,9 @@ def add_lambda(self, lambda_code): lambda_code (str): code of the lambda to be defined. ''' - self.lambdas += '\n auto rdf_lambda{n} = {code};' \ - .format(n=lambda_id, code=lambda_code) - self.lambda_id += 1 + self._lambdas += '\n auto rdf_lambda{n} = {code};' \ + .format(n=self._lambda_id, code=lambda_code) + self._lambda_id += 1 def add_node(self, operation, range_id, parent_id): ''' @@ -199,32 +197,32 @@ def add_node(self, operation, range_id, parent_id): args=self._get_call_args(operation)) if operation.is_transformation(): - new_node_id = self.node_id - self.graph_nodes += '\n auto rdf{n} = {call}' \ + new_node_id = self._node_id + self._graph_nodes += '\n auto rdf{n} = {call}' \ .format(n=new_node_id, call=op_call) - self.node_id += 1 + self._node_id += 1 return new_node_id # Else it's an action or instant action - self.graph_nodes += '\n auto res_ptr{n} = {call}' \ - .format(n=self.res_ptr_id, call=op_call) + self._graph_nodes += '\n auto res_ptr{n} = {call}' \ + .format(n=self._res_ptr_id, call=op_call) # The result is stored in the vector of results to be returned - self.graph_nodes += '\n result_handles.emplace_back(res_ptr{});' \ - .format(self.res_ptr_id) + self._graph_nodes += '\n result_handles.emplace_back(res_ptr{});' \ + .format(self._res_ptr_id) # The result type is stored in the vector of result types to be # returned - self.graph_nodes += \ + self._graph_nodes += \ '\n auto c{0} = TClass::GetClass(typeid(res_ptr{0}));' \ '\n if (c{0} == nullptr)' \ '\n throw std::runtime_error(' \ '\n "Cannot get type of result {0} of action {1} during "' \ '\n "generation of RDF C++ workflow");' \ '\n result_types.emplace_back(c{0}->GetName());' \ - .format(self.res_ptr_id, operation.name) + .format(self._res_ptr_id, operation.name) - self.res_ptr_id += 1 + self._res_ptr_id += 1 def _handle_snapshot(self, operation, range_id): ''' @@ -250,8 +248,8 @@ def _handle_snapshot(self, operation, range_id): operation.args[1] = path_with_range # Store Snapshot result index -> path - self.snapshots.append( - CppWorkflow.SnapshotData(self.res_ptr_id, path_with_range)) + self._snapshots.append( + CppWorkflow._SnapshotData(self._res_ptr_id, path_with_range)) def _handle_asnumpy(self, operation, parent_id): ''' @@ -269,17 +267,18 @@ def _handle_asnumpy(self, operation, parent_id): # Store DFS-order index of the AsNumpy operation, together with the # operation information, for later invocation from Python - self.py_actions.append(CppWorkflow.PyActionData(self.res_ptr_id, operation)) - self.res_ptr_id += 1 + self._py_actions.append(CppWorkflow._PyActionData(self._res_ptr_id, + operation)) + self._res_ptr_id += 1 # Save parent RDF node to run AsNumpy on it later from Python - self.graph_nodes += \ + self._graph_nodes += \ '\n output_nodes.push_back(ROOT::RDF::AsRNode(rdf{}));' \ .format(parent_id) # Add placeholders to the result lists - self.graph_nodes += '\n result_handles.emplace_back();' - self.graph_nodes += '\n result_types.emplace_back();' + self._graph_nodes += '\n result_handles.emplace_back();' + self._graph_nodes += '\n result_types.emplace_back();' def _get_template_args(self, operation): ''' @@ -380,7 +379,7 @@ def _compile(self): Returns: int: the id of the workflow function to be executed. Such id is - appended to CppWorkflow.FUNCTION_NAME to prevent name clashes + appended to CppWorkflow._FUNCTION_NAME to prevent name clashes (a worker process might compile and load multiple workflow functions). ''' @@ -389,7 +388,7 @@ def _compile(self): # workers code = self._get_code() - this_wf_id = CppWorkflow.cached_wfs.get(code) + this_wf_id = CppWorkflow._cached_wfs.get(code) if this_wf_id is not None: # We already compiled and loaded a workflow function with this # code. Return the id of that function @@ -397,10 +396,12 @@ def _compile(self): # We are trying to run this workflow for the first time in this # process. First dump the code in a file with the right function name - this_wf_id = CppWorkflow.wf_id + this_wf_id = CppWorkflow._wf_id cpp_file_name = 'rdfworkflow_{wf_id}_{pid}.cxx' \ .format(wf_id=this_wf_id, pid=os.getpid()) - final_code = code.replace(CppWorkflow.FUNCTION_NAME, CppWorkflow.FUNCTION_NAME + str(this_wf_id), 1) + final_code = code.replace(CppWorkflow._FUNCTION_NAME, + CppWorkflow._FUNCTION_NAME + str(this_wf_id), + 1) with open(cpp_file_name, 'w') as f: f.write(final_code) @@ -411,8 +412,8 @@ def _compile(self): .format(cpp_file_name)) # Let the cache know there is a new workflow - CppWorkflow.cached_wfs[code] = this_wf_id - CppWorkflow.wf_id += 1 + CppWorkflow._cached_wfs[code] = this_wf_id + CppWorkflow._wf_id += 1 return this_wf_id @@ -431,8 +432,8 @@ def _run_function(self, rdf, wf_id): corresponding to those actions. ''' - ns = getattr(ROOT, CppWorkflow.FUNCTION_NAMESPACE) - func = getattr(ns, CppWorkflow.FUNCTION_NAME + str(wf_id)) + ns = getattr(ROOT, CppWorkflow._FUNCTION_NAMESPACE) + func = getattr(ns, CppWorkflow._FUNCTION_NAME + str(wf_id)) # Run the workflow generator function vectors = func(rdf) # need to keep the tuple alive @@ -460,7 +461,7 @@ def get_result_type(s): res_types = [ get_result_type(elem) for elem in v_res_types ] # Add Python-only actions on their corresponding nodes - for (i, operation), n in zip(self.py_actions, v_nodes): + for (i, operation), n in zip(self._py_actions, v_nodes): operation.kwargs['lazy'] = True # make it lazy results[i] = getattr(n, operation.name)(*operation.args, **operation.kwargs) @@ -473,13 +474,13 @@ def get_result_type(s): # Replace the RResultHandle of each Snapshot by its modified output # path, since the latter is what we actually need in the reducer - for i, path in self.snapshots: + for i, path in self._snapshots: results[i] = [path] res_types[i] = None # placeholder # Replace the future-like result of every Python-only action (e.g. # AsNumpyResult) by its actual value - for i, operation in self.py_actions: + for i, operation in self._py_actions: results[i] = results[i].GetValue() return results, res_types @@ -533,9 +534,11 @@ def _get_code(self): }} }} -'''.format(func_name=CppWorkflow.FUNCTION_NAME, - namespace=CppWorkflow.FUNCTION_NAMESPACE, - includes=self.includes, lambdas=self.lambdas, nodes=self.graph_nodes) +'''.format(func_name=CppWorkflow._FUNCTION_NAME, + namespace=CppWorkflow._FUNCTION_NAMESPACE, + includes=self._includes, + lambdas=self._lambdas, + nodes=self._graph_nodes) return code diff --git a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py index a1c2f58826ccb..72a84e9a1a2d1 100644 --- a/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py +++ b/bindings/pyroot/pythonizations/python/ROOT/pythonization/_rdataframe.py @@ -93,11 +93,11 @@ class AsNumpyResult(object): Provides AsNumpy with laziness when it comes to triggering the event loop. Attributes: - columns (list): list of the names of the columns returned by + _columns (list): list of the names of the columns returned by AsNumpy. - py_arrays (dict): results of the AsNumpy action. The key is the + _py_arrays (dict): results of the AsNumpy action. The key is the column name, the value is the NumPy array for that column. - result_ptrs (dict): results of the AsNumpy action. The key is the + _result_ptrs (dict): results of the AsNumpy action. The key is the column name, the value is the result pointer for that column. """ def __init__(self, result_ptrs, columns): @@ -110,9 +110,9 @@ def __init__(self, result_ptrs, columns): AsNumpy. """ - self.result_ptrs = result_ptrs - self.columns = columns - self.py_arrays = None + self._result_ptrs = result_ptrs + self._columns = columns + self._py_arrays = None def GetValue(self): """Triggers, if necessary, the event loop to run the Take actions for @@ -123,24 +123,24 @@ def GetValue(self): column. """ - if self.py_arrays is None: + if self._py_arrays is None: import numpy from ROOT.pythonization._rdf_utils import ndarray # Convert the C++ vectors to numpy arrays - self.py_arrays = {} - for column in self.columns: - cpp_reference = self.result_ptrs[column].GetValue() + self._py_arrays = {} + for column in self._columns: + cpp_reference = self._result_ptrs[column].GetValue() if hasattr(cpp_reference, "__array_interface__"): tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. - self.py_arrays[column] = ndarray(tmp, self.result_ptrs[column]) + self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) else: tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) for i, x in enumerate(cpp_reference): tmp[i] = x # This creates only the wrapping of the objects and does not copy. - self.py_arrays[column] = ndarray(tmp, self.result_ptrs[column]) + self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) - return self.py_arrays + return self._py_arrays def _histo_profile(self, fixed_args, *args): From 39de75e506a45cc9112df7a2f5b52db828e508b0 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Tue, 21 Sep 2021 13:56:46 +0200 Subject: [PATCH 151/577] [DF] Complete CppWorkflow attribute documentation --- .../distrdf/python/DistRDF/CppWorkflow.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index 0b2be9313be0d..c7f8b5b6b9e8f 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -48,18 +48,21 @@ class CppWorkflow(object): _node_id (int): counter used to generate ids for each graph node. - _py_actions (list): list that contains _PyActionData pairs - `(res_id,operation)`, where `res_id` is the Python action result - index in the vector of workflow results and `operation` is the - Operation object corresponding to the action. + _PyActionData (named tuple type): pair `(res_id,operation)`, where + `res_id` is the Python action result index in the vector of + workflow results and `operation` is the Operation object + corresponding to the action. + + _py_actions (list): list that contains _PyActionData objects. _res_ptr_id (int): counter used to generate ids for each result generated by graph actions. - _snapshots (list): list that contains _SnapshotData pairs - `(res_id,filename)`, where `res_id` is the Snapshot result index in - the vector of workflow results and `filename` is its modified output - file name. + _SnapshotData (named tuple type): pair `(res_id,filename)`, where + `res_id` is the Snapshot result index in the vector of workflow + results and `filename` is its modified output file name. + + _snapshots (list): list that contains _SnapshotData objects _wf_id (int): used to assign new ids to workflow functions ''' From fa8c499162bf85adc9ca6b8eaa38a97ce6996cfa Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Wed, 22 Sep 2021 09:50:22 +0200 Subject: [PATCH 152/577] Disable a couple of tests using EOS (not supported on Windows) --- tutorials/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index ff012c16a6d78..f85c7b4079238 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -309,6 +309,11 @@ if(root7) list(APPEND root7_veto rcanvas/df104.py) list(APPEND root7_veto rcanvas/df105.py) endif() + if(MSVC AND NOT win_broken_tests) + #---EOS is not supported on Windows + list(APPEND root7_veto rcanvas/df104.py) + list(APPEND root7_veto rcanvas/df105.py) + endif() else() file(GLOB v7_veto_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ v7/*.py v7/*.cxx v7/*/*.cxx v7/*.C v7/*/*.C rcanvas/*.py rcanvas/*.cxx) list(APPEND root7_veto ${v7_veto_files}) From 4ae2b7787d2674bbe676899c32decc19829ee518 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Wed, 22 Sep 2021 10:17:09 -0500 Subject: [PATCH 153/577] In ~TTree, reset fDirectory to nullptr sooner. Delaying is no longer necessary since the introduction of TFriendElement::fOwnFile in commit 115203c12b3cb50638eaea91133bfe2aa2c9b85f --- tree/tree/src/TTree.cxx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index ff71dc2918966..92dccf5728480 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -961,6 +961,11 @@ TTree::~TTree() // Get rid of our branches, note that this will also release // any memory allocated by TBranchElement::SetAddress(). fBranches.Delete(); + + // The TBranch destructor is using fDirectory to detect whether it + // owns the TFile that contains its data (See TBranch::~TBranch) + fDirectory = nullptr; + // FIXME: We must consider what to do with the reset of these if we are a clone. delete fPlayer; fPlayer = 0; @@ -1013,9 +1018,6 @@ TTree::~TTree() fClusterRangeEnd = 0; delete [] fClusterSize; fClusterSize = 0; - // Must be done after the destruction of friends. - // Note: We do *not* own our directory. - fDirectory = 0; if (fTransientBuffer) { delete fTransientBuffer; From 8b655852bb725be5f81bada109e805360cad5e3f Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Wed, 22 Sep 2021 10:52:20 -0500 Subject: [PATCH 154/577] Prevent a TTree from calling its won RecursiveRemove. Call RecursiveRemove early in the TTree destructor (rather than last thing), to remove the tree from any list (like another TTree's list of clones) to avoid that the destructor's deletion of item (eg. the list of friends), provoke a call to this same TTree's RecursiveRemove which will try to call the RecursiveRemove on the item being deleted. An alternative would be to replace the pattern. `delete fFriends; fFriends = nullptr;` with `auto tmp = fFriends; fFriends = nullptr; delete tmp;` This fixes issue #9017 where we had a tear down crash because: ~TTree call delete fFriends which call RecursiveRemove which reach another TTree's list of clone where its find the (original) TTree and call its RecursiveRemove which tries (and fail) to call RecursiveRemove on fFriends --- tree/tree/src/TTree.cxx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index 92dccf5728480..8606bc5e1965f 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -939,6 +939,12 @@ TTree::~TTree() TFile *file = fDirectory->GetFile(); MoveReadCache(file,0); } + + // Remove the TTree from any list (linked to to the list of Cleanups) to avoid the unnecessary call to + // this RecursiveRemove while we delete our content. + ROOT::CallRecursiveRemoveIfNeeded(*this); + ResetBit(kMustCleanup); // Don't redo it. + // We don't own the leaves in fLeaves, the branches do. fLeaves.Clear(); // I'm ready to destroy any objects allocated by From df0fe693d90f88c7dcad35699ec924fc556ec78c Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 24 Sep 2021 16:32:48 +0200 Subject: [PATCH 155/577] Draw the palette horizontally (#9028) * Draw the palette horizontally * no message * Use NDC to compute kHorizontal * New example showing how position a palette. --- README/ReleaseNotes/v626/index.md | 2 ++ hist/histpainter/src/TPaletteAxis.cxx | 48 ++++++++++++++++++--------- tutorials/hist/movepalette.C | 43 ++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 16 deletions(-) create mode 100644 tutorials/hist/movepalette.C diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index 971bf8e78cf00..0a2a96558b564 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -160,6 +160,8 @@ The class version of `RooAbsArg` was incremented from 7 to 8 in this release. In - Implement the option `X+` and `Y+` for reverse axis on TGraph. - Offsets for axis titles with absolute-sized fonts (size%10 == 3) are now relative only to the font size (i.e. no longer relative to pad dimensions). +- In `TPaletteAxis` when the palette width is bigger than the palette height, the palette + in automatically drawn horizontally. ## 3D Graphics Libraries diff --git a/hist/histpainter/src/TPaletteAxis.cxx b/hist/histpainter/src/TPaletteAxis.cxx index af23644233be0..2db40abc70ccb 100644 --- a/hist/histpainter/src/TPaletteAxis.cxx +++ b/hist/histpainter/src/TPaletteAxis.cxx @@ -406,7 +406,8 @@ void TPaletteAxis::Paint(Option_t *) Double_t wmax = fH->GetMaximum(); Double_t wlmin = wmin; Double_t wlmax = wmax; - Double_t y1, y2, w1, w2, zc; + Double_t b1, b2, w1, w2, zc; + Bool_t kHorizontal = false; if ((wlmax - wlmin) <= 0) { Double_t mz = wlmin * 0.1; @@ -417,9 +418,10 @@ void TPaletteAxis::Paint(Option_t *) wmax = wlmax; } + if (GetX2NDC()-GetX1NDC() > GetY2NDC()-GetY1NDC()) kHorizontal = true; + if (gPad->GetLogz()) { - if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1, - (Double_t)0.001 * wmax); + if (wmin <= 0 && wmax > 0) wmin = TMath::Min((Double_t)1, (Double_t)0.001 * wmax); wlmin = TMath::Log10(wmin); wlmax = TMath::Log10(wmax); } @@ -440,10 +442,12 @@ void TPaletteAxis::Paint(Option_t *) label = new TLatex(); label->SetTextFont(fAxis.GetLabelFont()); label->SetTextColor(fAxis.GetLabelColor()); - label->SetTextAlign(kHAlignLeft+kVAlignCenter); + if (kHorizontal) label->SetTextAlign(kHAlignCenter+kVAlignTop); + else label->SetTextAlign(kHAlignLeft+kVAlignCenter); line = new TLine(); line->SetLineColor(fAxis.GetLineColor()); - line->PaintLine(xmax, ymin, xmax, ymax); + if (kHorizontal) line->PaintLine(xmin, ymin, xmax, ymin); + else line->PaintLine(xmax, ymin, xmax, ymax); } Double_t scale = ndivz / (wlmax - wlmin); for (Int_t i = 0; i < ndivz; i++) { @@ -463,8 +467,13 @@ void TPaletteAxis::Paint(Option_t *) } if (w2 <= wlmin) continue; - y1 = ymin + (w1 - wlmin) * (ymax - ymin) / ws; - y2 = ymin + (w2 - wlmin) * (ymax - ymin) / ws; + if (kHorizontal) { + b1 = xmin + (w1 - wlmin) * (xmax - xmin) / ws; + b2 = xmin + (w2 - wlmin) * (xmax - xmin) / ws; + } else { + b1 = ymin + (w1 - wlmin) * (ymax - ymin) / ws; + b2 = ymin + (w2 - wlmin) * (ymax - ymin) / ws; + } if (fH->TestBit(TH1::kUserContour)) { color = i; @@ -475,7 +484,8 @@ void TPaletteAxis::Paint(Option_t *) theColor = Int_t((color + 0.99) * Double_t(ncolors) / Double_t(ndivz)); SetFillColor(gStyle->GetColorPalette(theColor)); TAttFill::Modify(); - gPad->PaintBox(xmin, y1, xmax, y2); + if (kHorizontal) gPad->PaintBox(b1, ymin, b2, ymax); + else gPad->PaintBox(xmin, b1, xmax, b2); // case option "CJUST": put labels directly if (label) { Double_t lof = fAxis.GetLabelOffset()*(gPad->GetUxmax()-gPad->GetUxmin()); @@ -488,16 +498,21 @@ void TPaletteAxis::Paint(Option_t *) zlab = TMath::Power(10, zlab); } // make sure labels dont overlap - if (i == 0 || (y1 - prevlab) > 1.5*lsize_user) { - label->PaintLatex(xmax + lof, y1, 0, lsize, Form("%g", zlab)); - prevlab = y1; + if (i == 0 || (b1 - prevlab) > 1.5*lsize_user) { + if (kHorizontal) label->PaintLatex(b1, ymin - lof, 0, lsize, Form("%g", zlab)); + else label->PaintLatex(xmax + lof, b1, 0, lsize, Form("%g", zlab)); + prevlab = b1; } - line->PaintLine(xmax-tlength, y1, xmax, y1); + if (kHorizontal) line->PaintLine(b2, ymin+tlength, b2, ymin); + else line->PaintLine(xmax-tlength, b1, xmax, b1); if (i == ndivz-1) { // label + tick at top of axis - if ((y2 - prevlab > 1.5*lsize_user)) - label->PaintLatex(xmax + lof, y2, 0, lsize, Form("%g",fH->GetMaximum())); - line->PaintLine(xmax-tlength, y2, xmax, y2); + if ((b2 - prevlab > 1.5*lsize_user)) { + if (kHorizontal) label->PaintLatex(b2, ymin - lof, 0, lsize, Form("%g",fH->GetMaximum())); + else label->PaintLatex(xmax + lof, b2, 0, lsize, Form("%g",fH->GetMaximum())); + } + if (kHorizontal) line->PaintLine(b1, ymin+tlength, b1, ymin); + else line->PaintLine(xmax-tlength, b2, xmax, b2); } } } @@ -528,7 +543,8 @@ void TPaletteAxis::Paint(Option_t *) delete line; } else { // default - fAxis.PaintAxis(xmax, ymin, xmax, ymax, wmin, wmax, ndiv, chopt); + if (kHorizontal) fAxis.PaintAxis(xmin, ymin, xmax, ymin, wmin, wmax, ndiv, chopt); + else fAxis.PaintAxis(xmax, ymin, xmax, ymax, wmin, wmax, ndiv, chopt); } } diff --git a/tutorials/hist/movepalette.C b/tutorials/hist/movepalette.C new file mode 100644 index 0000000000000..47125e41b693c --- /dev/null +++ b/tutorials/hist/movepalette.C @@ -0,0 +1,43 @@ +/// \file +/// \ingroup tutorial_hist +/// \notebook +/// +/// When an histogram is drawn with the option `COLZ, a palette is automatically drawn +/// vertically on the right side of the plot. It is possible to move and resize this +/// vertical palette as shown on the left plot. The right plot demonstrates that, when the +/// width of the palette is larger than its height, the palette is automatically drawn +/// horizontally. +/// +/// \macro_image +/// \macro_code +/// +/// \author Olivier Couet + +void movepalette() +{ + auto c = new TCanvas("", "",0,0,1100,550); + c->Divide(2,1); + gStyle->SetOptStat(0); + + auto h1 = new TH2D("h1","h1",40,-4,4,40,-20,20); + auto h2 = new TH2D("h2","h2",40,-4,4,40,-20,20); + float px, py; + for (int i = 0; i < 25000; i++) { + gRandom->Rannor(px,py); h1->Fill(px,5*py); + gRandom->Rannor(px,py); h2->Fill(px,5*py); + } + + TPad *p1 = (TPad *)c->cd(1); + TPad *p2 = (TPad *)c->cd(2); + + p1->SetRightMargin(0.15); + auto palette1 = new TPaletteAxis(4.05,-15,4.5,15,h1); + h1->GetListOfFunctions()->Add(palette1); + + p2->SetBottomMargin(0.2); + auto palette2 = new TPaletteAxis(-3.,-25,3.,-23,h2); + h2->GetListOfFunctions()->Add(palette2); + + p1->cd(); h1->Draw("colz"); + p2->cd(); h2->Draw("colz"); +} \ No newline at end of file From 185c7f166151d9de37ba56094773660a145cc540 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 23 Sep 2021 17:20:30 +0200 Subject: [PATCH 156/577] [cmake] Checkout the correct `roottest` head/tag if `root` is @latest-stable If the current checked out branch is `latest-stable`, resolve it to the latest merged head/tag (i.e. latest-stable^2), and use that to clone `roottest`, e.g. ``` $ git for-each-ref --points-at=latest-stable^2 --format=%(refname:short) v6-24-06 $ git clone -b v6-24-06 https://github.com/root-project/roottest.git ``` Closes issue #8783. --- CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a04e93c36e2d..fcca779e36095 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -626,6 +626,13 @@ if(testing) set(GIT_BRANCH v${ROOT_MAJOR_VERSION}-${ROOT_MINOR_VERSION}-${ROOT_PATCH_VERSION}) endif() + # Resolve the `latest-stable` branch to the latest merged head/tag + if("${GIT_BRANCH}" STREQUAL "latest-stable") + execute_process(COMMAND ${GIT_EXECUTABLE} for-each-ref --points-at=latest-stable^2 --format=%\(refname:short\) + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} ls-remote --heads https://github.com/root-project/roottest.git ${GIT_BRANCH} From cbe17db28a42dfc9ffc777741c174a412012842e Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 23 Sep 2021 17:31:33 +0200 Subject: [PATCH 157/577] [cmake] Support checkout of `roottest` at a revision given by a tag If the checked out ref in `root` is a tag, `roottest` is not cloned at the expected revision, i.e. current implementation only works for heads. This commit fixes the issue. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fcca779e36095..33e97687bb6e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -619,7 +619,7 @@ if(testing) find_package(Git REQUIRED) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.git) - execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + execute_process(COMMAND ${GIT_EXECUTABLE} for-each-ref --points-at=HEAD --count=1 --format=%\(refname:short\) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) else() @@ -634,7 +634,7 @@ if(testing) endif() execute_process(COMMAND - ${GIT_EXECUTABLE} ls-remote --heads + ${GIT_EXECUTABLE} ls-remote --heads --tags https://github.com/root-project/roottest.git ${GIT_BRANCH} OUTPUT_VARIABLE ROOTTEST_GIT_BRANCH) From 7b3568b57a4d3515ee5b9163197e5c8d713b567d Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 04:39:44 +0200 Subject: [PATCH 158/577] [credits] Provide updated information --- README/CREDITS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README/CREDITS b/README/CREDITS index 414945010fa98..4c3a543d86e42 100644 --- a/README/CREDITS +++ b/README/CREDITS @@ -615,8 +615,9 @@ E: loizides@MIT.EDU D: PROOF testing and debugging N: Javier Lopez-Gomez -E: jalopezg@inf.uc3m.es -D: Cling support for redefinitions +E: j.lopez@cern.ch +D: Cling support for redefinitions; cling improvements +D: RNTuple/DAOS integration N: Johan Lundberg E: johan.lundberg@cern.ch From 4fab77f16585c00adc0a94caa3bdb672957bc825 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 04:40:53 +0200 Subject: [PATCH 159/577] [relnotes] Update v6.26 release notes --- README/ReleaseNotes/v626/index.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index 0a2a96558b564..141faf0d2a0f0 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -24,6 +24,7 @@ The following people have contributed to this new version: Enrico Guiraud, CERN/SFT,\ Jonas Hahnfeld, CERN/SFT,\ Sergey Linev, GSI,\ + Javier Lopez-Gomez, CERN/SFT,\ Pere Mato, CERN/SFT,\ Lorenzo Moneta, CERN/SFT,\ Axel Naumann, CERN/SFT,\ @@ -49,6 +50,17 @@ The following people have contributed to this new version: ## Core Libraries +### Interpreter + +- As of v6.26, cling diagnostic messages can be redirected to the ROOT error handler. Users may enable/disable this via `TCling::ReportDiagnosticsToErrorHandler()`, e.g. +```cpp +root [1] gInterpreter->ReportDiagnosticsToErrorHandler(); +root [2] int f() { return; } +Error in : ROOT_prompt_2:1:11: non-void function 'f' should return a value [-Wreturn-type] +int f() { return; } + ^ +``` +More details at [PR #8737](https://github.com/root-project/root/pull/8737). ## I/O Libraries From e433892ef3c2740c71ae5513b9372f1f2cfed5cb Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 8 Jul 2021 16:03:06 -0700 Subject: [PATCH 160/577] Fix problem with holder map and reuse --- graf3d/eve7/src/REveDataProxyBuilderBase.cxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/graf3d/eve7/src/REveDataProxyBuilderBase.cxx b/graf3d/eve7/src/REveDataProxyBuilderBase.cxx index e08d5523a8bfc..52cd3da27756c 100644 --- a/graf3d/eve7/src/REveDataProxyBuilderBase.cxx +++ b/graf3d/eve7/src/REveDataProxyBuilderBase.cxx @@ -117,9 +117,7 @@ void REveDataProxyBuilderBase::Build() { pmgr->SubImportChildren(holder, *parentIt); ++parentIt; - } - else if (cnt < itemSize) - { + } else if (cnt < itemSize) { // new product holder pmgr->SubImportElements(holder, projectedProductAsElement); } From 8858c94829f68dd996e3c99e99daefcf3bde1557 Mon Sep 17 00:00:00 2001 From: alja Date: Mon, 12 Jul 2021 14:10:43 -0700 Subject: [PATCH 161/577] Improve readibility of Build() function --- graf3d/eve7/src/REveDataProxyBuilderBase.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/graf3d/eve7/src/REveDataProxyBuilderBase.cxx b/graf3d/eve7/src/REveDataProxyBuilderBase.cxx index 52cd3da27756c..e08d5523a8bfc 100644 --- a/graf3d/eve7/src/REveDataProxyBuilderBase.cxx +++ b/graf3d/eve7/src/REveDataProxyBuilderBase.cxx @@ -117,7 +117,9 @@ void REveDataProxyBuilderBase::Build() { pmgr->SubImportChildren(holder, *parentIt); ++parentIt; - } else if (cnt < itemSize) { + } + else if (cnt < itemSize) + { // new product holder pmgr->SubImportElements(holder, projectedProductAsElement); } From c675582e731c86603570d6014960844812ad7233 Mon Sep 17 00:00:00 2001 From: alja Date: Fri, 11 Jun 2021 15:24:22 -0700 Subject: [PATCH 162/577] New lego type --- ui5/eve7/controller/Lego.controller.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index d7b09a2f7a416..2b0322aeb4219 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -35,7 +35,6 @@ sap.ui.define([ console.log("viewer", eviewer); let sceneInfo = eviewer.childs[0]; let sceneId = sceneInfo.fSceneId; - this.mgr.RegisterController(this); this.mgr.RegisterSceneReceiver(sceneId, this); From 8addb566179a75e1c26680b805370287af9c4c7b Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 29 Jul 2021 11:01:45 -0700 Subject: [PATCH 163/577] Redraw canvas on scene change --- ui5/eve7/controller/Lego.controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index 2b0322aeb4219..b36ceabdbc2ed 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -47,6 +47,7 @@ sap.ui.define([ ResizeHandler.register(this.getView(), this.onResize.bind(this)); + this.eve_lego = chld; this.canvas_json = JSROOT.parse( atob(chld.fTitle) ); // console.log(JSON.stringify(this.canvas_json)); }, @@ -76,6 +77,9 @@ sap.ui.define([ }, endChanges: function (oEvent) { + let domref = this.byId("legoPlotPlace").getDomRef(); + this.canvas_json = JSROOT.parse( atob(this.eve_lego.fTitle) ); + JSROOT.redraw(domref, this.canvas_json); }, elementRemoved: function (elId) { From 1ccf8ab079e448510ed8d33e2c7a188ed4557784 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 11 Aug 2021 09:57:37 -0700 Subject: [PATCH 164/577] Add activity time stamps for last connection and last MIR --- graf3d/eve7/inc/ROOT/REveManager.hxx | 5 +++++ graf3d/eve7/src/REveManager.cxx | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/graf3d/eve7/inc/ROOT/REveManager.hxx b/graf3d/eve7/inc/ROOT/REveManager.hxx index 8be3c01f9357a..88f1b33c60d54 100644 --- a/graf3d/eve7/inc/ROOT/REveManager.hxx +++ b/graf3d/eve7/inc/ROOT/REveManager.hxx @@ -83,6 +83,9 @@ public: std::condition_variable fCV{}; EServerState fVal{Waiting}; + + std::time_t fMIRTime{std::time(nullptr)}; + std::time_t fDisconnectTime{std::time(nullptr)}; }; class MIR @@ -266,6 +269,8 @@ public: void Show(const RWebDisplayArgs &args = ""); std::shared_ptr ShowGeometry(const RWebDisplayArgs &args = ""); + + void GetClientActivityTime(std::time_t& lastMIR, std::time_t& lastDisconnect); }; R__EXTERN REveManager* gEve; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 23aa806dc5024..d340ab3bace38 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -697,6 +697,7 @@ void REveManager::WindowConnect(unsigned connid) fServerState.fCV.wait(lock); } + fServerState.fDisconnectTime = 0; fConnList.emplace_back(connid); printf("connection established %u\n", connid); @@ -763,6 +764,10 @@ void REveManager::WindowDisconnect(unsigned connid) } fWorld->RemoveSubscriber(connid); } + + if (fConnList.empty()) + fServerState.fDisconnectTime = std::time(nullptr); + fServerState.fCV.notify_all(); } @@ -828,6 +833,7 @@ void REveManager::WindowData(unsigned connid, const std::string &arg) void REveManager::ScheduleMIR(const std::string &cmd, ElementId_t id, const std::string& ctype) { std::unique_lock lock(fServerState.fMutex); + fServerState.fMIRTime = std::time(nullptr); fMIRqueue.push(std::shared_ptr(new MIR(cmd, id, ctype))); if (fServerState.fVal == ServerState::Waiting) fServerState.fCV.notify_all(); @@ -1089,6 +1095,15 @@ void REveManager::EndChange() fServerState.fCV.notify_all(); } + +//____________________________________________________________________ +void REveManager::GetClientActivityTime(std::time_t& lastMIR, std::time_t& lastDisconnect) +{ + std::unique_lock lock(fServerState.fMutex); + lastMIR = fServerState.fMIRTime; + lastDisconnect = fServerState.fDisconnectTime; +} + /** \class REveManager::ChangeGuard \ingroup REve RAII guard for locking Eve manager (ctor) and processing changes (dtor). From f91a0d0e58375be702bb7003f89faae1fbd4cbdd Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 11 Aug 2021 10:39:17 -0700 Subject: [PATCH 165/577] Set last MIR time on WindowConnect --- graf3d/eve7/src/REveManager.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index d340ab3bace38..448b60a2dd12d 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -692,12 +692,14 @@ void REveManager::QuitRoot() void REveManager::WindowConnect(unsigned connid) { std::unique_lock lock(fServerState.fMutex); + + fServerState.fMIRTime = std::time(nullpt); + fServerState.fDisconnectTime = 0; while (fServerState.fVal == ServerState::UpdatingScenes) { fServerState.fCV.wait(lock); } - fServerState.fDisconnectTime = 0; fConnList.emplace_back(connid); printf("connection established %u\n", connid); From dbe68539c0cebaf628eff9de9642d779911fa26a Mon Sep 17 00:00:00 2001 From: alja Date: Tue, 17 Aug 2021 10:58:00 -0700 Subject: [PATCH 166/577] Access client status with struct --- graf3d/eve7/inc/ROOT/REveManager.hxx | 13 +++++++++---- graf3d/eve7/src/REveManager.cxx | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/graf3d/eve7/inc/ROOT/REveManager.hxx b/graf3d/eve7/inc/ROOT/REveManager.hxx index 88f1b33c60d54..5be7d206a4e50 100644 --- a/graf3d/eve7/inc/ROOT/REveManager.hxx +++ b/graf3d/eve7/inc/ROOT/REveManager.hxx @@ -83,9 +83,6 @@ public: std::condition_variable fCV{}; EServerState fVal{Waiting}; - - std::time_t fMIRTime{std::time(nullptr)}; - std::time_t fDisconnectTime{std::time(nullptr)}; }; class MIR @@ -116,6 +113,13 @@ public: ~Logger() { RLogManager::Get().Remove(fHandler); } }; + struct ClientStatus + { + int fNConnections{-1}; + std::time_t fMIRTime{std::time(nullptr)}; + std::time_t fDisconnectTime{std::time(nullptr)}; + }; + protected: RExceptionHandler *fExcHandler{nullptr}; //!< exception handler @@ -158,6 +162,7 @@ protected: std::unordered_map > fMethCallMap; Logger fLogger; + ClientStatus fClientStatus; void WindowConnect(unsigned connid); void WindowData(unsigned connid, const std::string &arg); @@ -270,7 +275,7 @@ public: std::shared_ptr ShowGeometry(const RWebDisplayArgs &args = ""); - void GetClientActivityTime(std::time_t& lastMIR, std::time_t& lastDisconnect); + void GetClientStatus(ClientStatus&); }; R__EXTERN REveManager* gEve; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 448b60a2dd12d..11102f5eddac9 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -693,8 +693,6 @@ void REveManager::WindowConnect(unsigned connid) { std::unique_lock lock(fServerState.fMutex); - fServerState.fMIRTime = std::time(nullpt); - fServerState.fDisconnectTime = 0; while (fServerState.fVal == ServerState::UpdatingScenes) { fServerState.fCV.wait(lock); @@ -703,6 +701,9 @@ void REveManager::WindowConnect(unsigned connid) fConnList.emplace_back(connid); printf("connection established %u\n", connid); + fClientStatus.fMIRTime = std::time(nullptr); + fClientStatus.fNConnections = fConnList.size(); + // This prepares core and render data buffers. printf("\nEVEMNG ............. streaming the world scene.\n"); @@ -767,8 +768,8 @@ void REveManager::WindowDisconnect(unsigned connid) fWorld->RemoveSubscriber(connid); } - if (fConnList.empty()) - fServerState.fDisconnectTime = std::time(nullptr); + fClientStatus.fDisconnectTime = std::time(nullptr); + fClientStatus.fNConnections = fConnList.size(); fServerState.fCV.notify_all(); } @@ -835,7 +836,7 @@ void REveManager::WindowData(unsigned connid, const std::string &arg) void REveManager::ScheduleMIR(const std::string &cmd, ElementId_t id, const std::string& ctype) { std::unique_lock lock(fServerState.fMutex); - fServerState.fMIRTime = std::time(nullptr); + fClientStatus.fMIRTime = std::time(nullptr); fMIRqueue.push(std::shared_ptr(new MIR(cmd, id, ctype))); if (fServerState.fVal == ServerState::Waiting) fServerState.fCV.notify_all(); @@ -1099,11 +1100,12 @@ void REveManager::EndChange() //____________________________________________________________________ -void REveManager::GetClientActivityTime(std::time_t& lastMIR, std::time_t& lastDisconnect) +void REveManager::GetClientStatus(ClientStatus& cst) { std::unique_lock lock(fServerState.fMutex); - lastMIR = fServerState.fMIRTime; - lastDisconnect = fServerState.fDisconnectTime; + cst.fMIRTime = fClientStatus.fMIRTime; + cst.fDisconnectTime = fClientStatus.fDisconnectTime; + cst.fNConnections = fClientStatus.fNConnections; } /** \class REveManager::ChangeGuard From da99ed2ab9a4cd20258078cc6e797192afd713a8 Mon Sep 17 00:00:00 2001 From: alja Date: Fri, 20 Aug 2021 15:42:44 -0700 Subject: [PATCH 167/577] Add getter for filter expression --- graf3d/eve7/inc/ROOT/REveDataCollection.hxx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/graf3d/eve7/inc/ROOT/REveDataCollection.hxx b/graf3d/eve7/inc/ROOT/REveDataCollection.hxx index a2f5e163c45b8..1efad372054e1 100644 --- a/graf3d/eve7/inc/ROOT/REveDataCollection.hxx +++ b/graf3d/eve7/inc/ROOT/REveDataCollection.hxx @@ -141,6 +141,8 @@ public: void SetFilterExpr(const char* filter); void ApplyFilter(); + const char* GetFilterExpr(){return fFilterExpr.Data();} + Int_t GetNItems() const { return (Int_t) fItemList->fItems.size(); } void *GetDataPtr(Int_t i) const { return fItemList->fItems[i]->GetDataPtr(); } const REveDataItem* GetDataItem(Int_t i) const { return fItemList->fItems[i]; } From 144bff70349f736991a385d59c9fb4e29a3fe8b1 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 1 Sep 2021 12:28:13 -0700 Subject: [PATCH 168/577] Handle case where table definition originates from base class --- graf3d/eve7/src/REveTableInfo.cxx | 114 +++++++++++++++++------------- 1 file changed, 65 insertions(+), 49 deletions(-) diff --git a/graf3d/eve7/src/REveTableInfo.cxx b/graf3d/eve7/src/REveTableInfo.cxx index 54970d5ce17c6..9a4caf4d1efc3 100644 --- a/graf3d/eve7/src/REveTableInfo.cxx +++ b/graf3d/eve7/src/REveTableInfo.cxx @@ -25,6 +25,57 @@ using namespace ROOT::Experimental; +namespace { + struct TableDictHelper { + void fillPublicMethods(REveTableHandle::Entries_t &entries, TClass *c) + { + static size_t maxEnt = 3; + TMethod *meth; + TIter next(c->GetListOfAllPublicMethods()); + while ((meth = (TMethod *)next()) && entries.size() < maxEnt) { + // take only methods without arguments + if (!meth->GetListOfMethodArgs()->First()) { + std::string mn = meth->GetName(); + std::string exp = "i." + mn + "()"; + + TDataType *dt = gROOT->GetType(meth->GetReturnTypeName()); + if (dt) { + int t = dt->GetType(); + if (t == EDataType::kInt_t || t == EDataType::kUInt_t || t == EDataType::kLong_t || + t == EDataType::kULong_t || t == EDataType::kLong64_t || t == EDataType::kULong64_t || + t == EDataType::kBool_t) + entries.push_back(REveTableEntry(mn, 0, exp)); + else if (t == EDataType::kFloat_t || t == EDataType::kDouble_t || t == EDataType::kDouble32_t) + entries.push_back(REveTableEntry(mn, 3, exp)); + } + } + } + + // look in the base classes + TBaseClass *base; + TIter blnext(c->GetListOfBases()); + while ((base = (TBaseClass *)blnext())) { + fillPublicMethods(entries, base->GetClassPointer()); + } + } + + TClass *searchMatchInBaseClasses(TClass *c, REveTableHandle::Specs_t &specs) + { + TBaseClass *base; + TIter blnext(c->GetListOfBases()); + while ((base = (TBaseClass *)blnext())) { + auto bs = specs.find(base->GetName()); + if (bs != specs.end()) { + return base->GetClassPointer(); + } + return searchMatchInBaseClasses(base->GetClassPointer(), specs); + } + return nullptr; + } + }; + +} + REveTableViewInfo::REveTableViewInfo(const std::string &name, const std::string &title) : REveElement(name, title), fConfigChanged(false) { @@ -61,6 +112,8 @@ void REveTableViewInfo::AddNewColumnToCurrentCollection(const char* expr, const << (size_t)(&fooptr) << ") = [](" << icls->GetName() << "* p){" << icls->GetName() << " &i=*p; return (" << expr << "); }"; + // make ProcessLine() call to check if expr is valid + // there may be more efficient check int err; gROOT->ProcessLine(s.str().c_str(), &err); if (err != TInterpreter::kNoError) { @@ -69,8 +122,19 @@ void REveTableViewInfo::AddNewColumnToCurrentCollection(const char* expr, const } fConfigChanged = true; - table(col->GetItemClass()->GetName()).column(title, prec, expr); + auto sit = fSpecs.find(icls->GetName()); + if (sit != fSpecs.end()) { + table(icls->GetName()).column(title, prec, expr); + } else { + TableDictHelper helper; + TClass *b = helper.searchMatchInBaseClasses(icls, fSpecs); + std::string n = b->GetName(); + for (REveTableHandle::Entries_t::iterator e = fSpecs[n].begin(); e != fSpecs[n].end(); ++e) { + table(col->GetItemClass()->GetName()).column(e->fName, e->fPrecision, e->fExpression); + } + table(col->GetItemClass()->GetName()).column(title, prec, expr); + } for (auto &it : fDelegates) it(); @@ -84,54 +148,6 @@ void REveTableViewInfo::AddNewColumnToCurrentCollection(const char* expr, const // Look for definition also in base classes REveTableHandle::Entries_t &REveTableViewInfo::RefTableEntries(std::string cname) { - struct TableDictHelper { - void fillPublicMethods(REveTableHandle::Entries_t &entries, TClass *c) - { - static size_t maxEnt = 3; - TMethod *meth; - TIter next(c->GetListOfAllPublicMethods()); - while ((meth = (TMethod *)next()) && entries.size() < maxEnt) { - // take only methods without arguments - if (!meth->GetListOfMethodArgs()->First()) { - std::string mn = meth->GetName(); - std::string exp = "i." + mn + "()"; - - TDataType *dt = gROOT->GetType(meth->GetReturnTypeName()); - if (dt) { - int t = dt->GetType(); - if (t == EDataType::kInt_t || t == EDataType::kUInt_t || t == EDataType::kLong_t || - t == EDataType::kULong_t || t == EDataType::kLong64_t || t == EDataType::kULong64_t || - t == EDataType::kBool_t) - entries.push_back(REveTableEntry(mn, 0, exp)); - else if (t == EDataType::kFloat_t || t == EDataType::kDouble_t || t == EDataType::kDouble32_t) - entries.push_back(REveTableEntry(mn, 3, exp)); - } - } - } - - // look in the base classes - TBaseClass *base; - TIter blnext(c->GetListOfBases()); - while ((base = (TBaseClass *)blnext())) { - fillPublicMethods(entries, base->GetClassPointer()); - } - } - - TClass *searchMatchInBaseClasses(TClass *c, REveTableHandle::Specs_t &specs) - { - TBaseClass *base; - TIter blnext(c->GetListOfBases()); - while ((base = (TBaseClass *)blnext())) { - auto bs = specs.find(base->GetName()); - if (bs != specs.end()) { - return base->GetClassPointer(); - } - return searchMatchInBaseClasses(base->GetClassPointer(), specs); - } - return nullptr; - } - }; - TableDictHelper helper; auto search = fSpecs.find(cname); if (search != fSpecs.end()) { From dd3a544f26bb496d662e42a72fdc000575fcb8f2 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 1 Sep 2021 12:31:36 -0700 Subject: [PATCH 169/577] Make CreateProduct() virtual --- graf3d/eve7/inc/ROOT/REveDataProxyBuilderBase.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf3d/eve7/inc/ROOT/REveDataProxyBuilderBase.hxx b/graf3d/eve7/inc/ROOT/REveDataProxyBuilderBase.hxx index 128c5f13188a1..88b4989c705e0 100644 --- a/graf3d/eve7/inc/ROOT/REveDataProxyBuilderBase.hxx +++ b/graf3d/eve7/inc/ROOT/REveDataProxyBuilderBase.hxx @@ -53,7 +53,7 @@ public: void Build(); // virtual void Build(REveElement* product); - REveElement* CreateProduct(const std::string& viewType, const REveViewContext*); + virtual REveElement* CreateProduct(const std::string& viewType, const REveViewContext*); // void removePerViewProduct(const REveViewContext* vc); void FillImpliedSelected(REveElement::Set_t& impSet); From 7e8a4a3d28f6dc884a8da52d74019e168a7daaea Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 1 Sep 2021 12:35:36 -0700 Subject: [PATCH 170/577] Fix bug in visibility change update. --- graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx index 9fcf48e499817..e80ff1481682a 100644 --- a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx +++ b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx @@ -49,6 +49,15 @@ void REveDataSimpleProxyBuilder::Clean() CleanLocal(); } +//______________________________________________________________________________ +REveElement *REveDataSimpleProxyBuilder::CreateProduct(const std::string &viewType, const REveViewContext *viewContext) +{ + REveElement *productEl = REveDataProxyBuilderBase::CreateProduct(viewType, viewContext); + auto it = fProductMap.find(productEl); + if (it == fProductMap.end()) + fProductMap.emplace(productEl, new SPBProduct); + return productEl; +} //______________________________________________________________________________ REveCollectionCompound* REveDataSimpleProxyBuilder::CreateCompound(bool set_color, bool propagate_color_to_all_children) @@ -175,9 +184,10 @@ void REveDataSimpleProxyBuilder::ModelChanges(const REveDataCollection::Ids_t &i bool visible = ((!item->GetFiltered()) && item->GetRnrSelf()) && Collection()->GetRnrSelf(); auto sit = fProductMap.find(p->m_elements); - if (sit == fProductMap.end()) + if (sit == fProductMap.end()) { + std::error << "REveDataSimpleProxyBuilder::ModelChanges product not found!\n"; return; - + } auto spb = sit->second; REveCompound *holder = nullptr; auto hmit = spb->map.find(itemIdx); @@ -192,8 +202,9 @@ void REveDataSimpleProxyBuilder::ModelChanges(const REveDataCollection::Ids_t &i if (HaveSingleProduct()) Build(Collection()->GetDataPtr(itemIdx), itemIdx, holder, p->m_viewContext); else + BuildViewType(Collection()->GetDataPtr(itemIdx), itemIdx, holder, p->m_viewType, p->m_viewContext); - applyColorAttrToChildren(holder); + applyColorAttrToChildren(holder); p->m_elements->ProjectChild(holder); } else if (holder) { holder->SetRnrSelf(visible); From f05589d01586c89466f0317ecce3a3e3f57d0add Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 1 Sep 2021 12:41:40 -0700 Subject: [PATCH 171/577] Correction in REveDataSimpleProxyBuilder::ModelChanges() --- graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx | 2 ++ graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx index 9254908c2022b..d8dd5b637d6d2 100644 --- a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx +++ b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx @@ -48,6 +48,8 @@ public: typedef std::map > EProductMap_t; + virtual REveElement* CreateProduct(const std::string& viewType, const REveViewContext*) override; + protected: void Build(const REveDataCollection* iCollection, REveElement* product, const REveViewContext*) override; diff --git a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx index e80ff1481682a..20ff5a48e7348 100644 --- a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx +++ b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx @@ -185,7 +185,7 @@ void REveDataSimpleProxyBuilder::ModelChanges(const REveDataCollection::Ids_t &i auto sit = fProductMap.find(p->m_elements); if (sit == fProductMap.end()) { - std::error << "REveDataSimpleProxyBuilder::ModelChanges product not found!\n"; + std::cerr << "REveDataSimpleProxyBuilder::ModelChanges product not found!\n"; return; } auto spb = sit->second; From 0b8edf42899f2a50a444804c2bc1b265220073ad Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 2 Sep 2021 09:13:40 -0700 Subject: [PATCH 172/577] Comment debug messages. --- ui5/eve7/controller/EveTable.controller.js | 9 +-------- ui5/eve7/controller/GL.controller.js | 1 - ui5/eve7/controller/Lego.controller.js | 11 +++-------- ui5/eve7/controller/Main.controller.js | 8 +++----- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/ui5/eve7/controller/EveTable.controller.js b/ui5/eve7/controller/EveTable.controller.js index 8a3c0de3705e5..b161ea00095f4 100644 --- a/ui5/eve7/controller/EveTable.controller.js +++ b/ui5/eve7/controller/EveTable.controller.js @@ -76,7 +76,7 @@ sap.ui.define([ var oData = table.getContextByIndex(idx); if (oData) { let ui = oData.getPath().substring(6); - console.log("idx =", idx, "path idx = ", ui); + // console.log("idx =", idx, "path idx = ", ui); let itemList = pthis.collection.childs[0]; let secIdcs = [ui]; @@ -150,7 +150,6 @@ sap.ui.define([ updateSortMap() { // update sorted/unsorted idx map - console.log("updateSortMap"); let oTable = this.getView().byId("table"); let nr = oTable.getModel().oData.rows.length; if (!oTable.sortMap) @@ -218,8 +217,6 @@ sap.ui.define([ if (this.bindTableColumns) { // column definition - - console.log("bind table columns "); var columnData = []; columnData.push({ columnName: "Name" }); @@ -273,7 +270,6 @@ sap.ui.define([ let ent = sap.ui.getCore().byId("inputExp"); let sm = ent.getModel(); sm.setData(this.eveTable.fPublicFunctions); - console.log("SHOULD UPDATE SUGGESTION DATA") } this.bindTableColumns = false; @@ -290,7 +286,6 @@ sap.ui.define([ var oModel = new JSONModel(); var collection = this.mgr.GetElement(this.eveTable.fCollectionId); var clist = this.mgr.GetElement(collection.fMotherId); - // console.log("collection list ", clist); var mData = { "itemx": [ @@ -319,7 +314,6 @@ sap.ui.define([ }, onSceneCreate: function (element, id) { - console.log("EveTable onSceneChanged", id); this.locateEveTable(); this.buildTableHeader(); this.buildTableBody(true); @@ -361,7 +355,6 @@ sap.ui.define([ }, suggestionItemSelected: function (oEvent) { var oItem = oEvent.getParameter("selectedRow"); - console.log("sap.m.Input id with suggestion: selected item text is ------ ", oItem.getCells()); // fill in title if empty var it = sap.ui.getCore().byId("titleEx"); if ((it.getValue() && it.getValue().length) == false) { diff --git a/ui5/eve7/controller/GL.controller.js b/ui5/eve7/controller/GL.controller.js index e443c0d95b12b..ac1766ace12c4 100644 --- a/ui5/eve7/controller/GL.controller.js +++ b/ui5/eve7/controller/GL.controller.js @@ -256,7 +256,6 @@ sap.ui.define([ isEveCameraPerspective: function() { let vo = this.mgr.GetElement(this.eveViewerId); - console.log("compare ", vo.CameraType,"PerspXOZ" ); return vo.CameraType.startsWith("PerspXOZ"); } diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index b36ceabdbc2ed..6cfc455be3b86 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -25,21 +25,16 @@ sap.ui.define([ onInit: function () { let data = this.getView().getViewData(); - - console.log("LEGO onInit ", data); - this.mgr = data.mgr; this.eveViewerId = data.eveViewerId; let eviewer = this.mgr.GetElement(this.eveViewerId); - console.log("viewer", eviewer); let sceneInfo = eviewer.childs[0]; let sceneId = sceneInfo.fSceneId; this.mgr.RegisterController(this); this.mgr.RegisterSceneReceiver(sceneId, this); let scene = this.mgr.GetElement(sceneId); - console.log("Lego scene 2", scene); let chld = scene.childs[0]; let element = this.byId("legoX"); @@ -69,11 +64,11 @@ sap.ui.define([ }, onSceneCreate: function (element, id) { - console.log("LEGO onSceneCreate", id); + //console.log("LEGO onSceneCreate", id); }, sceneElementChange: function (el) { - console.log("LEGO element changed"); + //console.log("LEGO element changed"); }, endChanges: function (oEvent) { @@ -86,7 +81,7 @@ sap.ui.define([ }, SelectElement: function (selection_obj, element_id, sec_idcs) { - console.log("LEGO element selected", element_id); + // console.log("LEGO element selected", element_id); }, UnselectElement: function (selection_obj, element_id) { diff --git a/ui5/eve7/controller/Main.controller.js b/ui5/eve7/controller/Main.controller.js index 1a5c348e933bf..f98403a72d891 100644 --- a/ui5/eve7/controller/Main.controller.js +++ b/ui5/eve7/controller/Main.controller.js @@ -14,8 +14,6 @@ sap.ui.define(['sap/ui/core/Component', return Controller.extend("rootui5.eve7.controller.Main", { onInit: function () { - console.log('MAIN CONTROLLER INIT'); - this.mgr = new EveManager(); var conn_handle = Component.getOwnerComponentFor(this.getView()).getComponentData().conn_handle; @@ -59,7 +57,7 @@ sap.ui.define(['sap/ui/core/Component', viewItemPressed: function (elem, oEvent) { var item = oEvent.getSource(); - console.log('item pressed', item.getText(), elem); + // console.log('item pressed', item.getText(), elem); var name = item.getText(); if (name.indexOf(" ") > 0) name = name.substr(0, name.indexOf(" ")); @@ -84,7 +82,7 @@ sap.ui.define(['sap/ui/core/Component', } if (staged.length == 0) return; - console.log("FOUND viewers", viewers.length, "not yet exists", staged.length); + // console.log("FOUND viewers", viewers.length, "not yet exists", staged.length); if (staged.length > 1) { var vMenu = this.getView().byId("menuViewId"); @@ -139,7 +137,7 @@ sap.ui.define(['sap/ui/core/Component', }, onEveManagerInit: function() { - console.log("manager updated"); + // console.log("manager updated"); this.UpdateCommandsButtons(this.mgr.commands); this.updateViewers(); }, From 3fe61587a1412a21de2be5235d0e287c7527b575 Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 2 Sep 2021 10:37:21 -0700 Subject: [PATCH 173/577] Add getter for table specfication. --- graf3d/eve7/inc/ROOT/REveTableInfo.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf3d/eve7/inc/ROOT/REveTableInfo.hxx b/graf3d/eve7/inc/ROOT/REveTableInfo.hxx index 812088bd7b8d2..ad068395730ed 100644 --- a/graf3d/eve7/inc/ROOT/REveTableInfo.hxx +++ b/graf3d/eve7/inc/ROOT/REveTableInfo.hxx @@ -112,7 +112,7 @@ public: bool GetConfigChanged() const { return fConfigChanged; } - + REveTableHandle::Specs_t& RefSpecs() { return fSpecs; } private: int fDisplayedCollection{0}; std::vector fDelegates; From c0d8f6e9f57675e8dca71bd5d938b4c8d2561710 Mon Sep 17 00:00:00 2001 From: alja Date: Sun, 5 Sep 2021 21:36:22 -0700 Subject: [PATCH 174/577] Add navigation control or Lego view type --- ui5/eve7/controller/Lego.controller.js | 21 ++++++++++++++++++--- ui5/eve7/controller/Main.controller.js | 2 ++ ui5/eve7/manifest.json | 9 +++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index 6cfc455be3b86..b0472eee5fc35 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -25,8 +25,24 @@ sap.ui.define([ onInit: function () { let data = this.getView().getViewData(); - this.mgr = data.mgr; - this.eveViewerId = data.eveViewerId; + + if (data) { + this.setupManagerAndViewType(data.eveViewerId, data.mgr); + } + else { + UIComponent.getRouterFor(this).getRoute("View").attachPatternMatched(this.onViewObjectMatched, this); + } + }, + + onTableObjectMatched: function (oEvent) { + let args = oEvent.getParameter("arguments"); + this.setupManagerAndViewType(JSROOT.$eve7tmp.eveViewerId, JSROOT.$eve7tmp.mgr); + delete JSROOT.$eve7tmp; + }, + + setupManagerAndViewType: function (eveViewerId, mgr) { + this.eveViewerId = eveViewerId; + this.mgr = mgr; let eviewer = this.mgr.GetElement(this.eveViewerId); let sceneInfo = eviewer.childs[0]; @@ -46,7 +62,6 @@ sap.ui.define([ this.canvas_json = JSROOT.parse( atob(chld.fTitle) ); // console.log(JSON.stringify(this.canvas_json)); }, - onResize() { let domref = this.byId("legoPlotPlace").getDomRef(); diff --git a/ui5/eve7/controller/Main.controller.js b/ui5/eve7/controller/Main.controller.js index f98403a72d891..5d54fe0bee5a0 100644 --- a/ui5/eve7/controller/Main.controller.js +++ b/ui5/eve7/controller/Main.controller.js @@ -67,6 +67,8 @@ sap.ui.define(['sap/ui/core/Component', var oRouter = UIComponent.getRouterFor(this); if (name == "Table") oRouter.navTo("Table", { viewName: name }); + else if (name == "Lego") + oRouter.navTo("Lego", { viewName: name }); else oRouter.navTo("View", { viewName: name }); }, diff --git a/ui5/eve7/manifest.json b/ui5/eve7/manifest.json index 46f3e97f881f1..80929947e7746 100644 --- a/ui5/eve7/manifest.json +++ b/ui5/eve7/manifest.json @@ -43,6 +43,10 @@ "name": "View", "pattern": "view/:viewName:", "target": ["GL"] + }, { + "name": "Lego", + "pattern": "lego/:viewName:", + "target": ["Lego"] }, { "name": "Table", "pattern": "table/:viewName:", @@ -59,6 +63,11 @@ "clearAggregation": false, "viewName": "GL" }, + "Lego": { + "transition": "slide", + "clearAggregation": false, + "viewName": "Lego" + }, "Table": { "transition": "slide", "clearAggregation": false, From bfc699ce9130eed0e02efdbf2cd9c2265a868e0c Mon Sep 17 00:00:00 2001 From: alja Date: Tue, 7 Sep 2021 09:42:49 -0700 Subject: [PATCH 175/577] From Matevz/osschar -- move and expand structure for server status. --- graf3d/eve7/CMakeLists.txt | 1 + graf3d/eve7/inc/ROOT/REveManager.hxx | 12 +++------ graf3d/eve7/inc/ROOT/REveSystem.hxx | 40 ++++++++++++++++++++++++++++ graf3d/eve7/src/REveManager.cxx | 25 ++++++++++------- 4 files changed, 59 insertions(+), 19 deletions(-) create mode 100644 graf3d/eve7/inc/ROOT/REveSystem.hxx diff --git a/graf3d/eve7/CMakeLists.txt b/graf3d/eve7/CMakeLists.txt index 42ba9db04bf7e..74aab3544551a 100644 --- a/graf3d/eve7/CMakeLists.txt +++ b/graf3d/eve7/CMakeLists.txt @@ -46,6 +46,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTEve ROOT/REveSelection.hxx ROOT/REveShape.hxx ROOT/REveStraightLineSet.hxx + ROOT/REveSystem.hxx ROOT/REveTableInfo.hxx ROOT/REveTableProxyBuilder.hxx ROOT/REveTrack.hxx diff --git a/graf3d/eve7/inc/ROOT/REveManager.hxx b/graf3d/eve7/inc/ROOT/REveManager.hxx index 5be7d206a4e50..3428710d60139 100644 --- a/graf3d/eve7/inc/ROOT/REveManager.hxx +++ b/graf3d/eve7/inc/ROOT/REveManager.hxx @@ -13,6 +13,7 @@ #define ROOT7_REveManager #include +#include #include #include @@ -113,13 +114,6 @@ public: ~Logger() { RLogManager::Get().Remove(fHandler); } }; - struct ClientStatus - { - int fNConnections{-1}; - std::time_t fMIRTime{std::time(nullptr)}; - std::time_t fDisconnectTime{std::time(nullptr)}; - }; - protected: RExceptionHandler *fExcHandler{nullptr}; //!< exception handler @@ -162,7 +156,7 @@ protected: std::unordered_map > fMethCallMap; Logger fLogger; - ClientStatus fClientStatus; + REveServerStatus fServerStatus; void WindowConnect(unsigned connid); void WindowData(unsigned connid, const std::string &arg); @@ -275,7 +269,7 @@ public: std::shared_ptr ShowGeometry(const RWebDisplayArgs &args = ""); - void GetClientStatus(ClientStatus&); + void GetServerStatus(REveServerStatus&); }; R__EXTERN REveManager* gEve; diff --git a/graf3d/eve7/inc/ROOT/REveSystem.hxx b/graf3d/eve7/inc/ROOT/REveSystem.hxx new file mode 100644 index 0000000000000..c4602a9748cbf --- /dev/null +++ b/graf3d/eve7/inc/ROOT/REveSystem.hxx @@ -0,0 +1,40 @@ +// @(#)root/eve7:$Id$ +// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007, 2018 + +/************************************************************************* + * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT7_REveSystem +#define ROOT7_REveSystem + +#include "TSystem.h" +#include + +namespace ROOT { +namespace Experimental { + +// Have to be PODs so we can mem-copy them around or send them via IPC or network. + +struct REveServerStatus +{ + pid_t fPid = 0; + int fNConnects = 0; + int fNDisconnects = 0; + std::time_t fTStart = 0; + std::time_t fTLastMir = 0; + std::time_t fTLastConnect = 0; + std::time_t fTLastDisconnect = 0; + ProcInfo_t fProcInfo; // To be complemented with cpu1/5/15 and memgrowth1/5/15 on the collector side. + std::timespec fTReport = {0, 0}; + + int n_active_connections() const { return fNConnects - fNDisconnects; } +}; + +}} + +#endif diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 11102f5eddac9..100a71ea33259 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -20,6 +20,7 @@ #include #include #include +#include #include "TGeoManager.h" #include "TGeoMatrix.h" @@ -83,6 +84,9 @@ REveManager::REveManager() REX::gEve = this; + fServerStatus.fPid = gSystem->GetPid(); + fServerStatus.fTStart = std::time(nullptr); + fExcHandler = new RExceptionHandler; fGeometries = new TMap; @@ -701,8 +705,10 @@ void REveManager::WindowConnect(unsigned connid) fConnList.emplace_back(connid); printf("connection established %u\n", connid); - fClientStatus.fMIRTime = std::time(nullptr); - fClientStatus.fNConnections = fConnList.size(); + // QQQQ do we want mir-time here as well? maybe set it at the end of function? + // Note, this is all under lock, so nobody will get state out in between. + fServerStatus.fTLastMir = fServerStatus.fTLastConnect = std::time(nullptr); + ++fServerStatus.fNConnects; // This prepares core and render data buffers. printf("\nEVEMNG ............. streaming the world scene.\n"); @@ -768,8 +774,8 @@ void REveManager::WindowDisconnect(unsigned connid) fWorld->RemoveSubscriber(connid); } - fClientStatus.fDisconnectTime = std::time(nullptr); - fClientStatus.fNConnections = fConnList.size(); + fServerStatus.fTLastDisconnect = std::time(nullptr); + ++fServerStatus.fNDisconnects; fServerState.fCV.notify_all(); } @@ -836,7 +842,7 @@ void REveManager::WindowData(unsigned connid, const std::string &arg) void REveManager::ScheduleMIR(const std::string &cmd, ElementId_t id, const std::string& ctype) { std::unique_lock lock(fServerState.fMutex); - fClientStatus.fMIRTime = std::time(nullptr); + fServerStatus.fTLastMir = std::time(nullptr); fMIRqueue.push(std::shared_ptr(new MIR(cmd, id, ctype))); if (fServerState.fVal == ServerState::Waiting) fServerState.fCV.notify_all(); @@ -1098,14 +1104,13 @@ void REveManager::EndChange() fServerState.fCV.notify_all(); } - //____________________________________________________________________ -void REveManager::GetClientStatus(ClientStatus& cst) +void REveManager::GetServerStatus(REveServerStatus& st) { std::unique_lock lock(fServerState.fMutex); - cst.fMIRTime = fClientStatus.fMIRTime; - cst.fDisconnectTime = fClientStatus.fDisconnectTime; - cst.fNConnections = fClientStatus.fNConnections; + gSystem->GetProcInfo(&fServerStatus.fProcInfo); + std::timespec_get(&fServerStatus.fTReport, TIME_UTC); + st = fServerStatus; } /** \class REveManager::ChangeGuard From c73fce2fb95e2fa7e1f43e68050d7cf4181916f1 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 8 Sep 2021 09:58:04 -0700 Subject: [PATCH 176/577] Set size of canvas in the painter through the resize handler --- ui5/eve7/controller/Lego.controller.js | 44 +++++++++++++++----------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index b0472eee5fc35..62920f22c6865 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -25,16 +25,17 @@ sap.ui.define([ onInit: function () { let data = this.getView().getViewData(); - if (data) { this.setupManagerAndViewType(data.eveViewerId, data.mgr); } else { - UIComponent.getRouterFor(this).getRoute("View").attachPatternMatched(this.onViewObjectMatched, this); + UIComponent.getRouterFor(this).getRoute("Lego").attachPatternMatched(this.onViewObjectMatched, this); } + + ResizeHandler.register(this.getView(), this.onResize.bind(this)); }, - onTableObjectMatched: function (oEvent) { + onViewObjectMatched: function (oEvent) { let args = oEvent.getParameter("arguments"); this.setupManagerAndViewType(JSROOT.$eve7tmp.eveViewerId, JSROOT.$eve7tmp.mgr); delete JSROOT.$eve7tmp; @@ -51,35 +52,40 @@ sap.ui.define([ this.mgr.RegisterSceneReceiver(sceneId, this); let scene = this.mgr.GetElement(sceneId); - let chld = scene.childs[0]; let element = this.byId("legoX"); element.setHtmlText("Pointset infected by TCanvas / Lego Stack"); - ResizeHandler.register(this.getView(), this.onResize.bind(this)); - this.eve_lego = chld; - this.canvas_json = JSROOT.parse( atob(chld.fTitle) ); - // console.log(JSON.stringify(this.canvas_json)); + this.canvas_json = JSROOT.parse(atob(chld.fTitle)); }, - onResize() - { + onResize : function() { + // use timeout + if (this.resize_tmout) clearTimeout(this.resize_tmout); + if (this.canvas_painter) this.canvas_painter.CheckCanvasResize(); + this.resize_tmout = setTimeout(this.onResizeTimeout.bind(this), 250); // minimal latency + }, + drawHist: function () { let domref = this.byId("legoPlotPlace").getDomRef(); - - if ( ! this.jst_ptr) - { + if (!this.jst_ptr) { this.jst_ptr = 1; - JSROOT.draw(domref, this.canvas_json); + JSROOT.draw(domref, this.canvas_json).then(hist_painter => { + this.canv_painter = hist_painter.getCanvPainter(); + }); } - else - { + else { // if completely different, call JSROOT.cleanup(dom) first. - JSROOT.redraw(domref, this.canvas_json); + JSROOT.redraw(domref, this.canvas_json).then(hist_painter => { + this.canv_painter = hist_painter.getCanvPainter(); + }); } }, - + onResizeTimeout: function () { + this.drawHist(); // AMT when to draw hist ?? + delete this.resize_tmout; + }, onSceneCreate: function (element, id) { - //console.log("LEGO onSceneCreate", id); + // console.log("LEGO onSceneCreate", id); }, sceneElementChange: function (el) { From 77b13ebd684f78535a110754ce14ec9cb74cd20c Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 9 Sep 2021 11:20:12 -0700 Subject: [PATCH 177/577] Disable axis zoom --- ui5/eve7/controller/Lego.controller.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui5/eve7/controller/Lego.controller.js b/ui5/eve7/controller/Lego.controller.js index 62920f22c6865..d0f208d8319e3 100644 --- a/ui5/eve7/controller/Lego.controller.js +++ b/ui5/eve7/controller/Lego.controller.js @@ -24,6 +24,9 @@ sap.ui.define([ return Controller.extend("rootui5.eve7.controller.Lego", { onInit: function () { + // disable narrowing axis range + JSROOT.settings.Zooming = false; + let data = this.getView().getViewData(); if (data) { this.setupManagerAndViewType(data.eveViewerId, data.mgr); From 069a08335428c15a925b30d86ed69342fb31f982 Mon Sep 17 00:00:00 2001 From: alja Date: Mon, 20 Sep 2021 11:23:59 -0700 Subject: [PATCH 178/577] Use std::timespec on LINUX osx and std::time on ther system when storing sample time of server status --- graf3d/eve7/inc/ROOT/REveSystem.hxx | 5 ++++- graf3d/eve7/src/REveManager.cxx | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/graf3d/eve7/inc/ROOT/REveSystem.hxx b/graf3d/eve7/inc/ROOT/REveSystem.hxx index c4602a9748cbf..71bda146ecd7a 100644 --- a/graf3d/eve7/inc/ROOT/REveSystem.hxx +++ b/graf3d/eve7/inc/ROOT/REveSystem.hxx @@ -30,8 +30,11 @@ struct REveServerStatus std::time_t fTLastConnect = 0; std::time_t fTLastDisconnect = 0; ProcInfo_t fProcInfo; // To be complemented with cpu1/5/15 and memgrowth1/5/15 on the collector side. +#ifdef R__LINUX std::timespec fTReport = {0, 0}; - +#else + std::time_t fTReport = 0; +#endif int n_active_connections() const { return fNConnects - fNDisconnects; } }; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 100a71ea33259..855ffb1741ed4 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -1109,7 +1109,11 @@ void REveManager::GetServerStatus(REveServerStatus& st) { std::unique_lock lock(fServerState.fMutex); gSystem->GetProcInfo(&fServerStatus.fProcInfo); +#ifdef R__LINUX std::timespec_get(&fServerStatus.fTReport, TIME_UTC); +#else + fServerStatus.fTReport = std::time_t(nullptr); +#endif st = fServerStatus; } From 14df1b97d620eda11735f16c32c2c790717c2a93 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 00:51:07 +0200 Subject: [PATCH 179/577] [ntuple,daos] RNTupleWriter::Recreate() now overwrites old ntuple `DAOS_COND_DKEY_INSERT` was inappropriately used in `daos_obj_update()` calls, which causes `RNTupleWriter::Recreate()` to not overwrite old data. This has been fixed. Additionally, `DAOS_COND_{D,A}KEY_FETCH` has been added to flags in `daos_obj_fetch()` call (fail if dkey/akey does not exist). Closes issue #9032. --- tree/ntuple/v7/inc/ROOT/libdaos_mock/daos.h | 3 ++- tree/ntuple/v7/src/RDaos.cxx | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/libdaos_mock/daos.h b/tree/ntuple/v7/inc/ROOT/libdaos_mock/daos.h index f4216a98ad6f1..3fbde8d614166 100644 --- a/tree/ntuple/v7/inc/ROOT/libdaos_mock/daos.h +++ b/tree/ntuple/v7/inc/ROOT/libdaos_mock/daos.h @@ -164,7 +164,8 @@ enum { }; enum { - DAOS_COND_DKEY_INSERT = (1 << 1), + DAOS_COND_DKEY_FETCH = (1 << 3), + DAOS_COND_AKEY_FETCH = (1 << 6), }; /** Object open modes */ diff --git a/tree/ntuple/v7/src/RDaos.cxx b/tree/ntuple/v7/src/RDaos.cxx index b0de771b35af3..59249b10520b0 100644 --- a/tree/ntuple/v7/src/RDaos.cxx +++ b/tree/ntuple/v7/src/RDaos.cxx @@ -98,13 +98,14 @@ ROOT::Experimental::Detail::RDaosObject::~RDaosObject() int ROOT::Experimental::Detail::RDaosObject::Fetch(FetchUpdateArgs &args) { args.fIods[0].iod_size = (daos_size_t)DAOS_REC_ANY; - return daos_obj_fetch(fObjectHandle, DAOS_TX_NONE, 0, &args.fDistributionKey, 1, - args.fIods, args.fSgls, nullptr, args.fEv); + return daos_obj_fetch(fObjectHandle, DAOS_TX_NONE, + DAOS_COND_DKEY_FETCH | DAOS_COND_AKEY_FETCH, + &args.fDistributionKey, 1, args.fIods, args.fSgls, nullptr, args.fEv); } int ROOT::Experimental::Detail::RDaosObject::Update(FetchUpdateArgs &args) { - return daos_obj_update(fObjectHandle, DAOS_TX_NONE, DAOS_COND_DKEY_INSERT, &args.fDistributionKey, 1, + return daos_obj_update(fObjectHandle, DAOS_TX_NONE, 0, &args.fDistributionKey, 1, args.fIods, args.fSgls, args.fEv); } From 0ca47372ed9c9cdcdcf2b7f772430f2a767a12fb Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Wed, 15 Sep 2021 16:36:09 +0530 Subject: [PATCH 180/577] Add Support for SELU & Sigmoid Operator in Keras Parser --- tmva/pymva/src/RModelParser_Keras.cxx | 62 ++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx index 57162ae91808e..75da000f4f5d0 100644 --- a/tmva/pymva/src/RModelParser_Keras.cxx +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -41,6 +41,8 @@ void AddKerasLayer(RModel &rmodel, PyObject *fLayer); // Declaring Internal Functions for Keras layers which don't have activation as an additional attribute std::unique_ptr MakeKerasActivation(PyObject *fLayer); // For instantiating ROperator for Keras Activation Layer std::unique_ptr MakeKerasReLU(PyObject *fLayer); // For instantiating ROperator for Keras ReLU layer +std::unique_ptr MakeKerasSeLU(PyObject *fLayer); // For instantiating ROperator for Keras SeLU layer +std::unique_ptr MakeKerasSigmoid(PyObject *fLayer); // For instantiating ROperator for Keras Sigmoid layer std::unique_ptr MakeKerasPermute(PyObject *fLayer); // For instantiating ROperator for Keras Permute Layer // Declaring Internal function for Keras layers which have additional activation attribute @@ -58,7 +60,9 @@ const KerasMethodMap mapKerasLayer = { {"ReLU", &MakeKerasReLU}, // For layers with activation attributes - {"relu", &MakeKerasReLU} + {"relu", &MakeKerasReLU}, + {"selu", &MakeKerasSeLU}, + {"sigmoid", &MakeKerasSigmoid} }; const KerasMethodMapWithActivation mapKerasLayerWithActivation = { @@ -254,6 +258,62 @@ std::unique_ptr MakeKerasReLU(PyObject* fLayer) } +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator object for Keras SeLU activation +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Selu object, the names of +/// input & output tensors and the deta-type of the layer are extracted. +std::unique_ptr MakeKerasSeLU(PyObject* fLayer){ + PyObject* fInputs = PyDict_GetItemString(fLayer,"layerInput"); + PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); + + std::string fLayerDType = PyStringAsString(PyDict_GetItemString(fLayer,"layerDType")); + std::string fLayerInputName = PyStringAsString(PyList_GetItem(fInputs,0)); + std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); + + std::unique_ptr op; + switch(ConvertStringToType(fLayerDType)){ + case ETensorType::FLOAT: + op.reset(new ROperator_Selu(fLayerInputName, fLayerOutputName)); + break; + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Selu does not yet support input type " + fLayerDType); + } + return op; +} + + +////////////////////////////////////////////////////////////////////////////////// +/// \brief Prepares a ROperator object for Keras Sigmoid activation +/// +/// \param[in] fLayer Python Keras layer as a Dictionary object +/// \return Unique pointer to ROperator object +/// +/// For instantiating a ROperator_Sigmoid object, the names of +/// input & output tensors and the deta-type of the layer are extracted. +std::unique_ptr MakeKerasSigmoid(PyObject* fLayer){ + PyObject* fInputs = PyDict_GetItemString(fLayer,"layerInput"); + PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); + + std::string fLayerDType = PyStringAsString(PyDict_GetItemString(fLayer,"layerDType")); + std::string fLayerInputName = PyStringAsString(PyList_GetItem(fInputs,0)); + std::string fLayerOutputName = PyStringAsString(PyList_GetItem(fOutputs,0)); + + std::unique_ptr op; + switch(ConvertStringToType(fLayerDType)){ + case ETensorType::FLOAT: + op.reset(new ROperator_Sigmoid(fLayerInputName, fLayerOutputName)); + break; + default: + throw std::runtime_error("TMVA::SOFIE - Unsupported - Operator Sigmoid does not yet support input type " + fLayerDType); + } + return op; +} + + ////////////////////////////////////////////////////////////////////////////////// /// \brief Prepares a ROperator object for Keras Permute layer /// From e5081ae9800107f2a389c7507f4eaaf1a5d913a2 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Thu, 16 Sep 2021 17:26:41 +0530 Subject: [PATCH 181/577] Update tests for Parsing SELU & Sigmoid Operator in PyTorch & Keras --- tmva/pymva/test/generateKerasModelFunctional.py | 6 +++--- tmva/pymva/test/generateKerasModelSequential.py | 4 ++-- tmva/pymva/test/generatePyTorchModelModule.py | 8 ++++++-- tmva/pymva/test/generatePyTorchModelSequential.py | 6 ++++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/tmva/pymva/test/generateKerasModelFunctional.py b/tmva/pymva/test/generateKerasModelFunctional.py index 289cf65378af5..541ed59a8104a 100644 --- a/tmva/pymva/test/generateKerasModelFunctional.py +++ b/tmva/pymva/test/generateKerasModelFunctional.py @@ -9,9 +9,9 @@ input=Input(shape=(8,),batch_size=2) x=Dense(16)(input) x=Activation('relu')(x) -x=Dense(32,activation='relu')(x) -x=Dense(4)(x) -output=ReLU()(x) +x=Dense(32)(x) +x=ReLU()(x) +output=Dense(4, activation='selu')(x) model=Model(inputs=input,outputs=output) randomGenerator=np.random.RandomState(0) diff --git a/tmva/pymva/test/generateKerasModelSequential.py b/tmva/pymva/test/generateKerasModelSequential.py index ac68d5b79f631..63d1f5dd37eec 100644 --- a/tmva/pymva/test/generateKerasModelSequential.py +++ b/tmva/pymva/test/generateKerasModelSequential.py @@ -8,9 +8,9 @@ model=Sequential() model.add(Dense(8,batch_size=4)) -model.add(Activation('relu')) -model.add(Dense(6)) model.add(ReLU()) +model.add(Dense(6)) +model.add(Activation('sigmoid')) randomGenerator=np.random.RandomState(0) x_train=randomGenerator.rand(4,8) diff --git a/tmva/pymva/test/generatePyTorchModelModule.py b/tmva/pymva/test/generatePyTorchModelModule.py index 6a4a6421a8e63..fc6f619144ef8 100644 --- a/tmva/pymva/test/generatePyTorchModelModule.py +++ b/tmva/pymva/test/generatePyTorchModelModule.py @@ -5,12 +5,16 @@ class Model(nn.Module): def __init__(self): super(Model, self).__init__() - self.fc1 = nn.Linear(6, 12) - self.relu=nn.ReLU() + self.fc1 = nn.Linear(6, 36) + self.fc2 = nn.Linear(36,12) + self.relu = nn.ReLU() + self.sigmoid = nn.Sigmoid() def forward(self, x): x=self.fc1(x) x=self.relu(x) + x=self.fc2(x) + x=self.sigmoid(x) x=torch.transpose(x,1,0) return x diff --git a/tmva/pymva/test/generatePyTorchModelSequential.py b/tmva/pymva/test/generatePyTorchModelSequential.py index 1a8285e7fb6e8..79dda7fa23cd5 100644 --- a/tmva/pymva/test/generatePyTorchModelSequential.py +++ b/tmva/pymva/test/generatePyTorchModelSequential.py @@ -3,8 +3,10 @@ #Define model model = nn.Sequential( - nn.Linear(4,6), - nn.ReLU() + nn.Linear(4,8), + nn.ReLU(), + nn.Linear(8,6), + nn.SELU() ) #Construct loss function and optimizer From 48987ea26cb4bf58b9c39c8c1a9b3fc48147fb3d Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Thu, 16 Sep 2021 17:34:08 +0530 Subject: [PATCH 182/577] fix: Adding cmath header for std::exp while parsing Selu & Sigmoid Operator --- tmva/pymva/src/RModelParser_Keras.cxx | 11 +++++++---- tmva/pymva/src/RModelParser_PyTorch.cxx | 3 +++ tmva/sofie/inc/TMVA/ROperator_Selu.hxx | 2 +- tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx | 2 +- tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 2 ++ 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/tmva/pymva/src/RModelParser_Keras.cxx b/tmva/pymva/src/RModelParser_Keras.cxx index 75da000f4f5d0..d02fb4fc1e2bc 100644 --- a/tmva/pymva/src/RModelParser_Keras.cxx +++ b/tmva/pymva/src/RModelParser_Keras.cxx @@ -41,7 +41,7 @@ void AddKerasLayer(RModel &rmodel, PyObject *fLayer); // Declaring Internal Functions for Keras layers which don't have activation as an additional attribute std::unique_ptr MakeKerasActivation(PyObject *fLayer); // For instantiating ROperator for Keras Activation Layer std::unique_ptr MakeKerasReLU(PyObject *fLayer); // For instantiating ROperator for Keras ReLU layer -std::unique_ptr MakeKerasSeLU(PyObject *fLayer); // For instantiating ROperator for Keras SeLU layer +std::unique_ptr MakeKerasSelu(PyObject *fLayer); // For instantiating ROperator for Keras Selu layer std::unique_ptr MakeKerasSigmoid(PyObject *fLayer); // For instantiating ROperator for Keras Sigmoid layer std::unique_ptr MakeKerasPermute(PyObject *fLayer); // For instantiating ROperator for Keras Permute Layer @@ -61,7 +61,7 @@ const KerasMethodMap mapKerasLayer = { // For layers with activation attributes {"relu", &MakeKerasReLU}, - {"selu", &MakeKerasSeLU}, + {"selu", &MakeKerasSelu}, {"sigmoid", &MakeKerasSigmoid} }; @@ -131,6 +131,9 @@ void AddKerasLayer(RModel& rmodel, PyObject* fLayer){ std::string fLayerName = PyStringAsString(PyDict_GetItemString(fAttributes,"name")); std::string fLayerActivation = PyStringAsString(PyDict_GetItemString(fAttributes,"activation")); + if(fLayerActivation == "selu" || fLayerActivation == "sigmoid") + rmodel.AddNeededStdLib("cmath"); + //Checking if additional attribute exixts if(fLayerActivation != "linear"){ PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); @@ -259,14 +262,14 @@ std::unique_ptr MakeKerasReLU(PyObject* fLayer) ////////////////////////////////////////////////////////////////////////////////// -/// \brief Prepares a ROperator object for Keras SeLU activation +/// \brief Prepares a ROperator object for Keras Selu activation /// /// \param[in] fLayer Python Keras layer as a Dictionary object /// \return Unique pointer to ROperator object /// /// For instantiating a ROperator_Selu object, the names of /// input & output tensors and the deta-type of the layer are extracted. -std::unique_ptr MakeKerasSeLU(PyObject* fLayer){ +std::unique_ptr MakeKerasSelu(PyObject* fLayer){ PyObject* fInputs = PyDict_GetItemString(fLayer,"layerInput"); PyObject* fOutputs = PyDict_GetItemString(fLayer,"layerOutput"); diff --git a/tmva/pymva/src/RModelParser_PyTorch.cxx b/tmva/pymva/src/RModelParser_PyTorch.cxx index 4821d749a1b8c..7a3d43acbf187 100644 --- a/tmva/pymva/src/RModelParser_PyTorch.cxx +++ b/tmva/pymva/src/RModelParser_PyTorch.cxx @@ -405,6 +405,9 @@ RModel Parse(std::string filename, std::vector> inputShapes, if(fNodeType == "onnx::Gemm"){ rmodel.AddBlasRoutines({"Gemm", "Gemv"}); } + else if(fNodeType == "onnx::Selu" || fNodeType == "onnx::Sigmoid"){ + rmodel.AddNeededStdLib("cmath"); + } rmodel.AddOperator(INTERNAL::MakePyTorchNode(fNode)); } diff --git a/tmva/sofie/inc/TMVA/ROperator_Selu.hxx b/tmva/sofie/inc/TMVA/ROperator_Selu.hxx index d8e8d7ff244c1..729722012f291 100644 --- a/tmva/sofie/inc/TMVA/ROperator_Selu.hxx +++ b/tmva/sofie/inc/TMVA/ROperator_Selu.hxx @@ -55,7 +55,7 @@ public: length *= i; } out << "\t" << "for (int id = 0; id < " << length << " ; id++){\n"; - out << "\t\t" << "tensor_" << fNY << "[id] = 1.0507009873554804934193349852946 * (std::max(float(0.0), tensor_" << fNX << "[id]) + std::min(0.0, 1.6732632423543772848170429916717 * (exp(" << "tensor_" << fNX << "[id]" <<")-1)));\n"; + out << "\t\t" << "tensor_" << fNY << "[id] = 1.0507009873554804934193349852946 * (std::max(float(0.0), tensor_" << fNX << "[id]) + std::min(0.0, 1.6732632423543772848170429916717 * (std::exp(" << "tensor_" << fNX << "[id]" <<")-1)));\n"; out << "\t}\n"; return out.str(); } diff --git a/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx b/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx index eed667a4648c5..02251bc31e709 100644 --- a/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx +++ b/tmva/sofie/inc/TMVA/ROperator_Sigmoid.hxx @@ -55,7 +55,7 @@ public: length *= i; } out << "\t" << "for (int id = 0; id < " << length << " ; id++){\n"; - out << "\t\t" << "tensor_" << fNY << "[id] = 1 / (1 + exp( - tensor_" << fNX << "[id]));\n"; + out << "\t\t" << "tensor_" << fNY << "[id] = 1 / (1 + std::exp( - tensor_" << fNX << "[id]));\n"; out << "\t}\n"; return out.str(); } diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx index 4632a10cfb002..f070ae951a90e 100644 --- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx @@ -500,6 +500,8 @@ RModel RModelParser_ONNX::Parse(std::string filename){ rmodel.AddBlasRoutines({"Gemm", "Axpy"}); } else if (op_type == "RNN") { rmodel.AddBlasRoutines({"Gemm", "Axpy"}); + } else if (op_type == "Selu" || op_type == "Sigmoid") { + rmodel.AddNeededStdLib("cmath"); } } From 21e681df617a7df12e271fafa9bc0f93c5d2bed7 Mon Sep 17 00:00:00 2001 From: Sanjiban Sengupta Date: Tue, 21 Sep 2021 20:00:59 +0530 Subject: [PATCH 183/577] Add tests for ONNX Parser for SELU & Sigmoid operator --- tmva/sofie/test/TestCustomModelsFromONNX.cxx | 52 +++++++++++++++++- tmva/sofie/test/TestCustomModelsFromROOT.cxx | 52 +++++++++++++++++- .../test/input_models/LinearWithSelu.onnx | Bin 0 -> 1623 bytes .../test/input_models/LinearWithSigmoid.onnx | Bin 0 -> 1635 bytes .../references/LinearWithSelu.ref.hxx | 6 ++ .../references/LinearWithSigmoid.ref.hxx | 6 ++ 6 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 tmva/sofie/test/input_models/LinearWithSelu.onnx create mode 100644 tmva/sofie/test/input_models/LinearWithSigmoid.onnx create mode 100644 tmva/sofie/test/input_models/references/LinearWithSelu.ref.hxx create mode 100644 tmva/sofie/test/input_models/references/LinearWithSigmoid.ref.hxx diff --git a/tmva/sofie/test/TestCustomModelsFromONNX.cxx b/tmva/sofie/test/TestCustomModelsFromONNX.cxx index 795c3d5931728..29c8bd6dd1a69 100644 --- a/tmva/sofie/test/TestCustomModelsFromONNX.cxx +++ b/tmva/sofie/test/TestCustomModelsFromONNX.cxx @@ -9,6 +9,12 @@ #include "Linear_64_FromONNX.hxx" #include "input_models/references/Linear_64.ref.hxx" +#include "LinearWithSelu_FromONNX.hxx" +#include "input_models/references/LinearWithSelu.ref.hxx" + +#include "LinearWithSigmoid_FromONNX.hxx" +#include "input_models/references/LinearWithSigmoid.ref.hxx" + #include "ConvWithPadding_FromONNX.hxx" #include "input_models/references/ConvWithPadding.ref.hxx" @@ -76,7 +82,7 @@ TEST(ONNX, Linear16) TEST(ONNX, Linear32) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; - + // Preparing the standard all-ones input std::vector input(3200); std::fill_n(input.data(), input.size(), 1.0f); @@ -97,7 +103,7 @@ TEST(ONNX, Linear32) TEST(ONNX, Linear64) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; - + // Preparing the standard all-ones input std::vector input(6400); std::fill_n(input.data(), input.size(), 1.0f); @@ -115,6 +121,48 @@ TEST(ONNX, Linear64) } +TEST(ONNX, LinearWithSelu) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(48); + std::fill_n(input.data(), input.size(), 1.0f); + std::vector output = TMVA_SOFIE_LinearWithSelu::infer(input.data()); + + // Checking output size + EXPECT_EQ(output.size(), sizeof(LinearWithSelu_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = LinearWithSelu_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); + } +} + + +TEST(ONNX, LinearWithSigmoid) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(48); + std::fill_n(input.data(), input.size(), 1.0f); + std::vector output = TMVA_SOFIE_LinearWithSigmoid::infer(input.data()); + + // Checking output size + EXPECT_EQ(output.size(), sizeof(LinearWithSigmoid_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = LinearWithSigmoid_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); + } +} + + TEST(ONNX, ConvWithPadding) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; diff --git a/tmva/sofie/test/TestCustomModelsFromROOT.cxx b/tmva/sofie/test/TestCustomModelsFromROOT.cxx index 8fc54d88806fd..e17d42d948a91 100644 --- a/tmva/sofie/test/TestCustomModelsFromROOT.cxx +++ b/tmva/sofie/test/TestCustomModelsFromROOT.cxx @@ -9,6 +9,12 @@ #include "Linear_64_FromROOT.hxx" #include "input_models/references/Linear_64.ref.hxx" +#include "LinearWithSelu_FromROOT.hxx" +#include "input_models/references/LinearWithSelu.ref.hxx" + +#include "LinearWithSigmoid_FromROOT.hxx" +#include "input_models/references/LinearWithSigmoid.ref.hxx" + #include "ConvWithPadding_FromROOT.hxx" #include "input_models/references/ConvWithPadding.ref.hxx" @@ -76,7 +82,7 @@ TEST(ROOT, Linear16) TEST(ROOT, Linear32) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; - + // Preparing the standard all-ones input std::vector input(3200); std::fill_n(input.data(), input.size(), 1.0f); @@ -97,7 +103,7 @@ TEST(ROOT, Linear32) TEST(ROOT, Linear64) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; - + // Preparing the standard all-ones input std::vector input(6400); std::fill_n(input.data(), input.size(), 1.0f); @@ -115,6 +121,48 @@ TEST(ROOT, Linear64) } +TEST(ONNX, LinearWithSelu) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(48); + std::fill_n(input.data(), input.size(), 1.0f); + std::vector output = TMVA_SOFIE_LinearWithSelu::infer(input.data()); + + // Checking output size + EXPECT_EQ(output.size(), sizeof(LinearWithSelu_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = LinearWithSelu_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); + } +} + + +TEST(ONNX, LinearWithSigmoid) +{ + constexpr float TOLERANCE = DEFAULT_TOLERANCE; + + // Preparing the standard all-ones input + std::vector input(48); + std::fill_n(input.data(), input.size(), 1.0f); + std::vector output = TMVA_SOFIE_LinearWithSigmoid::infer(input.data()); + + // Checking output size + EXPECT_EQ(output.size(), sizeof(LinearWithSigmoid_ExpectedOutput::all_ones) / sizeof(float)); + + float *correct = LinearWithSigmoid_ExpectedOutput::all_ones; + + // Checking every output value, one by one + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); + } +} + + TEST(ROOT, ConvWithPadding) { constexpr float TOLERANCE = DEFAULT_TOLERANCE; diff --git a/tmva/sofie/test/input_models/LinearWithSelu.onnx b/tmva/sofie/test/input_models/LinearWithSelu.onnx new file mode 100644 index 0000000000000000000000000000000000000000..a55f84e646fec0a963f2b397a0d2aa3a14d456a7 GIT binary patch literal 1623 zcmbW2X-t%75XblBSk_lW3W^+_pdc$Ou&{Ey&!~U`>&YT`Es_Pd%gPEXE@za(11hTs zrJ#aUJW)~6s`cP~2DB=v5Ur>fL`1FDBdvf*G%zs8Cw6V}< z8&cB}lN?QbB!NLqmaLMs(5C3q4H6$#jqh7nt_W(jJ;zwrQ8Xh>6~EDNz`Y8VrC5X;DHnDLInXtgdq z-pASOqi17TW;`pBexXS})BHcvr2n7hZ^Hz9ruqIuv$6ivu;*f}!Bd^3Pfat3%Y`D5 z$ljU>`O>jGUnqOL9fn@pNLeo#%$JmsC4D2I{CqaKF-8Mv3kPEuYXVaPhd@Rtq1TpG z(89_zWpBOQR_zJ?LnB?W=kh{d1CC$Jk(vtrNK{ZX`rKQww zSRPHXD}ab#q&YAiIs%vA?zmoVZ}C8G!SZ9JQdH2Zs z5I4+FHW4sZkn~+Xpveh`(M9{ooG=S?b2LZg6)jh<$RS;I8c0lch5DB{5SMd|4_sQu z7o>FiD)UjT)w$UHD)~fNF`}QPue*hJ{S`B_O9j%B_LZ#Lh13Y}W zPUjJThb*~)o`o=Jm=kw@V-NkdB#I_y*}>~GVUQd;4?>665zpQnG!0>Ri_|jGSMZn| zoYlxZ-D-~6wa9Oq&m!I1O@EGU;(U5llpZkBwrc}GED?!5NaC~f1|;jkf8Z zP?O|duD&oGGGCtMUL`yrAw?gyykIDv(uv`2Llw-m8w1Mkjd1f`1t>??(vDVFR7&n} z!%x`KcGVfYn&ytVb(5jKSw=?RJdC@`i(p0T6MF78;PLF$XzF?dy5wJD_{9}8ag2`4 z^(%#=#ho~0gDb@U?o2W}UAU_wr(l`P34J!5C!3Q?a7t7)F5J;LeF%(aW5y1bFp#uh=wvuti@I7G%mN5*zMzRMMx!`5KS(}VcdX(u%M20`^N`6O|A4ZfY^gxPXoX%==I2!t(eW68`nv1G?jO7Ji~r*BFwV&}Y7@UXLw zu8mqve^g$^0oyfXfALu8&J6-Fh%7%&@t>0__g*`|4;M+Qq2cCjp1tl!+@otrjn5h2 z^L%kk7~-=c4m)EKplR|Q>XUMr&Ug6o4{WShOA%uuVogLQAIv_%mSqC|le7#mvF`Ub DTVA4< literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/LinearWithSigmoid.onnx b/tmva/sofie/test/input_models/LinearWithSigmoid.onnx new file mode 100644 index 0000000000000000000000000000000000000000..ee4868ee05feadfc247ce296ee4537ab5da94210 GIT binary patch literal 1635 zcmbW2dsK{h7{{AQGjH!sw<(KJh{R6QY)vbM`8`$`8qUFSjY271l#+2fq)=@aDJq>> zw$PO&_pEt;&+EEUv2sa5ZV9=ikXu@IJ2_|n+&`Z4T+VsU=RD^*-{)aOQgOs8eR$-8 zAephNQa!v%!g{mf;KdQk^h#HjaZ#=a2o4O=vmzIzU$E~|sbGjqG%g@4Y@SR1ZeP9J zf;I6CjR^AXZe$cQGEX3oo3q{g0`%W_5-7zqm7GXRrcymQi&vRh`VColMpLXAYGLhJ9nYbup!u{|xUO60CO)SQ!x>sh6jV z7>4O-De&l;UKb-;>s5*asx{zNok7-3h$Hda3!v{F3mPYNrkP8$*qUtuhZpAz_i%O~ zNfWP7@v@7Y>j?$0q@G48L+M*;iSs%F!8x@DhUNs)v4uXE-#8M+rQarPr5;%HGDX9u zTGR4}^RXdy5$WH}3DZU$H{^^d)6AW6hk|DtnH*t`a~LJr9-x432ZM1;i5305a=W2^ z-6N{d9)}f|4pYYw{h%SujDD!H$JehbG>)+=Xz@?4xaO^`^y(QcOi-C|c`Kii^2$LV zcC6;)4brDcUm2;8v(-+7&;c@MThc(0=u+__M#5@HWn3NsJr-qVU)W)QcZdOi0#}F0V^|?mKp?{f8E|D%DK)u}MjNK~!O8CD zsatdiTBMp`t)hvm+1&#h%~?40bS7x7w{n|%e+8XcsE!Y5WrMq%M$@sO_NEUxT~7w$c}I`FJk+2UOIb zrCBx)$=PXn^vAn8uxjIIyN3on%|md&P)A61_k{hrcFOKs02v={Q~xXL!8*Zq#Od53 za_jC`*dL$49Y|k84~H5-Ec79blil#a968Q-kU_nj>d2m^AS|yi2U{~1hs4*Aiza7@ zLx~l5_&Z@z@-4%wlR^-xvuN|gRN|lc!cd<5oZ86dQc;T?+@0GU%`D~ANhqSHQ%grY z>s>>BPI*uLUs_;Rg)Njc_r_zTODQ|v(GV%$%^fj}hX?tSa8Kqmlq(tLizGVFfUe)? zqL)POw}ghyY$45$7`R?^h%)?O2sU0wGH>aLJl&X){L|8vO?T#qiu&oF)-xP2@)f=GC89Qp0y$5P)b-49?CKQ{hF#gtc@Dymco|SK)ZyyCz zneKp?NPlRYZh&~UJM`{Ig6Dyk!E(wL8smQs7p91*xl0b(cW7~T%t$58{Ir2VMjke;qRes0cYx{&p*Q`Ib>XQnZ%I)Ff@-U3-TYz(( ziTU%ShHGBmov1@5qFuvA%xROMz1=H%-gPJ75^s2H_$aQ6l(2S)OBi~k;0oy(m=8_C(rQCys^8TiDv z7<6e79!*$-FPQ+eVjcNm9B@8^C-HT48a~?26=(PA`VCTZR>BCR3@c=WU#zE}H7gkQ LpQ6M=XleR4c%H`( literal 0 HcmV?d00001 diff --git a/tmva/sofie/test/input_models/references/LinearWithSelu.ref.hxx b/tmva/sofie/test/input_models/references/LinearWithSelu.ref.hxx new file mode 100644 index 0000000000000..90f1e3a748b3f --- /dev/null +++ b/tmva/sofie/test/input_models/references/LinearWithSelu.ref.hxx @@ -0,0 +1,6 @@ +namespace LinearWithSelu_ExpectedOutput{ + float all_ones[] = { + 0.175657, 0.305336, 0.281847, -0.634415, -0.683576, -0.144266, -0.397181, -0.481238, 0.0799519, -0.454446, -0.0238849, -0.388235, + 0.175657, 0.305336, 0.281847, -0.634415, -0.683576, -0.144266, -0.397181, -0.481238, 0.0799519, -0.454446, -0.0238849, -0.388235 + }; +} // namespace LinearWithSelu_ExpectedOutput diff --git a/tmva/sofie/test/input_models/references/LinearWithSigmoid.ref.hxx b/tmva/sofie/test/input_models/references/LinearWithSigmoid.ref.hxx new file mode 100644 index 0000000000000..3e1c4799ab113 --- /dev/null +++ b/tmva/sofie/test/input_models/references/LinearWithSigmoid.ref.hxx @@ -0,0 +1,6 @@ +namespace LinearWithSigmoid_ExpectedOutput{ + float all_ones[] = { + 0.485357, 0.591180, 0.815637, 0.156803, 0.164266, 0.342017, 0.415033, 0.191306, 0.227441, 0.101257, 0.105839, 0.333542, + 0.485357, 0.591180, 0.815637, 0.156803, 0.164266, 0.342017, 0.415033, 0.191306, 0.227441, 0.101257, 0.105839, 0.333542 + }; +} // namespace LinearWithSigmoid_ExpectedOutput From 69b55b60bf4ff8bb6cf1542e55f9f4b142a67fea Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Aug 2021 11:14:50 +0200 Subject: [PATCH 184/577] [DF] Take a "data-block id" as argument in data-block callbacks This commit adds the infrastructure needed to pass a data-block id as well as the slot number to data-block callbacks. At this point we still never actually _set_ the data-block id argument to something meaningful (see next commits). --- tree/dataframe/CMakeLists.txt | 1 + tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx | 11 ++-- tree/dataframe/inc/ROOT/RDF/RAction.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RActionBase.hxx | 3 +- tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx | 64 +++++++++++++++++++ tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx | 6 +- tree/dataframe/src/RJittedAction.cxx | 2 +- tree/dataframe/src/RLoopManager.cxx | 11 ++-- tree/dataframe/test/CounterHelper.h | 4 +- 10 files changed, 88 insertions(+), 18 deletions(-) create mode 100644 tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx diff --git a/tree/dataframe/CMakeLists.txt b/tree/dataframe/CMakeLists.txt index 2728a76fd801f..0e3bf28730b5a 100644 --- a/tree/dataframe/CMakeLists.txt +++ b/tree/dataframe/CMakeLists.txt @@ -53,6 +53,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTDataFrame ROOT/RDF/RAction.hxx ROOT/RDF/RBookedDefines.hxx ROOT/RDF/RDataBlockNotifier.hxx + ROOT/RDF/RDataBlockID.hxx ROOT/RDF/RDefineBase.hxx ROOT/RDF/RDefine.hxx ROOT/RDF/RDefineReader.hxx diff --git a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx index 44a814ea59f09..26a1f24d7dd2e 100644 --- a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx @@ -24,6 +24,7 @@ #include "ROOT/RVec.hxx" #include "ROOT/TBufferMerger.hxx" // for SnapshotHelper #include "ROOT/RDF/RCutFlowReport.hxx" +#include "ROOT/RDF/RDataBlockID.hxx" #include "ROOT/RDF/Utils.hxx" #include "ROOT/RSnapshotOptions.hxx" #include "ROOT/TypeTraits.hxx" @@ -80,7 +81,7 @@ public: throw std::logic_error("`GetMergeableValue` is not implemented for this type of action."); } - virtual std::function GetDataBlockCallback() { return {}; } + virtual ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() { return {}; } }; } // namespace RDF @@ -1454,9 +1455,9 @@ public: std::string GetActionName() { return "Snapshot"; } - std::function GetDataBlockCallback() final + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final { - return [this](unsigned int) mutable { fBranchAddressesNeedReset = true; }; + return [this](unsigned int, const RDataBlockID &) mutable { fBranchAddressesNeedReset = true; }; } }; @@ -1628,9 +1629,9 @@ public: std::string GetActionName() { return "Snapshot"; } - std::function GetDataBlockCallback() final + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final { - return [this](unsigned int slot) mutable { fBranchAddressesNeedReset[slot] = 1; }; + return [this](unsigned int slot, const RDataBlockID &) mutable { fBranchAddressesNeedReset[slot] = 1; }; } }; diff --git a/tree/dataframe/inc/ROOT/RDF/RAction.hxx b/tree/dataframe/inc/ROOT/RDF/RAction.hxx index d720ddf88dc5b..16c28fc26f33b 100644 --- a/tree/dataframe/inc/ROOT/RDF/RAction.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RAction.hxx @@ -165,7 +165,7 @@ private: // this one is always available but has lower precedence thanks to `...` void *PartialUpdateImpl(...) { throw std::runtime_error("This action does not support callbacks!"); } - std::function GetDataBlockCallback() final { return fHelper.GetDataBlockCallback(); } + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final { return fHelper.GetDataBlockCallback(); } }; } // namespace RDF diff --git a/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx b/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx index 2ff4ca4bc1871..820b132d8f2a8 100644 --- a/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx @@ -12,6 +12,7 @@ #define ROOT_RACTIONBASE #include "ROOT/RDF/RBookedDefines.hxx" +#include "ROOT/RDF/RDataBlockID.hxx" #include "ROOT/RDF/Utils.hxx" // ColumnNames_t #include "RtypesCore.h" @@ -81,7 +82,7 @@ public: */ virtual std::unique_ptr GetMergeableValue() const = 0; - virtual std::function GetDataBlockCallback() = 0; + virtual ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() = 0; }; } // namespace RDF } // namespace Internal diff --git a/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx b/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx new file mode 100644 index 0000000000000..90f5cda57d826 --- /dev/null +++ b/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx @@ -0,0 +1,64 @@ +// Author: Enrico Guiraud, 2021 + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT_RDF_RDATABLOCKID +#define ROOT_RDF_RDATABLOCKID + +#include + +#include +#include +#include + +namespace ROOT { +namespace RDF { + +/// This type represents a data-block identifier, to be used in conjunction with RDataFrame features such as +/// DefinePerSample() and data-block callbacks. +class RDataBlockID { + // Currently backed by a simple string, might change in the future as we get usage experience. + std::string fID; + +public: + explicit RDataBlockID(std::string_view id) : fID(id) {} + RDataBlockID() = default; + RDataBlockID(const RDataBlockID &) = default; + RDataBlockID &operator=(const RDataBlockID &) = default; + RDataBlockID(RDataBlockID &&) = default; + RDataBlockID &operator=(RDataBlockID &&) = default; + ~RDataBlockID() = default; + + bool Contains(std::string_view substr) const + { + // C++14 needs the conversion from std::string_view to std::string + return fID.find(std::string(substr)) != std::string::npos; + } + + bool Empty() const { + return fID.empty(); + } + + const std::string &AsString() const + { + return fID; + } + + bool operator==(const RDataBlockID &other) const { return fID == other.fID; } + bool operator!=(const RDataBlockID &other) const { return !(*this == other); } +}; + +/// The type of a data-block callback, registered with a RDataFrame computation graph via e.g. +/// DefinePerSample() or by certain actions (e.g. Snapshot()). +using DataBlockCallback_t = std::function; + +} // namespace RDF +} // namespace ROOT + +#endif diff --git a/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx b/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx index ea0aca27e8f05..12ea80a6804ad 100644 --- a/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx @@ -61,7 +61,7 @@ public: // Helper for RMergeableValue std::unique_ptr GetMergeableValue() const final; - std::function GetDataBlockCallback() final; + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final; }; } // ns RDF diff --git a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx index 0da0b6f50d451..564e6f7484400 100644 --- a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx @@ -13,6 +13,7 @@ #include "ROOT/RDF/RNodeBase.hxx" #include "ROOT/RDF/RDataBlockNotifier.hxx" +#include "ROOT/RDF/RDataBlockID.hxx" #include #include @@ -121,8 +122,9 @@ class RLoopManager : public RNodeBase { /// Registered callbacks to invoke just once before running the loop std::vector fCallbacksOnce; /// Registered callbacks to call at the beginning of each "data block" - std::vector fDataBlockCallbacks; + std::vector fDataBlockCallbacks; RDFInternal::RDataBlockNotifier fDataBlockNotifier; + std::vector fDataBlockIDs; unsigned int fNRuns{0}; ///< Number of event loops run /// Registry of per-slot value pointers for booked data-source columns @@ -202,7 +204,7 @@ public: const ColumnNames_t &GetBranchNames(); - void AddDataBlockCallback(std::function &&callback); + void AddDataBlockCallback(ROOT::RDF::DataBlockCallback_t &&callback); }; } // ns RDF diff --git a/tree/dataframe/src/RJittedAction.cxx b/tree/dataframe/src/RJittedAction.cxx index 80b6c4f4ffdcb..539eab41e5cfa 100644 --- a/tree/dataframe/src/RJittedAction.cxx +++ b/tree/dataframe/src/RJittedAction.cxx @@ -94,7 +94,7 @@ std::unique_ptr RJittedAction::GetMergea return fConcreteAction->GetMergeableValue(); } -std::function RJittedAction::GetDataBlockCallback() +ROOT::RDF::DataBlockCallback_t RJittedAction::GetDataBlockCallback() { R__ASSERT(fConcreteAction != nullptr); return fConcreteAction->GetDataBlockCallback(); diff --git a/tree/dataframe/src/RLoopManager.cxx b/tree/dataframe/src/RLoopManager.cxx index 9d49b702ce6eb..e8fe6cf12bf2c 100644 --- a/tree/dataframe/src/RLoopManager.cxx +++ b/tree/dataframe/src/RLoopManager.cxx @@ -337,20 +337,21 @@ RLoopManager::RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches) : fTree(std::shared_ptr(tree, [](TTree *) {})), fDefaultColumns(defaultBranches), fNSlots(RDFInternal::GetNSlots()), fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kROOTFilesMT : ELoopType::kROOTFiles), - fDataBlockNotifier(fNSlots) + fDataBlockNotifier(fNSlots), fDataBlockIDs(fNSlots) { } RLoopManager::RLoopManager(ULong64_t nEmptyEntries) : fNEmptyEntries(nEmptyEntries), fNSlots(RDFInternal::GetNSlots()), - fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kNoFilesMT : ELoopType::kNoFiles), fDataBlockNotifier(fNSlots) + fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kNoFilesMT : ELoopType::kNoFiles), fDataBlockNotifier(fNSlots), + fDataBlockIDs(fNSlots) { } RLoopManager::RLoopManager(std::unique_ptr ds, const ColumnNames_t &defaultBranches) : fDefaultColumns(defaultBranches), fNSlots(RDFInternal::GetNSlots()), fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kDataSourceMT : ELoopType::kDataSource), - fDataSource(std::move(ds)), fDataBlockNotifier(fNSlots) + fDataSource(std::move(ds)), fDataBlockNotifier(fNSlots), fDataBlockIDs(fNSlots) { fDataSource->SetNSlots(fNSlots); } @@ -568,7 +569,7 @@ void RLoopManager::RunAndCheckFilters(unsigned int slot, Long64_t entry) // data-block callbacks run before the rest of the graph if (fDataBlockNotifier.CheckFlag(slot)) { for (auto &callback : fDataBlockCallbacks) { - callback(slot); + callback(slot, fDataBlockIDs[slot]); } fDataBlockNotifier.UnsetFlag(slot); } @@ -868,7 +869,7 @@ void RLoopManager::AddDSValuePtrs(const std::string &col, const std::vector &&callback) +void RLoopManager::AddDataBlockCallback(DataBlockCallback_t &&callback) { if (callback) fDataBlockCallbacks.emplace_back(std::move(callback)); diff --git a/tree/dataframe/test/CounterHelper.h b/tree/dataframe/test/CounterHelper.h index 664b4d8eae03d..9c118134a1bc5 100644 --- a/tree/dataframe/test/CounterHelper.h +++ b/tree/dataframe/test/CounterHelper.h @@ -22,9 +22,9 @@ class CounterHelper : public ROOT::Detail::RDF::RActionImpl { void Exec(unsigned int) { ++(*fNCalls); } #else void Exec(unsigned int) {} - std::function GetDataBlockCallback() final + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final { - return [this](unsigned int) mutable { ++(*this->fNCalls); }; + return [this](unsigned int, const ROOT::RDF::RDataBlockID &) mutable { ++(*this->fNCalls); }; } #endif void Finalize() {} From f7ccd26fba702b9ae05c4797448f3d095d102e96 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Aug 2021 13:15:11 +0200 Subject: [PATCH 185/577] [DF] Generate data-block IDs when running over no data or over TTrees This leaves out the case of RDataSources, for which data-block IDs will always be empty at the moment. --- tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx | 2 ++ tree/dataframe/src/RLoopManager.cxx | 24 ++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx index 564e6f7484400..e929ab949b26c 100644 --- a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx @@ -147,6 +147,8 @@ class RLoopManager : public RNodeBase { void CleanUpTask(TTreeReader *r, unsigned int slot); void EvalChildrenCounts(); void SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot); + void UpdateDataBlockID(unsigned int slot, const std::pair &range); + void UpdateDataBlockID(unsigned int slot, TTreeReader &r); public: RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches); diff --git a/tree/dataframe/src/RLoopManager.cxx b/tree/dataframe/src/RLoopManager.cxx index e8fe6cf12bf2c..af2275323f0cc 100644 --- a/tree/dataframe/src/RLoopManager.cxx +++ b/tree/dataframe/src/RLoopManager.cxx @@ -9,6 +9,7 @@ #include "RConfigure.h" // R__USE_IMT #include "ROOT/RDataSource.hxx" #include "ROOT/RDF/GraphNode.hxx" +#include "ROOT/InternalTreeUtils.hxx" // GetTreeFullPaths #include "ROOT/RDF/RActionBase.hxx" #include "ROOT/RDF/RFilterBase.hxx" #include "ROOT/RDF/RLoopManager.hxx" @@ -392,6 +393,7 @@ void RLoopManager::RunEmptySourceMT() InitNodeSlots(nullptr, slot); R__LOG_INFO(RDFLogChannel()) << LogRangeProcessing({"an empty source", range.first, range.second, slot}); try { + UpdateDataBlockID(slot, range); for (auto currEntry = range.first; currEntry < range.second; ++currEntry) { RunAndCheckFilters(slot, currEntry); } @@ -415,6 +417,7 @@ void RLoopManager::RunEmptySource() R__LOG_INFO(RDFLogChannel()) << LogRangeProcessing({"an empty source", 0, fNEmptyEntries, 0u}); RCallCleanUpTask cleanup(*this); try { + UpdateDataBlockID(/*slot*/0, {0, fNEmptyEntries}); for (ULong64_t currEntry = 0; currEntry < fNEmptyEntries && fNStopsReceived < fNChildren; ++currEntry) { RunAndCheckFilters(0, currEntry); } @@ -446,6 +449,9 @@ void RLoopManager::RunTreeProcessorMT() try { // recursive call to check filters and conditionally execute actions while (r.Next()) { + if (fDataBlockNotifier.CheckFlag(slot)) { + UpdateDataBlockID(slot, r); + } RunAndCheckFilters(slot, count++); } } catch (...) { @@ -477,6 +483,9 @@ void RLoopManager::RunTreeReader() // in the non-MT case processing can be stopped early by ranges, hence the check on fNStopsReceived try { while (r.Next() && fNStopsReceived < fNChildren) { + if (fDataBlockNotifier.CheckFlag(0)) { + UpdateDataBlockID(/*slot*/0, r); + } RunAndCheckFilters(0, r.GetCurrentEntry()); } } catch (...) { @@ -610,6 +619,21 @@ void RLoopManager::SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot) { fDataBlockNotifier.SetFlag(slot); } +void RLoopManager::UpdateDataBlockID(unsigned int slot, const std::pair &range) { + fDataBlockIDs[slot] = + RDataBlockID("Empty source, range: {" + std::to_string(range.first) + ", " + std::to_string(range.second) + "}"); +} + +void RLoopManager::UpdateDataBlockID(unsigned int slot, TTreeReader &r) { + // one GetTree to retrieve the TChain, another to retrieve the underlying TTree + auto *tree = r.GetTree()->GetTree(); + R__ASSERT(tree != nullptr); + const std::string treename = ROOT::Internal::TreeUtils::GetTreeFullPaths(*tree)[0]; + auto *file = tree->GetCurrentFile(); + const std::string fname = file != nullptr ? file->GetName() : "#inmemorytree#"; + fDataBlockIDs[slot] = RDataBlockID(fname + "/" + treename); +} + /// Initialize all nodes of the functional graph before running the event loop. /// This method is called once per event-loop and performs generic initialization /// operations that do not depend on the specific processing slot (i.e. operations From 94a19c397d995dee4a94d139b74a3aebcca82780 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Aug 2021 15:46:35 +0200 Subject: [PATCH 186/577] [DF] Add test for data-block IDs --- .../test/dataframe_datablockcallback.cxx | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/tree/dataframe/test/dataframe_datablockcallback.cxx b/tree/dataframe/test/dataframe_datablockcallback.cxx index a000f9e1e79ea..bef06fdedfb86 100644 --- a/tree/dataframe/test/dataframe_datablockcallback.cxx +++ b/tree/dataframe/test/dataframe_datablockcallback.cxx @@ -12,6 +12,8 @@ #include #include // std::min +#include +#include #include // std::hardware_concurrency // fixture for all tests in this file @@ -88,6 +90,91 @@ TEST_P(RDFDataBlockCallback, TChain) { EXPECT_EQ(*result, 5u); } +class DataBlockHelper : public ROOT::Detail::RDF::RActionImpl { + std::shared_ptr> fDataBlocks; + std::unique_ptr fMutex; +public: + DataBlockHelper() + : fDataBlocks(std::make_shared>()), fMutex(std::make_unique()) + { + } + DataBlockHelper(DataBlockHelper &&) = default; + DataBlockHelper(const DataBlockHelper &) = delete; + + using Result_t = std::vector; + auto GetResultPtr() const { return fDataBlocks; } + void Initialize() {} + void InitTask(TTreeReader *, unsigned int) {} + void Exec(unsigned int) {} + ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final + { + return [this](unsigned int, const ROOT::RDF::RDataBlockID &db) mutable { + std::lock_guard lg(*fMutex); + fDataBlocks->emplace_back(db); + }; + } + void Finalize() {} + + std::string GetActionName() { return "DataBlockHelper"; } +}; + +TEST_P(RDFDataBlockCallback, EmptySourceDataBlockNames) { + ROOT::RDataFrame df(NENTRIES); + auto result = df.Book<>(DataBlockHelper(), {}); + if (ROOT::IsImplicitMTEnabled()) { + // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled + const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2u); + ASSERT_EQ(result->size(), expectedSize); + for (auto &id : *result) { + // check that all entries start with the expected string + EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0); + } + } else { + const std::string expectedStr = "Empty source, range: {0, " + std::to_string(NENTRIES) + "}"; + EXPECT_EQ(result->at(0).AsString(), expectedStr); + } +} + +TEST_P(RDFDataBlockCallback, TTreeDataBlockNames) { + const std::string prefix = "rdfdatablockcallback_ttreedbnames"; + InputFilesRAII file(1u, prefix); + ROOT::RDataFrame df("t", prefix + "*"); + auto result = df.Book<>(DataBlockHelper(), {}); + ASSERT_EQ(result->size(), 1u); + EXPECT_TRUE(result->at(0).Contains(prefix)); + EXPECT_TRUE(result->at(0).AsString().rfind("/t") == result->at(0).AsString().size() - 2); +} + +TEST_P(RDFDataBlockCallback, TChainDataBlockNames) { + const std::string prefix = "rdfdatablockcallback_tchain"; + InputFilesRAII file(5u, prefix); + ROOT::RDataFrame df("t", prefix + "*"); + auto result = df.Book<>(DataBlockHelper(), {}); + ASSERT_EQ(result->size(), 5u); + std::vector fileNumbers(5); + for (auto i = 0u; i < 5u; ++i) { + EXPECT_TRUE(result->at(i).Contains(prefix)); + const auto &id = result->at(i).AsString(); + EXPECT_TRUE(id.rfind("/t") == id.size() - 2); + fileNumbers[i] = id[id.size() - 8]; + } + + std::sort(fileNumbers.begin(), fileNumbers.end()); + for (int i = 0; i < 5; ++i) + // '0' == 48, '1' == 49, etc. + EXPECT_EQ(fileNumbers[i], i + 48); +} + +/* TODO: data-block IDs for RDataSources are not supported yet +TEST_P(RDFDataBlockCallback, DataSource) { + auto df = ROOT::RDF::MakeTrivialDataFrame(NENTRIES); + auto result = df.Book<>(CounterHelper(), {}); + // RTrivialDS tries to produce NSLOTS tasks + const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, df.GetNSlots()) : 1u; + EXPECT_EQ(*result, expected); +} +*/ + // instantiate single-thread tests INSTANTIATE_TEST_SUITE_P(Seq, RDFDataBlockCallback, ::testing::Values(false)); From 49f79ceead0accbe400fa61e4a29378a07e53f1c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Aug 2021 17:00:10 +0200 Subject: [PATCH 187/577] [DF] Add DefinePerSample This patch adds `df.DefinePerSample`, a method that lets user define new columns that are only updated per "data-block" rather than per entry, where a "data-block" is made of several entries that have the same data-block ID (e.g. that belong to the same TTree in a TChain). The data-block ID is passed as an argument to the callback, so that quantities can be defined based on the sample being processed. Currently a jitted version is not available and RDataSources have no way to hook into the mechanism (they get one data-block per task with empty data-block ID). Support for these cases will be added by later commits. This resolves #6745. --- .../inc/ROOT/RDF/RDefinePerSample.hxx | 76 +++++++++++++++++++ tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 33 ++++++++ 2 files changed, 109 insertions(+) create mode 100644 tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx diff --git a/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx new file mode 100644 index 0000000000000..27a6591e52364 --- /dev/null +++ b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx @@ -0,0 +1,76 @@ +// Author: Enrico Guiraud, CERN 08/2021 + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT_RDF_RDEFINEPERSAMPLE +#define ROOT_RDF_RDEFINEPERSAMPLE + +#include "ROOT/RDF/RDataBlockID.hxx" +#include "ROOT/RDF/Utils.hxx" +#include +#include + +#include +#include + +namespace ROOT { +namespace Detail { +namespace RDF { + +using namespace ROOT::TypeTraits; + +template +class R__CLING_PTRCHECK(off) RDefinePerSample final : public RDefineBase { + using RetType_t = typename CallableTraits::ret_type; + + // Avoid instantiating vector as `operator[]` returns temporaries in that case. Use std::deque instead. + using ValuesPerSlot_t = + std::conditional_t::value, std::deque, std::vector>; + + F fExpression; + ValuesPerSlot_t fLastResults; + +public: + RDefinePerSample(std::string_view name, std::string_view type, F expression, unsigned int nSlots) + : RDefineBase(name, type, nSlots, /*defines*/ {}, /*DSValuePtrs*/ {}, /*ds*/ nullptr), + fExpression(std::move(expression)), fLastResults(fNSlots * RDFInternal::CacheLineStep()) + { + } + + RDefinePerSample(const RDefinePerSample &) = delete; + RDefinePerSample &operator=(const RDefinePerSample &) = delete; + + /// Return the (type-erased) address of the Define'd value for the given processing slot. + void *GetValuePtr(unsigned int slot) final + { + return static_cast(&fLastResults[slot * RDFInternal::CacheLineStep()]); + } + + void Update(unsigned int, Long64_t) final + { + // no-op + } + + /// Update the value at the address returned by GetValuePtr with the content corresponding to the given entry + void Update(unsigned int slot, const ROOT::RDF::RDataBlockID &id) + { + fLastResults[slot * RDFInternal::CacheLineStep()] = fExpression(slot, id); + } + + const std::type_info &GetTypeId() const { return typeid(RetType_t); } + + void InitSlot(TTreeReader *, unsigned int) final {} + void FinaliseSlot(unsigned int) final {} +}; + +} // namespace RDF +} // namespace Detail +} // namespace ROOT + +#endif // ROOT_RDF_RDEFINEPERSAMPLE diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index b2f4bef90c8d4..f391bc8198597 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -18,6 +18,7 @@ #include "ROOT/RDF/InterfaceUtils.hxx" #include "ROOT/RDF/RBookedDefines.hxx" #include "ROOT/RDF/RDefine.hxx" +#include "ROOT/RDF/RDefinePerSample.hxx" #include "ROOT/RDF/RFilter.hxx" #include "ROOT/RDF/RLazyDSImpl.hxx" #include "ROOT/RDF/RRange.hxx" @@ -478,6 +479,38 @@ public: return newInterface; } + // TODO we could SFINAE on F's signature to provide friendlier compilation errors in case of signature mismatch + template + RInterface DefinePerSample(std::string_view name, F expression) + { + RDFInternal::CheckValidCppVarName(name, "DefinePerSample"); + RDFInternal::CheckForRedefinition("DefinePerSample", name, fDefines.GetNames(), fLoopManager->GetAliasMap(), + fLoopManager->GetBranchNames(), + fDataSource ? fDataSource->GetColumnNames() : ColumnNames_t{}); + + using RetType_t = typename TTraits::CallableTraits::ret_type; + auto retTypeName = RDFInternal::TypeID2TypeName(typeid(RetType_t)); + if (retTypeName.empty()) { + // The type is not known to the interpreter. + // We must not error out here, but if/when this column is used in jitted code + const auto demangledType = RDFInternal::DemangleTypeIdName(typeid(RetType_t)); + retTypeName = "CLING_UNKNOWN_TYPE_" + demangledType; + } + + auto newColumn = std::make_shared>(name, retTypeName, std::move(expression), + fLoopManager->GetNSlots()); + + auto updateDefinePerSample = [newColumn](unsigned int slot, const ROOT::RDF::RDataBlockID &id) { + newColumn->Update(slot, id); + }; + fLoopManager->AddDataBlockCallback(std::move(updateDefinePerSample)); + + RDFInternal::RBookedDefines newCols(fDefines); + newCols.AddColumn(std::move(newColumn), name); + RInterface newInterface(fProxiedPtr, *fLoopManager, newCols, fDataSource); + return newInterface; + } + //////////////////////////////////////////////////////////////////////////// /// \brief Allow to refer to a column with a different name. /// \param[in] alias name of the column alias From 6c790e44c29b50a466b716c60573c66ae9562304 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Aug 2021 11:56:04 +0200 Subject: [PATCH 188/577] [DF] Add test suite for DefinePerSample --- tree/dataframe/test/CMakeLists.txt | 1 + .../test/dataframe_definepersample.cxx | 166 ++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 tree/dataframe/test/dataframe_definepersample.cxx diff --git a/tree/dataframe/test/CMakeLists.txt b/tree/dataframe/test/CMakeLists.txt index 7adf3a759ee94..352443d280813 100644 --- a/tree/dataframe/test/CMakeLists.txt +++ b/tree/dataframe/test/CMakeLists.txt @@ -21,6 +21,7 @@ ROOT_ADD_GTEST(dataframe_splitcoll_arrayview dataframe_splitcoll_arrayview.cxx L target_include_directories(dataframe_splitcoll_arrayview PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) ROOT_GENERATE_DICTIONARY(TwoFloatsDict TwoFloats.h MODULE dataframe_splitcoll_arrayview LINKDEF TwoFloatsLinkDef.h OPTIONS -inlineInputHeader) ROOT_ADD_GTEST(dataframe_redefine dataframe_redefine.cxx LIBRARIES ROOTDataFrame) +ROOT_ADD_GTEST(dataframe_definepersample dataframe_definepersample.cxx LIBRARIES ROOTDataFrame) if(NOT MSVC OR win_broken_tests) ROOT_ADD_GTEST(dataframe_simple dataframe_simple.cxx LIBRARIES ROOTDataFrame) target_include_directories(dataframe_simple PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx new file mode 100644 index 0000000000000..7e99d2d055f72 --- /dev/null +++ b/tree/dataframe/test/dataframe_definepersample.cxx @@ -0,0 +1,166 @@ +#include +#include +#include +#include +#include + +#include + +#include +#include // std::thread::hardware_concurrency + +// fixture for all tests in this file +struct DefinePerSample : ::testing::TestWithParam { + unsigned int NSLOTS; + unsigned int NENTRIES = std::max(10u, std::thread::hardware_concurrency() * 2); + + DefinePerSample() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) + { + if (GetParam()) + ROOT::EnableImplicitMT(); + } + + ~DefinePerSample() + { + if (GetParam()) + ROOT::DisableImplicitMT(); + } +}; + +// A RAII object that ensures existence of nFiles root files named prefix0.root, prefix1.root, ... +// Each file contains a TTree called "t" with one `int` branch called "x" with sequentially increasing values (0,1,2...) +struct InputFilesRAII { + unsigned int fNFiles = 0; + std::string fPrefix; + + InputFilesRAII(unsigned int nFiles, std::string prefix) : fNFiles(nFiles), fPrefix(std::move(prefix)) + { + for (auto i = 0u; i < fNFiles; ++i) { + TFile f((fPrefix + std::to_string(i) + ".root").c_str(), "recreate"); + TTree t("t", "t"); + t.Branch("x", &i); + t.Fill(); + t.Write(); + } + } + + ~InputFilesRAII() + { + for (auto i = 0u; i < fNFiles; ++i) + gSystem->Unlink((fPrefix + std::to_string(i) + ".root").c_str()); + } +}; + +TEST_P(DefinePerSample, NoJitting) +{ + int counter = 0; + auto df = ROOT::RDataFrame(NENTRIES).DefinePerSample("x", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + ++counter; + return 42; + }); + auto xmin = df.Min("x"); + auto xmax = df.Max("x"); + EXPECT_EQ(*xmin, 42); + EXPECT_EQ(*xmax, 42); + // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled + const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, df.GetNSlots() * 2u) : 1u; + EXPECT_EQ(counter, expected); +} + +TEST_P(DefinePerSample, Tree) +{ + const std::string prefix = "rdfdatablockcallback_ttree"; + InputFilesRAII file(1u, prefix); + ROOT::RDataFrame df("t", prefix + "*"); + + int counter = 0; + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + ++counter; + return 42; + }); + auto xmin = df2.Min("y"); + auto xmax = df2.Max("y"); + EXPECT_EQ(*xmin, 42); + EXPECT_EQ(*xmax, 42); + const auto expected = 1u; // as the TTree only contains one cluster, we only have one "data-block" + EXPECT_EQ(counter, expected); +} + +TEST_P(DefinePerSample, TChain) +{ + const std::string prefix = "rdfdatablockcallback_tchain"; + InputFilesRAII file(5u, prefix); + ROOT::RDataFrame df("t", prefix + "*"); + + int counter = 0; + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + ++counter; + return 42; + }); + auto xmin = df2.Min("y"); + auto xmax = df2.Max("y"); + EXPECT_EQ(*xmin, 42); + EXPECT_EQ(*xmax, 42); + const auto expected = 5u; // one "data-block" per tree (because each tree only has one cluster) + EXPECT_EQ(counter, expected); +} + +TEST(DefinePerSampleMore, ThrowOnRedefinition) +{ + auto df = ROOT::RDataFrame(1) + .Define("x", [] { return 42; }); + EXPECT_THROW(df.DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }), + std::runtime_error); +} + +TEST(DefinePerSampleMore, GetColumnType) +{ + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + EXPECT_EQ(df.GetColumnType("x"), "int"); +} + +TEST(DefinePerSampleMore, GetColumnNames) +{ + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + EXPECT_EQ(df.GetColumnNames(), std::vector{"x"}); +} + +TEST(DefinePerSampleMore, GetDefinedColumnNames) +{ + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + EXPECT_EQ(df.GetDefinedColumnNames(), std::vector{"x"}); +} + +// TODO +/* + +// Not supported yet +TEST(DefinePerSample, Jitting) +{ + auto df = ROOT::RDataFrame(1).Define("x", [] { return 1; }).Define("y", "1"); + // Jitted redefine for a non-jitted Define + auto rx = df.DefinePerSample("x", "42").Max("x"); + // Jitted redefine for a jitted Define + auto ry = df.DefinePerSample("y", "42").Max("y"); + + EXPECT_EQ(*rx, 42); + EXPECT_EQ(*ry, 42); +} + +// Not supported yet +TEST(DefinePerSample, DataSource) +{ + ROOT::RDataFrame df(std::make_unique(1)); + auto r = df.DefinePerSample("col0", [] { return 42; }).Max("col0"); + EXPECT_EQ(*r, 42); +} + +*/ + +// instantiate single-thread tests +INSTANTIATE_TEST_SUITE_P(Seq, DefinePerSample, ::testing::Values(false)); + +#ifdef R__USE_IMT +// instantiate multi-thread tests +INSTANTIATE_TEST_SUITE_P(MT, DefinePerSample, ::testing::Values(true)); +#endif From eccc44b7055dafd1991e50c91f5987c46dbfdd09 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 16 Aug 2021 14:46:40 +0200 Subject: [PATCH 189/577] [DF] Add entry range info to RDataBlockID --- tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx | 11 ++++++++++- tree/dataframe/src/RLoopManager.cxx | 14 +++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx b/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx index 90f5cda57d826..c1e897c59b66b 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx @@ -12,6 +12,7 @@ #define ROOT_RDF_RDATABLOCKID #include +#include #include #include @@ -25,9 +26,13 @@ namespace RDF { class RDataBlockID { // Currently backed by a simple string, might change in the future as we get usage experience. std::string fID; + std::pair fEntryRange; public: - explicit RDataBlockID(std::string_view id) : fID(id) {} + explicit RDataBlockID(std::string_view id, std::pair entryRange) + : fID(id), fEntryRange(entryRange) + { + } RDataBlockID() = default; RDataBlockID(const RDataBlockID &) = default; RDataBlockID &operator=(const RDataBlockID &) = default; @@ -50,6 +55,10 @@ public: return fID; } + std::pair EntryRange() const { return fEntryRange; } + + ULong64_t NEntries() const { return fEntryRange.second - fEntryRange.first; } + bool operator==(const RDataBlockID &other) const { return fID == other.fID; } bool operator!=(const RDataBlockID &other) const { return !(*this == other); } }; diff --git a/tree/dataframe/src/RLoopManager.cxx b/tree/dataframe/src/RLoopManager.cxx index af2275323f0cc..c6914edb69d6d 100644 --- a/tree/dataframe/src/RLoopManager.cxx +++ b/tree/dataframe/src/RLoopManager.cxx @@ -620,8 +620,8 @@ void RLoopManager::SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot) { } void RLoopManager::UpdateDataBlockID(unsigned int slot, const std::pair &range) { - fDataBlockIDs[slot] = - RDataBlockID("Empty source, range: {" + std::to_string(range.first) + ", " + std::to_string(range.second) + "}"); + fDataBlockIDs[slot] = RDataBlockID( + "Empty source, range: {" + std::to_string(range.first) + ", " + std::to_string(range.second) + "}", range); } void RLoopManager::UpdateDataBlockID(unsigned int slot, TTreeReader &r) { @@ -631,7 +631,15 @@ void RLoopManager::UpdateDataBlockID(unsigned int slot, TTreeReader &r) { const std::string treename = ROOT::Internal::TreeUtils::GetTreeFullPaths(*tree)[0]; auto *file = tree->GetCurrentFile(); const std::string fname = file != nullptr ? file->GetName() : "#inmemorytree#"; - fDataBlockIDs[slot] = RDataBlockID(fname + "/" + treename); + + + std::pair range = r.GetEntriesRange(); + R__ASSERT(range.first >= 0); + if (range.second == -1) { + range.second = tree->GetEntries(); // convert '-1', i.e. 'until the end', to the actual entry number + } + + fDataBlockIDs[slot] = RDataBlockID(fname + "/" + treename, range); } /// Initialize all nodes of the functional graph before running the event loop. From e11395626e83d3ae30db84d1c8f1adb631d5f0d9 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 18 Aug 2021 11:21:20 +0200 Subject: [PATCH 190/577] [DF] Test entry ranges in RDataBlockID --- .../test/dataframe_datablockcallback.cxx | 39 +++++++++++++------ .../test/dataframe_definepersample.cxx | 6 ++- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/tree/dataframe/test/dataframe_datablockcallback.cxx b/tree/dataframe/test/dataframe_datablockcallback.cxx index bef06fdedfb86..6ca312890b975 100644 --- a/tree/dataframe/test/dataframe_datablockcallback.cxx +++ b/tree/dataframe/test/dataframe_datablockcallback.cxx @@ -19,7 +19,7 @@ // fixture for all tests in this file struct RDFDataBlockCallback : ::testing::TestWithParam { unsigned int NSLOTS; - unsigned int NENTRIES = std::max(10u, std::thread::hardware_concurrency() * 2); + ULong64_t NENTRIES = std::max(10u, std::thread::hardware_concurrency() * 2); RDFDataBlockCallback() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) { @@ -62,7 +62,7 @@ TEST_P(RDFDataBlockCallback, EmptySource) { ROOT::RDataFrame df(NENTRIES); auto result = df.Book<>(CounterHelper(), {}); // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled - const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, df.GetNSlots() * 2u) : 1u; + const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, df.GetNSlots() * 2ull) : 1u; EXPECT_EQ(*result, expected); } @@ -70,7 +70,7 @@ TEST_P(RDFDataBlockCallback, DataSource) { auto df = ROOT::RDF::MakeTrivialDataFrame(NENTRIES); auto result = df.Book<>(CounterHelper(), {}); // RTrivialDS tries to produce NSLOTS tasks - const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, df.GetNSlots()) : 1u; + const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(NENTRIES, ULong64_t(df.GetNSlots())) : 1ull; EXPECT_EQ(*result, expected); } @@ -118,51 +118,68 @@ class DataBlockHelper : public ROOT::Detail::RDF::RActionImpl { std::string GetActionName() { return "DataBlockHelper"; } }; -TEST_P(RDFDataBlockCallback, EmptySourceDataBlockNames) { +TEST_P(RDFDataBlockCallback, EmptySourceDataBlockID) { ROOT::RDataFrame df(NENTRIES); auto result = df.Book<>(DataBlockHelper(), {}); if (ROOT::IsImplicitMTEnabled()) { // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled - const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2u); + const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull); ASSERT_EQ(result->size(), expectedSize); for (auto &id : *result) { // check that all entries start with the expected string EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0); + EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize); } } else { + ASSERT_EQ(result->size(), 1); + const auto &id = result->at(0); const std::string expectedStr = "Empty source, range: {0, " + std::to_string(NENTRIES) + "}"; - EXPECT_EQ(result->at(0).AsString(), expectedStr); + EXPECT_EQ(id.AsString(), expectedStr); + EXPECT_EQ(id.NEntries(), NENTRIES); + EXPECT_EQ(id.EntryRange(), std::make_pair(0ull, NENTRIES)); } } -TEST_P(RDFDataBlockCallback, TTreeDataBlockNames) { +TEST_P(RDFDataBlockCallback, TTreeDataBlockID) { const std::string prefix = "rdfdatablockcallback_ttreedbnames"; InputFilesRAII file(1u, prefix); ROOT::RDataFrame df("t", prefix + "*"); auto result = df.Book<>(DataBlockHelper(), {}); ASSERT_EQ(result->size(), 1u); - EXPECT_TRUE(result->at(0).Contains(prefix)); - EXPECT_TRUE(result->at(0).AsString().rfind("/t") == result->at(0).AsString().size() - 2); + const auto &id = result->at(0); + EXPECT_TRUE(id.Contains(prefix)); + EXPECT_TRUE(id.AsString().rfind("/t") == id.AsString().size() - 2); + EXPECT_EQ(id.NEntries(), 1u); + EXPECT_EQ(id.EntryRange(), std::make_pair(0ull, 1ull)); } -TEST_P(RDFDataBlockCallback, TChainDataBlockNames) { +TEST_P(RDFDataBlockCallback, TChainDataBlockID) { const std::string prefix = "rdfdatablockcallback_tchain"; InputFilesRAII file(5u, prefix); ROOT::RDataFrame df("t", prefix + "*"); auto result = df.Book<>(DataBlockHelper(), {}); ASSERT_EQ(result->size(), 5u); std::vector fileNumbers(5); + std::vector> entryRanges(5); for (auto i = 0u; i < 5u; ++i) { EXPECT_TRUE(result->at(i).Contains(prefix)); const auto &id = result->at(i).AsString(); EXPECT_TRUE(id.rfind("/t") == id.size() - 2); fileNumbers[i] = id[id.size() - 8]; + entryRanges[i] = result->at(i).EntryRange(); } std::sort(fileNumbers.begin(), fileNumbers.end()); - for (int i = 0; i < 5; ++i) + std::sort( + entryRanges.begin(), entryRanges.end(), + [](std::pair p1, std::pair p2) { return p1.first < p2.first; }); + for (int i = 0; i < 5; ++i) { // '0' == 48, '1' == 49, etc. EXPECT_EQ(fileNumbers[i], i + 48); + // local entry numbers are reported + EXPECT_EQ(entryRanges[i].first, 0ull); + EXPECT_EQ(entryRanges[i].second, 1ull); + } } /* TODO: data-block IDs for RDataSources are not supported yet diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx index 7e99d2d055f72..1599b17519d6c 100644 --- a/tree/dataframe/test/dataframe_definepersample.cxx +++ b/tree/dataframe/test/dataframe_definepersample.cxx @@ -74,7 +74,8 @@ TEST_P(DefinePerSample, Tree) ROOT::RDataFrame df("t", prefix + "*"); int counter = 0; - auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &db) { + EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; return 42; }); @@ -93,7 +94,8 @@ TEST_P(DefinePerSample, TChain) ROOT::RDataFrame df("t", prefix + "*"); int counter = 0; - auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &db) { + EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; return 42; }); From 4c0fd22eb65fd9b2ddb6cbbe74e0ccdaa5aedb00 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 7 Sep 2021 18:22:57 +0200 Subject: [PATCH 191/577] [DF] Consistently use "sample" instead of "data-block" Rename: - DataBlockCallback_t -> SampleCallback_t - RDataBlockID -> RSampleInfo - RDataBlockNotifier -> RNewSampleNotifier - RDataBlockFlag -> RNewSampleFlag - GetDataBlockCallback -> GetSampleCallback etc. --- tree/dataframe/CMakeLists.txt | 4 +- tree/dataframe/inc/LinkDef.h | 2 +- tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx | 12 ++-- .../dataframe/inc/ROOT/RDF/InterfaceUtils.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RAction.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RActionBase.hxx | 4 +- .../inc/ROOT/RDF/RDefinePerSample.hxx | 4 +- tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 6 +- tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx | 18 +++--- ...ockNotifier.hxx => RNewSampleNotifier.hxx} | 20 +++---- .../RDF/{RDataBlockID.hxx => RSampleInfo.hxx} | 26 ++++----- tree/dataframe/src/RJittedAction.cxx | 4 +- tree/dataframe/src/RLoopManager.cxx | 52 ++++++++--------- tree/dataframe/test/CMakeLists.txt | 2 +- tree/dataframe/test/CounterHelper.h | 4 +- .../test/dataframe_definepersample.cxx | 14 ++--- ...lback.cxx => dataframe_samplecallback.cxx} | 56 +++++++++---------- 18 files changed, 117 insertions(+), 117 deletions(-) rename tree/dataframe/inc/ROOT/RDF/{RDataBlockNotifier.hxx => RNewSampleNotifier.hxx} (72%) rename tree/dataframe/inc/ROOT/RDF/{RDataBlockID.hxx => RSampleInfo.hxx} (71%) rename tree/dataframe/test/{dataframe_datablockcallback.cxx => dataframe_samplecallback.cxx} (77%) diff --git a/tree/dataframe/CMakeLists.txt b/tree/dataframe/CMakeLists.txt index 0e3bf28730b5a..74eed5306e354 100644 --- a/tree/dataframe/CMakeLists.txt +++ b/tree/dataframe/CMakeLists.txt @@ -52,8 +52,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTDataFrame ROOT/RDF/RActionBase.hxx ROOT/RDF/RAction.hxx ROOT/RDF/RBookedDefines.hxx - ROOT/RDF/RDataBlockNotifier.hxx - ROOT/RDF/RDataBlockID.hxx + ROOT/RDF/RNewSampleNotifier.hxx + ROOT/RDF/RSampleInfo.hxx ROOT/RDF/RDefineBase.hxx ROOT/RDF/RDefine.hxx ROOT/RDF/RDefineReader.hxx diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h index 684fc3b6f133e..8ca8fbd6f5d36 100644 --- a/tree/dataframe/inc/LinkDef.h +++ b/tree/dataframe/inc/LinkDef.h @@ -57,7 +57,7 @@ #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; -#pragma link C++ class TNotifyLink; +#pragma link C++ class TNotifyLink; #pragma link C++ class ROOT::RDF::RCutFlowReport; #endif diff --git a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx index 26a1f24d7dd2e..add8884b8ab62 100644 --- a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx @@ -24,7 +24,7 @@ #include "ROOT/RVec.hxx" #include "ROOT/TBufferMerger.hxx" // for SnapshotHelper #include "ROOT/RDF/RCutFlowReport.hxx" -#include "ROOT/RDF/RDataBlockID.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include "ROOT/RDF/Utils.hxx" #include "ROOT/RSnapshotOptions.hxx" #include "ROOT/TypeTraits.hxx" @@ -81,7 +81,7 @@ public: throw std::logic_error("`GetMergeableValue` is not implemented for this type of action."); } - virtual ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() { return {}; } + virtual ROOT::RDF::SampleCallback_t GetSampleCallback() { return {}; } }; } // namespace RDF @@ -1455,9 +1455,9 @@ public: std::string GetActionName() { return "Snapshot"; } - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final + ROOT::RDF::SampleCallback_t GetSampleCallback() final { - return [this](unsigned int, const RDataBlockID &) mutable { fBranchAddressesNeedReset = true; }; + return [this](unsigned int, const RSampleInfo &) mutable { fBranchAddressesNeedReset = true; }; } }; @@ -1629,9 +1629,9 @@ public: std::string GetActionName() { return "Snapshot"; } - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final + ROOT::RDF::SampleCallback_t GetSampleCallback() final { - return [this](unsigned int slot, const RDataBlockID &) mutable { fBranchAddressesNeedReset[slot] = 1; }; + return [this](unsigned int slot, const RSampleInfo &) mutable { fBranchAddressesNeedReset[slot] = 1; }; } }; diff --git a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx index 69f5501eaf279..c85314ef459d0 100644 --- a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx @@ -498,7 +498,7 @@ void CallBuildAction(std::shared_ptr *prevNodeOnHeap, const char * auto actionPtr = BuildAction(cols, std::move(*helperArgOnHeap), nSlots, std::move(prevNodePtr), ActionTag{}, *defines); - loopManager.AddDataBlockCallback(actionPtr->GetDataBlockCallback()); + loopManager.AddSampleCallback(actionPtr->GetSampleCallback()); jittedActionOnHeap->SetAction(std::move(actionPtr)); // defines points to the columns structure in the heap, created before the jitted call so that the jitter can diff --git a/tree/dataframe/inc/ROOT/RDF/RAction.hxx b/tree/dataframe/inc/ROOT/RDF/RAction.hxx index 16c28fc26f33b..34bc005524bb6 100644 --- a/tree/dataframe/inc/ROOT/RDF/RAction.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RAction.hxx @@ -165,7 +165,7 @@ private: // this one is always available but has lower precedence thanks to `...` void *PartialUpdateImpl(...) { throw std::runtime_error("This action does not support callbacks!"); } - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final { return fHelper.GetDataBlockCallback(); } + ROOT::RDF::SampleCallback_t GetSampleCallback() final { return fHelper.GetSampleCallback(); } }; } // namespace RDF diff --git a/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx b/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx index 820b132d8f2a8..b48024debde11 100644 --- a/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RActionBase.hxx @@ -12,7 +12,7 @@ #define ROOT_RACTIONBASE #include "ROOT/RDF/RBookedDefines.hxx" -#include "ROOT/RDF/RDataBlockID.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include "ROOT/RDF/Utils.hxx" // ColumnNames_t #include "RtypesCore.h" @@ -82,7 +82,7 @@ public: */ virtual std::unique_ptr GetMergeableValue() const = 0; - virtual ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() = 0; + virtual ROOT::RDF::SampleCallback_t GetSampleCallback() = 0; }; } // namespace RDF } // namespace Internal diff --git a/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx index 27a6591e52364..1a4f4905633b2 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx @@ -11,7 +11,7 @@ #ifndef ROOT_RDF_RDEFINEPERSAMPLE #define ROOT_RDF_RDEFINEPERSAMPLE -#include "ROOT/RDF/RDataBlockID.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include "ROOT/RDF/Utils.hxx" #include #include @@ -58,7 +58,7 @@ public: } /// Update the value at the address returned by GetValuePtr with the content corresponding to the given entry - void Update(unsigned int slot, const ROOT::RDF::RDataBlockID &id) + void Update(unsigned int slot, const ROOT::RDF::RSampleInfo &id) { fLastResults[slot * RDFInternal::CacheLineStep()] = fExpression(slot, id); } diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index f391bc8198597..c8ca28e2c2153 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -500,10 +500,10 @@ public: auto newColumn = std::make_shared>(name, retTypeName, std::move(expression), fLoopManager->GetNSlots()); - auto updateDefinePerSample = [newColumn](unsigned int slot, const ROOT::RDF::RDataBlockID &id) { + auto updateDefinePerSample = [newColumn](unsigned int slot, const ROOT::RDF::RSampleInfo &id) { newColumn->Update(slot, id); }; - fLoopManager->AddDataBlockCallback(std::move(updateDefinePerSample)); + fLoopManager->AddSampleCallback(std::move(updateDefinePerSample)); RDFInternal::RBookedDefines newCols(fDefines); newCols.AddColumn(std::move(newColumn), name); @@ -2630,7 +2630,7 @@ private: auto action = RDFInternal::BuildAction(validColumnNames, helperArg, nSlots, fProxiedPtr, ActionTag{}, fDefines); fLoopManager->Book(action.get()); - fLoopManager->AddDataBlockCallback(action->GetDataBlockCallback()); + fLoopManager->AddSampleCallback(action->GetSampleCallback()); return MakeResultPtr(r, *fLoopManager, std::move(action)); } diff --git a/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx b/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx index 12ea80a6804ad..5c0cd70f3af80 100644 --- a/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RJittedAction.hxx @@ -61,7 +61,7 @@ public: // Helper for RMergeableValue std::unique_ptr GetMergeableValue() const final; - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final; + ROOT::RDF::SampleCallback_t GetSampleCallback() final; }; } // ns RDF diff --git a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx index e929ab949b26c..5b496ea5a348a 100644 --- a/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RLoopManager.hxx @@ -12,8 +12,8 @@ #define ROOT_RLOOPMANAGER #include "ROOT/RDF/RNodeBase.hxx" -#include "ROOT/RDF/RDataBlockNotifier.hxx" -#include "ROOT/RDF/RDataBlockID.hxx" +#include "ROOT/RDF/RNewSampleNotifier.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include #include @@ -122,9 +122,9 @@ class RLoopManager : public RNodeBase { /// Registered callbacks to invoke just once before running the loop std::vector fCallbacksOnce; /// Registered callbacks to call at the beginning of each "data block" - std::vector fDataBlockCallbacks; - RDFInternal::RDataBlockNotifier fDataBlockNotifier; - std::vector fDataBlockIDs; + std::vector fSampleCallbacks; + RDFInternal::RNewSampleNotifier fNewSampleNotifier; + std::vector fSampleInfos; unsigned int fNRuns{0}; ///< Number of event loops run /// Registry of per-slot value pointers for booked data-source columns @@ -146,9 +146,9 @@ class RLoopManager : public RNodeBase { void CleanUpNodes(); void CleanUpTask(TTreeReader *r, unsigned int slot); void EvalChildrenCounts(); - void SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot); - void UpdateDataBlockID(unsigned int slot, const std::pair &range); - void UpdateDataBlockID(unsigned int slot, TTreeReader &r); + void SetupSampleCallbacks(TTreeReader *r, unsigned int slot); + void UpdateSampleInfo(unsigned int slot, const std::pair &range); + void UpdateSampleInfo(unsigned int slot, TTreeReader &r); public: RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches); @@ -206,7 +206,7 @@ public: const ColumnNames_t &GetBranchNames(); - void AddDataBlockCallback(ROOT::RDF::DataBlockCallback_t &&callback); + void AddSampleCallback(ROOT::RDF::SampleCallback_t &&callback); }; } // ns RDF diff --git a/tree/dataframe/inc/ROOT/RDF/RDataBlockNotifier.hxx b/tree/dataframe/inc/ROOT/RDF/RNewSampleNotifier.hxx similarity index 72% rename from tree/dataframe/inc/ROOT/RDF/RDataBlockNotifier.hxx rename to tree/dataframe/inc/ROOT/RDF/RNewSampleNotifier.hxx index 6322348269815..cd14d191e55fc 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDataBlockNotifier.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RNewSampleNotifier.hxx @@ -8,8 +8,8 @@ * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ -#ifndef ROOT_RDF_RDATABLOCKNOTIFIER -#define ROOT_RDF_RDATABLOCKNOTIFIER +#ifndef ROOT_RDF_RNEWSAMPLENOTIFIER +#define ROOT_RDF_RNEWSAMPLENOTIFIER #include @@ -19,7 +19,7 @@ namespace ROOT { namespace Internal { namespace RDF { -struct RDataBlockFlag { +struct RNewSampleFlag { bool fFlag = false; public: @@ -33,20 +33,20 @@ public: } }; -class RDataBlockNotifier { - // TNotifyLink and RDataBlockFlags per processing slot - std::vector>> fNotifyLink; - std::vector fFlags; +class RNewSampleNotifier { + // TNotifyLink and RNewSampleFlags per processing slot + std::vector>> fNotifyLink; + std::vector fFlags; public: - RDataBlockNotifier(unsigned int nSlots) : fNotifyLink(nSlots), fFlags(nSlots) {} + RNewSampleNotifier(unsigned int nSlots) : fNotifyLink(nSlots), fFlags(nSlots) {} bool CheckFlag(unsigned int slot) const { return fFlags[slot].CheckFlag(); } void SetFlag(unsigned int slot) { fFlags[slot].SetFlag(); } void UnsetFlag(unsigned int slot) { fFlags[slot].UnsetFlag(); } - TNotifyLink &GetChainNotifyLink(unsigned int slot) + TNotifyLink &GetChainNotifyLink(unsigned int slot) { if (fNotifyLink[slot] == nullptr) - fNotifyLink[slot] = std::make_unique>(&fFlags[slot]); + fNotifyLink[slot] = std::make_unique>(&fFlags[slot]); return *fNotifyLink[slot]; } }; diff --git a/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx similarity index 71% rename from tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx rename to tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx index c1e897c59b66b..f18e927b8a16d 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDataBlockID.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx @@ -8,8 +8,8 @@ * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ -#ifndef ROOT_RDF_RDATABLOCKID -#define ROOT_RDF_RDATABLOCKID +#ifndef ROOT_RDF_RSAMPLEINFO +#define ROOT_RDF_RSAMPLEINFO #include #include @@ -23,22 +23,22 @@ namespace RDF { /// This type represents a data-block identifier, to be used in conjunction with RDataFrame features such as /// DefinePerSample() and data-block callbacks. -class RDataBlockID { +class RSampleInfo { // Currently backed by a simple string, might change in the future as we get usage experience. std::string fID; std::pair fEntryRange; public: - explicit RDataBlockID(std::string_view id, std::pair entryRange) + explicit RSampleInfo(std::string_view id, std::pair entryRange) : fID(id), fEntryRange(entryRange) { } - RDataBlockID() = default; - RDataBlockID(const RDataBlockID &) = default; - RDataBlockID &operator=(const RDataBlockID &) = default; - RDataBlockID(RDataBlockID &&) = default; - RDataBlockID &operator=(RDataBlockID &&) = default; - ~RDataBlockID() = default; + RSampleInfo() = default; + RSampleInfo(const RSampleInfo &) = default; + RSampleInfo &operator=(const RSampleInfo &) = default; + RSampleInfo(RSampleInfo &&) = default; + RSampleInfo &operator=(RSampleInfo &&) = default; + ~RSampleInfo() = default; bool Contains(std::string_view substr) const { @@ -59,13 +59,13 @@ public: ULong64_t NEntries() const { return fEntryRange.second - fEntryRange.first; } - bool operator==(const RDataBlockID &other) const { return fID == other.fID; } - bool operator!=(const RDataBlockID &other) const { return !(*this == other); } + bool operator==(const RSampleInfo &other) const { return fID == other.fID; } + bool operator!=(const RSampleInfo &other) const { return !(*this == other); } }; /// The type of a data-block callback, registered with a RDataFrame computation graph via e.g. /// DefinePerSample() or by certain actions (e.g. Snapshot()). -using DataBlockCallback_t = std::function; +using SampleCallback_t = std::function; } // namespace RDF } // namespace ROOT diff --git a/tree/dataframe/src/RJittedAction.cxx b/tree/dataframe/src/RJittedAction.cxx index 539eab41e5cfa..7fcc460ad88a7 100644 --- a/tree/dataframe/src/RJittedAction.cxx +++ b/tree/dataframe/src/RJittedAction.cxx @@ -94,8 +94,8 @@ std::unique_ptr RJittedAction::GetMergea return fConcreteAction->GetMergeableValue(); } -ROOT::RDF::DataBlockCallback_t RJittedAction::GetDataBlockCallback() +ROOT::RDF::SampleCallback_t RJittedAction::GetSampleCallback() { R__ASSERT(fConcreteAction != nullptr); - return fConcreteAction->GetDataBlockCallback(); + return fConcreteAction->GetSampleCallback(); } diff --git a/tree/dataframe/src/RLoopManager.cxx b/tree/dataframe/src/RLoopManager.cxx index c6914edb69d6d..5b65513f5a718 100644 --- a/tree/dataframe/src/RLoopManager.cxx +++ b/tree/dataframe/src/RLoopManager.cxx @@ -338,21 +338,21 @@ RLoopManager::RLoopManager(TTree *tree, const ColumnNames_t &defaultBranches) : fTree(std::shared_ptr(tree, [](TTree *) {})), fDefaultColumns(defaultBranches), fNSlots(RDFInternal::GetNSlots()), fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kROOTFilesMT : ELoopType::kROOTFiles), - fDataBlockNotifier(fNSlots), fDataBlockIDs(fNSlots) + fNewSampleNotifier(fNSlots), fSampleInfos(fNSlots) { } RLoopManager::RLoopManager(ULong64_t nEmptyEntries) : fNEmptyEntries(nEmptyEntries), fNSlots(RDFInternal::GetNSlots()), - fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kNoFilesMT : ELoopType::kNoFiles), fDataBlockNotifier(fNSlots), - fDataBlockIDs(fNSlots) + fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kNoFilesMT : ELoopType::kNoFiles), fNewSampleNotifier(fNSlots), + fSampleInfos(fNSlots) { } RLoopManager::RLoopManager(std::unique_ptr ds, const ColumnNames_t &defaultBranches) : fDefaultColumns(defaultBranches), fNSlots(RDFInternal::GetNSlots()), fLoopType(ROOT::IsImplicitMTEnabled() ? ELoopType::kDataSourceMT : ELoopType::kDataSource), - fDataSource(std::move(ds)), fDataBlockNotifier(fNSlots), fDataBlockIDs(fNSlots) + fDataSource(std::move(ds)), fNewSampleNotifier(fNSlots), fSampleInfos(fNSlots) { fDataSource->SetNSlots(fNSlots); } @@ -393,7 +393,7 @@ void RLoopManager::RunEmptySourceMT() InitNodeSlots(nullptr, slot); R__LOG_INFO(RDFLogChannel()) << LogRangeProcessing({"an empty source", range.first, range.second, slot}); try { - UpdateDataBlockID(slot, range); + UpdateSampleInfo(slot, range); for (auto currEntry = range.first; currEntry < range.second; ++currEntry) { RunAndCheckFilters(slot, currEntry); } @@ -417,7 +417,7 @@ void RLoopManager::RunEmptySource() R__LOG_INFO(RDFLogChannel()) << LogRangeProcessing({"an empty source", 0, fNEmptyEntries, 0u}); RCallCleanUpTask cleanup(*this); try { - UpdateDataBlockID(/*slot*/0, {0, fNEmptyEntries}); + UpdateSampleInfo(/*slot*/0, {0, fNEmptyEntries}); for (ULong64_t currEntry = 0; currEntry < fNEmptyEntries && fNStopsReceived < fNChildren; ++currEntry) { RunAndCheckFilters(0, currEntry); } @@ -449,8 +449,8 @@ void RLoopManager::RunTreeProcessorMT() try { // recursive call to check filters and conditionally execute actions while (r.Next()) { - if (fDataBlockNotifier.CheckFlag(slot)) { - UpdateDataBlockID(slot, r); + if (fNewSampleNotifier.CheckFlag(slot)) { + UpdateSampleInfo(slot, r); } RunAndCheckFilters(slot, count++); } @@ -483,8 +483,8 @@ void RLoopManager::RunTreeReader() // in the non-MT case processing can be stopped early by ranges, hence the check on fNStopsReceived try { while (r.Next() && fNStopsReceived < fNChildren) { - if (fDataBlockNotifier.CheckFlag(0)) { - UpdateDataBlockID(/*slot*/0, r); + if (fNewSampleNotifier.CheckFlag(0)) { + UpdateSampleInfo(/*slot*/0, r); } RunAndCheckFilters(0, r.GetCurrentEntry()); } @@ -576,11 +576,11 @@ void RLoopManager::RunDataSourceMT() void RLoopManager::RunAndCheckFilters(unsigned int slot, Long64_t entry) { // data-block callbacks run before the rest of the graph - if (fDataBlockNotifier.CheckFlag(slot)) { - for (auto &callback : fDataBlockCallbacks) { - callback(slot, fDataBlockIDs[slot]); + if (fNewSampleNotifier.CheckFlag(slot)) { + for (auto &callback : fSampleCallbacks) { + callback(slot, fSampleInfos[slot]); } - fDataBlockNotifier.UnsetFlag(slot); + fNewSampleNotifier.UnsetFlag(slot); } for (auto &actionPtr : fBookedActions) @@ -596,7 +596,7 @@ void RLoopManager::RunAndCheckFilters(unsigned int slot, Long64_t entry) /// calls their `InitSlot` method, to get them ready for running a task. void RLoopManager::InitNodeSlots(TTreeReader *r, unsigned int slot) { - SetupDataBlockCallbacks(r, slot); + SetupSampleCallbacks(r, slot); for (auto &ptr : fBookedActions) ptr->InitSlot(r, slot); for (auto &ptr : fBookedFilters) @@ -605,26 +605,26 @@ void RLoopManager::InitNodeSlots(TTreeReader *r, unsigned int slot) callback(slot); } -void RLoopManager::SetupDataBlockCallbacks(TTreeReader *r, unsigned int slot) { +void RLoopManager::SetupSampleCallbacks(TTreeReader *r, unsigned int slot) { if (r != nullptr) { // we need to set a notifier so that we run the callbacks every time we switch to a new TTree // `PrependLink` inserts this notifier into the TTree/TChain's linked list of notifiers - fDataBlockNotifier.GetChainNotifyLink(slot).PrependLink(*r->GetTree()); + fNewSampleNotifier.GetChainNotifyLink(slot).PrependLink(*r->GetTree()); } // Whatever the data source, initially set the "new data block" flag: // - for TChains, this ensures that we don't skip the first data block because // the correct tree is already loaded // - for RDataSources and empty sources, which currently don't have data blocks, this // ensures that we run once per task - fDataBlockNotifier.SetFlag(slot); + fNewSampleNotifier.SetFlag(slot); } -void RLoopManager::UpdateDataBlockID(unsigned int slot, const std::pair &range) { - fDataBlockIDs[slot] = RDataBlockID( +void RLoopManager::UpdateSampleInfo(unsigned int slot, const std::pair &range) { + fSampleInfos[slot] = RSampleInfo( "Empty source, range: {" + std::to_string(range.first) + ", " + std::to_string(range.second) + "}", range); } -void RLoopManager::UpdateDataBlockID(unsigned int slot, TTreeReader &r) { +void RLoopManager::UpdateSampleInfo(unsigned int slot, TTreeReader &r) { // one GetTree to retrieve the TChain, another to retrieve the underlying TTree auto *tree = r.GetTree()->GetTree(); R__ASSERT(tree != nullptr); @@ -639,7 +639,7 @@ void RLoopManager::UpdateDataBlockID(unsigned int slot, TTreeReader &r) { range.second = tree->GetEntries(); // convert '-1', i.e. 'until the end', to the actual entry number } - fDataBlockIDs[slot] = RDataBlockID(fname + "/" + treename, range); + fSampleInfos[slot] = RSampleInfo(fname + "/" + treename, range); } /// Initialize all nodes of the functional graph before running the event loop. @@ -679,14 +679,14 @@ void RLoopManager::CleanUpNodes() fCallbacks.clear(); fCallbacksOnce.clear(); - fDataBlockCallbacks.clear(); + fSampleCallbacks.clear(); } /// Perform clean-up operations. To be called at the end of each task execution. void RLoopManager::CleanUpTask(TTreeReader *r, unsigned int slot) { if (r != nullptr) - fDataBlockNotifier.GetChainNotifyLink(slot).RemoveLink(*r->GetTree()); + fNewSampleNotifier.GetChainNotifyLink(slot).RemoveLink(*r->GetTree()); for (auto &ptr : fBookedActions) ptr->FinalizeSlot(slot); for (auto &ptr : fBookedFilters) @@ -901,8 +901,8 @@ void RLoopManager::AddDSValuePtrs(const std::string &col, const std::vector { void Exec(unsigned int) { ++(*fNCalls); } #else void Exec(unsigned int) {} - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final + ROOT::RDF::SampleCallback_t GetSampleCallback() final { - return [this](unsigned int, const ROOT::RDF::RDataBlockID &) mutable { ++(*this->fNCalls); }; + return [this](unsigned int, const ROOT::RDF::RSampleInfo &) mutable { ++(*this->fNCalls); }; } #endif void Finalize() {} diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx index 1599b17519d6c..c55c28abb604b 100644 --- a/tree/dataframe/test/dataframe_definepersample.cxx +++ b/tree/dataframe/test/dataframe_definepersample.cxx @@ -54,7 +54,7 @@ struct InputFilesRAII { TEST_P(DefinePerSample, NoJitting) { int counter = 0; - auto df = ROOT::RDataFrame(NENTRIES).DefinePerSample("x", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &) { + auto df = ROOT::RDataFrame(NENTRIES).DefinePerSample("x", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &) { ++counter; return 42; }); @@ -74,7 +74,7 @@ TEST_P(DefinePerSample, Tree) ROOT::RDataFrame df("t", prefix + "*"); int counter = 0; - auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &db) { + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &db) { EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; return 42; @@ -94,7 +94,7 @@ TEST_P(DefinePerSample, TChain) ROOT::RDataFrame df("t", prefix + "*"); int counter = 0; - auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RDataBlockID &db) { + auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &db) { EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; return 42; @@ -111,25 +111,25 @@ TEST(DefinePerSampleMore, ThrowOnRedefinition) { auto df = ROOT::RDataFrame(1) .Define("x", [] { return 42; }); - EXPECT_THROW(df.DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }), + EXPECT_THROW(df.DefinePerSample("x", [](unsigned, const ROOT::RDF::RSampleInfo &) { return 42; }), std::runtime_error); } TEST(DefinePerSampleMore, GetColumnType) { - auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RSampleInfo &) { return 42; }); EXPECT_EQ(df.GetColumnType("x"), "int"); } TEST(DefinePerSampleMore, GetColumnNames) { - auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RSampleInfo &) { return 42; }); EXPECT_EQ(df.GetColumnNames(), std::vector{"x"}); } TEST(DefinePerSampleMore, GetDefinedColumnNames) { - auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RDataBlockID &) { return 42; }); + auto df = ROOT::RDataFrame(1).DefinePerSample("x", [](unsigned, const ROOT::RDF::RSampleInfo &) { return 42; }); EXPECT_EQ(df.GetDefinedColumnNames(), std::vector{"x"}); } diff --git a/tree/dataframe/test/dataframe_datablockcallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx similarity index 77% rename from tree/dataframe/test/dataframe_datablockcallback.cxx rename to tree/dataframe/test/dataframe_samplecallback.cxx index 6ca312890b975..7c1ec7e9c4f87 100644 --- a/tree/dataframe/test/dataframe_datablockcallback.cxx +++ b/tree/dataframe/test/dataframe_samplecallback.cxx @@ -17,17 +17,17 @@ #include // std::hardware_concurrency // fixture for all tests in this file -struct RDFDataBlockCallback : ::testing::TestWithParam { +struct RDFSampleCallback : ::testing::TestWithParam { unsigned int NSLOTS; ULong64_t NENTRIES = std::max(10u, std::thread::hardware_concurrency() * 2); - RDFDataBlockCallback() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) + RDFSampleCallback() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) { if (GetParam()) ROOT::EnableImplicitMT(); } - ~RDFDataBlockCallback() + ~RDFSampleCallback() { if (GetParam()) ROOT::DisableImplicitMT(); @@ -58,7 +58,7 @@ struct InputFilesRAII { } }; -TEST_P(RDFDataBlockCallback, EmptySource) { +TEST_P(RDFSampleCallback, EmptySource) { ROOT::RDataFrame df(NENTRIES); auto result = df.Book<>(CounterHelper(), {}); // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled @@ -66,7 +66,7 @@ TEST_P(RDFDataBlockCallback, EmptySource) { EXPECT_EQ(*result, expected); } -TEST_P(RDFDataBlockCallback, DataSource) { +TEST_P(RDFSampleCallback, DataSource) { auto df = ROOT::RDF::MakeTrivialDataFrame(NENTRIES); auto result = df.Book<>(CounterHelper(), {}); // RTrivialDS tries to produce NSLOTS tasks @@ -74,7 +74,7 @@ TEST_P(RDFDataBlockCallback, DataSource) { EXPECT_EQ(*result, expected); } -TEST_P(RDFDataBlockCallback, TTree) { +TEST_P(RDFSampleCallback, TTree) { const std::string prefix = "rdfdatablockcallback_ttree"; InputFilesRAII file(1u, prefix); ROOT::RDataFrame df("t", prefix + "*"); @@ -82,7 +82,7 @@ TEST_P(RDFDataBlockCallback, TTree) { EXPECT_EQ(*result, 1u); } -TEST_P(RDFDataBlockCallback, TChain) { +TEST_P(RDFSampleCallback, TChain) { const std::string prefix = "rdfdatablockcallback_tchain"; InputFilesRAII file(5u, prefix); ROOT::RDataFrame df("t", prefix + "*"); @@ -90,37 +90,37 @@ TEST_P(RDFDataBlockCallback, TChain) { EXPECT_EQ(*result, 5u); } -class DataBlockHelper : public ROOT::Detail::RDF::RActionImpl { - std::shared_ptr> fDataBlocks; +class SampleHelper : public ROOT::Detail::RDF::RActionImpl { + std::shared_ptr> fSamples; std::unique_ptr fMutex; public: - DataBlockHelper() - : fDataBlocks(std::make_shared>()), fMutex(std::make_unique()) + SampleHelper() + : fSamples(std::make_shared>()), fMutex(std::make_unique()) { } - DataBlockHelper(DataBlockHelper &&) = default; - DataBlockHelper(const DataBlockHelper &) = delete; + SampleHelper(SampleHelper &&) = default; + SampleHelper(const SampleHelper &) = delete; - using Result_t = std::vector; - auto GetResultPtr() const { return fDataBlocks; } + using Result_t = std::vector; + auto GetResultPtr() const { return fSamples; } void Initialize() {} void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int) {} - ROOT::RDF::DataBlockCallback_t GetDataBlockCallback() final + ROOT::RDF::SampleCallback_t GetSampleCallback() final { - return [this](unsigned int, const ROOT::RDF::RDataBlockID &db) mutable { + return [this](unsigned int, const ROOT::RDF::RSampleInfo &db) mutable { std::lock_guard lg(*fMutex); - fDataBlocks->emplace_back(db); + fSamples->emplace_back(db); }; } void Finalize() {} - std::string GetActionName() { return "DataBlockHelper"; } + std::string GetActionName() { return "SampleHelper"; } }; -TEST_P(RDFDataBlockCallback, EmptySourceDataBlockID) { +TEST_P(RDFSampleCallback, EmptySourceSampleID) { ROOT::RDataFrame df(NENTRIES); - auto result = df.Book<>(DataBlockHelper(), {}); + auto result = df.Book<>(SampleHelper(), {}); if (ROOT::IsImplicitMTEnabled()) { // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull); @@ -140,11 +140,11 @@ TEST_P(RDFDataBlockCallback, EmptySourceDataBlockID) { } } -TEST_P(RDFDataBlockCallback, TTreeDataBlockID) { +TEST_P(RDFSampleCallback, TTreeSampleID) { const std::string prefix = "rdfdatablockcallback_ttreedbnames"; InputFilesRAII file(1u, prefix); ROOT::RDataFrame df("t", prefix + "*"); - auto result = df.Book<>(DataBlockHelper(), {}); + auto result = df.Book<>(SampleHelper(), {}); ASSERT_EQ(result->size(), 1u); const auto &id = result->at(0); EXPECT_TRUE(id.Contains(prefix)); @@ -153,11 +153,11 @@ TEST_P(RDFDataBlockCallback, TTreeDataBlockID) { EXPECT_EQ(id.EntryRange(), std::make_pair(0ull, 1ull)); } -TEST_P(RDFDataBlockCallback, TChainDataBlockID) { +TEST_P(RDFSampleCallback, TChainSampleID) { const std::string prefix = "rdfdatablockcallback_tchain"; InputFilesRAII file(5u, prefix); ROOT::RDataFrame df("t", prefix + "*"); - auto result = df.Book<>(DataBlockHelper(), {}); + auto result = df.Book<>(SampleHelper(), {}); ASSERT_EQ(result->size(), 5u); std::vector fileNumbers(5); std::vector> entryRanges(5); @@ -183,7 +183,7 @@ TEST_P(RDFDataBlockCallback, TChainDataBlockID) { } /* TODO: data-block IDs for RDataSources are not supported yet -TEST_P(RDFDataBlockCallback, DataSource) { +TEST_P(RDFSampleCallback, DataSource) { auto df = ROOT::RDF::MakeTrivialDataFrame(NENTRIES); auto result = df.Book<>(CounterHelper(), {}); // RTrivialDS tries to produce NSLOTS tasks @@ -193,9 +193,9 @@ TEST_P(RDFDataBlockCallback, DataSource) { */ // instantiate single-thread tests -INSTANTIATE_TEST_SUITE_P(Seq, RDFDataBlockCallback, ::testing::Values(false)); +INSTANTIATE_TEST_SUITE_P(Seq, RDFSampleCallback, ::testing::Values(false)); #ifdef R__USE_IMT // instantiate multi-thread tests - INSTANTIATE_TEST_SUITE_P(MT, RDFDataBlockCallback, ::testing::Values(true)); + INSTANTIATE_TEST_SUITE_P(MT, RDFSampleCallback, ::testing::Values(true)); #endif From 2c001e8e65c480473a957c8ef654eee68d7a1062 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 18:05:46 +0200 Subject: [PATCH 192/577] [DF] Make counters atomic for MT tests --- tree/dataframe/test/dataframe_definepersample.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx index c55c28abb604b..af1bfff37614c 100644 --- a/tree/dataframe/test/dataframe_definepersample.cxx +++ b/tree/dataframe/test/dataframe_definepersample.cxx @@ -6,6 +6,7 @@ #include +#include #include #include // std::thread::hardware_concurrency @@ -53,7 +54,7 @@ struct InputFilesRAII { TEST_P(DefinePerSample, NoJitting) { - int counter = 0; + std::atomic_int counter{0}; auto df = ROOT::RDataFrame(NENTRIES).DefinePerSample("x", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &) { ++counter; return 42; @@ -73,7 +74,7 @@ TEST_P(DefinePerSample, Tree) InputFilesRAII file(1u, prefix); ROOT::RDataFrame df("t", prefix + "*"); - int counter = 0; + std::atomic_int counter{0}; auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &db) { EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; @@ -93,7 +94,7 @@ TEST_P(DefinePerSample, TChain) InputFilesRAII file(5u, prefix); ROOT::RDataFrame df("t", prefix + "*"); - int counter = 0; + std::atomic_int counter{0}; auto df2 = df.DefinePerSample("y", [&counter](unsigned int, const ROOT::RDF::RSampleInfo &db) { EXPECT_EQ(db.EntryRange(), std::make_pair(0ull, 1ull)); ++counter; From 3666ce7cd773695a02fae7df864edbe1dd6b355c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 18:40:26 +0200 Subject: [PATCH 193/577] [DF] Deprecate GetDataBlockCallback instead of removing it GetSampleCallback is the superior alternative. --- tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx index add8884b8ab62..8b303b66e2e8e 100644 --- a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx @@ -81,6 +81,10 @@ public: throw std::logic_error("`GetMergeableValue` is not implemented for this type of action."); } + virtual std::function GetDataBlockCallback() R__DEPRECATED(6, 28, "Use GetSampleCallback.") + { + return {}; + } virtual ROOT::RDF::SampleCallback_t GetSampleCallback() { return {}; } }; From 9b788d13e96a21bd926adb5a6b1a97f7005487af Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 19:02:18 +0200 Subject: [PATCH 194/577] [DF][NFC] Improve comments --- tree/dataframe/src/RDFInterfaceUtils.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index 2ed0f9cbc8275..d57407a47f5d1 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -620,6 +620,7 @@ std::string PrettyPrintAddr(const void *const addr) return s.str(); } +// Book the jitting of a Filter call void BookFilterJit(const std::shared_ptr &jittedFilter, std::shared_ptr *prevNodeOnHeap, std::string_view name, std::string_view expression, const std::map &aliasMap, @@ -665,7 +666,7 @@ void BookFilterJit(const std::shared_ptr &jittedFilter, lm->ToJitExec(filterInvocation.str()); } -// Jit a Define call +// Book the jitting of a Define call std::shared_ptr BookDefineJit(std::string_view name, std::string_view expression, RLoopManager &lm, RDataSource *ds, const RBookedDefines &customCols, const ColumnNames_t &branches, From 59fd07a853cbafdfcb485dd3b51c2164b408b49b Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 8 Sep 2021 20:33:23 +0200 Subject: [PATCH 195/577] [DF] Add jitting support to DefinePerSample + test --- .../dataframe/inc/ROOT/RDF/InterfaceUtils.hxx | 38 +++++++++++++++++-- tree/dataframe/inc/ROOT/RDF/RDefine.hxx | 2 + tree/dataframe/inc/ROOT/RDF/RDefineBase.hxx | 3 ++ .../inc/ROOT/RDF/RDefinePerSample.hxx | 2 +- tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 29 +++++++++++++- tree/dataframe/inc/ROOT/RDF/RJittedDefine.hxx | 2 + tree/dataframe/src/RDFInterfaceUtils.cxx | 36 +++++++++++++++++- tree/dataframe/src/RJittedDefine.cxx | 6 +++ .../test/dataframe_definepersample.cxx | 36 +++++++++--------- 9 files changed, 128 insertions(+), 26 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx index c85314ef459d0..7e943b9e36473 100644 --- a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx @@ -15,6 +15,7 @@ #include // for BuildAction #include #include +#include #include #include #include @@ -311,6 +312,10 @@ std::shared_ptr BookDefineJit(std::string_view name, std::string_ const ColumnNames_t &branches, std::shared_ptr *prevNodeOnHeap); +std::shared_ptr BookDefinePerSampleJit(std::string_view name, std::string_view expression, + RLoopManager &lm, const RBookedDefines &customCols, + std::shared_ptr *upcastNodeOnHeap); + std::string JitBuildAction(const ColumnNames_t &bl, std::shared_ptr *prevNode, const std::type_info &art, const std::type_info &at, void *rOnHeap, TTree *tree, const unsigned int nSlots, const RBookedDefines &defines, @@ -420,7 +425,33 @@ void JitFilterHelper(F &&f, const char **colsPtr, std::size_t colsSize, std::str delete wkJittedFilter; } +namespace DefineTypes { +struct RDefineTag {}; +struct RDefinePerSampleTag {}; +} + template +auto MakeDefineNode(DefineTypes::RDefineTag, std::string_view name, std::string_view dummyType, F &&f, + const ColumnNames_t &cols, unsigned int nSlots, RBookedDefines &defines, + const std::map> &dsValuePtrs, RDataSource *ds) +{ + return std::unique_ptr(new RDefine, CustomColExtraArgs::None>( + name, dummyType, std::forward(f), cols, nSlots, defines, dsValuePtrs, ds)); +} + +template +auto MakeDefineNode(DefineTypes::RDefinePerSampleTag, std::string_view name, std::string_view dummyType, F &&f, + const ColumnNames_t &, unsigned int nSlots, RBookedDefines &, + const std::map> &, RDataSource *) +{ + return std::unique_ptr( + new RDefinePerSample>(name, dummyType, std::forward(f), nSlots)); +} + +// Build a RDefine or a RDefinePerSample object and attach it to an existing RJittedDefine +// This function is meant to be called by jitted code right before starting the event loop. +// If colsPtr is null, build a RDefinePerSample (it has no input columns), otherwise a RDefine. +template void JitDefineHelper(F &&f, const char **colsPtr, std::size_t colsSize, std::string_view name, RLoopManager *lm, std::weak_ptr *wkJittedDefine, RBookedDefines *defines, std::shared_ptr *prevNodeOnHeap) noexcept @@ -442,9 +473,7 @@ void JitDefineHelper(F &&f, const char **colsPtr, std::size_t colsSize, std::str auto jittedDefine = wkJittedDefine->lock(); using Callable_t = std::decay_t; - using NewCol_t = RDefine; using ColTypes_t = typename TTraits::CallableTraits::arg_types; - constexpr auto nColumns = ColTypes_t::list_size; auto ds = lm->GetDataSource(); if (ds != nullptr) @@ -454,8 +483,9 @@ void JitDefineHelper(F &&f, const char **colsPtr, std::size_t colsSize, std::str // to help devs debugging const auto dummyType = "jittedCol_t"; // use unique_ptr instead of make_unique to reduce jit/compile-times - jittedDefine->SetDefine(std::unique_ptr( - new NewCol_t(name, dummyType, std::forward(f), cols, lm->GetNSlots(), *defines, lm->GetDSValuePtrs(), ds))); + std::unique_ptr newCol{MakeDefineNode(RDefineTypeTag{}, name, dummyType, std::forward(f), cols, + lm->GetNSlots(), *defines, lm->GetDSValuePtrs(), ds)}; + jittedDefine->SetDefine(std::move(newCol)); // defines points to the columns structure in the heap, created before the jitted call so that the jitter can // share data after it has lazily compiled the code. Here the data has been used and the memory can be freed. diff --git a/tree/dataframe/inc/ROOT/RDF/RDefine.hxx b/tree/dataframe/inc/ROOT/RDF/RDefine.hxx index e63f179e5511b..3fc950cefdf6a 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDefine.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RDefine.hxx @@ -144,6 +144,8 @@ public: } } + void Update(unsigned int /*slot*/, const ROOT::RDF::RSampleInfo &/*id*/) final {} + const std::type_info &GetTypeId() const { return typeid(ret_type); } /// Clean-up operations to be performed at the end of a task. diff --git a/tree/dataframe/inc/ROOT/RDF/RDefineBase.hxx b/tree/dataframe/inc/ROOT/RDF/RDefineBase.hxx index 9e52d80d272a3..74f1cfcf2ce31 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDefineBase.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RDefineBase.hxx @@ -13,6 +13,7 @@ #include "ROOT/RDF/GraphNode.hxx" #include "ROOT/RDF/RBookedDefines.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include #include @@ -65,6 +66,8 @@ public: std::string GetTypeName() const; /// Update the value at the address returned by GetValuePtr with the content corresponding to the given entry virtual void Update(unsigned int slot, Long64_t entry) = 0; + /// Update function to be called once per sample, used if the derived type is a RDefinePerSample + virtual void Update(unsigned int /*slot*/, const ROOT::RDF::RSampleInfo &/*id*/) {} /// Clean-up operations to be performed at the end of a task. virtual void FinaliseSlot(unsigned int slot) = 0; /// Return the unique identifier of this RDefineBase. diff --git a/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx index 1a4f4905633b2..8ba58c261d5be 100644 --- a/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RDefinePerSample.hxx @@ -58,7 +58,7 @@ public: } /// Update the value at the address returned by GetValuePtr with the content corresponding to the given entry - void Update(unsigned int slot, const ROOT::RDF::RSampleInfo &id) + void Update(unsigned int slot, const ROOT::RDF::RSampleInfo &id) final { fLastResults[slot * RDFInternal::CacheLineStep()] = fExpression(slot, id); } diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index c8ca28e2c2153..85ae9411bb416 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -480,7 +480,8 @@ public: } // TODO we could SFINAE on F's signature to provide friendlier compilation errors in case of signature mismatch - template + // FIXME add docs + template ::ret_type> RInterface DefinePerSample(std::string_view name, F expression) { RDFInternal::CheckValidCppVarName(name, "DefinePerSample"); @@ -488,7 +489,6 @@ public: fLoopManager->GetBranchNames(), fDataSource ? fDataSource->GetColumnNames() : ColumnNames_t{}); - using RetType_t = typename TTraits::CallableTraits::ret_type; auto retTypeName = RDFInternal::TypeID2TypeName(typeid(RetType_t)); if (retTypeName.empty()) { // The type is not known to the interpreter. @@ -511,6 +511,31 @@ public: return newInterface; } + // FIXME add docs + RInterface DefinePerSample(std::string_view name, std::string_view expression) + { + RDFInternal::CheckValidCppVarName(name, "DefinePerSample"); + // these checks must be done before jitting lest we throw exceptions in jitted code + RDFInternal::CheckForRedefinition("DefinePerSample", name, fDefines.GetNames(), fLoopManager->GetAliasMap(), + fLoopManager->GetBranchNames(), + fDataSource ? fDataSource->GetColumnNames() : ColumnNames_t{}); + + auto upcastNodeOnHeap = RDFInternal::MakeSharedOnHeap(RDFInternal::UpcastNode(fProxiedPtr)); + auto jittedDefine = + RDFInternal::BookDefinePerSampleJit(name, expression, *fLoopManager, fDefines, upcastNodeOnHeap); + auto updateDefinePerSample = [jittedDefine](unsigned int slot, const ROOT::RDF::RSampleInfo &id) { + jittedDefine->Update(slot, id); + }; + fLoopManager->AddSampleCallback(std::move(updateDefinePerSample)); + + RDFInternal::RBookedDefines newCols(fDefines); + newCols.AddColumn(jittedDefine, name); + + RInterface newInterface(fProxiedPtr, *fLoopManager, std::move(newCols), fDataSource); + + return newInterface; + } + //////////////////////////////////////////////////////////////////////////// /// \brief Allow to refer to a column with a different name. /// \param[in] alias name of the column alias diff --git a/tree/dataframe/inc/ROOT/RDF/RJittedDefine.hxx b/tree/dataframe/inc/ROOT/RDF/RJittedDefine.hxx index 9b7261c6e8a20..190355ba19869 100644 --- a/tree/dataframe/inc/ROOT/RDF/RJittedDefine.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RJittedDefine.hxx @@ -12,6 +12,7 @@ #define ROOT_RJITTEDCUSTOMCOLUMN #include "ROOT/RDF/RDefineBase.hxx" +#include "ROOT/RDF/RSampleInfo.hxx" #include "ROOT/RStringView.hxx" #include "RtypesCore.h" @@ -44,6 +45,7 @@ public: void *GetValuePtr(unsigned int slot) final; const std::type_info &GetTypeId() const final; void Update(unsigned int slot, Long64_t entry) final; + void Update(unsigned int slot, const ROOT::RDF::RSampleInfo &id) final; void FinaliseSlot(unsigned int slot) final; }; diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index d57407a47f5d1..58c3303489a2d 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -688,8 +688,8 @@ std::shared_ptr BookDefineJit(std::string_view name, std::string_ auto jittedDefine = std::make_shared(name, type, lm.GetNSlots(), lm.GetDSValuePtrs()); std::stringstream defineInvocation; - defineInvocation << "ROOT::Internal::RDF::JitDefineHelper(" << lambdaName << ", new const char*[" - << parsedExpr.fUsedCols.size() << "]{"; + defineInvocation << "ROOT::Internal::RDF::JitDefineHelper(" + << lambdaName << ", new const char*[" << parsedExpr.fUsedCols.size() << "]{"; for (const auto &col : parsedExpr.fUsedCols) { defineInvocation << "\"" << col << "\", "; } @@ -711,6 +711,38 @@ std::shared_ptr BookDefineJit(std::string_view name, std::string_ return jittedDefine; } +// Book the jitting of a DefinePerSample call +std::shared_ptr BookDefinePerSampleJit(std::string_view name, std::string_view expression, + RLoopManager &lm, const RBookedDefines &customCols, + std::shared_ptr *upcastNodeOnHeap) +{ + const auto lambdaName = DeclareLambda(std::string(expression), {"rdfslot_", "rdfsampleinfo_"}, + {"unsigned int", "const ROOT::RDF::RSampleInfo"}); + const auto retType = RetTypeOfLambda(lambdaName); + + auto definesCopy = new RBookedDefines(customCols); + auto definesAddr = PrettyPrintAddr(definesCopy); + auto jittedDefine = std::make_shared(name, retType, lm.GetNSlots(), lm.GetDSValuePtrs()); + + std::stringstream defineInvocation; + defineInvocation << "ROOT::Internal::RDF::JitDefineHelper(" + << lambdaName << ", nullptr, 0, "; + // lifetime of pointees: + // - lm is the loop manager, and if that goes out of scope jitting does not happen at all (i.e. will always be valid) + // - jittedDefine: heap-allocated weak_ptr that will be deleted by JitDefineHelper after usage + // - definesAddr: heap-allocated, will be deleted by JitDefineHelper after usage + defineInvocation << "\"" << name + << "\", reinterpret_cast(" << PrettyPrintAddr(&lm) + << "), reinterpret_cast*>(" + << PrettyPrintAddr(MakeWeakOnHeap(jittedDefine)) + << "), reinterpret_cast(" << definesAddr + << "), reinterpret_cast*>(" + << PrettyPrintAddr(upcastNodeOnHeap) << "));\n"; + + lm.ToJitExec(defineInvocation.str()); + return jittedDefine; +} + // Jit and call something equivalent to "this->BuildAndBook(params...)" // (see comments in the body for actual jitted code) std::string JitBuildAction(const ColumnNames_t &cols, std::shared_ptr *prevNode, diff --git a/tree/dataframe/src/RJittedDefine.cxx b/tree/dataframe/src/RJittedDefine.cxx index d97c082cf66bc..7d4884246a06a 100644 --- a/tree/dataframe/src/RJittedDefine.cxx +++ b/tree/dataframe/src/RJittedDefine.cxx @@ -37,6 +37,12 @@ void RJittedDefine::Update(unsigned int slot, Long64_t entry) fConcreteDefine->Update(slot, entry); } +void RJittedDefine::Update(unsigned int slot, const ROOT::RDF::RSampleInfo &id) +{ + R__ASSERT(fConcreteDefine != nullptr); + fConcreteDefine->Update(slot, id); +} + void RJittedDefine::FinaliseSlot(unsigned int slot) { R__ASSERT(fConcreteDefine != nullptr); diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx index af1bfff37614c..79322917a8695 100644 --- a/tree/dataframe/test/dataframe_definepersample.cxx +++ b/tree/dataframe/test/dataframe_definepersample.cxx @@ -68,6 +68,24 @@ TEST_P(DefinePerSample, NoJitting) EXPECT_EQ(counter, expected); } +int AtomicIntValueFromInterpreter(std::string_view varName) +{ + return int(*reinterpret_cast(gInterpreter->Calc(varName.data()))); +} + +TEST(DefinePerSample, Jitted) +{ + gInterpreter->Declare("std::atomic_int rdftestcounter1{0};"); + auto df = ROOT::RDataFrame(3).DefinePerSample("x", "rdftestcounter1++; return 42;"); + auto xmin = df.Min("x"); + auto xmax = df.Max("x"); + EXPECT_EQ(*xmin, 42); + EXPECT_EQ(*xmax, 42); + // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled + const auto expected = ROOT::IsImplicitMTEnabled() ? std::min(3u, df.GetNSlots() * 2u) : 1u; + EXPECT_EQ(AtomicIntValueFromInterpreter("rdftestcounter1"), expected); +} + TEST_P(DefinePerSample, Tree) { const std::string prefix = "rdfdatablockcallback_ttree"; @@ -134,22 +152,7 @@ TEST(DefinePerSampleMore, GetDefinedColumnNames) EXPECT_EQ(df.GetDefinedColumnNames(), std::vector{"x"}); } -// TODO -/* - -// Not supported yet -TEST(DefinePerSample, Jitting) -{ - auto df = ROOT::RDataFrame(1).Define("x", [] { return 1; }).Define("y", "1"); - // Jitted redefine for a non-jitted Define - auto rx = df.DefinePerSample("x", "42").Max("x"); - // Jitted redefine for a jitted Define - auto ry = df.DefinePerSample("y", "42").Max("y"); - - EXPECT_EQ(*rx, 42); - EXPECT_EQ(*ry, 42); -} - +/* TODO // Not supported yet TEST(DefinePerSample, DataSource) { @@ -157,7 +160,6 @@ TEST(DefinePerSample, DataSource) auto r = df.DefinePerSample("col0", [] { return 42; }).Max("col0"); EXPECT_EQ(*r, 42); } - */ // instantiate single-thread tests From 77735a28c31f859063e20e7bd7dd68c52cd5e8ae Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 28 Sep 2021 10:37:20 +0200 Subject: [PATCH 196/577] [DF][NFC] Add docs for DefinePerSample, RSampleInfo --- tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 29 +++++++++++++++++++-- tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx | 21 +++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index 85ae9411bb416..60e37989ae476 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -479,8 +479,23 @@ public: return newInterface; } + //////////////////////////////////////////////////////////////////////////// + /// \brief Creates a custom column that is updated when the input sample changes. + /// \param[in] name The name of the defined column. + /// \param[in] expression A C++ callable that computes the new value of the defined column. + /// \return the first node of the computation graph for which the new quantity is defined. + /// + /// The signature of the callable passed as second argument should be `T(unsigned int slot, ROOT::RDF::RSampleInfo &id)` + /// where `T` is the type of the defined column, `slot` is a number in the range [0, nThreads) that is different + /// for each processing thread that can simplify the definition of thread-safe callables, and `id` is an instance + /// of a ROOT::RDF::RSampleInfo object which contains information about the sample which is being processed (see the + /// relevant docs for more information). + /// + /// DefinePerSample() is useful to e.g. define a quantity that depends on which TTree in which TFile is being + /// processed or to inject a callback into the event loop that is only called when the processing of a new sample + /// starts rather than at every entry. + /// // TODO we could SFINAE on F's signature to provide friendlier compilation errors in case of signature mismatch - // FIXME add docs template ::ret_type> RInterface DefinePerSample(std::string_view name, F expression) { @@ -511,7 +526,17 @@ public: return newInterface; } - // FIXME add docs + //////////////////////////////////////////////////////////////////////////// + /// \brief Creates a custom column that is updated when the input sample changes. + /// \param[in] name The name of the defined column. + /// \param[in] expression A valid C++ expression as a string, which will be used to compute the defined value. + /// \return the first node of the computation graph for which the new quantity is defined. + /// + /// The expression is just-in-time compiled and used to produce the column entries. + /// It must be valid C++ syntax and the usage of the special variable names `rdfslot_` and `rdfsampleinfo_` is + /// permitted, where these variables will take the same values as the `slot` and `id` parameters described at the + /// other DefinePerSample overload. See the documentation of that overload for more information. + /// RInterface DefinePerSample(std::string_view name, std::string_view expression) { RDFInternal::CheckValidCppVarName(name, "DefinePerSample"); diff --git a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx index f18e927b8a16d..2e6e5c715d8d3 100644 --- a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx @@ -21,8 +21,14 @@ namespace ROOT { namespace RDF { -/// This type represents a data-block identifier, to be used in conjunction with RDataFrame features such as -/// DefinePerSample() and data-block callbacks. +/// This type represents a sample identifier, to be used in conjunction with RDataFrame features such as +/// DefinePerSample() and per-sample callbacks. +/// +/// When the input data comes from a TTree, the string representation of RSampleInfo (which is returned by AsString() +/// and that can be queried e.g. with Contains()) is of the form "/". +/// +/// In multi-thread runs different tasks might process different entry ranges of the same sample, +/// so RSampleInfo also provides methods to inspect which part of a sample is being taken into consideration. class RSampleInfo { // Currently backed by a simple string, might change in the future as we get usage experience. std::string fID; @@ -40,23 +46,34 @@ public: RSampleInfo &operator=(RSampleInfo &&) = default; ~RSampleInfo() = default; + /// Check whether the sample name contains the given substring. bool Contains(std::string_view substr) const { // C++14 needs the conversion from std::string_view to std::string return fID.find(std::string(substr)) != std::string::npos; } + /// Check whether the sample name is empty. + /// + /// This is the case e.g. when using a RDataFrame with no input data, constructed as `RDataFrame(nEntries)`. bool Empty() const { return fID.empty(); } + /// Return a string representation of the sample name. + /// + /// The representation is of the form "/" if the input data comes from a TTree or a TChain. const std::string &AsString() const { return fID; } + /// Return the entry range in this sample that is being taken into consideration. + /// + /// Multiple multi-threading tasks might process different entry ranges of the same sample. std::pair EntryRange() const { return fEntryRange; } + /// Return the number of entries of this sample that is being taken into consideration. ULong64_t NEntries() const { return fEntryRange.second - fEntryRange.first; } bool operator==(const RSampleInfo &other) const { return fID == other.fID; } From f145169ceabf8d853a116b9c6c76383698d7f238 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 28 Sep 2021 14:47:37 +0200 Subject: [PATCH 197/577] [DF][NFC] Add a comma Co-authored-by: Stephan Hageboeck --- tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx index 2e6e5c715d8d3..bb4721c8a1805 100644 --- a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx @@ -27,7 +27,7 @@ namespace RDF { /// When the input data comes from a TTree, the string representation of RSampleInfo (which is returned by AsString() /// and that can be queried e.g. with Contains()) is of the form "/". /// -/// In multi-thread runs different tasks might process different entry ranges of the same sample, +/// In multi-thread runs, different tasks might process different entry ranges of the same sample, /// so RSampleInfo also provides methods to inspect which part of a sample is being taken into consideration. class RSampleInfo { // Currently backed by a simple string, might change in the future as we get usage experience. From 27520cd06f26ae2da7eaffb958de58f0a67ef9d8 Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Tue, 28 Sep 2021 09:36:03 +0200 Subject: [PATCH 198/577] Fix compilation errors on windows --- graf3d/eve7/inc/ROOT/REveSystem.hxx | 6 +++++- graf3d/eve7/src/REveManager.cxx | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/graf3d/eve7/inc/ROOT/REveSystem.hxx b/graf3d/eve7/inc/ROOT/REveSystem.hxx index 71bda146ecd7a..ad85756411a5c 100644 --- a/graf3d/eve7/inc/ROOT/REveSystem.hxx +++ b/graf3d/eve7/inc/ROOT/REveSystem.hxx @@ -15,6 +15,10 @@ #include "TSystem.h" #include +#ifdef _MSC_VER + typedef int pid_t; +#endif + namespace ROOT { namespace Experimental { @@ -30,7 +34,7 @@ struct REveServerStatus std::time_t fTLastConnect = 0; std::time_t fTLastDisconnect = 0; ProcInfo_t fProcInfo; // To be complemented with cpu1/5/15 and memgrowth1/5/15 on the collector side. -#ifdef R__LINUX +#if defined(R__LINUX) || defined(_MSC_VER) std::timespec fTReport = {0, 0}; #else std::time_t fTReport = 0; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 855ffb1741ed4..9ea3a009f623e 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -1109,7 +1109,7 @@ void REveManager::GetServerStatus(REveServerStatus& st) { std::unique_lock lock(fServerState.fMutex); gSystem->GetProcInfo(&fServerStatus.fProcInfo); -#ifdef R__LINUX +#if defined(R__LINUX) || defined(_MSC_VER) std::timespec_get(&fServerStatus.fTReport, TIME_UTC); #else fServerStatus.fTReport = std::time_t(nullptr); From 1873835e354ac3e16b0900856497226b7c6b6daf Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 28 Jun 2021 13:32:29 +0200 Subject: [PATCH 199/577] [ntuple] Support load/store of class hierarchies via TClass Improve support of storage of arbitrary types via TClass by handling also members inherited from base classes. A subfield named `:XXX` is created for each inherited XXX class. As per a discussion in a previous I/O meeting, always use `CaptureValue()` in `ReadGlobalImpl()` (so that reading a new entry is roughly equal to copy assignment). --- tree/ntuple/v7/inc/ROOT/RField.hxx | 17 ++++++++ tree/ntuple/v7/src/RField.cxx | 63 +++++++++++++++++------------- 2 files changed, 53 insertions(+), 27 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx index 4413c474a920e..ef3d66fe3a68a 100644 --- a/tree/ntuple/v7/inc/ROOT/RField.hxx +++ b/tree/ntuple/v7/inc/ROOT/RField.hxx @@ -290,9 +290,26 @@ public: /// The field for a class with dictionary class RClassField : public Detail::RFieldBase { private: + enum ESubFieldRole { + kBaseClass, + kDataMember, + }; + struct RSubFieldInfo { + ESubFieldRole fRole; + std::size_t fOffset; + }; + /// Prefix used in the subfield names generated for base classes + static constexpr const char *kPrefixInherited{":"}; + TClass* fClass; + /// Additional information kept for each entry in `fSubFields` + std::vector fSubFieldsInfo; std::size_t fMaxAlignment = 1; +private: + RClassField(std::string_view fieldName, std::string_view className, TClass *classp); + void Attach(std::unique_ptr child, RSubFieldInfo info); + protected: std::unique_ptr CloneImpl(std::string_view newName) const final; std::size_t AppendImpl(const Detail::RFieldValue& value) final; diff --git a/tree/ntuple/v7/src/RField.cxx b/tree/ntuple/v7/src/RField.cxx index 4547a57b0c279..16e2b1e7c8b36 100644 --- a/tree/ntuple/v7/src/RField.cxx +++ b/tree/ntuple/v7/src/RField.cxx @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -759,8 +760,13 @@ void ROOT::Experimental::RField::AcceptVisitor(Detail::RFieldVisito ROOT::Experimental::RClassField::RClassField(std::string_view fieldName, std::string_view className) + : RClassField(fieldName, className, TClass::GetClass(std::string(className).c_str())) +{ +} + +ROOT::Experimental::RClassField::RClassField(std::string_view fieldName, std::string_view className, TClass *classp) : ROOT::Experimental::Detail::RFieldBase(fieldName, className, ENTupleStructure::kRecord, false /* isSimple */) - , fClass(TClass::GetClass(std::string(className).c_str())) + , fClass(classp) { if (fClass == nullptr) { throw std::runtime_error("RField: no I/O support for type " + std::string(className)); @@ -769,52 +775,58 @@ ROOT::Experimental::RClassField::RClassField(std::string_view fieldName, std::st if (fClass->Property() & kIsDefinedInStd) { throw RException(R__FAIL(std::string(className) + " is not supported")); } - TIter next(fClass->GetListOfDataMembers()); - while (auto dataMember = static_cast(next())) { - //printf("Now looking at %s %s\n", dataMember->GetName(), dataMember->GetFullTypeName()); + + for (auto baseClass : ROOT::Detail::TRangeStaticCast(*fClass->GetListOfBases())) { + TClass *c = baseClass->GetClassPointer(); + auto subField = std::unique_ptr(new RClassField(std::string(kPrefixInherited) + c->GetName(), + c->GetName(), c)); + Attach(std::move(subField), + RSubFieldInfo{kBaseClass, static_cast(baseClass->GetDelta())}); + } + for (auto dataMember : ROOT::Detail::TRangeStaticCast(*fClass->GetListOfDataMembers())) { + if (!dataMember->IsPersistent()) + continue; auto subField = Detail::RFieldBase::Create(dataMember->GetName(), dataMember->GetFullTypeName()).Unwrap(); - fMaxAlignment = std::max(fMaxAlignment, subField->GetAlignment()); - Attach(std::move(subField)); + Attach(std::move(subField), + RSubFieldInfo{kDataMember, static_cast(dataMember->GetOffset())}); } } +void ROOT::Experimental::RClassField::Attach(std::unique_ptr child, RSubFieldInfo info) +{ + fMaxAlignment = std::max(fMaxAlignment, child->GetAlignment()); + fSubFieldsInfo.push_back(info); + RFieldBase::Attach(std::move(child)); +} + std::unique_ptr ROOT::Experimental::RClassField::CloneImpl(std::string_view newName) const { - return std::make_unique(newName, GetType()); + return std::unique_ptr(new RClassField(newName, GetType(), fClass)); } std::size_t ROOT::Experimental::RClassField::AppendImpl(const Detail::RFieldValue& value) { - TIter next(fClass->GetListOfDataMembers()); std::size_t nbytes = 0; - unsigned i = 0; - while (auto dataMember = static_cast(next())) { - auto memberValue = fSubFields[i]->CaptureValue(value.Get() + dataMember->GetOffset()); + for (unsigned i = 0; i < fSubFields.size(); i++) { + auto memberValue = fSubFields[i]->CaptureValue(value.Get() + fSubFieldsInfo[i].fOffset); nbytes += fSubFields[i]->Append(memberValue); - i++; } return nbytes; } void ROOT::Experimental::RClassField::ReadGlobalImpl(NTupleSize_t globalIndex, Detail::RFieldValue *value) { - TIter next(fClass->GetListOfDataMembers()); - unsigned i = 0; - while (auto dataMember = static_cast(next())) { - auto memberValue = fSubFields[i]->GenerateValue(value->Get() + dataMember->GetOffset()); + for (unsigned i = 0; i < fSubFields.size(); i++) { + auto memberValue = fSubFields[i]->CaptureValue(value->Get() + fSubFieldsInfo[i].fOffset); fSubFields[i]->Read(globalIndex, &memberValue); - i++; } } void ROOT::Experimental::RClassField::ReadInClusterImpl(const RClusterIndex &clusterIndex, Detail::RFieldValue *value) { - TIter next(fClass->GetListOfDataMembers()); - unsigned i = 0; - while (auto dataMember = static_cast(next())) { - auto memberValue = fSubFields[i]->GenerateValue(value->Get() + dataMember->GetOffset()); + for (unsigned i = 0; i < fSubFields.size(); i++) { + auto memberValue = fSubFields[i]->CaptureValue(value->Get() + fSubFieldsInfo[i].fOffset); fSubFields[i]->Read(clusterIndex, &memberValue); - i++; } } @@ -847,13 +859,10 @@ ROOT::Experimental::Detail::RFieldValue ROOT::Experimental::RClassField::Capture std::vector ROOT::Experimental::RClassField::SplitValue(const Detail::RFieldValue &value) const { - TIter next(fClass->GetListOfDataMembers()); - unsigned i = 0; std::vector result; - while (auto dataMember = static_cast(next())) { - auto memberValue = fSubFields[i]->CaptureValue(value.Get() + dataMember->GetOffset()); + for (unsigned i = 0; i < fSubFields.size(); i++) { + auto memberValue = fSubFields[i]->CaptureValue(value.Get() + fSubFieldsInfo[i].fOffset); result.emplace_back(memberValue); - i++; } return result; } From 599fa12e58858e7e3fa2ee64be2dde427db48e98 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 03:23:29 +0200 Subject: [PATCH 200/577] [ntuple] Use `Detail::RFieldBase::Create()` to create RField for base classes Use `Detail::RFieldBase::Create()` instead, as base classes might not be handled by `RClassField`, e.g. we might have `std::vector` as a base class. --- tree/ntuple/v7/src/RField.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/ntuple/v7/src/RField.cxx b/tree/ntuple/v7/src/RField.cxx index 16e2b1e7c8b36..4ab5473671971 100644 --- a/tree/ntuple/v7/src/RField.cxx +++ b/tree/ntuple/v7/src/RField.cxx @@ -778,8 +778,8 @@ ROOT::Experimental::RClassField::RClassField(std::string_view fieldName, std::st for (auto baseClass : ROOT::Detail::TRangeStaticCast(*fClass->GetListOfBases())) { TClass *c = baseClass->GetClassPointer(); - auto subField = std::unique_ptr(new RClassField(std::string(kPrefixInherited) + c->GetName(), - c->GetName(), c)); + auto subField = Detail::RFieldBase::Create(std::string(kPrefixInherited) + c->GetName(), + c->GetName()).Unwrap(); Attach(std::move(subField), RSubFieldInfo{kBaseClass, static_cast(baseClass->GetDelta())}); } From 2fc6bc958652f9c79a4035ceed754d940c86c893 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 28 Jun 2021 14:10:28 +0200 Subject: [PATCH 201/577] [ntuple] Add new tests for RClassField; validate load/store of class hierarchies via TClass. --- tree/ntuple/v7/test/CustomStruct.hxx | 11 +++++ tree/ntuple/v7/test/CustomStructLinkDef.h | 2 + tree/ntuple/v7/test/ntuple_show.cxx | 15 +++++- tree/ntuple/v7/test/ntuple_types.cxx | 57 +++++++++++++++++++++++ 4 files changed, 84 insertions(+), 1 deletion(-) diff --git a/tree/ntuple/v7/test/CustomStruct.hxx b/tree/ntuple/v7/test/CustomStruct.hxx index 43b16d6fad5ae..3262749b1f7f9 100644 --- a/tree/ntuple/v7/test/CustomStruct.hxx +++ b/tree/ntuple/v7/test/CustomStruct.hxx @@ -10,3 +10,14 @@ struct CustomStruct { std::vector> v2; std::string s; }; + +struct DerivedA : public CustomStruct { + std::vector a_v; + std::string a_s; +}; + +struct DerivedB : public DerivedA { + float b_f1 = 0.0; + float b_f2 = 0.0; //! + std::string b_s; +}; diff --git a/tree/ntuple/v7/test/CustomStructLinkDef.h b/tree/ntuple/v7/test/CustomStructLinkDef.h index 17e0528129ad9..cf27bce8e1fca 100644 --- a/tree/ntuple/v7/test/CustomStructLinkDef.h +++ b/tree/ntuple/v7/test/CustomStructLinkDef.h @@ -5,5 +5,7 @@ #pragma link off all functions; #pragma link C++ class CustomStruct+; +#pragma link C++ class DerivedA+; +#pragma link C++ class DerivedB+; #endif diff --git a/tree/ntuple/v7/test/ntuple_show.cxx b/tree/ntuple/v7/test/ntuple_show.cxx index e3d386c76cf9f..9a12b9856c112 100644 --- a/tree/ntuple/v7/test/ntuple_show.cxx +++ b/tree/ntuple/v7/test/ntuple_show.cxx @@ -226,6 +226,7 @@ TEST(RNTupleShow, Objects) auto customStructfield = model->MakeField("CustomStruct"); auto customStructVec = model->MakeField>("CustomStructVec"); auto customStructArray = model->MakeField>("CustomStructArray"); + auto derivedAfield = model->MakeField("DerivedA"); auto ntuple = RNTupleWriter::Recreate(std::move(model), ntupleName, rootFileName); *customStructfield = CustomStruct{4.1f, std::vector{0.1f, 0.2f, 0.3f}, std::vector>{{1.1f, 1.2f, 1.3f}, {2.1f, 2.2f, 2.3f}}, "Example1String"}; @@ -238,12 +239,14 @@ TEST(RNTupleShow, Objects) CustomStruct{4.5f, std::vector{0.1f, 0.2f, 0.3f}, std::vector>{{1.1f, 1.3f}, {2.1f, 2.2f, 2.3f}}, "AnotherString1"}, CustomStruct{4.6f, std::vector{0.1f, 0.2f, 0.3f}, std::vector>{{1.1f, 1.2f, 1.3f}, {2.1f, 2.3f}}, "AnotherString2"} }; + *derivedAfield = {}; ntuple->Fill(); } auto model2 = RNTupleModel::Create(); auto customStructfield = model2->MakeField("CustomStruct"); auto customStructVec = model2->MakeField>("CustomStructVec"); auto customStructArray = model2->MakeField>("CustomStructArray"); + auto derivedAfield = model2->MakeField("DerivedA"); auto ntuple2 = RNTupleReader::Open(std::move(model2), ntupleName, rootFileName); std::ostringstream os; @@ -263,7 +266,17 @@ TEST(RNTupleShow, Objects) + "\"s\": \"Example4String\"}],\n" + " \"CustomStructArray\": [{\"a\": 4.5, \"v1\": [0.1, 0.2, 0.3], \"v2\": [[1.1, 1.3], [2.1, 2.2, 2.3]], " + "\"s\": \"AnotherString1\"}, {\"a\": 4.6, \"v1\": [0.1, 0.2, 0.3], " - + "\"v2\": [[1.1, 1.2, 1.3], [2.1, 2.3]], \"s\": \"AnotherString2\"}]\n" + + "\"v2\": [[1.1, 1.2, 1.3], [2.1, 2.3]], \"s\": \"AnotherString2\"}],\n" + + " \"DerivedA\": {\n" + + " \":CustomStruct\": {\n" + + " \"a\": 0,\n" + + " \"v1\": [],\n" + + " \"v2\": [],\n" + + " \"s\": \"\"\n" + + " },\n" + + " \"a_v\": [],\n" + + " \"a_s\": \"\"\n" + + " }\n" + "}\n" }; EXPECT_EQ(fString, os.str()); } diff --git a/tree/ntuple/v7/test/ntuple_types.cxx b/tree/ntuple/v7/test/ntuple_types.cxx index 3f9c6c0a55cda..d0d6baef300dd 100644 --- a/tree/ntuple/v7/test/ntuple_types.cxx +++ b/tree/ntuple/v7/test/ntuple_types.cxx @@ -6,6 +6,8 @@ TEST(RNTuple, TypeName) { ROOT::Experimental::RField>::TypeName().c_str()); EXPECT_STREQ("CustomStruct", ROOT::Experimental::RField::TypeName().c_str()); + EXPECT_STREQ("DerivedB", + ROOT::Experimental::RField::TypeName().c_str()); } @@ -106,3 +108,58 @@ TEST(RNTuple, Casting) reader->LoadEntry(0); EXPECT_EQ(42, *fieldCast); } + +TEST(RNTuple, TClass) +{ + FileRaii fileGuard("test_ntuple_tclass.ntuple"); + { + auto model = RNTupleModel::Create(); + auto fieldKlass = model->MakeField("klass"); + RNTupleWriteOptions options; + auto ntuple = RNTupleWriter::Recreate(std::move(model), "f", fileGuard.GetPath(), options); + for (int i = 0; i < 20000; i++) { + DerivedB klass; + klass.a = static_cast(i); + klass.v1.emplace_back(static_cast(i)); + klass.v2.emplace_back(std::vector(3, static_cast(i))); + klass.s = "hi" + std::to_string(i); + + klass.a_v.emplace_back(static_cast(i + 1)); + klass.a_s = "bye" + std::to_string(i); + + klass.b_f1 = static_cast(i + 2); + klass.b_f2 = static_cast(i + 3); + *fieldKlass = klass; + ntuple->Fill(); + } + } + + { + auto ntuple = RNTupleReader::Open("f", fileGuard.GetPath()); + EXPECT_EQ(20000U, ntuple->GetNEntries()); + auto viewKlass = ntuple->GetView("klass"); + for (auto i : ntuple->GetEntryRange()) { + float fi = static_cast(i); + EXPECT_EQ(fi, viewKlass(i).a); + EXPECT_EQ(std::vector{fi}, viewKlass(i).v1); + EXPECT_EQ((std::vector(3, fi)), viewKlass(i).v2.at(0)); + EXPECT_EQ("hi" + std::to_string(i), viewKlass(i).s); + + EXPECT_EQ(std::vector{fi + 1}, viewKlass(i).a_v); + EXPECT_EQ("bye" + std::to_string(i), viewKlass(i).a_s); + + EXPECT_EQ((fi + 2), viewKlass(i).b_f1); + EXPECT_EQ(0.0, viewKlass(i).b_f2); + } + } + + { + auto ntuple = RNTupleReader::Open("f", fileGuard.GetPath()); + try { + auto viewKlass = ntuple->GetView("klass"); + FAIL() << "GetView should throw"; + } catch (const RException& err) { + EXPECT_THAT(err.what(), testing::HasSubstr("Column missing: column #0 for field a")); + } + } +} From 1c7f7791dbc95008906213c86e5e90c069cdbb03 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 19:59:57 +0200 Subject: [PATCH 202/577] [ntuple] RClassField: add test for sizeof() type --- tree/ntuple/v7/test/ntuple_types.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tree/ntuple/v7/test/ntuple_types.cxx b/tree/ntuple/v7/test/ntuple_types.cxx index d0d6baef300dd..7699ae806f23c 100644 --- a/tree/ntuple/v7/test/ntuple_types.cxx +++ b/tree/ntuple/v7/test/ntuple_types.cxx @@ -8,6 +8,9 @@ TEST(RNTuple, TypeName) { ROOT::Experimental::RField::TypeName().c_str()); EXPECT_STREQ("DerivedB", ROOT::Experimental::RField::TypeName().c_str()); + + auto field = RField("derived"); + EXPECT_EQ(sizeof(DerivedB), field.GetValueSize()); } From 3990a2b39687e72cf356f0231f8bf04a7730c67f Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 19:18:25 +0200 Subject: [PATCH 203/577] [ntuple] RClassField: add test for types that inherit from multiple classes --- tree/ntuple/v7/test/CustomStruct.hxx | 9 +++++ tree/ntuple/v7/test/CustomStructLinkDef.h | 2 + tree/ntuple/v7/test/ntuple_types.cxx | 45 +++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/tree/ntuple/v7/test/CustomStruct.hxx b/tree/ntuple/v7/test/CustomStruct.hxx index 3262749b1f7f9..572493bca93c6 100644 --- a/tree/ntuple/v7/test/CustomStruct.hxx +++ b/tree/ntuple/v7/test/CustomStruct.hxx @@ -16,8 +16,17 @@ struct DerivedA : public CustomStruct { std::string a_s; }; +struct DerivedA2 : public CustomStruct { + float a2_f{}; +}; + struct DerivedB : public DerivedA { float b_f1 = 0.0; float b_f2 = 0.0; //! std::string b_s; }; + +struct DerivedC : public DerivedA, public DerivedA2 { + int c_i{}; + DerivedA2 c_a2; +}; diff --git a/tree/ntuple/v7/test/CustomStructLinkDef.h b/tree/ntuple/v7/test/CustomStructLinkDef.h index cf27bce8e1fca..68733e992b74e 100644 --- a/tree/ntuple/v7/test/CustomStructLinkDef.h +++ b/tree/ntuple/v7/test/CustomStructLinkDef.h @@ -6,6 +6,8 @@ #pragma link C++ class CustomStruct+; #pragma link C++ class DerivedA+; +#pragma link C++ class DerivedA2+; #pragma link C++ class DerivedB+; +#pragma link C++ class DerivedC+; #endif diff --git a/tree/ntuple/v7/test/ntuple_types.cxx b/tree/ntuple/v7/test/ntuple_types.cxx index 7699ae806f23c..7b17ebe37e7ef 100644 --- a/tree/ntuple/v7/test/ntuple_types.cxx +++ b/tree/ntuple/v7/test/ntuple_types.cxx @@ -166,3 +166,48 @@ TEST(RNTuple, TClass) } } } + +TEST(RNTuple, TClassMultipleInheritance) +{ + FileRaii fileGuard("test_ntuple_tclass.ntuple"); + { + auto model = RNTupleModel::Create(); + auto fieldKlass = model->MakeField("klass"); + RNTupleWriteOptions options; + auto ntuple = RNTupleWriter::Recreate(std::move(model), "f", fileGuard.GetPath(), options); + for (int i = 0; i < 10000; i++) { + DerivedC klass; + klass.DerivedA::a = static_cast(i); + klass.DerivedA::v1.emplace_back(static_cast(i)); + klass.DerivedA::v2.emplace_back(std::vector(3, static_cast(i))); + klass.DerivedA::s = "hi" + std::to_string(i); + + klass.a_v.emplace_back(static_cast(i + 1)); + klass.a_s = "bye" + std::to_string(i); + klass.a2_f = static_cast(i + 2); + + klass.c_i = i; + klass.c_a2.a2_f = static_cast(i + 3); + *fieldKlass = klass; + ntuple->Fill(); + } + } + + auto ntuple = RNTupleReader::Open("f", fileGuard.GetPath()); + EXPECT_EQ(10000U, ntuple->GetNEntries()); + auto viewKlass = ntuple->GetView("klass"); + for (auto i : ntuple->GetEntryRange()) { + float fi = static_cast(i); + EXPECT_EQ(fi, viewKlass(i).DerivedA::a); + EXPECT_EQ(std::vector{fi}, viewKlass(i).DerivedA::v1); + EXPECT_EQ((std::vector(3, fi)), viewKlass(i).DerivedA::v2.at(0)); + EXPECT_EQ("hi" + std::to_string(i), viewKlass(i).DerivedA::s); + + EXPECT_EQ(std::vector{fi + 1}, viewKlass(i).a_v); + EXPECT_EQ("bye" + std::to_string(i), viewKlass(i).a_s); + EXPECT_EQ((fi + 2), viewKlass(i).a2_f); + + EXPECT_EQ(i, viewKlass(i).c_i); + EXPECT_EQ((fi + 3), viewKlass(i).c_a2.a2_f); + } +} From c502d3a42e5b2e449a214a0c089fc4b975df4789 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Sun, 26 Sep 2021 19:49:42 +0200 Subject: [PATCH 204/577] [ntuple] RClassField: add test for templated base classes Test storage of types that inherit from a templated base class, e.g. ``` template struct Foobar : public std::vector { // ... }; ``` --- tree/ntuple/v7/test/CustomStruct.hxx | 15 +++++++++ tree/ntuple/v7/test/CustomStructLinkDef.h | 4 +++ tree/ntuple/v7/test/ntuple_types.cxx | 37 +++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/tree/ntuple/v7/test/CustomStruct.hxx b/tree/ntuple/v7/test/CustomStruct.hxx index 572493bca93c6..0969dd15f4b08 100644 --- a/tree/ntuple/v7/test/CustomStruct.hxx +++ b/tree/ntuple/v7/test/CustomStruct.hxx @@ -30,3 +30,18 @@ struct DerivedC : public DerivedA, public DerivedA2 { int c_i{}; DerivedA2 c_a2; }; + +/// The classes below are based on an excerpt provided by Marcin Nowak (EP-UAT) +/// +struct IAuxSetOption {}; + +struct PackedParameters { + uint8_t m_nbits, m_nmantissa; + float m_scale; + uint8_t m_flags; +}; + +template +struct PackedContainer : public std::vector, public IAuxSetOption { + PackedParameters m_params; +}; diff --git a/tree/ntuple/v7/test/CustomStructLinkDef.h b/tree/ntuple/v7/test/CustomStructLinkDef.h index 68733e992b74e..e021d2dcc333f 100644 --- a/tree/ntuple/v7/test/CustomStructLinkDef.h +++ b/tree/ntuple/v7/test/CustomStructLinkDef.h @@ -10,4 +10,8 @@ #pragma link C++ class DerivedB+; #pragma link C++ class DerivedC+; +#pragma link C++ class IAuxSetOption+; +#pragma link C++ class PackedParameters+; +#pragma link C++ class PackedContainer+; + #endif diff --git a/tree/ntuple/v7/test/ntuple_types.cxx b/tree/ntuple/v7/test/ntuple_types.cxx index 7b17ebe37e7ef..0069c2092b7dd 100644 --- a/tree/ntuple/v7/test/ntuple_types.cxx +++ b/tree/ntuple/v7/test/ntuple_types.cxx @@ -211,3 +211,40 @@ TEST(RNTuple, TClassMultipleInheritance) EXPECT_EQ((fi + 3), viewKlass(i).c_a2.a2_f); } } + +TEST(RNTuple, TClassTemplatedBase) +{ + FileRaii fileGuard("test_ntuple_tclass.ntuple"); + { + auto model = RNTupleModel::Create(); + auto fieldKlass = model->MakeField>("klass"); + RNTupleWriteOptions options; + auto ntuple = RNTupleWriter::Recreate(std::move(model), "f", fileGuard.GetPath(), options); + for (int i = 0; i < 10000; i++) { + PackedContainer klass; + klass.m_params.m_nbits = (uint8_t)i; + klass.m_params.m_nmantissa = (uint8_t)i; + klass.m_params.m_scale = static_cast(i + 1); + klass.m_params.m_flags = 0; + + klass.push_back(i + 2); + klass.push_back(i + 3); + *fieldKlass = klass; + ntuple->Fill(); + } + } + + auto ntuple = RNTupleReader::Open("f", fileGuard.GetPath()); + EXPECT_EQ(10000U, ntuple->GetNEntries()); + auto viewKlass = ntuple->GetView>("klass"); + for (auto i : ntuple->GetEntryRange()) { + float fi = static_cast(i); + EXPECT_EQ(((uint8_t)i), viewKlass(i).m_params.m_nbits); + EXPECT_EQ(((uint8_t)i), viewKlass(i).m_params.m_nmantissa); + EXPECT_EQ((fi + 1), viewKlass(i).m_params.m_scale); + EXPECT_EQ(0, viewKlass(i).m_params.m_flags); + + EXPECT_EQ((std::vector{static_cast(i + 2), + static_cast(i + 3)}), viewKlass(i)); + } +} From 11eb51840e58dd20e9a359e62ab450a572d1b611 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Nov 2020 00:11:45 +0100 Subject: [PATCH 205/577] [VecOps] Remove testing of std::vector> RVec 2.0 will not be based on RAdoptAllocator anymore. --- math/vecops/test/vecops_rvec.cxx | 103 ------------------------------- 1 file changed, 103 deletions(-) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 8f23ac9f4f787..76caee7cfd9d4 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -496,109 +496,6 @@ void CheckEq(const T0 &v, const T0 &ref) } } -TEST(VecOps, InputOutputImpl) -{ - auto filename = "vecops_inputoutput_impl.root"; - auto treename = "t"; - - const ROOT::VecOps::RVec::Impl_t dref {1., 2., 3.}; - const ROOT::VecOps::RVec::Impl_t fref {1.f, 2.f, 3.f}; - const ROOT::VecOps::RVec::Impl_t uiref {1, 2, 3}; - const ROOT::VecOps::RVec::Impl_t ulref {1UL, 2UL, 3UL}; - const ROOT::VecOps::RVec::Impl_t ullref {1ULL, 2ULL, 3ULL}; - const ROOT::VecOps::RVec::Impl_t usref {1, 2, 3}; - const ROOT::VecOps::RVec::Impl_t ucref {1, 2, 3}; - const ROOT::VecOps::RVec::Impl_t iref {1, 2, 3};; - const ROOT::VecOps::RVec::Impl_t lref {1UL, 2UL, 3UL};; - const ROOT::VecOps::RVec::Impl_t llref {1ULL, 2ULL, 3ULL}; - const ROOT::VecOps::RVec::Impl_t sref {1, 2, 3}; - const ROOT::VecOps::RVec::Impl_t cref {1, 2, 3}; - const ROOT::VecOps::RVec::Impl_t bref {true, false, true}; - - { - auto d = dref; - auto f = fref; - auto ui = uiref; - auto ul = ulref; - auto ull = ullref; - auto us = usref; - auto uc = ucref; - auto i = iref; - auto l = lref; - auto ll = llref; - auto s = sref; - auto c = cref; - auto b = bref; - TFile file(filename, "RECREATE"); - TTree t(treename, treename); - t.Branch("d", &d); - t.Branch("f", &f); - t.Branch("ui", &ui); - t.Branch("ul", &ul); - t.Branch("ull", &ull); - t.Branch("us", &us); - t.Branch("uc", &uc); - t.Branch("i", &i); - t.Branch("l", &l); - t.Branch("ll", &ll); - t.Branch("s", &s); - t.Branch("c", &c); - t.Branch("b", &b); - t.Fill(); - t.Write(); - } - - auto d = new ROOT::VecOps::RVec::Impl_t(); - auto f = new ROOT::VecOps::RVec::Impl_t; - auto ui = new ROOT::VecOps::RVec::Impl_t(); - auto ul = new ROOT::VecOps::RVec::Impl_t(); - auto ull = new ROOT::VecOps::RVec::Impl_t(); - auto us = new ROOT::VecOps::RVec::Impl_t(); - auto uc = new ROOT::VecOps::RVec::Impl_t(); - auto i = new ROOT::VecOps::RVec::Impl_t(); - auto l = new ROOT::VecOps::RVec::Impl_t(); - auto ll = new ROOT::VecOps::RVec::Impl_t(); - auto s = new ROOT::VecOps::RVec::Impl_t(); - auto c = new ROOT::VecOps::RVec::Impl_t(); - auto b = new ROOT::VecOps::RVec::Impl_t(); - - TFile file(filename); - TTree *tp; - file.GetObject(treename, tp); - auto &t = *tp; - - t.SetBranchAddress("d", &d); - t.SetBranchAddress("f", &f); - t.SetBranchAddress("ui", &ui); - t.SetBranchAddress("ul", &ul); - t.SetBranchAddress("ull", &ull); - t.SetBranchAddress("us", &us); - t.SetBranchAddress("uc", &uc); - t.SetBranchAddress("i", &i); - t.SetBranchAddress("l", &l); - t.SetBranchAddress("ll", &ll); - t.SetBranchAddress("s", &s); - t.SetBranchAddress("c", &c); - t.SetBranchAddress("b", &b); - - t.GetEntry(0); - CheckEq(*d, dref); - CheckEq(*f, fref); - CheckEq(*d, dref); - CheckEq(*f, fref); - CheckEq(*d, dref); - CheckEq(*f, fref); - CheckEq(*d, dref); - CheckEq(*f, fref); - CheckEq(*d, dref); - CheckEq(*f, fref); - CheckEq(*b, bref); - - gSystem->Unlink(filename); - -} - - TEST(VecOps, InputOutput) { auto filename = "vecops_inputoutput.root"; From 33b79030f3b08e49419719d61341b51dc1a91c05 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Nov 2020 00:55:54 +0100 Subject: [PATCH 206/577] [VecOps] Do not build dicts for vector> RVec 2.0 will not be implemented in terms of RAdoptAllocator. --- math/vecops/inc/LinkDef.h | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/math/vecops/inc/LinkDef.h b/math/vecops/inc/LinkDef.h index 2f1d652e29a13..5a03297c31c9c 100644 --- a/math/vecops/inc/LinkDef.h +++ b/math/vecops/inc/LinkDef.h @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. * + * Copyright (C) 1995-2020, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * Author: Danilo Piparo - CERN * @@ -28,21 +28,4 @@ #pragma link C++ class ROOT::VecOps::RVec-; #pragma link C++ class ROOT::VecOps::RVec-; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; - -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; - -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; - -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; -#pragma link C++ class ROOT::VecOps::RVec::Impl_t+; - #endif From 2127d1027e18e6c456a600faa3458e513531d5c6 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 12 Nov 2020 00:11:08 +0100 Subject: [PATCH 207/577] [VecOps] Base RVec implementation on LLVM's SmallVector The new implementation introduces a small buffer optimization and is not based on RAdoptAllocator anymore, but rather on LLVM's SmallVector. On top of SmallVector, RVec adds (or better keeps) the option to adopt an existing memory buffer. Some std::vector methods are also added to SmallVector for backwards compatibility of RVec. This commit also removes the deprecated `RVec::AsVector`, which we cannot implement with the same zero-copy semantics now that RVec is not implemented in terms of a std::vector. --- math/vecops/inc/ROOT/RVec.hxx | 1181 +++++++++++++++++++++++++++++---- math/vecops/src/RVec.cxx | 92 +++ 2 files changed, 1143 insertions(+), 130 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index cf91e525d1112..5ecfc3db9dd0d 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1,16 +1,33 @@ -// Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 01/2018 +// Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 04/2021 /************************************************************************* - * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. * + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ +/* + * The implementation of RVec is based in LLVM's SmallVector. + * + * The ability to adopt an existing memory buffer has been added, + * as well as other minor patches for backward compatibility with + * the previous implementation of RVec (which did not have a small buffer + * optimization and was based on std::vector with a custom allocator) and + * for compatibility with cppyy. + * RVec also adds a vectorized operator[] and many "numpy-like" helper functions. + */ + #ifndef ROOT_RVEC #define ROOT_RVEC +#if __cplusplus > 201402L +#define RVEC_NODISCARD [[nodiscard]] +#else +#define RVEC_NODISCARD +#endif + #ifdef _WIN32 #ifndef M_PI #ifndef _USE_MATH_DEFINES @@ -31,7 +48,10 @@ #include #include +#include +#include #include // for inner_product +#include #include #include #include @@ -97,27 +117,6 @@ auto MapFromTuple(Tuple_t &&t, std::index_sequence) } } -namespace Internal { -namespace VecOps { - -// We use this helper to workaround a limitation of compilers such as -// gcc 4.8 amd clang on osx 10.14 for which std::vector::emplace_back -// is not defined. -template -void EmplaceBack(T &v, Args &&... args) -{ - v.emplace_back(std::forward(args)...); -} - -template -void EmplaceBack(std::vector &v, Args &&... args) -{ - v.push_back(std::forward(args)...); -} - -} // End of VecOps NS -} // End of Internal NS - namespace VecOps { // Note that we open here with @{ the Doxygen group vecops and it is @@ -280,160 +279,1082 @@ hpt->Draw(); **/ // clang-format on + +//FIXME put things in the namespace they belong to + +/// Returns the next power of two (in 64-bits) that is strictly greater than A. +/// Returns zero on overflow. +inline uint64_t NextPowerOf2(uint64_t A) +{ + A |= (A >> 1); + A |= (A >> 2); + A |= (A >> 4); + A |= (A >> 8); + A |= (A >> 16); + A |= (A >> 32); + return A + 1; +} + +/// This is all the stuff common to all SmallVectors. +/// +/// The template parameter specifies the type which should be used to hold the +/// Size and Capacity of the SmallVector, so it can be adjusted. +/// Using 32 bit size is desirable to shrink the size of the SmallVector. +/// Using 64 bit size is desirable for cases like SmallVector, where a +/// 32 bit size would limit the vector to ~4GB. SmallVectors are used for +/// buffering bitcode output - which can exceed 4GB. +template +class SmallVectorBase { +protected: + void *BeginX; + Size_T fSize = 0, Capacity; + bool Owns = true; + + /// The maximum value of the Size_T used. + static constexpr size_t SizeTypeMax() { return std::numeric_limits::max(); } + + SmallVectorBase() = delete; + SmallVectorBase(void *FirstEl, size_t TotalCapacity) : BeginX(FirstEl), Capacity(TotalCapacity) {} + + /// This is an implementation of the grow() method which only works + /// on POD-like data types and is out of line to reduce code duplication. + /// This function will report a fatal error if it cannot increase capacity. + void grow_pod(void *FirstEl, size_t MinSize, size_t TSize); + + /// Report that MinSize doesn't fit into this vector's size type. Throws + /// std::length_error or calls report_fatal_error. + static void report_size_overflow(size_t MinSize); + /// Report that this vector is already at maximum capacity. Throws + /// std::length_error or calls report_fatal_error. + static void report_at_maximum_capacity(); + +public: + size_t size() const { return fSize; } + size_t capacity() const { return Capacity; } + + RVEC_NODISCARD bool empty() const { return !fSize; } + + /// Set the array size to \p N, which the current array must have enough + /// capacity for. + /// + /// This does not construct or destroy any elements in the vector. + /// + /// Clients can use this in conjunction with capacity() to write past the end + /// of the buffer when they know that more elements are available, and only + /// update the size later. This avoids the cost of value initializing elements + /// which will only be overwritten. + void set_size(size_t N) + { + assert(N <= capacity()); + fSize = N; + } +}; + +template +using SmallVectorSizeType = typename std::conditional= 8, uint64_t, uint32_t>::type; + +/// Figure out the offset of the first element. +template +struct SmallVectorAlignmentAndSize { + alignas(SmallVectorBase>) char Base[sizeof(SmallVectorBase>)]; + alignas(T) char FirstEl[sizeof(T)]; +}; + +/// This is the part of SmallVectorTemplateBase which does not depend on whether +/// the type T is a POD. The extra dummy template argument is used by ArrayRef +/// to avoid unnecessarily requiring T to be complete. +template +class SmallVectorTemplateCommon : public SmallVectorBase> { + using Base = SmallVectorBase>; + + /// Find the address of the first element. For this pointer math to be valid + /// with small-size of 0 for T with lots of alignment, it's important that + /// SmallVectorStorage is properly-aligned even for small-size of 0. + void *getFirstEl() const + { + return const_cast(reinterpret_cast(reinterpret_cast(this) + + offsetof(SmallVectorAlignmentAndSize, FirstEl))); + } + // Space after 'FirstEl' is clobbered, do not add any instance vars after it. + +protected: + SmallVectorTemplateCommon(size_t Size) : Base(getFirstEl(), Size) {} + + void grow_pod(size_t MinSize, size_t TSize) { Base::grow_pod(getFirstEl(), MinSize, TSize); } + + /// Return true if this is a smallvector which has not had dynamic + /// memory allocated for it. + bool isSmall() const { return this->BeginX == getFirstEl(); } + + /// Put this vector in a state of being small. + void resetToSmall() + { + this->BeginX = getFirstEl(); + // from the original LLVM implementation: + // FIXME: Setting Capacity to 0 is suspect. + this->fSize = this->Capacity = 0; + } + +public: + using size_type = size_t; + using difference_type = ptrdiff_t; + using value_type = T; + using iterator = T *; + using const_iterator = const T *; + + using const_reverse_iterator = std::reverse_iterator; + using reverse_iterator = std::reverse_iterator; + + using reference = T &; + using const_reference = const T &; + using pointer = T *; + using const_pointer = const T *; + + using Base::capacity; + using Base::empty; + using Base::size; + + // forward iterator creation methods. + iterator begin() { return (iterator)this->BeginX; } + const_iterator begin() const { return (const_iterator)this->BeginX; } + iterator end() { return begin() + size(); } + const_iterator end() const { return begin() + size(); } + + // reverse iterator creation methods. + reverse_iterator rbegin() { return reverse_iterator(end()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + + size_type size_in_bytes() const { return size() * sizeof(T); } + size_type max_size() const { return std::min(this->SizeTypeMax(), size_type(-1) / sizeof(T)); } + + size_t capacity_in_bytes() const { return capacity() * sizeof(T); } + + /// Return a pointer to the vector's buffer, even if empty(). + pointer data() { return pointer(begin()); } + /// Return a pointer to the vector's buffer, even if empty(). + const_pointer data() const { return const_pointer(begin()); } + + reference operator[](size_type idx) + { + assert(idx < size()); + return begin()[idx]; + } + const_reference operator[](size_type idx) const + { + assert(idx < size()); + return begin()[idx]; + } + + reference front() + { + assert(!empty()); + return begin()[0]; + } + const_reference front() const + { + assert(!empty()); + return begin()[0]; + } + + reference back() + { + assert(!empty()); + return end()[-1]; + } + const_reference back() const + { + assert(!empty()); + return end()[-1]; + } +}; + +/// SmallVectorTemplateBase - This is where we put +/// method implementations that are designed to work with non-trivial T's. +/// +/// We approximate is_trivially_copyable with trivial move/copy construction and +/// trivial destruction. While the standard doesn't specify that you're allowed +/// copy these types with memcpy, there is no way for the type to observe this. +/// This catches the important case of std::pair, which is not +/// trivially assignable. +template ::value) && + (std::is_trivially_move_constructible::value) && + std::is_trivially_destructible::value> +class SmallVectorTemplateBase : public SmallVectorTemplateCommon { +protected: + SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon(Size) {} + + static void destroy_range(T *S, T *E) + { + while (S != E) { + --E; + E->~T(); + } + } + + /// Move the range [I, E) into the uninitialized memory starting with "Dest", + /// constructing elements as needed. + template + static void uninitialized_move(It1 I, It1 E, It2 Dest) + { + std::uninitialized_copy(std::make_move_iterator(I), std::make_move_iterator(E), Dest); + } + + /// Copy the range [I, E) onto the uninitialized memory starting with "Dest", + /// constructing elements as needed. + template + static void uninitialized_copy(It1 I, It1 E, It2 Dest) + { + std::uninitialized_copy(I, E, Dest); + } + + /// Grow the allocated memory (without initializing new elements), doubling + /// the size of the allocated memory. Guarantees space for at least one more + /// element, or MinSize more elements if specified. + void grow(size_t MinSize = 0); + +public: + void push_back(const T &Elt) + { + if (R__unlikely(this->size() >= this->capacity())) + this->grow(); + ::new ((void *)this->end()) T(Elt); + this->set_size(this->size() + 1); + } + + void push_back(T &&Elt) + { + if (R__unlikely(this->size() >= this->capacity())) + this->grow(); + ::new ((void *)this->end()) T(::std::move(Elt)); + this->set_size(this->size() + 1); + } + + void pop_back() + { + this->set_size(this->size() - 1); + this->end()->~T(); + } +}; + +// Define this out-of-line to dissuade the C++ compiler from inlining it. +template +void SmallVectorTemplateBase::grow(size_t MinSize) +{ + // Ensure we can fit the new capacity. + // This is only going to be applicable when the capacity is 32 bit. + if (MinSize > this->SizeTypeMax()) + this->report_size_overflow(MinSize); + + // Ensure we can meet the guarantee of space for at least one more element. + // The above check alone will not catch the case where grow is called with a + // default MinSize of 0, but the current capacity cannot be increased. + // This is only going to be applicable when the capacity is 32 bit. + if (this->capacity() == this->SizeTypeMax()) + this->report_at_maximum_capacity(); + + // Always grow, even from zero. + size_t NewCapacity = size_t(NextPowerOf2(this->capacity() + 2)); + NewCapacity = std::min(std::max(NewCapacity, MinSize), this->SizeTypeMax()); + T *NewElts = static_cast(malloc(NewCapacity * sizeof(T))); + + // Move the elements over. + this->uninitialized_move(this->begin(), this->end(), NewElts); + + if (this->Owns) { + // Destroy the original elements. + destroy_range(this->begin(), this->end()); + + // If this wasn't grown from the inline copy, deallocate the old space. + if (!this->isSmall()) + free(this->begin()); + } + + this->BeginX = NewElts; + this->Capacity = NewCapacity; + this->Owns = true; +} + +/// SmallVectorTemplateBase - This is where we put +/// method implementations that are designed to work with trivially copyable +/// T's. This allows using memcpy in place of copy/move construction and +/// skipping destruction. template -class RVec { - // Here we check if T is a bool. This is done in order to decide what type - // to use as a storage. If T is anything but bool, we use a vector>. - // If T is a bool, we opt for a plain vector otherwise we'll not be able - // to write the data type given the shortcomings of TCollectionProxy design. - static constexpr const auto IsVecBool = std::is_same::value; +class SmallVectorTemplateBase : public SmallVectorTemplateCommon { +protected: + SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon(Size) {} + + // No need to do a destroy loop for POD's. + static void destroy_range(T *, T *) {} + + /// Move the range [I, E) onto the uninitialized memory + /// starting with "Dest", constructing elements into it as needed. + template + static void uninitialized_move(It1 I, It1 E, It2 Dest) + { + // Just do a copy. + uninitialized_copy(I, E, Dest); + } + + /// Copy the range [I, E) onto the uninitialized memory + /// starting with "Dest", constructing elements into it as needed. + template + static void uninitialized_copy(It1 I, It1 E, It2 Dest) + { + // Arbitrary iterator types; just use the basic implementation. + std::uninitialized_copy(I, E, Dest); + } + + /// Copy the range [I, E) onto the uninitialized memory + /// starting with "Dest", constructing elements into it as needed. + template + static void uninitialized_copy( + T1 *I, T1 *E, T2 *Dest, + typename std::enable_if::type, T2>::value>::type * = nullptr) + { + // Use memcpy for PODs iterated by pointers (which includes SmallVector + // iterators): std::uninitialized_copy optimizes to memmove, but we can + // use memcpy here. Note that I and E are iterators and thus might be + // invalid for memcpy if they are equal. + if (I != E) + memcpy(reinterpret_cast(Dest), I, (E - I) * sizeof(T)); + } + + /// Double the size of the allocated memory, guaranteeing space for at + /// least one more element or MinSize if specified. + void grow(size_t MinSize = 0) + { + this->grow_pod(MinSize, sizeof(T)); + this->Owns = true; + } + +public: + void push_back(const T &Elt) + { + if (R__unlikely(this->size() >= this->capacity())) + this->grow(); + memcpy(reinterpret_cast(this->end()), &Elt, sizeof(T)); + this->set_size(this->size() + 1); + } + + void pop_back() { this->set_size(this->size() - 1); } +}; + +/// This class consists of common code factored out of the SmallVector class to +/// reduce code duplication based on the SmallVector 'N' template parameter. +template +class SmallVectorImpl : public SmallVectorTemplateBase { + using SuperClass = SmallVectorTemplateBase; + public: - using Impl_t = typename std::conditional, std::vector>>::type; - using value_type = typename Impl_t::value_type; - using size_type = typename Impl_t::size_type; - using difference_type = typename Impl_t::difference_type; - using reference = typename Impl_t::reference; - using const_reference = typename Impl_t::const_reference; - using pointer = typename Impl_t::pointer; - using const_pointer = typename Impl_t::const_pointer; - // The data_t and const_data_t types are chosen to be void in case T is a bool. - // This way we can as elegantly as in the STL return void upon calling the data() method. - using data_t = typename std::conditional::type; - using const_data_t = typename std::conditional::type; - using iterator = typename Impl_t::iterator; - using const_iterator = typename Impl_t::const_iterator; - using reverse_iterator = typename Impl_t::reverse_iterator; - using const_reverse_iterator = typename Impl_t::const_reverse_iterator; - -private: - Impl_t fData; + using iterator = typename SuperClass::iterator; + using const_iterator = typename SuperClass::const_iterator; + using reference = typename SuperClass::reference; + using size_type = typename SuperClass::size_type; + +protected: + // Default ctor - Initialize to empty. + explicit SmallVectorImpl(unsigned N) : SmallVectorTemplateBase(N) {} public: - // constructors - RVec() {} + SmallVectorImpl(const SmallVectorImpl &) = delete; + + ~SmallVectorImpl() + { + // Subclass has already destructed this vector's elements. + // If this wasn't grown from the inline copy, deallocate the old space. + if (!this->isSmall() && this->Owns) + free(this->begin()); + } + + // also give up adopted memory if applicable + void clear() + { + if (this->Owns) { + this->destroy_range(this->begin(), this->end()); + this->fSize = 0; + } else { + this->resetToSmall(); + } + } + + void resize(size_type N) + { + if (N < this->size()) { + if (this->Owns) + this->destroy_range(this->begin() + N, this->end()); + this->set_size(N); + } else if (N > this->size()) { + if (this->capacity() < N) + this->grow(N); + for (auto I = this->end(), E = this->begin() + N; I != E; ++I) + new (&*I) T(); + this->set_size(N); + } + } + + void resize(size_type N, const T &NV) + { + if (N < this->size()) { + if (this->Owns) + this->destroy_range(this->begin() + N, this->end()); + this->set_size(N); + } else if (N > this->size()) { + if (this->capacity() < N) + this->grow(N); + std::uninitialized_fill(this->end(), this->begin() + N, NV); + this->set_size(N); + } + } + + void reserve(size_type N) + { + if (this->capacity() < N) + this->grow(N); + } + + void pop_back_n(size_type NumItems) + { + assert(this->size() >= NumItems); + if (this->Owns) + this->destroy_range(this->end() - NumItems, this->end()); + this->set_size(this->size() - NumItems); + } - explicit RVec(size_type count) : fData(count) {} + RVEC_NODISCARD T pop_back_val() + { + T Result = ::std::move(this->back()); + this->pop_back(); + return Result; + } - RVec(size_type count, const T &value) : fData(count, value) {} + void swap(SmallVectorImpl &RHS); - RVec(const RVec &v) : fData(v.fData) {} + /// Add the specified range to the end of the SmallVector. + template ::iterator_category, std::input_iterator_tag>::value>::type> + void append(in_iter in_start, in_iter in_end) + { + size_type NumInputs = std::distance(in_start, in_end); + if (NumInputs > this->capacity() - this->size()) + this->grow(this->size() + NumInputs); - RVec(RVec &&v) : fData(std::move(v.fData)) {} + this->uninitialized_copy(in_start, in_end, this->end()); + this->set_size(this->size() + NumInputs); + } - RVec(const std::vector &v) : fData(v.cbegin(), v.cend()) {} + /// Append \p NumInputs copies of \p Elt to the end. + void append(size_type NumInputs, const T &Elt) + { + if (NumInputs > this->capacity() - this->size()) + this->grow(this->size() + NumInputs); - RVec(pointer p, size_type n) : fData(n, T(), ROOT::Detail::VecOps::RAdoptAllocator(p)) {} + std::uninitialized_fill_n(this->end(), NumInputs, Elt); + this->set_size(this->size() + NumInputs); + } - template - RVec(InputIt first, InputIt last) : fData(first, last) {} + void append(std::initializer_list IL) { append(IL.begin(), IL.end()); } - RVec(std::initializer_list init) : fData(init) {} + // from the original LLVM implementation: + // FIXME: Consider assigning over existing elements, rather than clearing & + // re-initializing them - for all assign(...) variants. - // assignment - RVec &operator=(const RVec &v) + void assign(size_type NumElts, const T &Elt) { - fData = v.fData; + clear(); + if (this->capacity() < NumElts) + this->grow(NumElts); + this->set_size(NumElts); + std::uninitialized_fill(this->begin(), this->end(), Elt); + } + + template ::iterator_category, std::input_iterator_tag>::value>::type> + void assign(in_iter in_start, in_iter in_end) + { + clear(); + append(in_start, in_end); + } + + void assign(std::initializer_list IL) + { + clear(); + append(IL); + } + + iterator erase(const_iterator CI) + { + // Just cast away constness because this is a non-const member function. + iterator I = const_cast(CI); + + assert(I >= this->begin() && "Iterator to erase is out of bounds."); + assert(I < this->end() && "Erasing at past-the-end iterator."); + + iterator N = I; + // Shift all elts down one. + std::move(I + 1, this->end(), I); + // Drop the last elt. + this->pop_back(); + return (N); + } + + iterator erase(const_iterator CS, const_iterator CE) + { + // Just cast away constness because this is a non-const member function. + iterator S = const_cast(CS); + iterator E = const_cast(CE); + + assert(S >= this->begin() && "Range to erase is out of bounds."); + assert(S <= E && "Trying to erase invalid range."); + assert(E <= this->end() && "Trying to erase past the end."); + + iterator N = S; + // Shift all elts down. + iterator I = std::move(E, this->end(), S); + // Drop the last elts. + if (this->Owns) + this->destroy_range(I, this->end()); + this->set_size(I - this->begin()); + return (N); + } + + iterator insert(iterator I, T &&Elt) + { + if (I == this->end()) { // Important special case for empty vector. + this->push_back(::std::move(Elt)); + return this->end() - 1; + } + + assert(I >= this->begin() && "Insertion iterator is out of bounds."); + assert(I <= this->end() && "Inserting past the end of the vector."); + + if (this->size() >= this->capacity()) { + size_t EltNo = I - this->begin(); + this->grow(); + I = this->begin() + EltNo; + } + + ::new ((void *)this->end()) T(::std::move(this->back())); + // Push everything else over. + std::move_backward(I, this->end() - 1, this->end()); + this->set_size(this->size() + 1); + + // If we just moved the element we're inserting, be sure to update + // the reference. + T *EltPtr = &Elt; + if (I <= EltPtr && EltPtr < this->end()) + ++EltPtr; + + *I = ::std::move(*EltPtr); + return I; + } + + iterator insert(iterator I, const T &Elt) + { + if (I == this->end()) { // Important special case for empty vector. + this->push_back(Elt); + return this->end() - 1; + } + + assert(I >= this->begin() && "Insertion iterator is out of bounds."); + assert(I <= this->end() && "Inserting past the end of the vector."); + + if (this->size() >= this->capacity()) { + size_t EltNo = I - this->begin(); + this->grow(); + I = this->begin() + EltNo; + } + ::new ((void *)this->end()) T(std::move(this->back())); + // Push everything else over. + std::move_backward(I, this->end() - 1, this->end()); + this->set_size(this->size() + 1); + + // If we just moved the element we're inserting, be sure to update + // the reference. + const T *EltPtr = &Elt; + if (I <= EltPtr && EltPtr < this->end()) + ++EltPtr; + + *I = *EltPtr; + return I; + } + + iterator insert(iterator I, size_type NumToInsert, const T &Elt) + { + // Convert iterator to elt# to avoid invalidating iterator when we reserve() + size_t InsertElt = I - this->begin(); + + if (I == this->end()) { // Important special case for empty vector. + append(NumToInsert, Elt); + return this->begin() + InsertElt; + } + + assert(I >= this->begin() && "Insertion iterator is out of bounds."); + assert(I <= this->end() && "Inserting past the end of the vector."); + + // Ensure there is enough space. + reserve(this->size() + NumToInsert); + + // Uninvalidate the iterator. + I = this->begin() + InsertElt; + + // If there are more elements between the insertion point and the end of the + // range than there are being inserted, we can use a simple approach to + // insertion. Since we already reserved space, we know that this won't + // reallocate the vector. + if (size_t(this->end() - I) >= NumToInsert) { + T *OldEnd = this->end(); + append(std::move_iterator(this->end() - NumToInsert), std::move_iterator(this->end())); + + // Copy the existing elements that get replaced. + std::move_backward(I, OldEnd - NumToInsert, OldEnd); + + std::fill_n(I, NumToInsert, Elt); + return I; + } + + // Otherwise, we're inserting more elements than exist already, and we're + // not inserting at the end. + + // Move over the elements that we're about to overwrite. + T *OldEnd = this->end(); + this->set_size(this->size() + NumToInsert); + size_t NumOverwritten = OldEnd - I; + this->uninitialized_move(I, OldEnd, this->end() - NumOverwritten); + + // Replace the overwritten part. + std::fill_n(I, NumOverwritten, Elt); + + // Insert the non-overwritten middle part. + std::uninitialized_fill_n(OldEnd, NumToInsert - NumOverwritten, Elt); + return I; + } + + template ::iterator_category, std::input_iterator_tag>::value>::type> + iterator insert(iterator I, ItTy From, ItTy To) + { + // Convert iterator to elt# to avoid invalidating iterator when we reserve() + size_t InsertElt = I - this->begin(); + + if (I == this->end()) { // Important special case for empty vector. + append(From, To); + return this->begin() + InsertElt; + } + + assert(I >= this->begin() && "Insertion iterator is out of bounds."); + assert(I <= this->end() && "Inserting past the end of the vector."); + + size_t NumToInsert = std::distance(From, To); + + // Ensure there is enough space. + reserve(this->size() + NumToInsert); + + // Uninvalidate the iterator. + I = this->begin() + InsertElt; + + // If there are more elements between the insertion point and the end of the + // range than there are being inserted, we can use a simple approach to + // insertion. Since we already reserved space, we know that this won't + // reallocate the vector. + if (size_t(this->end() - I) >= NumToInsert) { + T *OldEnd = this->end(); + append(std::move_iterator(this->end() - NumToInsert), std::move_iterator(this->end())); + + // Copy the existing elements that get replaced. + std::move_backward(I, OldEnd - NumToInsert, OldEnd); + + std::copy(From, To, I); + return I; + } + + // Otherwise, we're inserting more elements than exist already, and we're + // not inserting at the end. + + // Move over the elements that we're about to overwrite. + T *OldEnd = this->end(); + this->set_size(this->size() + NumToInsert); + size_t NumOverwritten = OldEnd - I; + this->uninitialized_move(I, OldEnd, this->end() - NumOverwritten); + + // Replace the overwritten part. + for (T *J = I; NumOverwritten > 0; --NumOverwritten) { + *J = *From; + ++J; + ++From; + } + + // Insert the non-overwritten middle part. + this->uninitialized_copy(From, To, OldEnd); + return I; + } + + void insert(iterator I, std::initializer_list IL) { insert(I, IL.begin(), IL.end()); } + + template + reference emplace_back(ArgTypes &&... Args) + { + if (R__unlikely(this->size() >= this->capacity())) + this->grow(); + ::new ((void *)this->end()) T(std::forward(Args)...); + this->set_size(this->size() + 1); + return this->back(); + } + + SmallVectorImpl &operator=(const SmallVectorImpl &RHS); + + SmallVectorImpl &operator=(SmallVectorImpl &&RHS); + + bool operator==(const SmallVectorImpl &RHS) const + { + if (this->size() != RHS.size()) + return false; + return std::equal(this->begin(), this->end(), RHS.begin()); + } + bool operator!=(const SmallVectorImpl &RHS) const { return !(*this == RHS); } + + bool operator<(const SmallVectorImpl &RHS) const + { + return std::lexicographical_compare(this->begin(), this->end(), RHS.begin(), RHS.end()); + } +}; + +template +void SmallVectorImpl::swap(SmallVectorImpl &RHS) +{ + if (this == &RHS) + return; + + // We can only avoid copying elements if neither vector is small. + if (!this->isSmall() && !RHS.isSmall()) { + std::swap(this->BeginX, RHS.BeginX); + std::swap(this->fSize, RHS.fSize); + std::swap(this->Capacity, RHS.Capacity); + std::swap(this->Owns, RHS.Owns); + return; + } + if (RHS.size() > this->capacity()) + this->grow(RHS.size()); + if (this->size() > RHS.capacity()) + RHS.grow(this->size()); + + // Swap the shared elements. + size_t NumShared = this->size(); + if (NumShared > RHS.size()) + NumShared = RHS.size(); + for (size_type i = 0; i != NumShared; ++i) + std::swap((*this)[i], RHS[i]); + + // Copy over the extra elts. + if (this->size() > RHS.size()) { + size_t EltDiff = this->size() - RHS.size(); + this->uninitialized_copy(this->begin() + NumShared, this->end(), RHS.end()); + RHS.set_size(RHS.size() + EltDiff); + if (this->Owns) + this->destroy_range(this->begin() + NumShared, this->end()); + this->set_size(NumShared); + } else if (RHS.size() > this->size()) { + size_t EltDiff = RHS.size() - this->size(); + this->uninitialized_copy(RHS.begin() + NumShared, RHS.end(), this->end()); + this->set_size(this->size() + EltDiff); + if (RHS.Owns) + this->destroy_range(RHS.begin() + NumShared, RHS.end()); + RHS.set_size(NumShared); + } +} + +template +SmallVectorImpl &SmallVectorImpl::operator=(const SmallVectorImpl &RHS) +{ + // Avoid self-assignment. + if (this == &RHS) + return *this; + + // If we already have sufficient space, assign the common elements, then + // destroy any excess. + size_t RHSSize = RHS.size(); + size_t CurSize = this->size(); + if (CurSize >= RHSSize) { + // Assign common elements. + iterator NewEnd; + if (RHSSize) + NewEnd = std::copy(RHS.begin(), RHS.begin() + RHSSize, this->begin()); + else + NewEnd = this->begin(); + + // Destroy excess elements. + if (this->Owns) + this->destroy_range(NewEnd, this->end()); + + // Trim. + this->set_size(RHSSize); return *this; } - RVec &operator=(RVec &&v) + // If we have to grow to have enough elements, destroy the current elements. + // This allows us to avoid copying them during the grow. + // From the original LLVM implementation: + // FIXME: don't do this if they're efficiently moveable. + if (this->capacity() < RHSSize) { + if (this->Owns) { + // Destroy current elements. + this->destroy_range(this->begin(), this->end()); + } + this->set_size(0); + CurSize = 0; + this->grow(RHSSize); + } else if (CurSize) { + // Otherwise, use assignment for the already-constructed elements. + std::copy(RHS.begin(), RHS.begin() + CurSize, this->begin()); + } + + // Copy construct the new elements in place. + this->uninitialized_copy(RHS.begin() + CurSize, RHS.end(), this->begin() + CurSize); + + // Set end. + this->set_size(RHSSize); + return *this; +} + +template +SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) +{ + // Avoid self-assignment. + if (this == &RHS) + return *this; + + // If the RHS isn't small, clear this vector and then steal its buffer. + if (!RHS.isSmall()) { + if (this->Owns) { + this->destroy_range(this->begin(), this->end()); + if (!this->isSmall()) + free(this->begin()); + } + this->BeginX = RHS.BeginX; + this->fSize = RHS.fSize; + this->Capacity = RHS.Capacity; + this->Owns = RHS.Owns; + RHS.resetToSmall(); + return *this; + } + + // If we already have sufficient space, assign the common elements, then + // destroy any excess. + size_t RHSSize = RHS.size(); + size_t CurSize = this->size(); + if (CurSize >= RHSSize) { + // Assign common elements. + iterator NewEnd = this->begin(); + if (RHSSize) + NewEnd = std::move(RHS.begin(), RHS.end(), NewEnd); + + // Destroy excess elements and trim the bounds. + if (this->Owns) + this->destroy_range(NewEnd, this->end()); + this->set_size(RHSSize); + + // Clear the RHS. + RHS.clear(); + + return *this; + } + + // If we have to grow to have enough elements, destroy the current elements. + // This allows us to avoid copying them during the grow. + // From the original LLVM implementation: + // FIXME: this may not actually make any sense if we can efficiently move + // elements. + if (this->capacity() < RHSSize) { + if (this->Owns) { + // Destroy current elements. + this->destroy_range(this->begin(), this->end()); + } + this->set_size(0); + CurSize = 0; + this->grow(RHSSize); + } else if (CurSize) { + // Otherwise, use assignment for the already-constructed elements. + std::move(RHS.begin(), RHS.begin() + CurSize, this->begin()); + } + + // Move-construct the new elements in place. + this->uninitialized_move(RHS.begin() + CurSize, RHS.end(), this->begin() + CurSize); + + // Set end. + this->set_size(RHSSize); + + RHS.clear(); + return *this; +} + +/// Storage for the SmallVector elements. This is specialized for the N=0 case +/// to avoid allocating unnecessary storage. +template +struct SmallVectorStorage { + alignas(T) char InlineElts[N * sizeof(T)]; +}; + +/// We need the storage to be properly aligned even for small-size of 0 so that +/// the pointer math in \a SmallVectorTemplateCommon::getFirstEl() is +/// well-defined. +template +struct alignas(T) SmallVectorStorage { +}; + +/// This is a 'vector' (really, a variable-sized array), optimized +/// for the case when the array is small. It contains some number of elements +/// in-place, which allows it to avoid heap allocation when the actual number of +/// elements is below that threshold. This allows normal "small" cases to be +/// fast without losing generality for large inputs. +/// +/// Note that this does not attempt to be exception safe. +/// +template +class RVec : public SmallVectorImpl, SmallVectorStorage { +public: + static constexpr unsigned N = 8; + RVec() : SmallVectorImpl(N) {} + + ~RVec() + { + if (this->Owns) { + // Destroy the constructed elements in the vector. + this->destroy_range(this->begin(), this->end()); + } + } + + explicit RVec(size_t Size, const T &Value = T()) : SmallVectorImpl(N) { this->assign(Size, Value); } + + template ::iterator_category, std::input_iterator_tag>::value>::type> + RVec(ItTy S, ItTy E) : SmallVectorImpl(N) + { + this->append(S, E); + } + + RVec(std::initializer_list IL) : SmallVectorImpl(N) { this->assign(IL); } + + RVec(const RVec &RHS) : SmallVectorImpl(N) + { + if (!RHS.empty()) + SmallVectorImpl::operator=(RHS); + } + + RVec &operator=(const RVec &RHS) { - std::swap(fData, v.fData); + SmallVectorImpl::operator=(RHS); return *this; } - RVec &operator=(std::initializer_list ilist) + RVec(RVec &&RHS) : SmallVectorImpl(N) { - fData = ilist; + if (!RHS.empty()) + SmallVectorImpl::operator=(::std::move(RHS)); + } + + RVec(SmallVectorImpl &&RHS) : SmallVectorImpl(N) + { + if (!RHS.empty()) + SmallVectorImpl::operator=(::std::move(RHS)); + } + + RVec(const std::vector &RHS) : RVec(RHS.begin(), RHS.end()) {} + + RVec &operator=(RVec &&RHS) + { + SmallVectorImpl::operator=(::std::move(RHS)); return *this; } - // conversion - template ::value>> - operator RVec() const + RVec(typename RVec::pointer p, typename RVec::size_type n) : SmallVectorImpl(N) { - RVec ret(size()); - std::copy(begin(), end(), ret.begin()); - return ret; + this->BeginX = p; + this->fSize = n; + this->Capacity = n; + this->Owns = false; } - // accessors - reference at(size_type pos) { return fData.at(pos); } - const_reference at(size_type pos) const { return fData.at(pos); } - /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - value_type at(size_type pos, value_type fallback) { return pos < fData.size() ? fData[pos] : fallback; } - /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - value_type at(size_type pos, value_type fallback) const { return pos < fData.size() ? fData[pos] : fallback; } - reference operator[](size_type pos) { return fData[pos]; } - const_reference operator[](size_type pos) const { return fData[pos]; } + RVec &operator=(SmallVectorImpl &&RHS) + { + SmallVectorImpl::operator=(::std::move(RHS)); + return *this; + } + + RVec &operator=(std::initializer_list IL) + { + this->assign(IL); + return *this; + } + + using SmallVectorTemplateCommon::operator[]; template ::value>> RVec operator[](const RVec &conds) const { - const size_type n = conds.size(); + const auto n = conds.size(); - if (n != size()) + if (n != this->size()) throw std::runtime_error("Cannot index RVec with condition vector of different size"); RVec ret; ret.reserve(n); - for (size_type i = 0; i < n; ++i) + for (auto i = 0u; i < n; ++i) if (conds[i]) - ret.emplace_back(fData[i]); + ret.emplace_back(this->operator[](i)); return ret; } - reference front() { return fData.front(); } - const_reference front() const { return fData.front(); } - reference back() { return fData.back(); } - const_reference back() const { return fData.back(); } - data_t data() noexcept { return fData.data(); } - const_data_t data() const noexcept { return fData.data(); } - // iterators - iterator begin() noexcept { return fData.begin(); } - const_iterator begin() const noexcept { return fData.begin(); } - const_iterator cbegin() const noexcept { return fData.cbegin(); } - iterator end() noexcept { return fData.end(); } - const_iterator end() const noexcept { return fData.end(); } - const_iterator cend() const noexcept { return fData.cend(); } - reverse_iterator rbegin() noexcept { return fData.rbegin(); } - const_reverse_iterator rbegin() const noexcept { return fData.rbegin(); } - const_reverse_iterator crbegin() const noexcept { return fData.crbegin(); } - reverse_iterator rend() noexcept { return fData.rend(); } - const_reverse_iterator rend() const noexcept { return fData.rend(); } - const_reverse_iterator crend() const noexcept { return fData.crend(); } - // capacity - bool empty() const noexcept { return fData.empty(); } - size_type size() const noexcept { return fData.size(); } - size_type max_size() const noexcept { return fData.size(); } - void reserve(size_type new_cap) { fData.reserve(new_cap); } - size_type capacity() const noexcept { return fData.capacity(); } - void shrink_to_fit() { fData.shrink_to_fit(); }; - // modifiers - void clear() noexcept { fData.clear(); } - iterator erase(iterator pos) { return fData.erase(pos); } - iterator erase(iterator first, iterator last) { return fData.erase(first, last); } - void push_back(T &&value) { fData.push_back(std::forward(value)); } - void push_back(const value_type& value) { fData.push_back(value); }; - template - reference emplace_back(Args &&... args) + // conversion + template ::value>> + operator RVec() const + { + return RVec(this->begin(), this->end()); + } + + // from the original LLVM implementation: + // FIXME find a less verbose way + typename SmallVectorTemplateCommon::reference at(typename SmallVectorTemplateCommon::size_type pos) { - ROOT::Internal::VecOps::EmplaceBack(fData, std::forward(args)...); - return fData.back(); + if (pos >= this->fSize) + throw std::out_of_range("RVec"); + return this->operator[](pos); } - /// This method is intended only for arithmetic types unlike the std::vector - /// corresponding one which is generic. - template::value, int>* = nullptr> - iterator emplace(const_iterator pos, U value) + typename SmallVectorTemplateCommon::const_reference at(typename SmallVectorTemplateCommon::size_type pos) const { - return fData.emplace(pos, value); + if (pos >= this->fSize) + throw std::out_of_range("RVec"); + return this->operator[](pos); } - void pop_back() { fData.pop_back(); } - void resize(size_type count) { fData.resize(count); } - void resize(size_type count, const value_type &value) { fData.resize(count, value); } - void swap(RVec &other) { std::swap(fData, other.fData); } + /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. + typename SmallVectorTemplateCommon::value_type + at(typename SmallVectorTemplateCommon::size_type pos, typename SmallVectorTemplateCommon::value_type fallback) + { + if (pos >= this->fSize) + return fallback; + return this->operator[](pos); + } + /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. + typename SmallVectorTemplateCommon::value_type + at(typename SmallVectorTemplateCommon::size_type pos, typename SmallVectorTemplateCommon::value_type fallback) const + { + if (pos >= this->fSize) + return fallback; + return this->operator[](pos); + } + }; +template +inline size_t capacity_in_bytes(const RVec &X) +{ + return X.capacity_in_bytes(); +} + ///@name RVec Unary Arithmetic Operators ///@{ diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index 29e167adb4c9f..d1b73341f3ec7 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -1,4 +1,96 @@ #include "ROOT/RVec.hxx" +using namespace ROOT::VecOps; + +/***** FIXME the extra boolean breaks this assert and the two below -- maybe use unused bits in pointer? +// Check that no bytes are wasted and everything is well-aligned. +namespace { +struct Struct16B { + alignas(16) void *X; +}; +struct Struct32B { + alignas(32) void *X; +}; +} // namespace +static_assert(sizeof(SmallVector) == sizeof(unsigned) * 2 + sizeof(void *), + "wasted space in RVec size 0"); +static_assert(alignof(SmallVector) >= alignof(Struct16B), "wrong alignment for 16-byte aligned T"); +static_assert(alignof(SmallVector) >= alignof(Struct32B), "wrong alignment for 32-byte aligned T"); +static_assert(sizeof(SmallVector) >= alignof(Struct16B), "missing padding for 16-byte aligned T"); +static_assert(sizeof(SmallVector) >= alignof(Struct32B), "missing padding for 32-byte aligned T"); +static_assert(sizeof(SmallVector) == sizeof(unsigned) * 2 + sizeof(void *) * 2, + "wasted space in SmallVector size 1"); + +static_assert(sizeof(SmallVector) == sizeof(void *) * 2 + sizeof(void *), + "1 byte elements have word-sized type for size and capacity"); +************/ + +template +void SmallVectorBase::report_size_overflow(size_t MinSize) +{ + std::string Reason = "RVec unable to grow. Requested capacity (" + std::to_string(MinSize) + + ") is larger than maximum value for size type (" + std::to_string(SizeTypeMax()) + ")"; + throw std::length_error(Reason); +} + +template +void SmallVectorBase::report_at_maximum_capacity() +{ + std::string Reason = "RVec capacity unable to grow. Already at maximum size " + std::to_string(SizeTypeMax()); + throw std::length_error(Reason); +} + +// Note: Moving this function into the header may cause performance regression. +template +void SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSize) +{ + // Ensure we can fit the new capacity. + // This is only going to be applicable when the capacity is 32 bit. + if (MinSize > SizeTypeMax()) + report_size_overflow(MinSize); + + // Ensure we can meet the guarantee of space for at least one more element. + // The above check alone will not catch the case where grow is called with a + // default MinSize of 0, but the current capacity cannot be increased. + // This is only going to be applicable when the capacity is 32 bit. + if (capacity() == SizeTypeMax()) + report_at_maximum_capacity(); + + // In theory 2*capacity can overflow if the capacity is 64 bit, but the + // original capacity would never be large enough for this to be a problem. + size_t NewCapacity = 2 * capacity() + 1; // Always grow. + NewCapacity = std::min(std::max(NewCapacity, MinSize), SizeTypeMax()); + + void *NewElts; + if (BeginX == FirstEl) { + NewElts = malloc(NewCapacity * TSize); + + // Copy the elements over. No need to run dtors on PODs. + memcpy(NewElts, this->BeginX, size() * TSize); + } else { + // If this wasn't grown from the inline copy, grow the allocated space. + NewElts = realloc(this->BeginX, NewCapacity * TSize); + } + + this->BeginX = NewElts; + this->Capacity = NewCapacity; +} + +template class ROOT::VecOps::SmallVectorBase; + +// Disable the uint64_t instantiation for 32-bit builds. +// Both uint32_t and uint64_t instantations are needed for 64-bit builds. +// This instantiation will never be used in 32-bit builds, and will cause +// warnings when sizeof(Size_T) > sizeof(size_t). +#if SIZE_MAX > UINT32_MAX +template class ROOT::VecOps::SmallVectorBase; + +// Assertions to ensure this #if stays in sync with SmallVectorSizeType. +static_assert(sizeof(SmallVectorSizeType) == sizeof(uint64_t), + "Expected SmallVectorBase variant to be in use."); +#else +static_assert(sizeof(SmallVectorSizeType) == sizeof(uint32_t), + "Expected SmallVectorBase variant to be in use."); +#endif #if (_VECOPS_USE_EXTERN_TEMPLATES) From 90da20335a5278dc6707de2153f86e6cc01882e8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 17 Feb 2021 10:29:20 +0100 Subject: [PATCH 208/577] [VecOps] Fix RVec I/O after change in class layout In particular, now that RVec is not implemented in terms of std::vector anymore, we do not need to apply the related tricks when performing I/O of RVec. --- core/cont/inc/TCollectionProxyInfo.h | 4 ---- io/io/src/TGenCollectionProxy.cxx | 3 ++- io/io/src/TStreamerInfoActions.cxx | 2 -- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/core/cont/inc/TCollectionProxyInfo.h b/core/cont/inc/TCollectionProxyInfo.h index 3787d1311a8df..79a73b1b9a43c 100644 --- a/core/cont/inc/TCollectionProxyInfo.h +++ b/core/cont/inc/TCollectionProxyInfo.h @@ -752,10 +752,6 @@ namespace Detail { } }; - // TODO this can/should go away when we move to new RVec - template <> - struct TCollectionProxyInfo::Type> : TCollectionProxyInfo::Type> {}; - template struct TCollectionProxyInfo::Type > : public TCollectionProxyInfo::Address { typedef Bitset_t Cont_t; diff --git a/io/io/src/TGenCollectionProxy.cxx b/io/io/src/TGenCollectionProxy.cxx index 83ee325ed50c3..945ef6c981c64 100644 --- a/io/io/src/TGenCollectionProxy.cxx +++ b/io/io/src/TGenCollectionProxy.cxx @@ -1043,13 +1043,14 @@ void* TGenCollectionProxy::At(UInt_t idx) if ( fEnv && fEnv->fObject ) { switch (fSTL_type) { case ROOT::kSTLvector: - case ROOT::kROOTRVec: // TODO will be unnecessary with RVec 2.0: RVec won't be a special case if ((*fValue).fKind == kBool_t) { auto vec = (std::vector *)(fEnv->fObject); fEnv->fLastValueVecBool = (*vec)[idx]; fEnv->fIdx = idx; return &(fEnv->fLastValueVecBool); } + // intentional fall through + case ROOT::kROOTRVec: fEnv->fIdx = idx; switch( idx ) { case 0: diff --git a/io/io/src/TStreamerInfoActions.cxx b/io/io/src/TStreamerInfoActions.cxx index 7b61dab789af2..0afc89b3e7c46 100644 --- a/io/io/src/TStreamerInfoActions.cxx +++ b/io/io/src/TStreamerInfoActions.cxx @@ -1704,8 +1704,6 @@ namespace TStreamerInfoActions || proxy.GetCollectionType() == ROOT::kSTLunorderedmap || proxy.GetCollectionType() == ROOT::kSTLunorderedmultimap || proxy.GetCollectionType() == ROOT::kSTLbitset) { return kAssociativeLooper; - } else if (proxy.GetCollectionType() == ROOT::kROOTRVec && proxy.GetType() == EDataType::kBool_t) { - return kVectorLooper; } else { return kGenericLooper; } From 010f53e1e67baedba1523855cb8f96f8eb638f3f Mon Sep 17 00:00:00 2001 From: Stefan Wunsch Date: Thu, 25 Mar 2021 12:31:47 +0100 Subject: [PATCH 209/577] [VecOps][PyROOT] Add workarounds for PyROOT issues PyROOT does not pick up correctly methods such as `operator[]` or `size` from the parent classes and therefore fails to pythonize the proxies in Python correctly. Raising the respective methods in the hierarchy is a workaround for these issues, which are tracked in #7686. --- math/vecops/inc/ROOT/RVec.hxx | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 5ecfc3db9dd0d..36770dbc46508 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -436,17 +436,6 @@ public: /// Return a pointer to the vector's buffer, even if empty(). const_pointer data() const { return const_pointer(begin()); } - reference operator[](size_type idx) - { - assert(idx < size()); - return begin()[idx]; - } - const_reference operator[](size_type idx) const - { - assert(idx < size()); - return begin()[idx]; - } - reference front() { assert(!empty()); @@ -1291,7 +1280,22 @@ public: return *this; } - using SmallVectorTemplateCommon::operator[]; + using reference = typename SmallVectorTemplateCommon::reference; + using const_reference = typename SmallVectorTemplateCommon::const_reference; + using size_type = typename SmallVectorTemplateCommon::size_type; + using SmallVectorTemplateCommon::begin; + using SmallVectorTemplateCommon::size; + + reference operator[](size_type idx) + { + assert(idx < size()); + return begin()[idx]; + } + const_reference operator[](size_type idx) const + { + assert(idx < size()); + return begin()[idx]; + } template ::value>> RVec operator[](const RVec &conds) const From 3035b05b2096a254daade1ce5e0b1e8f0871899b Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 13 Apr 2021 17:40:10 +0200 Subject: [PATCH 210/577] [VecOps] RVec refactorings: - move SmallVector classes to internal namespace - add noexcept specifiers where RVec had them - add deprecated `shrink_to_fit` and `emplace` implementations --- math/vecops/inc/ROOT/RVec.hxx | 434 ++++++++++++++++++---------------- math/vecops/src/RVec.cxx | 14 +- 2 files changed, 234 insertions(+), 214 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 36770dbc46508..ada158cbc1ec7 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -117,173 +117,10 @@ auto MapFromTuple(Tuple_t &&t, std::index_sequence) } } +namespace Internal { namespace VecOps { - -// Note that we open here with @{ the Doxygen group vecops and it is -// closed again at the end of the C++ namespace VecOps -/** - * \defgroup vecops VecOps - * A "std::vector"-like collection of values implementing handy operation to analyse them - * @{ -*/ - -// clang-format off -/** -\class ROOT::VecOps::RVec -\brief A "std::vector"-like collection of values implementing handy operation to analyse them -\tparam T The type of the contained objects - -A RVec is a container designed to make analysis of values' collections fast and easy. -Its storage is contiguous in memory and its interface is designed such to resemble to the one -of the stl vector. In addition the interface features methods and external functions to ease -the manipulation and analysis of the data in the RVec. - -\htmlonly -DOI -\endhtmlonly - -## Table of Contents -- [Example](\ref example) -- [Owning and adopting memory](\ref owningandadoptingmemory) -- [Sorting and manipulation of indices](\ref sorting) -- [Usage in combination with RDataFrame](\ref usagetdataframe) -- [Reference for the RVec class](\ref RVecdoxyref) - -Also see the [reference for RVec helper functions](https://root.cern/doc/master/namespaceROOT_1_1VecOps.html). - -\anchor example -## Example -Suppose to have an event featuring a collection of muons with a certain pseudorapidity, -momentum and charge, e.g.: -~~~{.cpp} -std::vector mu_charge {1, 1, -1, -1, -1, 1, 1, -1}; -std::vector mu_pt {56, 45, 32, 24, 12, 8, 7, 6.2}; -std::vector mu_eta {3.1, -.2, -1.1, 1, 4.1, 1.6, 2.4, -.5}; -~~~ -Suppose you want to extract the transverse momenta of the muons satisfying certain -criteria, for example consider only negatively charged muons with a pseudorapidity -smaller or equal to 2 and with a transverse momentum greater than 10 GeV. -Such a selection would require, among the other things, the management of an explicit -loop, for example: -~~~{.cpp} -std::vector goodMuons_pt; -const auto size = mu_charge.size(); -for (size_t i=0; i < size; ++i) { - if (mu_pt[i] > 10 && abs(mu_eta[i]) <= 2. && mu_charge[i] == -1) { - goodMuons_pt.emplace_back(mu_pt[i]); - } -} -~~~ -These operations become straightforward with RVec - we just need to *write what -we mean*: -~~~{.cpp} -auto goodMuons_pt = mu_pt[ (mu_pt > 10.f && abs(mu_eta) <= 2.f && mu_charge == -1) ] -~~~ -Now the clean collection of transverse momenta can be used within the rest of the data analysis, for -example to fill a histogram. - -\anchor owningandadoptingmemory -## Owning and adopting memory -RVec has contiguous memory associated to it. It can own it or simply adopt it. In the latter case, -it can be constructed with the address of the memory associated to it and its length. For example: -~~~{.cpp} -std::vector myStlVec {1,2,3}; -RVec myRVec(myStlVec.data(), myStlVec.size()); -~~~ -In this case, the memory associated to myStlVec and myRVec is the same, myRVec simply "adopted it". -If any method which implies a re-allocation is called, e.g. *emplace_back* or *resize*, the adopted -memory is released and new one is allocated. The previous content is copied in the new memory and -preserved. - -\anchor sorting -## Sorting and manipulation of indices - -### Sorting -RVec complies to the STL interfaces when it comes to iterations. As a result, standard algorithms -can be used, for example sorting: -~~~{.cpp} -RVec v{6., 4., 5.}; -std::sort(v.begin(), v.end()); -~~~ - -For convinience, helpers are provided too: -~~~{.cpp} -auto sorted_v = Sort(v); -auto reversed_v = Reverse(v); -~~~ - -### Manipulation of indices - -It is also possible to manipulated the RVecs acting on their indices. For example, -the following syntax -~~~{.cpp} -RVec v0 {9., 7., 8.}; -auto v1 = Take(v0, {1, 2, 0}); -~~~ -will yield a new RVec the content of which is the first, second and zeroth element of -v0, i.e. `{7., 8., 9.}`. - -The `Argsort` helper extracts the indices which order the content of a `RVec`. For example, -this snippet accomplish in a more expressive way what we just achieved: -~~~{.cpp} -auto v1_indices = Argsort(v0); // The content of v1_indices is {1, 2, 0}. -v1 = Take(v0, v1_indices); -~~~ - -The `Take` utility allows to extract portions of the `RVec`. The content to be *taken* -can be specified with an `RVec` of indices or an integer. If the integer is negative, -elements will be picked starting from the end of the container: -~~~{.cpp} -RVec vf {1.f, 2.f, 3.f, 4.f}; -auto vf_1 = Take(vf, {1, 3}); // The content is {2.f, 4.f} -auto vf_2 = Take(vf, 2); // The content is {1.f, 2.f} -auto vf_3 = Take(vf, -3); // The content is {2.f, 3.f, 4.f} -~~~ - -\anchor usagetdataframe -## Usage in combination with RDataFrame -RDataFrame leverages internally RVecs. Suppose to have a dataset stored in a -TTree which holds these columns (here we choose C arrays to represent the -collections, they could be as well std::vector instances): -~~~{.bash} - nPart "nPart/I" An integer representing the number of particles - px "px[nPart]/D" The C array of the particles' x component of the momentum - py "py[nPart]/D" The C array of the particles' y component of the momentum - E "E[nPart]/D" The C array of the particles' Energy -~~~ -Suppose you'd like to plot in a histogram the transverse momenta of all particles -for which the energy is greater than 200 MeV. -The code required would just be: -~~~{.cpp} -RDataFrame d("mytree", "myfile.root"); -using doubles = RVec; -auto cutPt = [](doubles &pxs, doubles &pys, doubles &Es) { - auto all_pts = sqrt(pxs * pxs + pys * pys); - auto good_pts = all_pts[Es > 200.]; - return good_pts; - }; - -auto hpt = d.Define("pt", cutPt, {"px", "py", "E"}) - .Histo1D("pt"); -hpt->Draw(); -~~~ -And if you'd like to express your selection as a string: -~~~{.cpp} -RDataFrame d("mytree", "myfile.root"); -auto hpt = d.Define("pt", "sqrt(pxs * pxs + pys * pys)[E>200]") - .Histo1D("pt"); -hpt->Draw(); -~~~ -\anchor RVecdoxyref - -**/ - -// clang-format on - -//FIXME put things in the namespace they belong to - -/// Returns the next power of two (in 64-bits) that is strictly greater than A. -/// Returns zero on overflow. +/// Return the next power of two (in 64-bits) that is strictly greater than A. +/// Return zero on overflow. inline uint64_t NextPowerOf2(uint64_t A) { A |= (A >> 1); @@ -330,7 +167,7 @@ protected: public: size_t size() const { return fSize; } - size_t capacity() const { return Capacity; } + size_t capacity() const noexcept { return Capacity; } RVEC_NODISCARD bool empty() const { return !fSize; } @@ -348,6 +185,11 @@ public: assert(N <= capacity()); fSize = N; } + + // LLVM SmallVector does not have a shrink_to_fit method + // it's technically ok to do nothing, but assuming no one uses this method for RVec anyway, I'd rather deprecate it + R__DEPRECATED(6, 28, "This method will be removed.") + constexpr void shrink_to_fit() { } }; template @@ -415,26 +257,30 @@ public: using Base::size; // forward iterator creation methods. - iterator begin() { return (iterator)this->BeginX; } - const_iterator begin() const { return (const_iterator)this->BeginX; } - iterator end() { return begin() + size(); } - const_iterator end() const { return begin() + size(); } + iterator begin() noexcept { return (iterator)this->BeginX; } + const_iterator begin() const noexcept { return (const_iterator)this->BeginX; } + const_iterator cbegin() const noexcept { return (const_iterator)this->BeginX; } + iterator end() noexcept { return begin() + size(); } + const_iterator end() const noexcept { return begin() + size(); } + const_iterator cend() const noexcept { return begin() + size(); } // reverse iterator creation methods. - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + reverse_iterator rbegin() noexcept { return reverse_iterator(end()); } + const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } + reverse_iterator rend() noexcept { return reverse_iterator(begin()); } + const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } + const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } size_type size_in_bytes() const { return size() * sizeof(T); } - size_type max_size() const { return std::min(this->SizeTypeMax(), size_type(-1) / sizeof(T)); } + size_type max_size() const noexcept { return std::min(this->SizeTypeMax(), size_type(-1) / sizeof(T)); } size_t capacity_in_bytes() const { return capacity() * sizeof(T); } /// Return a pointer to the vector's buffer, even if empty(). - pointer data() { return pointer(begin()); } + pointer data() noexcept { return pointer(begin()); } /// Return a pointer to the vector's buffer, even if empty(). - const_pointer data() const { return const_pointer(begin()); } + const_pointer data() const noexcept { return const_pointer(begin()); } reference front() { @@ -985,7 +831,15 @@ public: void insert(iterator I, std::initializer_list IL) { insert(I, IL.begin(), IL.end()); } template - reference emplace_back(ArgTypes &&... Args) + R__DEPRECATED(6, 28, "Please use RVec::insert instead.") + reference emplace(iterator I, ArgTypes &&...Args) + { + // these are not the exact semantics of emplace, of course, hence the deprecation. + return insert(I, T(std::forward...)); + } + + template + reference emplace_back(ArgTypes &&...Args) { if (R__unlikely(this->size() >= this->capacity())) this->grow(); @@ -1193,6 +1047,170 @@ struct SmallVectorStorage { template struct alignas(T) SmallVectorStorage { }; +} // namespace VecOps +} // namespace Internal + +namespace VecOps { +// Note that we open here with @{ the Doxygen group vecops and it is +// closed again at the end of the C++ namespace VecOps +/** + * \defgroup vecops VecOps + * A "std::vector"-like collection of values implementing handy operation to analyse them + * @{ +*/ + +// clang-format off +/** +\class ROOT::VecOps::RVec +\brief A "std::vector"-like collection of values implementing handy operation to analyse them +\tparam T The type of the contained objects + +A RVec is a container designed to make analysis of values' collections fast and easy. +Its storage is contiguous in memory and its interface is designed such to resemble to the one +of the stl vector. In addition the interface features methods and external functions to ease +the manipulation and analysis of the data in the RVec. + +\htmlonly +DOI +\endhtmlonly + +## Table of Contents +- [Example](\ref example) +- [Owning and adopting memory](\ref owningandadoptingmemory) +- [Sorting and manipulation of indices](\ref sorting) +- [Usage in combination with RDataFrame](\ref usagetdataframe) +- [Reference for the RVec class](\ref RVecdoxyref) + +Also see the [reference for RVec helper functions](https://root.cern/doc/master/namespaceROOT_1_1VecOps.html). + +\anchor example +## Example +Suppose to have an event featuring a collection of muons with a certain pseudorapidity, +momentum and charge, e.g.: +~~~{.cpp} +std::vector mu_charge {1, 1, -1, -1, -1, 1, 1, -1}; +std::vector mu_pt {56, 45, 32, 24, 12, 8, 7, 6.2}; +std::vector mu_eta {3.1, -.2, -1.1, 1, 4.1, 1.6, 2.4, -.5}; +~~~ +Suppose you want to extract the transverse momenta of the muons satisfying certain +criteria, for example consider only negatively charged muons with a pseudorapidity +smaller or equal to 2 and with a transverse momentum greater than 10 GeV. +Such a selection would require, among the other things, the management of an explicit +loop, for example: +~~~{.cpp} +std::vector goodMuons_pt; +const auto size = mu_charge.size(); +for (size_t i=0; i < size; ++i) { + if (mu_pt[i] > 10 && abs(mu_eta[i]) <= 2. && mu_charge[i] == -1) { + goodMuons_pt.emplace_back(mu_pt[i]); + } +} +~~~ +These operations become straightforward with RVec - we just need to *write what +we mean*: +~~~{.cpp} +auto goodMuons_pt = mu_pt[ (mu_pt > 10.f && abs(mu_eta) <= 2.f && mu_charge == -1) ] +~~~ +Now the clean collection of transverse momenta can be used within the rest of the data analysis, for +example to fill a histogram. + +\anchor owningandadoptingmemory +## Owning and adopting memory +RVec has contiguous memory associated to it. It can own it or simply adopt it. In the latter case, +it can be constructed with the address of the memory associated to it and its length. For example: +~~~{.cpp} +std::vector myStlVec {1,2,3}; +RVec myRVec(myStlVec.data(), myStlVec.size()); +~~~ +In this case, the memory associated to myStlVec and myRVec is the same, myRVec simply "adopted it". +If any method which implies a re-allocation is called, e.g. *emplace_back* or *resize*, the adopted +memory is released and new one is allocated. The previous content is copied in the new memory and +preserved. + +\anchor sorting +## Sorting and manipulation of indices + +### Sorting +RVec complies to the STL interfaces when it comes to iterations. As a result, standard algorithms +can be used, for example sorting: +~~~{.cpp} +RVec v{6., 4., 5.}; +std::sort(v.begin(), v.end()); +~~~ + +For convinience, helpers are provided too: +~~~{.cpp} +auto sorted_v = Sort(v); +auto reversed_v = Reverse(v); +~~~ + +### Manipulation of indices + +It is also possible to manipulated the RVecs acting on their indices. For example, +the following syntax +~~~{.cpp} +RVec v0 {9., 7., 8.}; +auto v1 = Take(v0, {1, 2, 0}); +~~~ +will yield a new RVec the content of which is the first, second and zeroth element of +v0, i.e. `{7., 8., 9.}`. + +The `Argsort` helper extracts the indices which order the content of a `RVec`. For example, +this snippet accomplish in a more expressive way what we just achieved: +~~~{.cpp} +auto v1_indices = Argsort(v0); // The content of v1_indices is {1, 2, 0}. +v1 = Take(v0, v1_indices); +~~~ + +The `Take` utility allows to extract portions of the `RVec`. The content to be *taken* +can be specified with an `RVec` of indices or an integer. If the integer is negative, +elements will be picked starting from the end of the container: +~~~{.cpp} +RVec vf {1.f, 2.f, 3.f, 4.f}; +auto vf_1 = Take(vf, {1, 3}); // The content is {2.f, 4.f} +auto vf_2 = Take(vf, 2); // The content is {1.f, 2.f} +auto vf_3 = Take(vf, -3); // The content is {2.f, 3.f, 4.f} +~~~ + +\anchor usagetdataframe +## Usage in combination with RDataFrame +RDataFrame leverages internally RVecs. Suppose to have a dataset stored in a +TTree which holds these columns (here we choose C arrays to represent the +collections, they could be as well std::vector instances): +~~~{.bash} + nPart "nPart/I" An integer representing the number of particles + px "px[nPart]/D" The C array of the particles' x component of the momentum + py "py[nPart]/D" The C array of the particles' y component of the momentum + E "E[nPart]/D" The C array of the particles' Energy +~~~ +Suppose you'd like to plot in a histogram the transverse momenta of all particles +for which the energy is greater than 200 MeV. +The code required would just be: +~~~{.cpp} +RDataFrame d("mytree", "myfile.root"); +using doubles = RVec; +auto cutPt = [](doubles &pxs, doubles &pys, doubles &Es) { + auto all_pts = sqrt(pxs * pxs + pys * pys); + auto good_pts = all_pts[Es > 200.]; + return good_pts; + }; + +auto hpt = d.Define("pt", cutPt, {"px", "py", "E"}) + .Histo1D("pt"); +hpt->Draw(); +~~~ +And if you'd like to express your selection as a string: +~~~{.cpp} +RDataFrame d("mytree", "myfile.root"); +auto hpt = d.Define("pt", "sqrt(pxs * pxs + pys * pys)[E>200]") + .Histo1D("pt"); +hpt->Draw(); +~~~ +\anchor RVecdoxyref +**/ +// clang-format on + + /// This is a 'vector' (really, a variable-sized array), optimized /// for the case when the array is small. It contains some number of elements @@ -1203,10 +1221,10 @@ struct alignas(T) SmallVectorStorage { /// Note that this does not attempt to be exception safe. /// template -class RVec : public SmallVectorImpl, SmallVectorStorage { +class RVec : public Internal::VecOps::SmallVectorImpl, Internal::VecOps::SmallVectorStorage { public: static constexpr unsigned N = 8; - RVec() : SmallVectorImpl(N) {} + RVec() : Internal::VecOps::SmallVectorImpl(N) {} ~RVec() { @@ -1216,51 +1234,54 @@ public: } } - explicit RVec(size_t Size, const T &Value = T()) : SmallVectorImpl(N) { this->assign(Size, Value); } + explicit RVec(size_t Size, const T &Value = T()) : Internal::VecOps::SmallVectorImpl(N) + { + this->assign(Size, Value); + } template ::iterator_category, std::input_iterator_tag>::value>::type> - RVec(ItTy S, ItTy E) : SmallVectorImpl(N) + RVec(ItTy S, ItTy E) : Internal::VecOps::SmallVectorImpl(N) { this->append(S, E); } - RVec(std::initializer_list IL) : SmallVectorImpl(N) { this->assign(IL); } + RVec(std::initializer_list IL) : Internal::VecOps::SmallVectorImpl(N) { this->assign(IL); } - RVec(const RVec &RHS) : SmallVectorImpl(N) + RVec(const RVec &RHS) : Internal::VecOps::SmallVectorImpl(N) { if (!RHS.empty()) - SmallVectorImpl::operator=(RHS); + Internal::VecOps::SmallVectorImpl::operator=(RHS); } RVec &operator=(const RVec &RHS) { - SmallVectorImpl::operator=(RHS); + Internal::VecOps::SmallVectorImpl::operator=(RHS); return *this; } - RVec(RVec &&RHS) : SmallVectorImpl(N) + RVec(RVec &&RHS) : Internal::VecOps::SmallVectorImpl(N) { if (!RHS.empty()) - SmallVectorImpl::operator=(::std::move(RHS)); + Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); } - RVec(SmallVectorImpl &&RHS) : SmallVectorImpl(N) + RVec(Internal::VecOps::SmallVectorImpl &&RHS) : Internal::VecOps::SmallVectorImpl(N) { if (!RHS.empty()) - SmallVectorImpl::operator=(::std::move(RHS)); + Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); } RVec(const std::vector &RHS) : RVec(RHS.begin(), RHS.end()) {} RVec &operator=(RVec &&RHS) { - SmallVectorImpl::operator=(::std::move(RHS)); + Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); return *this; } - RVec(typename RVec::pointer p, typename RVec::size_type n) : SmallVectorImpl(N) + RVec(typename RVec::pointer p, typename RVec::size_type n) : Internal::VecOps::SmallVectorImpl(N) { this->BeginX = p; this->fSize = n; @@ -1268,9 +1289,9 @@ public: this->Owns = false; } - RVec &operator=(SmallVectorImpl &&RHS) + RVec &operator=(Internal::VecOps::SmallVectorImpl &&RHS) { - SmallVectorImpl::operator=(::std::move(RHS)); + Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); return *this; } @@ -1280,11 +1301,11 @@ public: return *this; } - using reference = typename SmallVectorTemplateCommon::reference; - using const_reference = typename SmallVectorTemplateCommon::const_reference; - using size_type = typename SmallVectorTemplateCommon::size_type; - using SmallVectorTemplateCommon::begin; - using SmallVectorTemplateCommon::size; + using reference = typename Internal::VecOps::SmallVectorTemplateCommon::reference; + using const_reference = typename Internal::VecOps::SmallVectorTemplateCommon::const_reference; + using size_type = typename Internal::VecOps::SmallVectorTemplateCommon::size_type; + using Internal::VecOps::SmallVectorTemplateCommon::begin; + using Internal::VecOps::SmallVectorTemplateCommon::size; reference operator[](size_type idx) { @@ -1322,35 +1343,34 @@ public: // from the original LLVM implementation: // FIXME find a less verbose way - typename SmallVectorTemplateCommon::reference at(typename SmallVectorTemplateCommon::size_type pos) + typename Internal::VecOps::SmallVectorTemplateCommon::reference at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos) { if (pos >= this->fSize) throw std::out_of_range("RVec"); return this->operator[](pos); } - typename SmallVectorTemplateCommon::const_reference at(typename SmallVectorTemplateCommon::size_type pos) const + typename Internal::VecOps::SmallVectorTemplateCommon::const_reference at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos) const { if (pos >= this->fSize) throw std::out_of_range("RVec"); return this->operator[](pos); } /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - typename SmallVectorTemplateCommon::value_type - at(typename SmallVectorTemplateCommon::size_type pos, typename SmallVectorTemplateCommon::value_type fallback) + typename Internal::VecOps::SmallVectorTemplateCommon::value_type + at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos, typename Internal::VecOps::SmallVectorTemplateCommon::value_type fallback) { if (pos >= this->fSize) return fallback; return this->operator[](pos); } /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - typename SmallVectorTemplateCommon::value_type - at(typename SmallVectorTemplateCommon::size_type pos, typename SmallVectorTemplateCommon::value_type fallback) const + typename Internal::VecOps::SmallVectorTemplateCommon::value_type + at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos, typename Internal::VecOps::SmallVectorTemplateCommon::value_type fallback) const { if (pos >= this->fSize) return fallback; return this->operator[](pos); } - }; template diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index d1b73341f3ec7..2dd5c8e22abb0 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -25,7 +25,7 @@ static_assert(sizeof(SmallVector) == sizeof(void *) * 2 + sizeof(void * ************/ template -void SmallVectorBase::report_size_overflow(size_t MinSize) +void ROOT::Internal::VecOps::SmallVectorBase::report_size_overflow(size_t MinSize) { std::string Reason = "RVec unable to grow. Requested capacity (" + std::to_string(MinSize) + ") is larger than maximum value for size type (" + std::to_string(SizeTypeMax()) + ")"; @@ -33,7 +33,7 @@ void SmallVectorBase::report_size_overflow(size_t MinSize) } template -void SmallVectorBase::report_at_maximum_capacity() +void ROOT::Internal::VecOps::SmallVectorBase::report_at_maximum_capacity() { std::string Reason = "RVec capacity unable to grow. Already at maximum size " + std::to_string(SizeTypeMax()); throw std::length_error(Reason); @@ -41,7 +41,7 @@ void SmallVectorBase::report_at_maximum_capacity() // Note: Moving this function into the header may cause performance regression. template -void SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSize) +void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSize) { // Ensure we can fit the new capacity. // This is only going to be applicable when the capacity is 32 bit. @@ -75,20 +75,20 @@ void SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSi this->Capacity = NewCapacity; } -template class ROOT::VecOps::SmallVectorBase; +template class ROOT::Internal::VecOps::SmallVectorBase; // Disable the uint64_t instantiation for 32-bit builds. // Both uint32_t and uint64_t instantations are needed for 64-bit builds. // This instantiation will never be used in 32-bit builds, and will cause // warnings when sizeof(Size_T) > sizeof(size_t). #if SIZE_MAX > UINT32_MAX -template class ROOT::VecOps::SmallVectorBase; +template class ROOT::Internal::VecOps::SmallVectorBase; // Assertions to ensure this #if stays in sync with SmallVectorSizeType. -static_assert(sizeof(SmallVectorSizeType) == sizeof(uint64_t), +static_assert(sizeof(ROOT::Internal::VecOps::SmallVectorSizeType) == sizeof(uint64_t), "Expected SmallVectorBase variant to be in use."); #else -static_assert(sizeof(SmallVectorSizeType) == sizeof(uint32_t), +static_assert(sizeof(ROOT::Internal::VecOps::SmallVectorSizeType) == sizeof(uint32_t), "Expected SmallVectorBase variant to be in use."); #endif From 01e6a98cd195ed14f6cabe2cd55cc848b44f2cab Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 4 May 2021 16:15:12 +0200 Subject: [PATCH 211/577] [VecOps] Fix compilation errors on older compilers/standards - constexpr functions returning void are a C++14 feature - some compilers cannot access type aliases through multiple levels of inheritance --- math/vecops/inc/ROOT/RVec.hxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index ada158cbc1ec7..d005daf28832f 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -189,7 +189,7 @@ public: // LLVM SmallVector does not have a shrink_to_fit method // it's technically ok to do nothing, but assuming no one uses this method for RVec anyway, I'd rather deprecate it R__DEPRECATED(6, 28, "This method will be removed.") - constexpr void shrink_to_fit() { } + void shrink_to_fit() { } }; template @@ -417,6 +417,8 @@ void SmallVectorTemplateBase::grow(size_t MinSize) /// skipping destruction. template class SmallVectorTemplateBase : public SmallVectorTemplateCommon { + using SuperClass = SmallVectorTemplateCommon; + protected: SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon(Size) {} @@ -465,6 +467,11 @@ protected: } public: + using iterator = typename SuperClass::iterator; + using const_iterator = typename SuperClass::const_iterator; + using reference = typename SuperClass::reference; + using size_type = typename SuperClass::size_type; + void push_back(const T &Elt) { if (R__unlikely(this->size() >= this->capacity())) From a03dfaee21ac527deffed675a6d7e4a57cf8c7f4 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 4 May 2021 16:45:06 +0200 Subject: [PATCH 212/577] [VecOps] Make windows happy MSVC could not digest the previous spelling. --- math/vecops/inc/ROOT/RVec.hxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index d005daf28832f..496cc0e9ffda4 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1288,7 +1288,7 @@ public: return *this; } - RVec(typename RVec::pointer p, typename RVec::size_type n) : Internal::VecOps::SmallVectorImpl(N) + RVec(T* p, size_t n) : Internal::VecOps::SmallVectorImpl(N) { this->BeginX = p; this->fSize = n; @@ -1964,7 +1964,7 @@ template auto Any(const RVec &v) -> decltype(v[0] == true) { for (auto &&e : v) - if (e == true) + if (static_cast(e) == true) return true; return false; } @@ -1983,7 +1983,7 @@ template auto All(const RVec &v) -> decltype(v[0] == false) { for (auto &&e : v) - if (e == false) + if (static_cast(e) == false) return false; return true; } From f673eab257109c23f290e22d472a8c156c2ef340 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 27 May 2021 10:19:39 +0200 Subject: [PATCH 213/577] [VecOps][NFC] Update year in a copyright notice --- math/vecops/inc/LinkDef.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/vecops/inc/LinkDef.h b/math/vecops/inc/LinkDef.h index 5a03297c31c9c..3b3c2b5495b34 100644 --- a/math/vecops/inc/LinkDef.h +++ b/math/vecops/inc/LinkDef.h @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright (C) 1995-2020, Rene Brun and Fons Rademakers. * + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * Author: Danilo Piparo - CERN * From 454f75b376ca6a66b393a12a9c053034639f2414 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 27 May 2021 10:20:58 +0200 Subject: [PATCH 214/577] [VecOps][NFC] Clarify comment Co-authored-by: Axel Naumann --- math/vecops/inc/ROOT/RVec.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 496cc0e9ffda4..cc9fead76adc2 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -9,9 +9,9 @@ *************************************************************************/ /* - * The implementation of RVec is based in LLVM's SmallVector. + * The implementation of RVec is based on LLVM's SmallVector. * - * The ability to adopt an existing memory buffer has been added, + * Compared to LLVM's SmallVectors, the ability to adopt an existing memory buffer has been added, * as well as other minor patches for backward compatibility with * the previous implementation of RVec (which did not have a small buffer * optimization and was based on std::vector with a custom allocator) and From 2fa445793ce2740cdd66281db3931b2a12f90526 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 27 May 2021 11:45:53 +0200 Subject: [PATCH 215/577] [VecOps][NFC] Rename RVEC_NODISCARD to R__RVEC_NODISCARD --- math/vecops/inc/ROOT/RVec.hxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index cc9fead76adc2..16ecf3eda215b 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -23,9 +23,9 @@ #define ROOT_RVEC #if __cplusplus > 201402L -#define RVEC_NODISCARD [[nodiscard]] +#define R__RVEC_NODISCARD [[nodiscard]] #else -#define RVEC_NODISCARD +#define R__RVEC_NODISCARD #endif #ifdef _WIN32 @@ -169,7 +169,7 @@ public: size_t size() const { return fSize; } size_t capacity() const noexcept { return Capacity; } - RVEC_NODISCARD bool empty() const { return !fSize; } + R__RVEC_NODISCARD bool empty() const { return !fSize; } /// Set the array size to \p N, which the current array must have enough /// capacity for. @@ -564,7 +564,7 @@ public: this->set_size(this->size() - NumItems); } - RVEC_NODISCARD T pop_back_val() + R__RVEC_NODISCARD T pop_back_val() { T Result = ::std::move(this->back()); this->pop_back(); From 4a779f92ed87bbcaa80a6c51dd510b41e75b793d Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 27 May 2021 11:46:22 +0200 Subject: [PATCH 216/577] [VecOps][NFC] Add comments --- math/vecops/inc/ROOT/RVec.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 16ecf3eda215b..7e96c45069682 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -114,8 +114,8 @@ auto MapFromTuple(Tuple_t &&t, std::index_sequence) return MapImpl(std::get(t), std::get(t)...); } -} -} +} // namespace VecOps +} // namespace Detail namespace Internal { namespace VecOps { From 453bbe60ceb0088cf9c1b6efa5116384a2dd6172 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 31 May 2021 10:45:40 +0200 Subject: [PATCH 217/577] [VecOps][NFC] Remove SmallVector-related comment from doxygen --- math/vecops/inc/ROOT/RVec.hxx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 7e96c45069682..ac4296c4c9a14 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1219,14 +1219,15 @@ hpt->Draw(); -/// This is a 'vector' (really, a variable-sized array), optimized -/// for the case when the array is small. It contains some number of elements -/// in-place, which allows it to avoid heap allocation when the actual number of -/// elements is below that threshold. This allows normal "small" cases to be -/// fast without losing generality for large inputs. -/// -/// Note that this does not attempt to be exception safe. -/// +// From the original SmallVector code: +// This is a 'vector' (really, a variable-sized array), optimized +// for the case when the array is small. It contains some number of elements +// in-place, which allows it to avoid heap allocation when the actual number of +// elements is below that threshold. This allows normal "small" cases to be +// fast without losing generality for large inputs. +// +// Note that this does not attempt to be exception safe. + template class RVec : public Internal::VecOps::SmallVectorImpl, Internal::VecOps::SmallVectorStorage { public: From 660d945f138287c742d1a58cc1828a3a5eced9b6 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 31 May 2021 10:49:51 +0200 Subject: [PATCH 218/577] [VecOps] Add test for #6796 (interaction of memory adoption and clear) --- math/vecops/test/vecops_rvec.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 76caee7cfd9d4..7c5139bcfb4e4 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -1116,3 +1116,14 @@ TEST(VecOps, Construct) EXPECT_TRUE(fourVects[2] == ref2); } +// this is a regression test for https://github.com/root-project/root/issues/6796 +TEST(VecOps, MemoryAdoptionAndClear) +{ + ROOT::RVec v{1, 2, 3}; + ROOT::RVec v2(v.data(), v.size()); + v2[0] = 0; + v2.clear(); + EXPECT_TRUE(All(v == RVec{0, 2, 3})); + v2.push_back(42); + EXPECT_TRUE(All(v2 == RVec{42})); +} From 0009c2bbe6c6567ff436a572f54c5a546b599a4f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 31 May 2021 11:15:35 +0200 Subject: [PATCH 219/577] [VecOps][NFC] Use ROOT naming convention for SmallVector data members E.g. rename Capacity to fCapacity --- math/vecops/inc/ROOT/RVec.hxx | 81 ++++++++++++++++++----------------- math/vecops/src/RVec.cxx | 10 ++--- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index ac4296c4c9a14..a21cf0d51c71f 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -143,15 +143,16 @@ inline uint64_t NextPowerOf2(uint64_t A) template class SmallVectorBase { protected: - void *BeginX; - Size_T fSize = 0, Capacity; - bool Owns = true; + void *fBeginX; + Size_T fSize = 0; + Size_T fCapacity; + bool fOwns = true; /// The maximum value of the Size_T used. static constexpr size_t SizeTypeMax() { return std::numeric_limits::max(); } SmallVectorBase() = delete; - SmallVectorBase(void *FirstEl, size_t TotalCapacity) : BeginX(FirstEl), Capacity(TotalCapacity) {} + SmallVectorBase(void *FirstEl, size_t TotalCapacity) : fBeginX(FirstEl), fCapacity(TotalCapacity) {} /// This is an implementation of the grow() method which only works /// on POD-like data types and is out of line to reduce code duplication. @@ -167,7 +168,7 @@ protected: public: size_t size() const { return fSize; } - size_t capacity() const noexcept { return Capacity; } + size_t capacity() const noexcept { return fCapacity; } R__RVEC_NODISCARD bool empty() const { return !fSize; } @@ -226,15 +227,15 @@ protected: /// Return true if this is a smallvector which has not had dynamic /// memory allocated for it. - bool isSmall() const { return this->BeginX == getFirstEl(); } + bool isSmall() const { return this->fBeginX == getFirstEl(); } /// Put this vector in a state of being small. void resetToSmall() { - this->BeginX = getFirstEl(); + this->fBeginX = getFirstEl(); // from the original LLVM implementation: - // FIXME: Setting Capacity to 0 is suspect. - this->fSize = this->Capacity = 0; + // FIXME: Setting fCapacity to 0 is suspect. + this->fSize = this->fCapacity = 0; } public: @@ -257,9 +258,9 @@ public: using Base::size; // forward iterator creation methods. - iterator begin() noexcept { return (iterator)this->BeginX; } - const_iterator begin() const noexcept { return (const_iterator)this->BeginX; } - const_iterator cbegin() const noexcept { return (const_iterator)this->BeginX; } + iterator begin() noexcept { return (iterator)this->fBeginX; } + const_iterator begin() const noexcept { return (const_iterator)this->fBeginX; } + const_iterator cbegin() const noexcept { return (const_iterator)this->fBeginX; } iterator end() noexcept { return begin() + size(); } const_iterator end() const noexcept { return begin() + size(); } const_iterator cend() const noexcept { return begin() + size(); } @@ -397,7 +398,7 @@ void SmallVectorTemplateBase::grow(size_t MinSize) // Move the elements over. this->uninitialized_move(this->begin(), this->end(), NewElts); - if (this->Owns) { + if (this->fOwns) { // Destroy the original elements. destroy_range(this->begin(), this->end()); @@ -406,9 +407,9 @@ void SmallVectorTemplateBase::grow(size_t MinSize) free(this->begin()); } - this->BeginX = NewElts; - this->Capacity = NewCapacity; - this->Owns = true; + this->fBeginX = NewElts; + this->fCapacity = NewCapacity; + this->fOwns = true; } /// SmallVectorTemplateBase - This is where we put @@ -463,7 +464,7 @@ protected: void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); - this->Owns = true; + this->fOwns = true; } public: @@ -506,14 +507,14 @@ public: { // Subclass has already destructed this vector's elements. // If this wasn't grown from the inline copy, deallocate the old space. - if (!this->isSmall() && this->Owns) + if (!this->isSmall() && this->fOwns) free(this->begin()); } // also give up adopted memory if applicable void clear() { - if (this->Owns) { + if (this->fOwns) { this->destroy_range(this->begin(), this->end()); this->fSize = 0; } else { @@ -524,7 +525,7 @@ public: void resize(size_type N) { if (N < this->size()) { - if (this->Owns) + if (this->fOwns) this->destroy_range(this->begin() + N, this->end()); this->set_size(N); } else if (N > this->size()) { @@ -539,7 +540,7 @@ public: void resize(size_type N, const T &NV) { if (N < this->size()) { - if (this->Owns) + if (this->fOwns) this->destroy_range(this->begin() + N, this->end()); this->set_size(N); } else if (N > this->size()) { @@ -559,7 +560,7 @@ public: void pop_back_n(size_type NumItems) { assert(this->size() >= NumItems); - if (this->Owns) + if (this->fOwns) this->destroy_range(this->end() - NumItems, this->end()); this->set_size(this->size() - NumItems); } @@ -657,7 +658,7 @@ public: // Shift all elts down. iterator I = std::move(E, this->end(), S); // Drop the last elts. - if (this->Owns) + if (this->fOwns) this->destroy_range(I, this->end()); this->set_size(I - this->begin()); return (N); @@ -881,10 +882,10 @@ void SmallVectorImpl::swap(SmallVectorImpl &RHS) // We can only avoid copying elements if neither vector is small. if (!this->isSmall() && !RHS.isSmall()) { - std::swap(this->BeginX, RHS.BeginX); + std::swap(this->fBeginX, RHS.fBeginX); std::swap(this->fSize, RHS.fSize); - std::swap(this->Capacity, RHS.Capacity); - std::swap(this->Owns, RHS.Owns); + std::swap(this->fCapacity, RHS.fCapacity); + std::swap(this->fOwns, RHS.fOwns); return; } if (RHS.size() > this->capacity()) @@ -904,14 +905,14 @@ void SmallVectorImpl::swap(SmallVectorImpl &RHS) size_t EltDiff = this->size() - RHS.size(); this->uninitialized_copy(this->begin() + NumShared, this->end(), RHS.end()); RHS.set_size(RHS.size() + EltDiff); - if (this->Owns) + if (this->fOwns) this->destroy_range(this->begin() + NumShared, this->end()); this->set_size(NumShared); } else if (RHS.size() > this->size()) { size_t EltDiff = RHS.size() - this->size(); this->uninitialized_copy(RHS.begin() + NumShared, RHS.end(), this->end()); this->set_size(this->size() + EltDiff); - if (RHS.Owns) + if (RHS.fOwns) this->destroy_range(RHS.begin() + NumShared, RHS.end()); RHS.set_size(NumShared); } @@ -937,7 +938,7 @@ SmallVectorImpl &SmallVectorImpl::operator=(const SmallVectorImpl &RHS) NewEnd = this->begin(); // Destroy excess elements. - if (this->Owns) + if (this->fOwns) this->destroy_range(NewEnd, this->end()); // Trim. @@ -950,7 +951,7 @@ SmallVectorImpl &SmallVectorImpl::operator=(const SmallVectorImpl &RHS) // From the original LLVM implementation: // FIXME: don't do this if they're efficiently moveable. if (this->capacity() < RHSSize) { - if (this->Owns) { + if (this->fOwns) { // Destroy current elements. this->destroy_range(this->begin(), this->end()); } @@ -979,15 +980,15 @@ SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) // If the RHS isn't small, clear this vector and then steal its buffer. if (!RHS.isSmall()) { - if (this->Owns) { + if (this->fOwns) { this->destroy_range(this->begin(), this->end()); if (!this->isSmall()) free(this->begin()); } - this->BeginX = RHS.BeginX; + this->fBeginX = RHS.fBeginX; this->fSize = RHS.fSize; - this->Capacity = RHS.Capacity; - this->Owns = RHS.Owns; + this->fCapacity = RHS.fCapacity; + this->fOwns = RHS.fOwns; RHS.resetToSmall(); return *this; } @@ -1003,7 +1004,7 @@ SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) NewEnd = std::move(RHS.begin(), RHS.end(), NewEnd); // Destroy excess elements and trim the bounds. - if (this->Owns) + if (this->fOwns) this->destroy_range(NewEnd, this->end()); this->set_size(RHSSize); @@ -1019,7 +1020,7 @@ SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) // FIXME: this may not actually make any sense if we can efficiently move // elements. if (this->capacity() < RHSSize) { - if (this->Owns) { + if (this->fOwns) { // Destroy current elements. this->destroy_range(this->begin(), this->end()); } @@ -1236,7 +1237,7 @@ public: ~RVec() { - if (this->Owns) { + if (this->fOwns) { // Destroy the constructed elements in the vector. this->destroy_range(this->begin(), this->end()); } @@ -1291,10 +1292,10 @@ public: RVec(T* p, size_t n) : Internal::VecOps::SmallVectorImpl(N) { - this->BeginX = p; + this->fBeginX = p; this->fSize = n; - this->Capacity = n; - this->Owns = false; + this->fCapacity = n; + this->fOwns = false; } RVec &operator=(Internal::VecOps::SmallVectorImpl &&RHS) diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index 2dd5c8e22abb0..610e911c04a93 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -61,18 +61,18 @@ void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, si NewCapacity = std::min(std::max(NewCapacity, MinSize), SizeTypeMax()); void *NewElts; - if (BeginX == FirstEl) { + if (fBeginX == FirstEl) { NewElts = malloc(NewCapacity * TSize); // Copy the elements over. No need to run dtors on PODs. - memcpy(NewElts, this->BeginX, size() * TSize); + memcpy(NewElts, this->fBeginX, size() * TSize); } else { // If this wasn't grown from the inline copy, grow the allocated space. - NewElts = realloc(this->BeginX, NewCapacity * TSize); + NewElts = realloc(this->fBeginX, NewCapacity * TSize); } - this->BeginX = NewElts; - this->Capacity = NewCapacity; + this->fBeginX = NewElts; + this->fCapacity = NewCapacity; } template class ROOT::Internal::VecOps::SmallVectorBase; From f83bf89b220a2bf2c7f5d525a601654730bab81a Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 14:59:30 +0200 Subject: [PATCH 220/577] [VecOps] Rename Internal::SmallVectorImpl => Detail::RVecImpl We will expose RVec's base class that erases the small-size template parameter to expert users. --- math/vecops/inc/ROOT/RVec.hxx | 96 +++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index a21cf0d51c71f..dcd99c14e87ca 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -484,11 +484,31 @@ public: void pop_back() { this->set_size(this->size() - 1); } }; +/// Storage for the SmallVector elements. This is specialized for the N=0 case +/// to avoid allocating unnecessary storage. +template +struct SmallVectorStorage { + alignas(T) char InlineElts[N * sizeof(T)]; +}; + +/// We need the storage to be properly aligned even for small-size of 0 so that +/// the pointer math in \a SmallVectorTemplateCommon::getFirstEl() is +/// well-defined. +template +struct alignas(T) SmallVectorStorage { +}; + +} // namespace VecOps +} // namespace Internal + +namespace Detail { +namespace VecOps { + /// This class consists of common code factored out of the SmallVector class to /// reduce code duplication based on the SmallVector 'N' template parameter. template -class SmallVectorImpl : public SmallVectorTemplateBase { - using SuperClass = SmallVectorTemplateBase; +class RVecImpl : public Internal::VecOps::SmallVectorTemplateBase { + using SuperClass = Internal::VecOps::SmallVectorTemplateBase; public: using iterator = typename SuperClass::iterator; @@ -498,12 +518,12 @@ public: protected: // Default ctor - Initialize to empty. - explicit SmallVectorImpl(unsigned N) : SmallVectorTemplateBase(N) {} + explicit RVecImpl(unsigned N) : Internal::VecOps::SmallVectorTemplateBase(N) {} public: - SmallVectorImpl(const SmallVectorImpl &) = delete; + RVecImpl(const RVecImpl &) = delete; - ~SmallVectorImpl() + ~RVecImpl() { // Subclass has already destructed this vector's elements. // If this wasn't grown from the inline copy, deallocate the old space. @@ -572,7 +592,7 @@ public: return Result; } - void swap(SmallVectorImpl &RHS); + void swap(RVecImpl &RHS); /// Add the specified range to the end of the SmallVector. template back(); } - SmallVectorImpl &operator=(const SmallVectorImpl &RHS); + RVecImpl &operator=(const RVecImpl &RHS); - SmallVectorImpl &operator=(SmallVectorImpl &&RHS); + RVecImpl &operator=(RVecImpl &&RHS); - bool operator==(const SmallVectorImpl &RHS) const + bool operator==(const RVecImpl &RHS) const { if (this->size() != RHS.size()) return false; return std::equal(this->begin(), this->end(), RHS.begin()); } - bool operator!=(const SmallVectorImpl &RHS) const { return !(*this == RHS); } + bool operator!=(const RVecImpl &RHS) const { return !(*this == RHS); } - bool operator<(const SmallVectorImpl &RHS) const + bool operator<(const RVecImpl &RHS) const { return std::lexicographical_compare(this->begin(), this->end(), RHS.begin(), RHS.end()); } }; template -void SmallVectorImpl::swap(SmallVectorImpl &RHS) +void RVecImpl::swap(RVecImpl &RHS) { if (this == &RHS) return; @@ -919,7 +939,7 @@ void SmallVectorImpl::swap(SmallVectorImpl &RHS) } template -SmallVectorImpl &SmallVectorImpl::operator=(const SmallVectorImpl &RHS) +RVecImpl &RVecImpl::operator=(const RVecImpl &RHS) { // Avoid self-assignment. if (this == &RHS) @@ -972,7 +992,7 @@ SmallVectorImpl &SmallVectorImpl::operator=(const SmallVectorImpl &RHS) } template -SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) +RVecImpl &RVecImpl::operator=(RVecImpl &&RHS) { // Avoid self-assignment. if (this == &RHS) @@ -1041,22 +1061,8 @@ SmallVectorImpl &SmallVectorImpl::operator=(SmallVectorImpl &&RHS) RHS.clear(); return *this; } - -/// Storage for the SmallVector elements. This is specialized for the N=0 case -/// to avoid allocating unnecessary storage. -template -struct SmallVectorStorage { - alignas(T) char InlineElts[N * sizeof(T)]; -}; - -/// We need the storage to be properly aligned even for small-size of 0 so that -/// the pointer math in \a SmallVectorTemplateCommon::getFirstEl() is -/// well-defined. -template -struct alignas(T) SmallVectorStorage { -}; } // namespace VecOps -} // namespace Internal +} // namespace Detail namespace VecOps { // Note that we open here with @{ the Doxygen group vecops and it is @@ -1230,10 +1236,10 @@ hpt->Draw(); // Note that this does not attempt to be exception safe. template -class RVec : public Internal::VecOps::SmallVectorImpl, Internal::VecOps::SmallVectorStorage { +class RVec : public Detail::VecOps::RVecImpl, Internal::VecOps::SmallVectorStorage { public: static constexpr unsigned N = 8; - RVec() : Internal::VecOps::SmallVectorImpl(N) {} + RVec() : Detail::VecOps::RVecImpl(N) {} ~RVec() { @@ -1243,7 +1249,7 @@ public: } } - explicit RVec(size_t Size, const T &Value = T()) : Internal::VecOps::SmallVectorImpl(N) + explicit RVec(size_t Size, const T &Value = T()) : Detail::VecOps::RVecImpl(N) { this->assign(Size, Value); } @@ -1251,46 +1257,46 @@ public: template ::iterator_category, std::input_iterator_tag>::value>::type> - RVec(ItTy S, ItTy E) : Internal::VecOps::SmallVectorImpl(N) + RVec(ItTy S, ItTy E) : Detail::VecOps::RVecImpl(N) { this->append(S, E); } - RVec(std::initializer_list IL) : Internal::VecOps::SmallVectorImpl(N) { this->assign(IL); } + RVec(std::initializer_list IL) : Detail::VecOps::RVecImpl(N) { this->assign(IL); } - RVec(const RVec &RHS) : Internal::VecOps::SmallVectorImpl(N) + RVec(const RVec &RHS) : Detail::VecOps::RVecImpl(N) { if (!RHS.empty()) - Internal::VecOps::SmallVectorImpl::operator=(RHS); + Detail::VecOps::RVecImpl::operator=(RHS); } RVec &operator=(const RVec &RHS) { - Internal::VecOps::SmallVectorImpl::operator=(RHS); + Detail::VecOps::RVecImpl::operator=(RHS); return *this; } - RVec(RVec &&RHS) : Internal::VecOps::SmallVectorImpl(N) + RVec(RVec &&RHS) : Detail::VecOps::RVecImpl(N) { if (!RHS.empty()) - Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); } - RVec(Internal::VecOps::SmallVectorImpl &&RHS) : Internal::VecOps::SmallVectorImpl(N) + RVec(Detail::VecOps::RVecImpl &&RHS) : Detail::VecOps::RVecImpl(N) { if (!RHS.empty()) - Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); } RVec(const std::vector &RHS) : RVec(RHS.begin(), RHS.end()) {} RVec &operator=(RVec &&RHS) { - Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); return *this; } - RVec(T* p, size_t n) : Internal::VecOps::SmallVectorImpl(N) + RVec(T* p, size_t n) : Detail::VecOps::RVecImpl(N) { this->fBeginX = p; this->fSize = n; @@ -1298,9 +1304,9 @@ public: this->fOwns = false; } - RVec &operator=(Internal::VecOps::SmallVectorImpl &&RHS) + RVec &operator=(Detail::VecOps::RVecImpl &&RHS) { - Internal::VecOps::SmallVectorImpl::operator=(::std::move(RHS)); + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); return *this; } From 50e41ed1103c5ea792c005dc763e531619c391c3 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 17:25:18 +0200 Subject: [PATCH 221/577] [VecOps][NFC] Take advantage of local aliases to make code less verbose --- math/vecops/inc/ROOT/RVec.hxx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index dcd99c14e87ca..2d8bc5198ecdd 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1319,6 +1319,7 @@ public: using reference = typename Internal::VecOps::SmallVectorTemplateCommon::reference; using const_reference = typename Internal::VecOps::SmallVectorTemplateCommon::const_reference; using size_type = typename Internal::VecOps::SmallVectorTemplateCommon::size_type; + using value_type = typename Internal::VecOps::SmallVectorTemplateCommon::value_type; using Internal::VecOps::SmallVectorTemplateCommon::begin; using Internal::VecOps::SmallVectorTemplateCommon::size; @@ -1356,31 +1357,30 @@ public: return RVec(this->begin(), this->end()); } - // from the original LLVM implementation: - // FIXME find a less verbose way - typename Internal::VecOps::SmallVectorTemplateCommon::reference at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos) + reference at(size_type pos) { if (pos >= this->fSize) throw std::out_of_range("RVec"); return this->operator[](pos); } - typename Internal::VecOps::SmallVectorTemplateCommon::const_reference at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos) const + + const_reference at(size_type pos) const { if (pos >= this->fSize) throw std::out_of_range("RVec"); return this->operator[](pos); } + /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - typename Internal::VecOps::SmallVectorTemplateCommon::value_type - at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos, typename Internal::VecOps::SmallVectorTemplateCommon::value_type fallback) + value_type at(size_type pos, value_type fallback) { if (pos >= this->fSize) return fallback; return this->operator[](pos); } + /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - typename Internal::VecOps::SmallVectorTemplateCommon::value_type - at(typename Internal::VecOps::SmallVectorTemplateCommon::size_type pos, typename Internal::VecOps::SmallVectorTemplateCommon::value_type fallback) const + value_type at(size_type pos, value_type fallback) const { if (pos >= this->fSize) return fallback; From 7d48d8319f0baf8feb227e1051b3a4479c2bb313 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 17:01:32 +0200 Subject: [PATCH 222/577] [VecOps] Always use int32_t as size type for RVec LLVM SmallVector uses uint64_t for value types with small size and uint32_t otherwise. For RVec, we need signed-ness of the size type to give special meaning to fCapacity == -1 (it will signal the RVec is in "memory adoption" mode) and we don't expect to ever need more than the maximum size allowed by int32_t (i.e. we don't need to switch to int64_t for small value types). --- math/vecops/inc/ROOT/RVec.hxx | 25 +++++++++++++------------ math/vecops/src/RVec.cxx | 26 +++----------------------- 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 2d8bc5198ecdd..0a85ba6f2d984 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -140,11 +140,13 @@ inline uint64_t NextPowerOf2(uint64_t A) /// Using 64 bit size is desirable for cases like SmallVector, where a /// 32 bit size would limit the vector to ~4GB. SmallVectors are used for /// buffering bitcode output - which can exceed 4GB. -template class SmallVectorBase { +public: + using Size_T = int32_t; + protected: void *fBeginX; - Size_T fSize = 0; + Size_T fSize = 0; // never negative even if type is signed Size_T fCapacity; bool fOwns = true; @@ -193,13 +195,10 @@ public: void shrink_to_fit() { } }; -template -using SmallVectorSizeType = typename std::conditional= 8, uint64_t, uint32_t>::type; - /// Figure out the offset of the first element. template struct SmallVectorAlignmentAndSize { - alignas(SmallVectorBase>) char Base[sizeof(SmallVectorBase>)]; + alignas(SmallVectorBase) char Base[sizeof(SmallVectorBase)]; alignas(T) char FirstEl[sizeof(T)]; }; @@ -207,8 +206,8 @@ struct SmallVectorAlignmentAndSize { /// the type T is a POD. The extra dummy template argument is used by ArrayRef /// to avoid unnecessarily requiring T to be complete. template -class SmallVectorTemplateCommon : public SmallVectorBase> { - using Base = SmallVectorBase>; +class SmallVectorTemplateCommon : public SmallVectorBase { + using Base = SmallVectorBase; /// Find the address of the first element. For this pointer math to be valid /// with small-size of 0 for T with lots of alignment, it's important that @@ -239,6 +238,8 @@ protected: } public: + // note that fSize is a _signed_ integer, but we expose it as an unsigned integer for consistency with STL containers + // as well as backward-compatibility using size_type = size_t; using difference_type = ptrdiff_t; using value_type = T; @@ -1359,14 +1360,14 @@ public: reference at(size_type pos) { - if (pos >= this->fSize) + if (pos >= size_type(this->fSize)) throw std::out_of_range("RVec"); return this->operator[](pos); } const_reference at(size_type pos) const { - if (pos >= this->fSize) + if (pos >= size_type(this->fSize)) throw std::out_of_range("RVec"); return this->operator[](pos); } @@ -1374,7 +1375,7 @@ public: /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. value_type at(size_type pos, value_type fallback) { - if (pos >= this->fSize) + if (pos >= size_type(this->fSize)) return fallback; return this->operator[](pos); } @@ -1382,7 +1383,7 @@ public: /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. value_type at(size_type pos, value_type fallback) const { - if (pos >= this->fSize) + if (pos >= size_type(this->fSize)) return fallback; return this->operator[](pos); } diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index 610e911c04a93..bb2829baea554 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -24,24 +24,21 @@ static_assert(sizeof(SmallVector) == sizeof(void *) * 2 + sizeof(void * "1 byte elements have word-sized type for size and capacity"); ************/ -template -void ROOT::Internal::VecOps::SmallVectorBase::report_size_overflow(size_t MinSize) +void ROOT::Internal::VecOps::SmallVectorBase::report_size_overflow(size_t MinSize) { std::string Reason = "RVec unable to grow. Requested capacity (" + std::to_string(MinSize) + ") is larger than maximum value for size type (" + std::to_string(SizeTypeMax()) + ")"; throw std::length_error(Reason); } -template -void ROOT::Internal::VecOps::SmallVectorBase::report_at_maximum_capacity() +void ROOT::Internal::VecOps::SmallVectorBase::report_at_maximum_capacity() { std::string Reason = "RVec capacity unable to grow. Already at maximum size " + std::to_string(SizeTypeMax()); throw std::length_error(Reason); } // Note: Moving this function into the header may cause performance regression. -template -void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSize) +void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, size_t MinSize, size_t TSize) { // Ensure we can fit the new capacity. // This is only going to be applicable when the capacity is 32 bit. @@ -75,23 +72,6 @@ void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, si this->fCapacity = NewCapacity; } -template class ROOT::Internal::VecOps::SmallVectorBase; - -// Disable the uint64_t instantiation for 32-bit builds. -// Both uint32_t and uint64_t instantations are needed for 64-bit builds. -// This instantiation will never be used in 32-bit builds, and will cause -// warnings when sizeof(Size_T) > sizeof(size_t). -#if SIZE_MAX > UINT32_MAX -template class ROOT::Internal::VecOps::SmallVectorBase; - -// Assertions to ensure this #if stays in sync with SmallVectorSizeType. -static_assert(sizeof(ROOT::Internal::VecOps::SmallVectorSizeType) == sizeof(uint64_t), - "Expected SmallVectorBase variant to be in use."); -#else -static_assert(sizeof(ROOT::Internal::VecOps::SmallVectorSizeType) == sizeof(uint32_t), - "Expected SmallVectorBase variant to be in use."); -#endif - #if (_VECOPS_USE_EXTERN_TEMPLATES) namespace ROOT { From 98ff602d5095f64a23fc2b12b22f561378b3515c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 18:29:50 +0200 Subject: [PATCH 223/577] [VecOps] Use fCapacity == -1 to indicate memory adoption mode --- math/vecops/inc/ROOT/RVec.hxx | 48 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 0a85ba6f2d984..3351d3a3c8486 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -146,9 +146,11 @@ public: protected: void *fBeginX; - Size_T fSize = 0; // never negative even if type is signed + /// Always >= 0. + // Type is signed only for consistency with fCapacity. + Size_T fSize = 0; + /// Always >= -1. fCapacity == -1 indicates the RVec is in "memory adoption" mode. Size_T fCapacity; - bool fOwns = true; /// The maximum value of the Size_T used. static constexpr size_t SizeTypeMax() { return std::numeric_limits::max(); } @@ -168,9 +170,12 @@ protected: /// std::length_error or calls report_fatal_error. static void report_at_maximum_capacity(); + /// If true, the RVec is in "memory adoption" mode, i.e. it is acting as a view on a memory buffer it does not own. + bool Owns() const { return fCapacity != -1; } + public: size_t size() const { return fSize; } - size_t capacity() const noexcept { return fCapacity; } + size_t capacity() const noexcept { return Owns() ? fCapacity : fSize; } R__RVEC_NODISCARD bool empty() const { return !fSize; } @@ -399,7 +404,7 @@ void SmallVectorTemplateBase::grow(size_t MinSize) // Move the elements over. this->uninitialized_move(this->begin(), this->end(), NewElts); - if (this->fOwns) { + if (this->Owns()) { // Destroy the original elements. destroy_range(this->begin(), this->end()); @@ -410,7 +415,6 @@ void SmallVectorTemplateBase::grow(size_t MinSize) this->fBeginX = NewElts; this->fCapacity = NewCapacity; - this->fOwns = true; } /// SmallVectorTemplateBase - This is where we put @@ -465,7 +469,6 @@ protected: void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); - this->fOwns = true; } public: @@ -528,14 +531,14 @@ public: { // Subclass has already destructed this vector's elements. // If this wasn't grown from the inline copy, deallocate the old space. - if (!this->isSmall() && this->fOwns) + if (!this->isSmall() && this->Owns()) free(this->begin()); } // also give up adopted memory if applicable void clear() { - if (this->fOwns) { + if (this->Owns()) { this->destroy_range(this->begin(), this->end()); this->fSize = 0; } else { @@ -546,7 +549,7 @@ public: void resize(size_type N) { if (N < this->size()) { - if (this->fOwns) + if (this->Owns()) this->destroy_range(this->begin() + N, this->end()); this->set_size(N); } else if (N > this->size()) { @@ -561,7 +564,7 @@ public: void resize(size_type N, const T &NV) { if (N < this->size()) { - if (this->fOwns) + if (this->Owns()) this->destroy_range(this->begin() + N, this->end()); this->set_size(N); } else if (N > this->size()) { @@ -581,7 +584,7 @@ public: void pop_back_n(size_type NumItems) { assert(this->size() >= NumItems); - if (this->fOwns) + if (this->Owns()) this->destroy_range(this->end() - NumItems, this->end()); this->set_size(this->size() - NumItems); } @@ -679,7 +682,7 @@ public: // Shift all elts down. iterator I = std::move(E, this->end(), S); // Drop the last elts. - if (this->fOwns) + if (this->Owns()) this->destroy_range(I, this->end()); this->set_size(I - this->begin()); return (N); @@ -906,7 +909,6 @@ void RVecImpl::swap(RVecImpl &RHS) std::swap(this->fBeginX, RHS.fBeginX); std::swap(this->fSize, RHS.fSize); std::swap(this->fCapacity, RHS.fCapacity); - std::swap(this->fOwns, RHS.fOwns); return; } if (RHS.size() > this->capacity()) @@ -926,14 +928,14 @@ void RVecImpl::swap(RVecImpl &RHS) size_t EltDiff = this->size() - RHS.size(); this->uninitialized_copy(this->begin() + NumShared, this->end(), RHS.end()); RHS.set_size(RHS.size() + EltDiff); - if (this->fOwns) + if (this->Owns()) this->destroy_range(this->begin() + NumShared, this->end()); this->set_size(NumShared); } else if (RHS.size() > this->size()) { size_t EltDiff = RHS.size() - this->size(); this->uninitialized_copy(RHS.begin() + NumShared, RHS.end(), this->end()); this->set_size(this->size() + EltDiff); - if (RHS.fOwns) + if (RHS.Owns()) this->destroy_range(RHS.begin() + NumShared, RHS.end()); RHS.set_size(NumShared); } @@ -959,7 +961,7 @@ RVecImpl &RVecImpl::operator=(const RVecImpl &RHS) NewEnd = this->begin(); // Destroy excess elements. - if (this->fOwns) + if (this->Owns()) this->destroy_range(NewEnd, this->end()); // Trim. @@ -972,7 +974,7 @@ RVecImpl &RVecImpl::operator=(const RVecImpl &RHS) // From the original LLVM implementation: // FIXME: don't do this if they're efficiently moveable. if (this->capacity() < RHSSize) { - if (this->fOwns) { + if (this->Owns()) { // Destroy current elements. this->destroy_range(this->begin(), this->end()); } @@ -1001,7 +1003,7 @@ RVecImpl &RVecImpl::operator=(RVecImpl &&RHS) // If the RHS isn't small, clear this vector and then steal its buffer. if (!RHS.isSmall()) { - if (this->fOwns) { + if (this->Owns()) { this->destroy_range(this->begin(), this->end()); if (!this->isSmall()) free(this->begin()); @@ -1009,7 +1011,6 @@ RVecImpl &RVecImpl::operator=(RVecImpl &&RHS) this->fBeginX = RHS.fBeginX; this->fSize = RHS.fSize; this->fCapacity = RHS.fCapacity; - this->fOwns = RHS.fOwns; RHS.resetToSmall(); return *this; } @@ -1025,7 +1026,7 @@ RVecImpl &RVecImpl::operator=(RVecImpl &&RHS) NewEnd = std::move(RHS.begin(), RHS.end(), NewEnd); // Destroy excess elements and trim the bounds. - if (this->fOwns) + if (this->Owns()) this->destroy_range(NewEnd, this->end()); this->set_size(RHSSize); @@ -1041,7 +1042,7 @@ RVecImpl &RVecImpl::operator=(RVecImpl &&RHS) // FIXME: this may not actually make any sense if we can efficiently move // elements. if (this->capacity() < RHSSize) { - if (this->fOwns) { + if (this->Owns()) { // Destroy current elements. this->destroy_range(this->begin(), this->end()); } @@ -1244,7 +1245,7 @@ public: ~RVec() { - if (this->fOwns) { + if (this->Owns()) { // Destroy the constructed elements in the vector. this->destroy_range(this->begin(), this->end()); } @@ -1301,8 +1302,7 @@ public: { this->fBeginX = p; this->fSize = n; - this->fCapacity = n; - this->fOwns = false; + this->fCapacity = -1; } RVec &operator=(Detail::VecOps::RVecImpl &&RHS) From 34c279c54bd179c6c23aff727a083760fdfe0f17 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 18:45:02 +0200 Subject: [PATCH 224/577] [VecOps] Prefer throws to asserts in non-hot methods In operator[], prefer `R__ASSERT` to `assert` for consistency. --- math/vecops/inc/ROOT/RVec.hxx | 62 ++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 3351d3a3c8486..dff7e1b600785 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -48,7 +48,6 @@ #include #include -#include #include #include // for inner_product #include @@ -190,7 +189,9 @@ public: /// which will only be overwritten. void set_size(size_t N) { - assert(N <= capacity()); + if (N > capacity()) { + throw std::runtime_error("Setting size to a value greater than capacity."); + } fSize = N; } @@ -291,23 +292,33 @@ public: reference front() { - assert(!empty()); + if (empty()) { + throw std::runtime_error("`front` called on an empty RVec"); + } return begin()[0]; } + const_reference front() const { - assert(!empty()); + if (empty()) { + throw std::runtime_error("`front` called on an empty RVec"); + } return begin()[0]; } reference back() { - assert(!empty()); + if (empty()) { + throw std::runtime_error("`back` called on an empty RVec"); + } return end()[-1]; } + const_reference back() const { - assert(!empty()); + if (empty()) { + throw std::runtime_error("`back` called on an empty RVec"); + } return end()[-1]; } }; @@ -583,7 +594,9 @@ public: void pop_back_n(size_type NumItems) { - assert(this->size() >= NumItems); + if (this->size() < NumItems) { + throw std::runtime_error("Popping back more elements than those available."); + } if (this->Owns()) this->destroy_range(this->end() - NumItems, this->end()); this->set_size(this->size() - NumItems); @@ -657,8 +670,9 @@ public: // Just cast away constness because this is a non-const member function. iterator I = const_cast(CI); - assert(I >= this->begin() && "Iterator to erase is out of bounds."); - assert(I < this->end() && "Erasing at past-the-end iterator."); + if (I < this->begin() || I >= this->end()) { + throw std::runtime_error("The iterator passed to `erase` is out of bounds."); + } iterator N = I; // Shift all elts down one. @@ -674,9 +688,9 @@ public: iterator S = const_cast(CS); iterator E = const_cast(CE); - assert(S >= this->begin() && "Range to erase is out of bounds."); - assert(S <= E && "Trying to erase invalid range."); - assert(E <= this->end() && "Trying to erase past the end."); + if (S < this->begin() || E > this->end() || S > E) { + throw std::runtime_error("Invalid start/end pair passed to `erase` (out of bounds or start > end)."); + } iterator N = S; // Shift all elts down. @@ -695,8 +709,9 @@ public: return this->end() - 1; } - assert(I >= this->begin() && "Insertion iterator is out of bounds."); - assert(I <= this->end() && "Inserting past the end of the vector."); + if (I < this->begin() || I > this->end()) { + throw std::runtime_error("The iterator passed to `insert` is out of bounds."); + } if (this->size() >= this->capacity()) { size_t EltNo = I - this->begin(); @@ -726,8 +741,9 @@ public: return this->end() - 1; } - assert(I >= this->begin() && "Insertion iterator is out of bounds."); - assert(I <= this->end() && "Inserting past the end of the vector."); + if (I < this->begin() || I > this->end()) { + throw std::runtime_error("The iterator passed to `insert` is out of bounds."); + } if (this->size() >= this->capacity()) { size_t EltNo = I - this->begin(); @@ -759,8 +775,9 @@ public: return this->begin() + InsertElt; } - assert(I >= this->begin() && "Insertion iterator is out of bounds."); - assert(I <= this->end() && "Inserting past the end of the vector."); + if (I < this->begin() || I > this->end()) { + throw std::runtime_error("The iterator passed to `insert` is out of bounds."); + } // Ensure there is enough space. reserve(this->size() + NumToInsert); @@ -813,8 +830,9 @@ public: return this->begin() + InsertElt; } - assert(I >= this->begin() && "Insertion iterator is out of bounds."); - assert(I <= this->end() && "Inserting past the end of the vector."); + if (I < this->begin() || I > this->end()) { + throw std::runtime_error("The iterator passed to `insert` is out of bounds."); + } size_t NumToInsert = std::distance(From, To); @@ -1326,12 +1344,12 @@ public: reference operator[](size_type idx) { - assert(idx < size()); + R__ASSERT(idx < size()); return begin()[idx]; } const_reference operator[](size_type idx) const { - assert(idx < size()); + R__ASSERT(idx < size()); return begin()[idx]; } From 79d9b2204488b8755e9de65e0ab1691bfef5c31c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 15 Jun 2021 19:11:35 +0200 Subject: [PATCH 225/577] [VecOps][NFC] Add math/vecops/ARCHITECTURE.md This document is meant for ROOT developers, to quickly get their bearings around the VecOps library. See https://matklad.github.io/2021/02/06/ARCHITECTURE.md.html for more motivation. --- math/vecops/ARCHITECTURE.md | 103 ++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 math/vecops/ARCHITECTURE.md diff --git a/math/vecops/ARCHITECTURE.md b/math/vecops/ARCHITECTURE.md new file mode 100644 index 0000000000000..3592032fdf9c2 --- /dev/null +++ b/math/vecops/ARCHITECTURE.md @@ -0,0 +1,103 @@ +# Architecture of the VecOps library + +> This document is meant for ROOT developers, to quickly get their bearings around the VecOps library. + +The main type in the library is `RVec`. Besides `RVec`, the library only contains helper types and functions. + +`RVec` is a vector type that tries to be as `std::vector`-like as possible while adding a +few important features, namely: +- the ability to act as a view over an existing memory buffer (see "Memory adoption" below) +- a small-buffer optimization +- vectorized operator overloads +- a vectorized `operator[](mask)` to allow quick element selection together with vectorized operators + (e.g. `etas[etas > k]` returns a new `RVec` with all elements greater than `k`) +- helper functions such as `InvariantMass`, `DeltaR`, `Argsort` are also provided + +The current implementation of `RVec` is based on LLVM's SmallVector, extracted +from the head of LLVM's repo around December 2020. +We are not tracking the upstream implementation. + +Compared to LLVM's SmallVectors: + +- memory adoption capabilities have been added +- patches have been applied to make RVec work with (ROOT's version of) cppyy (notably `using` declarations had to be + lowered in the inheritance hierarchy for cppyy to pick them up) +- `operator[](mask)` has been added, as well as several other "numpy-like" helper + functions (these latter ones are free functions) +- logical operators `==`, `<`, `>` etc. return vectors rather than booleans +- the type of fSize and fCapacity is signed rather than unsigned, and fixed to 32 bits +- a number of minor patches have been applied for backward compatibility with the previous + implementation of RVec (which did not have a small buffer optimization and was implemented + in terms of `std::vector` with a custom allocator) and to make the code more consistent + with ROOT's coding conventions + +## RVec design + +`SmallVectorBase` + - `fBeginX` + - `fSize` + - `fCapacity` + + Basically the same as the corresponding LLVM class, with the template parameter removed: LLVM's SmallVectorBase + is templated over the type of fSize and fCapacity. It contains the parts of `RVec` that do not depend on the value + type. + No other classes in the hierarchy can contain data members! We expect the memory after `SmallVectorBase` to be + occupied by the small inline buffer. + +`SmallVectorTemplateCommon` + - `getFirstEl()`: returns the address of the beginning of the small buffer + - `begin()`, `end()`, `front()`, `back()`, etc. + + Basically the same as the corresponding LLVM class. + It contains the parts that are independent of whether T is a POD or not. + +`SmallVectorTemplateBase` and the specialization `SmallVectorTemplateBase` + - `grow()`, `uninitialized_copy`, `uninitialized_move`, `push_back()`, `pop_back()` + + This class contains the parts of `RVec` that can be optimized for trivially copiable types. + In particular, destruction can be skipped and memcpy can be used in place of copy/move construction. + These optimizations are inherited from LLVM's SmallVector. + +`RVecImpl` + The analogous of LLVM's `SmallVectorImpl`, it factors out of `RVec` the parts that are independent of + the small buffer size, to limit the amount of code generated and provide a way to slice the small buffer + size when passing around `RVec` objects. + +`RVec>` + It aggregates `RVecImpl` and `SmallVectorStorage` (see below) through public inheritance. + `N` is the small buffer size and defaults to a sensible value that depends on `sizeof(T)`. + We expect most users to use the default and only rarely tweak the small buffer size. + +### Helper types + +- `SmallVectorAlignmentAndSize`: used to figure out the offset of the first small-buffer element in + `SmallVectorTemplateCommon::getFirstEl` +- `SmallVectorStorage`: properly aligned "small buffer" storage. It's a separate type so that it can be specialized to + be properly aligned also for the case of small buffer size = 0 + +## Memory adoption + +We need RVec to be able to act as a view over an existing buffer rather than use its own +to save copies and allocations when reading ROOT data into `RVec`s, e.g. in `RDataFrame`. + +The feature is exposed via a dedicated constructor: `RVec(pointer, size)`. +`RVec` then switches to its own storage as soon as a resize is requested. +`fCapacity == -1` indicates that we are in "memory adoption mode". + +## Exception safety guarantees + +As per [its docs](https://llvm.org/doxygen/classllvm_1_1SmallVector.html), LLVM's +`SmallVector` implementation "does not attempt to be exception-safe". +In its current implementation, `RVec` does not attempt to fix that. +This should not be a problem for `RVec`'s usecases (an exception thrown during +construction of an `RVec` typically means there is a bug to fix in the analysis code), +and we expect to be able to revisit the implementation and fix broken behavior if it +ever turns out to be problematic. + +Relevant discussion on GitHub: + +- https://github.com/root-project/root/pull/7502#issuecomment-818864506 +- https://github.com/root-project/root/pull/7502#issuecomment-818905333 +- https://github.com/root-project/root/pull/7502#issuecomment-821054757 + + From dcf1d6fbf6029e23d453ebf9071a5db467bc9e34 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 28 Jun 2021 12:59:57 +0200 Subject: [PATCH 226/577] [VecOps] Introduce RVecN, which exposes the small buffer size RVec inherits from RVecN and fixes the small buffer size to a reasonable number. For now, all operators and functions are still defined in terms of RVec. --- math/vecops/inc/ROOT/RVec.hxx | 329 +++++++++++++++++++++------------- 1 file changed, 206 insertions(+), 123 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index dff7e1b600785..3f44cfac50185 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -70,6 +70,17 @@ template class RVec; } +namespace Internal { +namespace VecOps { + +constexpr unsigned FirstOf(unsigned N0, ...) +{ + return N0; +} + +} // namespace VecOps +} // namespace Internal + namespace Detail { namespace VecOps { @@ -513,6 +524,11 @@ template struct alignas(T) SmallVectorStorage { }; +template +struct RVecInlineStorageSize { + static constexpr unsigned int value = 8; +}; + } // namespace VecOps } // namespace Internal @@ -1093,6 +1109,166 @@ namespace VecOps { * @{ */ +// From the original SmallVector code: +// This is a 'vector' (really, a variable-sized array), optimized +// for the case when the array is small. It contains some number of elements +// in-place, which allows it to avoid heap allocation when the actual number of +// elements is below that threshold. This allows normal "small" cases to be +// fast without losing generality for large inputs. +// +// Note that this does not attempt to be exception safe. + +template +class RVecN : public Detail::VecOps::RVecImpl, Internal::VecOps::SmallVectorStorage { +public: + RVecN() : Detail::VecOps::RVecImpl(N) {} + + ~RVecN() + { + if (this->Owns()) { + // Destroy the constructed elements in the vector. + this->destroy_range(this->begin(), this->end()); + } + } + + explicit RVecN(size_t Size, const T &Value = T()) : Detail::VecOps::RVecImpl(N) + { + this->assign(Size, Value); + } + + template ::iterator_category, std::input_iterator_tag>::value>::type> + RVecN(ItTy S, ItTy E) : Detail::VecOps::RVecImpl(N) + { + this->append(S, E); + } + + RVecN(std::initializer_list IL) : Detail::VecOps::RVecImpl(N) { this->assign(IL); } + + RVecN(const RVecN &RHS) : Detail::VecOps::RVecImpl(N) + { + if (!RHS.empty()) + Detail::VecOps::RVecImpl::operator=(RHS); + } + + RVecN &operator=(const RVecN &RHS) + { + Detail::VecOps::RVecImpl::operator=(RHS); + return *this; + } + + RVecN(RVecN &&RHS) : Detail::VecOps::RVecImpl(N) + { + if (!RHS.empty()) + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); + } + + RVecN(Detail::VecOps::RVecImpl &&RHS) : Detail::VecOps::RVecImpl(N) + { + if (!RHS.empty()) + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); + } + + RVecN(const std::vector &RHS) : RVecN(RHS.begin(), RHS.end()) {} + + RVecN &operator=(RVecN &&RHS) + { + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); + return *this; + } + + RVecN(T* p, size_t n) : Detail::VecOps::RVecImpl(N) + { + this->fBeginX = p; + this->fSize = n; + this->fCapacity = -1; + } + + RVecN &operator=(Detail::VecOps::RVecImpl &&RHS) + { + Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); + return *this; + } + + RVecN &operator=(std::initializer_list IL) + { + this->assign(IL); + return *this; + } + + using reference = typename Internal::VecOps::SmallVectorTemplateCommon::reference; + using const_reference = typename Internal::VecOps::SmallVectorTemplateCommon::const_reference; + using size_type = typename Internal::VecOps::SmallVectorTemplateCommon::size_type; + using value_type = typename Internal::VecOps::SmallVectorTemplateCommon::value_type; + using Internal::VecOps::SmallVectorTemplateCommon::begin; + using Internal::VecOps::SmallVectorTemplateCommon::size; + + reference operator[](size_type idx) + { + R__ASSERT(idx < size()); + return begin()[idx]; + } + const_reference operator[](size_type idx) const + { + R__ASSERT(idx < size()); + return begin()[idx]; + } + + template ::value>> + RVecN operator[](const RVecN &conds) const + { + const auto n = conds.size(); + + if (n != this->size()) + throw std::runtime_error("Cannot index RVecN with condition vector of different size"); + + RVecN ret; + ret.reserve(n); + for (auto i = 0u; i < n; ++i) + if (conds[i]) + ret.emplace_back(this->operator[](i)); + return ret; + } + + // conversion + template ::value>> + operator RVecN() const + { + return RVecN(this->begin(), this->end()); + } + + reference at(size_type pos) + { + if (pos >= size_type(this->fSize)) + throw std::out_of_range("RVecN"); + return this->operator[](pos); + } + + const_reference at(size_type pos) const + { + if (pos >= size_type(this->fSize)) + throw std::out_of_range("RVecN"); + return this->operator[](pos); + } + + /// No exception thrown. The user specifies the desired value in case the RVecN is shorter than `pos`. + value_type at(size_type pos, value_type fallback) + { + if (pos >= size_type(this->fSize)) + return fallback; + return this->operator[](pos); + } + + /// No exception thrown. The user specifies the desired value in case the RVecN is shorter than `pos`. + value_type at(size_type pos, value_type fallback) const + { + if (pos >= size_type(this->fSize)) + return fallback; + return this->operator[](pos); + } +}; + // clang-format off /** \class ROOT::VecOps::RVec @@ -1244,130 +1420,57 @@ hpt->Draw(); **/ // clang-format on - - -// From the original SmallVector code: -// This is a 'vector' (really, a variable-sized array), optimized -// for the case when the array is small. It contains some number of elements -// in-place, which allows it to avoid heap allocation when the actual number of -// elements is below that threshold. This allows normal "small" cases to be -// fast without losing generality for large inputs. -// -// Note that this does not attempt to be exception safe. - template -class RVec : public Detail::VecOps::RVecImpl, Internal::VecOps::SmallVectorStorage { +class RVec : public RVecN::value> { + using SuperClass = RVecN::value>; public: - static constexpr unsigned N = 8; - RVec() : Detail::VecOps::RVecImpl(N) {} + using reference = typename SuperClass::reference; + using const_reference = typename SuperClass::const_reference; + using size_type = typename SuperClass::size_type; + using value_type = typename SuperClass::value_type; + using SuperClass::begin; + using SuperClass::size; - ~RVec() - { - if (this->Owns()) { - // Destroy the constructed elements in the vector. - this->destroy_range(this->begin(), this->end()); - } - } + RVec() {} - explicit RVec(size_t Size, const T &Value = T()) : Detail::VecOps::RVecImpl(N) - { - this->assign(Size, Value); - } + explicit RVec(size_t Size, const T &Value = T()) : SuperClass(Size, Value) {} template ::iterator_category, std::input_iterator_tag>::value>::type> - RVec(ItTy S, ItTy E) : Detail::VecOps::RVecImpl(N) + RVec(ItTy S, ItTy E) : SuperClass(S, E) { - this->append(S, E); } - RVec(std::initializer_list IL) : Detail::VecOps::RVecImpl(N) { this->assign(IL); } + RVec(std::initializer_list IL) : SuperClass(IL) {} - RVec(const RVec &RHS) : Detail::VecOps::RVecImpl(N) - { - if (!RHS.empty()) - Detail::VecOps::RVecImpl::operator=(RHS); - } + RVec(const RVec &RHS) : SuperClass(RHS) {} RVec &operator=(const RVec &RHS) { - Detail::VecOps::RVecImpl::operator=(RHS); + SuperClass::operator=(RHS); return *this; } - RVec(RVec &&RHS) : Detail::VecOps::RVecImpl(N) - { - if (!RHS.empty()) - Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); - } - - RVec(Detail::VecOps::RVecImpl &&RHS) : Detail::VecOps::RVecImpl(N) - { - if (!RHS.empty()) - Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); - } - - RVec(const std::vector &RHS) : RVec(RHS.begin(), RHS.end()) {} + RVec(RVec &&RHS) : SuperClass(std::move(RHS)) {} RVec &operator=(RVec &&RHS) { - Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); - return *this; - } - - RVec(T* p, size_t n) : Detail::VecOps::RVecImpl(N) - { - this->fBeginX = p; - this->fSize = n; - this->fCapacity = -1; - } - - RVec &operator=(Detail::VecOps::RVecImpl &&RHS) - { - Detail::VecOps::RVecImpl::operator=(::std::move(RHS)); + SuperClass::operator=(std::move(RHS)); return *this; } - RVec &operator=(std::initializer_list IL) - { - this->assign(IL); - return *this; - } + RVec(Detail::VecOps::RVecImpl &&RHS) : SuperClass(std::move(RHS)) {} - using reference = typename Internal::VecOps::SmallVectorTemplateCommon::reference; - using const_reference = typename Internal::VecOps::SmallVectorTemplateCommon::const_reference; - using size_type = typename Internal::VecOps::SmallVectorTemplateCommon::size_type; - using value_type = typename Internal::VecOps::SmallVectorTemplateCommon::value_type; - using Internal::VecOps::SmallVectorTemplateCommon::begin; - using Internal::VecOps::SmallVectorTemplateCommon::size; + template + RVec(RVecN &&RHS) : SuperClass(std::move(RHS)) {} - reference operator[](size_type idx) - { - R__ASSERT(idx < size()); - return begin()[idx]; - } - const_reference operator[](size_type idx) const - { - R__ASSERT(idx < size()); - return begin()[idx]; - } + template + RVec(const RVecN &RHS) : SuperClass(RHS) {} - template ::value>> - RVec operator[](const RVec &conds) const - { - const auto n = conds.size(); + RVec(const std::vector &RHS) : SuperClass(RHS) {} - if (n != this->size()) - throw std::runtime_error("Cannot index RVec with condition vector of different size"); - - RVec ret; - ret.reserve(n); - for (auto i = 0u; i < n; ++i) - if (conds[i]) - ret.emplace_back(this->operator[](i)); - return ret; - } + RVec(T* p, size_t n) : SuperClass(p, n) {} // conversion template ::value>> @@ -1376,39 +1479,19 @@ public: return RVec(this->begin(), this->end()); } - reference at(size_type pos) - { - if (pos >= size_type(this->fSize)) - throw std::out_of_range("RVec"); - return this->operator[](pos); - } + using SuperClass::operator[]; - const_reference at(size_type pos) const - { - if (pos >= size_type(this->fSize)) - throw std::out_of_range("RVec"); - return this->operator[](pos); - } - - /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - value_type at(size_type pos, value_type fallback) + template ::value>> + RVec operator[](const RVec &conds) const { - if (pos >= size_type(this->fSize)) - return fallback; - return this->operator[](pos); + return RVec(SuperClass::operator[](conds)); } - /// No exception thrown. The user specifies the desired value in case the RVec is shorter than `pos`. - value_type at(size_type pos, value_type fallback) const - { - if (pos >= size_type(this->fSize)) - return fallback; - return this->operator[](pos); - } + using SuperClass::at; }; -template -inline size_t capacity_in_bytes(const RVec &X) +template +inline size_t capacity_in_bytes(const RVecN &X) { return X.capacity_in_bytes(); } From d663a88379467b87bd30bbc690738aa829c87694 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 28 Jun 2021 17:51:50 +0200 Subject: [PATCH 227/577] [VecOps][NFC] Update ARCHITECTURE.md --- math/vecops/ARCHITECTURE.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/math/vecops/ARCHITECTURE.md b/math/vecops/ARCHITECTURE.md index 3592032fdf9c2..bf9720989f5ac 100644 --- a/math/vecops/ARCHITECTURE.md +++ b/math/vecops/ARCHITECTURE.md @@ -63,10 +63,13 @@ Compared to LLVM's SmallVectors: the small buffer size, to limit the amount of code generated and provide a way to slice the small buffer size when passing around `RVec` objects. -`RVec>` +`RVecN` It aggregates `RVecImpl` and `SmallVectorStorage` (see below) through public inheritance. - `N` is the small buffer size and defaults to a sensible value that depends on `sizeof(T)`. - We expect most users to use the default and only rarely tweak the small buffer size. + `N` is the small buffer size. + +`RVec` + Inherits from `RVecN` and fixes the small buffer size `N` to a reasonable default. + We expect most users to use this type and only very rarely switch to `RVecN` to tweak the small buffer size. ### Helper types From 170f9b8187c0e49d7b7781bd138a88419c383b80 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 28 Jun 2021 17:52:27 +0200 Subject: [PATCH 228/577] [VecOps] Make the small buffer size of RVec a function of T Our policy is to allocate at least 8 elements (or more if they all fit into one cacheline) unless the size of the buffer with 8 elements would be over a certain maximum size. --- math/vecops/ARCHITECTURE.md | 1 + math/vecops/inc/ROOT/RVec.hxx | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/math/vecops/ARCHITECTURE.md b/math/vecops/ARCHITECTURE.md index bf9720989f5ac..88fa3dfbcc469 100644 --- a/math/vecops/ARCHITECTURE.md +++ b/math/vecops/ARCHITECTURE.md @@ -77,6 +77,7 @@ Compared to LLVM's SmallVectors: `SmallVectorTemplateCommon::getFirstEl` - `SmallVectorStorage`: properly aligned "small buffer" storage. It's a separate type so that it can be specialized to be properly aligned also for the case of small buffer size = 0 +- `RVecInlineStorageSize`: calculates the size of the small buffer in `RVec`. ## Memory adoption diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 3f44cfac50185..ce4b792b70a0e 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -524,9 +524,24 @@ template struct alignas(T) SmallVectorStorage { }; +/// The size of the inline storage of an RVec. +/// Our policy is to allocate at least 8 elements (or more if they all fit into one cacheline) +/// unless the size of the buffer with 8 elements would be over a certain maximum size. template struct RVecInlineStorageSize { - static constexpr unsigned int value = 8; +private: +#ifdef R__HAS_HARDWARE_INTERFERENCE_SIZE + constexpr std::size_t cacheLineSize = std::hardware_destructive_interference_size; +#else + // safe bet: assume the typical 64 bytes + static constexpr std::size_t cacheLineSize = 64; +#endif + static constexpr unsigned elementsPerCacheLine = (cacheLineSize - sizeof(SmallVectorBase)) / sizeof(T); + static constexpr unsigned maxInlineByteSize = 1024; + +public: + static constexpr unsigned value = + elementsPerCacheLine >= 8 ? elementsPerCacheLine : (sizeof(T) * 8 > maxInlineByteSize ? 0 : 8); }; } // namespace VecOps From 908cd63eca0f8fd2401985cddd466df39641e2eb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 1 Jul 2021 17:44:01 +0200 Subject: [PATCH 229/577] [VecOps] Avoid costly asserts in optimized builds --- math/vecops/inc/ROOT/RVec.hxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index ce4b792b70a0e..daa436dd03d0c 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1221,12 +1221,16 @@ public: reference operator[](size_type idx) { +#ifndef NDEBUG R__ASSERT(idx < size()); +#endif return begin()[idx]; } const_reference operator[](size_type idx) const { +#ifndef NDEBUG R__ASSERT(idx < size()); +#endif return begin()[idx]; } From 1f1d69542a11d34bec8afc1d89eb3f2e7e591212 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sat, 3 Jul 2021 13:17:19 +0200 Subject: [PATCH 230/577] [VecOps] Add SmallVectorBase to LinkDef --- math/vecops/inc/LinkDef.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/math/vecops/inc/LinkDef.h b/math/vecops/inc/LinkDef.h index 3b3c2b5495b34..ebdbc6cf7f1a4 100644 --- a/math/vecops/inc/LinkDef.h +++ b/math/vecops/inc/LinkDef.h @@ -11,6 +11,8 @@ #pragma link C++ namespace ROOT::VecOps; +#pragma link C++ class ROOT::Internal::VecOps::SmallVectorBase-; + #pragma link C++ class ROOT::VecOps::RVec-; #pragma link C++ class ROOT::VecOps::RVec-; From fb8300dfdfbe13ff069d926dd8b2a6b674665c78 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 5 Jul 2021 11:41:27 +0200 Subject: [PATCH 231/577] [VecOps][NFC] Remove unused include --- math/vecops/inc/ROOT/RVec.hxx | 1 - 1 file changed, 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index daa436dd03d0c..406665a1e4f18 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -41,7 +41,6 @@ #define _VECOPS_USE_EXTERN_TEMPLATES true #endif -#include #include #include // R__ASSERT #include From f31170bb08ba251c17504b9d62eb8e64b8adf1c7 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 5 Jul 2021 11:42:48 +0200 Subject: [PATCH 232/577] [VecOps] Add test for interaction between SBO and memory adoption --- math/vecops/test/vecops_rvec.cxx | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 7c5139bcfb4e4..c2c721f2b8be8 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -1116,14 +1116,51 @@ TEST(VecOps, Construct) EXPECT_TRUE(fourVects[2] == ref2); } +bool IsSmall(const RVec &v) +{ + // the first array element is right after the 3 data members of SmallVectorBase + return reinterpret_cast(v.begin()) - reinterpret_cast(&v) == 16u; +} + // this is a regression test for https://github.com/root-project/root/issues/6796 TEST(VecOps, MemoryAdoptionAndClear) { ROOT::RVec v{1, 2, 3}; + EXPECT_TRUE(IsSmall(v)); ROOT::RVec v2(v.data(), v.size()); v2[0] = 0; v2.clear(); EXPECT_TRUE(All(v == RVec{0, 2, 3})); v2.push_back(42); + EXPECT_FALSE(IsSmall(v2)); // currently RVec does not go back to a small state after `clear()` EXPECT_TRUE(All(v2 == RVec{42})); } + +// interaction between small buffer optimization and memory adoption +TEST(VecOps, MemoryAdoptionAndSBO) +{ + int *values = new int[3]{1, 2, 3}; + ROOT::RVec v(values, 3); + auto check = [](const RVec &mv) { + EXPECT_EQ(mv.size(), 3u); + EXPECT_EQ(mv[0], 1); + EXPECT_EQ(mv[1], 2); + EXPECT_EQ(mv[2], 3); + }; + check(v); + EXPECT_FALSE(IsSmall(v)); + ROOT::RVec v2 = std::move(v); + EXPECT_TRUE(v.empty()); + check(v2); + // this changes the RVec from memory adoption mode to "long" mode, even if the size is small + // currently we don't allow going from memory adoption to small buffer mode directly, it could be future optimization + v2.push_back(4); + EXPECT_FALSE(IsSmall(v2)); + v2.clear(); + v2.push_back(1); + v2.push_back(2); + v2.push_back(3); + check(v2); + delete[] values; + check(v2); +} From 548de35cab928f49f8e429409d1c8f701089d94a Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 5 Jul 2021 13:00:39 +0200 Subject: [PATCH 233/577] [VecOps] Fix reallocation with memory adoption and POD types Before this patch, `grow_pod` called `realloc` to expand the memory buffer in case the RVec was in "memory view" mode. Instead we want a full malloc in case we are adopting memory. --- math/vecops/src/RVec.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index bb2829baea554..09f56c995b534 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -58,7 +58,7 @@ void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, size_t Min NewCapacity = std::min(std::max(NewCapacity, MinSize), SizeTypeMax()); void *NewElts; - if (fBeginX == FirstEl) { + if (fBeginX == FirstEl || !this->Owns()) { NewElts = malloc(NewCapacity * TSize); // Copy the elements over. No need to run dtors on PODs. From 07b2f8d485ebc46d667567d4875ecc171e34bb6a Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 9 Jul 2021 13:09:31 +0200 Subject: [PATCH 234/577] [VecOps] Avoid comparison between uint32 and uint64 This greatly reduces the number of branch misses measured in our RVecMaskingSimple micro-benchmark, presumably because it removes the need for a bunch of integer-overflow-checking logic. Co-authored-by: Jonas Hahnfeld --- math/vecops/inc/ROOT/RVec.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 406665a1e4f18..9c0c1f66cf8b4 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1236,14 +1236,14 @@ public: template ::value>> RVecN operator[](const RVecN &conds) const { - const auto n = conds.size(); + const size_type n = conds.size(); if (n != this->size()) throw std::runtime_error("Cannot index RVecN with condition vector of different size"); RVecN ret; ret.reserve(n); - for (auto i = 0u; i < n; ++i) + for (size_type i = 0u; i < n; ++i) if (conds[i]) ret.emplace_back(this->operator[](i)); return ret; From ac2a77baa9d869d41907a60313d4057b58c259d0 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 9 Jul 2021 13:13:16 +0200 Subject: [PATCH 235/577] [VecOps] Make sure small buffer is always zero-initialized This removes an uninitialized memory warning in dataframe_splitcoll_arrayview with gcc 11 and seems to also improve branch predition for some of our micro-benchmarks. --- math/vecops/inc/ROOT/RVec.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 9c0c1f66cf8b4..9c9ddd5468813 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -513,7 +513,7 @@ public: /// to avoid allocating unnecessary storage. template struct SmallVectorStorage { - alignas(T) char InlineElts[N * sizeof(T)]; + alignas(T) char InlineElts[N * sizeof(T)]{}; }; /// We need the storage to be properly aligned even for small-size of 0 so that From 379005839daa5eaa325457dd2893a7ee0eef35ae Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 13 Jul 2021 16:15:19 +0200 Subject: [PATCH 236/577] [VecOps] Spell out the constructor with default element initialization This is a performance optimization. GCC 11 generates worse code if we use assign(Size, T()) instead of spelling out what we want. --- math/vecops/inc/ROOT/RVec.hxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 9c9ddd5468813..23a25704de08c 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1145,9 +1145,14 @@ public: } } - explicit RVecN(size_t Size, const T &Value = T()) : Detail::VecOps::RVecImpl(N) + explicit RVecN(size_t Size, const T &Value) : Detail::VecOps::RVecImpl(N) { this->assign(Size, Value); } + + explicit RVecN(size_t Size) : Detail::VecOps::RVecImpl(N) { - this->assign(Size, Value); + if (Size > N) + this->grow(Size); + this->fSize = Size; + std::uninitialized_fill(this->begin(), this->end(), T{}); } template Date: Tue, 13 Jul 2021 19:53:31 +0200 Subject: [PATCH 237/577] [VecOps][NFC] Point to ARCHITECTURE.md instead of repeating info --- math/vecops/inc/ROOT/RVec.hxx | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 23a25704de08c..fd9be8d28dbc0 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1,4 +1,5 @@ // Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 04/2021 +// See /math/vecops/ARCHITECTURE.md for more information. /************************************************************************* * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * @@ -8,17 +9,6 @@ * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ -/* - * The implementation of RVec is based on LLVM's SmallVector. - * - * Compared to LLVM's SmallVectors, the ability to adopt an existing memory buffer has been added, - * as well as other minor patches for backward compatibility with - * the previous implementation of RVec (which did not have a small buffer - * optimization and was based on std::vector with a custom allocator) and - * for compatibility with cppyy. - * RVec also adds a vectorized operator[] and many "numpy-like" helper functions. - */ - #ifndef ROOT_RVEC #define ROOT_RVEC From f5effe90df95d0a876fa45af9295546bc8d34f95 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 13 Jul 2021 19:59:05 +0200 Subject: [PATCH 238/577] [VecOps][NFC] Add disclaimer about lack of exception-safety --- math/vecops/inc/ROOT/RVec.hxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index fd9be8d28dbc0..e698b7c2c9d5b 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1293,6 +1293,9 @@ Its storage is contiguous in memory and its interface is designed such to resemb of the stl vector. In addition the interface features methods and external functions to ease the manipulation and analysis of the data in the RVec. +\note RVec does not attempt to be exception safe. Exceptions thrown by element constructors during insertions, swaps or +other operations will be propagated potentially leaving the RVec object in an invalid state. + \htmlonly DOI \endhtmlonly From 773a43ef51438f3796020d77342110722a686c08 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 13 Jul 2021 22:38:40 +0200 Subject: [PATCH 239/577] [VecOps] Avoid using emplace_back in vectorized operator[] The previous implementation of the vectorized operator[] was using emplace_back to add elements to the returned vector. emplace_back is slightly more complex in RVec 2.0 due to the SBO and compilers sometimes do not inline it. Instead, spell out the appropriate logic: for example we know the return vector has sufficient capacity and we can skip the related checks performed at every emplace_back call. --- math/vecops/inc/ROOT/RVec.hxx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index e698b7c2c9d5b..20fa42bdeb0d7 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1238,9 +1238,15 @@ public: RVecN ret; ret.reserve(n); - for (size_type i = 0u; i < n; ++i) - if (conds[i]) - ret.emplace_back(this->operator[](i)); + size_type j = 0u; + for (size_type i = 0u; i < n; ++i) { + if (conds[i]) { + // the begin() is to go around the R__ASSERT in operator[] + ret.begin()[j] = this->operator[](i); + ++j; + } + } + ret.set_size(j); return ret; } From 81bcb2c004cbc182fc5662062ef58ac816d6d09f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 14 Jul 2021 12:01:41 +0200 Subject: [PATCH 240/577] [VecOps] Remove unused logical operators from RVecImpl We define vectorized ones for RVecs that are used instead. --- math/vecops/inc/ROOT/RVec.hxx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 20fa42bdeb0d7..365ec1292151e 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -921,19 +921,6 @@ public: RVecImpl &operator=(const RVecImpl &RHS); RVecImpl &operator=(RVecImpl &&RHS); - - bool operator==(const RVecImpl &RHS) const - { - if (this->size() != RHS.size()) - return false; - return std::equal(this->begin(), this->end(), RHS.begin()); - } - bool operator!=(const RVecImpl &RHS) const { return !(*this == RHS); } - - bool operator<(const RVecImpl &RHS) const - { - return std::lexicographical_compare(this->begin(), this->end(), RHS.begin(), RHS.end()); - } }; template From 92bb2af50a867c9bfbf41a7d9fb70a52e4de3210 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 14 Jul 2021 12:28:06 +0200 Subject: [PATCH 241/577] [VecOps] Fix `IsSmall` impl. on 32bit machines sizeof(void*) is 4, not 8 on 32bit machines. --- math/vecops/test/vecops_rvec.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index c2c721f2b8be8..eef4f45d9251a 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -1119,7 +1119,8 @@ TEST(VecOps, Construct) bool IsSmall(const RVec &v) { // the first array element is right after the 3 data members of SmallVectorBase - return reinterpret_cast(v.begin()) - reinterpret_cast(&v) == 16u; + return reinterpret_cast(v.begin()) - reinterpret_cast(&v) == + sizeof(void *) + 2 * sizeof(int); } // this is a regression test for https://github.com/root-project/root/issues/6796 From 9e347aec3be8c341ad790cb32e673e1e76cb7ea8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 13 Jul 2021 20:13:53 +0200 Subject: [PATCH 242/577] [VecOps] Test RVec does not badly crash in case of exceptions --- math/vecops/test/vecops_rvec.cxx | 61 ++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index eef4f45d9251a..4d647f71cbd5c 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -1165,3 +1165,64 @@ TEST(VecOps, MemoryAdoptionAndSBO) delete[] values; check(v2); } + +struct ThrowingCtor { + ThrowingCtor() { throw std::runtime_error("This exception should have been caught."); } +}; + +struct ThrowingMove { + ThrowingMove() = default; + ThrowingMove(const ThrowingMove &) = default; + ThrowingMove &operator=(const ThrowingMove &) = default; + ThrowingMove(ThrowingMove &&) { throw std::runtime_error("This exception should have been caught."); } + ThrowingMove &operator=(ThrowingMove &&) { throw std::runtime_error("This exception should have been caught."); } +}; + +struct ThrowingCopy { + ThrowingCopy() = default; + ThrowingCopy(const ThrowingCopy &) { throw std::runtime_error("This exception should have been caught."); } + ThrowingCopy &operator=(const ThrowingCopy &) + { + throw std::runtime_error("This exception should have been caught."); + } + ThrowingCopy(ThrowingCopy &&) = default; + ThrowingCopy &operator=(ThrowingCopy &&) = default; +}; + +// RVec does not guarantee exception safety, but we still want to test +// that we don't segfault or otherwise crash if element construction or move throws. +TEST(VecOps, NoExceptionSafety) +{ + EXPECT_NO_THROW(ROOT::RVec()); + + EXPECT_THROW(ROOT::RVec(1), std::runtime_error); + EXPECT_THROW(ROOT::RVec(42), std::runtime_error); + ROOT::RVec v1; + EXPECT_THROW(v1.push_back(ThrowingCtor{}), std::runtime_error); + ROOT::RVec v2; + EXPECT_THROW(v2.emplace_back(ThrowingCtor{}), std::runtime_error); + + ROOT::RVec v3(2); + ROOT::RVec v4(42); + EXPECT_THROW(std::swap(v3, v4), std::runtime_error); + ThrowingMove tm; + EXPECT_THROW(v3.emplace_back(std::move(tm)), std::runtime_error); + + ROOT::RVec v7; + EXPECT_THROW(std::fill_n(std::back_inserter(v7), 16, ThrowingCopy{}), std::runtime_error); + + // now with memory adoption + ThrowingCtor *p1 = new ThrowingCtor[0]; + ROOT::RVec v8(p1, 0); + EXPECT_THROW(v8.push_back(ThrowingCtor{}), std::runtime_error); + delete[] p1; + + ThrowingMove *p2 = new ThrowingMove[2]; + ROOT::RVec v9(p2, 2); + EXPECT_THROW(std::swap(v9, v3), std::runtime_error); + delete[] p2; + + ThrowingCopy *p3 = new ThrowingCopy[2]; + ROOT::RVec v10(p3, 2); + EXPECT_THROW(v10.push_back(*p3), std::runtime_error); +} From d82b225fa148c2bc7e1c13b76368819622d90100 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 22 Jul 2021 11:18:51 +0200 Subject: [PATCH 243/577] [VecOps] Remove RVec's dependency on string_view As a simple standalone component, let's try to reduce its dependencies to the minimum. --- math/vecops/inc/ROOT/RVec.hxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 365ec1292151e..29f7e2f83d3ee 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -31,7 +31,6 @@ #define _VECOPS_USE_EXTERN_TEMPLATES true #endif -#include #include // R__ASSERT #include @@ -77,7 +76,7 @@ template using RVec = ROOT::VecOps::RVec; template -std::size_t GetVectorsSize(std::string_view id, const RVec &... vs) +std::size_t GetVectorsSize(const std::string &id, const RVec &... vs) { constexpr const auto nArgs = sizeof...(T); const std::size_t sizes[] = {vs.size()...}; From 245ddf52dc2e4cbed2d554fd81059bef0349eeb0 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 22 Jul 2021 11:19:57 +0200 Subject: [PATCH 244/577] [VecOps][NFC] Remove unused include --- math/vecops/inc/ROOT/RVec.hxx | 1 - 1 file changed, 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 29f7e2f83d3ee..1e873221d0ba9 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -32,7 +32,6 @@ #endif #include // R__ASSERT -#include #include #include From 5d9085a5523b172ac01c5243c66b0688da17dafd Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 7 Sep 2021 16:19:11 +0200 Subject: [PATCH 245/577] [VecOps] Remove unnecessary casts --- math/vecops/inc/ROOT/RVec.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 1e873221d0ba9..8b4ed0a927a22 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -2083,7 +2083,7 @@ template auto Any(const RVec &v) -> decltype(v[0] == true) { for (auto &&e : v) - if (static_cast(e) == true) + if (e == true) return true; return false; } @@ -2102,7 +2102,7 @@ template auto All(const RVec &v) -> decltype(v[0] == false) { for (auto &&e : v) - if (static_cast(e) == false) + if (e == false) return false; return true; } From 7f56f1f5f4cac97b436e89216013417c94517160 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:13:07 +0200 Subject: [PATCH 246/577] [NFC][VecOps] Order includes alphabetically --- math/vecops/inc/ROOT/RVec.hxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 8b4ed0a927a22..11494d35512cf 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -36,14 +36,14 @@ #include #include #include -#include // for inner_product #include +#include // for inner_product #include #include +#include #include -#include #include -#include +#include #ifdef R__HAS_VDT #include From bd3140ac252eddf5415f857e7adca8f1e29b9203 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:17:58 +0200 Subject: [PATCH 247/577] [VecOps] Remove now unused helper function --- math/vecops/inc/ROOT/RVec.hxx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 11494d35512cf..1c5f3c9323f52 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -57,17 +57,6 @@ template class RVec; } -namespace Internal { -namespace VecOps { - -constexpr unsigned FirstOf(unsigned N0, ...) -{ - return N0; -} - -} // namespace VecOps -} // namespace Internal - namespace Detail { namespace VecOps { From 6bf9ce5e3f646a98121003856729b9970ab4ab64 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:32:08 +0200 Subject: [PATCH 248/577] [VecOps] Move internal helper functions to internal namespace --- math/vecops/inc/ROOT/RVec.hxx | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 1c5f3c9323f52..6e602cc3eff36 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -57,7 +57,7 @@ template class RVec; } -namespace Detail { +namespace Internal { namespace VecOps { template @@ -100,11 +100,6 @@ auto MapFromTuple(Tuple_t &&t, std::index_sequence) return MapImpl(std::get(t), std::get(t)...); } -} // namespace VecOps -} // namespace Detail - -namespace Internal { -namespace VecOps { /// Return the next power of two (in 64-bits) that is strictly greater than A. /// Return zero on overflow. inline uint64_t NextPowerOf2(uint64_t A) @@ -2018,8 +2013,6 @@ double StdDev(const RVec &v) /// ~~~ template auto Map(Args &&... args) - -> decltype(ROOT::Detail::VecOps::MapFromTuple(std::forward_as_tuple(args...), - std::make_index_sequence())) { /* Here the strategy in order to generalise the previous implementation of Map, i.e. @@ -2028,11 +2021,9 @@ auto Map(Args &&... args) This is achieved in two steps: 1. Forward as tuple the pack to MapFromTuple 2. Invoke the MapImpl helper which has the signature `template<...T, F> RVec MapImpl(F &&f, RVec...)` - NOTA BENE: the signature is very heavy but it is one of the lightest ways to manage in C++11 - to build the return type based on the template args. */ - return ROOT::Detail::VecOps::MapFromTuple(std::forward_as_tuple(args...), - std::make_index_sequence()); + return ROOT::Internal::VecOps::MapFromTuple(std::forward_as_tuple(args...), + std::make_index_sequence()); } /// Create a new collection with the elements passing the filter expressed by the predicate @@ -2774,7 +2765,7 @@ T InvariantMass(const RVec& pt, const RVec& eta, const RVec& phi, const template RVec Construct(const RVec &... args) { - const auto size = ::ROOT::Detail::VecOps::GetVectorsSize("Construct", args...); + const auto size = ::ROOT::Internal::VecOps::GetVectorsSize("Construct", args...); RVec ret; ret.reserve(size); for (auto i = 0UL; i < size; ++i) { From bd008e4e19745ada8e3e4f5a2f02f58b962b1cca Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:39:14 +0200 Subject: [PATCH 249/577] [NFC][VecOps] Update some comments --- math/vecops/inc/ROOT/RVec.hxx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 6e602cc3eff36..5f7cc2cbcff98 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -114,15 +114,10 @@ inline uint64_t NextPowerOf2(uint64_t A) } /// This is all the stuff common to all SmallVectors. -/// -/// The template parameter specifies the type which should be used to hold the -/// Size and Capacity of the SmallVector, so it can be adjusted. -/// Using 32 bit size is desirable to shrink the size of the SmallVector. -/// Using 64 bit size is desirable for cases like SmallVector, where a -/// 32 bit size would limit the vector to ~4GB. SmallVectors are used for -/// buffering bitcode output - which can exceed 4GB. class SmallVectorBase { public: + // This limits the maximum size of an RVec to ~4GB but we don't expect this to ever be a problem, + // and we prefer the smaller Size_T to reduce the size of each RVec object. using Size_T = int32_t; protected: @@ -177,8 +172,8 @@ public: fSize = N; } - // LLVM SmallVector does not have a shrink_to_fit method - // it's technically ok to do nothing, but assuming no one uses this method for RVec anyway, I'd rather deprecate it + // LLVM SmallVector does not have a shrink_to_fit method, but RVec used to. + // It's technically ok to do nothing, but assuming no one uses this method for RVec anyway, I'd rather deprecate it R__DEPRECATED(6, 28, "This method will be removed.") void shrink_to_fit() { } }; From 93a61c76c05a953ec7254dfe8d844d92998d8364 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:46:20 +0200 Subject: [PATCH 250/577] [VecOps] Remove unnecessary default template args --- math/vecops/inc/ROOT/RVec.hxx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 5f7cc2cbcff98..61544fa047baf 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -178,17 +178,15 @@ public: void shrink_to_fit() { } }; -/// Figure out the offset of the first element. -template +/// Used to figure out the offset of the first element of an RVec +template struct SmallVectorAlignmentAndSize { alignas(SmallVectorBase) char Base[sizeof(SmallVectorBase)]; alignas(T) char FirstEl[sizeof(T)]; }; -/// This is the part of SmallVectorTemplateBase which does not depend on whether -/// the type T is a POD. The extra dummy template argument is used by ArrayRef -/// to avoid unnecessarily requiring T to be complete. -template +/// This is the part of SmallVectorTemplateBase which does not depend on whether the type T is a POD. +template class SmallVectorTemplateCommon : public SmallVectorBase { using Base = SmallVectorBase; From 2a0cbe30fa0701278fb713ca7b59f6390a2559ab Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 10:59:06 +0200 Subject: [PATCH 251/577] [VecOps] Adapt and reinstate alignment, padding and size static checks --- math/vecops/src/RVec.cxx | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index 09f56c995b534..4eb022b19b76a 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -1,7 +1,6 @@ #include "ROOT/RVec.hxx" using namespace ROOT::VecOps; -/***** FIXME the extra boolean breaks this assert and the two below -- maybe use unused bits in pointer? // Check that no bytes are wasted and everything is well-aligned. namespace { struct Struct16B { @@ -10,19 +9,18 @@ struct Struct16B { struct Struct32B { alignas(32) void *X; }; -} // namespace -static_assert(sizeof(SmallVector) == sizeof(unsigned) * 2 + sizeof(void *), - "wasted space in RVec size 0"); -static_assert(alignof(SmallVector) >= alignof(Struct16B), "wrong alignment for 16-byte aligned T"); -static_assert(alignof(SmallVector) >= alignof(Struct32B), "wrong alignment for 32-byte aligned T"); -static_assert(sizeof(SmallVector) >= alignof(Struct16B), "missing padding for 16-byte aligned T"); -static_assert(sizeof(SmallVector) >= alignof(Struct32B), "missing padding for 32-byte aligned T"); -static_assert(sizeof(SmallVector) == sizeof(unsigned) * 2 + sizeof(void *) * 2, +} +static_assert(alignof(RVec) >= alignof(Struct16B), "wrong alignment for 16-byte aligned T"); +static_assert(alignof(RVec) >= alignof(Struct32B), "wrong alignment for 32-byte aligned T"); +static_assert(sizeof(RVec) >= alignof(Struct16B), "missing padding for 16-byte aligned T"); +static_assert(sizeof(RVec) >= alignof(Struct32B), "missing padding for 32-byte aligned T"); +static_assert(sizeof(RVecN) == sizeof(int32_t) * 2 + sizeof(void *), "wasted space in RVec"); +static_assert(sizeof(RVecN) == sizeof(int32_t) * 2 + sizeof(void *) * 2, "wasted space in SmallVector size 1"); - -static_assert(sizeof(SmallVector) == sizeof(void *) * 2 + sizeof(void *), - "1 byte elements have word-sized type for size and capacity"); -************/ +static_assert(sizeof(RVec) == + sizeof(int32_t) * 2 + + (1 + ROOT::Internal::VecOps::RVecInlineStorageSize::value) * sizeof(void *), + "wasted space in RVec"); void ROOT::Internal::VecOps::SmallVectorBase::report_size_overflow(size_t MinSize) { From cbf3f3c7590afa149b8216c3353d24646d92f2d1 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 11:02:39 +0200 Subject: [PATCH 252/577] [VecOps] Assert that malloc/realloc succeeded --- math/vecops/inc/ROOT/RVec.hxx | 1 + math/vecops/src/RVec.cxx | 2 ++ 2 files changed, 3 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 61544fa047baf..2f15a1b1a19f7 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -386,6 +386,7 @@ void SmallVectorTemplateBase::grow(size_t MinSize) size_t NewCapacity = size_t(NextPowerOf2(this->capacity() + 2)); NewCapacity = std::min(std::max(NewCapacity, MinSize), this->SizeTypeMax()); T *NewElts = static_cast(malloc(NewCapacity * sizeof(T))); + R__ASSERT(NewElts != nullptr); // Move the elements over. this->uninitialized_move(this->begin(), this->end(), NewElts); diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index 4eb022b19b76a..e7f0c4c828ab7 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -58,12 +58,14 @@ void ROOT::Internal::VecOps::SmallVectorBase::grow_pod(void *FirstEl, size_t Min void *NewElts; if (fBeginX == FirstEl || !this->Owns()) { NewElts = malloc(NewCapacity * TSize); + R__ASSERT(NewElts != nullptr); // Copy the elements over. No need to run dtors on PODs. memcpy(NewElts, this->fBeginX, size() * TSize); } else { // If this wasn't grown from the inline copy, grow the allocated space. NewElts = realloc(this->fBeginX, NewCapacity * TSize); + R__ASSERT(NewElts != nullptr); } this->fBeginX = NewElts; From a051b8832ccbb3f23bbb13ef5b8e89281bdef6ce Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 11:56:41 +0200 Subject: [PATCH 253/577] [VecOps] Credit LLVM also in header/source files. --- math/vecops/inc/ROOT/RVec.hxx | 1 + math/vecops/src/RVec.cxx | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 2f15a1b1a19f7..ea3b03f6e383e 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1,4 +1,5 @@ // Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 04/2021 +// Implementation adapted from from llvm::SmallVector. // See /math/vecops/ARCHITECTURE.md for more information. /************************************************************************* diff --git a/math/vecops/src/RVec.cxx b/math/vecops/src/RVec.cxx index e7f0c4c828ab7..6f54578478ecb 100644 --- a/math/vecops/src/RVec.cxx +++ b/math/vecops/src/RVec.cxx @@ -1,3 +1,15 @@ +// Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 04/2021 +// Implementation adapted from from llvm::SmallVector. +// See /math/vecops/ARCHITECTURE.md for more information. + +/************************************************************************* + * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + #include "ROOT/RVec.hxx" using namespace ROOT::VecOps; From 6a9df3d3c8f35308d86f6bffa428269d028c3ff0 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:16:21 +0200 Subject: [PATCH 254/577] [VecOps] Rename capacity_in_bytes -> CapacityInBytes --- math/vecops/inc/ROOT/RVec.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index ea3b03f6e383e..3af0304c9624e 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1479,7 +1479,7 @@ public: }; template -inline size_t capacity_in_bytes(const RVecN &X) +inline size_t CapacityInBytes(const RVecN &X) { return X.capacity_in_bytes(); } From 07f313ed32a34dee2d9f381500fa18848fe164ce Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:26:17 +0200 Subject: [PATCH 255/577] [VecOps][NFC] Add note about RVec method naming convention --- math/vecops/inc/ROOT/RVec.hxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 3af0304c9624e..3078639acdce2 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1266,6 +1266,9 @@ the manipulation and analysis of the data in the RVec. \note RVec does not attempt to be exception safe. Exceptions thrown by element constructors during insertions, swaps or other operations will be propagated potentially leaving the RVec object in an invalid state. +\note RVec methods (e.g. `at` or `size`) follow the STL naming convention instead of the ROOT naming convention in order +to make RVec a drop-in replacement for `std::vector`. + \htmlonly DOI \endhtmlonly From 61f12f6c7d9a1a25eebbdff83ce16ebd2c334abe Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:38:34 +0200 Subject: [PATCH 256/577] [NFC][DF] Improve some docs Remove the term "custom column" in favor of the clearer "defined column", add some minor clarifications. --- tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 69 ++++++++++++---------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index 60e37989ae476..f192fb8a3f02a 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -111,7 +111,7 @@ class RInterface { /// Non-owning pointer to a data-source object. Null if no data-source. RLoopManager has ownership of the object. RDataSource *fDataSource = nullptr; - /// Contains the custom columns defined up to this node. + /// Contains the columns defined up to this node. RDFInternal::RBookedDefines fDefines; public: @@ -268,13 +268,13 @@ public: // clang-format off //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column. - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. + /// \brief Define a new column. + /// \param[in] name The name of the defined column. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. /// \param[in] columns Names of the columns/branches in input to the producer function. /// \return the first node of the computation graph for which the new quantity is defined. /// - /// Create a custom column that will be visible from all subsequent nodes + /// Define a column that will be visible from all subsequent nodes /// of the functional chain. The `expression` is only evaluated for entries that pass /// all the preceding filters. /// A new variable is created called `name`, accessible as if it was contained @@ -304,13 +304,13 @@ public: // clang-format off //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column with a value dependent on the processing slot. - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. + /// \brief Define a new column with a value dependent on the processing slot. + /// \param[in] name The name of the defined column. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. /// \param[in] columns Names of the columns/branches in input to the producer function (excluding the slot number). /// \return the first node of the computation graph for which the new quantity is defined. /// - /// This alternative implementation of `Define` is meant as a helper in writing thread-safe custom columns. + /// This alternative implementation of `Define` is meant as a helper to evaluate new column values in a thread-safe manner. /// The expression must be a callable of signature R(unsigned int, T1, T2, ...) where `T1, T2...` are the types /// of the columns that the expression takes as input. The first parameter is reserved for an unsigned integer /// representing a "slot number". RDataFrame guarantees that different threads will invoke the expression with @@ -333,9 +333,9 @@ public: // clang-format off //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column with a value dependent on the processing slot and the current entry. - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. + /// \brief Define a new column with a value dependent on the processing slot and the current entry. + /// \param[in] name The name of the defined column. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. /// \param[in] columns Names of the columns/branches in input to the producer function (excluding slot and entry). /// \return the first node of the computation graph for which the new quantity is defined. /// @@ -363,8 +363,8 @@ public: // clang-format on //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column. - /// \param[in] name The name of the custom column. + /// \brief Define a new column. + /// \param[in] name The name of the defined column. /// \param[in] expression An expression in C++ which represents the defined value /// \return the first node of the computation graph for which the new quantity is defined. /// @@ -395,13 +395,15 @@ public: } //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. - /// \param[in] columns Names of the columns/branches in input to the producer function. - /// \return the first node of the computation graph for which the new quantity is defined. + /// \brief Overwrite the value and/or type of an existing column. + /// \param[in] name The name of the column to redefine. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. + /// \param[in] columns Names of the columns/branches in input to the expression. + /// \return the first node of the computation graph for which the quantity is redefined. /// - /// An exception is thrown in case the column to re-define does not already exist. + /// The old value of the column can be used as an input for the expression. + /// + /// An exception is thrown in case the column to redefine does not already exist. /// See Define() for more information. template ::value, int> = 0> RInterface Redefine(std::string_view name, F expression, const ColumnNames_t &columns = {}) @@ -411,13 +413,14 @@ public: // clang-format off //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column, possibly overriding an existing one with the same name. - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. + /// \brief Overwrite the value and/or type of an existing column. + /// \param[in] name The name of the column to redefine. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. /// \param[in] columns Names of the columns/branches in input to the producer function (excluding slot). /// \return the first node of the computation graph for which the new quantity is defined. /// - /// An exception is thrown in case the column to re-define does not already exist. + /// The old value of the column can be used as an input for the expression. + /// An exception is thrown in case the column to redefine does not already exist. /// /// See DefineSlot() for more information. // clang-format on @@ -429,12 +432,13 @@ public: // clang-format off //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column, possibly overriding an existing one with the same name. - /// \param[in] name The name of the custom column. - /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the custom column. + /// \brief Overwrite the value and/or type of an existing column. + /// \param[in] name The name of the column to redefine. + /// \param[in] expression Function, lambda expression, functor class or any other callable object producing the defined value. Returns the value that will be assigned to the defined column. /// \param[in] columns Names of the columns/branches in input to the producer function (excluding slot and entry). /// \return the first node of the computation graph for which the new quantity is defined. /// + /// The old value of the column can be used as an input for the expression. /// An exception is thrown in case the column to re-define does not already exist. /// /// See DefineSlotEntry() for more information. @@ -447,8 +451,8 @@ public: } //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column, overriding an existing one with the same name. - /// \param[in] name The name of the custom column. + /// \brief Overwrite the value and/or type of an existing column. + /// \param[in] name The name of the column to redefine. /// \param[in] expression An expression in C++ which represents the defined value /// \return the first node of the computation graph for which the new quantity is defined. /// @@ -456,6 +460,7 @@ public: /// It must be valid C++ syntax in which variable names are substituted with the names /// of branches/columns. /// + /// The old value of the column can be used as an input for the expression. /// An exception is thrown in case the column to re-define does not already exist. /// /// Aliases cannot be overridden. See the corresponding Define() overload for more information. @@ -480,7 +485,7 @@ public: } //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column that is updated when the input sample changes. + /// \brief Define a new column that is updated when the input sample changes. /// \param[in] name The name of the defined column. /// \param[in] expression A C++ callable that computes the new value of the defined column. /// \return the first node of the computation graph for which the new quantity is defined. @@ -527,7 +532,7 @@ public: } //////////////////////////////////////////////////////////////////////////// - /// \brief Creates a custom column that is updated when the input sample changes. + /// \brief Define a new column that is updated when the input sample changes. /// \param[in] name The name of the defined column. /// \param[in] expression A valid C++ expression as a string, which will be used to compute the defined value. /// \return the first node of the computation graph for which the new quantity is defined. @@ -2197,7 +2202,7 @@ public: /// /// This is not an action nor a transformation, just a simple utility to /// get the columns names that have been defined up to the node. - /// If no custom column has been defined, e.g. on a root node, it returns an + /// If no column has been defined, e.g. on a root node, it returns an /// empty collection. /// /// ### Example usage: From 1d189fb18366169543d00a4500d644d82381bfd2 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:40:20 +0200 Subject: [PATCH 257/577] [NFC][DF] Remove obsolete comment --- tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx | 1 - 1 file changed, 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx index bb4721c8a1805..edf1fcc1c64de 100644 --- a/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RSampleInfo.hxx @@ -30,7 +30,6 @@ namespace RDF { /// In multi-thread runs, different tasks might process different entry ranges of the same sample, /// so RSampleInfo also provides methods to inspect which part of a sample is being taken into consideration. class RSampleInfo { - // Currently backed by a simple string, might change in the future as we get usage experience. std::string fID; std::pair fEntryRange; From b3b6c7b244941c9a650309becf500dbd83b58874 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:41:18 +0200 Subject: [PATCH 258/577] [NFC][DF] Promote some code comments to doxygen comments --- tree/dataframe/src/RDFInterfaceUtils.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index 58c3303489a2d..88657508ac704 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -620,7 +620,7 @@ std::string PrettyPrintAddr(const void *const addr) return s.str(); } -// Book the jitting of a Filter call +/// Book the jitting of a Filter call void BookFilterJit(const std::shared_ptr &jittedFilter, std::shared_ptr *prevNodeOnHeap, std::string_view name, std::string_view expression, const std::map &aliasMap, @@ -666,7 +666,7 @@ void BookFilterJit(const std::shared_ptr &jittedFilter, lm->ToJitExec(filterInvocation.str()); } -// Book the jitting of a Define call +/// Book the jitting of a Define call std::shared_ptr BookDefineJit(std::string_view name, std::string_view expression, RLoopManager &lm, RDataSource *ds, const RBookedDefines &customCols, const ColumnNames_t &branches, @@ -711,7 +711,7 @@ std::shared_ptr BookDefineJit(std::string_view name, std::string_ return jittedDefine; } -// Book the jitting of a DefinePerSample call +/// Book the jitting of a DefinePerSample call std::shared_ptr BookDefinePerSampleJit(std::string_view name, std::string_view expression, RLoopManager &lm, const RBookedDefines &customCols, std::shared_ptr *upcastNodeOnHeap) From fd80656965998203034632e3401900d31ac60e8e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 15:02:08 +0200 Subject: [PATCH 259/577] [NFC][VecOps] Remove unnecessary namespace qualifiers It makes the test code more readable. --- math/vecops/test/vecops_rvec.cxx | 246 +++++++++++++++---------------- 1 file changed, 123 insertions(+), 123 deletions(-) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 4d647f71cbd5c..558e4c24b308b 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -55,13 +55,13 @@ void CheckEqual(const T &a, const V &b, std::string_view msg = "") TEST(VecOps, DefaultCtor) { - ROOT::VecOps::RVec v; + RVec v; EXPECT_EQ(v.size(), 0u); } TEST(VecOps, InitListCtor) { - ROOT::VecOps::RVec v{1, 2, 3}; + RVec v{1, 2, 3}; EXPECT_EQ(v.size(), 3u); EXPECT_EQ(v[0], 1); EXPECT_EQ(v[1], 2); @@ -70,8 +70,8 @@ TEST(VecOps, InitListCtor) TEST(VecOps, CopyCtor) { - ROOT::VecOps::RVec v1{1, 2, 3}; - ROOT::VecOps::RVec v2(v1); + RVec v1{1, 2, 3}; + RVec v2(v1); EXPECT_EQ(v1.size(), 3u); EXPECT_EQ(v2.size(), 3u); EXPECT_EQ(v2[0], 1); @@ -99,9 +99,9 @@ TEST(VecOps, EmplaceBack) TEST(VecOps, CopyCtorCheckNoLeak) { - ROOT::VecOps::RVec ref; + RVec ref; ref.emplace_back(TLeakChecker()); - ROOT::VecOps::RVec proxy(ref.data(), ref.size()); + RVec proxy(ref.data(), ref.size()); TLeakChecker::fgDestroyed = false; { auto v = proxy; @@ -116,18 +116,18 @@ TEST(VecOps, CopyCtorCheckNoLeak) TEST(VecOps, MoveCtor) { - ROOT::VecOps::RVec v1{1, 2, 3}; - ROOT::VecOps::RVec v2(std::move(v1)); + RVec v1{1, 2, 3}; + RVec v2(std::move(v1)); EXPECT_EQ(v2.size(), 3u); } TEST(VecOps, Conversion) { - ROOT::VecOps::RVec fvec{1.0f, 2.0f, 3.0f}; - ROOT::VecOps::RVec uvec{1u, 2u, 3u}; + RVec fvec{1.0f, 2.0f, 3.0f}; + RVec uvec{1u, 2u, 3u}; - ROOT::VecOps::RVec ivec = uvec; - ROOT::VecOps::RVec lvec = ivec; + RVec ivec = uvec; + RVec lvec = ivec; EXPECT_EQ(1, ivec[0]); EXPECT_EQ(2, ivec[1]); @@ -138,8 +138,8 @@ TEST(VecOps, Conversion) EXPECT_EQ(3l, lvec[2]); EXPECT_EQ(3u, lvec.size()); - auto dvec1 = ROOT::VecOps::RVec(fvec); - auto dvec2 = ROOT::VecOps::RVec(uvec); + auto dvec1 = RVec(fvec); + auto dvec2 = RVec(uvec); EXPECT_EQ(1.0, dvec1[0]); EXPECT_EQ(2.0, dvec1[1]); @@ -153,10 +153,10 @@ TEST(VecOps, Conversion) TEST(VecOps, ArithmeticsUnary) { - ROOT::VecOps::RVec ivec{1, 2, 3}; - ROOT::VecOps::RVec pvec = +ivec; - ROOT::VecOps::RVec nvec = -ivec; - ROOT::VecOps::RVec tvec = ~ivec; + RVec ivec{1, 2, 3}; + RVec pvec = +ivec; + RVec nvec = -ivec; + RVec tvec = ~ivec; EXPECT_EQ(1, pvec[0]); EXPECT_EQ(2, pvec[1]); @@ -176,8 +176,8 @@ TEST(VecOps, ArithmeticsUnary) TEST(VecOps, MathScalar) { - ROOT::VecOps::RVec ref{1, 2, 3}; - ROOT::VecOps::RVec v(ref); + RVec ref{1, 2, 3}; + RVec v(ref); int scalar = 3; auto plus = v + scalar; auto minus = v - scalar; @@ -190,7 +190,7 @@ TEST(VecOps, MathScalar) CheckEqual(div, ref / scalar); // The same with views - ROOT::VecOps::RVec w(ref.data(), ref.size()); + RVec w(ref.data(), ref.size()); plus = w + scalar; minus = w - scalar; mult = w * scalar; @@ -204,8 +204,8 @@ TEST(VecOps, MathScalar) TEST(VecOps, MathScalarInPlace) { - ROOT::VecOps::RVec ref{1, 2, 3}; - const ROOT::VecOps::RVec v(ref); + RVec ref{1, 2, 3}; + const RVec v(ref); int scalar = 3; auto plus = v; plus += scalar; @@ -224,9 +224,9 @@ TEST(VecOps, MathScalarInPlace) TEST(VecOps, MathVector) { - ROOT::VecOps::RVec ref{1, 2, 3}; - ROOT::VecOps::RVec vec{3, 4, 5}; - ROOT::VecOps::RVec v(ref); + RVec ref{1, 2, 3}; + RVec vec{3, 4, 5}; + RVec v(ref); auto plus = v + vec; auto minus = v - vec; auto mult = v * vec; @@ -238,7 +238,7 @@ TEST(VecOps, MathVector) CheckEqual(div, ref / vec); // The same with 1 view - ROOT::VecOps::RVec w(ref.data(), ref.size()); + RVec w(ref.data(), ref.size()); plus = w + vec; minus = w - vec; mult = w * vec; @@ -250,7 +250,7 @@ TEST(VecOps, MathVector) CheckEqual(div, ref / vec); // The same with 2 views - ROOT::VecOps::RVec w2(ref.data(), ref.size()); + RVec w2(ref.data(), ref.size()); plus = w + w2; minus = w - w2; mult = w * w2; @@ -264,9 +264,9 @@ TEST(VecOps, MathVector) TEST(VecOps, MathVectorInPlace) { - ROOT::VecOps::RVec ref{1, 2, 3}; - ROOT::VecOps::RVec vec{3, 4, 5}; - ROOT::VecOps::RVec v(ref); + RVec ref{1, 2, 3}; + RVec vec{3, 4, 5}; + RVec v(ref); auto plus = v; plus += vec; auto minus = v; @@ -284,7 +284,7 @@ TEST(VecOps, MathVectorInPlace) TEST(VecOps, Filter) { - ROOT::VecOps::RVec v{0, 1, 2, 3, 4, 5}; + RVec v{0, 1, 2, 3, 4, 5}; const std::vector vEvenRef{0, 2, 4}; const std::vector vOddRef{1, 3, 5}; auto vEven = v[v % 2 == 0]; @@ -300,7 +300,7 @@ TEST(VecOps, Filter) } template -std::string PrintRVec(ROOT::VecOps::RVec v, V w) +std::string PrintRVec(RVec v, V w) { std::stringstream ss; ss << v << " " << w << std::endl; @@ -327,8 +327,8 @@ std::string PrintRVec(ROOT::VecOps::RVec v, V w) TEST(VecOps, PrintOps) { - ROOT::VecOps::RVec ref{1, 2, 3}; - ROOT::VecOps::RVec v(ref); + RVec ref{1, 2, 3}; + RVec v(ref); auto ref0 = R"ref0({ 1, 2, 3 } 2 { 3, 4, 5 } @@ -375,7 +375,7 @@ TEST(VecOps, PrintOps) auto t1 = PrintRVec(v, ref + 2); EXPECT_STREQ(t1.c_str(), ref1); - ROOT::VecOps::RVec w(ref.data(), ref.size()); + RVec w(ref.data(), ref.size()); auto ref2 = R"ref2({ 1, 2, 3 } 2 { 3, 4, 5 } @@ -430,9 +430,9 @@ TEST(VecOps, PrintOps) TEST(VecOps, MathFuncs) { - ROOT::VecOps::RVec u{1, 1, 1}; - ROOT::VecOps::RVec v{1, 2, 3}; - ROOT::VecOps::RVec w{1, 4, 27}; + RVec u{1, 1, 1}; + RVec v{1, 2, 3}; + RVec w{1, 4, 27}; CheckEqual(pow(1,v), u, " error checking math function pow"); CheckEqual(pow(v,1), v, " error checking math function pow"); @@ -473,15 +473,15 @@ TEST(VecOps, MathFuncs) TEST(VecOps, PhysicsSelections) { // We emulate 8 muons - ROOT::VecOps::RVec mu_charge{1, 1, -1, -1, -1, 1, 1, -1}; - ROOT::VecOps::RVec mu_pt{56.f, 45.f, 32.f, 24.f, 12.f, 8.f, 7.f, 6.2f}; - ROOT::VecOps::RVec mu_eta{3.1f, -.2f, -1.1f, 1.f, 4.1f, 1.6f, 2.4f, -.5f}; + RVec mu_charge{1, 1, -1, -1, -1, 1, 1, -1}; + RVec mu_pt{56.f, 45.f, 32.f, 24.f, 12.f, 8.f, 7.f, 6.2f}; + RVec mu_eta{3.1f, -.2f, -1.1f, 1.f, 4.1f, 1.6f, 2.4f, -.5f}; // Pick the pt of the muons with a pt greater than 10, an eta between -2 and 2 and a negative charge // or the ones with a pt > 20, outside the eta range -2:2 and with positive charge auto goodMuons_pt = mu_pt[(mu_pt > 10.f && abs(mu_eta) <= 2.f && mu_charge == -1) || (mu_pt > 15.f && abs(mu_eta) > 2.f && mu_charge == 1)]; - ROOT::VecOps::RVec goodMuons_pt_ref = {56.f, 32.f, 24.f}; + RVec goodMuons_pt_ref = {56.f, 32.f, 24.f}; CheckEqual(goodMuons_pt, goodMuons_pt_ref, "Muons quality cut"); } @@ -501,19 +501,19 @@ TEST(VecOps, InputOutput) auto filename = "vecops_inputoutput.root"; auto treename = "t"; - const ROOT::VecOps::RVec dref {1., 2., 3.}; - const ROOT::VecOps::RVec fref {1.f, 2.f, 3.f}; - const ROOT::VecOps::RVec uiref {1, 2, 3}; - const ROOT::VecOps::RVec ulref {1UL, 2UL, 3UL}; - const ROOT::VecOps::RVec ullref {1ULL, 2ULL, 3ULL}; - const ROOT::VecOps::RVec usref {1, 2, 3}; - const ROOT::VecOps::RVec ucref {1, 2, 3}; - const ROOT::VecOps::RVec iref {1, 2, 3};; - const ROOT::VecOps::RVec lref {1UL, 2UL, 3UL};; - const ROOT::VecOps::RVec llref {1ULL, 2ULL, 3ULL}; - const ROOT::VecOps::RVec sref {1, 2, 3}; - const ROOT::VecOps::RVec cref {1, 2, 3}; - const ROOT::VecOps::RVec bref {true, false, true}; + const RVec dref {1., 2., 3.}; + const RVec fref {1.f, 2.f, 3.f}; + const RVec uiref {1, 2, 3}; + const RVec ulref {1UL, 2UL, 3UL}; + const RVec ullref {1ULL, 2ULL, 3ULL}; + const RVec usref {1, 2, 3}; + const RVec ucref {1, 2, 3}; + const RVec iref {1, 2, 3};; + const RVec lref {1UL, 2UL, 3UL};; + const RVec llref {1ULL, 2ULL, 3ULL}; + const RVec sref {1, 2, 3}; + const RVec cref {1, 2, 3}; + const RVec bref {true, false, true}; { auto d = dref; @@ -548,19 +548,19 @@ TEST(VecOps, InputOutput) t.Write(); } - auto d = new ROOT::VecOps::RVec(); - auto f = new ROOT::VecOps::RVec; - auto ui = new ROOT::VecOps::RVec(); - auto ul = new ROOT::VecOps::RVec(); - auto ull = new ROOT::VecOps::RVec(); - auto us = new ROOT::VecOps::RVec(); - auto uc = new ROOT::VecOps::RVec(); - auto i = new ROOT::VecOps::RVec(); - auto l = new ROOT::VecOps::RVec(); - auto ll = new ROOT::VecOps::RVec(); - auto s = new ROOT::VecOps::RVec(); - auto c = new ROOT::VecOps::RVec(); - auto b = new ROOT::VecOps::RVec(); + auto d = new RVec(); + auto f = new RVec; + auto ui = new RVec(); + auto ul = new RVec(); + auto ull = new RVec(); + auto us = new RVec(); + auto uc = new RVec(); + auto i = new RVec(); + auto l = new RVec(); + auto ll = new RVec(); + auto s = new RVec(); + auto c = new RVec(); + auto b = new RVec(); TFile file(filename); TTree *tp; @@ -600,13 +600,13 @@ TEST(VecOps, InputOutput) TEST(VecOps, SimpleStatOps) { - ROOT::VecOps::RVec v0 {}; + RVec v0 {}; ASSERT_DOUBLE_EQ(Sum(v0), 0.); ASSERT_DOUBLE_EQ(Mean(v0), 0.); ASSERT_DOUBLE_EQ(StdDev(v0), 0.); ASSERT_DOUBLE_EQ(Var(v0), 0.); - ROOT::VecOps::RVec v1 {42.}; + RVec v1 {42.}; ASSERT_DOUBLE_EQ(Sum(v1), 42.); ASSERT_DOUBLE_EQ(Mean(v1), 42.); ASSERT_DOUBLE_EQ(Max(v1), 42.); @@ -616,7 +616,7 @@ TEST(VecOps, SimpleStatOps) ASSERT_DOUBLE_EQ(StdDev(v1), 0.); ASSERT_DOUBLE_EQ(Var(v1), 0.); - ROOT::VecOps::RVec v2 {1., 2., 3.}; + RVec v2 {1., 2., 3.}; ASSERT_DOUBLE_EQ(Sum(v2), 6.); ASSERT_DOUBLE_EQ(Mean(v2), 2.); ASSERT_DOUBLE_EQ(Max(v2), 3.); @@ -626,7 +626,7 @@ TEST(VecOps, SimpleStatOps) ASSERT_DOUBLE_EQ(Var(v2), 1.); ASSERT_DOUBLE_EQ(StdDev(v2), 1.); - ROOT::VecOps::RVec v3 {10., 20., 32.}; + RVec v3 {10., 20., 32.}; ASSERT_DOUBLE_EQ(Sum(v3), 62.); ASSERT_DOUBLE_EQ(Mean(v3), 20.666666666666668); ASSERT_DOUBLE_EQ(Max(v3), 32.); @@ -636,7 +636,7 @@ TEST(VecOps, SimpleStatOps) ASSERT_DOUBLE_EQ(Var(v3), 121.33333333333337); ASSERT_DOUBLE_EQ(StdDev(v3), 11.015141094572206); - ROOT::VecOps::RVec v4 {2, 3, 1}; + RVec v4 {2, 3, 1}; ASSERT_DOUBLE_EQ(Sum(v4), 6.); ASSERT_DOUBLE_EQ(Mean(v4), 2.); ASSERT_DOUBLE_EQ(Max(v4), 3); @@ -646,7 +646,7 @@ TEST(VecOps, SimpleStatOps) ASSERT_DOUBLE_EQ(Var(v4), 1.); ASSERT_DOUBLE_EQ(StdDev(v4), 1.); - ROOT::VecOps::RVec v5 {2, 3, 1, 4}; + RVec v5 {2, 3, 1, 4}; ASSERT_DOUBLE_EQ(Sum(v5), 10); ASSERT_DOUBLE_EQ(Mean(v5), 2.5); ASSERT_DOUBLE_EQ(Max(v5), 4); @@ -661,16 +661,16 @@ TEST(VecOps, SimpleStatOps) const ROOT::Math::PtEtaPhiMVector lv2 {12.95f, 1.32f, 2.2f, 105.65f}; const ROOT::Math::PtEtaPhiMVector lv_sum_ref = lv0 + lv1 + lv2; const ROOT::Math::PtEtaPhiMVector lv_mean_ref = lv_sum_ref / 3; - ROOT::VecOps::RVec v6 {lv0, lv1, lv2}; - const ROOT::Math::PtEtaPhiMVector lv_sum = ROOT::VecOps::Sum(v6, ROOT::Math::PtEtaPhiMVector()); - const ROOT::Math::PtEtaPhiMVector lv_mean = ROOT::VecOps::Mean(v6, ROOT::Math::PtEtaPhiMVector()); + RVec v6 {lv0, lv1, lv2}; + const ROOT::Math::PtEtaPhiMVector lv_sum = Sum(v6, ROOT::Math::PtEtaPhiMVector()); + const ROOT::Math::PtEtaPhiMVector lv_mean = Mean(v6, ROOT::Math::PtEtaPhiMVector()); CheckEqual(lv_sum, lv_sum_ref); CheckEqual(lv_mean, lv_mean_ref); } TEST(VecOps, Any) { - ROOT::VecOps::RVec vi {0, 1, 2}; + RVec vi {0, 1, 2}; EXPECT_TRUE(Any(vi)); vi = {0, 0, 0}; EXPECT_FALSE(Any(vi)); @@ -680,7 +680,7 @@ TEST(VecOps, Any) TEST(VecOps, All) { - ROOT::VecOps::RVec vi {0, 1, 2}; + RVec vi {0, 1, 2}; EXPECT_FALSE(All(vi)); vi = {0, 0, 0}; EXPECT_FALSE(All(vi)); @@ -690,104 +690,104 @@ TEST(VecOps, All) TEST(VecOps, Argsort) { - ROOT::VecOps::RVec v{2, 0, 1}; - using size_type = typename ROOT::VecOps::RVec::size_type; + RVec v{2, 0, 1}; + using size_type = typename RVec::size_type; auto i = Argsort(v); - ROOT::VecOps::RVec ref{1, 2, 0}; + RVec ref{1, 2, 0}; CheckEqual(i, ref); } TEST(VecOps, ArgsortWithComparisonOperator) { - ROOT::VecOps::RVec v{2, 0, 1}; - using size_type = typename ROOT::VecOps::RVec::size_type; + RVec v{2, 0, 1}; + using size_type = typename RVec::size_type; auto i1 = Argsort(v, [](int x, int y){ return x < y; }); - ROOT::VecOps::RVec ref1{1, 2, 0}; + RVec ref1{1, 2, 0}; CheckEqual(i1, ref1); auto i2 = Argsort(v, [](int x, int y){ return x > y; }); - ROOT::VecOps::RVec ref2{0, 2, 1}; + RVec ref2{0, 2, 1}; CheckEqual(i2, ref2); } TEST(VecOps, TakeIndices) { - ROOT::VecOps::RVec v0{2, 0, 1}; - ROOT::VecOps::RVec::size_type> i{1, 2, 0, 0, 0}; + RVec v0{2, 0, 1}; + RVec::size_type> i{1, 2, 0, 0, 0}; auto v1 = Take(v0, i); - ROOT::VecOps::RVec ref{0, 1, 2, 2, 2}; + RVec ref{0, 1, 2, 2, 2}; CheckEqual(v1, ref); } TEST(VecOps, TakeFirst) { - ROOT::VecOps::RVec v0{0, 1, 2}; + RVec v0{0, 1, 2}; auto v1 = Take(v0, 2); - ROOT::VecOps::RVec ref{0, 1}; + RVec ref{0, 1}; CheckEqual(v1, ref); // Corner-case: Take zero entries auto v2 = Take(v0, 0); - ROOT::VecOps::RVec none{}; + RVec none{}; CheckEqual(v2, none); } TEST(VecOps, TakeLast) { - ROOT::VecOps::RVec v0{0, 1, 2}; + RVec v0{0, 1, 2}; auto v1 = Take(v0, -2); - ROOT::VecOps::RVec ref{1, 2}; + RVec ref{1, 2}; CheckEqual(v1, ref); // Corner-case: Take zero entries auto v2 = Take(v0, 0); - ROOT::VecOps::RVec none{}; + RVec none{}; CheckEqual(v2, none); } TEST(VecOps, Reverse) { - ROOT::VecOps::RVec v0{0, 1, 2}; + RVec v0{0, 1, 2}; auto v1 = Reverse(v0); - ROOT::VecOps::RVec ref{2, 1, 0}; + RVec ref{2, 1, 0}; CheckEqual(v1, ref); // Corner-case: Empty vector - ROOT::VecOps::RVec none{}; + RVec none{}; auto v2 = Reverse(none); CheckEqual(v2, none); } TEST(VecOps, Sort) { - ROOT::VecOps::RVec v{2, 0, 1}; + RVec v{2, 0, 1}; // Sort in ascending order auto v1 = Sort(v); - ROOT::VecOps::RVec ref{0, 1, 2}; + RVec ref{0, 1, 2}; CheckEqual(v1, ref); // Corner-case: Empty vector - ROOT::VecOps::RVec none{}; + RVec none{}; auto v2 = Sort(none); CheckEqual(v2, none); } TEST(VecOps, SortWithComparisonOperator) { - ROOT::VecOps::RVec v{2, 0, 1}; + RVec v{2, 0, 1}; // Sort with comparison operator auto v1 = Sort(v, std::greater()); - ROOT::VecOps::RVec ref{2, 1, 0}; + RVec ref{2, 1, 0}; CheckEqual(v1, ref); // Corner-case: Empty vector - ROOT::VecOps::RVec none{}; + RVec none{}; auto v2 = Sort(none, std::greater()); CheckEqual(v2, none); } @@ -795,7 +795,7 @@ TEST(VecOps, SortWithComparisonOperator) TEST(VecOps, RVecBool) { // std::vector is special, so RVec is special - ROOT::VecOps::RVec v{true, false}; + RVec v{true, false}; auto v2 = v; EXPECT_EQ(v[0], true); EXPECT_EQ(v[1], false); @@ -805,8 +805,8 @@ TEST(VecOps, RVecBool) TEST(VecOps, CombinationsTwoVectors) { - ROOT::VecOps::RVec v1{1, 2, 3}; - ROOT::VecOps::RVec v2{-4, -5}; + RVec v1{1, 2, 3}; + RVec v2{-4, -5}; auto idx = Combinations(v1, v2); auto c1 = Take(v1, idx[0]); @@ -835,7 +835,7 @@ TEST(VecOps, CombinationsTwoVectors) TEST(VecOps, UniqueCombinationsSingleVector) { // Doubles: x + y - ROOT::VecOps::RVec v1{1, 2, 3}; + RVec v1{1, 2, 3}; auto idx1 = Combinations(v1, 2); auto c1 = Take(v1, idx1[0]); auto c2 = Take(v1, idx1[1]); @@ -847,7 +847,7 @@ TEST(VecOps, UniqueCombinationsSingleVector) CheckEqual(v2, ref1); // Triples: x * y * z - ROOT::VecOps::RVec v3{1, 2, 3, 4}; + RVec v3{1, 2, 3, 4}; auto idx2 = Combinations(v3, 3); auto c3 = Take(v3, idx2[0]); auto c4 = Take(v3, idx2[1]); @@ -861,14 +861,14 @@ TEST(VecOps, UniqueCombinationsSingleVector) CheckEqual(v4, ref2); // Corner-case: Single combination - ROOT::VecOps::RVec v5{1}; + RVec v5{1}; auto idx3 = Combinations(v5, 1); EXPECT_EQ(idx3.size(), 1u); EXPECT_EQ(idx3[0].size(), 1u); EXPECT_EQ(idx3[0][0], 0u); // Corner-case: Insert empty vector - ROOT::VecOps::RVec empty_int{}; + RVec empty_int{}; auto idx4 = Combinations(empty_int, 0); EXPECT_EQ(idx4.size(), 0u); @@ -879,36 +879,36 @@ TEST(VecOps, UniqueCombinationsSingleVector) TEST(VecOps, PrintCollOfNonPrintable) { - auto code = "class A{};ROOT::VecOps::RVec v(1);v"; + auto code = "class A{};RVec v(1);v"; auto ret = gInterpreter->ProcessLine(code); EXPECT_TRUE(0 != ret) << "Error in printing an RVec collection of non printable objects."; } TEST(VecOps, Nonzero) { - ROOT::VecOps::RVec v1{0, 1, 0, 3, 4, 0, 6}; - ROOT::VecOps::RVec v2{0, 1, 0, 3, 4, 0, 6}; + RVec v1{0, 1, 0, 3, 4, 0, 6}; + RVec v2{0, 1, 0, 3, 4, 0, 6}; auto v3 = Nonzero(v1); auto v4 = Nonzero(v2); - ROOT::VecOps::RVec ref1{1, 3, 4, 6}; + RVec ref1{1, 3, 4, 6}; CheckEqual(v3, ref1); CheckEqual(v4, ref1); auto v5 = v1[v1<2]; auto v6 = Nonzero(v5); - ROOT::VecOps::RVec ref2{1}; + RVec ref2{1}; CheckEqual(v6, ref2); } TEST(VecOps, Intersect) { - ROOT::VecOps::RVec v1{0, 1, 2, 3}; - ROOT::VecOps::RVec v2{2, 3, 4, 5}; + RVec v1{0, 1, 2, 3}; + RVec v2{2, 3, 4, 5}; auto v3 = Intersect(v1, v2); - ROOT::VecOps::RVec ref1{2, 3}; + RVec ref1{2, 3}; CheckEqual(v3, ref1); - ROOT::VecOps::RVec v4{4, 5, 3, 2}; + RVec v4{4, 5, 3, 2}; auto v5 = Intersect(v1, v4); CheckEqual(v5, ref1); @@ -944,7 +944,7 @@ TEST(VecOps, Where) TEST(VecOps, AtWithFallback) { - ROOT::VecOps::RVec v({1.f, 2.f, 3.f}); + RVec v({1.f, 2.f, 3.f}); EXPECT_FLOAT_EQ(v.at(7, 99.f), 99.f); } @@ -1097,7 +1097,7 @@ TEST(VecOps, Map) auto res = Map(a, c, c, mod); - ROOT::VecOps::RVec ref{9.9498743710661994, 11.489125293076057, 13.076696830622021}; + RVec ref{9.9498743710661994, 11.489125293076057, 13.076696830622021}; CheckEqual(res, ref); } From eda668cee606ce597b6d69b4c556a20d615a9e3e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 17:16:04 +0200 Subject: [PATCH 260/577] [VecOps] Re-add one namespace qualifier that was needed --- math/vecops/test/vecops_rvec.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 558e4c24b308b..0b06d3c5c4134 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -879,7 +879,7 @@ TEST(VecOps, UniqueCombinationsSingleVector) TEST(VecOps, PrintCollOfNonPrintable) { - auto code = "class A{};RVec v(1);v"; + auto code = "class A{};ROOT::RVec v(1);v"; auto ret = gInterpreter->ProcessLine(code); EXPECT_TRUE(0 != ret) << "Error in printing an RVec collection of non printable objects."; } From cab57e3403867bcf54558887dd9ac871b9fca61d Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 15:31:29 +0200 Subject: [PATCH 261/577] [VecOps] Remove ROOT::Detail::RAdoptAllocator Now that RVec is not backed by std::vector but does its own memory management, we do not need a custom allocator implementation anymore. --- math/vecops/CMakeLists.txt | 2 - math/vecops/inc/ROOT/RAdoptAllocator.hxx | 210 -------------------- math/vecops/src/RAdoptAllocator.cxx | 1 - math/vecops/test/CMakeLists.txt | 1 - math/vecops/test/vecops_radoptallocator.cxx | 100 ---------- tutorials/vecops/vo001_AdoptOrOwnMemory.C | 1 - tutorials/vecops/vo001_AdoptOrOwnMemory.py | 1 - 7 files changed, 316 deletions(-) delete mode 100644 math/vecops/inc/ROOT/RAdoptAllocator.hxx delete mode 100644 math/vecops/src/RAdoptAllocator.cxx delete mode 100644 math/vecops/test/vecops_radoptallocator.cxx diff --git a/math/vecops/CMakeLists.txt b/math/vecops/CMakeLists.txt index a30b4c4dc22de..09fde3eb407fa 100644 --- a/math/vecops/CMakeLists.txt +++ b/math/vecops/CMakeLists.txt @@ -14,10 +14,8 @@ endif() ROOT_STANDARD_LIBRARY_PACKAGE(ROOTVecOps HEADERS - ROOT/RAdoptAllocator.hxx ROOT/RVec.hxx SOURCES - src/RAdoptAllocator.cxx src/RVec.cxx DICTIONARY_OPTIONS -writeEmptyRootPCM diff --git a/math/vecops/inc/ROOT/RAdoptAllocator.hxx b/math/vecops/inc/ROOT/RAdoptAllocator.hxx deleted file mode 100644 index e45e5498f03bc..0000000000000 --- a/math/vecops/inc/ROOT/RAdoptAllocator.hxx +++ /dev/null @@ -1,210 +0,0 @@ -// Author: Enrico Guiraud, Enric Tejedor, Danilo Piparo CERN 01/2018 - -/************************************************************************* - * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_TADOPTALLOCATOR -#define ROOT_TADOPTALLOCATOR - -#include -#include - -namespace ROOT { -namespace Detail { -namespace VecOps { - -/** -\class ROOT::Detail::VecOps::RAdoptAllocator -\ingroup vecops -\brief RAdoptAllocator can provide a view on already allocated memory. - -The RAdoptAllocator behaves like the standard allocator, and, as such, can be used to create -stl containers. In addition, it behaves as if it allocated a certain memory region which -is indeed not managed by it, but rather is "adopted". -This is most useful to take advantage of widely adopted entities such as std::vector in a -novel way, namely offering nice interfaces around an arbitrary memory region. - -If memory is adopted, the first allocation returns the address of this memory region. For -the subsequent allocations, the RAdoptAllocator behaves like a standard allocator. - -For example: -~~~{.cpp} -std::vector model {1, 2, 3}; -unsigned int dummy; -RAdoptAllocator alloc(model.data(), model.size()); -std::vector> v(model.size(), 0., alloc); -~~~ -Now the vector *v* is ready to be used, de facto proxying the memory of the vector *model*. -Upon a second allocation, the vector *v* ceases to be a proxy -~~~{.cpp} -v.emplace_back(0.); -~~~ -now the vector *v* owns its memory as a regular vector. -**/ - -template -class RAdoptAllocator { -public: - friend class RAdoptAllocator; - - using propagate_on_container_move_assignment = std::true_type; - using propagate_on_container_swap = std::true_type; - using StdAlloc_t = std::allocator; - using value_type = typename StdAlloc_t::value_type; - using pointer = typename StdAlloc_t::pointer; - using const_pointer = typename StdAlloc_t::const_pointer; - using reference = typename StdAlloc_t::reference; - using const_reference = typename StdAlloc_t::const_reference; - using size_type = typename StdAlloc_t::size_type; - using difference_type = typename StdAlloc_t::difference_type; - template - struct rebind { - using other = RAdoptAllocator; - }; - -private: - enum class EAllocType : char { kOwning, kAdopting, kAdoptingNoAllocYet }; - using StdAllocTraits_t = std::allocator_traits; - pointer fInitialAddress = nullptr; - EAllocType fAllocType = EAllocType::kOwning; - StdAlloc_t fStdAllocator; - -public: - /// This is the constructor which allows the allocator to adopt a certain memory region. - RAdoptAllocator(pointer p) : fInitialAddress(p), fAllocType(EAllocType::kAdoptingNoAllocYet){}; - RAdoptAllocator() = default; - RAdoptAllocator(const RAdoptAllocator &) = default; - RAdoptAllocator(RAdoptAllocator &&) = default; - RAdoptAllocator &operator=(const RAdoptAllocator &) = default; - RAdoptAllocator &operator=(RAdoptAllocator &&) = default; - RAdoptAllocator(const RAdoptAllocator &); - - /// Construct an object at a certain memory address - /// \tparam U The type of the memory address at which the object needs to be constructed - /// \tparam Args The arguments' types necessary for the construction of the object - /// \param[in] p The memory address at which the object needs to be constructed - /// \param[in] args The arguments necessary for the construction of the object - /// This method is a no op if memory has been adopted. - template - void construct(U *p, Args &&... args) - { - // We refuse to do anything since we assume the memory is already initialised - if (EAllocType::kAdopting == fAllocType) - return; - StdAllocTraits_t::construct(fStdAllocator, p, std::forward(args)...); - } - - /// \brief Allocate some memory - /// If an address has been adopted, at the first call, that address is returned. - /// Subsequent calls will make "decay" the allocator to a regular stl allocator. - pointer allocate(std::size_t n) - { - if (n > std::size_t(-1) / sizeof(T)) - throw std::bad_alloc(); - if (EAllocType::kAdoptingNoAllocYet == fAllocType) { - fAllocType = EAllocType::kAdopting; - return fInitialAddress; - } - fAllocType = EAllocType::kOwning; - return StdAllocTraits_t::allocate(fStdAllocator, n); - } - - /// \brief Dellocate some memory if that had not been adopted. - void deallocate(pointer p, std::size_t n) - { - if (p != fInitialAddress) - StdAllocTraits_t::deallocate(fStdAllocator, p, n); - } - - template - void destroy(U *p) - { - if (EAllocType::kAdopting != fAllocType) { - StdAllocTraits_t::destroy(fStdAllocator, p); - } - } - - bool operator==(const RAdoptAllocator &other) - { - return fInitialAddress == other.fInitialAddress && fAllocType == other.fAllocType && - fStdAllocator == other.fStdAllocator; - } - - bool operator!=(const RAdoptAllocator &other) { return !(*this == other); } - - size_type max_size() const { return StdAllocTraits_t::max_size(fStdAllocator); }; -}; - -// The different semantics of std::vector make memory adoption through a -// custom allocator more complex -- namely, RAdoptAllocator must be rebindable -// to RAdoptAllocator, but if adopted memory is really a buffer of -// bools reinterpretation of the buffer is not going to work. As a workaround, -// RAdoptAllocator is specialized to be a simple allocator that forwards calls -// to std::allocator and never adopts memory. -template <> -class RAdoptAllocator { - std::allocator fStdAllocator; - -public: - template - struct rebind { - using other = RAdoptAllocator; - }; - - template - friend class RAdoptAllocator; - - using StdAlloc_t = std::allocator; - using value_type = typename StdAlloc_t::value_type; - using pointer = typename StdAlloc_t::pointer; - using const_pointer = typename StdAlloc_t::const_pointer; - using reference = typename StdAlloc_t::reference; - using const_reference = typename StdAlloc_t::const_reference; - using size_type = typename StdAlloc_t::size_type; - using difference_type = typename StdAlloc_t::difference_type; - using StdAllocTraits_t = std::allocator_traits; - - RAdoptAllocator() = default; - RAdoptAllocator(const RAdoptAllocator &) = default; - - template - RAdoptAllocator(const RAdoptAllocator &o) : fStdAllocator(o.fStdAllocator) - { - if (o.fAllocType != RAdoptAllocator::EAllocType::kOwning) - throw std::runtime_error("Cannot rebind owning RAdoptAllocator"); - } - - bool *allocate(std::size_t n) { return StdAllocTraits_t::allocate(fStdAllocator, n); } - - template - void construct(U *p, Args &&... args) - { - StdAllocTraits_t::construct(fStdAllocator, p, std::forward(args)...); - } - - void deallocate(bool *p, std::size_t s) noexcept { StdAllocTraits_t::deallocate(fStdAllocator, p, s); } - - template - void destroy(U *p) - { - StdAllocTraits_t::destroy(fStdAllocator, p); - } - - bool operator==(const RAdoptAllocator &) { return true; } - - bool operator!=(const RAdoptAllocator &) { return false; } -}; - -template -RAdoptAllocator::RAdoptAllocator(const RAdoptAllocator &o) : fStdAllocator(o.fStdAllocator) {} - -} // End NS VecOps -} // End NS Detail -} // End NS ROOT - -#endif diff --git a/math/vecops/src/RAdoptAllocator.cxx b/math/vecops/src/RAdoptAllocator.cxx deleted file mode 100644 index 8163c910b54d9..0000000000000 --- a/math/vecops/src/RAdoptAllocator.cxx +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/math/vecops/test/CMakeLists.txt b/math/vecops/test/CMakeLists.txt index d44f2fb131df3..a99e84dc9922f 100644 --- a/math/vecops/test/CMakeLists.txt +++ b/math/vecops/test/CMakeLists.txt @@ -5,4 +5,3 @@ # For the list of contributors see $ROOTSYS/README/CREDITS. ROOT_ADD_GTEST(vecops_rvec vecops_rvec.cxx LIBRARIES Physics ROOTVecOps GenVector RIO Tree) -ROOT_ADD_GTEST(vecops_radoptallocator vecops_radoptallocator.cxx LIBRARIES Core ROOTVecOps) diff --git a/math/vecops/test/vecops_radoptallocator.cxx b/math/vecops/test/vecops_radoptallocator.cxx deleted file mode 100644 index 52270be9ca29a..0000000000000 --- a/math/vecops/test/vecops_radoptallocator.cxx +++ /dev/null @@ -1,100 +0,0 @@ -#include - -#include - -#include -#include -using namespace ROOT::Detail::VecOps; - -TEST(RAdoptAllocator, ReusePointer) -{ - std::vector vreference{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - - std::vector vmodel(vreference); - RAdoptAllocator alloc0(vmodel.data()); - - EXPECT_EQ(vmodel.data(), std::allocator_traits>::allocate(alloc0, 123)); - - RAdoptAllocator alloc1(vmodel.data()); - - std::vector> v(alloc1); - v.resize(vmodel.size()); - - EXPECT_EQ(vmodel.data(), v.data()); - EXPECT_EQ(vmodel.size(), v.size()); - - for (size_t i = 0; i < vmodel.size(); ++i) { - EXPECT_EQ(vmodel[i], vreference[i]); - EXPECT_EQ(v[i], vreference[i]); - } - - v.emplace_back(3.); - EXPECT_NE(vmodel.data(), v.data()); - - auto res = 0; - try { - v.resize(std::numeric_limits::max()); - } catch (...) { - res = 1; - } - EXPECT_EQ(1, res); -} - -class TCopySignal { -private: - unsigned int *fCopyCount = nullptr; - -public: - TCopySignal(unsigned int ©Count) : fCopyCount(©Count){}; - TCopySignal(const TCopySignal &other) - { - fCopyCount = other.fCopyCount; - (*fCopyCount)++; - } -}; - -TEST(RAdoptAllocator, NewAllocations) -{ - unsigned int copyCount = 0; - std::vector model; - model.reserve(8); - for (int i = 0; i < 8; ++i) { - model.emplace_back(copyCount); - } - - EXPECT_EQ(0U, copyCount); - - unsigned int dummy; - RAdoptAllocator alloc(model.data()); - std::vector> v(model.size(), dummy, alloc); - - EXPECT_EQ(0U, copyCount); - v.emplace_back(copyCount); - EXPECT_EQ(8U, copyCount); -} - -void CheckMove(std::vector>&& vm, const std::vector>& v) { - EXPECT_TRUE(vm.get_allocator() == v.get_allocator()); -} - -TEST(RAdoptAllocator, Traits) -{ - std::vector vmodel {1.,2.,3.}; - RAdoptAllocator alloc0(vmodel.data()); - RAdoptAllocator alloc1(vmodel.data()); - std::vector> v0(3, 0., alloc0); - std::vector> v1(3, 0., alloc1); - - EXPECT_TRUE(v0.get_allocator() == v1.get_allocator()) << "Baseline test failed"; - - std::vector> v2; - v2 = v0; - EXPECT_FALSE(v0.get_allocator() == v2.get_allocator()); - - swap(v1,v2); - EXPECT_TRUE(v0.get_allocator() == v2.get_allocator()); - - CheckMove(std::move(v0),v2); - -} - diff --git a/tutorials/vecops/vo001_AdoptOrOwnMemory.C b/tutorials/vecops/vo001_AdoptOrOwnMemory.C index 9e8370a0e6cc4..04607c528fd1e 100644 --- a/tutorials/vecops/vo001_AdoptOrOwnMemory.C +++ b/tutorials/vecops/vo001_AdoptOrOwnMemory.C @@ -24,7 +24,6 @@ void vo001_AdoptOrOwnMemory() { // One of the essential features of RVec is its ability of adopting and owning memory. - // Internally this is handled by the ROOT::Detail::VecOps::RAdoptAllocator class. // Let's create an RVec of UponCopyPrinter instances. We expect no printout: RVec v(3); diff --git a/tutorials/vecops/vo001_AdoptOrOwnMemory.py b/tutorials/vecops/vo001_AdoptOrOwnMemory.py index cfdb250f4698e..77b6be6243589 100644 --- a/tutorials/vecops/vo001_AdoptOrOwnMemory.py +++ b/tutorials/vecops/vo001_AdoptOrOwnMemory.py @@ -26,7 +26,6 @@ class UponCopyPrinter { RVec_UponCopyPrinter = ROOT.ROOT.VecOps.RVec(ROOT.UponCopyPrinter) # One of the essential features of RVec is its ability of adopting and owning memory. -# Internally this is handled by the ROOT::Detail::VecOps::RAdoptAllocator class. # Let's create an RVec of UponCopyPrinter instances. We expect no printout: v = RVec_UponCopyPrinter(3) From 6d63b44739bfd0e6ae08b9409f4eb16d7a34dda0 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 29 Sep 2021 15:54:04 +0200 Subject: [PATCH 262/577] [PyROOT] Allow multiple digits in version numbers --- bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py b/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py index a403f31b53512..dfdb58d90bf0a 100644 --- a/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py +++ b/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py @@ -69,7 +69,7 @@ # tell cppyy that libcppyy_backend is versioned def _check_py_version(lib_name, cbl_var): import re - if re.match('^libcppyy_backend\d_\d$', lib_name): + if re.match('^libcppyy_backend\d+_\d+$', lib_name): # library name already has version if lib_name.endswith(py_version_str): return '' From 50be12dfb20a0e2434d4cadf6a4cda2ca7792462 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:48:04 +0200 Subject: [PATCH 263/577] [DF] Fix MakeTrivialDataFrame + Define This fixes the problem reported at https://root-forum.cern.ch/t/rtrivialds-can-not-define-new-column-with-function/47038. --- tree/dataframe/inc/ROOT/RTrivialDS.hxx | 4 ++-- tree/dataframe/src/RTrivialDS.cxx | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RTrivialDS.hxx b/tree/dataframe/inc/ROOT/RTrivialDS.hxx index 7f57093c23088..9c7712855529d 100644 --- a/tree/dataframe/inc/ROOT/RTrivialDS.hxx +++ b/tree/dataframe/inc/ROOT/RTrivialDS.hxx @@ -48,9 +48,9 @@ public: }; // Make a RDF wrapping a RTrivialDS with the specified amount of entries -RInterface MakeTrivialDataFrame(ULong64_t size, bool skipEvenEntries = false); +RInterface MakeTrivialDataFrame(ULong64_t size, bool skipEvenEntries = false); // Make a RDF wrapping a RTrivialDS with infinite entries -RInterface MakeTrivialDataFrame(); +RInterface MakeTrivialDataFrame(); } // ns RDF diff --git a/tree/dataframe/src/RTrivialDS.cxx b/tree/dataframe/src/RTrivialDS.cxx index 62be9808d9ff4..efca7237cdb96 100644 --- a/tree/dataframe/src/RTrivialDS.cxx +++ b/tree/dataframe/src/RTrivialDS.cxx @@ -121,17 +121,17 @@ std::string RTrivialDS::GetLabel() return "TrivialDS"; } -RInterface MakeTrivialDataFrame(ULong64_t size, bool skipEvenEntries) +RInterface MakeTrivialDataFrame(ULong64_t size, bool skipEvenEntries) { auto lm = std::make_unique(std::make_unique(size, skipEvenEntries), RDFInternal::ColumnNames_t{}); - return RInterface(std::move(lm)); + return RInterface(std::move(lm)); } -RInterface MakeTrivialDataFrame() +RInterface MakeTrivialDataFrame() { auto lm = std::make_unique(std::make_unique(), RDFInternal::ColumnNames_t{}); - return RInterface(std::move(lm)); + return RInterface(std::move(lm)); } } // ns RDF From 12359c2326a701aed1f2b2ef4cb7a38354fcb558 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 12:53:28 +0200 Subject: [PATCH 264/577] [NFC][DF] Clarify in docs that RTrivialDS is only a demonstrator. And point to superior alternatives. --- tree/dataframe/inc/ROOT/RTrivialDS.hxx | 9 +++++++-- tutorials/dataframe/df010_trivialDataSource.C | 5 ++++- tutorials/dataframe/df010_trivialDataSource.py | 7 +++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RTrivialDS.hxx b/tree/dataframe/inc/ROOT/RTrivialDS.hxx index 9c7712855529d..bd36d232e1979 100644 --- a/tree/dataframe/inc/ROOT/RTrivialDS.hxx +++ b/tree/dataframe/inc/ROOT/RTrivialDS.hxx @@ -18,6 +18,9 @@ namespace ROOT { namespace RDF { +/// \brief A simple data-source implementation, for demo purposes. +/// +/// Constructing an RDataFrame as `RDataFrame(nEntries)` is a superior alternative. class RTrivialDS final : public ROOT::RDF::RDataSource { private: unsigned int fNSlots = 0U; @@ -47,9 +50,11 @@ public: std::string GetLabel(); }; -// Make a RDF wrapping a RTrivialDS with the specified amount of entries +/// \brief Make a RDF wrapping a RTrivialDS with the specified amount of entries. +/// +/// Constructing an RDataFrame as `RDataFrame(nEntries)` is a superior alternative. RInterface MakeTrivialDataFrame(ULong64_t size, bool skipEvenEntries = false); -// Make a RDF wrapping a RTrivialDS with infinite entries +/// \brief Make a RDF wrapping a RTrivialDS with infinite entries, for demo purposes. RInterface MakeTrivialDataFrame(); } // ns RDF diff --git a/tutorials/dataframe/df010_trivialDataSource.C b/tutorials/dataframe/df010_trivialDataSource.C index 1777f0a35583c..9fa553edad9c9 100644 --- a/tutorials/dataframe/df010_trivialDataSource.C +++ b/tutorials/dataframe/df010_trivialDataSource.C @@ -11,6 +11,9 @@ /// - https://github.com/root-project/root/blob/master/tree/dataframe/src/RTrivialDS.cxx /// - https://github.com/root-project/root/blob/master/tree/dataframe/inc/ROOT/RTrivialDS.hxx /// +/// Note that RTrivialDS is only a demo data source implementation and superior alternatives +/// typically exist for production use (e.g. constructing an empty RDataFrame as `RDataFrame(nEntries)`). +/// /// \macro_code /// /// \date September 2017 @@ -28,7 +31,7 @@ int df010_trivialDataSource() /// Now we redo the same with a RDF from scratch and we draw the two histograms ROOT::RDataFrame d(nEvents); - /// This lambda redoes what the TTrivialDS provides + /// This lambda redoes what the RTrivialDS provides auto g = []() { static ULong64_t i = 0; return i++; diff --git a/tutorials/dataframe/df010_trivialDataSource.py b/tutorials/dataframe/df010_trivialDataSource.py index d99e1e664c415..e45b6e08d5b90 100644 --- a/tutorials/dataframe/df010_trivialDataSource.py +++ b/tutorials/dataframe/df010_trivialDataSource.py @@ -4,9 +4,12 @@ ## Use the "trivial data source", an example data source implementation. ## ## This tutorial illustrates how use the RDataFrame in combination with a -## RDataSource. In this case we use a TTrivialDS, which is nothing more +## RDataSource. In this case we use a RTrivialDS, which is nothing more ## than a simple generator: it does not interface to any existing dataset. -## The TTrivialDS has a single column, col0, which has value n for entry n. +## The RTrivialDS has a single column, col0, which has value n for entry n. +## +## Note that RTrivialDS is only a demo data source implementation and superior alternatives +## typically exist for production use (e.g. constructing an empty RDataFrame as `RDataFrame(nEntries)`). ## ## \macro_code ## From 75e26763f6ba38503b70366dc39645093bf94fef Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 23:03:13 +0200 Subject: [PATCH 265/577] [DF][NFC] Fix a comment in a RDF tutorial --- tutorials/dataframe/df001_introduction.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/dataframe/df001_introduction.C b/tutorials/dataframe/df001_introduction.C index 1395ca7a86cb8..efc9ec9270fb2 100644 --- a/tutorials/dataframe/df001_introduction.C +++ b/tutorials/dataframe/df001_introduction.C @@ -86,7 +86,7 @@ int df001_introduction() // ### `Take` action // The `Take` action allows to retrieve all values of the variable stored in a // particular column that passed filters we specified. The values are stored - // in a list by default, but other collections can be chosen. + // in a vector by default, but other collections can be chosen. auto b1_cut = d.Filter(cutb1); auto b1Vec = b1_cut.Take(); auto b1List = b1_cut.Take>(); From 85449bdf2b000a5eb54df6597d524efac0813fb0 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 15:17:15 +0200 Subject: [PATCH 266/577] [NFC][relnotes] Mention RDF's DefinePerSample --- README/ReleaseNotes/v626/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index 141faf0d2a0f0..58b5da1b7db91 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -76,6 +76,7 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). - Add `Redefine` to the `RDataFrame` interface, which allows to overwrite the value of an existing column. - Add `Describe` to the `RDataFrame` interface, which allows to get useful information, e.g. the columns and their types. - Add `DescribeDataset` to the `RDataFrame` interface, which allows to get information about the dataset (subset of the output of Describe()). +- Add [DefinePerSample](https://root.cern/doc/master/classROOT_1_1RDF_1_1RInterface.html#a29d77593e95c0f84e359a802e6836a0e), a method which makes it possible to define columns based on the sample and entry range being processed. It is also a useful way to register callbacks that should only be called when the input dataset/TTree changes. - `Book` now suports just-in-time compilation, i.e. it can be called without passing the column types as template parameters (with some performance penalty, as usual). - As an aid to `RDataSource` implementations with which collection sizes can be retrieved more efficiently than the full collection, `#var` can now be used as a short-hand notation for column name `R_rdf_sizeof_var` From c3379833d6b2907356aae04b699c8252766b35f8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 18:53:35 +0200 Subject: [PATCH 267/577] [DF] Use different files for different test cases --- tree/dataframe/test/dataframe_samplecallback.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx index 7c1ec7e9c4f87..188d58dd31717 100644 --- a/tree/dataframe/test/dataframe_samplecallback.cxx +++ b/tree/dataframe/test/dataframe_samplecallback.cxx @@ -154,7 +154,7 @@ TEST_P(RDFSampleCallback, TTreeSampleID) { } TEST_P(RDFSampleCallback, TChainSampleID) { - const std::string prefix = "rdfdatablockcallback_tchain"; + const std::string prefix = "rdfdatablockcallback_tchainsampleid"; InputFilesRAII file(5u, prefix); ROOT::RDataFrame df("t", prefix + "*"); auto result = df.Book<>(SampleHelper(), {}); From c58c57100d702ea990948b0137c85f161b5b7484 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 21:26:13 +0200 Subject: [PATCH 268/577] Do not rely on transitive include of RtypesCore.h in TApplicationRemote --- net/net/inc/TApplicationRemote.h | 1 + 1 file changed, 1 insertion(+) diff --git a/net/net/inc/TApplicationRemote.h b/net/net/inc/TApplicationRemote.h index 404deef073af7..3bd6c1fbb7a80 100644 --- a/net/net/inc/TApplicationRemote.h +++ b/net/net/inc/TApplicationRemote.h @@ -30,6 +30,7 @@ #include "TNamed.h" #include "TMessage.h" #include "TSysEvtHandler.h" +#include "RtypesCore.h" // for Longptr_t class THashList; From 6560b1c21be24a25bd19f5a5dae5fe7058e44ff5 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 29 Sep 2021 10:03:15 -0700 Subject: [PATCH 269/577] Fix build error using gcc8 --- graf3d/eve7/inc/ROOT/REveSystem.hxx | 4 ---- graf3d/eve7/src/REveManager.cxx | 4 ---- 2 files changed, 8 deletions(-) diff --git a/graf3d/eve7/inc/ROOT/REveSystem.hxx b/graf3d/eve7/inc/ROOT/REveSystem.hxx index ad85756411a5c..6147b3c32d4ef 100644 --- a/graf3d/eve7/inc/ROOT/REveSystem.hxx +++ b/graf3d/eve7/inc/ROOT/REveSystem.hxx @@ -34,11 +34,7 @@ struct REveServerStatus std::time_t fTLastConnect = 0; std::time_t fTLastDisconnect = 0; ProcInfo_t fProcInfo; // To be complemented with cpu1/5/15 and memgrowth1/5/15 on the collector side. -#if defined(R__LINUX) || defined(_MSC_VER) - std::timespec fTReport = {0, 0}; -#else std::time_t fTReport = 0; -#endif int n_active_connections() const { return fNConnects - fNDisconnects; } }; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index 9ea3a009f623e..fd1f80adbdac7 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -1109,11 +1109,7 @@ void REveManager::GetServerStatus(REveServerStatus& st) { std::unique_lock lock(fServerState.fMutex); gSystem->GetProcInfo(&fServerStatus.fProcInfo); -#if defined(R__LINUX) || defined(_MSC_VER) - std::timespec_get(&fServerStatus.fTReport, TIME_UTC); -#else fServerStatus.fTReport = std::time_t(nullptr); -#endif st = fServerStatus; } From 0c9c50bebf1725fe3c68ae8835e37814e548d997 Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 29 Sep 2021 11:14:18 -0700 Subject: [PATCH 270/577] Add defines for Windows build. --- graf3d/eve7/inc/ROOT/REveSystem.hxx | 4 ++++ graf3d/eve7/src/REveManager.cxx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/graf3d/eve7/inc/ROOT/REveSystem.hxx b/graf3d/eve7/inc/ROOT/REveSystem.hxx index 6147b3c32d4ef..8f6e633213bf8 100644 --- a/graf3d/eve7/inc/ROOT/REveSystem.hxx +++ b/graf3d/eve7/inc/ROOT/REveSystem.hxx @@ -34,7 +34,11 @@ struct REveServerStatus std::time_t fTLastConnect = 0; std::time_t fTLastDisconnect = 0; ProcInfo_t fProcInfo; // To be complemented with cpu1/5/15 and memgrowth1/5/15 on the collector side. +#if defined(_MSC_VER) + std::timespec fTReport = {0, 0}; +#else std::time_t fTReport = 0; +#endif int n_active_connections() const { return fNConnects - fNDisconnects; } }; diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index fd1f80adbdac7..be9fb814cb9fb 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -1109,7 +1109,11 @@ void REveManager::GetServerStatus(REveServerStatus& st) { std::unique_lock lock(fServerState.fMutex); gSystem->GetProcInfo(&fServerStatus.fProcInfo); +#if defined(_MSC_VER) + std::timespec_get(&fServerStatus.fTReport, TIME_UTC); +#else fServerStatus.fTReport = std::time_t(nullptr); +#endif st = fServerStatus; } From a7ac1f5696d3f4e3e2136e86bf5f11a362d0f5e3 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Thu, 30 Sep 2021 13:07:19 +0200 Subject: [PATCH 271/577] [ntuple] Remove warning `Warning: Unused class rule: PackedContainer` --- tree/ntuple/v7/test/CustomStructLinkDef.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/test/CustomStructLinkDef.h b/tree/ntuple/v7/test/CustomStructLinkDef.h index e021d2dcc333f..cc2b358148f94 100644 --- a/tree/ntuple/v7/test/CustomStructLinkDef.h +++ b/tree/ntuple/v7/test/CustomStructLinkDef.h @@ -12,6 +12,6 @@ #pragma link C++ class IAuxSetOption+; #pragma link C++ class PackedParameters+; -#pragma link C++ class PackedContainer+; +#pragma link C++ class PackedContainer+; #endif From 18bc1a50f71aa792e3b38ad63d859c64bfd7cf0a Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 15:03:47 +0200 Subject: [PATCH 272/577] [VecOps] Add the Drop operation + test + release notes --- README/ReleaseNotes/v626/index.md | 1 + math/vecops/inc/ROOT/RVec.hxx | 23 +++++++++++++++++++++++ math/vecops/test/vecops_rvec.cxx | 8 ++++++++ 3 files changed, 32 insertions(+) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index 58b5da1b7db91..470ea470d159e 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -92,6 +92,7 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). ## Math Libraries - I/O support of `RVec` objects has been optimized. As a side-effect, `RVec`s can now be read back as `std::vector`s and vice-versa. +- added `ROOT::VecOps::Drop`, an operation that removes `RVec` elements at the specified indices ## RooFit Libraries diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 3078639acdce2..eb58b814f769d 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -2192,6 +2192,29 @@ RVec Take(const RVec &v, const int n) return r; } +/// Return a copy of the container without the elements at the specified indices. +template +RVec Drop(const RVec &v, RVec::size_type> idxs) +{ + RVec r; + r.reserve(v.size() - idxs.size()); + + // clean up input indices + std::sort(idxs.begin(), idxs.end()); + idxs.erase(std::unique(idxs.begin(), idxs.end()), idxs.end()); + + auto discardIt = idxs.begin(); + using sz_t = typename RVec::size_type; + for (sz_t i = 0u; i < v.size(); ++i) { + if (discardIt != idxs.end() && i == *discardIt) + ++discardIt; + else + r.emplace_back(v[i]); + } + + return r; +} + /// Return copy of reversed vector /// /// Example code, at the ROOT prompt: diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 0b06d3c5c4134..fc991b204fce8 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -748,6 +748,14 @@ TEST(VecOps, TakeLast) CheckEqual(v2, none); } +TEST(VecOps, Drop) +{ + RVec v1{2, 0, 1}; + // also test that out-of-bound and repeated indices are ignored + auto v2 = Drop(v1, {2, 2, 3}); + CheckEqual(v2, RVec{2,0}); +} + TEST(VecOps, Reverse) { RVec v0{0, 1, 2}; From 6704fc8c8455e82df3658e08f64f1770d32e9609 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 10:32:34 +0200 Subject: [PATCH 273/577] [SQUASH] Update README/ReleaseNotes/v626/index.md Co-authored-by: Bernhard Manfred Gruber --- README/ReleaseNotes/v626/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index 470ea470d159e..c36b8b4d0ecaf 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -92,7 +92,7 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). ## Math Libraries - I/O support of `RVec` objects has been optimized. As a side-effect, `RVec`s can now be read back as `std::vector`s and vice-versa. -- added `ROOT::VecOps::Drop`, an operation that removes `RVec` elements at the specified indices +- added `ROOT::VecOps::Drop`, an operation that removes `RVec` elements at the specified indices. ## RooFit Libraries From 91030ab4782ee69af5440c6013276513b211a485 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 10:32:42 +0200 Subject: [PATCH 274/577] [SQUASH] Document that duplicated/out-of-range indices are ignored. --- math/vecops/inc/ROOT/RVec.hxx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index eb58b814f769d..54a578ae5acd2 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -2193,6 +2193,8 @@ RVec Take(const RVec &v, const int n) } /// Return a copy of the container without the elements at the specified indices. +/// +/// Duplicated and out-of-range indices in idxs are ignored. template RVec Drop(const RVec &v, RVec::size_type> idxs) { From 2dea78f06b8ea195d862f9db47f93544a34faa61 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 10:33:00 +0200 Subject: [PATCH 275/577] [SQUASH] Increase test coverage --- math/vecops/test/vecops_rvec.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index fc991b204fce8..5589e94e8e0fa 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -751,9 +751,14 @@ TEST(VecOps, TakeLast) TEST(VecOps, Drop) { RVec v1{2, 0, 1}; + // also test that out-of-bound and repeated indices are ignored auto v2 = Drop(v1, {2, 2, 3}); CheckEqual(v2, RVec{2,0}); + + EXPECT_EQ(Drop(RVec{}, {1, 2, 3}).size(), 0u); + EXPECT_EQ(Drop(RVec{}, {}).size(), 0); + CheckEqual(Drop(v1, {}), v1); } TEST(VecOps, Reverse) From deb4c7cde7f15b1ba11d75a8d218a93d73d1bcd3 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 10:43:26 +0200 Subject: [PATCH 276/577] [SQUASH] Avoid integer underflow in size calculation --- math/vecops/inc/ROOT/RVec.hxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 54a578ae5acd2..dfee57e37b108 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -2199,7 +2199,8 @@ template RVec Drop(const RVec &v, RVec::size_type> idxs) { RVec r; - r.reserve(v.size() - idxs.size()); + if (v.size() > idxs.size()) + r.reserve(v.size() - idxs.size()); // clean up input indices std::sort(idxs.begin(), idxs.end()); From 81eb906a8590cf5474d78d6557c9e3fa1d89d22e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 18:28:52 +0200 Subject: [PATCH 277/577] [SQUASH] Reserve after cleaning up indices --- math/vecops/inc/ROOT/RVec.hxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index dfee57e37b108..4badba6114c46 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -2198,14 +2198,14 @@ RVec Take(const RVec &v, const int n) template RVec Drop(const RVec &v, RVec::size_type> idxs) { - RVec r; - if (v.size() > idxs.size()) - r.reserve(v.size() - idxs.size()); - // clean up input indices std::sort(idxs.begin(), idxs.end()); idxs.erase(std::unique(idxs.begin(), idxs.end()), idxs.end()); + RVec r; + if (v.size() > idxs.size()) + r.reserve(v.size() - idxs.size()); + auto discardIt = idxs.begin(); using sz_t = typename RVec::size_type; for (sz_t i = 0u; i < v.size(); ++i) { From c9058a3a2962d13b33fe922b4a47080875378099 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 1 Oct 2021 09:31:25 +0200 Subject: [PATCH 278/577] [DF] Remove special treatment of RVec in Snapshot We took special care of RVec columns when Snapshotting because we did not have a handle to a proper `bool*` (`std::vector::data` does not exist). With the new implementation of RVec, `RVec` behaves just like any other RVec and we can remove the special-casing. --- tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx | 138 ++---------------- 1 file changed, 14 insertions(+), 124 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx index 8b303b66e2e8e..eb765c3fbbb71 100644 --- a/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx @@ -1105,70 +1105,6 @@ public: std::string GetActionName() { return "Display"; } }; -// std::vector is special, and not in a good way. As a consequence Snapshot of RVec needs to be treated -// specially. In particular, if RVec is filled with a (fixed or variable size) boolean array coming from -// a ROOT file, when writing out the correspinding branch from a Snapshot we do not have an address to set for the -// TTree branch (std::vector and, consequently, RVec do not provide a `data()` method). -// Bools is a lightweight wrapper around a C array of booleans that is meant to provide a stable address for the -// output TTree to read the contents of the snapshotted branches at Fill time. -class BoolArray { - std::size_t fSize = 0; - bool *fBools = nullptr; - - bool *CopyVector(const RVec &v) - { - auto b = new bool[fSize]; - std::copy(v.begin(), v.end(), b); - return b; - } - -public: - BoolArray() = default; - BoolArray(const RVec &v) : fSize(v.size()), fBools(CopyVector(v)) {} - BoolArray(const BoolArray &b) = delete; - BoolArray &operator=(const BoolArray &b) = delete; - BoolArray(BoolArray &&b) - { - fSize = b.fSize; - fBools = b.fBools; - b.fSize = 0; - b.fBools = nullptr; - } - BoolArray &operator=(BoolArray &&b) - { - delete[] fBools; - fSize = b.fSize; - fBools = b.fBools; - b.fSize = 0; - b.fBools = nullptr; - return *this; - } - ~BoolArray() { delete[] fBools; } - std::size_t Size() const { return fSize; } - bool *Data() { return fBools; } -}; -using BoolArrayMap = std::map; - -inline bool *UpdateBoolArrayIfBool(BoolArrayMap &boolArrays, RVec &v, const std::string &outName) -{ - // create a boolArrays entry - boolArrays[outName] = BoolArray(v); - return boolArrays[outName].Data(); -} - -template -T *UpdateBoolArrayIfBool(BoolArrayMap &, RVec &v, const std::string &) -{ - return v.data(); -} - -// Helper which gets the return value of the data() method if the type is an -// RVec (of anything but a bool), nullptr otherwise. -inline void *GetData(ROOT::VecOps::RVec & /*v*/) -{ - return nullptr; -} - template void *GetData(ROOT::VecOps::RVec &v) { @@ -1182,7 +1118,7 @@ void *GetData(T & /*v*/) } template -void SetBranchesHelper(BoolArrayMap &, TTree *inputTree, TTree &outputTree, const std::string &inName, +void SetBranchesHelper(TTree *inputTree, TTree &outputTree, const std::string &inName, const std::string &name, TBranch *&branch, void *&branchAddress, T *address, RBranchSet &outputBranches) { @@ -1239,7 +1175,7 @@ void SetBranchesHelper(BoolArrayMap &, TTree *inputTree, TTree &outputTree, cons /// In case of 1., we keep aside the pointer to the branch and the pointer to the input value (in `branch` and /// `branchAddress`) so we can intercept changes in the address of the input branch and tell the output branch. template -void SetBranchesHelper(BoolArrayMap &boolArrays, TTree *inputTree, TTree &outputTree, const std::string &inName, +void SetBranchesHelper(TTree *inputTree, TTree &outputTree, const std::string &inName, const std::string &outName, TBranch *&branch, void *&branchAddress, RVec *ab, RBranchSet &outputBranches) { @@ -1268,7 +1204,7 @@ void SetBranchesHelper(BoolArrayMap &boolArrays, TTree *inputTree, TTree &output "TClonesArray as a Snapshot template parameter to write out a TClonesArray instead.", inName.c_str()); } if (outputBranch) { - branchAddress = GetData(*ab); + branchAddress = ab->data(); outputBranch->SetAddress(&branchAddress); } else { auto *b = outputTree.Branch(outName.c_str(), ab); @@ -1286,9 +1222,7 @@ void SetBranchesHelper(BoolArrayMap &boolArrays, TTree *inputTree, TTree &output const auto rootbtype = TypeName2ROOTTypeName(btype); const auto leaflist = std::string(bname) + "[" + counterStr + "]/" + rootbtype; - /// RVec is special because std::vector is special. In particular, it has no `data()`, - /// so we need to explicitly manage storage of the data that the tree needs to Fill branches with. - auto dataPtr = UpdateBoolArrayIfBool(boolArrays, *ab, outName); + auto dataPtr = ab->data(); if (outputBranch) { if (outputBranch->IsA() != TBranch::Class()) { @@ -1301,32 +1235,8 @@ void SetBranchesHelper(BoolArrayMap &boolArrays, TTree *inputTree, TTree &output outputBranch = outputTree.Branch(outName.c_str(), dataPtr, leaflist.c_str()); outputBranch->SetTitle(inputBranch->GetTitle()); outputBranches.Insert(outName, outputBranch); - // Record the branch ptr and the address associated to it if this is not a bool array - // The case of RVec is taken care of by the `UpdateBoolArrayIfBool` call above - if (!std::is_same::value) { - branch = outputBranch; - branchAddress = GetData(*ab); - } - } -} - -// generic version, no-op -template -void UpdateBoolArray(BoolArrayMap &, T&, const std::string &, TTree &) {} - -// RVec overload, update boolArrays if needed -inline void UpdateBoolArray(BoolArrayMap &boolArrays, RVec &v, const std::string &outName, TTree &t) -{ - // in case the RVec does not correspond to a bool C-array - if (boolArrays.find(outName) == boolArrays.end()) - return; - - if (v.size() > boolArrays[outName].Size()) { - boolArrays[outName] = BoolArray(v); // resize and copy - t.SetBranchAddress(outName.c_str(), boolArrays[outName].Data()); - } - else { - std::copy(v.begin(), v.end(), boolArrays[outName].Data()); // just copy + branch = outputBranch; + branchAddress = ab->data(); } } @@ -1345,7 +1255,6 @@ class SnapshotHelper : public RActionImpl> { const ColumnNames_t fInputBranchNames; // This contains the resolved aliases const ColumnNames_t fOutputBranchNames; TTree *fInputTree = nullptr; // Current input tree. Set at initialization time (`InitTask`) - BoolArrayMap fBoolArrays; // Storage for C arrays of bools to be written out // TODO we might be able to unify fBranches, fBranchAddresses and fOutputBranches std::vector fBranches; // Addresses of branches in output, non-null only for the ones holding C arrays std::vector fBranchAddresses; // Addresses of objects associated to output branches @@ -1381,7 +1290,6 @@ public: SetBranches(values..., ind_t{}); fBranchAddressesNeedReset = false; } - UpdateBoolArrays(values..., ind_t{}); fOutputTree->Fill(); } @@ -1404,22 +1312,15 @@ public: template void SetBranches(ColTypes &... values, std::index_sequence /*dummy*/) { - // create branches in output tree (and fill fBoolArrays for RVec columns) + // create branches in output tree int expander[] = { - (SetBranchesHelper(fBoolArrays, fInputTree, *fOutputTree, fInputBranchNames[S], fOutputBranchNames[S], + (SetBranchesHelper(fInputTree, *fOutputTree, fInputBranchNames[S], fOutputBranchNames[S], fBranches[S], fBranchAddresses[S], &values, fOutputBranches), 0)..., 0}; (void)expander; // avoid unused variable warnings for older compilers such as gcc 4.9 } - template - void UpdateBoolArrays(ColTypes &...values, std::index_sequence /*dummy*/) - { - int expander[] = {(UpdateBoolArray(fBoolArrays, values, fOutputBranchNames[S], *fOutputTree), 0)..., 0}; - (void)expander; // avoid unused variable warnings for older compilers such as gcc 4.9 - } - void Initialize() { fOutputFile.reset( @@ -1480,7 +1381,6 @@ class SnapshotHelperMT : public RActionImpl> { const ColumnNames_t fInputBranchNames; // This contains the resolved aliases const ColumnNames_t fOutputBranchNames; std::vector fInputTrees; // Current input trees. Set at initialization time (`InitTask`) - std::vector fBoolArrays; // Per-thread storage for C arrays of bools to be written out // Addresses of branches in output per slot, non-null only for the ones holding C arrays std::vector> fBranches; // Addresses associated to output branches per slot, non-null only for the ones holding C arrays @@ -1494,7 +1394,7 @@ public: const RSnapshotOptions &options) : fNSlots(nSlots), fOutputFiles(fNSlots), fOutputTrees(fNSlots), fBranchAddressesNeedReset(fNSlots, 1), fFileName(filename), fDirName(dirname), fTreeName(treename), fOptions(options), fInputBranchNames(vbnames), - fOutputBranchNames(ReplaceDotWithUnderscore(bnames)), fInputTrees(fNSlots), fBoolArrays(fNSlots), + fOutputBranchNames(ReplaceDotWithUnderscore(bnames)), fInputTrees(fNSlots), fBranches(fNSlots, std::vector(vbnames.size(), nullptr)), fBranchAddresses(fNSlots, std::vector(vbnames.size(), nullptr)), fOutputBranches(fNSlots) { @@ -1549,7 +1449,6 @@ public: SetBranches(slot, values..., ind_t{}); fBranchAddressesNeedReset[slot] = 0; } - UpdateBoolArrays(slot, values..., ind_t{}); fOutputTrees[slot]->Fill(); auto entries = fOutputTrees[slot]->GetEntries(); auto autoFlush = fOutputTrees[slot]->GetAutoFlush(); @@ -1578,24 +1477,15 @@ public: void SetBranches(unsigned int slot, ColTypes &... values, std::index_sequence /*dummy*/) { // hack to call TTree::Branch on all variadic template arguments - int expander[] = {(SetBranchesHelper(fBoolArrays[slot], fInputTrees[slot], *fOutputTrees[slot], - fInputBranchNames[S], fOutputBranchNames[S], fBranches[slot][S], - fBranchAddresses[slot][S], &values, fOutputBranches[slot]), - 0)..., - 0}; + int expander[] = { + (SetBranchesHelper(fInputTrees[slot], *fOutputTrees[slot], fInputBranchNames[S], fOutputBranchNames[S], + fBranches[slot][S], fBranchAddresses[slot][S], &values, fOutputBranches[slot]), + 0)..., + 0}; (void)expander; // avoid unused variable warnings for older compilers such as gcc 4.9 (void)slot; // avoid unused variable warnings in gcc6.2 } - template - void UpdateBoolArrays(unsigned int slot, ColTypes &... values, std::index_sequence /*dummy*/) - { - (void)slot; // avoid bogus 'unused parameter' warning - int expander[] = { - (UpdateBoolArray(fBoolArrays[slot], values, fOutputBranchNames[S], *fOutputTrees[slot]), 0)..., 0}; - (void)expander; // avoid unused variable warnings for older compilers such as gcc 4.9 - } - void Initialize() { const auto cs = ROOT::CompressionSettings(fOptions.fCompressionAlgorithm, fOptions.fCompressionLevel); From 5b365b14107fce338a17f3d44cca321025fec66a Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Thu, 23 Sep 2021 14:10:39 +0200 Subject: [PATCH 279/577] Set the CXX_STANDARD_STRING to 201703L on Windows --- cmake/modules/CheckCompiler.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/CheckCompiler.cmake b/cmake/modules/CheckCompiler.cmake index 437d84b47077c..6d7b324ec1430 100644 --- a/cmake/modules/CheckCompiler.cmake +++ b/cmake/modules/CheckCompiler.cmake @@ -115,7 +115,7 @@ include(CheckCCompilerFlag) # so we check the value of __cplusplus. # This default value can be overridden by specifying one at the prompt. if (MSVC) - set(CXX_STANDARD_STRING 2011) + set(CXX_STANDARD_STRING "201703L") else() execute_process(COMMAND echo __cplusplus COMMAND ${CMAKE_CXX_COMPILER} -E -x c++ - From 9e555a6f801e4f536c727da44ab276cffb4dcc37 Mon Sep 17 00:00:00 2001 From: moneta Date: Wed, 29 Sep 2021 15:59:27 +0200 Subject: [PATCH 280/577] Fix xhandling of returned PyObject from the C Python API functions.. When returned objects are borrowed and they need to be reused we increase the reference count, but we make sure we don't decrease the count if it was not increased. This should fix an issue observed in the Conda builds. See https://root-forum.cern.ch/t/pymva-crashes-with-conda-root/46945 When the return object are created we decrease the count if they are not anymore used. --- tmva/pymva/src/PyMethodBase.cxx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx index 442f2d279eae1..11f11daecdfff 100644 --- a/tmva/pymva/src/PyMethodBase.cxx +++ b/tmva/pymva/src/PyMethodBase.cxx @@ -136,22 +136,26 @@ void PyMethodBase::PyInitialize() _import_array(); } + // note fMain is a borrowed reference fMain = PyImport_AddModule("__main__"); if (!fMain) { Log << kFATAL << "Can't import __main__" << Endl; Log << Endl; } + Py_INCREF(fMain); fGlobalNS = PyModule_GetDict(fMain); if (!fGlobalNS) { Log << kFATAL << "Can't init global namespace" << Endl; Log << Endl; } + // no need to increase reference for fGlobalNS, since it is linked to fMain? #if PY_MAJOR_VERSION < 3 //preparing objects for eval PyObject *bName = PyUnicode_FromString("__builtin__"); // Import the file as a Python module. + // returns a new reference fModuleBuiltin = PyImport_Import(bName); if (!fModuleBuiltin) { Log << kFATAL << "Can't import __builtin__" << Endl; @@ -168,26 +172,34 @@ void PyMethodBase::PyInitialize() } #endif + // note mDict is a borrowed reference PyObject *mDict = PyModule_GetDict(fModuleBuiltin); fEval = PyDict_GetItemString(mDict, "eval"); fOpen = PyDict_GetItemString(mDict, "open"); + // fEval and fOpen are borrowed referencers and we need to keep them alive + if (fEval) Py_INCREF(fEval); + if (fOpen) Py_INCREF(fOpen); + // bName is a new reference (from PyUnicode_FromString) Py_DECREF(bName); - Py_DECREF(mDict); + //preparing objects for pickle PyObject *pName = PyUnicode_FromString("pickle"); // Import the file as a Python module. + // return object is a new reference ! fModulePickle = PyImport_Import(pName); if (!fModulePickle) { Log << kFATAL << "Can't import pickle" << Endl; Log << Endl; } PyObject *pDict = PyModule_GetDict(fModulePickle); + // note the following return objects are borrowed references fPickleDumps = PyDict_GetItemString(pDict, "dump"); fPickleLoads = PyDict_GetItemString(pDict, "load"); + if (fPickleDumps) Py_INCREF(fPickleDumps); + if (fPickleLoads) Py_INCREF(fPickleLoads); Py_DECREF(pName); - Py_DECREF(pDict); } /////////////////////////////////////////////////////////////////////////////// @@ -195,12 +207,13 @@ void PyMethodBase::PyInitialize() void PyMethodBase::PyFinalize() { - Py_Finalize(); if (fEval) Py_DECREF(fEval); + if (fOpen) Py_DECREF(fOpen); if (fModuleBuiltin) Py_DECREF(fModuleBuiltin); if (fPickleDumps) Py_DECREF(fPickleDumps); if (fPickleLoads) Py_DECREF(fPickleLoads); if(fMain) Py_DECREF(fMain);//objects fGlobalNS and fLocalNS will be free here + Py_Finalize(); } /////////////////////////////////////////////////////////////////////////////// From 6dc60002c9642a627e47658efdb9ee179e2fc465 Mon Sep 17 00:00:00 2001 From: moneta Date: Fri, 1 Oct 2021 10:42:03 +0200 Subject: [PATCH 281/577] Increase reference count for fGlobalNS --- tmva/pymva/src/PyMethodBase.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx index 11f11daecdfff..f678903b7e952 100644 --- a/tmva/pymva/src/PyMethodBase.cxx +++ b/tmva/pymva/src/PyMethodBase.cxx @@ -94,6 +94,7 @@ PyMethodBase::PyMethodBase(Types::EMVA methodType, PyMethodBase::~PyMethodBase() { + // should we delete here fLocalNS ? } /////////////////////////////////////////////////////////////////////////////// @@ -149,7 +150,7 @@ void PyMethodBase::PyInitialize() Log << kFATAL << "Can't init global namespace" << Endl; Log << Endl; } - // no need to increase reference for fGlobalNS, since it is linked to fMain? + Py_INCREF(fGlobalNS); #if PY_MAJOR_VERSION < 3 //preparing objects for eval @@ -213,6 +214,7 @@ void PyMethodBase::PyFinalize() if (fPickleDumps) Py_DECREF(fPickleDumps); if (fPickleLoads) Py_DECREF(fPickleLoads); if(fMain) Py_DECREF(fMain);//objects fGlobalNS and fLocalNS will be free here + if (fGlobalNS) Py_DECREF(fGlobalNS); Py_Finalize(); } From da170a477fdb0450ea9b448e539f26cca403a083 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 1 Oct 2021 13:08:33 +0200 Subject: [PATCH 282/577] Import the old user's guide into the reference Guide. (#9059) --- ...oltree.png => geom_composite_shape001.png} | Bin .../images/geom_composite_shape002.png | Bin 0 -> 34150 bytes .../images/geom_composite_shape003.png | Bin 0 -> 55229 bytes .../images/geom_composite_shape004.png | Bin 0 -> 206702 bytes .../doxygen/images/geom_primitive_shapes.png | Bin 0 -> 24090 bytes documentation/doxygen/images/geometry001.png | Bin 0 -> 277012 bytes documentation/doxygen/images/geometry002.jpg | Bin 0 -> 30771 bytes documentation/doxygen/images/geometry003.png | Bin 0 -> 42036 bytes documentation/doxygen/images/geometry004.png | Bin 0 -> 61273 bytes documentation/doxygen/images/geometry005.png | Bin 0 -> 8694 bytes documentation/doxygen/images/geometry006.png | Bin 0 -> 31304 bytes documentation/doxygen/images/geometry007.png | Bin 0 -> 99408 bytes documentation/doxygen/images/geometry008.png | Bin 0 -> 80614 bytes documentation/doxygen/images/geometry009.png | Bin 0 -> 588952 bytes documentation/doxygen/images/geometry010.png | Bin 0 -> 34500 bytes documentation/doxygen/images/geometry011.png | Bin 0 -> 27691 bytes documentation/doxygen/images/geometry012.png | Bin 0 -> 176333 bytes documentation/doxygen/images/geometry013.jpg | Bin 0 -> 50752 bytes documentation/doxygen/images/geometry014.png | Bin 0 -> 26914 bytes documentation/doxygen/images/geometry015.png | Bin 0 -> 135910 bytes documentation/doxygen/images/geometry016.png | Bin 0 -> 30302 bytes documentation/doxygen/images/geometry017.png | Bin 0 -> 38248 bytes documentation/doxygen/images/geometry018.png | Bin 0 -> 32756 bytes documentation/doxygen/images/geometry019.png | Bin 0 -> 2202725 bytes documentation/doxygen/images/geometry020.png | Bin 0 -> 23758 bytes documentation/doxygen/images/geometry021.png | Bin 0 -> 2217796 bytes documentation/doxygen/images/geometry022.jpg | Bin 0 -> 45641 bytes documentation/doxygen/images/geometry023.jpg | Bin 0 -> 48620 bytes documentation/doxygen/images/geometry024.jpg | Bin 0 -> 71111 bytes documentation/doxygen/images/geometry025.jpg | Bin 0 -> 68726 bytes geom/geom/doc/index.md | 3101 ++++++++++++++++- geom/geom/doc/materials.md | 311 ++ geom/geom/doc/shapes.md | 283 ++ geom/geom/src/TGeoArb8.cxx | 113 +- geom/geom/src/TGeoBBox.cxx | 75 +- geom/geom/src/TGeoCompositeShape.cxx | 290 +- geom/geom/src/TGeoCone.cxx | 41 +- geom/geom/src/TGeoElement.cxx | 2 +- geom/geom/src/TGeoEltu.cxx | 14 +- geom/geom/src/TGeoHalfSpace.cxx | 19 +- geom/geom/src/TGeoHelix.cxx | 2 +- geom/geom/src/TGeoHype.cxx | 92 +- geom/geom/src/TGeoMaterial.cxx | 4 +- geom/geom/src/TGeoMedium.cxx | 2 +- geom/geom/src/TGeoPara.cxx | 31 +- geom/geom/src/TGeoParaboloid.cxx | 52 +- geom/geom/src/TGeoPcon.cxx | 54 +- geom/geom/src/TGeoPgon.cxx | 31 +- geom/geom/src/TGeoPolygon.cxx | 2 +- geom/geom/src/TGeoShape.cxx | 6 +- geom/geom/src/TGeoShapeAssembly.cxx | 2 +- geom/geom/src/TGeoSphere.cxx | 23 +- geom/geom/src/TGeoTorus.cxx | 26 +- geom/geom/src/TGeoTrd1.cxx | 13 +- geom/geom/src/TGeoTrd2.cxx | 11 +- geom/geom/src/TGeoTube.cxx | 66 +- geom/geom/src/TGeoVolume.cxx | 4 +- geom/geom/src/TGeoXtru.cxx | 107 +- geom/geompainter/src/TGeoChecker.cxx | 2 +- geom/geompainter/src/TGeoOverlap.cxx | 2 +- geom/geompainter/src/TGeoPainter.cxx | 2 +- geom/geompainter/src/TGeoTrack.cxx | 2 +- 62 files changed, 4376 insertions(+), 409 deletions(-) rename documentation/doxygen/images/{geom_booltree.png => geom_composite_shape001.png} (100%) create mode 100644 documentation/doxygen/images/geom_composite_shape002.png create mode 100644 documentation/doxygen/images/geom_composite_shape003.png create mode 100644 documentation/doxygen/images/geom_composite_shape004.png create mode 100644 documentation/doxygen/images/geom_primitive_shapes.png create mode 100644 documentation/doxygen/images/geometry001.png create mode 100644 documentation/doxygen/images/geometry002.jpg create mode 100644 documentation/doxygen/images/geometry003.png create mode 100644 documentation/doxygen/images/geometry004.png create mode 100644 documentation/doxygen/images/geometry005.png create mode 100644 documentation/doxygen/images/geometry006.png create mode 100644 documentation/doxygen/images/geometry007.png create mode 100644 documentation/doxygen/images/geometry008.png create mode 100644 documentation/doxygen/images/geometry009.png create mode 100644 documentation/doxygen/images/geometry010.png create mode 100644 documentation/doxygen/images/geometry011.png create mode 100644 documentation/doxygen/images/geometry012.png create mode 100644 documentation/doxygen/images/geometry013.jpg create mode 100644 documentation/doxygen/images/geometry014.png create mode 100644 documentation/doxygen/images/geometry015.png create mode 100644 documentation/doxygen/images/geometry016.png create mode 100644 documentation/doxygen/images/geometry017.png create mode 100644 documentation/doxygen/images/geometry018.png create mode 100644 documentation/doxygen/images/geometry019.png create mode 100644 documentation/doxygen/images/geometry020.png create mode 100644 documentation/doxygen/images/geometry021.png create mode 100644 documentation/doxygen/images/geometry022.jpg create mode 100644 documentation/doxygen/images/geometry023.jpg create mode 100644 documentation/doxygen/images/geometry024.jpg create mode 100644 documentation/doxygen/images/geometry025.jpg create mode 100644 geom/geom/doc/materials.md create mode 100644 geom/geom/doc/shapes.md diff --git a/documentation/doxygen/images/geom_booltree.png b/documentation/doxygen/images/geom_composite_shape001.png similarity index 100% rename from documentation/doxygen/images/geom_booltree.png rename to documentation/doxygen/images/geom_composite_shape001.png diff --git a/documentation/doxygen/images/geom_composite_shape002.png b/documentation/doxygen/images/geom_composite_shape002.png new file mode 100644 index 0000000000000000000000000000000000000000..93e7c4df192d22553a5f6d054c1fa3417bdb882a GIT binary patch literal 34150 zcmeFYbx>YS(>DkN5(2>k1Sb$YKyY_=cXxNWa0|gD5Znpw?j8v4?(Xg`-??(vO!-j)^fItuv6_kg7c!doC0YwK31w0Yr zRuhDPfGaf<5RerU5FnJbw=p)eG=hK-MJS0gQB;`24!B_>YZ*l)A|$ztxTI_eAQF8e z_g0KBvkMuPh*|Kph^`egQfPyB6r2GP<%1kD)iG_jj?zy75 z4TjKc$H~F0)H~+s1W|~FHuM$5`v7M$yDC;JasnX>Zjn#JuOTXgHrxiPgybWH5^03V zf+`(x-TL3{NU)g&P~|d3tu5#0zJ-ALHiVG}!OI=eoyeB*o)PKpb$=XxDK9Jp%-2es zz>)2rhhHnzguCe}LS>o7?={k5+USx~KMnL5=k>Z6Q}6PO`FcXD{dBwz*&}!vAtl!G zJDzbI6Vwn_Ru@FRC&_S+8_;_Y9;8q2iB6ky)QmYo=N|C0RNnl2K>{gP^;syPIiy7apWy+7O@Z%@RVNNf@!Osq^+^togwJ~TWOtu7j*IhkMV5*W7oii?*^LDy1 zvMz15a~=k|(TxK8wkafa2sI=sXJvBNj68L0n0e@RnPqBO<#WX_ZYzv8JnVcv(}<_H zPE0r;OZ+l=Xh#$7yZ%0K9d$&F?1S9?I>l0(#w`%yRGU=&BS!XVRbtw1$xb4j8h^w$ ztcm&Y{@0=_-xXiAYjj^O_b21m~a8VGFiz{#C`q0L#xA-1d3 z+eNs<64r&23}n)M<$`|*>;8++_EYl*X`Y-aJD*zkkN| zdjAr|OKOTz{MO6g#qYZ;Z~mu4vXoDn#GE9OsOUlWf+qUpQ4*SbpNXf@nu1k=v%18h ziTb{8iidp4iJp!s6fMbi$bOSuXGpIWcqphXit+uTPia$N6Mj?goGb+OxBt47ScWKh zGI@9me!o_~24$={?^Q;(LRCR>{?H`Dq{w8XJtG@DTO6*6b%|!UX44{5gUY#}tEa2X z9m%=tdF;8!W?6rmA|d4mau=#{^l9=*az~0q zMO{jiit~An!e;&fqmE|FjEGiTC27tP%;G&`2z#I1C|mr!zAwuVs3^Ln{}}M_bsQ0LBtO3a!R;^`i^Gu1)ouANFba{j%tq7R&KwEQf^_H zdD1?{6yj8%`3EMnns4R7%2Q zr!&ZAhoh`nXYxNX_c9X;)iPb>9VA0@w{l5F3rE>=u2KpHFAZ}UiV{o`H|F=}A?Hz# zTIQeTf3OFz%dx|-Td^ZKi8V$v_BEn6wlr?Isk?o2E4oy_Jl;dQ!n?Y=U$}a>|Jk`d#o6L|c2PTckbE;VK1{z< zxqRLl8?BU~g#QpFK#J zd1GU8GPTUb9TeFnQz6q<7Htz_Q*%PhgV*-H4WrG@o8u++nG15(C&PytvQ7>AGh$I9 z6aFr8J^QI8G6^|RKKrg+xmY=CJqI-6+jn!==eoYnP-}h>vdH~#OW5~c2ETk}IGp)b z|4k3x0)zW)9h?sOGA3WBDs~0Wx@WeEq1xsXc^0{tqD{4jBfq1=W#EVOg!6>VS=Wjp z1KOT~-*4C1H_pz+&JfPfLOn38G#Ha~<7H!PEh^U57k^{M=TnR6*y|TO%3qHY2hVmT zbUg*@%w`_4UkjpA6)>BnYz)l}yLMcyD%kG%riY1V8Hc2|D9ar*2737OD#_XjuP&;Vi zezNZMtHdyIGMeC=@^)PUc)ALzhf8iZ;7ej795 zarH$&B1$u=e)sxyJVKLq*CY9Dg?H9aHy%zKx!tZJNMoCn2LjP`xseqLdEE;EVE zK5Z54LJd}(TK(NL#tpU9R>+p?7O{pvZLP`|st~GWD~-k@{T!>U}_)Wy^pXV*jXrILy!!Lw?a>;6i-W ziI}IO=gLR~4+~2^Qw*br)q7?{rf)2%R?eo@%Vn)?#W2=U)nRy|tY2(LcXUmPTo0C+ zg*Ey<+KSrm-q8lPEwbY}*53qeL``Sii MWELS98t~paNObvq}ru^)$-M9S)y6$ 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geom_composite_shape003.png b/documentation/doxygen/images/geom_composite_shape003.png new file mode 100644 index 0000000000000000000000000000000000000000..bf103b43255671be5f986574be32936af1e07ffb GIT binary patch literal 55229 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

lVeL-tO_7^Hxt6!_aOr`&1)R054t;A4d87JU%5= z=lOzbsLjl3t|oYqc8m%YLs-1MZ#*5VguPmX}S+$l8_4-sF$e^*;GWl*&0cuMR4)L{Ms#=E`@_F}X`k@E`kKUq_H_xjYx2T#% z7LY)Y;V-C~@40x@#yz$^N--f#IPb^_$t{ILrbSY`!hBh`x0-)nAxxFl6@RDG_+IU6 zQLmgy-wmT16z5Rnf%#EWHb{AwhrN(=V7NAtA3Tp+2Ogqm9qWW=8-^a_Ic#_ z$%d@TU(V?Xg}wENfXfM(yqHHhuPG&{So7)o%$RS7#3g;tyW1pD7D&=}UpY@*H+Qs# za-gmST+8%5&vou5nC#TIf}yZ5baM8_W~^3P`f88h&#%PbTq5#cJWEmr#hV)fiYPga z={3u=U$y#PM0aK028fTZHw7FmB(JI7MmdQF9&_0AZhZRTmph2OlFcz4sBQ8(}B7wU;}>XUA^w*$0wZ@cGU+E3cV{7X|T zc_e?HH@8hTxU{JX!)}|gLm!~;`0gX()f<<;=l<#cn}3Oi8K?S>Z+?R=nQ``&aY3g9 zBGK%&82xlJnp1Rz7JTfx?N`%4ip#cYg_lHkKK+*CQAQ$0=Csuh|I1B$2+E5D&p=k% zw24dEmRG&rDq8r$vga|vCViY?N%&nEx>JzEcZvZ|jYH{vi@&stHQjQ}TakvsuH|l- zS8p!1kA|iPE!D_~Iq(A-1hlXmNt4ySz-__r-*k0u3EyFn759R1=u95srALgtI?-0> zV;7H5N~_H*c3kU2Tn*(vy%;kBnpM1V#K^G)M1naF?nC#0Le@B!1%i#+uhGXhqF5P6 z%4IxyVP*}gYT7xBOJ1~D1_C|brg(hSAYMEO97&ew=oDwG{mVilY!EY<(4(*I%6Aj!8toRMwRhxfVvz_4B`0=?*B8+s9E zOJ)cX93Nt$^PCX%!ta={!JuAg?W!|fs9bfK%%?FuG33D>d2fTw*wCD-T}4DZ^g@O3{+yjfB)^+sH&opQ>9QhBd~xIF#qixDh>{g)KV4`+~-I^Vc|e& zY3aR%E?2RBqzD^ii>9=>q*VjgInz3}FEF9e?G;8{&OKNfpXGzh;UUq;n5|~$(>NW3 zC43&{@kp0)@oiB1M@MJmIF_bDQr5I6`1thR@SgYsG{}_osX1MpPMA=WdpkSkasU{J zx#LUVE65ROBCi7$zWamf%LVKa%9CCPNDmJWJTAwNCT%&9Oa`q!_+0Kl;Q0?B1~z|p z1p9B`69NwHsDFRM3S@0R5wyHmt$(~~K@wgVAXDSCX#R(J`kxn#0Ev`Thm$`%=l{4U z-~IO#jEsz?C0>l#E?(2mXJI4_w))0%THn`=ZqUok{sA>kr+A3v2h!`+1oO iP64>r|NTP*Ji}J=GM9BysPVl5ex$_YMazW^1OFH7q!n=h literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geom_composite_shape004.png b/documentation/doxygen/images/geom_composite_shape004.png new file mode 100644 index 0000000000000000000000000000000000000000..a69137f6cc53904503fd3103950b5cbb0b794524 GIT binary patch literal 206702 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

RD zt}h`6+z%k{bPq4u`^va>f5kVfc+XP0en*5i4JfU#ZHEmVbak$Vc8HY@JdS>p+%p6}dGE5UjGY|~I_t+ZbRfGwO8kmRcXCN3}AiMQeUO7W_0M&2{24(Qz=G z(TufztepvDUE1G1lpG`VCgA!33)so2b)e#&yp$jx|(hS*G#3EcU37TfClH&W^wjapjcrA>S} zQKm@E@^6^yuOyj`8Z{@RK44AYXRHCc*U1Al>NY6{1-4EK$MOcU)4(nC+p>iVNPhU2iMXc4Ck&eUA5&Ht_pY@P zg*e*(skfDirt!}Wo5jKz{1?C1>?=2KJ^h`y3^~C{_0>5jpZEqj)h%4KuGQszZ@A|J z9YT1_^Me}*Co+TvPNNg8jM+UAi7LXIjIMGYOd9i!h3vO73f1?TO#It|^&W zzu157EG&tc7J4SrDAGg(czV2wDx6(tM>DD6Tz-d$o#NkiyDvFG?heu}Ct(Bs48ASZ zEBWa}+c?N+5vKNHx^I|a-IZX4~F z=!{7p$=~s5=awmViH6|IQV*>5Aqt@XEwG64|8{}yU%+!=UQwT;FksSkPwdDp1%&=4 z@RF3e@mkOEB|*?pq*3>q*sc?;&JC@?%8^c^^>}inqj=>3eLy7eiCd~n=OY9U9gWXo z9B)}Hb|-86N)5#3nD*R-QuOr3ulQ$iKzGMYsb+Sx*V@Lt^WM`=ljeMpVlv;wrY^8e zV%Pa5P~&$`bw|B047RJF8=d~k^b>`}F(~kqtvJ6kC{Zp4D^btU#jTSw9Il^3P(Si2 zKb@FnaQyDBk7_S@Fa6TE^%tVegP1@2oFNP;GZaqljaw!U-4G7P9jLy6b?i;wKNH#RP}>Z=u^rMe^rwKE?waqI zL?_PLL%peT_Me_td@lZ!Fl#S+vF>|+{5r9-r@reHv~=K4AC&XvvTuvPBL?Yl&N?Yl1Ip8fQYu{MWae2vm6B-cR{Rxi8w-* zz6%+eX^?6T5d7DEECetSC17Ml3;EexFYueg^4>E-EOM{-oZZmCAH~h4Yi*-Hpx$tE zw_T6xj0-fo{w+rIbKXv;Uww~dqn>lsC)e_+_aP_IiK0#9wQka)7RUydQGv-##W8?ADRLZxOiGJX68cmx=0@9T~cWB=?8KE6i>V7N7O+6GwNTZ4Uy*v3ixFT$x z_%Bs-o5x->1mnA-cIb3@xGp>M{&ccd(d|Mn`Yqgp$%-!L5OiY)CD1Z{i~Zp_6wD^QQVpM(%lcUq=G$pdCl}H5Oru zr@)pxO_ufU>o@6^{*C%a1Ll@+6r+VwW@;hLd^t>^!ejG==bia4Y$JB-Z&oirK+r3K zZfj0jmCDX}p|>h4NhPm(FuyONAoi>so}RiHrgj~jPLFh)_*{FfA9wl|E_R(%#oxP`p(nH7O|AXSicLPmj^9SOVP}Rx6^R*>UKRi zfI2=0iHmBSB~FskS~NV%PtX^Hy_Y8O%1g`se5?RrvH9 zi^_uY9d@)v{$v%_s{}$vM1%^HbP95V_0Yu=j`xE@Z^-3bl39tDsh`j~PC!Y95P|Fn zvB>wFcYj$uDT^U(=P_$PyDIaC+ONG~dpnjMW8=xd!yny+u#(BzdU8+v)aqM%^8R*B z?Kfb&6!yE7!`|k$T<|>2VG|gxITyO?fj(l5%n4p5i}!r(>Q;xK9ce-|q3#mE7l_4x z0(K_sO9{Q2dwvg;5B-=2u7BNN0Ix-mh%ot`d+kL9v z_jg^_bKK7#*L@t%{XEZc+<%($#LVaYIX~~^wT$8XI97N}70K?AjI{Z=vMD+h1FIp= z*t#ok@B?)}l_&8Ds^nYI>lIs_j<=auG^~bjI>W%kV|!JJoMJz{l~h)O;xw_6js4w! zb|m*|Dy_TuQG1(`%Y`FiBbNWB^x{5 zMg6wh=Z$xT7Xi$Wk?PP2%KT;lKx!i1^xdgguAjv5M$9skV~kKxhWe$+F^a zC2VRxYwkNU`?+ATUfd zd={OV_y~9>_jK#MP}FxXOdNaedZ&IbYbghm3_jUSygz=c8bAB~`+c}xh_;&!#WdT` zSUUEI+a|r-RU?Q@zn33@Y)(!w-afMJ21$%Fjw|LF7xY6iTitgFH7MIT=?l< z0MFB;5ck9OO;zJ}fD&3cZisBsSA811e7jpipdtLH5deZ^f7~IJruB;!S9Nnn5u74G zy>i|(@N@4Tfyy|Ebd8cH)0Ixou}qU0*>c%d%0AKKhQG{lI#&U)38ypfYX*Rx%AE_7 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 z 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

?M1EyANn%BJto5ob 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry005.png b/documentation/doxygen/images/geometry005.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5fbad43f34673697ed523413bd8747778826ff GIT binary patch literal 8694 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry007.png b/documentation/doxygen/images/geometry007.png new file mode 100644 index 0000000000000000000000000000000000000000..57649cc9ed2509453aa92f807e3d3abad4c94276 GIT binary patch literal 99408 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry009.png b/documentation/doxygen/images/geometry009.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5b2576080c0a5747709c9dd7c1e4ad3b6e43cb GIT binary patch literal 588952 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/Zgv-YSz*!5xV;JBE4PvmQ=z_6Nu1D?=%oq6# z;QS!X-9V*+E+T}PPw)l)Gn^1jYti_sFj^Svxe#lgZnU=yejVpF=MHJPxC`QRdGrS( zyjCGC1DSx#tC+M&d71n zaz{wv+hF`}RkWP+fsr<^v%H*gix!Jp0JL>q_O&3<(|7d&s#4;My_jb1*62X(-heR2 z^&^n+rN9`yPHmnS%?=*+-#0UdwSzUFMomjpn%*wCQ?{@2yM&e(LAc_Jm<9ZyQhj#> zBI&7*qvU5Oi0Av>rWZy1svx%;YAM>T8R&)`umH<)1!2_Nt+_)k5mlo)FrRh^& z0;QxDr@nM3F*S+;qT2g=CNx6dnGi(~*T?BG1Zh3N{6xzv3g$|h#=cKuCRvuh%H z77m?#jkpPc%Rjkx8Li2-iVX4H|5%YRWw7}G-z70EUwGG~pZm;>Z8 zzq{1Z(f%r&u7_s3XTwE^R>*?RdoH<&7Hd?G&4I~(OTD+w1_d^58MuB;D>mN+k4>nnwTy~N@)v?nNgcBRN+q6_~ zeCxr&dc4lF8I)U2mAN}k1Rt9Bl^;3P>yBtve^zAR78nDaXTDe4R{ErX)1bU23u)H! z1QH$!CO(^GQAS4mQ`|RWLR>}+aZtGS30&{l>{IKGBfv-)akoHh#U4rvcX{9!|2o1} zhpYK*!I#o*vrN~*2N7b05qd)7Bo_O3ut)0v;g_pTn?!f@#b+I#g+vP7SjAo$69kX> z&+MRT2VepWVx)Is{cN309meVSqLaj^m!*&;8 z{q-#KxYkZZ1bEfOci6*DUYpeNtS`nu^7e6bE3#d-7OFlkNifDBlUB+S5zzs zwQUoD-_aZ{Z@!g;bW&pB4|b4xJRJ4EFm%Xs#7DbQE30?PipbpJO`f0L^6;CSy4LC$8|xK(u>Xgc6KyH_7kC zo}O|JE}b0i*R>@-n!oQIzGqvAZ>-G6PtVQIa1o;;%~DEC11t>-iA<6~BOh^pH|}NK z9X5A+OU3%ojbh+WHZMXME*>=m8qK;Fj(84Vn{{NS0<>lwt8N1;isLcM=;wK*H%f1| zvZsJWel6>TrZlD}Xz7ZLaaS&alIMYS`zRxYj?u5DjtNkVFA=>wh+R-P#Y<<-uI*cg z&ktTV@oP`duA%VkA_DD$#@_=2_j4CnCRzOEq5H`gvgyQDz8_VNp3tzVVxkO1oJ}CU zg4lm3^;3-8qxqOo@=UxGF!UsW;Y*ko(GvB{|M;^1D$yj>=%`-|w(G|)cx%R6o4J~PVHiE0XZ>p$QWk9b&2;od zv1GMTyEudlVOB1hLjErqWInD{Zc|h8?g4OnTYdM^3-5aSWo~CPaj=^EoN?4!P4CUm zQxM01`uSaemV(~oxCzP`bhwr~>W-Z8orLL2KsEzXKdX7_(D76 z^b_O5cBJ5U)H0|i=gC(ukvF8h%JIl0RQ% zX7zf&I{qjJe(&*nZY)YFpP1bZ@>&fTDXz0MNpal=YnrQ(ObFBSc~} zbU9Sz4q;x6YrYA`=gy${m^DnwojN6^Gk z(X?J5EeL85DW<}B25Y4moa(?1c0~o3-Z=RBFAM?)h}Zk;*Qe*T?6vpb$9yhagIh&e zL=Losg(z69Srb-!bl$;XI9Q?^|D10SlKmMxftRS$$hc!df?RaXbPY&Y z?w;VrPx3G&1i&G%_)L)@iZjy9<2J-&2i=tk&J7}^E6^4&@?lz5GzZInU!4-^hrHQ~ z_Iq**hPPaw0GwN}omwGFa0H~D3r~Om4Vg#m;jZF~{R0Qfwftk>Z>CFzCpz?)-NC6} zS32a~t+W)^6B_N$#20hS?uWlhuGZT!-S6miJk3GdK|y5chfVNU z%A?#b-|gUhUfh^ZLG$8BKP|v-j2$kxH$Q{D2Jqglhn(dT;V%WQawL0Jq!r$eRkr$6 zUTTLjW4vR1b4`onX?~0`94X(6K+G>_VUvgPQ!EGxyhmj-LVQrP5Osk6nPSVIYGwhZ zpFvtw9Kf^+k_{+BhU5VO=~+a5c8^EjU5Lkl=4P+%2o*xeNxx`>OhDSu7|*Q zv`qt-Zv`((JZ+ZMUQcKr7LHY)^0AKoEzI&>+MxP#7%DDS=|I)ecc=R|-;+i)h9g+w z0fjpKZ}$v6av=FD^!o;c+9C`DP4o(+$65HXDa*lmh94@?;F*)2=TYk^!trLJua~OB z!ZyuyR54rBtR)~?JovFcpf3_^&&6T-XX6=5|HsD?FiQSP2QP4g-!ANd@EZS5o#h!% zzcBT?H`=AbSj5oG$UY}ztK@;`bh21#Ch(82)AUY!9PxNORgC(j78dm`m441KK|m(s zQp`vQmcR+2s*m|G)2r64`@wvD>}c)bcR*AqD`GeK&7tAoZ#YZeq6yNJ|5w_w1NtYN z^BDxNCwX(2QEolzssJ3I9Qg=6L^hu-4E}c4x&8yjr2hE~Un%(gOP9PE*nzO0mTaec z2H&G*99YXKIkQ&$mi$Os#0cCXOMB!z}+=Te* z@Vo@zMQ~8J-XaG3#`~`E$Au(|yE`Jxow6*o%1jAt`16B~qL%L2|0J>=^Bze*=26DP z{uCw`Uu1_HN-P?=RmQc0>IlWesfn6bx%B}hI)WsKm=Dx?qu6|frJt{jbJ{X$H}_S_ ze8iloLF|vWd=R1%%XS2tq_sgu`T9FyWL#G;Inh%0r(fl0BIo{tcwb&yke`JvY=tbr z6%>0So|m`7P7*T$yCc)9tMI)e9~4F9zA}<*X^#S}Fc{UzokAt$S-N>1=v)Of@@G5j zy`pxpH*zVVkvGg(4yEbwXnfe3J)pWAFv$)*0qhvu+y3FRl7@5}w@FwLj1%im`73>A zTXn54qzLR*fqNX%ELyNE9RfiwpEPlX}cwo{xF#aRuE zHR?PQ-=E3TiwGR(ZqmV&BWsPFjHGfW=@UI|s(|+I9h^0CoV(_qF@0K|A-$9m0U<=qfY6bX`BsBI*?-k*4CKFD=7V(`7)i`Gk>s7)!=DRSjO|O} zMC-tM@1Pj#RulbK+eETi2T0+WQ6NGtADX@}_W!^XFT(=c`O8I+S|oy?DDYE!YUnX# zWs$UZz`pDDj(3=6l<5Z1!%;af3kr}3$}D}Z&g2)yxTm>Cz%8(+teMKzCr75K2{boGEUsE&Q&F@WGG zR)cx45Y?v$5kSfXS8L!!6XMs_Eu_`N-zV|Oa&Sm$k$j_g23+($#dYa=6N~Ni_dqmK z;kea>&(2YZ>g>s=Tp+%voA-PZ8R~ZWXha_$8N2tM4Fp`0CBAtNpk4eP|IUnX`eLVa zGw1=k{kZ2YeBD*eO@s~a*q3*3fSn*I$ep*sYZv4Q>2GyaNtPmT>`xNdX{6nk81nxO zpn*+hytUo3KGWjEI5bnH3YUx`9VAe*AbRnaNm0);&mf(x2`!qLNC}|)_-mLpi+sQ% z_?XQzLTixh7RF_`h{$t3RB2f!YI{!*x6{r@E%xtwNMvcxTx>9Qd^Yo|A{(FXTQ7!i zjjIyf%GyFo4z;?-K!YL8R~Dx^eC4z-j5N`2s#bML;}L_2VDVF(-eC84gT~RYNbrU6 z&sykUqy@O=Y#svRlF{;bZ~DAHAM~3~ks^B91PRMZ0^+HR8(eyAn(djkO1t(1%3D6{ zvYmL@ri*?p|GK|+uQ=7@<2&ai6bP_7^4TXRDERGp zE#qK==-vvtx1|;}vWtJ2H2560UZHkD&Hg(qfW4t%w~saA@MUW_I6T!|<`X?%2l@NV zdT5AKxq|5zt3FMUk&K;<#xj2HDT?UP-uCHn5?QwgLRu7vW0+@JD`4%(`iqmPLJbt) z_JsOXtp49N9tHgLO@b%&?#s+=Y~BA{)p{H3x+}5I{|!GJ*$szk7K%s%lkZuc`HA!W z1Wufilfp)c%Wts*xfFjUZMSWwhM82T-QF6M;R!5pDdu{d)+Hs4Ob~6qR^Y~)=r<40 z=Mr+w#5;E+$CV>VCwiQYrHDt>>_jjzzv+j4V1k!CA~G0#ZOqK+#`##iA16tA%dz61^SQ_0ddqH^8piv-FH1#_rl%2~bKMZzrbxGO->mB?4HnVCf z9O8rT2ktosh}_pR)}Xz}*zNdV$7~=q;svi@0e!^<7zDRh$2td6e9A$DOxtRLNd%(p zqRQDnM}IY)JUnz#rd7%dL=bLTO%%(ftBxn@WTe(<0BngRz_ZdAX$rn!AR!|h0Gvfw zWFkdqpUPu_NeYhY2twUtLunyd@1aG_g$j8rsHS_GYEcYqHtdRZ+&b_50ZT2ZbVExHr5ni?M zv(E7~yWvdqFVHEu@WT#xZ?Yn{m-jEr}}2H2h99i~D^1 zPv6~PfF?>Hi49m-bZoS5p%E?;rio6qd;#u01`^5+&mGIMW=Pqp)x;2{AdM8M*30js+y!e<>?&*NEC%#9 zlwU-hvOFL5lwWqtRvCIP$C~Z)dLRCbE)P6vP&|^w;s{OpB6(xyPsLwNz0tjsMUD?R zP(b}9JL?Q<_{tK#>|!uudDhSat++As$h_J1tK-r+VLJ|EO4`vfU_j(qYDxQwdBZ^T zB#WGcLJz8=VGy>TGeh95Bc#S%U93 z!&c4hc7Y-aCJ4$F*4PbQzW`ErzyiWMU49YzI>nZ6buX4{mbp)+c?N9-Vih|7ZoKGFF~WIL-%SR`B-3X&IOd=k93I+J4xq@dQ6~UK?LZAmMG% zye#j&P8oT%+95jMBk4=^FiI|wqr!tQh9W|Gi-Z5Jzb{$At9JL1#M>lZ{CBi0{DYR< zD#eha*SJ_0I)pRNqD%U@(&0C=`MiYE3%trxYj`?zJ6f)SYRjgGj!;vp2?rhjJM6=q z!*tK?*zZc}CAjy}HO;P|LBZ5*8?|vBWP;WZ)2@WCr=KjU$006t{Wh6n6tss4Z@YZz z-YL89d}3IUP;*|4yhV=2LG@ocxXmi}y62(7F`C2{a~$`(hq%&6)V1fCc0%8{8B?YW zU^KEIrTjf0ZG(fv;NLH~qMs6}Q~N*XJab4aN^`5oB359|A|oihs^)zP5gwIY6e*(d zr%$~i--7*l4*WM>ow!DJ6X^|X?N@-ZmvC$tL?r|vT zo4&LD;rC^M?`@UxVk+{5rfy!aOJtSKYPPr=iJ&zWFrlHy<*K(79S&-Pbq3SzKf3-X zzj~mWfARF*e{f9z7B&8YE$%LLP`IBjb@Ua}7J5H8-NM5mK>W+XUGhIRek83?x{i{( zZ$kK+bb}79bz-L-1+}(Q<;P^j0}W4p47)&%e)>XNl>Rp#N3qvGI#+dkq!+q@mU+Cv z`44t1?*BVO>G0D99q&@$I}I10(R+(4nUf9twQ69O%n^=g+^V?pDnE{}&}p}#b>*fc zYTcydN2^@ky`$w<;Cg2uy+?n*vsFDNuA(ySUnbAuzETw@$uJvSu_~1MG%_hXIt~IB z_HKAdb3~5R{bS03f%&G52DI}-pc_|THyi3L4|Q29jnfPE@Xo8x>gRz3U%pHBdKWEM z$qN9s9yOOPP}^4q38pFClkL^Zms)=^ulxGarK&oar-eOb;u$l-NUgb}j-pKHQn^KMOIWtyB71J_yQ7LBY z9OnM-n~1^#V3TTsKkQ8~mB(sU%(vMjSI{{@J+TVADRn$L?^|y&&C1NfE!^C*g3%{jv5E5M|eH};$^F{MB08tnxg;htK7Q@_OJf>xt$= zKlWd5dP?L?+C$*Y6&I@?HOJrO?&*r<7L>}snBDA4eYb^ww7cJnwcRLI^{Kz#CZ|;O z89yweU#o7_VEzkl7r0?vFAUTiMIZMcec;hmJ~@xt!ZPITLw-AWi#d;^Z>N=b)We*k zG{;a2hDCrcu`4J^Wcj2~6_CHlmy?*HcWaYh^0?R1BBwv?jmi+S z@I{>EJkw3RCMM|pDxQ8F*&b1^)yu4j#x%2t4;8Q%yhg!fHVr9hGtUZkypTkE#Ik+d zu1enYb~%*Rgc7mc6{MC1%=-0nT$tXbysA_F#7vH{}I4bZg$h~EAx=_A`RZlzc{i!6%Mlx z=h)VJ8lLvfF>E*?EpK1Me>B7i4OhtW=TdRz_Kl7vA5}THcJm^Pw#@Qv>9I)$4a{RG#*Ub6S$R*%RJ8An<&7`uCPvssI z3Eyo2*xyqPG3}A@Y};3cuDdr52f@VQkDxqYNpeLZcH7W=S=Q zZz<3W)@|3rPCbZ@z6bzEnW9l4Xxfh^p>3rz9ODPEMvqs%xJ`Flui|J1nZNhHw;9$d z`paHIF@)uxPLd?Ci?RM{1_W`GHsv7!GE>1nLjp!x=R-~&Q%9laGcsYgMDlxQ(;x7) zIq3&zgB~j0>eh>*YRx~aNN%BN>=p*c4NfMhunXhSel)HnWtffuv=lPkAkN-5oWn}- zD$fQ~d1)P{zRWKI+QBdKCo<1AraAs}B*Ht$ytoVUUBSvYCV>?DMM6=UE>KiolYkW^ zHx9zI4b{7u?_qc)lN(7F&)eH-492Tf(AC$DA9|R+T*=lPwWtzqFn_h!RKv-0WjFfr z@=rduGW<2Nr=`JjQcKMyo7poR+hbLY38KHQ1(&U0LJVg11iPo}GqRAphlU6cWJg#- z(FZ!HL_0s7S~<8kJ14l{OTn1len`K_VU>Y^5k0KuGZ%xw_v!lD-C_L}4j6o!XyW2A z6Ck?YfI{XeWTd^8CULpSnIIZW-mFUcPkVLk)MSS#mOkP~W@lZl8C%<5@fK9m(ra=o z##PLTZ~*H7oZM&vekq?>^#cj?XvWI*dxB`Ddi|7%#pwfVD4XJcf@<*xJjJ}K?6fbE ztOoo(Y5PN$th@ir;$p2Y6Q_l4QWcXi((<7N)%m#;WN_i|S;HvQsiJ=t3)vCI@#6y< zqFp>JSjAa%2ZBe6+ZiDd!O^XASl-1bOY%p8Rtne|4!Lv1HrZPzOd)TyR~YFwKU3)?RU zFGPIccW-L>8toa_}TVY`b(*xRZ6@UAC#EW>C5!q`STDO0j;BL?9+y3 z^Ieu2wX5hPCu`}vQ0DFm+gFVzYgG-hBgTk&l{|voXS-Qo?r++5?@qi>Ij)@o`)8MJ zOx{0Y)3IFZS#Gctzu2uH+6{HLPsI>p$C!x?L(uNrUUuWW8R*js>2YCOzerGj-w6~JjRaDhOj6Z9cTYbeZd)~1=>#|Js0R zk3S_EdAhsE=;`(V-iRuna39ZHTbARkJ{15_Xi)*SsRe<+aqDtQy-Y|9YWT2eT83Lg zFTVi>%!iYJ?K~@y9tqQvqckGZnQ(Ul!MIxZVF-7C#bL`Zt@>7y*ThL7B;C-Si9?Eb zvBX$}xLLt{n>sc6&evRItiF-y64#!eTSJ?Y%*V&D{Hqfo!!WSpnh`ekRiAd9N{wx8 zuh5M#h3K~T)1Os*CCu(UWCHFB^iLH1?clsXGOJidT#vW@{Zh8L?1SaBA+j;-58)^k^%1eX7V zFqMeFHrw1;PPZ|A{*yPKy)_u+p>T<{WUPqA_xa9?*&EG>N2~nQa>+tzKnYIboX`js z+Y`queHHknDD1VIbKYTq+qX;25TcV(Ly?K0D&GoWKwboA6P9AHCu5~DeQ%v<>D>xP zqW7bcApgGPBDQhiT$wRNK1Ga${b{?uLQOMEWmYc78IiB!Xpr_lyzfw6kyHrZgKNJ5 zp75WLIGTl(KzRVq--kg4UE58Q3{(y78XX?;M|1kMM#?7m@vV*Cq}Z8Op46hhk*zz( ztuIs9r8-?q$1>t@V7k%ykrem~#Eam^xa2H2D#L&&q; zamc1ZiFM!2)ur%pl}a)+?Ugo~ICUR!A||<}ue}ywA2BB8hg~Pl&rt1iegZ=#IzJmq zWUE8+aB8`O_AJ{MQncNVRD^j7=?{70H)o2FZm`f!KGsty#!qN(4IkKM95n`WxA!XZ z>J@JFq)(>%HsoSJh_(5z;>pu8a%x_;ptZX7&azx`mMzN6HoV04Y7Np}qgP}XAJOG; zqViYsM>I=)?ARGYQiu|PLdu8?f$E1B`?9#$QOG3eG7muL_`R6!MMVwxBjvbe(Q#9`Y$ZRlz`MZZ@2OAl&Sp< zNf92k8E@w~wfu9+QpQd14&=Wwh4lM z!H&*9?E<)^77Uw))xLQwD*p+Cqpd&Oilxl4?7Jp25w!GT-KVR~VXgbZ8ub5FR2)T3 zZRwuEWXUr6$}}=*sq%{)t)}uqlPn9GAaM!QN^>{gv3Ignz}!Bbvt1d)=aW@jZiR@* zU<6jd=)%5zBeTS$lW-7?-y9Xm0zydDos@;J@7q5kj72}r?lhWaD-yr^aJMa47i9DdmTM?t`@Hm8%~39{CP?PVtyp}34^5l zRd=(4^awF+jmLn*$6vPl`E(yMQinUd$3C>PsA88|L(~)~|Gkwc>28Sas*$|Uo*xj~ z7!E*0z;yMo95JAqPXiQ?Ueu7&o4&MnK z^2cGZ&mYfPK3`C?(R-;m*NgB8r&4bilV33g3~gAlJ5r83 z>moxd@wT{Lfjv@nj2>s0axTm_^QuhX&&e1E*m?3-Q2=V2JEsN<1uu0Y7pvoINd3`gW%nSho?(D+I@3`JdYUCQ9t(U zIo87#1s!GIZ;qBFj;&CFzPw=WD;;((+Hg(@#Sxv$MNB=;1*Y9P&UC2XChoM8({QTV zM!j43!uTNky>WL|>aq}B!Jh{7-^83jT6HGOFoAQc70Df6#MuXOLm>p4+%q7a-^fXS zL=~@6k!y#pNi_amX(o7s(Z20Sjs51TEexG`PGt`dJSX8jjFRQwoBKX%y2A3asd5HR zfPS+eq>uzZV>%O6qN?7gAFLF>P-53_Ok4R+j%cOZ3veVkzL}TWi(pi9N%;b^0%Q6+ ze*>_vx6QT*dT3nYkW|A_uz5(<$B{9^0p5?VQQ7|6{PO?FRYXCdSie=`!;09chTl7% zxXQi%3sINf5s*wBWph9==LP@$n3SbHDA9(2HC8_V`}sw4UhJGudvYM&)v02?*s+sF z?y|aM`-aAcb4G&YRd;9epSvnoW0bS5*FKii$IAK(c`(K~8mjaR+_hq@L?YDSbEV{; zL2HH!?o;59nZs%)&tPm`#1f67f7_=pdneR#AnlKf<;52>covWPTrkkvD)O{@HKKM& zR|QoKSr*2--NFd0NJ`YFe}gB|Q0$eh8bJeR?mFGQDSIV;%0)}O+$~6P$Wo@id6lqv z8lgG=I2Jn9i$(&{tD6pxf0hbLNM3H(nATXgh}nBN^zQ2?T2PO17jTVU2mF@Bm279O z>*cFi-tbyyahY zsk;Lb4ffuz;Fzz$e_Tl^Cz~ef@(q)BU%mzD0W^Ch1se^6(p4lwY$)@RZf7r&Ukg$TmN0>X(kW1}ZnzXa{@MGCD%;S(W( z?OUOR8=N@zgyVe-Z%BfN#|IML-M1BzpS{Z30yL754Z}1V9m-Q27)D_Aponv}{-3hD z7~@kYJ1}wjF)4?&860A2X(GS7lL?K%HvaJ$Z?#}&n$;RP^&#@}itei}PJPWT^+bJe z0)9!7pi3u5M{e+t4ob2Xwd~&AVZ~(3ZcfDKA7dd5%2Er-$ZB5<^dP(7*2|zlUTT4V zqy2|fk9epsxXfm1fT4&9;@5w!*yco*tDmSZFkZLew}rh-b4v4CT?PN9B<@`L#wdW? zrS6f(c;hcVIXm-U4*bYLc=8^!{TbKi#n2@K^enkNuZMv|HXE3hQp?4;O=tcB&&ndV z+1{!K)LfHI4lln9cKljh8PQ~wUzDi@X80yLW6P1LKT`!rnt@GoUKGbE&U3^6ou|-M zCx61oV>=|_Y!N-wiY%0f6br5=!&L8^t{Z$abLiDD<$C2PmQeO4D=t8Uq)rkON5T8* zsezjp2h=@0P|ACGog-U}w$^s5BB}xBTsl2|t7!h4;OT$gIp2Curu}7_lvo5;GGE|y zkDztS5lf;T4l~D=7Bfw`!b8NWN~wMmLiv!1zN?0ZEP1Y`+8J!nqlEu7J*H|3 zkNR?Hin3cp04!w;06g_h5lIfzXY|>ElwQ#;#x8J(^u)jxp359>grU-8w=jR(GM&YhQVcTh+Aos7P= z?ehJ6>#*ni^*P;;SIZ}JXfS>37t24mbt2LWntcf4QDV?Z0mXf4?_m4Le z@ARe##0+~L_0?^mf*7t$=Y9Wv^_%0_-*#Z;F^`meC%@(6w-6Z0f~kRh;qW0?_{+zO z>M4Mm0lE`3?adBC7s~tF3uIU8Jjw+}_1S$yArWX7bU1jAxBS3I;^z&8Ye~=tWGvpO zGy^|}3KJkVsT#s?wZDyOCv1GHe9E`y(GOR&-}SUi5Gr0?;DOl#XcI2S=&f@4d)1=1 z4y^hl7KdUSD+R>vBJA&uBp+J=_Q3Wby=w=K-RWYJ_jSVtHGnGqHc9gy=t1W_*~cD7 z84FdmT~WfJ+WAD&OlI1&0!tw!-h81F0>H#oJN~!Zc0MS}`miq=U19I=#05!rytbZ$ ztrRo9$luRLbCA)tH7!Fk+kzzO=x?3q?@TwpTNz7&K_wcAt@}E2M0ev8Gsi{%d*7E$ zElW=E_r@NsB&RwqwWN<((UC}3({3=5kg5ecAz=Xq5&~4v)OH!5;EfoZz3yQlWxu1a z?*s-be$umK$8qL*(fkU}r~u+vHT^GlPTjGCENSeCSrGxMG`+)#QVvXtl5j*SsN1=7Ju z(ck}=;y<-k|M$(sOO)*jPP8A_!^IZ2MBLSM49Zn|VE=?Iy6^ie4P8n6KmYEpo~qLD z0~SW-kfrGpcqv}HZm1>W;_O&cOFGYMnfM?Uj-)A&ph&^zl_J|mv-^gJUF5XrBKT^y z{Q_X*M-7_f9=;mu4}GFpJumULT5II$?2d`GknpJATKc0PZ|s(X6{C^mVpG#%aC;Kp zKZAz9We06%?8#3R7OwaQ(P(!E_bG~(&0|C*U^vIY1Zv-iRZz&uq_bA^EwPrR`Xc@m zt0KZDBqm8;r0&??(g^p6_;r39mVV3TTHce#smD}c`bF{Q;QmbL&vsAyqo(x0n?8AzA#mXEyqBS0ivU z)7n0-OL^0Gb)>Kd|BA>lTYo2UEf>rB*6VEv0ZX+DpJE@d8(KulRHKC@`?GAy-@uezT@iymSs{NLoT?^G%}!2WuD$&t^tG*5EDf)Oi}i1NBA zN2*erv5FF5@JyEpjLnj##wrYOfR#686{bZ|=-i_pT{tSFs8NQkFumi6wi;P+9Da_E zFmERw0Z^7wsj9Pe?7pKn9O$G8eh5A^OS<~pH-oScTEbZ?t;W^|;$A^y#+@#pE3hBk zD9Os+bz%?Q4Y)_Y2*QnMa{U|!fsO_u`=VwebxWZZWxIWse(PSl63}aS8bIfrQ~2|G zAd0@u%T`h`2M9c zXAh2we7c=tT1lV|5rq=HY5TW(sK%En6FySz@P%;taO*`7mL#@_vk)9QJz6Iu)}eSH zW7VJ^(q8NFAY5F@_M^~&^i$f*mx0kQHQlh>HyZ)`4m!PIc81+?KMo?q+ZO`2@{c)P zW&4$WN$WdCo3?lec%7(BGNRM=}f&$Ike zLu?W5ON7TG25In3<30|ZtC(>w8BSR4)>$>d1Hw5nqW$T%a6@v;Mw!-t(Ly>V{-mW| z`Erz$`D;S|6r*P;&klrpJ}JO6$suK-|Ap}s9MITNlMmg}(M2w;7!OBWIaX%Jj5nlY=W4IEMHQ>_74W)8vpWjHzK!PjR&td=#13MuIwD$*fv1bfE0whsqgVl zatt`pG#q<$av^vRIRy|WZN>)kWbP&ZxTV^EeF{}QanSX6C@8e|BPPX+5v}b@XAg6? z`_!A728%Y*v||7Uy4zy-MW+#r>#m#cNDv8U5ge!g>nX&PQ z*yG{-Ke`wM0-iDsgLUolF|jSOz6G?s{DGJ{v! z?TL)F7WC!VZ+4BqJB9vq3|odT&=RZLo1&ukX`@w0@9j{_jDJ|E9=Rq%J70cCMw&v^|Hj(0xS3?fs8A+xxH81wB;tB~B_$ODqwOCA#0%fIA)zgF2k z^|X6K+n2wZOx_2Ki!f+QFc9xIigfr}nL(#OU}2ES_Wl*}wEN59tuyUcAZjFQNMo~H zHGkW&>Mb>?y;Daylfgzf3jLT+=vgbk8c;ni$Xq~*pV05@t#DqThMO0GCJKF${!lm5 zD;>#`oDV&T|MFj1&b@MG^(Bvw#GuEyLWU!QKTD2#ONo2@!@^8;Z7(G;PAWr)0?vrQ zzj?nij<|30(G0XkTz|+T{eiF6aQ2(AJO@SQfJ1YPp%2(N!~X#oTGgC%M+>ZMu0xC> z{2j&n$=e3a_GnXZrxlD2H>fT>~MfVg2Pl1E1Q65Hx*{z@ob zS-aLft3a1@bsxLxFQ^w4HnoS5by7bA=sdiZ5Avu!RIC0uNN!X6I#Z&eAJm$wtLh*z zbMlf!whSN{OtiPNYLXAQ@0CJ0W_0Eo6kT}3buiL|SK(_T4ta#Zn_6@YK^J&HH?m`i zgVV~yK$U*gE8fOeujLQ5;cml9#dp`L3YVsApjsh3pY=i6{1c^_ZG(Su^p&G#%GoIP zG=BOw)bI{gXp`gq`y$JecEBuTVZ-L@%5;xo%>y8Xf)Wz+7e#fqG-Iz3B%t*ZyRv)O#a(71P7_wSkQ;^sQ<_AcJ7Tr*h^C4?<^ zMfvp?(WUdG^UKx8^xO5^1VjSYF4f-_IN?%PdfePb6B&c((QYp@X}54Ij+cZ?qBB0c z<(-CuB`fs_fXcX~yJZ;s=l8B!9^!x4d>YB+uRNUzvj}ap{&gmwxWS)>5$74(ZX6N5U2Y1tw3W$l$~Qdu z)g8ugjU$1Mj0d2vQ!z%NKB2L=w)C@rOkp?v=riV9)d}@>9Ub`^w9w(y$lbsfNt?W; z)AK0Q0$G<98RxLD-;hmIU&)*Ez07zf(?WsMCxG}g<=vu)L-P`#k?xwDGUcOr`L7^e zb0Zw#VPMxx#G5~~qheYoV0FVb`8dim(px7#xb@bt*`F6#wcJ<&ylsm)`Cj`QXEjpn zzjNLttq_4wDW&gR-~xRe{d8>`gjF5X$F7$@-Id23%_JhDF&}@BG}gaV_W)DuqaQTP z3c|k+8pQBkFEv0*HMIN|BkgYVlC4R4bR1KMU!9To<8~0SSp+NLjef>H+WSakO8CIm z(G!7{o$d*n;B;4#hcYe@Cs~>v7HeB8w%J(58IE+7XEDT?`UF0La(dX9)OPlW?R^O$ zRpQt9B8$$7QPf6mSes~ zM_Eb~-M3iyuy-|F>n^DOX6({%fBLx;6$pgEl z4a|rSV{4Pv`U4Ac$#w3jt~{)|`p36vy_U8rmgiKR)(aOf3j5>& zO*Mrc*G8Py{}<2_L$-gmpwu{*Y0TuIC(~*s^P`sP_r`N-$Xa}F}t>8~^V))L{7K&j1a`%>+zlJdmk7;n~n zt*)XcT&`$$F9zMlakQ8TFHBMyOd66Wg*I%KAUQ52@RiFhij~y(qK)QdcA`7?N%rXJphdf3C-?%vc+x*;{M0cYv;O6QUu74*;p3F)xJD-_`6u+P|E&tA_uN32z$EVG z*-6;F9Ivu=`(8)c+oLbi9k&nKch@0%WgET`Oyk!BM!hqV&yMRW3pYM<1=}w`_VU&v-1rb8s z!|~rUa|ZK}2IdqfZV|B#$`kdacs(!u(iQb5YoRL*;ZMl~!BYzQlta|IatZU4Et|qnU zew216*}POig#nl^Z=j$I!UlP;A9C6`a=vrR(BR9Q@_h_gEpSScefZ(HEO5mBgA$?W z`2)-S%Wzs3R}ESx{)gdWpskg) zkB`iS2K}Xe5~vx1Sv|Tlz&9|W7CMDxzNp+NAj=><-KiwWQr8F`JTAe#H^J=MHt8P zrZxoLF@AjjR8IIb3HtiC9~~b!1;y9N(poG{gerO@O*j%_;iTFQVf06Me}^Z5lw9t( zdk~$V%)u=X){Gca1#4%KoolmfRbl1|W7uvD4e^Vvf7#MyiTC3Uu`njI&H?4# zo@5sizoqv~_~%pt$heu(wdOJI=@!y&Gj+M2VcrBOOgtE|hxML~^C!noTS4K8p>&n< zsdTF^=1gv2QD_70S=Qjx6|We7u0NDW^L^YR-KUS_6J}Mm#vi94r+LCF*KN3;$T5t& zj)Fwwa_)sJaB~yZd<=&9m*yvPjH9Rn<6!y(Ot z3-(-5Wi#{HN{N@fTVF~n;0}PqOa3@}FX|Jua@W_n5rNB3$;eY;e~ch>++n%u_5E0m zW}wnpV>fyYS&0LM!QXm{9dRZ9-bVYY4$+(x<Uyzn0u zW_R^$LhaJisKVLt?U3Gs^4 zZE4dN_hq`2BRh)7L+98<@(Py)Cd*>GwHr+Zuw&&f{d*8qnLnakYw+UNKM7dWu|IVG zw(coTqU#>E%yVqdSk-vN z^@g;BbVAd=H6TA?nXa_l>@n3JKfAkVk)~ak_pqLG?Z(;KP@iN@Ki8R2!TDN%3V80D zk&0LcH#X=aT)l-gh|=8bqM)w zV;OU-WJ={xM9yOc6y$>F<#I$AKq?|MYKC{n){T%K_mT@Wt? z%j%E!O98^bh$`{5u`<+D5NmJfKG-=M_VjYQfSt@_0&Hr9_T?XR3@zCCSQ)4AG(nWf zFggC&V2cSuapXV^hB__Xx$fZbDDtl-szq;^t&6zN*1^KW!J}^NZ78Qv@1|>@9*GIr zv90y)yIX1~v=jR~gysKlo2Ng87@VuY(hYjB;c17dN&i-~wX{1*ix0>f_tnJ~+hkvN zw{YPXeCPj&>~CLKzsU^m4QVVm(qY)yv0O+VSlF7NqQDWTI{e^F)Q_(F-H+dds(4H~ zT~fYeukw^t{Bn+NAAr6W*@3rJBS^pc*?tXVIeucqI9ZhV1SjZ*mNC#f9bHH4gqaq?v#zOpsb{10iG#qIl-@(6D`oCt(44Kfjn zKGe%1HVPsWbC%3s|9k9;IVEg^kOZQ;Z(_=V;(fJmh)o&C&%1P7SsADtx5*oaS>zVp zV=fb!B&|T^7F-!NM7@ z^mxe9?mk=(w=d=K5GFOvQKI$hKoGnl5hDzCPLEW5RZ5gt)QC(FzU6ul#7x~WA7@O^ z{`a|JE~R|d9+BVA3vz~hZR?c?rw*1h--gm{R$3ggV>z(@Nfht1b^CMmT`@!c!+ zTu6$T4Kgl6;W@{T*)E5sw`c1|X?cNa<)!vC&jfd~xIB5qD^W9uQsfZiDCb($hxiVX zol%f}b{Nwi3J3nOeYX<$)R{TKcIx;%VKeb-@bHv#L`I52Je-9r?VH5^Jp)otrx&W| zKJ#`%LnOifZ<`C%eIr&?&Nbz@34^Gm$po3T36Lm9PTy0h;%^VhZVSG?S3^_a*SCPL z+yKVN6=c$$xdA8#CSi(W`S4pF{-Tzm=Yz2FgzyId_G=zeiG}W#mS%~Cm?Ng+Uug~s zPHmm=8b#C{DbYHU35=jlLuB2Ohntw$E9}HG5*^eu^v7557w6aHs~`Fq6~Oi{Ba-@w zmy%vTy0GQU%4qbH2D>!)ND6}+b1A=&E%nzpetJz<@w{)6Tg@ef;1%~)_*cW8$o7NT zKJ4{E+kd8z9{tM8!%Fn2W9de#ReMT=SX_lyl?0r}7W+NUwBrp^oCC4JUG~OQFhXJk z-K8_-_vXG6Ui2h+xO3&y{lWZ&$hcj-`#k- zzuI;db>ffALq;$(8QSrgaZnADr>G(?DH3PbcbmH3M^e#pO2A53ZluWg$hP2bE8kxN}xLFivG;OEcNuCU}mU zYT=I+-Q8}2E4n=Sln+Ie#PP0M4qtus2|nLXvO}vbyEsBujJWr$M?N2t=A}$;JPhZq z9Y36$bm7t5BQvhF|3;qb-|z#!5<^!(HDYrdgl zSVqVt0*j`j=M>;=maXLS5_Qj-ZJ8+a^OsZ1{^A9nm7Q0y*eC1Iq}{Dws&O#=4PbK1 zv_h0M?o4m92Hy(GqkU7h;{Y9IrbS!#7RykHfY%?g`Or~a(lGuKS>A|CoeVPp_=-OO zdX0PEZEklno=&)hxZT-*B3E!yO!ARE}P;QujPFpvo`i?`1zyt*bA>m|m#|kXp z_rg$IE>9_YHD6N{PN}Zoqi10k_itX{&>u7yDv+j$uAQeN6+#$1>m`}!pqqz&a@EXy zN7?q`Z~N7Y=~&`=ZPxcEUSJ%+8GWu8cP%_h*T!zehZTZ{%R1#gr$wxc7yIEtAe~c_ z1u;mR2ts#=cz}TUJ=n-zyHuXq-m-S&?YQRlTj&@?u@CbkCMTw5ZNP$^RU?eRrF#Xk zNX|a~feIX6b0_hT#=~Apl=(j7m#e4DRznkJj}XfmF!Y!(0yXcn;fA=aG3|xgY?{PI z0e}*L;`dP^uKS2e8@hlieD_|&(E5SSej@t>;Hn;`Co*MyY&Zbc)Hfvp@2%smzr3S( z8BMLH>hAWS^A;%fr0;NqFil*2KtCjG_-vMb(Aubq{jy?A_3l;Im|hldgUd+loWm%B z8ePB?uw(f9mD12{BTH0QJCTAzQB~V6D`2qTrvrX#E##d9nd0nn!iB6#kUo#|conMu zDt4LjdCx>3Hw$eWjb{iauTm!9^w#9m4sq+=Y%>!UxZuhjeVs>NGne*g@@T*~GPP`D zJav2@FI3zEbOW!qXI=oeH&Wghl1t0C_uoO{<(t77pALZ^)jBaJE}m*u?sEv#56PQ3 za=jhL?Z2?o9r6=rp1O_niu$W)NQy!?x-i^X@_-$|-2gd@^%y}4n7p!6R~_1bn#Co} zs^v<&`-sbgSNv2Sg+5SIO4!8RT`mw_2@rF_33)CLc?;c4uHW{Hibi<202Xh4jT^?Q zVCa1L^U8<8FXL$M$ZXVki9QFCv%=~j-Jv;7GfDXbho{{Gc-|$4cjTv3!viFLU7G#` ztm!aB+{2&@B`v}U(=-0Ymncc3+2SQU?|S50EE%h6^iqs7Q};s$gFlFXQia*1*8NOf zV)JpSe<-B`Ki3Vs(c9YMAqsA@JaiI3Zk15-CGO1T4+ZK*RoT?)!H%l>jGgXduNm>D zv~3aa3H;HujD3vJpwD6z{VHy7Wm)=ojqOt{3}m+KQm^iJPV%LNv6x!N)3b;~u&)}h z?gGYQS|AKO@Ak5|g4G6lpYLjf{Hvap!0QVD+QiADjy=1y=;v@>tEz0?sw%+lbvdqO zZsp?q;*tyss#1IXlb(re4)|C0e*%jh>0FF1^N{>|+3#1_K2zwD+Ne~Rr*)UO?{eQ8 z$OILVbQnBMSpVAYv?DacF@F_|P{kzu$=%*)W3iSrA+n%F8|Us18$%4(fkX2kBpQZh z9LN6-dDEi@e5nt>Uvt87A{YRM9BrhLSC>UH6wO8@Lixd+D97Y>NGpCLlVur(D$pB* zGRbS2ithVxPGYWa@3#9j%VYd7+wNa=O@c!K>jj(N0UVC4u{w)x&|xq-gK@yFc4UC+ zKnodrXCEA+&Gh(Z))AJtqgbV|vWc$rTC>vs9ZFP<A`o?*L|9k1ZwftQHFtcdkMtilJTPdz@?@!cTTGcEt*xaLT+3XkHb=( zU0}z#L*@-T1?1Mh;T`VaC-98rZQkAVUu%0i-3*kSD0IKMBi^XjN*l`7&zA!kd}?V` zPSrlR-_@r@3@qj_@y1h30!%JB9s{4&=5b@2bdqwP5hkrRu7UHgh^^1Z=9>5BYDKblV z!RDuVhIg(a79z0GN`x8+wwl93#Y`osGrT*^v@nBinS^%hx5r<`ZYr@6#8Ll+z1UfCl0ytlb zy%wgMw~LJB>aV6eA|yLkaehu9su7k2+BBy`+dk5)n$YZx)v9+2Fu}CY@<2UbToL&XlGhw8fk=k8 zKNS5xF4W8U3ZJ7i>!s3-yzFjV-yC)3gRZO^4Rrqfs}!UG>z{!oO)f7c4!G0pI0XuD64JnA>r(AdD5 zI*}@Ag(j>!K$Dpyy-)9bCGrE#?@JEL>jvWPxhgvgf;u0&d4rc)Z%%pwmOtayB@lyp z41;bOJ`gK$k}FvO!9x(d7t~BaCN^rzbz^ErZyZZ?Nkva^!v6jP~Z?nJy3AZk6f^#am8~2>;Kxs>A_hRr@#?4;t?CT*`~a2BCUe zAz61*9aM&1t$#L>+n!~>mB&obCX0W%K(%G-F4 zy>#o-xcpqKkZ1a6c}?5J$$Q|i$pj=*EveA#XO_V^$@29GjRh z=2>=}x%_{on%17^SAaI(w>bR$gX+AA!kRgtF7~;U%3!vnhc3H%O~L85=s8dM-G?Wv=Is^n^S?uyiBdFK&t3D zxbWQ*kj!1;2#-0!(lk1wYOm-bI!UpS`#yh4cWyhsA@VCnx0dMAHCgN{(qm^mx#Zu( ziD-*V>!nJuPs@O)pI%!@e3KF{k#9nfHxsLZN>zLy(&*z@#$tRJ2hO-En!wGwz1h+W5U;IqABVwp%VrwuejM zU(hvg;~nh;VbUpSCjRoA@c^Va==^-}YYQ5#8$1cdg}X>ovCaB?HPW?NQ6CM9sH%Qa zO^^EZ?+Fo9jc@fgB7X}Ebk&F?vc#rlg?Ur}lElRo%-g;LmM+toHlG0hTbS_jHf;f% zehI7ae&y_+I^4S2?3J>8VW-8(U|@*;^VUTPKGg<&Vd&)3MfZA^4BXM=3}8%YnxHV}K+r@N}=u$$m?u1f*+SxhxV#c=iB9ZNXIEGiw^+7|<($)B$y4T+ijYDepyM!vN znx@}|=GTtdj!NzMjY?B=?VIr3&zmT)NgDgbNl-izq^S|n$$2fSKBDUi93yF#Je*x`#B_xfeOC&KN6kT=i9bOT zY}vTCrqj6&KRc|Jh#XyEV>n#!IO%pB=D(!iRbT|v=85&nsM}ShDxH=4PoMLj#2O*o zQ78pDEWCpvaZoiDh#aRO;t9q&eV_UZ%SJHvJx`CW8PC1qB29$r|D}JefZtwj={frV%5)iTlR*u zCDC9NC3{S8+5MOvrRp7^Zao``_|n6vGubV{h%r#zuw`?n=Q~OE!Gm^x!RFa+Tg0mA z1Wik)=TarA&s|1l_M5~@FNT|d50`48aPs=GC`ahm#n$y`ja9g$PCHsq8!9Vt2a*7h zl2DH(P;b2LF}!V|2~F)-2eh)nUQZjF5kFb?$33FW-Z);>Nb`%sX1y|pIYaG-<4+%^ ze#`Z`)NfzU#0Y%1*(*V!_|MV4@$dWd`KWi5-3EW`@eY)N|_!l7w%h#)Z9uV1o zCUg1JiA?RX>Jxw18w7eA-=8Z;JC9RU$5o>I+hd+htM=g}Mk5f!(@kfzN^Q6*r#(6R z{W~oMkfKlGj4b!pjb^-}t1Ae>&|$M6?hu%hM38V(A%$rGIk6AD+9darcrfEeRuRD! z!4@IkZ|xt&c^}vSy9O29oM~$K+^B2oE%)?Wm2VlXJk5>*wqQ4}CUBih)yX7!1=ift zyYBGV+mn0tg6H$r$OxS+4|e?;D6}Yp&(K+*Y0}WdTy{O>HI7 zN!+Z10$e_ZBrl!WWz=V<`vE#(iSx_hNru&#{sDi(5bz(& zGpFVuvu(1DUmFDrLj2%5Arx)=@5OLWOWB>2H4=&7Ng!D@o8CpU5-ym&?H@AinZMYp zHLZ4r4t0z%S^}P9Wo7Jc6z)*_3*wv-K)#8Q?lTo@7gZ!r3%lk(2^#71r~2Q&Km3&~ zmwe7Y$JJRY7`_W>?Y&ZISuY4gqDRnuQr zas`GjMdD~nQT3S4alk-2W|8-K?fP#ZK=Mx3iw5A?QXgN_vhQd6JQ!7o_~ z$_`a=e8#Q3{ZB?WNwl~x9BqW&g3bQ_6_lmbU;z9@r5%XIdyJ6w=NoJdRNe5Mc&(&G zIh>WRmq8v5P4oz360{*g`vV#i(&|eMl`MWDSC~&d)q57t zg7B2b=U3QLG2a!q)@y&M`CG5;AbXZ6O0_NQ*@~GYk0E*Bg=5gb;mU~3vmOM5Gw9_gY2bkW!Z{3+rV0l$b>lE#Cizli?Rd zw@u`FPRSA9Rs0okBA2A%ao@!x7=23AVT)4rS5Q8t{7-`G$qp}nwN~g?OM94&}qqFcMHt126@7)ZD zH|Xj2c|>Vh`sQS)Nqu;tyyEmq{e#9i+8>7Zu_p$f2!Ks}g2Qk#b@#6o1`@&%EIb{x zLO;{dWL}pP$0T!r_gOxUEn)|9p5xnIN+PX>>LSM(k*!}YR`9t%fG%4ELXE%ws`$pg zR1$71JG<{P-mzUry&E!fn3xe~(42u`VmwF9<6MZg{3@HU4ac-p=5h&vFRY`tF55e%jHT|f3xjw3*rn)~8(Nr~^ws z(DWaaB+ohOu=ew7X06Ot!=_H`j6Xy;S5;9=XYPvA#`wS7J_*BS0V;c6bwjpz7Hu29 z|0oAVt*H8L6btd>O_5=jY`d~?=qP71?8%r>&vdzFrcTKVk1Z5uQU|{9MG_G2zKff= zhMCR)>;?mW8uZNU(Ae2MIavvD(E@tq9mvNj!!Y;&={DAFs=iCO_jo|1L}!~PDC5VT z{x{|y1brTjZm^9EyFUfcpa^2-uzrU}ud@2Qk-Ryt-|`gkT#-mNVLL?fc=|1l(k!tx9xk>i51Bue!YVw=8z3Tim5|>VPXrE zd3sj$yl2FZCZ?X~?&Y(CkhCB&sgeB_Lhg~f1f+OU#BEvSW6gIE5|KFiay%%bOFbo) zzGcrxL*C-2j$^$K&+-k%-B!F~W_&Asrpq4KxSw ze#lpnpVt?5dF@d1Y}9caRC9yTeks>QnQ|O%O52xP1k-Wi95JozBT)VrisiYg^6c_! zS)15*i96UaV~fXZH%#3{_a6KSh+$oh=ciRi+zg^Ny&)hGHThP`EoI(t7$d=FX&94OsLx{8D)kpb zh2*LIpWsMuV>sBwPeMJIZ-(VtJNp@2$E1#HRPOX^l8-!El}YAhOUJ_sREl8?s{iR7ztP zB!2#9a^p(h5Z1*n@_mxr=k^6VpQ4L?BFDGVqc-E<$B17-0q@WhqyJ!5)r{Tf-ypTB z-Jnnu1J~d%%KwuAQMY*%A;q zhn1mj*;#jkd=p(5(R=IZpGP4#3qf@fQsLqEcrtl~|7*5rbO$h$+Un_K%_tHU) zYTlG~cpL{&?g=7weTHgVChw9NnQ?q^0SeJvHJcb)`Ff_`zk;@IDEod^J$^0F*B|v+ zWCvL%-Sy+TSx$!X&b8Kf&|Jx-bMwimQgb0kM^B1zU8yT$S(i_Yoe6LGVhzggn{cw~-!7lcv9SKWRODS95MY9qW6>lRvQ-*D3F{PY7E3Ep55 z2I%n3Qp&|MTq$?V7G+78eirExw`DsqyL>LK`%Zef2<_sjx; zeo}Dfi1{0IxTuW=m^uvu&FhlWZ6E0Vg@?kr;1L?VHD84XDXnz*uDj|O&>5{pp=$^t z5q0G0`Y-4q9osErm*mRzn+br_(M)qEs}vcJt8WWa4q~GI{=~&;rayPk{D-6ZN&?kU zghzYL@)5a7`!7>{%%Kz!&nbC0GJBmMIHNq#`82IP@MSFHN9i&Y8yM#o6#%F*iS)kXn2(-Kg&q^{}k%X?y)_p~k1R#yVTPFqW&))-3FI-@XKRRCirxZP~P2 zszSm&YTCnRR?J@X(c62OAL>c5v6Ddej^op0iz(u0D~5Sy((dZ$?OpO}WTbjSF=0%w zpBF$8(}J6(z|VyEfQ>w4>F(~Rc1rrTAN;nAHJ||~cl}`ec39?Jgcoy^J-&o!mPkFjV@Ik79aaeCk8fLaQfi@ttKFl}`Rgd7 zH{z9l&Q=)0XixLoCFep8!u=OUft9{t3Bh%3eFbE=5$xf{)L}iPB2%$bd?A^u%}Q(M z@WYIEM#@Ugy|@z`Z*AY@xuCg_e^f}oJ;O1A&>Z8LBQa85ixOSgR&~QT`+~L64LFZp z?j+UZThnR(ZWA|+)&G3^f+DL^*Dg66auBx%X6xJLM>sgRB0&zvbw|#X|Mt2Mj_3V` zAtam!bhm>_d!c(yFM7HARxQWt!%UMYa%~WjxtTv&@pXRtpdowAPCTywv+ z4Ftkl(A(_4BpqUny3b4ul?bP$32&;7 zC?6$t=Gmla>)IyQ(Q0TE`nJvh;MN@?V>prxrUIAxQ=I|8wyw^j=o{tCsZ}C_o^}c8 zNf!*dP-NJX*icAXYA$lz_n~ip9ZGv)Z*Z3ODn0=cwq9>Y{MVNDm9~tHbd0FXqLlH; zmgzpKOtgKH1lRR$dlVqVK@;bDUK9xyht`TSOTqC>J~K@>ce{Kp_m?GYL-X@3hrzu4 zEsXLU3`?akKv2Z$a#dXqGphfhrf7ENO%&yj-$hrl7(!v#4?ah)-!*Oji>|j0YU>N% zeR0>~?(R_Bi@RI#wm@-r2~MHK-HTg+QrxXTad!z$A;l$Fl9TT_bME}+&b|L8Gudmc zcV+h8>wTWjL)mgk%X>cAKrM>tdoS;}*ee(SFz4#od&+oO9-d5e@20R5A%?B_M#FMME{osu-gTeBvwB$_BwrBe&*CwM*|@mGFM_T27EzxBySK(AOrOr2bm@$ ztn+7;_-qihYZ?4MgEALpg6Jryn0Wqqi@{=LM}6qy5`mno1JJ&tG4HFqk`Gz6ICNqa9h-_>2{@*2;@qu|iVxkEK_zwD%$1doJLj^qH zPqn{Z=-7@5@&FME=f>~+{KodyF1@Nmc#2&X2T`x7COJ$6!k9&mWIoyc-dl4g8Eh5( zp)<4Bee`!O0!R%Tr*3i-!k?9Wv(%yxiq#r&@LafF($*?gcH0l#*l`u z9l3js642dW_=q!0-T-!L|2O>=tt;6@M17c>yUsBeSFHwdZ(0~~NX}k{pMFYrm)sRR zS~^B4+Xb^Y+H1ah6M*zV6|?#ahdr1$F2fhriXvz0C`*amEXKf*w$>qIug7&DLox z<nWB}Ah5TPE}$t^I2wo~981x?(?e!e#Bur&Zo`{_kI%|pGl#u) z=hI|a-u;Ul8a!t}l%hn*;A1+??STxfqoeFkQwH!<%BrJJA3Dvo+2VrmLp~9*yS!cX zILSX}*;{T~sC`6e4sM%D*-0%elH~h^BR>i5Wv=E6&vO4H3tG~KE7{{LH3?1i`1a}* z9QDr=O?EldJx4MPz@E8_R)vVVpTB;cx2}I9yZ)pyL|mYgw^~~5K)5Bj^W>9!nU17J zFECv-_4r)X=J_ScKv3QlR2utEr;#|@+U!!h>KXrC4VsW;0a;8D>YxBz5Sb~vcEwW{ zRVL;E5!R;wNBf-rB2)BfA4EsmJl`0{cTXt6hf)=UhDhn2no+$C7=u)mqr@iFUh1Fb^esiXR#}Ut;2FOABoH}yGUi-oulb&>X@o74KEjAs{ z>PNrR$u0oE*l<>+xJ?u#TdMd?D5 zb;dEUtc6;J;KYMcS3cwDQAekMz^emGK7f2!Mei8-_TbeZ^4W|49{E><68X%$e1kjx zc{Q|zQ6OyV6di|n2rlVchNqGIO`U?Qn+3=B~d2YrkAe%`%|LLK;O za=lQJb(!v|dv)Oe)`QLf3fg3sn7c!^`KP|5;@_gZ>Mxu+am(*ce%)chB9;E;Rr-4a=E6 z4km?;v6D#Kb8p>|-` zKI-({JOF%nYkj@_s1RM5I!rD@2|{M-gmrG5`%_+d#^fo`NN26*{b4@5n$L1V_2GR? zMw}#Cuu$X4zbIH9;>d#>>MZ;y`mbA;Z!RL~;uf-WOxM3mm#o;=kHZ6m!#$2Msz)a# z4-7dp;n)oIm$A0ko7^48Mp>ueFvkMTUXXU+L%e(^Y*56^W&6kud>N{)%;T0&X%BlH zHgY0Z5`L0UTnEC1-2CX3j6mvBvpDNP#Xww~baNFGdEHgJY}d`f2sWo12>Mzgt+}nw zx!QrXoXfRh(HrD*DmPY^gv4}&)>3*eXZJp|mj&?OG5Im$&9C9k**26fGBWR-_;$md z{|0BsF(aB=cv1YPN!qzBUvHz7(dN{V`W9SCbjQnjzLO?~bBn8lR z;deDi7SnbovwjBwMO>{9XmzPM)lx~MowI&AqcF&Roda94seZt)XKo zz%t~RzJ46mM+A3#9G)K3i_Q@qX~XsY{4ukm11v(wjs@B}OMje;s+S72uvSem8C2pf zD|&zngQ4w)^Pxb4VzPQA#ah_sSZM}6DNk5y@=SV@mC+n!n6O#grj6X*gHo*Zl`R}zi+LInc%5R6P!T&J(|^s2RTIWvGHCjRj~COdSUTpw}BPA0LsMT zk|P{D>oLiO%08Z%;D$)I>S^~+h#ro}bpAlY2;9{TjttTsFd?srwciB(H@q(iAD4LLOVofUx2-FMf7kTX$d2^ z0r?S?tmGU1El0mNk>c^k^nV=Y`x3HKQ|xsC&K%xC*4ixWW`)xLUc6;@3&6;Z)*opo zd~d)WIX?riwhjNT07e2o&sv5zH{V4n{HW}urvEbdj+qpkRs}snf7ImyK@J-%W$U7p zO95A-fa>iFJobdaFkYmNNy~pyRabcC|Xo zcBr#LI^F-NqtS@KnNH@Xa2@zRE$)-wY}2JIXG`6;PV34P1zZT;p{_qXDyv`iAn-H} zU0Vj$X<<+&Ca?X^IhBQE8ll)2L>D9*P;YyNDm%Db1x}eIoSxDi(vAZA2zico{{Z;B06TSDs(xr4+l1wJ?SqI7Ec2xRyojTj>A!kZ8BV5Ta%0 zv;IhRq{^88RB5(DWDqny=wUt}VsFxQ)pg^$&-AR|ZtV?{*vlOAOmGnm|7Ln02=jOF>&c6?y{lIc z0$}-Mus3q$k+CIg@j^dZvhvp4T>B!pbHUw#NEU^@{Ku6_znj z=&#Q>{?dq6+7TIr;1%x}R)_47F|4C_4MDfiGwAeMl>gms2FQs;{(^;v&sn6fjd-hw z3QtNiPWh@GicI2>Rp+jilIB&t8u?eWAx85fB#unj_B&0OooU4vInCylj@zANmy(dH zc1i%3I|VM<7@Y|=XAW70%)oA~W5dFzx$1k*VxyD}W0H@NfR3y5GhIxlTx7_}+L^>q zfxCI6g^enn2hFtGBf+3?JnBC{WF5hhzV>P2)i>ghv!NV*TF|{!jZTP3T@}YrQewN0 z^X4&Ziy!vxWRIc-I;#P4x4Mu$@t(3fj)lkBZhhR|@?rXjE}zVgX^Yq7_WlvC#z?KN z{T3~S=pOF?M$24CtJHSgfaB%p$?n2k-<9s;3L*Ki8bkQCPUQY16-@aTs{^@o*L~Nc znVF`Wmc0y5=H0}>bzktE-rt&mR%+SR%tc%Pq1{)SAKB$?ZMq`^n=7VdY3ljaYBDkL zEyl^dF{gvcGE)XGfUVAOfM|%fHw-(G5!lDJf%%*-DvM)Sdmtl8bnf_mE4yfg{^Uyf zET56zj6K$&ON1Q`2Kw<<3D_eEQw>P_Zj5(t2)Bl_GgRN#4 zIo;wg;>`NgTN%NtZJM*%ftKUZ8KS3rHzF~FV zkrl-xA9!vkp5w97>d3yb)cL6r`^*g(x{9mE)J2bqYtsbX@f!xU1R+HEkOt2ZJQu&=C z;VNOmlF>jXwJhDutGD7?s<&Pcoi0)Tnf~(7tLfp#Mg_y*zYX~num$Vgjk)fex};PG z=h#)9jGxCZEHZ}!x?~%2)b4F%K6IEo5V3%x$8IhjMNAAwk3uEd2s$8P>`$a)w-;kE zF=@2Rte6x+>a%C;0Cxxt`h9zp0wnfC_mZzHNk;pAQ+M{ueva>V+?HzHu)RRIJ)^kd zd3XAAGtUR=H+((p<;@QnGokqN$RA0Y`sV0pzqXWWVkF{p?p{+gLv-xqX?ZqVkm?wC z32Sk+9Gn*SZ~0#7Z|Za8Wt*!O`#`i2u^7qh8cRdh$r?XDc`GCtDiVi_#uXPu#nPNS z>q-cI7rrj{64eglYD6tX=n;pWxV^4Ap^_xZ9C3esDuPQK@nZk9zbP93i=9D%8xbXp zfID%%OYTSO{uD>&#f zdB6Wv(3Bcb8F>jO;wL;9yg%ytZtUBnI*NbFO+uU-m+; z&b3eY0j#@m7jKmQa$DcE^qT)Y&lK6xGaACVPx||etj8*5!4TIzC#3GGV_=r;8>OX& zYX3&Y)g+s)3q7yju{%iXRAv|BGlCU!xPXs%fMW_1qU;it6kh3|uxR?fC_T=e=_?%; z;g%Xnk8Pj_tlpsOAx7G6gDE*7wrly|4fpz13fq5>LRU1v?-Oej!R7c)44KP06YCJP zygz(#kV_L{-;t5*jEn7u#h1(ZQk>6PQVmfnTHXpl|KaZ>_aDa+yEf2?jLzggmmmb2 zG033Av+B`oEO59AV3g*exZ?lwo2-s0ZFp{bpFWLCBlN$k$|H;v&rbW^HY_=qy6vQq zbTDkGca~wHZ3-)Id!o`wQzh1kNQcuOL8TY-2yW1|0s|Rb`LPmm@zAK(ey`9D$qNkk zd;OCc*g;M5LkyD3N!B;c^Jm?QdoT-3{DMRnGU;6NzoCbAiCcyjbFh@b31|2&T77m8 zO#ASZW|YsQ=vur@x&ipLUCam29*k z*VEA3l%3s62hiDviPIWh8Ety8)p~<{PuKn(EWC)b<5DfxiQ{Da$=9#mNw`Ty?qmBx z!hdH#Z2Yb;zf@*w9tkfHw2QS=G(h{%q4@+c(5EmTz5k9}4z51%2>&g$!q|q0NR5*{ zHhi}Ov&2_pZ=s@LW=L+Ry+~NtaMn0srBbjSWiNk%HZ!j%d)C+?m7F{I`ab6=(BXWL z81iBu*$IIvDIDmQDr62-mrQMin`YEUDAj+!&&u)SAw;kB~{jm}=lCtcVfLcJuZE`f*xo$DmktJQYf))?Z z%ysR(!?g3uXs`ZJ_$hr=@IcC7F;3zhtf!t+wzGrLxdBck>0d6PJ}a*2QK3ez+PBG)cWI4*yOI&ML6z*L<+tW910- z5^sn~|GE&hXU-##JfayY0n!gT`1M#i_^#JYD9w=Tm1AG4Br&pe#f&a&NX4V>C=G~VX;#wW2_W!tgMGTKq zc)XonLuM>5=+|C_s%l1>^HlLlQ4xWjL?!$^w^;ambh3G^Bi2 z0pImlz98E$XC5-fz;fy?BGvt(lXzyQihXYxlGMV3ZN3HP3hqzWl~K5vs12(~HYKq? z<6a|gw;NEul^tpj?bBIrV9@z!D8hrsCUxxluguwLj+wQ_%yA| zm+$#&cN|;`OPVy{KYwy1FrD|UKQT^Scz4tGjO9?|KwIbyH6jjmsSP4AebNttWc44k zTaLW0ebOCMY+}lhDqiweNsYbHy|2a9$F?*J(ZPxL##=a`3td$)`H0H*RzEu{&8`*J zQgRsm^IlSU2?qEEih_LK?!ywm9AZRBJli8jDLq`o1w4qMWOEJz4|+MYTjt6%zEUe> z%z`aV?E77VwbwSqRNoaz9}wtfAC`dtYc#jfUXXL+?_N;+p9y4y*LSw|FP!u(o>wcK z=QBU#=zxOQL(}k0A4T-bG|iuf+~~NuZD!7t6<(Z25DYI31Ev46m= z?Mw7;q?w%?45Mkz()vG2IYUmiSNi&`Vw20vJ=;l34T-BRj(g==X06n(IOXfr$I*_? zJum-o(3nj0aRC`BT>a8$Lo`Vw^hQPP{1W>)eY;^Ir~S|PyK)Weyal6fCjnaT+Mz8n0J^JpC%62?E0pT;Em} zt2cw-vYCGRP)7A#k6O9NAa_$sGvi8&2P%Rk{P6EPW1iI7;Vw?eI(#u0BBlS`9i%CJ8vi#)ZJg{$$4$FB27m7AA1 zt@+sKm5$NVMmP^r$h}_nZ`dA&DVqgZ9zmQR0s^NM`54*S=9v!Mgv6=v6a|GLZfhcWm(B23tfhQ2Zo zzX|`rUQP9$`qr0Z{3vg-p?^FSwew*G3*+q9kERd#1!Nd!;lJz&q_*Jp>>aX^uPtZ- zcZ}k}*t}^Q#jX$&h6y+O=AE!^&Z@95IlN6=KF%*{q}NR=-wY1??OJRpui}KDYkUFO z?J|LaGI+M5NazHm1%I*#DuFQ8tL2}OL%HQuQ>g3*`cxTs%US^QJCBX4CkA9OB&uJ& z9uF)wo-B4pJ&#okH*n}pkPFI=Ztl9#?RRAJ_XAk`roqx0nD`w54hURZdz}>${)(* zQC3Ik&w-!mc5)xWb9n#U=w4xIV2(`ltaPss`jjTY`??k}HQYPR4P@1u`^`TMo8YIr zcSx38%<#;b&`7WTW}tP$LGBsP7jOV>DM;7?Q_qnmaf|^$akq|uh_36@nm-*w!1Dz~ zu^FoawvBk&*C36bvLE>v_O6tL2sRvvAFyKJoaW85vZZ+jXW4PZNyH=(U=+R0%8TY^ zyNXNwjjyc1R(FI;k>i#c?>tUPgfy7`$z`v(KsUV1g8~aGP<$^1tQV7MH^4`u+`VGwF<#^i#T*1r zeGkU$=UwI8&h`3mH)lSzQ{T5r*tg%$QHu57uGPnP3JtRjk|Te$N{?UXK!upDaveTb z^AgE(dAq;=hLh>nPGJ@pLyR;iw2fv8XB3!^!%>k>(377-QKUQWOmQ0Vq12q!IDLD6 zQtVY-_L25_U}nXU_}n<0m#!M|ThUK{AqsjH)CJ3PvqS7ZOw|2%^*$hO<>$Sj7JD6( zCmC_Lh0xvFhf%^<7iFmIxa_nqWPPWk^Xx#d&C8|>IbFD9Ca;VB<}&#y7<$^b9T$3n zJXeyWXD@P`{&ZsPt&T!Ji{7#Cv&tiQb=hAhs8o3dR`+9Ma_Nz-;-HFlJ%KCUd%xUK zcUHFWybAO%J-p-nB5eYVme|pKH?Mb8-L&)7=aA#yw^jM_FM2g9VHzps*xEkFo*?v9 znt|4=v*J_-&NEcZ2^9Uin2PIm=^iSiSgwB)KgoL95VU_Lq(^#Z1vGV^K^VL|Dnv*s0Iyzw_fZse}G{ zt8E~X|ERUlC)CN`PBl8Vd0cm6T!G){bG!|fJ{+h>>ZGvd#d;u1*9)Ku+9W3g_sbt{ zvW)hN5JSI3nQG`w3Lw;V1r}89kCECGOujb6K8nWaxDa4>;T}E0KF`RmfqqEID6+pkI>&g&yvp+N!-j;(SjkdvXU|BVuIEr7j z3YN@Y!obJVyw@|YfbayNKGU>TlNh$!-;&9;=@S?*l_Dv>le_e(s89=-9BRsTIIs zf5Vrus%1-7!DeXCCo*<#N+#(S>RS5_Rl{44dbrh|fJKJR-)l96_AdoHZ!|Khr2wW6 z&^eJ@B*dC(^5_--cjhO27!g#_RhfWw5f*G-HKL#cc{0Kf$#jGn+an(ToD}0$_-~sE z^2@?O8FcvDL52UR!pe)O+s$4o_?%R17ANC;eiYsK^F>QeOTsBs!5UN-tlbt zCcW4+Ru2}=2K4VjC2zJ6kbD$+sN}woX3LQ)3f-*6sE@EePX}H7biuVd!>4~TM)8=N zP;{jp>0BKQhWmQW{U~4fj)fG*Tdk>;qunZ7)lgCRn(metu-w zLHJi(V>KD#-H5T>-gb?rN@vf%nn^vu>_>XhcySlfco|9cZOwmoIlHJAUK>j~P+xV^ zXiX$YNJbnv!<1WK95!?^uQ>8F!t4RPZ0DavzqKuvr^qfV(B;^FFr=R#>)A>7^LiYR zO9K3JSljgZAK=8y4T5)smuiyl?UVM4e1hZ#@9BVO5UpXr>IyDUK|!T+*O(pTmq!+0mU)}6gm{`Q#|~yU6|;FnEd#m5VKy79gQ{KnR#Fn#;A1*R#mr``?S3 zyS@z&C1D&G=;Qpy*j}U%i9-#RI5GR|zEt>sP?QgpqtT3nA;GJUZ@kN4b4#I)b)9IX?r|HK$Cr2g}IZ%BV4Cv4}WkUa_p=A#Jz^p50>^6R08B6aE@ z!mS<(CHiVDH;()UWt<;WFOCK`#$xx|%3z7zPOJ)c_nJgUZ!6Wc$~FANmsXrOm>1u| z(RaAFoobBEzooAIJJeY!B$9#tm1G4iE)dW$$&hF}G*pJyu{trIw8x~isj7FCeeKV~ zsLUjJ^Svi2n8r22{xWED=kLwI7nqQ~=XY~hWJd9Mc8$rq1drF|1>dXe^5AZoo?o&^ zuJ>=FE)N!xjOW&1a8CGu9`cA|1qY&CoHO3rJL4}hUDOc2kTjQIi3!2bmV2f!>4+lMJ#^g)vQf4(K~KC zG8shIaSVW{R0wl+1%~##=@>aO9#z5qG992P?MJoC)E9x_90Tw`oS2nCZGH!c`E3*D zbM8+*MOXiavXtWd?3#-hVMm;;DiKB4L+=a?bRne9c(z_y?bOG1-_pYI& zCK$6uApGB2_nlP?B?#BXQ=o>>euNSG0{@U>9B52s4{e75+GU5lI#rlvm){OH<4y;k zQ2y@fbJc*$+_oSJ2&LtIrx#4t^QYEN;yG6ck_o$Mr-UvhOsPglQr5D zdg=q-Yfn&g@D6=-ToEYFH~p(8y@YlbzKotk`z9@ViI}P!hs=f>Wd8e$yx1M^MseJ+ zk&D`-B<$-ziQ&Cv4%KjX6s5J15oyW(_wwf%$shttI@mXnv4j*kyW4;-%T3qD3!P+| zaS>%Zub#Q}+_%-TNnfz+y+x@zX=+Xa0FNb@ONGIoWl3l6rXS*riz=e{Itu0}g&665! za3wEL%vqIHt6?G=41b^rwjqngMD-%5T+KHIxeID~SYpFTn0ypzt#AT~2@o-k5=Hp7 zy#TN!@u#z_2A!Y=)kF90ugH&U^5kPt&3w?lCk+Oq_D_4*O+?R&m8G^!r3oICyTw); zJ4{3Dv;!zVwV;5 zl-Q`|*ea~@39`)4WsTs_+OS2oJ1NWYNLq98_Nv&;S3lukU)zWi4Lswc^98aZA zbuEB#$p8@G{vLAyJO=zT$FtfwtItkzwt<-7{~$}cfcsTB(QP}w6RxLVjVEVN$-fd0+7gl%7vS|N@1o48!F_i+zuOA< z?Hfg7^AXD4xW(VVHGUaV@AP%D{MNJ@FMt{d1-zbErtYO zO3d(E^xb~mXTLXftx=`>`PSRgM}jyzKlm8-4+<^A0265T+z%@nJspwBzeal31vDbT z0wQi+yq6dknuhxX&%S(IvJcc`miV#vy%EaThuvVLwZVPa^7(c#9KDjNY$qy(q`)a{ zA1)Z>E&s?Z-ZZ$~fZbxY>ZU{k^H{D8xJMK78QG)Ah!&uFV^-4`XJP-v50p-$6;ifD zs}P!9wzG<+x#m zpw}$|1Q}0wd23x)IT4R0Su*>3RFfmK=~yV#@Pj_zYI2e}JB@?pjh%D5@h7jiETMjd z5Ik!E0;YtHhjf84SdTP}UGIhbpKh_&@%J84+q4khLbk(jSF5c5n!KBNAU2R~&H)^3 z?HCti=TY5{UGeGb%|CI-@8uQw0AuSQ?TL@dAQ}m`p~I|GB8P&ACzIjvQ!1T47SY$s zdcphNu&3YIZ7GQlX0o`{B^?`Uvc31RVumR%bamr^!mru8lJ1jc=0G0jM#LDl0V*w% zPIO_f!W1Et8ONuc&4P{%`^{Qur{j3rQRwO5YLL8Ub}=2>a?`*n7T19l#hHNv8CGfE+{&1|E~TV1Na@#A-f21Y>UY@o_Id?G@8@ihFh7>XRggxpo>%_4)8>A zzOLF+EAMIR%#ybgG0~jF$Ga>^;*7~Z|tY*542)X9f%9U zpX!Z@g0WT@M^!y5j0P)qwrC3MABHG4VD>i9Ymc_)p+)_$GeSr64-}_z#g3=);?C|i z?i8U_ORSM=`zUd$PA`<8v+h}%gc;y1APXqFI4s+6hO^^eb!YjYQFD*0`ZBs{YdSa| z64J6{MW=Gb-@T3+ybIEJ$tp&Ip%=is+xRgdX=d2yM^quLH#_Ua3$EHCk&(^IE zCnm{A!cq+unX9^lErE+>(H>-_c@7XUJidvoWWnq#R}~K7h@gAO1h%)bPk4p;$PrMg$o+uJ_o~FcJL+R)aM|qT?6jgJ2bL}_~wlP6DF1FuxL!m*$ch{%dP{Fi4Lwbe>gq{X7;BWir zFjTfY-?in8CZ9W+!0c52RcFny{@K5w!lSQ0dv0`j#i-8YZCKzCN4i8#Ab;)Ax z5?Sk)6n)kDwR>G-VVWR(A5$}3Je{VviuU4v65FpvDkYPNt!WcW zU4vI_UT}4sBo~k>H}jG^%%tm)%va6`6;9!+DD{uQ>)Hh*UjK+W2L=zjJFO6njhB9f z6)R#NYkMay;?j$ z;0)YdP4@5|XXKC$sN(K~dUaa|6P#GFv~3i$rIoqDr`VaZyGkU2q2IU{xXU|S2KH<# z^o=O&KF@?|tiuGWg9far{sCXEo$;}22=o^X#$zh#i=Ky;j%V%FN}Z!1-QL4MW^CHx ziI@sg1M8fP*LCjy*YXlOpJ5y1%jUDhH~f!^kY#<)3bl2*b!cXuZykhgcb>Yx_2!(K ztXPOK{CPxFoQ_xp7#2vDQ-`lMN(4Ay04nVVzg%#_I(Ue`Oa~50`0@W!wdE%ilFFN} zI^+A30LIL5{`XQ(^3DSObi>qPVN**_J$sr(@9+d1njHIFRC&T?6~%F`-9`e&aPZwX>;F>Cql$0P%%K&W`zbxn}KqHFkPw`(e#l zU6q6JV4^^yip|!h{Wt3wiPf{I0Qc9VQ@qW|?6J;0zVY)P54{5rAwDOD{D6Z1k|DeS zX-ryg(*X*?f5j;L`FF;Rp!oHIo5BHBLwH&D{HsHBGVICE5X+Rs&G9`8LyhsV5CRtU z8`B<=uT?BuS3H513t{Vgy65>i<37j=lcejdbzLIPGP~)mO4_w)^=f%jF>&w>9@X2m zWUbNKbJs4k6t+r_T1rsU;mb`&NiY;h!iUfIfH&wo%#(N3Qf!*EL63joK5t&`E$PWu zIwk`n%63=|u?XGMUU|Rqmj6T_H2|x9=0NW$cQoyBAoGiCkPgd|jwfDNo?124T-Nx@ zM@c$_FdeL9Cnb>ekx0Ctzk!Lpelbs57FuS z0u8c32Oh@HQt%gruIXI6LRTh|RIgF-Y+1~d^XO!j#P?a?x;N7b86=}>c_huV`RRMA zW~qY1pH~4Lpq>O`DgBxN4t65`40Z;H{C>hW5lvg{{dU$MG<`f~ptxPFUYz|$`UJn< z$D=Ne{e-bWXUvY`doGUK07LslHtw(PXCyQLWiOsz()WKa4}Q6czEaC`l#*J71mS>V z6}+qCF}2T7J-%4}@kIHqCn`yunFy^87sc635T2HC!8&XALcMan4k;ma|2E!QOCsNU zU6z=Bi78>R> zRnMwD_!9DH$reGI^xoDRya+@y+jb+K;2Lhe8ms?;>#>z+CjKF6*Gtyp@ z%;u!}KODssb$`VL4d|@;p4m8orcXOw0q{PKRhi4rqWnVYR-}%>$K+ZTKY^#5L%q#k z@rG*u9)u2(^6zYznh-(Sfb^bzt1N7B1qdGHN1#lvQIhOJp}++$KqBH94QC?vdwfTf z1e;Fj4dh@_W2@LK>+4KC{MO~g>T~<_(Z8Za7M0V}D$P4QwJ>)HUk86SVfTcoG!3C3QHb_qUDq+_;>EY5i#pp|aZEOy0kGTZYhvY=eKdr49W{FiWuk|cE z%HS?Kkz5} zxbmI5UZq%0qL4h}mwYh#WB0rij%mzY`-fMqT@|FNeCwcCi7JOTwgl-X3Z}4$AC3#2 z!fm*?5>jwv>VsG?B+-pZ-ZXA5A(^QKkRx;K#hL>A^?hwTs`h zZkD8VC)Jd=WttK}o_LNO!ORyAOk%J0*{pN*cLpHA*~&4XgrgjxzT$bY-5t$Gi;>^O zeEjdCUgZZMI3=?N7v|L7g(is-Gt?%O7)#v5X}N%9s*TFyU3CQGRk;| zX(!VKNk;V|Sw6u~kP`oPc_>Qr0jF7TiH}1eRL_i*FX`~#0p(FSldtjO_B$|h#)m84@F4Sn|p@$!FToSB1 z3lL4aEZAXZ3*rKX&cV8MpJ;_dhS<&2&Yk`!0Ugt5+Oat1Wnp*guVoOt%C{dPXlzrv zY_B}xQ+haCA%BdJ73L%T#qvcJypYlI2%9;ngp6(uy#gga@_N$FZh?gL?I}V?vj)-Y zBkn?T6ltoj`ju#}sx#e%lS~RF%}YnVmWTV8iGhAxz3JJ={)y9I>>})HyGWS!l?0BPm>PxcX&@IyB zr!2&UKe>;j(s+ZT--`ODaR+WLScl8Yr@-gre{8QeLv|g?swIGd1VmX4*AOu5Q zdJyjcF;uw09(A4pni9!S}N9SnfS)yS9O%72RMSWQgr6 zr?*WhDIc+!bEpt?&4INo=wM7|E-I~Pj_r}?Grdqa-dP;2>}?|j%L~MA&R3ek1Bzen zDdrq2aZcAHU=dQph3&44O65w^4a~{M&wE(c!2*dPM>M@Id<#3yL8cPj`qPK*_+sjP zJ=~K-a={*if@XY~8kXIOmnmLEeNv~?7HJz7IPE%R(Z_J9MLA5DOc;vyMEe2x4TsRT zrqK>kc}pqL0;%rZuDW}Rj?r|iQC_mapC|0@ZlOayG%>4TxxwPYg>|omzunEgA2*pP zH$o=d)z(x!YLDllLI5(#+uBUuZda!ID=>-54@T?CrCi@QRQK~vm*KtrXieK+^5>OX z0ha9Su#WpZs&3ww=Ic`WDtJNBb0i8DV`GLve}4AwqiSC!1I zkbd;z_dO78pRcr^@=&_&W<=MW0`1(J6la=nD+B`Db4k_8fc@Fwrmst@?W2pmLcx zL)B50JrV>`bGR*eZ;jhOp+Qu4b8by)M~HJTZXH>&;@sSoSx9fWRQAw)xC)D*By}jA zdE%`N*wpWK83t|c`x*ApDIUFmt3&V=j?C*rK>pXrXMip}{)hY8kaXwforsb?gxKfu z*&Bg#rq`}60H+IpYcP(upR$gt_m0|M)7tiHOq<#cr>fckBy)!V@DBchXiA_g`W)H^CftDEl4(V9`gfi77K?X-7wy`u6Hjz5tyWNfFrhw84{`eWr-rwKq?hvD6H%y7 zMI0!Y4Da6BI>igeR()45JfxsG*}HJsP`ZS2Z*^V#Ulu@;#>bJ`nZdM&X%mgpm?~X) zcv7jh#Fz;6(A(Ug=Y3X8{g7NA(o3Qdw-vQN`|`2afyF{RE@=~iX(*7#L?qwSz5lks z4>3rqr{RmTtiCF@kntq0$+tPteXsr1GGZE0=*l;gTIQa64eL4~zwhs+18`30zFKI% zQgnFw-x}RC-UDAMp*Q3xNqj7fLvm zJe|+_BKko31-4Je79VLGp@%0;l%Y;PMo7o(sI5|XziQfQA6}gPReGHYeDzLqBH#aC z0Kz~$zx+-#+ZUNf2NM@QEFMhC%$%)wb)q!UR))4FO-BQdd$m1SZP$pax1{$Rv-?Z(wGr^8UMr|WkaJCSR% zl%ZY%L(M(ZCmz9KJejDJH1YU@p)PX%vg3Cb@ljh_27Kk4@pV6*e7<+VPy_1@y*BIW zk{Knt^!v?Rn-$ChE4lwwkWi0}CDe|gZjzG@XNNhiP0jS+D`4)@w7*HHUqnLv8?McQ zJgI~_rd17s1aB>V7K>{1OV#64%}MWMHMO&P^bbmD@I25YJP24?{7K%_vo!Vh_?0=+ z`-^qP&a2ebjtKzE<7a0hf|0B)de5EbTyt%c{`zReste`_DQ^zOS&%NPVYRUTMS9H? zXDOFlbur9eqYV1Sk0cM%m+;fTsKQW}p17C(eZ4e{+|D+Ps#x*u{L|Hzr}fnHF?6>@ zru~IGYKxEE@9qa5xxEZH`E1T9PeTRm8p%_SR^C;Gzw^#puuA-bv>bIJ#@~<(An8u( z&tjlF4$1M&*N~Px7&KBmN&U5gJicX|3x#2NBP3#Wu8y&!R)zhuEcEw7)8+M86e0d# zg7-0rn~gSAVLjvB{)fx$zTN?+{~PVOc3h+$zQ61$b&;o&JOwr@+D<=@JPdMuV*FJk zf3_j<@^eVI_mh_6PB+!^qWyFVB=|MbKLkb{-~mpqsfn?ueN|KUP=629=TEQ@ zP=mlHOA-P_(FUj_daYPkac2)2K3^rr`A#@}+*KVmba^b~5` z*Qrsm^=06B-)ElK%%IgYPtt#(9|AY*%L(j3NIvXQ}X?F=lg zx5{z-ReDa^w?F+7hB}AZb`&ipjWXw&E5+~N?ndB2{2_UcA4gHW=1bMgS%(Dlk7P0R zeVFpyN#&Q2hE3Jn?$qHlV8Bpg=%$S3(vlmmb`15GF&Ml5D3eeFEO-Fw140CZ`k2HG z@CN|QtMu=S_75kx1aDlzn&M@Op!oIJU+1F_W6rxj*y1b@d3jd z6{r*29Y}~X^!MY3e3=nihaz<-+)w`xLH}c#>gcdVynb|S(&3|{oBuDHgt{aP7gy!n zFC)oCHQGO!;X!ZEGkOt*jRXTm%2XR8P^bMDbwo(0tK35kLp@Bd%~A<<+_yrYp}$UV z%S8J^)w*@?>+!g;Qe@%Lw9i4(cEXvN1!R!44&XS5M5|){GwJN>oU`RR4{6BD zfYZJq1!X3KCu&Cx`SJT~!Ky~?^d4Aay8JXl*{k#B7*ku~j@;IxPehV=urWmn#_G@F zzsOZ;ORm0{{?;Ue{_Q_e2iqpaqV;V@!yCh`9${7P2D_Bc=UYlL{LidUcpGX*pD+vr{A~V2&%OH0O08rZD`bg67r7 z<8yD0c~vI-R+w;=gr9aESH~#bY7*8BiGhR;*;csy6$Tq0#^h6`+!}0-#A>g;sX~z2d6h!(&n5)g_) zV5GZ7KOmiV-E5i(ZKuMxbKOevkf`$ZOzHgVjTm-&7NdDF<8Dk5sT4?9tnfYXSJ~7l zf~V`wTWzCo0Glv^ls?Rw;0!&$SYi4byr3{K{O%zk;xy5+;8#hYs!=cb1FEbmE z-t|=@RiMoQ;G7-+);KJRN2qP9MBE(@2A%0MNvU<^k>*$^>Jb z-;ux5DHa<_)W0}kJQ8YUs3$rJ^(Z9N{+@X)iZPaHNe!?6@#U=do{7u6SnBQ}9!TJl zsL%03Gu3dY@cqu|ro5ul>d{V>nbW27?;Hhr^(n_Q$MnzheQ87ss`dD<@-5=~<)7M0 zgzuq0X;7aLba;E9Y9>*i*FT01L#_8v>q9Z{1>a6y2nco!T)N;lD7|@W)BAWAX&G%V zB@TCv{_4|@zn}j7{Vy4RI+jr1R4I>2-Bc2)3ua|JU!Po+pIlXv1@Io9JGda9*{>jj z2Igc?D|y24>IRsNYx|%u%6b}qi`#Q@2P)q`L*;wquvq1L4b)LNbEy-QE!dGZWgZXT z;F4xp#=quK$%Zof7&MCpt|MdL$jdiS`JRW$_l0_fI#Bt};Po%P;5RiiRkvl)9ie_$ z8nBj(;fU1_F-lf|Mi*VsC_8MWthEBsXX)mj>O2_gKVQef;}L1v`ygpO;VhFDSy6)e z+dB(PmE5RtDP!)C#nf6cGssemoO)J?K9dR zT;W(Rps_ISC6fZHig7DaO}*~SJuY39qXwnNkpkcPdn^xcD{WuEuZ#ezy1BO) z|Gm;*RoGvJp+*v(Yi^=G=b0LtLmCt%Xnza!<#UCLgFb}ycU5%1Fi@rOub7lu8NFt% z>TBK~sS&Zh{j2SZ*pz{xzVl{j+>E{8i^Q83p%kF$U2ANu6 zTATJgL@SdJYh~fjjHjexu}6_=f4~@CyE4?YS1Wb^^r}94eED4A;-Hn#|JCY#Cz3+d zszF;qH`>&0LPDRFjh~u16#TA?`NvVS`>!E&!F_>0Qmr^tzTLH1Yrs%5&y5%n*DgkH z^;2yCHY$U`(i{Hj!uPm_iQ_#t|K6A`<85`2qvg}E^^WwJ6Qp4im}00H6=q?`?rx;H z;|#t^h$Xi@3^ki}FxyddAMRYp?8d7N+h_v>2BXNYw{+Y9 zRtYuNW;vr|qsS5;9g5q{Ir^&)fbj+-<%NK-Ke>eIuLEH3=B-Wd<6UH&uBQHq)Si`x zzcghMn+umoY4qQ%g6PIkPw3aYt~7I7McdI|G=^H&Yzh5Uv&podI4afCW5JIRtfcRjFNq~LDqY3qO@Q0e~kAC^-$EsQ4{sd(EFn4F+q$}nXZ>PbA?sn z{8~(`r~R9}+O>r{L%l%cg3}rj$@}t*f0MMr^mby2IX`%~G@klxd3xH~@*^bF`Z2!b zJ22Go8R})4|2QiasRR`1psKn$b)`BJB9gq)n;0g!<`Om~xbON{7Qt9&j;DS{oq+ze zbE=Qhgf>B|p)8g9{plJhY_**X_}aIO(NzgiWfJGLXs61QiB=Vr+BEHRh_rtB3}f~k zG6Uo`F;t2`kyS-jRdO@+*Zo!MR?#$^F;+F=NE!5S{s*V3+3Es1H$WL3{pbZW(89A> zqRfze-`IV&v&dGEpl06dU5j@=VbJole*mh+8$kA6?*=KuAd{w};!uSqT2E804phE_ zY)jz{AbYQOgWO@zs;__c`=e*%Bh@URD($Fl;M|~Lsf14$nbH1$0<_0zM zUhf8g!l3u7zqVnjj;>lEy)1%P0{yKYJp4~I75*fJ9d_m1|JiPg2K7n3LCw6^yJ@1Z zl=!p#Kb-1Yr@8*9>WvbWv z!@wR%Y4uF-`#%WnMB34eS&X4dI}ZXhWjpwmmR=vnk)0c``!&UeW?^tnT0YMm*SoJP zmBMaPsvIJP0(Ut#JPN})gmN5)yP=yZlt}vMz0}nQ@xX+0^_4ZA2Ir7gt3k5D@#KT4 zwkM#hc_|yxX33$(?cr%&45j6w3Cuk(fdT{1KWzu&_yn31_J_%5BM~ENQoR8@Fw}+9 zNy|LOMq>#H^%6TnJst`5+0u5vfvgvlxv#~a4dTt7AeG_Ge1C&atxv!7ZUEVPy&C`t zgI2WvMWxAXe%>h6jxk^WGUwKFxjmWt50JgYHR0XoH50Cl3EaMJCQ}gy6eZdb-ftL znwm#yW;13SgJBW zuMP^;c0EC?>h_b6ZmH@IL#_8$FS+z57};D`TF?5PjH`^4|M+!D=A!cbbv6i&VuPTu zAt$YRv?)N5AflCBco2!#@V76PP9&|JoRzgZpU?Ua88dwy`SBH~e6zuP(FIufR))GB z=HZ_bQ14ub)oM50k1YQ?~Q2s$od&!zWUM zT#wvCf4JP3hqiORFL})u5@}EnEJB@W$+pbnR;FCxO&u6zkK0jPj&u;ib zWSP>%5n%=kiUZ6EBJnO&`vW6W|9<=d1p<1a-Jly6rkcVzVcP)tSD-)ry2Ls7_N#wI z-C?LX58r$cYMsf$(j11o_z;ZL?bl15yW|Ia?VD0Yy-+uo@)&z-LVKbGYv-Pt<}yBX z!CPg+C$D3S%>W;tfUXnLJt)rQfRZ)t&Aj(j|2IjO+Q7KxS4e9HnYKuJL}TUSPw9a# zMwf;y1Ad*8*x;z5Qf$We(700T|0_KHwFn#&sm{l`xb_1*VzAR5@n$2Ng)s(Sbnj{% zdh%;rHr9n?GK6UiPyh{YU$uXX**O7~(wrG{Y&8GV^@Dwf=(Sx^g=>pXKw1T@QT5{=!fT47G5b zRZh<~lh)V8ifgpfl#PV5@s~Urp>-My+&{AZc`Fm6hRh_lFK}V*t1pmF&wTI9xBXQ7 zDxub6F|W&FRK6orzMHY~-8SkVB(i#b+&zZ6j=y_sPl;j(<^<62u0H)w%Y}wbbuwz; ze}n!nT4i!M@t- z5iPy$RCntw+#Iza`Fi*LaRR094#}ncV{r&iR z?0?FHAaU*FdM@28X*%pkY1(A5Gd7Js)ChHfq` z$DGIp6dDw95>FLR$1J5nNX}m`eV8Yub2c;$?}h#`4azg8GS(T>jAu2l7eZR8_zhE7 z(&eka9z`i}R=(@*Tcoh@Fs^(%maDD?13jMqmUI1QR{uHkTYUH*wB-nC`q*BQUvGWp zz2ST-*|^M5Dx_NI?}h%Bf5q$HoocHme%;V5K7-0PcT4BiY?XoMoQlf#5F39f@51I@ zRW+erhQ4T-&~}c{%0q0$_l8X`uC_}1W$H^Q8P}h@s`XRW@!I(&jOfEsS@06$^F1j~ zLDF2ru12J=-jhP>Thg%oI?{IdHqx+>N}WFoz71kLdQN&Se`rma1Y9w}co|bX1sKm0 z&Sp+XcKojFj3+E~=L*WWVT6p|q~Bo3Os~v}G%tY`r$2grS}?q(40nX4PEOBg?}o(s zbX+w`<|Nb|NT@5*oP@e%6vi==Z$2;*Odrwy$I+CW%w{w6L2Akx*3Q8XrP@keGycfg-~zPmFa^h&N$t02Tk56P+Fp4W>Be35GL5A?Hd4~| zQkteu8lL)6nrk{A-naC3D&JO)7=bw+S%5eRN<5Y;`N;%lUR;tmD2c(7j73WkCP-2d z6NYQTFwQc%pG^-;OWOtKTk*)Q^uTxO2mfYnmCM0GS>vxNmB<*KmDP#`Tswy^;;{m6gZ)%ZA{ZXMUzWTg$ zT*sAB`Mk7!ool8x-zKhET$iLui6@TFCUb9f($oQy;I~X+f-rv=t_j09hb_$RLh7Wc z14hq>=8zPcG~U$VAfTlS^Vi9!gswt+HV|?uWklkSCrkgdF)~F;Amdr(^`{z1m+^G9 z0=iPFs&hr}mj3G>rObJCJ!jms-ytxMNJ#vnNtG5XhE?^#uHJ$aA!JMHKzb}j=heOb zR&HP7xcn>H|MVC_>5+d(2Q)2gwXF<1^Fq6CJAtcsSPUu?sB@{F^UUd8%C-1SqeM5b z;`tgo4QXR0iCq=+Hx5c-@chfrAM4S@Cm)ga>o2uqLv7fdP@{e;T7R`q(RJV7r1Ngh z>hF7)U7uxVs6DY$>i=uge<}K(oz=%Cfo?Xn-*P=#V;jnVuYX$_hYcgQpO>{C!?bee zvqXR4k1-NIk+7Mc8wq3jMchq%a7=g2uj3H1ar=@8ZPx47D01 z`|{VNb^n9-=A)SbganMDP>}Y-G3F$xhzY|rVHjr_-A^Vs^AaQqa+735$6t5A%$G`Y zDAYh;?a%it zNB?3jHgHuag=9L<(V*si4#kk!>5v*N6kk=Xj2=x>$u*mgA!T_<()r|?ukY&*R>aea zquY}p_AxaD&|KMF-5`hen#S>l1`wS%0?_1cU_W$KOx?4}JfGnXb%x$IePu zFm|Prt1?}UJMUrVWYfvk4Vke2qb+3;>Pv4b$-Sei^4-%5a^k0$yCzTI4%soB8yilqa`#ZHgc?S6t6`j>{`W@NXuY5WAK>_#^|r{*t}e>$4=6+307Km< z19VMGaeRrEb^NQ9@2AFA_YpjyDk}Hiuugueu%$6YHSHDi_)vlAt;$8g`IatVzecF$7v>* z)C5{oW=xgx)AUs&txbFE$KBE#4N+2j*z51QLee2JpL>F1D(fR*+5`I!99QY(@k2OCLO?=)0&UewTb3t{<7mK37{A+s>m~QJ4UlB= z>hJ$_$@icC%!>TfH&FL}jAInsynrfqVeqEXvgh8k(^{?x68fuzdJ^6K6~f_w)Tjy# zlgqQiU**H9_>AsMKzM8#!T?n+w*?H(4&+g0#}YWW_Nz?Oo5rA47rrc|u|uRhZ9VuS z#vDgCs%5lPs?UQ4+YLa>snl8-*c=QM_;PC%q~&86I2*$G{YLQQz+>v?lrJK0ETK*i zY97k0r63`H2Gv{*(J-eqv@u5$VBVEUcGa}hCZX0109E&v$;3?n-N(rG75ju4BLAs?NpmzLa=U*0B zdgU3kjw0O*VQtI$r})zIQkp!U{;?CZ*-T5$9~+U?33y-OP461lFnzTDsJ74!;KHyV z^sTl}Mbi(BfGJ3rH_Aj&8 zo~kO}oT0vVblI$8pL9rL zc$at%t?AGs4^3nt18|a8zJ3J6qaN?|gqiUq@4ZwYfh^^yhqa*He$kl3)L~9Sa$F{{NE#mbGgt zYSmBb{ZXpFt69yjub_A1X#eWngdo}PUuD)*EFJ%vJ9!_G=1&}jLB?-nnQk_~iZ4AQ z?N|O3CZLMu!0FO_=#fDgJOb}78-7dOOaIsS%zPDtPaTifyK#(v^==RKx77Xkd;R`? zr09=^T<2r=$dcdwin(J48F1D&kW7zQ#`?n)!vICq-_tqgFwH8P6nC^-8%vo{@Jq)7 zvyQe$gfvr>q2`>lUX4{an)ltwLs}%BQFSy%&90Ts(bKSxfC}~;P0xB&*GHhp4d&*B zyK!FWvKeh)a1xT}gd446H-NuZ2*;S|D#T2T1o z+FvE$YUP`A*2*yEPbDp9sL{MCPngI()K_8Udy-w7Wk$(NlL{yy{IcKjUPf`kV(GYfu9Tl#>}pB9ZO=ue%|_>#5IA~`m1-9hHrtMyQ_kex?#*DR zZ{|qPQ_^wA+fw{z#9Vx|v>tIh8*{A9e)|iW4t0A45kD%dXglRx(OV|~#$OEIC-AS{ z4dVNX{%D-ia*8{7vY=IfZ5@~Rq#Q}w)YC1lCcwRB1MMvvWLQGht{;Ct{Xeq(k6pZK zETPuxnC!ubR3qmk8%J(uuRZmD)^YI}>XK9W=9;OKKgE8ZN~p(<;j9|xb$8t>Q4f8; z@wd2LOy&D$Fw|Qjp}y?kqS#P(NXFg>DGtH%Hyo6GL6@i&jZ^ z5mo*CdK*zD+QqD)r>Rzi{t@u2Z@k7)krz;b-5g_FAI~!VNnu@~mZkphJO09Y#{L>~ zzQbFr+Ow!&N2076I3}S+bBdcCR;2#5Md%H`rd^fwU)}Mm)<)^kdod1n3H=!3erJA5 z8b^#U5-~JFs(47)p`8gPCLO+ z=Z}Fw-JP_kNON8}7mdL-!nIPG{mxbd9ZfTCpimxI=9BM5(#^#kfdq3G zt~G3xmOW7a<-e1PZv;#Xl)>=&$4aKsRL(<7^<_E1X+x@^p9Q18x)>kJMVy1LK1)Oqnjp47 z+8n90Sy5 zH;*~N*38A{pJa~JqmpqsfD07&t9Oit{SVE-!U*8*$~wW0?^#01MV_Up|1y04YE-^! zp@;9G-xbJ}DC_sl;ZpN!l#kQ+q&B!*^=o2y4Z}m6q2B`vlE=~g_}%Bwk%QlU`e(Zo zT_*fU#677_hti<1&xQUv$>Zo{?td)K^c=3<=V|yj3z}L2~OL(1b{lb^RrLGsveKm^GcE$zlq@&^+7Af|x4E(O` zLS%7kYLGtA*(}6!mLX!y>$!55n%|`y{|-i{k6@J(idT-JFemizD)+B zvG5%hP%L=0fXh>Vw12eC_1<E#_6?GH$z>nfC-_ua_cLsbMv!caW&icpAtF>_zv{DED zI6<9gUw;=B<1clZ7DdN(m)Vhp79>z=#kczt0@T>>J@m&p!=Tt-7r(Yq@bm@!4ctcr zzpg)u+$f^fwi{GJedaf5rx8@KP6Y!xc8j)?urR*TkE8T}G{6>HFy+i+(YLoLQoH-U}tXf$IH$!BFD-&@VMHEF&~*BoM{DNmmw z?cC;38S?LS_E*cx8wg1U zlU@BYe$D_>9}Rc8uu`2LMcFxb&9zxkbOUk9P@fK-L1e{#3Rb?`VW=xpCraB1XTwk* zXsXI2tii7#{t4-=Vc~n|kJE=iv43Usf7>9KH~|`8FBLQyv|NfVDV`EV+ne^U3TLAE z7hxE+VFa6zN1rCGdyk;)|H2=e9-5cTG>OZv4r{EOwa;f5rn0TD;=}(H8C+gt>`4wC-l3JBv|8OPCto>llS9y6O5ya5=9?3bR9_@ zp=x6K>2FkuJCV^W^jm=YF~afl5$b;`q1J1&F1xX4XQ(eYU5%3IEEV^gp!(KPdK!Q1 z%BrQ@#gk^ponzLJpWeTLY_nyPGfK7&u#BXRu13ZHLmKLFx{wgH`8Ajg1HC?~ili^k zSxGrzIJQ!GXDq%zc(Avu~lMSd~lM%jA!d(!f$qor|=1LzuI9kkT( zyHzQzX%OQ`fa4pFZeyC6|H}T^WH3wI{$I2ee7G0J&8?|VR7+40Q~*mUu$)1#<2ZiYGuJY zc80t(d6JZ$eN6Hj4VD(J%hFA)_5T-#TA7Hi_M1?pDHlw&>$A6*pcd{|w$ z02=`7Q+CF(PT}^@|0%cL)m@!Eg>Ve=45m(4`PPx4cQ1GT^RLp$0YfSnBwv{A6~-Ff$|cGE%2r?B#^^OlxNt7*(vJl-u(bI0$N#wE0Bq%m>! z7>H&`0J5;hz*h7Y(oQvGL|@41rdwakze|JP$`bro!TDKD@mEp#E*nFQ$~O|~wzIw| zjl(x{6)^HT8e27%tNs`SGsg3NT9r*Id-Qt_>y_V#R^wc(wDbN1E_YQIkWh0*+QiEy zK}H%`{v(VRn_Ll^LHXgt@5(#pZ0S4Yx8_UxKb}V0X*|LN;5TB|U_`q#?}@6h9u+gD zp88-JJU?J#DXgDIgN2Q9Q}I@N6zfoq4S3hV=WEFVD?)NzzKeEKhMMx~JfP8e1Qo)D zP!6q>XdGZ3hQapdb#yR{?94XB^ZwiebB^U5t=?LH@Ti2E zHbuqAHJ1?v7JdFgY5&_jFw~Do(fOi zp=H$k*)Op6awq5NF-Veq7Ir=~t)g#!y_^0Hi1R z2iE^8m7GkTrB=SVhkA5HzH_>}Hfve?f7ISC#YgXvcdoip?wPZP{8G-4?RH;}YqOeV z!>m?oP~By(zg}0<1)h$Zev46>y`}X;EWM)sXODq%F!gu#To~%BQTawZ8Kc~C%Goymw_pChQeHR@Y4aJ^$7QOE1r+f0TMdwsxr>*&bs#Qp1>{I-a+H*F2;D+!`wfN#qRuOTXOIEc`&9J^K0Vh0E@>}N`GC5R+)6VkbLQtS2e1J+W(_j zGo<~--(s)f328a>v#5ri#XY;NEK*})u?bm1WxW0O+zYJtP=EECQZUIbc~ML6yyq`$ zR$V8}`(gE#`BXO(S6crM+ONm?k2F2uH;oe2#8RvLI_IiIUY9xsr{`?mPT(2Vb@QkJ>J6|F`S19=`|eDpmR3Q3jsz zZ>W63fLdcFWD7iwRzZNTvdiKKT!Wvnpi*GsbPiQFCwwnqNTbTl4Aauk2Dg`DB`G1K zSY#3BY?YBj8ZHGkSBAG>^I%5e<>KuU~GdX}U3QnwiE4XC*x*E7eHcDHPy8PV~u)Wo+VH#cdsQ^Oj>zkk);H4I{0FB>kf}6xPb>|5gdbKt&Q9 zhLbQh{!5c4B5l47Y4bm=6j~OmG<9@2j0#pp%f>gmFnk*}D!;_N(E9>YbI=CSeYC^F zwAUV-jXnYxY;fp?N##Y_;zsEG4*P(O&=%UmlryfT$?Osm8t2i7EDB5Nek@h+uGrj@bGJ~3aXzt6qH$X3jFV*Gy8&V9N5-L+H`};A z#=2@vxzo4=Nk9I6`q%GbOltp{{ZDx}l~DisMt6q#!qZXtKHN!s{kZWXNylzark{{ z%12$R`rdq*^%lm_ZfcP`o^D1$?HOt&dsHw>dcD-uzv5o!O}IMYtF(W_`z7RC!1Q!mi`0c>#44%n!5g3&iZ5A zOcwA#r;O2{ft;bLl_W36{HF#_#y*2Fv|l5UA8c2}G;lsBoTGiIeNB36{|x;tqtDd` z^>?K*lJ?a9`tb+-zaITr07cx#tWv(*z=5nu(!1a_`M>J?XLUz<+x5i#(s|d-Y$|Py zL7MX!>rQ%M@%-4Dh_1Xk_P^>|Gh_)2afS2RO`|>~t;e3?B&k+v<_0GD@@p?i#|^*X z_J@I}ES`-8Ta5K+yR(_l#b!e1-)}Xeergmgk39ifLBg=AKe>x}HLSl~ONIq|PTs=w zBDJ#fcu@{ zIp*Iur(D!4gp%`|?_7_R&v>gqT> z@_}Ek)e_cKVg2>mETqy>y^~-z&~;+~74=;8Wa)bPWm$X~M^9QBrR9V(r1hXfE$>R3 ze{{{H-v>6UjOm9LGl?&yGMrj&DC7LN9F;0hpUP(3-BNiLgKEUtsL(oFW4ipV!kU-d zx)HJ27R*mboA<_6gQinsZjq|-qg9aKhjuxZcci~LB-d&IzIqF=XS*^1!_^;J=5~ix zqj1?&1CGP53^3XSw5c)F#@JiIk)ju+^KY|}Ja?kub`0xA)^mDYR{U6zS0nxt+Mq+I z1gC($T)wd0wK$i;2i137!ftVyV13cYT2Va#^h`pHb5D@M2i13b%^v_$Z$JKkApPxc zU8mRn(?euTMRR&ck_pxqeO9plDMLMFW>tQDQyG=-3fE>e$w`N^EtK}^1Sf0ZBq zRH*VM=X9>QL}ra&AXm&iQEqQNM2^PF_kVGQdZ3-5CN&bD=)HHDzze3*t?2b?p`7kc zBE`ue;fXqsB%&6r*DK_ZP(AoEXzWFWvFJM#sz}`17oe{?rbdBoRTfVO2eN;v+VU}aa&!&!c=WupvrCPh{-m!R^!0}M4*zEwh8s;`-1!ZVyQ^!QJRj-&Y1X zLLInrABg6$E;xoiB-F~#@fLoOCU&iI;np{M4opja}4 zO})oZryu74p-rIY&LbG(Ty8(w3x=AF3me3CKRKHYy3xR+7+iT46Z91DA0dPdV&*!B zpLMHj1r1pr>E?(%nuFtf3l>VpZMRGD?{`t=Bg|GrE>`)D6Q)jzC=D|x9)J9zv93T# ztYz&re-Dug%ReM>D&HF5)8i@;6MPn@DG8|;=Ya*T2W46LF<80~1V#pKkf$GiOsIM^ z)(=EK{XYWzk2Z#RjZ_Uu4?!~;a;U`QxJy^nk!*0(w!e-W7EZcoG_@6^x;Yk&@M~O~ zRg&xeus|Le-63axWob)0EoIqcgPffI7qf%fz6i!v$3F`k&a>rVbR9!&MRp%MtY$B{>Q^#*!n?*$-_~}B9D4{1^*LOd z)wW{uk6QVD>SY+}%P~NLg!sx|cxgwP9&w&e&)qg1 z_?iCsFDADbL!ividk7Vj8DiI2nW3ekKZ)2_sj{(Rs&wIk8TiB|bWZ#q!takR0IM^V zp=QDK`peStxfAS)HfJr`6Eb#{ZfHcdTmyXgnDJ; z#{igAC(~HB!)zg`4y=3|4Gh0B%G_~Wy_Fy~%JZKm-B9ujpp9X+D|Zq89Dk&HO1S?2+Bh;HQN+xombd7mc7GHi5$E<;+*FPblHXPKUcm9WX-C$d^#7Uct zu>}SHhyiv|QuCUnZQW#=#`odgyVxKYO}M6upE!%157sr8ofiiN>rA~?vGtfQNz2~* z_|#T6Ly^>xbt;m0+ek2#?5ULRUedn`9=_KRngD>yDgEuP?oqS{H1YY()lDq5`GEZb zt3U86597U?ch^p?R;bM9V5ke9Cc9&(RolL@7+VN$Grv80KlOW5n)W}K>tsKl2vX9* zXMJ(iEim!FFa1fbh4JMNL0bPKvR+)6PC;~6`HoW<5cRt%$DxUn6f_CJ;{(<8Pu=Ws z!rm&`k3S}TT>>Vg_GC7|9Na#|Re5F z;nv<2$vg8RdExa4>)}P&V4b}D;EX2OcJuB;^j$4eXdkF<{8Zn48$(^!N%6tEtp1{zSYY2d1~d`Lv*f3l?nBM0e(My={?j> za)$cHSEBMwbuLndT2;OS{8?B4v1)g(yQcG~vUzyZs^ ze|o0A_}Kke<-C?F;!rcxJJV6kPoCc9f24L@oTcx?YOorgYB~NZVpfBFqj>r&u)59n zA)!CT*F~UkXSdo95Mz=#Hb9+xRXx3oNty7fbX|gIqNSl)M`g%@oz6lt$Yt39?zY1J5V2wKjt_j)KT>|7_?b* zh-1LbnPgQ9P9|`bWW!K%c3LfgM-jFLa+ERuDgJiheF@>D(MRcEk1}nX%~k8-X7mik zva*p>JN84%3#;6uv!vRgbW`D3)>*f*VWV1f@XC!lbN>F65z;us^)q8^;UaUWfk(Oh zVE_+RfXph5})z4?ZL=OX$Q66@347{w__PEFFoo*;hhYYWJie zT5go3)!^Qc&CU9C)2_Q&x)?GU;#|s@B>k&3w)y_-Z^$*{g%9HWtMLYFX zsN8B`2I4lL-kevbeH;d)&Q+xJoGCXN$GG6!DFPcF);_zr3Mf-AD%oG+2%pqn+y8Z7 z{DU@mn|MxQPwV8I_k1b8(j+aT4wBYSqms{Yo?M%1HX55BQA0H zVS+!2NIiAtpENQ>6^1GPMCIEe2&mm1j8VsB^#vidwNUJ4pz4cDm(3d_@(~skyx{G} zpX~#lI?j#XvVj3%y*HCO>1RGR8{mNvi?^TtE06xlPA!-bn_W^L=BemkK|N@hC`zfyPB?K6u`HP5=Nv z07*naRO&=&KIpSS-$}67l)I1c2jD#d581m(l1xDGf_J&=p8!`6fRxeHd5L}(sRjg# z&*TYE`m$PFU*b<&E8E$VODkhDOZ*9nR+&JWVpn1B#Q|b zJ6Sqf3&ua0)ZLT${FXX+!P{s3Z*^>cPokj8+Wuyg3@hJD>>lcE*tAExVT7L5C(ftE z!cz`onQK;It-bK)dVKM)KPr)Qya+ys(?2`}uLx)JE)6ECK@1t=Ry#Ss+19K(Pn z-y8O=q985Zj36Q19it%K-Hd>=fTZ-$sB|MKJ#=>p3ew#%0#ZXa3={8sfA90G_53+A zYtB0RoW0Mv_ukj_xl(3$TtC3_Q#AaL+;l`AeG_HbKg#L@3eC|hJeSp~#}pMO%Kxxu zW%HkO+1xabXDdrx2NA!+fL;9u@`pBCsS)HsVx zwhK*4{|zbJIh-!M8>)TFZK;Kqzc3^z7Ced#FW$ZAersciZ;%aPbITl6xX$SdSH-Xl zicecervCFK_NdLZp+t_=^7P%+bDyqoYZwX13XTtinUL4W^o$ry+)1~C(_IEGuc6sHjuzAhY9j?-xoK! zVk{auW?&0vnHxEUiRc0h?2WJIhlvmE_uOW4*HUjE?@2Vt%4+ct9YONl9izKuCD6z}p zxa9Tv$Nmlny8@*=*T;)N)ojGZS>#D z4xGMS{7JdxIXrVwMUJ2^E1&qzWI=4@8-3VhD(jajeA42!PFh2bcz)^Vj?jqZ)w)L_b@57zET$u_u>t$3V z^W}CP8uC-3uUAZSx-C6}w#<2EB;J}>qwPvsymhR?3GaAMqCVMrj#>+lYaY}pb|2{g z8B=I&0B@RwFX&ueM*cOg|J^xvUK`~wcs_UNitr@p{b_IU;kt}z&bx0pHgR+6h3WIG zN0j@8vAgpb&$BBcLt2`07eFFUFJ7tKtMt!L(a~Xy{Fy%0nWeUIC7-H3VfmH?;XkA( z&N`9b5dGu%`*ZBl(%**Ga7E%!*0r#S5vAbjEHU8n;elE5jezu%@FDG|r|V=T9B_X` znLQ-siSGv(%%-_Sy{&%H+&WNIExpTD-ohN7{VR*zPmS!uUx!b?;36*|GNon;iq8D} zmt!M`1eATPZ^A2{=G+*6B^4}b=j-Kr5K%VRx8!cXrb*~!@{xF3>(n{;=>B!ZwRiZG2&A< z40Vzx)f9gsninRg`{yY``LsY9`N}p^fEZDY`$(FyB`siBEZ8#j9{*MQS(Bo~+v+0r zgvr_(*>B|FT=+w3I=7G;O{4{X?|kdt537*W;47?|CN#V4--EqN_xBmA)%wX^>zgkM zeUrptL>(&2PY!Nowunhs{Kitco~Z<8cEGEAkrb-lCm&}UUiVxz5s05u&eTDzl7~Vt zA`cEkqsQ5z+~@Hf_j_aSAY+V3n%8`nXyOKF>4-6|*;~AP7VmJE%G(OQbbT&#&0fE& zvN7`%S3hpH%x(YleMz%fI^3*=Vjs=e+MyEn(1G&rl8XyCkRFP%u^rSu=$irGUuTSw z_Ru^v|9+Q}#VSHjnR}PA)Kdfg0y_4rTXuxyELDDrF>#pmJDhkpP29=_Cr8OBO2o8p z3gGkDQpCNgVVFtxSX>kN4p!I&K0D0MgVjbYcAWI;b<|N!wNY{ANN=n$ykgsKH!>P;-Bi-(Dt(?%cO zezojt6WisnZj=R6gF8uUvIs})>LnOAjYuPrlh1x#4@>s=I3f=!E8;D3<)EF!=AI@+ z^j|yiH&Gdsrg-x)oeKCpqat^tBf2*VhYNwp3^da z1M%9qB)!VkX14FxlCxbBusHyb63?Z`>dIJR5WEaEt9^`DMR@K zTGMk`OwEk^Hp-t9SmdxzP)T|D?>{u?eK(>tvjl-7OO8Vd1m07Vxm-O+Tj?*jU)}j# z#Y)+)m%t0tLmvIERe9fk4dahZ*%3}~vFuWjjE5JPym`8**-`UZN2wvBJYMP!F9R49 z+vyrr5S()Ogm1vLpW0F8Nfi7}X#6H#saz#UV?Mv<{~diS+9I0ynIUSJv|FYF>!@;^ zrO?aXYrQ+|Q~2D3hSv=Ti*l6%rMw47)(8c^mv{KzPf-$m1qO}Su>YJ=35Mudk=YNn zkopS@PJqkCcP2@)zAS;J-PgI)B8I{}xYe%~i?#OzTlDry81>DTWp2`N2a(SypDX6P zR6g<<&n(C(v_G4;+<3*-cQ~--{@;BSSGd42<*JWh9_p zLOWN);+vMt81K2Ma_-IUh6yZ1J&du@^KjFsqx%jsk-Q&G9t$r(@zRm7L%grNd`6yp zh5Bb&Z3W8wg5O6A)mbQ)RqAc~FsF+1${)*V0owpt>2XuV{b!HF{4)gUAI^HXj81O(hR-*T5Yk&Jo|bTq-+(_TylIRkGbV5uKY%W+yY=)J%fgtLaWjmXU^`< z&D+@8sItk2$=(-*lGy~4(?9j)aC^F33o+VjhIwn5XgVMV@;*e#6T@^0mq>SbVk^g` z1kiiM7-nxaqL!V^VTmf+ws1eQ_(UQOv)9@XCHnK;dls-jyYqdv4coct-6?4e>FJuC zE97~$0q3!S;xx6+`W!$JF;pVC%~Mn4pK8O#|7SIj-tlq)PkPWTV%BJ81spRgsK`He z?`hZ(yDh9$2x$r%HB3cb5 z8SuTvr`E@*&U%sCKL&g847=SOChx5N8p!dGxi9k%+jyx*nfBxzXf1m*fnB8tI(&vn zsbM3PS}LQPkib_33ua~wTIzq=CYHsgBw87 zt~gSjJ~g(vd%g#E2vD;m)e?2j70Yh`0Dpb`oB}@pc%>GHzYYpJTRJQ{7Qy^^U1%=i zE){?QX~j)qe2T;v+yG`3EXtI%+UlXG!Zc#p;^GpZjKM+ua6@L0x2)8ZUJ)3{Nt@{J zJhYfJGZca;`@I3$;-TD9i^VI2Lxue>2MA$5m#W^jx21m*zyM6_+?tElxr~@ zZ{C_^HhEP_@vz)9`fn6|c~b?0r>y~tR*1P;2&X&h5h~t})}L}|QHL$o>3s67UR2!n z+xsHrM$nU`-#YBvKF*9HIce7R$MTH07y4A(f2%IXXRf2wHp`|NxAQB3y%5PtmQJg? zmKl#NlQsFE=eDo@kpAM;yt{M2|F0h7E&50#eoJYJAB{s2YF0d z*lqNFd=g9=St`{cuYXaoF#zo@wrcF{qj41F_Q;V*_@VGkX|rLv!05xyt;VCaWDgCC z9i5T4W`nkB=fscM{K#9Lke#_JnCc_xg7;mY&U{L<)@$k4p>|je;nKH)48;jVbu{zJ zSNoZ}aurehnzlAL2d?Y)Fu3=FK!CVa2=5>d??W)BV{-t;+ioBi^z$Ij zK%9SB3%iT0XG0t|l&`qmIbFATz{;d%hfO#38DBlTuh^l*^uRbQ$rnQ)c(= z4I``HMevJlx0_Xi*l2@)EjS|{1d79`!!@?5Ks`H73mx3+OeJIP8mk#oEE{dZ8iF+GOOKfdy})(XinZBG~(eg z7<{*&h`*QpPG|C|7?Z}V+2gq%`bc({Lt$CMhd(XA*!Q-(?%a2b&9u(OUZFjSHC|jE!o0G_CBkb!EgVk&nNYt16{^Zxm{v`$m3N?losV@i z40I}YA3eIl)M$n|B;pHyYVR^n>>P3xz}titiCWH!L%a>Ew{^9()QVtJ^>6t_Fe}K~ z@4B-C{<8OI0wPJE4$q@{Zj)h%&n#k;8f;CBc&pR)0+N-8WG6FWSFDuoZBgp0EW9fB z_eLtMly=K!Qq3R7$$*NlH?9H-{&GjXp(1A=xvarnuKN-{(yX@q_;q*y-|{Id;UWI| z62FZN_ECm!K%Ba+?a22JUu8_n06_BnGIYfu+CK^&caUW6 zqlb&@ZNU4^`~Dwonj4)D%bc^p9A|y`)N(Z6{soO2%Wqvx#()~mJ)~A=6>{R~z3r+( z!+88N8sD2+ZJceJH~zrf>Z+T35wYZao7AHg9E=!+1@nsfAK2wNZtSNtW1_SPNRrST z%;|f7m@TZB&#`#sIC7EsepkVQf3D(!A+JDlw!~zsuF8fQHV>NrtG1R=k-nC;i-n0a zD7FpMC#x`7U<`)+wf{+)w*2f39(x5W&UPbB18gJ#`uFj7IO$CS_)EQDFPNkgIDg>g zL3x*u!x~^|n(**V_~f&LhlO@G%Ba^Svf2Kc*O_fI~Itm!4^U=!2N@nt(nSCc{CM9B32dA}I+S$Qv4 ztW#)Ci7^3wt7Z)Eo{JxD%I&Lup{(%`hN?Iyrc1LsFh9(ceth+dE}$WP$2fNd?AQxd zF~CY_ya-BY0%1^j9ypFt*MXuUEnk2pJzFD=f`j6XRi9s~5e|IKqP#vFUarqWT)&x84YaG;)Iy8Uag>dyNvme|qEw_7fSMR+uI1!1uSXRX>*A@YpO6)VuK50J z+qN&G$1aOS1^LJEE+}{4`2Z>Eik60j;Q#a*Eg6JKRF=AH^uVU_d+gVGwK0UVnLq+% zvLV7;#RbfECJJ$r}AvykB&wFFFrhTqK z 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�_Fwq$;J)DZgha!6RM*#kU?0ox)aS4M;w-lS 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%0DmF3T5RFRp%WZ)?Gcx?j-T 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 MboFyt=akR{0KjWHMF0Q* literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry010.png b/documentation/doxygen/images/geometry010.png new file mode 100644 index 0000000000000000000000000000000000000000..50656dff8772264662c4ae9333f4a49dc2969df4 GIT binary patch literal 34500 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

UfSY%TE)Jbrq1iw@MZ*m;l@%O*RUc}AJ;Db8j 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry011.png b/documentation/doxygen/images/geometry011.png new file mode 100644 index 0000000000000000000000000000000000000000..7bced014b2224fe57e421492be10b7a1939862b5 GIT binary patch literal 27691 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§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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry013.jpg b/documentation/doxygen/images/geometry013.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bca84d5af59e0f0d7558f90cd3c3433c8e462d65 GIT binary patch literal 50752 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry014.png b/documentation/doxygen/images/geometry014.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6452870d47bb3c59fdf5547bd1397b131b08b5 GIT binary patch literal 26914 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 WrmFQQvt@n;{76eEh!=_KdjAg^XzNS> literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry015.png b/documentation/doxygen/images/geometry015.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a77ecba3b3c33f443b1a16ab62f2c0fe91b76f GIT binary patch literal 135910 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry016.png b/documentation/doxygen/images/geometry016.png new file mode 100644 index 0000000000000000000000000000000000000000..8fee1502e46e32fc87c032c990601cde160065ee GIT binary patch literal 30302 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

    (ex362vx1o2X@?vqF>mZ}6$+}%I-l)*3 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 E000nzFaQ7m literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry017.png b/documentation/doxygen/images/geometry017.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dd0277c90be7607a164aaf1de0f3ef44d8d16f GIT binary patch literal 38248 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 ML1CP#kB}Ju2245GE&u=k literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry018.png b/documentation/doxygen/images/geometry018.png new file mode 100644 index 0000000000000000000000000000000000000000..11b361bd7412e5484e2bdd0524d293caefa38213 GIT binary patch literal 32756 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 LNkvXXu0mjfy^5U3 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry019.png b/documentation/doxygen/images/geometry019.png new file mode 100644 index 0000000000000000000000000000000000000000..10cd4148195a8a3226bfa735ba2a48bef19397c6 GIT binary patch literal 2202725 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

    C*HS8RDGdwG#}tz0pw@X7>F9nz@r=HZ7P2D6#a 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 z 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 z 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 z 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%0Dy8nh}M({`OVHJ63IdDnxh3 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 z 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

    {Q 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

      n@X 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�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

      Pw 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%0ADDQbSKD{Kc`y{;2zf5kuo`qAE`RGEJ) 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 Y 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�(iHsU-i!j~9(XVZ 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

      gz9mNKLfVvhBO%$SK6-%SMb8g7l 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

      EyGD_m(JD=+ql{#wfy#?`K3#u!YgP* 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 z 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


      s(k-wLtnP}& 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%0Apg-Nc^>=<@qc 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

      <;*{mQv zXEVf2GZ2&pToVKCffoYbSx7a#UXd-o_lLHRn^wasC($0Cx5JX3D)s@oW``Ce%HEfJ zuC?6D2oUIW_}P6sel%Xr2YOcow_sRC#W95=3o6z|08DlB{?m)~|KAG%fstUbiv0YA zRYqzUNW<5H7Wi|}CNhx1A%ov_M-^smE_zksNm*9xhn5(fl++E@Q24gjx1U*3xb}_U4G6kzqj-*GOl|m_qpA_Oe^4g*WBP%SxArA1xSno^oTjz zEL?XgywL<(#khZvLtOg<_&>m6a%Ur9C~555%6pPVLef;i77KW_u&0E-ys{Pa#@K03 zeC4;X)<_%GnT4V6r{W5EFQxgux)j-BTy)QZ$re1~Nf)Fb{QjK}z5*u7QLg!KZIAMP zOi=w=Ch z$N1&Oe}-_*^#)EoA6ov^!8J*GKrY3LS^oAToC+0YQUqk=C+S(!UYYbk$w_;vjaNEM z%_0g#g3nR_W6oc7VG^^7kig21RDL00Yyy?%W|caZE*ObUr^`!C$h*Ke)79mcaj+gy z1TX*CFY5c)M3;XALiMF~(Tx#pEmyVA`%Op0apDffMb>r_XN?3O<1CQi&rD^XC4*b* zq;z+Tl@Fb~)TA}g#$$S_#3{7BD)GaeDV#MLgn-{CCR|-JQw*l(LyZSdrl_zLq$Z7q znl&5-=Yd(Cy8Je@*OCfbYNB(vUQ{T)waa--l6$8KUIT2x_^@0#AGGyfr0e96oYZ3D z$D#~PPClqC1baHTn2|^juF$<1o=932N?Lxk!Wa$~pw>q!q)}2XNu(R;{4$z~#)DbGn_!)p(U$Z|(2HIdka798mx!IRa;P&QQ8+SU2+RerCF}2$r%oLQ7W&{0-%o zuhpxQi{;}5m)-&Nfk`)ctmiES()IGzo=LATXA1ce#RVUdd4tJuac2e7bzVL=;GJSFMh)E@y2j?q!%tp8cFt_xlpxY%8k4i7&0cTG>?GM8%{-%|x9L)0zM2EtFU;BjZI zHlxC%_@z6-fTehJsx~D^;!-i6_3%~hwHS~7hTb|HiA0(Yyds=ZJN4eAF=Q3C@1djpQLFoDQkpM^6lciuL% zoMm%V(0PBQ-?=e9$xzzm@UGbBA4()YklFI(O+>rntyC$yDK$;kULhlD{WVC2;qzsKue6F*}~L!;+SBcz+jpS8PT&=;cu!9JNF>Rk2t; zHNx6+pZI`$sLT{giL0@W%TVD5^Lc2Ex;gjs147co*+jlZp@1&cI@F9r!$5b9DpDJW zxW`Hf1U}*NY0ohavm_e?#Av)>AC3Z?l}J5YL6SQPjAyLpmPae}0eM5pNcbA%>O<;E z_GOBb*khdhN-b6G#c=Pq;24PypmhLQ=OC_OA`u|lz^`t%a4Y^2>7)C|NV8hwS;YSU D@1vFr literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry020.png b/documentation/doxygen/images/geometry020.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a36a8d830091fd004d28ab87b9d102e226a2de GIT binary patch literal 23758 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 JPDHLkV1h2u&e#9| literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry021.png b/documentation/doxygen/images/geometry021.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1f2eaec0fd960d1520901e1e38c5bc6d6e8710 GIT binary patch literal 2217796 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

      TbgUh8A7H}sXzTF3cyK{ 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

      J-*GGpvVTpu`&h64UvK~14a3#l`YP0G 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�WhB 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%0D*-}nTT%lh?1A^vJ4-5~~C6vj`N2uJ|?xB9_` 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

      cDzC(D&iDkg6B8=vz`YDc?xI0DZN#3?$zc6ee2y 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
      fTCa$d1vv2`i-K|*@SazhHjLAdXS^9S`24PJf z(LdhVAdtMx2XvN;gt*m7HocskpgiEOs{C-^VZ-XAe-^5FYuZ%am$zNW)BImkccSg- z2^#tH1=61X%7FLA!%eky^VZ-S`60 zp+mm$ZhFe}aMDZq<|FV1e@j2XTmI80scpD$`J*lk9e;oTwt+V?6&f7L+Y%QvNP@2@ z>1DkV3I*eD<8@?NniKl->&uf%--#3_LVe3<=|+VW`^9t94ob0XPs^I=Qd(@W5v=q& zqL^3y#MHGjjoHh=$)~T}KAnR&VX`Ej@u>e){#hC>W#ftI?_AC_|2Gwm^7nSav{w(k z{bzk6%E|%-&T40@pKAiUpR{!YmHI!}W@mf?;WBtYNz`;i|{uUwe>F+Lj z>#HssON8OEPJ<8^{FdvLtGNRdA>1gJMaVR8n1F5VWROqNKPfxnjYt83&{+RUKXh?e zPBLkSpXIGvrjS2%WVDfH zSM{lH{TA2amwx#YDwDva|I54cFOC*NCv~ZlcXG-LxRjUvJrA;AdVA=?tMYpy)(}mB zr8ff~=bUra@V@uGKUY9py7~Lre7b`6(bEntRBM)R$8e37HE0L6+`cKuf|Fm|Ph*)!#jI7O%MihHEr zcrm=%9r73$Y?sZ80t!1n{l&nuApMKTjK18?%75oF(ZDG$#e0pHO1APztrrshyj1$; z8_Q{J0IdFj`xY02EUlpJw01`VjOx88+ZOL(Cs_lUrmdr0%l!2aoJw9VX z)b`*YlRJzK!i%)RAB-G2$VPYYB^AMw_FslAFTP|4mi^YdQrocp-F#F(@l&spC)Y6f zWqeKL$*=XR*Du*$Rjy2!5PqtQJn&=wHUGbu{)hN_{S&4n&Hr%J(>LGxxBRL+DAM{! zy_nWIEIkpApR|)87ndifYn4u5=w1_;xVy%H~+wnv$Qi@q{IRjzf~>AT-bU5q0Y3nabbwZ@dONtY~>a zn#x>x+IT{-1tWbJkcyW`QtNk)i^S7HBmGbWHy*j|OZr9yPI{86mIEA#M7qtht~A3H zRHosi{V%5FtFXva(g|ed08#oB%@Bz1iR*tPB#-2;;YeSOJRQACKkXk@GFsoxx?B3S zX^U{;saNHz2Ulb+Zi<(dp9v^F>n(hsj6BLP39HB@Syv)4CJ@2*-C6%5H2=DFo~3Tu zo+xHB4B@-?c-N?7R5lZm0qb-b;VxA37Zc&UHNUJbW3rtz)#{7SF6vY!21sYa z>C+wNq%~={inbu%*$m{NfRj(()ZgdaD{mKqlLs6tAaI@RS1#B`4{lyfe~&Fw(|hA8uOzho`_q+Q2G+<H0hqSHkdeUDyMc+9Y%`l(6;jG~;Z+mM_T-p|>ofYIK-Jjs( z$mX}Wk9i)XoRDqKRgKQk7>+a@=!Vr}oDjhOy^`bowZFv{bY;JWMD9o5`ns_Ad< zD$YW+3oW!;KBc=jC(ISj(r=5{`xQS@Igz_4OhX&Z z1zujs@~40Hr^6##A00mQp%12R|L8|QGF))Mg_)byQrWHatsZ4z`Fa)}Ph)-N)1Udw zxNtm0S8nnPd3iS*RPVa`u52dx|Nhf|%6#&>e*T>~p)TAbY%;(6ZEs`4$Nu3xzx1Br z!t*x{-}kz|N*y>1|M8E$I&A&s*5O0{)2}m*ST%g^#?R-_X{XiSO4Qw66LSaF(zbJw z_`dt^XJP%R;miNWy~EjOpOZtYrk@sdl9SDxKIG?zw{9JN;wS!_%u9XpQ@@v!(_T5I zb-iy#|JDZ&P`*WNd3Ph`W8C}v)KgCnpZ)A-sh@Tb*17FzD+~A$X`FveIqd$u{*zgN zCgo35(i+Df1_z4z5{H)JZn^E&VIA}MA8rfPVkw}+Onf*0+(&+Y{4p1nugRt~*F-hB zUiHnlSN_c}U(q4~3)NaA@TxoMZ<^zdYV=~)>Oo9@YgMJVD6U_w`san{*NJMc532ch z=aRh3+YL#|@BB~F1h!sG`qSR2?ymg#uBq?LZ34Lf#ffSrq`r91Jz1D|0vq&BPC7t! z_58{!e}DKUne&G0ug|gmkACc9nZR;^ntFfu^FROd3?^#_GZnRs1Dyv4Vm=OP@PbYa z)M{5AFpdly9vrokS56!4YG#w>aUVTOXM|uo1v+}TaYBKU54voG#Fqs|=pnl^i>Gv6WSOV3i4@91UUg^E6fgB#lG@~h5xs{$+&;#t*v046$B>F&?|!-oe@PUohZlRCQ!{H&Ge0(_l!wP?`-s;jDiwxAItz z2yo}K+%;eVUwAcGxe4Q`Se8F%CVl2bO}LQ4g)dy0MB$xX)rJ%j(cuO*IvjdS2C4dtrK z-gOs*!7R4K8tFIhQGOiemkx)c=;PPx zU#Tt@eJ7v)pRa$NML-w*O8#E|&v-8GA_emG{4aE+oWG_;mB08#5B~Vf;Be0Lk8XPV zJA*VFc!@RL`VKmMaJ;gi;E%Cab&@In+ zGBuAnBgRoWp7K!(pAoI_a!0qaXX1$nOQ9#;qyy#8#ZPhP4r>_M&1AP}&=*RKCqL{$LlA$^IbrRH1yc;PTt&vLnVi+KZm;!$bdsu;_XaCZ20$fs~Mxs3ey zmHc?)sC2C|B&}-4YGF$H-o+{vP5frDgZyOQ@N{-Hdw;FwqE@hZ%e%Xs;LD-{ZGvW+ zw1jbUJ3X;y52j?*zsPu0PjlwmI{aeVfxEwO7lZ7LweZcNmKz;v!_v)6PCPnnVdIjf zU@IS2x|{yN7}<~|Wq9-re#512-(1?g{x{IrWP|wk{*n`KK5on~#l&XYTu|m$btSUW zT~aE-#a9ABTy4A*q;L7Fb|%3x(r_CqCA&}>Fg_Im;GO&v8_%HQ;>Q5oiD2nSFnru@|OZ$Y0C&Wl+hB4z`!Wtt4%+LQRC*iTMSge9l zTsSCRd5#{n{izK~hHLg!oNibWyQdILacW}z%L^~w*8AbT<^TA?L$2OxY{^k-R|M?s z-&p?!i=0UjOB!m`E(Vp(I;@IycJU&Q)`X8ZbPFBkK#x=IU6v;#M9$#|fy2AFXV>hXzn zr8zdOG8V|D)u*1K{;frCuYKs&m2TEb2OD%Xm)x|*3t=Yu&*v;OuIJN#gdDJ&i79(Ign9LtJIY5s;*^7Qb6m#1U%pZ$+ujddka2seEyw&-X1-S7e{ z`Y%`gKjuI1XL6SQQdz~2FLD#*%|4gZr7W|VG)|^ydABns<2>IT^>3xYVzob}tsB9m z-_+acUj0pX(!&%dJa?w!b~8x&{nnj)lT>*sohpw0)~m+VUtG&_vX+{Z6WFQWt@wbj z$yiMKha!LFm(+i-9@Zk2o3YsJgbar~ZKXn*z}0uFyr+LJL%#j45a4;L3>DrbEv&L> zv>W-wEB$QLATYY4l&)}dR=%shI$%W$Jo@Dc z@uJb&vj9qOK4&bNojJVcJ-?J|d;Z4X_+d7pt;)s-7sYIgybkC}tnE2BLw0q@m6`UCW)NE_`3lg5`P^EM3s{WTGa1_i-{hY)<$* zUj6Th>L1KP^(n&x4|1Z~E02&{360v5(bM6d`t+xU?W|X9*Q9ylLtQ%Nvi{Fl5uUB% ztrH!yp2a4vcfI@Fm?T~gUj0jRef*({tJsn*5Vi~+kA9LOTqT#tU7nO_BBlK)uJNBR zt~>su>wgCH_i%vd{`>C71omS||Mlz77`}Y(m&qp=H#t>HmwDfpS=C; z8DHIb=N&l=T0G9DZ#`hY>@iHIfA9kzNL}!rU;ITDKF=S{#caN9z4_2+FaOW1I@Vk{pP0ym9*^WlewALp7cao@tG_lvQ%=AqS|)w^_^ zjuemQ_DY-wA7r7L4B$fblk_crij&&n_gW&$ad5rJ`fp+Vn_APn1rqaE%5Za}pA_td z5tBf5yob#KTBoZM)#o3#{O^J9`|opO1{MU^h@kZo7pkr2A}M%YaQ$IY{?&sE)!&Ng z?=mGW{kct-4Bvk#3)RT4p0d#gS$h3fdRD;itp0f+`YX8dY5Vr4Glo!QJJ^(Z9SiDP zA9kVox@=xmfBh-Gq6vOl;jWYn2xCm4XJ9>I_ZmZlB7R5V3BS2b?3(@JJ;~fpJi(nt z6dntK1?bA(|LpMa!z@&P?)u!P_1nMm+c7a{Mz)as>7V|;oU++RL!rXl9cb^WCQ9X@ z?#p4Jl}?S_GY4AonUiwxa)gCy88V~UxXY(+6UfI2)jTXnrvs2)5O9#|od|`It~hEu zi;IkIChR+o0}o2?r1l9ezK^7(0zS$vnnd(ppn_0n#p2HeU_lcfn4anL-7<~(O+4RC z+47Q4d5Dy80EQsIgnt1f%)hV&NS|QNNz6w7@yDMS-uvG7GB7(l{EL77KgO(t6O|6? zy}QbeNKSByFAHQ<5dBn6&;rx=sju)>oE3dx^O&qrh7Ofbd{>|`f|cKT$6xqTV6LyV z002M$Nklzvv@>mv{@rqtM zm^wi>B5L`z@RgT-<3cqOSC+8zE&WRW#iP$ex+11~X5LT^C8kW6j+%mPewF_C1wLRn zt336unfw(kY_ip%d7`qoKyj$APQzVCZoIyEj%_md0`9q~dd-p%g5i!Qo&*vnnEZq9M=qzT#2vTYP2umCqne}Ckx)l-Qi-Tov?bw+@zOw&VoH(-c4v=v+YBxF#- z+v`6=lgoq$WMTd@ycK{rOMVamEQP+oq5=avb4oqz@DuvJ4Q~0mLHgz3&9I_xz$u*8 z+D)hF{!D(ZU%x&&c5*Bz8vWppM_hw4JP#jHfkuC>+smqu(XUrVl`twf=8E z9TIb$#0`DqD=cgXvL7wEhETWZG8z;!LreXik zbl<^gXm`8ULUoz`)?`~f#e0d++ytzoO>qP3-B{MxxRFVz+*8B}P8Nn77i_ud=9m({ zI+itdvC+ppkABL1(XqDi8SB5sv$XOA4__e`NMZz=u>vOj za1luj6j}7exTDl(y;SAW@m%gg50gz!`%gYy zH@*$>e*_{f?}BP^nr!h*l1$P+@fPSGz(U_rDtH_I#iCyYe^UONz+HaW%Y*R8mtPry zX#J1MnJo%0%Z7Q}zST^h#<7nfTGGA1*W1RS=ty`xTKsID34MQf^bgNP&u>XM zzBSsc{OQrq7_asB>*|BrSYbpY0nGZaEtoqgO}tv1pnl3-_M+lX1vS2ufv@P%K2*Z_ zp3#?R<-Y(XB2Xk;^(kllkFNicyQja{TPlYTJV4(`Jo`0YZHwgLS2?j|^8|i*+TgJUWZT5&Pwt z;3rYa+`UqxWxk=(fi9Qi1Z=7%xk&OUlyuSsCgrbk~bcU zq?yl6BzW+aa?*ad5Rp0qOGeeo7OYif?U}7`@bd#7(a_?35Zq}QPyUELBSKZA` zzcEFn7#pAh7C-^PSYj-Z-c&#ZR0c2#g2vDUjIPq#F!Z6raNqCG_nhbV`%j_ENY*p| z`905b%D0{G>F0cpx}UxXaqOC_f6+^xx=LE|PkQ`vh==Dxo)9KN>R@7K^UZ3)FSl*I zow}+h&zK!Hsw^|cpnmaPt2c6&>x6il^u_U9>HLcpLkNRc@%R^qu$6I@TRg2Je58+0 zm}4i>m9EkTXkAJ9QYR|6GMz3Rwo#5nAUxHjSgKACRlXXWS>-<=M3A;Tcrk&lkk+$+ zBwosYBAFbx7K9}P{*aMoH@630)gs+2t^MBzEnEuwv zQX3QGsu55NuS~*T!^yxCI8lx1@3Xn1ngur(sfb!TFd?V|f*$J-X>0jsIsGel7f*%fj7FEVQ|Rm$peM*A9OsAjrH*S5qu=nk6f13rm zJBKT-yn?ycb%x*nZ@)imxWNXA<0h0VS){)Ds;h@Lyx|QQi@Tt!RWdXoV5ad~7hFRh z>LyI5AAHC`=;|87dpH^G!sh}lEb!01juu6|3tXlB^S#JAD89|BCz< zQyxAMQ`DdQ)Tf7Sw%%H7qZ>KnMf`4XyzIM|au@WyEP_5Tc=z-kd+a`}MW4^P-x=nB z-3)0xCgIlUT3f#QnyZFaz3Nq|iw{5i@SG&i8Wxe(U@pl6L>p|tS`_82TUnBb74UO1 z{314@SpRDJd&$j9hS$9I)mZ<$Zc_h?*n~PO3%~iZ-mFZlXOU>YlPrG#u-+X?CA%YW{uM&EC23)NoPl=zrHe=_)ULYs{q=KpcWADhDl!t=1$&b#cAYERSO z&ihRGR|fUz^QrLvSoqhR=N;9vHzaA|-*&@=YS#p6YzjRiQNB0V=a_JrHjSs92l1;vxHP^zRbU0{$vMd!<~ZPVXOj^fh`Dg(E1~>E_|`%P+-T!1}`*-uQZUi)}hAVDU%}VoIHK-Q;jp zCcq_3{^e8GpZPFM*-2j_5ze#ZuZR9Z=iR*Vz44Ey3g2G1S#1l_s7j50+w<_-SccFR*+JiF|xp8S*Ov5k;Kq=g~bQcp{M;s|U zcFkh;&${TtA3h8-Gc&`E&)bpIbA}&X@uMt;D`n+Rh88;C@ykGow_2Dp*l_jGaO%;A z>jX-41|K{E2eQxw(x>7izV(jI`k(wyeP@|UwOQJmU!t{`M&_^O|HIkVCC&0 zqKsq{5dGsBIzubvzy#63R{x8)(J$Q&sIw~?znu8wne00bDO`rI*&myRjkMc5q z?d7!ok1{n}xWcqvmVaJHr~K#H@8KzFJiT*KUDLd%=}fO{Bo%qeI~$M)Abvm+UxYOs zPg)b;W%9_Mawn~kKTpe}E|WvzCvN2pvC@VRmlT0rQS&*UK{ulqY1DTX!uzTC>n*LTd zv8+M89dk`AP@H_y$>~4V1W;pg>e0}qeqP8G5Lu|^>B9CS^l2Z|vIgS;%mY~nlXn=CGjxulK-SHXX5JT7`^&o#E9Zc65-}&`a|@C zXdl9d<5>82aZE^Vgpv>Ieep6Z4}Zk!R(9PFRnDytMXD$%`i& z@{$B#^oi<3F;`zPsV4qx+(FqMS?1|9%s{6j)aZkNVmpO;f@K=N>;gxceI~wq_|Crs z7s=s2K6p-KT`}jT{uM^R*dUoX1rMIGSqFN`gn2)G>7rD%^I7DQh7JN8;wqD>(gIF( z0A28X%{8k|^>BbRt{wfV`rif04WEN$4JOZ=?Ds@WHY{0hqi3F?JK;FYvofEfxmWK> zbaUdg6J{eNI_iYkXhc|2`*76J$8vh;>fy7W{X7%4YjJ1eJF{ut z1ysiiFL=QVvw3QSKPCSz_Z~J|{>m9KDn|*T@2gBA3-yRTlF}EC^3TGQ-)>q3P&R>t ziOxyG!sn#^;X~LuU{?RVyv8`jPq4qfOi2gAo{9Qj8XM=OQ&1$W&Ntn2_kHBW{lg8{ zFD8HQ=h~^eiOc=-wExNz@y&L#aw+|cjP}Otiyp^C$b4}mgn*--{RX4 zeGR9_+TLv=?VEWry4swYBeqTjZz=}sy@%0zOlR}D$tIfx|7~o}v3*)|P3D#haG--c z_zU-hwu~+EX|9c>EwDsm`&W4`IXzv)T(SNKRoEi`Y1gHBz4f>j4(Fy`3#AMEa%`Qh zv;CJ&4;`d`%XetRZ^W;Uf2pes?f7|yrg)h>!M_Gqk9dEqcc|{TK$N#b9Z(0&ZlK`aLMhCF5Z5chM zU(|_b7ykROxOnb4=d}~nn0&|Fyc-#2c36lEm*YQDoh6ZJ=JT%HXT`vy>z@%K+ZLhX zPNnFtc~<$D1?y?RPtl~lyAS=cPsOHvy7TL;yMD^K)^6R*_wkSa0}HQLvK{foc&i)>u~gjPbQAvX!y=O#SajX=xA#8R^#k$FkNMZf;z=H55KcjxjK4>Z)UmUbDA7}xC*?1Y zTR@psfAy~KFIpHQ{c;I9?L4$jQ{OpJ zO}}6M@8bG}z9yRd>0*V(m6d8Zaz$ z?wasKo_88~=fxMXLs z%+ZG#=t6a18fXmv3D2b6v}9jUb^*I+wMQUbHZHs+eoaJ3S2B;x(wvJ>0}U2x*P)Pc z!7pDE{GNdk~ z3qES08_;%oKsy>-dMaE$-zz+XhALJ0ow3?a!^^S8K*$e>p_mQEM{6`|x5c{s>Gh$ROS zH1VXeh5syU>)pgqgB4=?Ev{!2zcQ~~l%3v8Ajx$2ho*jFI@@boo?Et(|Aw2--8H7t zQJQbbIN%jZP@A`*afxE;TO3iRcE^pu{0X<(?pI|utlZ{rn= zQT~YxozFu24j^~hg%cFi5w~)8w`P!B2zG%Y3)OTkj{oe5)a{xDm-ohh-g+5U07#E| za)%k(gR@wu-ey~_8F061O*}c!IpWA8GPv=M(skEeclg-HK8A&jg>+13sA{mVaryVs zkxRJ{VDRy<(nPjdPzAsA;ZyZCZ>dxKUZy`G{Dsz5uUdVVPCnS`U%7yf#!pY5`b|XY zFwXo;w1z*PrliAXnM=EX&g5zbk~n7&SkeDUxwcI#nAQnWC_(iu%-;U-21(rA%SJ52 z`+$hz5?btJ6y2t3>5``6yK6c8L$8ZW%3fC|$Z1FDASWC@Ql-qLH*V$IBP?`R9N+|5`%XJzen!fWCT{*?S*F^b*8hnTORI?+2xXLd8$2P7U-d%W z&Q%tLKj_Bxukd>sB=VO$=?&B=IKZni23?*1hNB)X6s8a*Wzv(pxBsPS^3>mq)+7oq z>T&dogtPG*ujHTdDM>3hJ=Ht)uPC43$7l35o(T9$c_><*?d^|~Jnl|*l1kHfIY~#o zWjk;jSNC|Y&`BqKp25YPEcn>&D}tUA`D{XWl5ifTzgei(>?;Fk7pkq_Yl7$w?vXkQ zOG{VB9GR10haSpc4a*wt!1bidj?crgMh3b;5_OOMMeJSvJd;8Bsdwl#H>_^W|J3`9 zG#~WXQ{?IjAtwE3^Nbi?3D0S>mZ!#7WAf*WLQ~6>D9V#q>+}-ue#Aq6bg1dSFaluw zB`9TF-!8kx2ag7Xr+PRE@AXe`NKkXW6(tiG`GywxFE_p!q=vjqF<8 zb@`ieN-_kU>)+FwzG6Hb_yIN74REb44j$q6`bSjlz0qW7 zQB(3y-a)P>l69IPH9~D%3Ji!Ys^D_cmyC8CTlof1@tcUYWmHJtaXk;azACq|{UJ1C1fqI%0zsK` zFl9HZT9YKmp)G3E26%N;xi#$|;qv|e9ki!{Ti`24ygY*1xTzefAzq)g$T%P-=YUi#cPgux#_t^YyRS^rSNAPW41 zmTVHM;_{m^hu0(=7$Q=3d9iS)2bE58d;g~hDt{ux1xu@_1rch1mrZNL2w40bV@P|d za!`1}Nz?6@UUq3VLU;no@rKtRMgNje0Q{9&%2qrkoJmVOBiEmd`WJfmlYA+Y=X$o^ z%Eb70+U3faPha~(>EhZ!F`6}zTdQND6DY2mD#h;xzDSXbQ8z5}Cg|5_L|yq#IS&iQ zF23Y#)N{&>ZVe96ST4GCrPYC7^?ist+AZt%W3@s)-3X~b!jA;PhIypb9{HV5xIEUJ zrMy(WC7v=#*_Ol3zw-0F;x@p1@lE`UZ3%Ugjq$p5%xZIxJIMX-{jSE{bkj|P|F+w> z?f_i&Ka&@rSib%bPW;pVFLD|gtz<}V{u*sipvS0-Jx%=kkDgV~gkm36y1e()`p;9# z3apMc++i+@TX){>>9?9c_axlW zM;*n&@-}ImYm=)ht+^Rd-Zh zbm2wAJy?BsJmW7-l)s3Rgwhbx-|fngqUW*szwyS!!>+r&A^E@WzWe5m?Df}Y(a(0a zifd$`erW2~_RP(<;oIDWedp1fKliS6`%Asgru;3FwyCz?u_6YY*@OmxrEk^$H2)vs zw5;`M4vSHD%!fDYX75z5`q_4##ZBNDM@xk13)&|Hp7Iv=x@>e%=lg~%1I4f2+eYLt z8&CB}xVC@B^}buvt5@ou{F}~A%<{j0)3df=js-0z&%u1PW$!^YN!tIoCkvxe!v7*j z5yafFmSUvWJCnb8&N-N_W}%Jz-+1FqF!{b{n3>t3vdrJ4oqCQQ2DS3mW19icvMRSi z{8e`h!=SS?%c_;X;yY8AzhgwQoe}nah*S+p_ zY$#kf{Kxh!7$x_>>@rB#jpK!pDH`Lv!+dD^~R%|iWu`LD0!ilYZIm$3zN z8BxVV>=ex51p7V1dEDuJqbH!*kmKCP#PqlET1U%*g3B-7t7?DlaihmK&*MZjrt?{- zUWfHN=Tema&O5PC4U7v}(61|c9=rZ~y761bRXtxDk*()XfX-{I=ixt_pA=M_Pbu!t z@*O|%ZVT0`iZeT5zM7ZHxIJbGPCf0^G(JnYtD+_g=W>FMU00X~iRteXHRrK$?y}x; z%gu-L&O1NC(*##4a%n=T`-H#XCD4jk(o-?($5)h1Un|go`%KYR&F09jm8@mM9qCa> z^F6?rpyKJ^tk+{IT{?q-%8ZMMR7TPWQ?>2N)=vUB5Vvp`uK=3?#H1pxDib8)=OOBD znoXEa7H4o`dfp3+sdW58PfafPY3fAeR|fpH^Xofb0f-L;Q)h)Bq*{pR3pq3zG>oHM z!0ER;YtB3GTb!u&LU(s{tlK6Ex8R-|8ePy97M>JDsp#@AJa`zP1e*8iu*pOINY|uc z;ubfP<%aX$1~^Z_7$tFdZ%-d_1{k4YwI>g~<6rNq1AozlK7>T_PQ@^rBo6)@Fj~PF zuBImc`3~LA%Mji9mLxG7Tik>&&UgR{3y^ zo<=S(>pw(68lKVr(%Ep909gcPPWADg_%*Q{VI_5>5Lv1$mZ%7r_rMew|1C$#U$I3# zLBcyvifZ&P@hUnVyqFQ{B~OyK5OH+k^sA^{Pp3Vet@!P5?nI;J0O(fllW@`yA-HSS zJF30EsW;{{N#-)Xr5WJloQ`xbKz?_`=%;BFIu45P97r%&w z4a_@z?xd53t+B9i{q;A*bkx#2F)wAEVKt zGaGQBkY7K1FPE=rujVn9Kcbl*lkzXmMDhJ(!3@ zjvF3clmGCkHHUerTMYvzj*k+vhvrn;K!NEE-br|v+5DGGkt!)wXD(f!L(VRCi7ibRTq|JTtPtZ_6MFiL#d%0$c=w#ivkxs zq%&Xf9_!x$%Nl-HE#~;eg(H(%KRelM{SUpgsnQb@?)ob~VtEQG{0X6mU8_yaTzj82wujfA#I8y`-TmLoz?UHmdR#{*iC=3gBJ0lD8li zU+@1(jQ@HZ`Jc~3_)anXz1DE+ZQd{U5b0mRKuN3qaxHEn>KR@cE2z=uBkA;t^~hv)t5j^XJ?KfEGig2*Q{ zj!cK$+O+DNk8OZ?u1K1UjLN1}dVM@=>TY56Au;$%~RU|X-S&E;0HX;t%%>damAOuJm0Z8BuFzASeDIR{)MZ)ME_f+ zD_iqyu5(=gG%nl=Ao`)d<;w|a@nx*Rv+IK}4eETAaf3d;@x%wedJT_KC(NRXR{~dW{reMu9|6vt!-ToQvl2umzWSYfi2Rh9L8V(m ztE2n)$WZ?opID?-(Re3*eO&Nje*1gU@O#-x5F#_GVYj&coB=D*x@4P7;cEgj89 zZ|O9E;MAQgUUj{S{>f0q;OTquFR!!sFChX$oJ1p@>4Q)3NoE>ls6S8RHi(IAd>12m z+E)tx0v0L@zpz8@NawW23iZEu#LrLTR8~V{(bQmdpf+*Pn*Ny){m)Mppn;Hi83ERx zfxH$k64W&%@09;u-sL5%@GSm$c2x=te#A9}U+K8H%dW}PDfjJXW>~1^j_Pf;!z8R@jGC8m;rsX#jvKDM zy6!IBh`FJ&&pJEiw=d2@OKpq|Y~gjFQy$9MMO>{yssEQ;bn$SnmP3g9c=^Ba`WuJc zcHcE)pZ)gTFZefP5wCA@kS`C|-NiiBSHAM)EV5m710C{Ys8?zJ=imCR zoW6d}b2gzZw2>KxCGdRkK?h|a^7+sIxrqG--~YZ`3@>=$3t5a_JIuNGb;T7|=Fo=b zg59|Fl9#+Bn<;+%H-2MSm-bSjx(IX-@LYF!{?ETKa{k`;E@SNUU^X~x$equxde!gc z&hJe(W+Mi4coNprWw)-xOr`;ZbX^X@t5+hK)AZXgKt+ z4|2zKyE8eEdMcrdUpzx1UqOX!!;D-R#J$;E;fdKn*Hcg=Oftyt{Ty0Z0;C%@On zpT+%)F1{%Ac%s@qrTPB= z8y_ye{PL_VPS<}bhIPi{ssF48Q~yVsYM!)|qU4a@dd-HX{SRkTak1kUOoF_f-Ac`;T&45}eI{um9X^crGWZZ(yO?IU4g` z{L0@AJMw$s1>8|hon=Nm9{$JnC;UG({LXhQxuwPs;`fef7ph$omVf7xtW!tViMzUKfsQg zv)CoIIhlCgdEbmOxf7x~6bhtv?>Nw^MxO~0Cy;RSn!=athzV^jf-RflLN(oVc9%$S zOljv09>RifWkjB=7J+AwO2JDlgj=XlD{&B3as9U6U|Rm;uku(S2+@(IQRg@@4cuBV zP=4iK$l;^WKbb%v6@TIiSb&B;HBbB^;az&dBcakHWS@3Nbm?q`-r}e5Gx0=YBi!s@ zC!QwZ^vFaM0Pd%eQn@d<;9rKD7T+`+d-QQxsQ%F3c~|UK;|ceoQJ%$D^5zA8BRB{t zN=nHZ59mw=TcHsm;wpX5gHT^AgwEgzckrQ1dK$Hn&x&el`ByH!^`yr4YxUu$`7QjG z7pY7Q0!_XAC_iY9DOGt0y(JA2sEwpDt(rz>)Nf%hxKKwscbd44tgF@@D_x@F;D0sX z7w_C|`aAe78}dsCC#dDBYF~I^f~$CuT)taA=AD>bF12mZn8p!~}(j>S*#3vyp37AS~%t9~nfgQ&84*&G^uf+_FrXk$`b|m6*a)bxJVbYp7p?nsvMh|7YST6h$$RtJiO#DsJ^S@Ge z*aWNszj|Nwcc2GXVo&glevgK~%2k^tDFFOV@K=kMfC4jeqfXSMPRXVBe~c^tmc8^9 zr6c^qqk4o8g|Dm0ye^yg@MCDD2=hO!{}qg4iJtZLZvne;V@8V!>|5Bdl+$m>S#wP% zGN`zk-Owknu!FDwLj*QDa-T^@cTAtTXi>%mTGsG%r3=-jKk}#}v%A_w3QZe+ z?dZ{PN&94CpcooT5~?`Zd5IKEdS=QAJP1kw$R?4f$987aV@+ zuj-%F5vX64K12t_1Xo}QUED#!kFSg~s{Fell={EC-g=b7e;{ya5ny` z|E0vRO66M=v0j4T@1h&e@Gl%v(VwdNe*!tQ8E6WkCuSo1W`8Rm_zTN;BJ#f&Dv$F$ zC4XV|`mf>`8wkW%5kGhoWOISs@Gp-;iYn%_5B~xt{oJ_f>1*$(b}_;F$4SkcsJ`~P zSi-my)8F@xC)Or%=`wdy%nW0JGuxe{PK?^7tj%P+*N+`}DU?HFEp&(rtR<>I$x5Lvn2HdWh0`J!C+@sw$+AlDte*4b};%UiS2 zXm?D3ZbqHGDU;*2-_PFqS0<4MLRaqfRpmdQ{3u(U-_af3CeP;I<4_m$+9T;we~=&M zi!jKWikh#$6!x6Cj0Mu3SKq+8uJ9Ajs8JqYTmC0`qeB`QOICbqDBtxIVf*%7ztHEq zU#19f9_qC4RtJ7i!~djbQ#6G>=r0<1h9&vewF2j>{tBDtm^1Pcp8Wxm`I}c$_dN1_ zs%;WL!g>x0FhD{AAb(o_n@i|QNl>wr%(OPNHf_Q4pU*WsEWld-tLr+g>m79r3)R=M zP>n?luYu?%gOh1MDOa$3w_f!`^;u`09Sa*-sAe;b+I;(+w`ZZH?k;7mfCbC1v0%9c zb3+$ii0N8RjHaBG0t9p*&&q#J?L+U*%w?IYo+LEg6UqM@IO(_>*5I^g_wIM^8~p39 zuc>dO0`HD{ZeiiY&AVr?30FC|NaVty|LuQoh-vT*Nb|CnzYIP$9Cp}Y2R0|UkVYSw z!(ndXR9?T#Lap;aKm1=mWIXUN_X2O5Q`PIOw+{36%Q*FVUE069?pm5nMbCf!^RZI5 z>F~-|{ufL&ub*7HnfiOrJ>Q;%b5EeU$>@qJuAm>!^?hs19X4R$_`m+n@37ds$uKiB zlm5H(yEbzs^xw{g1MjzefD^B7p0(}R2%6VlZ-e3G|KVkW8wO@(p4&E8JrWCvd+xax z3yXIR|L6bp($N2%@BDKX#ozkYx3f?-fA|^;)Gkzi>)YRAA@AO-MYNhSF??H4v1$5(}K;L zS^94s(c|=FPYZq!0^5F&oAuO#^E?sDTFmLEe>v^2`s+gHAN;`|ME+VjNndmdzgI0? zdf8<;nfuX?d?cr@4?FBb%%yID>dQ$dUIwWV(PyvR@@qrxfL2c&i!DXBzKT`dYgzO@ zmNh!>VfQf6Hd}4;g!sRb%^ELz*~`hJWjU-eGlR~v$)%`(Uv$fIqTb1`ZkHwUgc(0_!lC7O@9N3jU(2dSlCL6XNLcdU+WUqHy$hy zzd9ew8P{GD{+$c5T>EdD|Kw3uVVT9H{PQE*lRNEB8Loz?BMv`;h3XB{NO>&&;tMXoTmj0Y5<2K@eQhV`%^(NG z3fT!MU;B=pLhPU&)(F553jZ}%Vdsa1Z5L+AWOr$JdMCR|6N8j|*FY1vENlx`KI|rW zw^ljDRSIJS2Lp<*@H)XH-Xd1vt~t-aj=_P34^KuY(5tc%|qhtNGm4+C2@PYh~qb| zc&N96kc7Ze`b0B`pB}IBt@|gS!dD}HE0Z~MO8**V63i<>O*I3?cRF2_9wf6?OK;fcupIj;a&4(@$ERnVPpGk(}A`V?qt#(E_@&5#-(er@a=JFL2{|H2c0-!a@5pb|^?g!x|h z0WGQ^_F4W#hr2`Rgt5C;^I4x~@^Qhs3x@sQci^x&7E~ONDF1n!ItfoDkb=#x{Q&)^ zKo@+%9xs05m7@mbqw*aNx*U84xxW=#?(02_NeTag`pMx>V(}N={;bS-;`kf$VXNrk zw+YEd>Cs4WlkJ565w98dxY}PqH0g*yC;0ewx!~W(SRVhJcCxS2DE^W^NyuXP5o*^z zA(u~(#%Cpk{Dj1zOF#WXtj|wQ*$7=uFH0naNeR_An*1gRP zE*Mk5e3re%e0uIefu`=r#OGdNAhh9xI->dr(arP#1^#Ap67?aG(FbQ&9$ zHe})BWX!&9$#pb04iB=s-$fAn(5e3e);w)kQrF|jx7d>Zl z3vtFU5h+st2-vo+_c8oVaP_SN+4!w~H#tgd{i}=qfkADo{=O)|2Y$6O);gy2zleom z{#sGU;)OKXK8i<}mZ=mLKFS0$ezZ5`8plMEh2Y`W_CUCy4V-?;r`Aj?`Z;;79IXH4 zKfwGoZY@GeM|~GmKQpdKTs{DlD}kU(Q+3j+NoD<G$?E4JSL1aA@DXop`BG@2U0p)dZ#mDgGQFX>beGHhD-^xaRv zJpTH}=nck`!Y@Ah7o3orUH=pva`o8tU&l{m=?`B#b>XcZv-mfj&h|eHH~vQ+)ccZ$ zIUF|%$HW!iH>%AbP=qVPKceUvL&P3+MfnT2%fEDM(r;J)OqnQo#zzFnf4n+hEwuQ@ zQ~kHh5FzC9lV^A$@TdL%<@C>dC}}^M{?*1+#sisT!aQr{U>=F-S1qu`!V=>FPr>#6 z;&kpMo6K)EzszjU+z=;aH2r-illwJc#mNdz)_mqOho=oV?bI)3VdC>#E8)GUH_`^& zkNHq7Z& zF9!23s+Tqb=mN!w*D;1;4iUSUQQF(eTWWRVIaVNSO+t~kqZR4NCL-ywU6X3t65xdv zb++M2wH1uP8vez%jJn)s@Kcv6%as4{)OjJExcu+tBa&z}(0unw51&p@Lu3{vJjwLU zZ=MqiDqsJ`H>k(g9p3qlcjQD@Ep!KX@D@qHY=ZyEt$#a>&Dmx*dTdGkTgZ2ZPBpa&A+**yM0E{+Mxy2hHAC3f?w{pGq- z`Y7g(uglz!*7nMrbx98~M5Ou2tCF!Eb^-FNv(Fl~X8|f>3^zd$LsQ4zUFxBT6EFeo z+|XGpq;AQ=+eH^&oCPRhlzdk$|BPXFdQs}%3opjx?Y%6}kR3^xiuKXkKTY!PhDl`k z)b#h3ER<^*F8yABxUhKA=Rco0^vyQi40FZn4nO~b7cy_PX8N)&Ab$6fOEcd2?xmM7 zx4!Q1mw)}2!*j4EtNz`1!(vWs@5af``-VUN^FL?ovni)X*JVs}=kVbV|6LZCfA@EO zH}&t&voP(|9&Yfu_10UmhT=xwefHTWn?Th+t)lL>`|d0pFCBjSm9LByqg{4+F)F%j z_~!ZNGXHirRx@tOoyC9jM}J5j%;Wl|lUN71n@vfZQ{S&Qyzqt3XY&|lyaAZ2AijHP zHYHs8-R}~Ng4b8F93*0{f)#E9cwE z&yW56$FuOS+2#ebyRUlHtFS)EhJu9)S>&CM-mOP|Q9q7jzX|?ZF~9!Nk9;)p-eALx z$e)dd*Sz+%$a_N~!B=SH2jzF%?S{jTfBf&`|Nn7E^d_9NcP!>6#G7uso;#+m8PpFq z(RsppduS+;0^@P;f8~`|uu%Onk~}he`Sh<2JCJ_O`CcDVq=RN zB%X=>zj)4Z;h8(9V|rUt-rhM)Sy&nVd+xpuQ{CsrRJRMZS{QI)+kS6%YUSf?e^!NG z9oqRtE>zE9;r;^3wQH@V5Bxr{{?DxZSGOkh?_=TjDmSf2xJgs|{f_EunM;!YI{XH_ zv2=DRL3UJE2g9>x0_4~zVg{zCAHiC_kgI}<;`9L9cTw|x{6nEEL8gR{BOc3KO^gcQ;GEV)rlWE zTzG-*3^*JAVR_`N^VYM&xK)M>Dg7_q5Kbh*gD47@A6=JbUL*hJT@i`9dhj#B${p2V zTc(pK5-;7AM>bSNYv;wmdF8)8trR9UB@`bg_;`f>_AJ1Bl#5OU7e84TndYB34OM~g zBasUSbxfZ?F8n>rXcf1I2Tlb~QBZjoBrBt?`E>JK*oECx zOx;7|UDlqsjfD;BCKt^$PXwaqc_yjG97NQ}Jo#otin9;rfHx&1`B3*@)n+0!irDH~ z)3oSnCNL{~>QCTUk5&FR{p}UXI{*Mc07*naRCBTmJsx=tR-(j53fO>=f3{mpUbXgT z*(00?4?fE|(LyKfL8Cj$ZT;8&WzvXfLbm-&(NX_NSCd!?Y-J3;1}9SRJ^UL7WPUGK zXLS0l{|zE5fLr)Yl}R+xrrm|$v|HjY@fc;cYdA*yz>53k;M!X)=kMaqj zQ{KWH-J|ed_<2D)@wX(6{~jJV0>QOM-b$t&A0hHYUUmI@w&M2=!Cly$yvEvf1;luN z90N%26LQ1SiL?Vw)+8(f&QHm@3klI!-W@D0I>SYZZPS)$UC8S2_B(DH4*$#%ndJJS zixf;wocg6NQcr9>{NVflI^6f*{aLIQTsF8UYBK@X>%Zg}`AyA=ZxBZQsXxezhaX|! z%F_+APZ7h$gZ3)EQ2EEBYcQVVS&ufLa700C}r_;a`9) zZdr7qpT>AdFBezbuo^mrjAvx)V$^c&kNn!6n64J2T(FliPF`!l3VdsDU5JbG4!G}L zx^y`Cro!hHY7>zKik0!}e>*b*}+BoH-#6F`RnpsksK|OJ6*dlPH@H zKlooi$O#Znc_oWg6oL9^c^p&*g4BmOug2)a;5Qdd#JBsqc|`vq3y6X%TGYbmA9zfq zIu$Pg-0-S%rLARZ+`e+h?_{j?Z^It|pve>r>1a#DREt_QactbWMvf4{5ROl%_Yqj( z+j!!p?zZ!e%cdh!*haO!tf>>pXRr}ur`mL_jmhB!IaCfL^=?uREnLi@1?Pf}#=71D z4lNw=LFa__rDx&_j^8Np$iJ^uKI2DdbaEE|%J`@C|BCu&PAITw$f%!sdT?Op zTmwN{z(Te2={a;jU0!!o_iN#5W2s;YSl(v+SdT4SxWjPP*UlWa+jcwdsl7Gkrj6v> z&~e9|z##_ahB#^HHK8tOTMu2t$;o?Txx<*1t3eW_LNnCqrvF)}_9P+hLehDX&@{R# zV~?KyH?nB>#@*kT0|xuYN4x^uWo*L$kp3jN;SZimf<{5_z1DRVuq{O#XPd;J@~@qb_uWxX5@bQAJNKlafq zc)#RVf0Yer8x1df!3#3}xE+}+=K7C=4?UOzers~K@&VvqZ*szv{CAD$tgoG&4Gqb( zsh`Tlp8o{sQ4Qtf)%a0nUzT@CFw3)Gwj}LidVXv=as@v%{8mx-u>P{-=37{EIfTs` zOURRXoSfcp_{0DAk6HNNc-V5AtsYTv*EX1 z@rqa{Tb_T%Za3e&nE3C>u=Y)F-UB?F<+_!J=u?=dS6_YA@JHa+bp7dHIX#Dsf)k`3 z{!};IG@)q6P16$8SvPwj^8zfThZ~l;-MC*k2|4V@xTdm@2no@ z#w(i;!&DjTY&RLupHLOcm4GW`cA_3)$Dzcf(k^5|s&+|jmt7GLF^S<3cNaEJIr)^B z6*%VDW4V7|qv4E2i^!C%Fk5hG?55|gHo#g4bSiX*u8KcG?XCi5VvLuVv}S3WJ z+f2%>#f~N^>UY0A;tD?hoXJlHkyi7`R<`+Pknn>P_-(*tLAAYhg2(7J3=@J0q>a=B zETh9S7nt)nQEdllE@n1Viawa=6EVRrJpMbTFjGXDL63e^Qu5aq4DhPBp$>lng=+^v zxkx|#Sin}Lk**mq@ebT%x^UwmJ=J;3L>2KY;P=uPUC2fBi!nEG#F57inqK(8K?h_( zAtw|`pS!}L!8=~FD>(}tEoZ{NQsi4a@+57c*=KWkCEO@@Nq3?qNu#+3DukprZt*OX zQU4Om5BN&{Jb{y+)rCLwF(E2#`H`S}=z(jD`+(S(@2-HzA&X;Eaazy_$(ND;1U^Cj zr(pkh@SBH}kjP&G<-fZyUA#mLmP4H4@w-^z*#`KDV|JSRz-@6y{*!LPe+}w@(=7PepBAAv{e|%|%D*Q@r>h?;H&CJ%d_(2_wJn=gv^mtqm{MP+skzv!mm5k}-AG zY^KS=JD!?J($|_e+*x7ctaUvdos(ebCd~rP02_yV8l?@Yg{AY(_E12e|H^klw^#$& za9+CVIC*De+fz|n9h%;D!DlvR;VHlJAN@C8>59^WOK-u52DT zDPiH8B<3VZQ)UwJ2n2Z!8R4JTCxm~J+LV03Pihi@`py61qrJpme(?8)7*8F4(^a97 zk>-;?XV*V^fKOz)p5Y^YX{q$?m#{1r-KHt|SN&7p6__Nme+tY~z_0wpzheHc3O`F& zjRug*zkJ9pKaa2dGfl7mN$8*Qi6f-(Z;bc`xLAUTaG%XRDf}H0FaWix_UGSH{oh2F z#Y8tO&9fcQGLoAkXe!ccuCZ$e1k?%XG|5_e(S$80LvQZQm4l>6LODtkK zv2Ok5xZtRxj!HYA>2D{c&OB>Tt^_*&{PSa3V?I0lGdLwb&FRz==55RW)c@v>`1DS( zqrOak7ahW~hBdzRoDotlQixLTqd3-&waCUZWf35_Xdif-R1$90*HijuX$VT5(n3F6 zSgCJ~AGp?YrW8*e=#k|}^1*~u!WM(1a*9!U*VJ!pl`*Wh>fe4Q9A#<{6BI09TpISryi@qUv%~~MP%|FLRMD) zR=YwfR=# zO4!ny)^S0TC3qfx{om4nzr&SsX{@n9;V()gQs7cs6#JWZMIm225=H)rSK*aJcv9Mu z@?Ng_#=qx(#UTVZ^8atK{_p%d=~o+9ISp~!lG-#6>t5@2EbYK`SxoqB78m;b!bFHl zuiRS9&1|Q2rPHvk#6tDbY+9uapw7??rPi7}L3bjH-WzZ7oMv5V^Wi+|5bq##Tw>NE z@qo|u1XJ?wIJ01@Zd!Nx&$`kybJyVu9iRw%6VXN9#&y7Xp)?%;AW?=xo~A;6S%X{AxU>Ey$#i0Qk>) z^d9~!kK#}tYp%z`4Ej=EWHS-?i6_jEXuO2hkM*zDJa}i~zx?xeSn#-!6D}tXo~A$G z{rhK3X8v{g7aZULNB#fFuYXHEm7~h3eMiQ8E6@^PWj*;H*;YvT`L15^@5%9R+bH6a z+ob-%F94;(VBkmpqEXOML_V?le`KtH2CiJLF8pBT5JTjw{M0{4EGp4|__ys!CS+5% zWUHZ;ijsqoyZn<-88!V|dHpN&!XPvfS2D#N{9Uqq2b6IQtcOW-<0mgq48Q!Cy19P? z_}6CRikp_!;K~|L^}5kWLk+iKP2*Thf5+M$3l7tBL!JF;*(wz+NOC&=G4p>;4m!ASB~VXRy1=cPJ>L9x z(e91A?K(U{UAo_X`(l!Ji(x~|c=z$gVit|xvDe-#+TRunP#(fhe} zc?wl4BY*qmH-Tc#aL7Riv-xw&@D+G(d}GEr`|Q(BfU~eJ|F^RlOt|~+e?abEKj6LZ zP5O6WG2>P?9caPI>;A+e{i!R+-}^@Te>iN2Dem`6KZi+N8xh}bZ>&4K_u1!Nxh{0W z^*5l+q09orbs87*H3PqddynsDLEZz4T1dI^`s=Zza!1yRyzc1(2YrB3!yCl(_l=%N zb)nkpVb4CR7OJPqpW;SSlEiYtY7@%7cmdFEOWKj6MhWkSqlOG@X1eNhJNed zf8e19hO4i<8hu@s`=ZsC1uPtU?XEe|-IZ5yqWYyTM}IZ_{gq*cIbcnehjt>mvEj@! z&fs+a&BHga+~UTGx4rFcxoTu>%;MjJHO4b3?>Ag`{cyxlM`VM?r#|_qVJjBxQ}%+W z=VGn@UCc%l3xOMHJm4h1E>OEs#3w{5!jzN8TmD7UvG_8|Kc4)6Z@T|qrnk>!v7bAl z=^K~n?^>u{8UDMOBmE{Pur=`UR3UOo{zbL2m-N|gOrUoU z9RXITosDkJW4rCQ4`K__QYI}NjGS`vNlb8EMfup%Oad=Wt=e?-z zERCtX_?T%fK-AFN9UeM`mnDnFw-2j~2qF)D_?ySXtdm-qupu-PKfp7tzlK>@@k;zG zQ1cpxUzuEW;LAsgLz3_${z?d3cnE$5QOc%vwFtM;;g#gVHN6WM338z(@ry5Q`zt%` z*1JpVs3VWbt~nQ~HCGV00C2~P{YMxQWXTISeTY;XnqPqT|8n?8{zKJ-f2kB~{gTdi z3C#;XK5@bv`>*Z0^WP%t3mkl@kX9Rh@5BxME|EqZe8`qVQhD;d(=Ce=DYQI{CqF(D zTD(txX?Uca?g9j&*?$8`79g%V+tmXN42dM3V=KjjU#?67J{(BPdlrNmZ zMAx;$;YS?7T{tdO*RI)%FDdg*sS6ZeWGnP?UDiG0dptu8^G_TPSZSbZwg+a;Bg<;x z%sRq2iKNc7_wYl!aiMzTFUb>K9B$k(H|uUu7r>i#04Vs4WQ;j=$7kwazEl2*A#MCY zPfgI*0&@}(rZ!cCzF^?AlDZu}395}s*85x!z#`=Z=4fzRHv{|y@1_?2fXjS8RP^v zacn1r7x{ruJ(J9aV2Z>ij=$hkZlt=w11JUEhltyweDyMK5-}u%cOwDdiSn<0z+pt> z20KxA*@&VDs92L<@f*ZX*U>R%PXm<(=QELc%U6D@{Zk`~L4O4$+(@^*n_QRhdgXmK z{|!X>HylX=tiTULEpdMkRyrx{T7c7|#M(HOToI41s8}U_7|14x-ad@@tN)WcYp{eN zbwywIEWY@Kl%i!sjbA4wDf?%Cw$T4w>i^QeArlsT!;&ZI9^@pJ@^LV6{IQtjqaT0b zi8Z*W1z@F%B&X!YXPj3+c;D#hr+tZbK(nu9Cf4$=nLzKu@(PHI3pT3B3Gd~KWexhM zxpT_8uH{wL6MQ%Qv%WLGQ=fvd>RWXlUv+1mS3nS-yQfD7Gi9h-ZPD=?=FMr}fg^n5 z@xS`Ni5MPj|Kn0gNE`UAe=TgJ6I9pBxoZGZS~@1eOy0*c{X}y5+bvAk>S~;@1ZyIk zd`e~2{|QJ~7RG}&qlKh5g_v~=0}@ZVL=*WKARhhlpLotbg0ScpU_NU+zeAX6Phi4XZVM)NJ~$iML#3QGT7T8~sprVQiNuw}J{4Y5m{wf0X+~QW1OqY|n0CDI1p9xSB%(gn6R+xZ{q^y`)|RWSyQ3EIs`Q zzg}zuW|$MoW~FVm&0>c0BU)w9)a$VvUT|T;r*~7jX*JfBILYOP`n4C76^1|qhjo0_ z|1JOVOMO*}W&|_?KPDyA?`3n`tQ3#vOR4;%PC&!eC}7m4o2Ib(6iVk>lHOl^)xQvu zaFCQAr9xMmlr#;_Tnk8;DOEsZHcuE z#{#Ctfi5(sur-egNtm*gB59IFXH3pbL#Id%j?@-S{*{B%_#58-_&0*z zjVn1(&D_uu7H5|+pKPD6u7x{>1+$tPa$dgbr7nOj&WTX1OJ-(jq1vk;yvI268bqmu zYB$4P%Ysi?+jHT{lZl?FcH`3Hk$-Qy)PE0Sc}MjVY5zSL=|Zvx)%IbbI;Ou__;vnA z{EOMp^Om>1Ww?#g!8`7_V;19bsH@ben1>(7PFG)j4GZoY4tue%y%{H79s5|%3SW2d z!3VQgyj67FjY7Ncx?5CGf9qcdAsy^ZEL88h`|hNA1dA8kfy-RIp}A9=g=6(`|NYru z1ibm4jwYsyXp7-T{K~+S*g8*m-^$779e4bhVZMurgay%5|5Ixl=B;ydd+)vXusJ7i z=Q3BMwYW)c zTIiNcUD02^H(=%Jum1Y4uzGd(@VmeJJ2Csd^G-V_zrJ?%*)h-j&)@pzVS^1f$jN>6 z%aodSKA--9eTf&m@E7PG%+LMkHBUK_|5aCAIlS~`FAF`I4qv##4w*|VwU`sUXDm7+ z`hOZ0bTnbF9%(w>exhqqU;n4Cr%w15o7Feq9_{_p55a`CPGWRT{yF*28kXL>z{h<0 zin^S%cA=VuS^FPSsD8WY-pv{5%O+I;ikwSCU0{KuzxBUsg;_JCPq(uA$HO@;Jl94G z7oOKGQ{I%rY5cwYPkc;&YwF&)4>xlk(if^b9pLTwi%Px;dm{K}kpE7|#ly50T{vx# zLiQ$z9*h5{ihnIEZY%dXK+G6|y5R&Ds;TGYUn@)FVJbgj;-9SK(l zxgswAs}ju2%wW>{EOyVbYnBG)E05niPrZITO-g^z3awnQv zmO%^=Z)O+AyZ3uHZ;xabhv93^Wr2}&`~*=JjCplJNIK%(Dh>znb=P&7U9y3&VE_Sd zOy-epSx)kqt_J8i1x1`x;PT>(kuDQ#j$`P;iZ2=rPCsx?*!WhHY%Yi}!GlLkq4Dem zzj-FI_+#D4@HVsH-F$W&`iYWxnA!kpHV0@f;F62JJKS{h;=z;d3n=7=99)f`9TEAr z(#(XP6MZ0^tBGqu`ofMeK!*>4hJca&bWHI=XyHw^6;8hwZBdxDW=MD(;K<5#UqaI(zBAU zc~OunxN~nZNr>2-U5eWFhqWB?2nw&BS|M=+fhh>6Fuj3Q`ic7x@D`?68 z_8trgHmq<>@Q0L!pD>9U@f&7BhmOdfS3yoFE?9-JAgAMCc}4$?KRVx&Rvh)-pFMrl z{#kzJH6`q*J3+5=6)Zpp6I%PzY-7B<8!4*#3~sXu|MnwbgKo4Q^W zDv!+${E26Il%!06n|FQ)E4oQ4;HZn)T}J%mtIxm`Pw8_l08<;8fI#8tte3)a>T@TJ z2!`i1(w+eS;d_!sxZ#7u!j6d>Qa;2jY?P)aS{xO z4hU53n!JOi5G9=f60Fw$kxvV&AmT!t_{}c|it^~7M!4&+)3GMf3O`&_{cB`7&ofcO zSIM6+g6u$_f4;i~J)Oa%7qAXHjQdw;?_HP<{^TDpGnpvHa^{a@79%Btm6iWT!!Kz? zrFx=FfGE2`Qp2jEyn{v@l$q{1bpZ`{z5JMB*tUa_@$~6`#b%$eErwM6J452**yD`J=FwD zr!*N@<)-6^|13Oy5U&&18Nqv`rsZLW(Sst9;D?eCguaD!cK!>kLPFnE{0`U9N8>+u z{b>`7PcSLPy;Io@jUcNODMMvm zlC9d*EHD!!uZ0__{-Di?BFiDB3q2Kv6Sw(a^*A90CO$9dU-gq~U|Qd{B!$yFv>Avq zovyV9(KPD+@+LlcuHMZVyn={!6n;h4>%Vz1eT@&Ybt6VgIM%t=#}Z~9Smtv_wREO@ zRJk%-wbG4)JP9x!kH|*Q(m^|=Umt(;b|iAB$OIP6g6QpBHtvEmZ2|G>Dk3-jR{Im! z_&aH7I@^zXnM}O&yO(e}4>Phy9-Uq8haP$;lWJQweUYffa;yKPIEyJ``zkd5`)CBF zF!`=uJv#r>Wqg`{^KSVt6UQGAy~+tZKTI6g5cvM2@eAJ#V8CeQKL`VVijR&mM98Eb zg}*4`TOcF<71rxYwQe?!NqRv|>VM+#ZKyBli%&h1|Be5^G#+mG_D{WvsEk{{id@Tw zgzz-Io^xINOWz6N2^;YzM!|_+{RE#W1>3l6_*?(GjsJo+vFoSwu(0aW(?{%$CIJ?H zA^)`h-}A9#(j``M_se!bbD(Qswr|NTH*-LMdJNIU^f!}Bv9QEKbxe8NMl=uw&s->% zO{+6(TE)83HeL${tX#RqrkJI7E*(xf<>bIR{D{wBBD6LuIYI9NgD2stuMd3c*JNPR z47IFq+W&6alB`V#vG{SPInfGq)5@^3P2U-rM}Q%CId zqFrbUIKuW61Z9ZIh@x@uF9w9eEqdD!p@_&d$2-_~hE^wim1uGeQy!n3<^`HxA z_J8-=_uaw2zK7ph|I~%%H^2EU)Qt}fZ+g=nG3o6*hw~R*dXA0kXKU)(#odK$*6IfU zZoCoG-@CpsG##ReVA?yAx=_0tCbbPXn7MeZ5KWK2H5I(u?ksS_%ORMIcJWe-H@JY! z32@sYO@nX6T$=YA8+I?JRByUz@vtWgq0;9GW?{bNEpLYYhlf4>78B5$Y{nv=i`A4l z69HfPork-Fd$aBTYavk+zJ_=C5HqH$?c3XKb@{tUeZ-MR#CnRSMb}0)Kl9w@=6X@r zf4qzPgNGgxeR}^v2jxVyrjYB7YE8boVXf|{mK*^;+WM39cDgH%P1M|S`WJXTY$eYQ z%AoQ6X~uusZMP2}|A&urO8Kgk8%?l#zqD3ZbS(=)fqAvhxfkkJu%t;v(Nk4ItUaT{6O@TS6-QgYH@y8o{LP&5uiTY*9f^|L z{PLP6x%t@sY_{np!`|n-neKZFzRTT?!#@%Q@YUQB^wK9KbFO z?ZJCTf=XHngi2VTaN>*elT5Y|QQ_PnrPK6*E)!2YYsa7-`dZ1?%N!PVP3urX9NePK zhZ9y#n1RoQf}&iqGNw0uuWV}K-kl(2KB^CngsICyE+2DPm^N1)fq$LfV$I1eLbCA8 z=NfaR8}qCzQo9=^3)M_09dq0 zVwO;c>LpJ+Woi&qJ) z2PXI{s1d6C&4)4m)XTFFzo!3p;%-tG7u@}nMNo>{9h`dTcT~GT;etgL1|Eff>n-ml zJ?reVIZ=m&4LYu#9XkmlN_rwNu;jtc8TU&X? zAGC4$5kPeXM)3JzTVTgex8VkB*NFz%NU(`rz_!8r@C~}}BaGI5KPrA9wzR$_ZO5WNZkqoRQ2G129R5jwyi`A_^uvf%e#O@@ z)|+4ovERPUqNCw&=qhdegvp;gH;B{t8%Uw`ztKzlJ^y=}74Rm&wEz3m|6T66-;GHg z`{eewJ)vdJxY_7-2}M6S@$mpZFWF2L0=q9k>F*g=!WlZsty|Wz;pw zf9YLIhcA5L3pr7pD|+&C>^1 zs5WseRJ#$@$$R5Yv`?~2^QwLoMosqHj;P1>(}^KWlBP~l@p#WNwy@-|4Y3C=AAxk14jnSJk4NNY#q`>m&cV9;0Fl zRag0vH{r#n{QZ6E_}PHnFv&^i;djDSy^E@tDXMzBN5fy>di)9O@T6czki~0!5STKo zd^3jW)xUbvr(A;@*%b%TjgHPpq!DK2S)g|ho?RcSycHJHtQ^1K0xU27tQ>!rWx^ra z{&%@zpt5?Br-?_D5r2c+^|mE0J{k+%uhO>q2hT~cZ$NDLI|Y+;M((i-`Lhv!PNiXC z$!lRU$<*dPw1jaSlX2H_QtWuIfXHcx%I{GIqe9g+Kr_q@dEMJ~+iaKn7<>KWq@~uC zuDRyg;Rvn)+GtiAa0wH#_oiOyIa=i(*{Vm1ISA`5Whz<2cf)T#>;VoBsH1(3$+-~g zA5GAfD=58(qKR-_>Nr7(rROK#*%So!j7josY}*c>xC|0PNIvK08X%#RU-6J2lTDN} zG*?@rXKezb>^jCETCba1%8+Do7ZLpEb5TzA3fMy*!kNbyMpujZtt}(mHqH9qJII%E zCC6zjP9Ng*1z(ol$40B>&-J&|C@KtF+Mi_MquK0 zI%n1YM2H@=7>S>(o%mKx+wNE12hQW<|HpzKg6bNqrvIt`?N`Z5QEORFF{lh0`ImP2 z4-fqI9JBRGnCXlXII|KHx$|F9#nfZ?J_~;fYhvQ7JAoIR>GTB&AIpSgs7IfET9)I4 zk-uj({#j#!TiI;N<`wIY+o}7zwY^x^$btjB%YOv3qI68RJ?+8SSkCAts&jWKNjzzL z9AgYOL1m$u#k;dusNRaX0~emMd9}3VQRVMxVy!|+L{4J6U^U5+$IO4%3U=jW^D@S< z`*OH#D;8qcUw{3~%bWj;7vDVW`Sv}t@bV^1b-SRZHIN)2fIs`m9?I})oICHhJ^g9T zENcQ+iCm9~;N5_)^KM%E#_FGQCcE#ZKc>A|h~9z)df!bW{aGO1z0w_W5aDd+q82t!-qa}7}gV)4l^?|+4%IcKlihY z1=h`m+BG6Yl3^`em11ioV=5eDYJD%Kgm; zvEZK*_|mZpf4 zE!SERo5n8^X{m+X(s%2-EL3}T4?YERXuIA=@6s{sI@D zTbQh%>@2w8DiKFh$h_N5vqCN&FFNx~3d80x5ohC*9r_Seoqwi>sNjWc#cyXsrSNpe ze(&Bd3lx7rVRC0qcD)ijXD%m>DIDH~a4QSgpZ@fxGtvIGw_^W(v(2-c)<$60*JB<7 zSO+z;8ZOGvlggk#|LWW`J%*nII0#UF?mAI2-r?zDVPH zRE{6kSVNonE=*8h0633$;(35?pHAc%(G!T`>z9o?I28BVYc0qC+5WnVmZMJG5 zoD9pLsB+8jy7QAkmWwukTo${94l?Q_+gfX~;{=B8zVGhgUKWimq%eDb#WBYmmEBH< z97JJZH&%Bptk|hDFN1|w`Oaja?;sIxhzD*>93(~t2$KnW(o^Zq!3GhlHafrc5By*jHZHJy3I>T-p|3Xl(ouuCkjQ5^32ntk{gTy1aMLgIuVfWQikt!32TB!DpYE8bbX!<)`H~!5|>m?T`&RoQ< zSr)3D%zDVh&<7sM-8IMLM8-8)sL-T}yYFIQj2}6}|^2j`P(#gDf=zcadp%m7SmHvGscw~4hW{@_;{LH*; zEK=jFcT6HA+W`t3z};c1o5RGs`cP!D{fHg2H#0H+j(6;hS}hy)-fK?=FPo-rGF|E? z^@>R|;m#$!`qvk3t^f7UH*a&CT#83M2muT@;l(;}?izDK|GxX|lR<@Ms5GCmhUS;} zM->0UzueTsg_Cn-;`?EDQ~^Kj57EW$qW62>qdc)V^7gk4n{2YFn80i~BQm&C*Gkv4 zEzl~=Boot|bUM#I`z$(zi-*%s|H`l~_uagkcH8!zoJc$fiEPt8h@byD+kc&tbhZIc z2EW`WZ(-Ktp$LkHvhX1ym;ioBiHCWk>%92-6!1$!+TVbcIbY<5{)}=GAJ4Am1U3i% zEzA_1f9W#sB{}sE^f!?eXukrtfuXK_^!lgbce!`$c?N%S9Q@I|@&-q87+NAGeG@mq zp=0z{69|*uxUoJ5Vy83A6c_#)HD5_rKI(FT@KQ(orLD6lc2_dI#8k#(Abxd&M!HLmr3Ouk-o9lOB$NxE9dP2wj1X^6s~nVHD~ zw3e3K$YY;bs|(&!_5~IxuD$MBCcCh#;kW>^VBVQ_>1CH^QYt5ot%1x)U}bV0ok*Re zS5%_(vQ$G)qgq$mZ#T@cBZY)fjmm%cR{!#cT$-+q@dQFx1E2Oon5q9&vZjhI4(PHI zUhtGV!B%+{Zk^!ncTuOlC3qeKawB>o!{|C`s#AYXL@=I_PWY}pE)_Wm~qA7M;yb6>iJAcVMdlk58EFx&9Oa(4ru{gP4IOZ2p97-|KgH? zJlcCvoDTwVyiW69<$o%i2*tngj1LxtvYZo3$FIJ1U35J#h@XCie6I?B z>)5AV3>8I9k(flS{x|;{XrBtP!%bv$UOq}cE2>--exnmOAuVazkAPEdN?t-Rdi_=y zV1h41gc-k+Y>b;ePus9$YF#WR@f5Z6DpTDoa-_Qig#YsVn~wivuKM5a5e}Tjf5BS5 z{T0jOkiXGZ!hgIQE&o>g|MD2u_}3iei#SzdUFAZxb%`2v7xOuug3w&|30?t##ieY_ znU((qsaZlnMU4N7g~o&E6S)ES^xBMrA9e_VyHEinr|HSDPsvfOscN987g3mrAJZ;P{_6+ zRfhT@fnI*C8w4<#EapS};uMby<2jY~z}?XAT$rVg{&d6t2*yIU(G^HLIQ!9 zB&siBS62X6t<|e8x_fo4m2|3CvMLwVH%VPor;;*ek^l)Y4?;+w0fAdbt|_3w(~kZbF&L7p9}{x#2S5C2*3T>bhR*zms}2N6cLzw_O=qpq$^h4s^I z|4$Em8NX+r{e>`+Ufl+R2V7#`D719vo%pDBEr3B2AJrXRu~lvP)4n@UXsAIkW5&-n!yR~BWM!F{Ox|1z4(^EJ&4 zj$RC7O9qmRUvahYx4*W%_j|wlyZGGQiFWDf(ft19U;5?Vkw+huc6k$l&F_5Yuc39l z#`)%jnD+gR-~5fA^|H))^Wz-RGEC(iEu%YXSlWUY~b_6p~?AO7(By(5n}syBcBJSNuo zlwT9nG9+DhfBBbxIRZ+Oy54x>t=?b%^_Z;W5BQa(Co4@(*ViMZ=zl4eMi(yoY zD{i|LfhNjnXN!ugpBm?vLz7bZ;nGEmdb8lc96SA(tkKW@t^!r@KNgG3sk6a@HhF&`O6rq2$uXXRdgD7s12!e9Ge*L*TPvp1l4wzGR96-*Q$mp*yC^g8wq?^}No>fX;a{dLBsaI^m* zm3c@folZX~(BS!B{Ag=6m$mi z?q5JaQAT{@{9A%Aca>g8UxE^Ec+G+_eKibf=b;SiD3H>Iwtwo=trc1ld;GD-$rm5h zYE&bTu?C9)`j8)7gZ1Be`uJm=1%dlIMs*YT_z>&Q!Qh`hXKwFoln%UPRKK&k6kaXA zmHepIzYl^hKl4?T9;9!JA7Y*FZj~Ou^VGjIs=G$di0hA*?k!cQAEJd(Jv0uwucJc- z?{=si>!D^2CjP$lO&HZUba%n2%{kJVGCD9Vt*?VV5`s~!2gb`pCitwGCq@&oO#HdNVM>+%J29!`xI60TY0gEE%4<1*ybGgR;?@Z>XZ6NU zg3$p($O`X4Qq6116d1(7+_m!!ko}(cb+tXGPB|h>mSgcDP!qTzCNifydzF5rL9C1I z@*X2HiNM#u9vy`%bSn-9J7GD`)d4LN|GdjTg6IQ0hK;T&G^6zoDSY6 z1K-jhut3pL74EiE)!*&3-$!2+VH|=4RsT`nt1;3h*1NTin*@Qhck5dV8|gnW`1Y># zr7o@BJfvI{s@kNrL5**#m-6=O-?b3+^QoPqZM{Li^Tm&?k$Fu0iIZHb!IN*rGrGiq zg55zd6`{Nl-}cw^X3ArB`I=9ImxOlZ=-R&lsqsfD6OJmX@1Gv{<6`>d7k{xds<-bb zX)}p4N`%&7qy&xhBUD-i)UTRxzxs>MON-*+-W)cDF7B=VWg`X3 za)amQ{DSk&OBr2XlmaGY@@p0^lteZ_pB)zLy*<>0@h4GDIP3>=u{7`od@W>9ZW-5> zOTi)QBbt=ae*N_~8VfU2m&U)%qzN#pjnIv088uE9+r#`6JV?H-ufC7dqz?I$L_bCg z7haa{D_7o}{s=xbM3~++y=jJtWzh=%T86~o`@RajyK(7~NJ*v^ z0CRpPzNUEy@GN5Br>xXJ1@b!qquN9Ncljbbo62G*s~Z2d zLf3+PFo)z$DEGh@{~4=;pE&tca1&l>3O@1D|A9);NSVjVuggAZN8ta0*mAEo69(U# ze-*o)x)%e@c93a5)}TL!;aB_=D0tfBWBC7Y*FU9_&;9}eOE5Q!h*ZpIai;!+)TqAy z{;!2d^)C3V`oG^bgN}5lFeuMJDqcTxv9#3fe`Qi=Ht?YbF#Y`k=K?Hi%s}w;FE9`5 zf&B0P%im=kh~N%;yBZhZNe4Okw)Mvs_t}~fGh889g^-F-Ef#VASYrb(A{NnQBgaVXpxd-av2B=rvy!KunY%p??AmO0>>syP{&ojY8neR9LJ^%83 zD9WH5sR<=7*e!3f{ItQJ3cb750?q_#RD<87S?oYaNm`D6nD0k;wa;+q+M_i~wQl{2 z$D|F#+TJOr;}_Tb>bzf8oAh1!Y#2T>)T~9o=_CY~o_-qI&|7Lqwp?jf_OAzO|D0iD zRMXPWbS7^Pr~R7`X4kbF!l<4NK6Xzo-KKXnrbW=5gfv-~Dd*2QL9rOBw&iZ~Yeg^>HYjAZ+{^n!G4I z$cRq)ryWIpq`)Rx}{gYXaj;14kUJq44>*Yu9&9Q4dHoEbK6seYeX*0tu&nM{~Eq4}^cWp+s}Tk|n*(FK)&vr$U$=y|F8%Gz1l>9M>uzsqC6@ zcM$wv^Bo`6n*K(J^9b;zu2W_~%Qz7H-3TWcc5EW@0?0?T{vE9T4ZfQ4(vl+dNS!=0lvO4)sz))ZTWwSI5%q5& zV0AX7)}V##ckgGChyELj7N);JDvvz!muOUl$25tCH?BA8-`!9r3~Cl+SE4fq=t}k@_E(DRWK%CRJ&{E-vl(OO`ur;O%-mJ za78_iJ8mW$cp`Ad(M-aEOD@Yse>IE*nGH8Cxv8Woz&OV%J#p2QLGnucTa0WmEC&Y{ z?b=^=-F1;Jo(Ln^1!B+Jdt)x)`fF}Lqiq(1EC^B#Ci2sV_Dwh6Oky7>51W}VQx{Ibg_ClWLe zcrxHflZ(ULKH|tcw;SD1c+imGXH%)6&FGBTMa>WV?ce@g7z$s#;}1)UcFkHA&Dlke zqxKBtv_m?BcCbAJ?x9JB#a+floO!?`0XRzjfxyv;_K|GLIx3quiQ3R@fE2I*XvWsKUB|kUDdq>$N4_m>n=Eu!u z;NI%m>Ys0X&NT$T>jZ-PkjaAQ*6v-N1)qF<->?1s%GJfKm-=n+Ez>_Yt#BJOMLz z`umw33DD|yQUO?rN9%LMk>E}4x~cF=zcP42um=vyOC$*wEX2PM_;2-!GQ;C)+D3u* zJ$slJj5mEiXNap|O+N3j?q&G!(fRE^>#pXZ^*<8$67wfRJe1h41e=@w?MOu$cRGSg zVPgBSGA2J6D+Bnhu~VlW8TguYQsAmFo^|aYkxDaGuCJ?+=G9cUWR6sU8aAxvcl%OE z)eiM8B;zQ>_=6vOH$q)^AvJddzHe5ol;|}OEHkA=vj~o(tP!NOuI6FiS^f_LKV?ep z=FtwaRf~ETu(=yXX8>!Q>n3jnJrDW*;oy_YxY~~twkBsYPlE~1mx3M*vuJl4l1lTN z0#zEGt6WvG%EqwP{??DET_nGx{%CS~Ra@|}5_0eIPQHBgeHeaHn6k^%zOFX|dG2xq zpm5ujI9=X}VE|X2tuF`ip)C2*w(s^e-}BE5P2p9~-YctCU*Qr)e{~TP+c;^~{D{!& z3jAbV@RM2h==keL&v+=9X@8R^)5@p)T7Tzf+PeVe(@6NO>|OmoW$=$c7*hXKGB@=f zR~lOqXEe)qFHD6p%O@dzz%U-PP<2f8n)oq9sc28&0)ll#yrsa9=D+R+KfHj%{x`ny z5DbQy2)6ub?<53BpM=q=`K}UFD#1%3c%XFL6{W(dtVPBnn%`ngcSwZHH(w8!wsBF3iV_WgF8rqJ8}IE~fs3 zRqLj~#NtD;>BBdp!ejQO@U;|WL+wU;@GXdmKYr%NWvK}P?Od#4sf<&_CXMk_5k>TWJAN$<3Lc)1Ynz|)!Vi7Iq*L#;mqWVHz z>^t-8zLEufoVCHAu3!6K0THmH;S-^|0)yu&UA0fz#I~`2xctpyeuUA&gRO_)8?o|o zW(=Yq0Ddwh($Lk_E`8Dg%-50dtE7JDO8cpVA4WCAerXZXbHu&Yeh+XD~_dWuDLF>k$$(u+FA95<(a6EDCyn-zW2U$ zCDJ>vFUJa>v>;gBM0c>*pL_~9*9_(^&#@+9{iH8>fpd*2O+-TIwFu8TPp-R;{O|!< z?uRD6YqA}FIU6ZvTkNz;_qU$@v|^{zl8O|b5`^Pc`5`bNwS9rK|+9lzAmdL~d{sAxlXMF~x}aB%~X!CCe1 zci>R{6}oplPLu0ZU6UGdrPbLY+_ z&fp3NUprXo%)#gOp}YIRnMUNH@t2@3hF|MyIk$TYA9?S8%|rifC{hda?llJgr`i5$ zPKy_8Z8e9T_qO?fQLU+KzK-gDY1`YtWBPo*;l{;S!yKtut%>hzuer9ApBRhI2d{(S z|1fGFhf$42^*vaY@XT8#{ShQN0Q|QQ(tJ#x?7&x}SbFfSx2Ys5&9xhqZ72nD{Twd* zIdji|mUCw6Z#(T)!<_7e@KLUR2djUBuL6~{B=`LS4=qWh2ZUBeYE&Pf(j)3$W#@dE zRVJT&^pH{A({Das`~B{7HeN^?m6X&Y#i-V|9fi`&pNrRn4?UEFjs7g+f8dcv((AzvxvU>oP06lX4?NqFida`QoYfl9^tp`c<00;O@M@ae4rJ>h zquPZ}0-OElf@|JWSSXCM3$x#Eq1E!^AOCII<&Hb==p8X_T5lbUYNbdtO_Ba558FS3 zIxWc$FF7KSpA0T(VjjXWbO_7fAkB!&aKh{t%Vimpk^P%a;yrN^t;>SQ-S@&Xnet}P zkJ~n+gBVFpBK;ByY z`J_fh9dv5Kd@}H@Ng;Ad!$rZIaNT1HY&EPuh4(;`*RK9mAwFB5ik3K@WC!(kocPf> zUEzrfn2f&$pTID~)AGiztJ*)Q2{5JqtNjZ;?HYB^e=DvaWKc-hkul)242tKT`w7yM_pu(}hX_VS7}c8oMjCEB<*{GV*7mm= z)(q|hz_!<@AE{Jbxn%jW$>aQeR9iTE|S1py@S*Z2uVa1TzUn@XENvhjpY8gwCd zP1N*yC$j-xzaG4YMz*HO?RV+gnl17$vX4#8WF%&-udXE|lphCkp)?r8t!{d@$G?ya z6DRA{mtT`|XwKG6jt3lx`de5NEQ^eG*9a|MDBXIj>jsB_Xr=*40`neVz3{?|nKLKD z>^C2^P-u=Yu5Ftg955&jW|e>g&JWQ{BtTocPR1{Y{YZUeY8)|jT9_*hJ}sMeHq!`l z!Kn6HeH(|QS@=IPA+01qxaJ@0iUlBfD8lFeFwA-a z>wx~AB&xj1VNT&sju$aiCcciDzx&aiU>(pWT6N6G_9l9+5@5wg^}{kLPQ|(smNmeq z;-=RypLZuFzh6LLNnh2+&79f$bBI1#I+BRtp(?nOoW_A0?f(*7>iURsD=@hki$Dt& zu&<|_*C73TB3cGBF=ZDf^7!sNk$H>>HE^i46}PI@=USwxGMOC0TCrkzh%RA}6LFkp z08(iF+!}__4cvFT{Y`K#<4?;K8Gk%yvNCqO#6uZVe&^pL&H&=s`SUUF2aaB`az)lH z`MomCZ$_|HCi8WRVYYCdkkRa(N!KRMDd(K?FXNpCaSbu7T>Mx9drGWfL4e+wUe@xI zUxjJOWEA`Ex>WnmBKGcuQBC$?wveq6iH1hFa{>4gCo6+gG-E^f6F7)kuH9J2dh<{F08*%tiNkC5@21SccQXM`}Vh3P!!z12T2)}Q*Ne73Je zY79^jV)~-Kj*L%Uq!fN1{}{~*o1W)lsu0Vvd=&7zQdW6|lSO3!Kb5sa!td}8E`vj&#exRyO-v&jUX>ec!?!2E8L z2LE$UbfXAAW%2HdH`4H2ZwcYqHc#Z_QO~{?{`GsouQ*AS&(^=f24yag$u6Jhf2zJe z{vXbh?`Fz164n_0PrJANcPyl@(omrlD6k~ad#me!xSmVme6%4r58Mw?IcEj%@WHOE z0dwcZt%Hn-Vr*+=Vo&nYt<1nV$79rK4%Iv(wyH;2=S@;Z$`7`g7eQ$+1B2suTjnx?!y^~ zT8lDnw9qL>gmXwgX|jxJl_9RDM!4TWXiDFwlc8_z6VbZRbU;p~o;@WQMlBKlcY{mf^!NCKSACQwi zz<^)Yq9{-y2?25q;2Xa`e+^Fgjc+{eeD`;N)5SOZmyTzf^1b$7pH}$Q8}-}j>^+Ua zt-I3*wu6^VdEou$P;?{r@qd@nb{m0zlU)ZX4NgEGN|$W8r7T!9Dn|)ETFdZfBw@y;hgkZ@7bUH z1Px*sz5K;gGi8>x^=rTSYtf`W>Zl__gRv#V^EaS`=5sVQQF60R+qP}NhwhERe^;ZC ztjTQ4+{T~jmf$1UxN&!fxo7L|`gbuts(0?%+54qm`d`shp4j_;{_B4Y|K&*N`p3d_ z{@?%YzhzB4t~V3Df%Q;X!L|55|H&WY;%NuM2G7FSuJS98AY)pS;J@~(zuG%``mrPG zuba4(gE?{?8qvoeue(tC!+8V#k+<-j|NA>(PCY4251}yYKNbFi{>h!f|Lwp1zezH8 z&K!iHrpBze8r=5(aVW1m%$e~F#)**%fAHu<+AKBQbJi09zt2UI1H@>d?LIOC``NKN z2LETb{iP8+^W&!&PvgN)XU5Hxy;zLu=F>hyCY?Ka{?|NQ9GdW}+qW~6_66tY`~8}$ zugU&vc>Xzx`s>dS{&|Bl?-P%8roZojQ9bPl7}dpi7O*4CtHGC!`?!p1EEC)Zo|E@x z{IbHCh=;ZQ91OlZS@E{>M~f8F)@vp>uH6@McQSfstXsa6)!@Te|2_zQnf_MTmGdZ2 zw5BJ1*Yvmb_dV^(*LJ<%{2RvtL`f;I^=Ma{$L-$2ySu?IS|v4$loY<`L}VT)oaiF+ zdyuw@J#q>aX&I1^i0~;is^5CMNl7^fijXqQXtnv=Tq_0PV3K*TcFmed>)5{f7QGsu zph`g$;iwJ^Rzb-pJ3`Hfn5)3Af@PBkr2Y9X!ss||#&oh72Sa#!Z~ew~IS^^KB2u*w zuauP1fxIS`WRS~fkA?+lln~m!V|#DI`VAoe@x4WtUK%M_4;>zUE)pK)HO&bub{AZ5 z0lq(H&@SWS|8LEjwK+^(&*4N(4w*SyknUJ|Z)#9kWYprAM%Zl68v_v&_3~9845^&&@aS^J`Fv-6b$AUws!Q@QvFqAi)m8+FDXZCcN!Wkie3U@BR2KU!ezFViUh$ce#_e zu1^GhS8hun{A#DXS+lBt6)(U2`gd{ntAAI|id+ek&v5;_2I}YD+UXO4UwuJEGse2n zk%IT@ZfeRefFVwoH`TB4*R_wSyHC}Sz7r7m{q{GE zm?3ml9}Xf9x0`S779ZLBU2?!q$T@ykBIIx)aTe>EK`e73o*! zX*L~ivFM9m97r+`?Ei8FLFQ>_MgrfJMiW2kZ^RCj5xN$9s@XtvkrSrook_|!DEUAv zl0m)jlFPu)x^Wm6%N(0FtPg|Y9b7WF1j0}f3ZwUmE3fRG2!8gUXMWe=??eK=g=*tpjk>ELu8IG{PobKc zM&06J2_Mvst1HRJ@xSb57~$ah>yh?zylQbnTyphQ9%`EQ1sZ=c&sj%Yx3tWW!qc9v z(+Xl;dBv59AK$94TeX?E&tw$D99^ zdoe48w4i>B*!=Z1{aAmDOH&vA?=o)nw?8fOhkeod`fWt{&U z`izj29~M6O#ll7)HJF341U&T{iGO536Q?T+pt*wa2=Z<|DViVJmps=`IS___`M zbIY>-l~5!8UALb7FYw=cx5ihxlpo0>$P<4;apylx%q4u0m|#nMIuqh8sZ!7}TF6REpIu^P!Wn#`T?X+~t{J@}HR z%w0o#$mfdl?q2W!VdJqZV)(mzN`S`oQ21rCoc8H7qW8Y{4rc@4bYN01veZhI`7|br z@GVmq%j7dTE`=c8LHyF+>5nkCxaH+7tnYWk^!F_=s>T1dh5aBao#JGlW~~gV`B#i; z*NK*YzEupuQt|Gsav&QnpZ%@xm7^i;o!L&5k(M)z&G#S}z8h7S4+aH0_&B=#E5BAI zYf#rg;H%9@E+M1~KR^g!Oq*gP{1hc>%xcOTZaT!(`26bXtQ=$wqg(|O>HojX|f6?khhkIJ3}Nf zk~i=zLcvU?-E-xTIQ3|vq#c|;YMfQ7e9n)}G=~4}??F$FUjL#+*O(KUXJs9*trbvG z>q$SNGABZ03KN&6wV~5@{Rd2lPr>a2LaTp*(CR7O8bEx{8K%ASZWz^=j=j${fV052 zzYT2&VbcgJu?9>6S2=K+g(r#ZmRdJy;xLJP5n4T0>q?uW2{sE2wX3d@CL~cFEjQw+ z8E(qHyZY+y~oS`+2Xh!10p`tZJ&^n2drEJZexFoQ}6bRo|WnEpn? zOu9~uQ_lpf2YjeC!JhC7Flie=2Zx(Z8d6p-xf{7^EwhUZ2@dCO&aPqayt_L>VNXA; z6^xgAfB1)g5Dm8t8#m=lBtzddyReQKcDN((eIMY!Y60OHr^;7Y9>}&2@M;aSEaG^s z{{GK6hIII(``+gLrxU*QYrr;YiS< z2*QY!Enu3p5_7RFtNruR{fy!N!(0DKL-|aUqO`7|@GART@UT{u?zj{D4U<#+?b;BW z*zd97R1MXAj_z3yao!z*y) zbfYC1wy`njfA-lhs?Wyct=BU#0X(2r8TLW_FMZs4n)eL+N-OZ>TGO9kd=Z}-?+uu; zwnr)1ks_0~Xln8;jzX!zeYUu~UDCqTOm_~;lvUx&`b+21jgk8=ElkCdU3Po{E?iYYykeN;PD26N(xOyNh7$} zB@Nn}XD{L(ISmFqbg$w1TVMTNds&X=cEWe7ucDhwM9*9LQg)rOEi8AeB?4PFfYx6{ zySFjX{1pAWWhHnrlKX>ljn%5?@qTWYcBZB)c{fAMp_kV3MZIW7`Xs=;7{Rn

      Ht+8pX+3$9l-7`L127CNrk-$Rmpm`ALM@uzq8tarNnE&rD*$d5Ob>Wq?tgkCM2AQ`E|mx?en#3*Sy%agzSc(^th8NcJ(z^z~n*zp!^aMLjXx^K9$B5 zrx7#qnMi!9>oDQBWJ#RNs@z>}efTvZ(k&exs}Pg80FJ@$T5PQSYj_{x_#Yd8{h1bx zY6(i8`~2r44JrXi;)D&_%sVM)^x)SY=)Jb{wP>Uz^{6RZugp(~DszzL(pT}Rns-8K z*29Prn@Vv$_|Sv#OLtc+Y~YWEcoL_c(!z!tTsGw5pKO46&;+-rNc`_X){V0Gb>YH= z!RJbf%0Qk6exHRkjN^_g>D4AsWIpE4;Eiyy>Z<*>Zqe*A>*c-Zi=Z>rHvg|Cmc5$lj5u| znD2AF({J-Dz||a#3wDtXs{IvWIv)Y16JUJ1hDpGa(Juq$A{ZJH)~>kX@~mgKZ`#zG z!1}fr^MJ067tUw>;BWOR*MXCgHX7cnSzD;<`VDI%&=q1(tuemz0-OL=`0 zen%|q=kY=CNf!78-CPR($dc{{zxy1}9ei)>xLQ?nC-c;++Ml`-Det>?)%{ zeS9xsXoH{pNK@>4$YKSLGy1+yACiy!VF(0R#BX z4cd|d8^~z?~5*4 z5P>J_;QAxJ)FOu_^9ncV{sEyM)(Qo;CUM|$TzcS=NTe3H4CR!QVJ+duzLtO`W8!r* zEz}l~U^5YBux@_LYd(0^GtP$ftUJ`#xH6GF+c*P*m&sSAgzYaQ-JEBlp`q0b(W8KG1Yoq%?;S|66dvg+!?@u#Uj+eVloo1DXl zUkrXUMSwk+mmY(_HQ?;Ylgd)l8<>z)n?eC(*XO(L`YKZH9KsQN^891lIM?kvikte? zu;-13;7q>6l7;bXFf}gSpMEH4W@GF+F3%>QQx+Vvs(=M$BCiOCvYnKuR zReuSXd_`a>+4Gw?7G|ja{q$y-vt5IqOsjoK*}q62{OUcPEAzy#yve@73Pi(9e*pLi z_J{v@ZoOa7gpu^=N5=JfM1=ax4TX^@-!O5&0 zo>fY3qt=bh2$*Vad&;z_I39)pcL#)8)34(5@MV+~WEhA)Z@6|TxbMW? z^kZfKLSNY8>V3RVryZpCfRl+gORYL^sTQmpv&W#t<^YTDZOT0pK`NQ+GP50f;z;L~ z8g;IFuW_!j4%4R}O?f7EW0N^W7#YRQj*qT|W>D#2l*5RA3mTjni+u2a~$E*uyWtLFS1|KRO&y>KzQ_z}0^=$nuyXDJgo?3nt zYP?S={GPyi z2;XYGS8lvAMug8&=LAkEQUStJ|88w}%-BNQ(@^!1M{+QTxZYj!wMgdBNd~rS!s|W4 zvdPQw_~F{$47-*~Q3`&A2=?b0|5vlypyMNK^oy(olflKWY=?dUzL&nP$!p!hxre|1 zYxkpJEu-4CU@*qWfvamp+Ebj_XhWxkHiV{~^d7#s54{gY<#VhD_sA>YOz;SdYVo-~ zR;3NK@&A79Up}>ARMTNHvSeIk&SZcL%9f(}V`hHKg8^J!*r%cYRld0R60J1#dbh=7 zI7$ZA*zunZ7_`3=W>ii4b^WC3uX4lVk3EKfml~#;{w|uJ+SaX1DKkH<|I zzm7bwk@X*ytb46=Bfky8^2E;={5B&-wv=zxTEo9T-S%&q)51Or>p$|{9NoJSB76#A zY26AR%J`Soy9A{mYj!QlM4rD7Xa1Kd?~a!S-kOH+q^7)8nmQ2tH=&U}p{a28ehTJH zV-I`Vt>u2wy5u?x{Btn)XPhyocjlRAQk?}x*m z#5VJNNk;XB7i3%SAXSP(X<-jt7hilyh%{npqqNGHJcXk@sEhma%@ zr*(9{kGhB98_yISNia03(R_1pPz~P$UnUp%ISd>L)-jtr%ABhU7g>Axb?{r8x&(Fb z`U9Tv2m2EST$to><+45QEL z_;U-t4;(YK_s@Ru%n;+ZEByq1l>qbF>pOaP;!`?@k^7OFRr*PS?|#?NTx8zPojVt4 z*oRpUP7kA6={0Ay>GfyylV{bU=={-q8^NWMVNh_W&^$>aP?wp$BG%hG5=fo@5^LO? zFFpswTJ=A3{H@-phok}%WsCs@m}v-7`0m4xDk!%ap2U| zt5ya7dMML}^^G?!4Kw1LbH2o;8RCDK$KxT$%e>j%TeEIW@Ufc7N`JcWZlOHas{u_J z_3x%u#}t@7`srD*Vg=>c7lyPZ2_@{6wnh&^6zkW9jS;4D{fUJP+E3z{>%g|HXbO_% zcr0>UC_@{9mVUL}TwQSfg(5@*mR3g#WCG=jIh)1Tr+(+0^B+k&GfWAY0~68cbHgA5 z-nw3W6@pqYF(&f-G7O)2^YlC9VTW}L;#%SV4%en;w!aVjfQG3O|9RluARlAahC_$_ zbKm`J!j3pH4Ektjo1jZt_?K3pt`fkw@oW!s=c9ig27U@5kbVJq^a4Qg6h6pa4SRYPXnY|BuGjC<)*+;J`Onb;{*1vxH6EW>?a>^{sq~+(Z z;2XaWkUWyf$UIVtuKxY?x23V=TCrOhOh7)C&#Mbg(Rm)Mzt#W!@5b%GkElasLD5JY z_~vco%D?Mf11dbhM&M!i#fAOluX&};HJH3`%Ya{YRzw)t-3d zVb+1u5LoK`6se&sQR^WDmY#dzh2Gt)FA4zZ0>b@l{3&G}a9pX$tLbX`EO@ipPiP)) zWH>Lt?5hNS`&4tKYuDftnS8)T=@kk266R$tE3hK7;-wci_by$yD8za3jr;HQSk{oK z;J#k`ECX4K6w5FTz7=6BJI?;s+^c7Y%UNgC#CBh9IXhjpj3@E%jfhPdgv_*p%HI0{#7$$Dh{waB4GjJ*;A8IqnQ zgtHjS8fJLaRo9ed4!#+_Wa(m3jqfeF{szox_IlS|cMWaE9kXUKKIopTiwfeBRs6fE ziJr{)&2f+fnJdC$9kiQ;?>EbByGkH1=j2p8Z~E z*ETJ!mCAom|AWGBc?C#{TyR>rZ+^>hkO%%%8NH`<`R(v|(pcUW!{{ci_f$D;Vtj-B znu_sKSG`r5s#N7r(G2&0UH$dXk0~VgWZ*k-+Kp%XKVzC;(fKfZUK2k_jF=O8LX+Lk zJN|F=*9C;y7}+zzToq^AtTHF=z3-mh^9U>{xcd6*Wm%)&$X)wY+p}lq3?ae!+xVP3 z_0&_K(`;v6zYC-HUDl9t3#SI%UH7mCKpPtNNvaP*afW4z8z1gkcgRRFkOGMwq_r%( zq-cJrZkLyUB`+0uZ;D*<9mByY%3hP6rokm0x=~?o?2I$O}^KQgZWd*!U|n; z^>wM&VokX+7_YqQ3cij**EB;(FJPXu>!1fgD?3=rG^}hH0?;-THwfE42`lz1PTe%Wt4c4Y; z9`#a>J|56RB(Kgc5G!CMV)?@80cy|9x!m1-B2u4$ELM1kV33 z&=~W%TS6x>dwRc?hP@BG_3MxiWdyw!`GX6o-tQzd!14n z^pyA56FZn?RL3MN>p@d$djuL%I}=D7I+XQS%}U)DIU=44gQf&(Q>>rE{+HIGvYgjy zXg4ao9jyI-7RP@yQlG$dGH1E;JJz*SUYW}{>5m~R_r6zu&Je#M1zHqrX%-l=3=k*Xz>m0V z82>Byu0WvQXF|`F?wz<2<4Ui0>dXQH3;{qq7D+|Y4A$NkK-@`K?>w@8U!h|1~h+%x8@W|pQO(} zk9iOza3#7w+$}yzJ7w_!g4wyLc5GCkYwKY^f$Dy_DS;)eaw7h7)OePmt4UQg@8ZMx zi(f?Z8DG;#WVyJiB_ad(!V8PAzv>pHZD$wZ3b-=3m9CZXU~O-dK@75w)&ayVCA1{i zJ^Pbqb5J_!D9m9Hb2rkc!qr5qL@+gyC3sn22kk`={$((4fDxhQ^KQ)AS~s=gB(TlL zG`MkZ#V4o?ZtK4phPftf)#|ty2DsYcQ_*(TY=?~UEwrr!E6s(h#kXn*T}(75e)e$o zpU>Q?E4u*Rb0wZWHg-pf$#Qt`EX}tv(Ki@04u_67LXPI-w$JajKLt*f`ANQo1P%p$ zdY3fzx0l&Dh)0e;VHQ)t7>+Y9>uUR3-~L6|;naT&KJ$t;8*Bd>K^c1a>5nKLK0D(t zzDdtK3w&9=N!6;-f3ggUuVUWmxo4m4eGNu+X*$aKkqOVU}Z!RI25 zg^MoDcwV(~Rq&!NBn)^5Ge~NaU3S^!#KL06EvxL>-h9j@S&v&*6JPubPL)x;RH6@+ zxg3pX{RAn@_T*40oPau8=r{CLrzZdUOd=vN9Z|vyOTAh(9CD!U|7f*ahR(yOR2e-}Ht-tN%#UrDG7ygZ0f5z~?V+NtLC==mouj3yn2zKNKN-i~&d>wt`14-=7sg|Ykq42oT> z3+{jWSMqHz3!?aX?p*!RxelBXp&c2uTCUg$QR+clNxbm<3%$GUzAHG+^+G)M%rj53 zKb1+r!G^!_;5#vYnV%IRp%h+%nRqgmHDD5`kv9v0p7~hTP_SplboR|?0XHo=nH1JX zw+h>|tg)f9tbt&b0zw-Q;BlX>Hk|^k?(Jn#Z2Iz->mZvtqM^-tFcYc&|M;aZh5;>e z*R=zdZq6o}Z&fgA!N?=sxdv%$ z*CRFAqWO)$l0@Bv(>~T`e2{?a1m_IS3BIm|@vWsO@u%z50@e@Lhs7{SBsgl(L#F(B z_)qmfZkp{J&^K(_kPf@>0xgo9fUqx`;?c@0#&TowSZ|U9zU!Zwks|OZxIhx-F0`q| z|37{PjcVHN&O5#u>2jGymP>&FuR873I-W7gk7coJF382G2JdIxPtlSpd-mjzXhDLO z$8qbOVNsXwJm-u;`Ldo6DJHIo5%`3gC`o)w2D~Sry?65@xeh-UOp&n34g}voEo*os zPWS6=u>Kh*Q3$pW*08->wn0jBsk2zcC}u>G4B(sEe^e&8Fxq_PV%o~f+WC2nQTC+1d{ zH8~^+44aM#VL-AcO(Io|llO>JEnb&9X_3xrK(qca+vlE@ zPTGN>sl;UQwgO99NQ%Hx+JDe|ttk~`kzf_t5K0WMK(Emyf!fDfYx>4R4~6M{Ckzjj z7>t)S;Az~#LC{lJ#j!C7O<>2LiVF5_?G?-7g=c|<3oeZ?k$6@HvU~Aa2ooK5oI?H` zE}?TLf!E?12mG&_wJ&e_-QenNSXYwPvT=hn71jV4=`!cFt`zG;tPN^I*Nn!B1m#hi z`W)QB9S^=d`lzGPHr(F3>1M1eQ6AgO@ig-|+yI49eSOw1t?0S`zwX+_*_W3axA75r zQi%4_OBbdQ#pSMD%a$&S(CHVUX}Qk0pZ7dM!z3Stzg(j>ZrsQ^IU&9kb#2$IR=6&C z1($LU5tcb3t;x341)Szc;-*_lEd-?JeoH;lTzMb-_eta5 zpAGm708GypHtJ>sw~r0~rsF+IXzLwo+*fq=e@Y8eg>eEq@R>$_l7t9Zthrq9#JAI}8(DSosmwJE%c zz@zb1Vz`gBMaH)bpBcJ^Bc8OBr=ua+UDekaZ&UNmVi-29^35tbbYIL&KCa(0%YCR(?T3u79 z-AiB0(y;A+8Q8JFz`aUjk9Al2>7$+h3R=X9Bxi1g`L#~0(yC|P1Hq3*^%GBU=6@+P z72V0)ihzk$-TDJK#XU6qb1?X4Fn`WQ(_B2Kk7@-!3r~JL^>6S!&o?Cn;cJyiYfSPK zq$#}y<60s0{ny{>GkedKzcmi$TdOn(sA$8#?OVIoH#ZO>6_Ly7_@dj2)|QJ8dtnwI zOn<|eP$TcY`&oRHmLXpJPC$^_4MEDq%MMCmh0n81sm6q##&ftZ*7;IOa`AI>(;;u{uoXi=(mFM|TY{{p0r*te+RCVZWqTS)Uz4S(J|7#F}< zt4Tggm6k8M_u@BI2F5B(f~z5CS=@Xz(|mS<=JnRD)xXhfOoC4d0qIL$I)`%Y>#bV3 zoI!hXZwgwAc7_w_CE#fa+%%58(o5ulP$eax}P zpgE4oRtQ*{>AR>CbW-pt3}@Cn*N5#$I@@ge|90)%N1cjTfIlM+0~cLl`mf;Nxgb1hHm!$jL0h*$2S? z5;evDBi5h8gg-X_4{iNFQ2SS3*P7p7|HsnniGd{Wd#_7E``+MVUH14~mNh1JmNmxruDtSc7|9U!gT8Pf zL7Z(cCzgY^t(TTHWJpKQ6h^Kl!-a2xty^B{Em^WSc=Eyv=Z7(^K&y39@aI*`aj#pq zHiZAHuR)U;2Co*JwneKB%N^wZ#dE%huA4qSU+@SgrE})80(}a_HX@%-^%{~D_{9ftno06IQLBFJa#_J78`cshE1HC#`mth z{<`kmB>o4oXMr@l`^?&Jn;`pc6Z*|?>L2Zh@1mUt{=fU)yAgmrvNYVOXZGz37W4Ai zymBtd{+|#BlHpnZYb`LO08|>+|Kuak#IKuKB`smD`6-hzQ}zTl!1WDaRSxsvyXlEr z2PE@KfDc?goA2=XgRl>T?^@=LL-^*MOor-Du;J#DgIQPSu3d5#N}@_Q625UOU&GUu z-aAly%=ZC&UaP_ffKMVp^b2UxuCNBzM+12pYX5vA)Z|Iu;O8artHl^cBkE5cjA8q^ z>VGKkt>tk0cl8&_DERMDm?}X_QSeg);#%0T^>5_>VPe9nGgj|guT)u2+)`)Y!<(edQU8H$9TTG!{uuimg zE#sKA2J1wwVXw3I)=HhiqRtn6AI^rRa`aKhL_lf*LPz3%&lU;=oqyhiFvyR`!o|$E ziSw)=!)?uNYZLw|w52V$k6VvYg6qywtUbAQ?0y>!Zq6LOOCLJ_{PPlD7eWelg|=dg zWgfd;)Et}0d7$QR6zKQcwa_z1aPg?wWIqHac;o7(RGxx= zjPFqD;FpjJuQptl)Ja>fh7oA|{sc8`0({`|Il1Nh_o;%P(o?_INLJM<^Ow7IZuM_< zPSx|1dbj$U>hSSzTYoG_0DrvjVIcQ~l)5Tay{QXRa)AHSKTVeICRA&aM9Rq5}?X{X=LF8p@Q(YE*wNw2)oUf80Au&v*?t1<|N}4(l2S zo$iDI@isKwK5eeKM*&V+=E@A9)nh-|QXrv8v$G zVE@ggYY_+M(s5N|E8{PM%K)}*hD zIony^+><+oo%J8yfBmf1zt4++M`Qn&b*;b3IH943t~T%6y*`b68;YL#H~dE*RyWq2 zZ{5Ri0-g^RZnXBT-7D$Hw+d@t8pdwpzn{h6VK@QL2hVNrZDgF0Z^PN`KmP{VA1u|u z!p*mRYxjaR^6le;-!!U)fA$yjQH^CUu7oomoEIO*_}Az3x%|9e8`FqjkMc;yDlCo{qrLt1e0wLObLxJ|0HO4-tnE2>H)sFzpUO-<&u%B=6u88&g6RAs!%PM5}e+ z`-w_=vVca~mJPTB8?Px-jtIeB0*&2Vj8}X=laGg)_@E}<@|*D`4I@J{hi2#jN5|&# zAV}Gg8`f>e_dWQH(|6qSFT8}`?QOlU{Qg(MBo4#Yf^d28Q7b`>jN5Kiqk1+A#bg)) z`b|1Fc`sifL*OKcHb*c<#$^I&=He<2QM_ViX+yE6hiMn% z*YVKJCewy+hq!;XTR{lmg4AFh0{r2!IG*agpw(nDw1aQH)YszvfUJm!X<$Hw2jNTZ#FKZ|HoD`@1R62`KozY#P-16rbz#HHqksAg!*$UHm$ z{Ks64g$)iPt_N!QN=z|4gf4xPlAqF4n$CXs;cv$@=rd13oO-+SCqzEt_vFqx5`syl zJvb1vd*VqM%`%afW71n9&Wh!$Lc~A+0(>wZe`1)vcD%S>?Krg#6kxg@LcAsf^=WOn z*Jvshyj|y6w>AhbfowE^{vOPc_#Oq{$h?<$b;FYDqtzhZRsczXCoOhJbaDf5%W4?M z9Ij+?OR(2+hHH?f!PU?fkSJCLg=YI!z-U)XV%5r9ict-|S0nDS%N7OA86GVUwDD{Y ziFRtN=~}`yc@-MsO5^EIP&_RGK2d z9&VJvU(i|BxaF2x^ZnAx7Se~{Hv~)Fcb6$I{BfcwEuOm^ylMveF}17;9y$J3ufnns z@SA0$i!R2OG~qc%fDhHO6F~4U`CK&L^ZS3_D2ZiTJ1z;y9^1Zf$3>(D@UJ#zis48!?+8P&iwel(^jt#wzT z-1=+z!!oa1&$)$iyuIh`Y8PB%YDq-W69|7G}vYFi&Q|M3K4U`gF-f zSSab>1pfzL3yZ)*+<%MzpLhb-4;|4-e_b-zZHLkLU!t>@YmV(-IIBoImcy{aU4P8x zP|iPv?-HAzG5lBUF^2y?>-fLbU&|W0fS3%OMv~NB6Mq zpT$RB;!cJ8FG0x1c)G#SZ?kS4jIk28KH?ttyI#8dk)XIJ)|FTTZdpmXeZBeMdX+C% z!KijGt#Fh$dl}aC_zc4vcXBgN=rp^v<~J#Od#w=JW~(%n&7R-$g>H1_OH1NXm`Pff zYmXW<1M44JNt)fe=Gv>H0UlfrO=v!hYS)g!nb2YYuIBd=+%vd#YT{KUx7JKvL6B_I z#!WeAh{ILNNTsRx1l{OyHQbtZBRq_D%Ig-}yx)PorEt*?U{r5;c}x2C2rLM$M%dQ1 zI4IhFJw*H;pkw=Q+SbuG@)}-qhM$SdpItYGe;fW8TmKyupX~m}(K`_uMi|xq^z-a{ zCx!kaO+>_?Te!PI8|qAdBg7;=sgfUf{JZCqSD>5F)1?hX7?v{zsdlQ==GxM&2ghMa z?ynw!S0JPM87yodyjr<}sL5vl$JD;oSCuZ#f??~`+z9zxbIhla&%V{SPv`tofL859 z>wg-||49hOwzjC+*6+`1{rikA&J5+7oU`Dgk1$T=R!`Zl{Bs>nxA%K;RE@fL_Gc1Q zwfn!rp~KI{?@k>Rcf?0t#^C=8_&;5&axU}wnmcUPcR zmU{ii;lB@pKT%7c;Q82A$@e9wwfLfxhMhClIpWKMA-CtZ~>IL^ta< z-gpBa$HORC67v>i3XnzygINX-Bl@Dg48qMm4pocQ41hqR`6{JP7fGNZt{QkJ%{nm+ z7l6Q&q2M9HeAYl%k+9?Dej5#Z+pVi(iu>RF=5NGA;Z(E)G>hw>hnXAD+_vnNOG44) zDU%}|dl>{P5nxQZ!d&+-Vm&9pSl+^*K3^ZzoERi@l?LAUFwE7I^I&rsnsySjjvzly zYD`4#T$)7`elzP@hqrvnPtb16t~H7Nu2H*N@`x0O<_BI5;qk~wbx>~(C+X}iJKG<= z5Jy958-fxHV*{<3mC04T)V=V9Zyx~P$>{j2L6{7?oNTd{Zxu!KA^Z-Fm^*)iG!<(& z%^3W#_7|5NeEg4%zmfA#_XwI#QG)hW8PzbB#iwc)-*eZUy`MbyJf^?Vq~kC#Vo^E3 z{LgwY2a~Uu^ln-d5~mcfQEK*XrKvcK+zW9kW`2k#{?iqN(q=IMO1{lZou(`$Pen+E zX)lv`3&g2%)zFJ&3Gt+iSxvfb#FVL~OC`vQD{fj=+7k=Wx;P$ssF?5$LTNeC(1k4+8-rH<|_Mn0H3K}LSp$)NV)9t~RZaicdEW~V|b-zu< zH-{@Nawq^L17Pd6EfBhf{GU)CF__Hn?K@tL@YTi*8>3C)y7uCWFZJeQVq6?~`=*U( zUz~{M!>*KLG6Gp!Sy2$=J}Pgqk2H zVgY31rcJ;-DQ*7pOE0qiU7F?aR(+?^9$uF5aPY5;ipL)NP6V~|QGEoazr&DW{VRN* zY~5RS?^KYNU~kHvEt5dI>u}+lY;64*TmQz^zYn+m$*BGU=AtBMYduIUX6OHortQEw za33xpcCs$W+^ox4I%@yLySQ-9TwOpQz9^UhyZ-HZV;AW*mj*YLx%pwrZpV5Z%N3R<)TTy&6}pl*Nem^f&l*A5R7OxqA=Z^Ro1A}MStq(hhVLwKISld$ zpI#oke$Ca_?PKn}m)`6o>HPFdp8MF=_Zx5E4=_c$2zB$z zmSSxW`pX3HinRSZbqfb=|Ni^G)(Nk=V|2G_9R^RWKJM-2&gD!1o<9|)s%MN^KSnVy zSQm08fLCxbw2dcGYI`RdlCFI3PydauEt-VFFB8C>AXOD9MHx+hXyqGS;!n2yt-%NP zzx!rgX&76kkoQm1{Cg9P_b0Hz=Q^%1wEZqG$#G)+TesDor~UGwf3;W@FzCa?{y#k9cWGqKa6S>Pr2TL&RI%N zZ}LT4(T$)skcjh9&VL2{9@msN<5y*_BM|b`B2Lb{2Y@fVxW;?O*zRjos~psDXR5;6 z2hab5!Pk<}nb2|+e2nRD1xn43>*J_@gFhKJa<9M>c0VorSkq&_FYQOhzKrX3_OBkU zGWy%z>t4TMR96%OxLl>|-1oWM+{@6IL!*Qs1*2MGh$fokJ9`+pSJU6mQYfWnk&-H( zq_bH>o`i_AJH#1Fq*k0D-Grw|&@c9}+g7t$M)F0P#^d{X2uyCGUEqXYgbfHPltazA z%kT+mhhK-^hFK8Yr*PQXym@QyQW@3cxqRhv2=!<{c)+R*K$2*%aY(Sxx5Ai~VJowJ z3x@;qG2T@iE@qv00um4&0^Ep5&?=MSN}1ibWNFgr7kev=^~)|_MCXw1$}50(QtwzK zVKv>V32^Ik9vasYgQAgvW}e!NmgB+;&(C3I`AwAbN4AW=>&7YT$_=hO!MD_Br6wu<1@4mZHD)CJY4#N}7U=6bNA@m-#0F?QfQO zO@2O`iS6zq-vjIL;G18UX)@}%!Cd)Ygsaixub`T)VtKE0)^!a2;q?Dl`)BlI2s)5I z>*G&Te`n*@XOceYTvTLKgX8ocaaVj)>$>6o5sS)T{@IL!1y+1;#@x9PNRm2V;5C#OA+lOSIm;yy?pj zh;~5aDghxiN7Tqr(^|&yCK$+J^unBd@ue5AaG?e?jOxxmiE(A5$Y|IK1N}G{)f2(v z10PwIj;ir93*XaA(V93O2C{33j1ql@TK|n3(3In_<_5=ho{VdWEil>_qDkobvJ{58 z{^VSj+zh<<;)~Jz-gNuzA+$|p-H_cNqk6B5Y8m5{Uk!5wt7I;}1Y=wxnR8+F>RS^2 zVes!;96BERj%IBz;{*drM)g_*v6PAytIJ?<{h>hh;~kj3H#37H)*lX}s@J;GoRC7%^TrlVKQGGW=1T7=oe;hSSG5e}kG?I^|zZ=UMBLtR+=l-+#Q-U3v{l6BEGT+(Xd--hM?)Tk) ztA%Eq>%xXDnSwqJ8g$M+Rf7Y%o?Kk(I z;_ZuJ@XGwqjH`Z6l?WF9TEDIM1=Te81pHpF!=;0QKX2m$>gCO7>v8^=K-t!!O*czH zAl&STOBIk(Ywe;-E=nFZ-E>m~w2nL)*AawkzSZ_zvqpRgbAvOKn$~L3S?ATUbb&w> zYlypY$Gr8|?5zpa5SQuf<@#{xqJ{D}DF1a?-=@O|68^d8e<|k%WDrf)B{!TyBrM0_1{&#XIRC7kBK^LJ__Q8AiA^haof;Ht{7!uFQ zsJ=&^q-s>_qZ+Fkn0nPMTo|>qr!=5I$Pys-6Hhp2v08)%a~RD`+nd?*i+fk1;Vg6e zeB9a0nsq$?iwLNtyDi%`$IZb67|)BZyFMlf=Uq_N^qLjEU=Hw)@I4FdV9&3BtZsR1 z2o(&rLL1U2=mfM5b>B97c3D@FfqfxXFr>?<;jNI60;w+}TzdJU%gM9XYr>#aFY*J| zT91WT$rGDee$OQOofa+GUakcSWhoTvWjn22jc-F}L{n5^pj^#0Q&|g410_H67oAFf z@-E%UeskS)|Ns5(eLpx`;jwAcrjoB#Lewl5dR_K^yIN@B%>n*TVSf(Bf9g55{?u~V zb^2KUx6wanme0cY*Z1q$Fsh>&7b|mnvj=r8xZ@5O)z3fAnE=f=X#GX2VWea;6)YP3 zV~aU{#A9>Mn1l5smD;qh!FnKW=c8u=Y0=L=|7`AY6Z%)0{w^y^GN9V^e)vZd!12vW zWEs_Aa5I-Pol^)tc=yNq*#0l=|4HqCU4I^b{E5)4{^BqH66KX+dv|d*JniIDbN;h% z_ILZW=h_wiL+DANE@jxszOXLoVp5g~WrdyzH?VKOn3g&!p?sE-wv$g z>N(Z%r%?Uh{0$aqICI|%9@HXDgx=YoIc7(nKT9xU$VW9+$Ks<}A^EhlBb6%%s~+<@ zcucH>F-BGHdi*hHuJ8_r;m={;eb$iaZ}Df1e^NT${qau4YaKJp@&D1n*Yvl-m2urh zo%B)d8AA7;-W7O?a+;uXrEvSzzkP*bl{B0lU=UZt31D3pIB&6aMG5rS0hyZDHEk#J4Z>W@eX zVHwq$DAd1@KCHJesOIUrlyWP*sx+<|(=WZe1rw}lRzNU<&?P*jhTQ;22#a4L7!yva zt6`jLa@=-qgWC3s<}+n#^5-FdDqfI7eK6%1{D#cB_Bz!5A8Y@y z@i#pGLYRUwqxcNK#|-=s~Wx?_BU*CkFV zH5mp48n->@D$i}nEP$YwN=Z&(cRiZx*# zmMxB(K0QJ`kaT)VhN*d`1X+jnv6GSVSJ+4QZmep+E_19k? zKXNjcoqsZHESKobHk-=2pb2nsv73&0nxv&p(UfBinSy4Z_)mhF(x=Vb;jQ?94x=5S zqU+7#YcXw3y7|;kO%Qzmxqc`>Rpq}ChIv_5?X0}qN{uS5`3M86DtuP)pB*CI@)gb=LaoN<#RW zv6WFS115q+hq3<_|3AT@S)l-#P@4YMwZ@5~@PBAUtbf5nmePV!NAZu^mU*|a$MCwjNx6IGd>S@Gb(P zGO)`{1+*!{JGT$EktV~l1|T%$&P}Tpx?gw~%X*@~qD5h?17!={R~V=-?{#a}WesU4 zKwKft-fJTM+eZFHafENWt#Cb8g6Tc$hp?GS3*Ypy5p`+c$Kw4hC_#U z8qN?`);Scs6jag)ufnK4We!RV(3%t$^->tN7}Y4Xan_iDVC5r^D7<f;d7tw9fcJp1$?#U z(#{_lM<0NHb4IkEIY%5a{iEyqe*cpR%cM(Z2FDouG&*yJ=E!5sALmi7A^i7ox4*dN z9o*%X1%(8rlDb89Q-XBUI`n z%Qyjwyg9A!XeD$S^witds8KDWy70;{{(1Aw-O;F4@KCpBagW8BUtZsbp}#2{{y4(n z@<@l_yYJRYs&#(q>1V=gP5rGA1^cM*-v_~$4z6WS_tL`GD(ijJ`&rHq)?cekVN~<2 z-%izVMCZW?>6I{Iz<{tnx~s+PzPEVo^Uz(w!s%x~kWxzOR5YqzZ5nwK!syTr`?Jq+ zuwfId--(AGeKei&)RT1>ar5lq!2^$rh5muEXb@I+q*rAiEV&_-RZ3PfQ7O1T9b%GU zyMsg3dI(e=G#0}cIG#g`X0%_V6EDTIw-wiKkpv=rZ|Kj+!;TE+GP|@7-*WghLJMQ} zJ9{|nZ0X&EriKiI3n4JgMC#YFYF5|Z@c_A0I|_Gx5}fg)Cx7)wGQrZO7(Y*YTQrdhD?$!tl`a z;t>$P^o!(VNfg>OL?iO435{G59~>WkcceEB-t>`WB>Yg}w|x52EoA9sUP6&IUhoHt zXTXk#m0W6!jKLpk|FQA+q3553sk2~E#3x-A6|7BwhxJK!$DMceHQ!_~$X*nZmP z#reyB@bH{DYSKN5CfzB~$cW$)b2OTHtOH?G--GGz8Pj`@KKe*Druq|lTk}rzWAMNb zvrXI**9m-VjM{||o1FGqq>vEq`tb_*^Cq+^#OYu9;yDQm!vaFkb=P!)Jurhq6p~>8 z9#gY88o%I58Nl-uhyq|X8xWy(A)yB{LTf=yW;OUU#j2UXmA#W87RgxFXSAkM0T`dr z3M{$4$Y?OW1zih%m7y;CCG`Wb?!_eFYuk5(@iCeFC$bh!;b6FxO^o>8wQV_!12y0L zE}2P2y=G=oe@YT!81S@6vW0bSetfP%>|(Pti*-jvi7=LrXI_t}8NL-1KMc5H~65 z(_#EC!LHh+AdKPv!8&-T?LW5uI;I@O@4x>!(D)l3*=^jn`)8&7b#rhQ=AvZQZi6td zbqD96cs~M0YQHhBWn8-_u4^RzH_Y~*0REmc=X3;ESqEZSV_O7(Wc14DzWZ*?KVdeI z!`*Zl)gek@_O)9FBG5xl3h#&+hWDRBl&~SAI+iuS9XG?II0?;W`(MjMG9zS6FJFO% zHRZWXW(2UcG$9_|xpNo${ug0XFUohd*u;A>>2)o!fbuV;vyoMtnxAX{|p|;ZH$ONM^-6*8_0j>RS*n0{?oD^ZXIbZem8d znsNY;{4g=T0F7z(|I0cJY}abnSW6SLw=g&C2^rEdp0&Irp7;D=AKeP0cs7jcqmDc> zmPEdI&N&HJ8&4nEp5Gz}jKwO~8_z$sgVvf3cl-zcBLHjrE7+j_t=rZf1pnKbIY*>= z)V$6Yu9XdLyMI>ZUt3vQz1w}P{)JO)2j^Cem1>pY{m0n)M?29h|Jd~}>i~ZLJP&N` zh)m|$ciF%?;QmfL9?Kfe<@8K$fp17Ls!NICbZA2|eHHQ%=QJgT=OI|hpoq!Ohha>B z6Q6$SDKtgEo1Jwf@vnG6yve`d4UwK&8sh3JuDUvam)~?V4C7gO-uyCFhrnsJhgO#? zk5-h#YvoSoq~5MwJA*?PF2vd%5mv2Sk+X!tKAtnA|7^i}#+N(mL^8IG`1U)y!+h?$ z(c!!9a(2J*X75F;YN#2lVC}644=Eh$`A4OP2$xciSnZ3JH>)e}(yM~A6*?mS_3>?u z)j*Uibl;%mJKOH}fA9C80b%-^vd)|_Gr~yj@ux$Vl8)w@YkfWcgcu3jymPnyo)M}Y zVN}z8VN@er^u6zWFYpyEQn>V1){^YmNhDS_ZJM3Cz{lp_pjF23&*1zwhJTqSnKM5> z=a0!SUd}pGw{R#iKz|NyVgIQcx4Z5t)8F^qkLhn1&5btH#}y)L@pgB$^&rBltOu`z zSD^5bLQt=VaS?Yw_ui8;!CxWdI*aw-83dQ!LUXZldVl<*0-Cfe>C;a=^&|pMtRp1M z*zC$I97#@&HsPg{D0@|cY4n}^W&Up{>8ue=h2L9{V=!> z)}L^xx^siQ;X?O;{12i@J8SeOlR4=6{qF#zI|uOE3fJyq@Vh3W4Q(jaKLflz;r5?` z!1?F@>3<&qa_OJjun77`U%eyv$@8rErT1F+$rH^F0?{`Sl-qxMMlTdRp5C8};`)$mTcr@S_G zHFy`RLe(ID4AbM%7VdNZhMz=#yLqwqdS z(~kvbjqhtWM3auZ*L0hNJrISW_0X9PU)d4tCm=~IolFLSjDd5{#Y8KB*RER=3l!oy zO^II|&25NXov+ZzGA3Ae6mYVEw8(MN$w-Pql(M~CuXGWybm_9-|Ld;1wx__7S`?{Q3~zg)Fi39{eJ-b>$>vT|Igl=Kkao~_ni*_Vh1U1 z0L2Y>8N13-Dk8!BF!>9d`C&3+XY5o(Bma`AvSnMAWks^JlHx9j;wnp1$=IH$c*1>^ zw^(J1ODvMIG%^=ejh&3ADh2_P07(E`u!G=yKHt;*JkJZfSP7BlF#j`$goj<#=jg%UUtRnD z#eYNl9Vq*v73`su%uX5ArAf!3)N5Ny+X1{SquN8NxSW|9TQ$fC@M8YCmY$g@7Z9s; z3B-Z_8<hvFVe>DTE@*0K-Dq=3;XlOo!5&S9?E_}^g-J>Z){K3YmDJl?d| zpaTjlDTwsB&woDYWni1rXFd%hmZZ1dQkFGjn1^vJeg*;QYgz$T@sEsK&8*4{zwFDG z!~9qo|D(<$C890EJ;}Uzr^HH;6H;#8`;|eCOWcRjf1J>Ddr8K!4X~;2P~Agj-$9KaCq8&xV47Tpxn}EWdD4trs1l zyZ4lJrQi81Rxx0n+^HZNpoxg?9 zs@DEY^CH5hS72R97jVD%Tc3n+az@Nb+T6f}Gny-}!nzX7-!lE(tP{EBM`+bN6n>K7 zyNG?2Yxd9lHbO^+Uys!#!lgmtMd_V5^UKg0fqC6^Ukx18DtifY>DOF)Ro4H%@f)9r z6_3SO;n0PTdld7yjI*tkC|8WH27i?|JR>RG3W%Ulw!h%&+1ftn*^beVex#3Te1t-a zH5-1DR;mzIDl}00FX3<9a`!gJ`hWlOeQzo9&{6F;ULufhvIejgm;}8nGw?g#hVlhQ z!C`>^F#g`5`L_fsOP8#zv!QYehwy0d_e6=|9`J_ve6nU_fChPtM{FJxu$-BhK`6C& z1?5)4d9Ow_dkpBnv+Fn;V(nNO)$j^n_&og#XF~`sjdMH1_>ZabOJLBDsXT@;gPSx1 z{wXX9a3)s=%Dc4wl{WsPpZY1zrxr#lR{GQkPt~#Gf5($_&F>B`$WmG0BPjH4(xgN% zo}c)iCm%?Y0B+-p{F8N$*=XlD;!r*S?6mpBgTJ`Qv(^pIZ5Vy@qaPjp116=TP{l&c zuB-mes%PrG#)Pf$$^Lf?mB7Pz#PFq_W$0E+qgAG+$@pt!xW?MX9^XB^7IWmKd5v@9 z!KCpi?HMU&t_uGzTe=)&9?l9-ifRL~?p5(hbcprOj#x2c&rN<^(9rT{E`m|b8s74? zQnwR6XohlXHTBa2k8%DVu6$iabjukQ6@etqe%2%GYWvG&gzLL@jR7|O-UAhos1xEI zeSA-p9&dJN-rS7L%+zM&0{l+Aq;ESIydJu!k(bQ~jA{=ql>B^{11Tl{HRqvy^?qO> z5ep;%7(<4Tu8K#H6-Cjh}bq|{qr8(48u!A+PbT$m!tFO6cv6j&S6kqg9+KQ*<5Ir$&FPu zX7tx7Nb}0vxrTOlcOw|>Wti-0Y+sIFCH*e-2@{oiE7U;NA(y+s4ae9{hlBT++kjDB z4&a?EWunhTff<=Lmyt=~JhfMRt;LAXZeS8n0BHrcTUCeebCqwdUIqVT(gF%;OqUQ$tlZpTOUdNvRDVCpYs zI-GAc3EP~VJ^wmA$Yx}9V^DzK)G*NJbqOxjW<<*v#*2??=z)IeYF1X(MH7O78m_34 zJyiKEHIBLZqCgzwc-{k3yfZ2!DIU~&C?p;g|0#gvcQxtkdeg7sa7?CzmOHNd>b20X zH%1@-_^-l1!BqqJUrhxi!-UNZH{3)nnATQc2>gB8siy`{e+KOh;r693e>sO;;`S|D zHjl0VUz^`2e*M=G)FMAL_8f6)WxRx>nc5nf{<}ic;AiOzwaf&@93g#h!;LT?(7p(h zr{OwXKz#o5UrhZqajwtoy;uO*ga)9RcS^5){8xXKLoNJb)2C`%xR|rN8xfciQlG-K z`PtB~49}B z{8Q@yA!BH}jochk>7|9bY*$&ZDJvV^7PkvKCT>;RJM3GW_wxRZ-Q1>AFVdU zOg3Mw&!=DzYdzuym?m1>ScGK_;rQ%7`~&4}3`1Fb|8?rOl6`=TYB!mhFh{oze5p2@ zzNU+T{7GC&DCG6;{ymIp+9zXS?_PwQVEil4q)Bl17Yg9YV7BkNShSRQSzKK7Z*IE1JFdFHR;8BlL6LNcrP?Mq@9JmCMpRM;Jg{_+`M4fN0P zm!T*;e10E}KM(thQLVrdbO0RX{P#R(+OmfGfkT}?h+EdI=4|LuXu$dG1rYQvC594K zx>K5>&}tYHxB+^oS=*Dr0G`bh7ykSU{-HB+^1#u9=O5;!kf>HIjH6JbYgYw%USuu& zb*wAxrS2ccii92ct#AKtVJv?It972;M7Ri?{7Kv-NUy&AEg02UnUJSD352Rv;r2pix)w-c z`-A=pBb@rW@)l*zQ={5pZ5W7gFLcSXpdbDa)8CY@5W+Hq6!fhv4G<cvcmQ2LCWbYSo*1E>uu`_RYw zZCvMue<$B2PwDiYHrdp-Udn8oZnphP3UR;^mV_BVlbp?TC_nvhg1~v+(g!7=>HOt4~}Zp64X z(+?!*>f$}v#rDh^rKHfHyWo5d!}U8+2U1;gLVM&^PU7Qc+j8n@r{XJ=XAaD) zubU=Y>_R|h#THCFc_6k6(->Zw23H&J%(G!WaF72Y!n>4gI$78?{Fy`r%1p8vr34Vc z!Sy(kWh2tWnjcuUY z!l;I*DEw38d^{^B5A=gpD~cZAn-ud-o6$V*K*Txw>T7CL-;FB>H#ca~VUgnDhf9<0 zNf;Enkoq!z$8^X4q7*Ngtzzs23pL%n2~Fu=OSnF!-OPwLLDa!@`rQ1tGBBVI-}uJ$ z95QiO1kNOR4h~*;;W;#*(XN2v-3VjA^lwnEKJjGED#`_vQFgn<@+n*2MbcRKUhdGp%>ujb#nYHQj?IomPhWw?yba&RNHfH`a~P0bM(s zkHFH)YE+Y-cs-VuWKx(Pu4m3T(6Hl9fA4c6%jv&zi<{oniF@y9f8^c%nSi3sMz=QMOc{OkHxbFi-8lOE=QcwUX_ z&tO@@rEgp-knbJ^TSXF(gUzhvug9dgjs4=6zJTEC%B<_d@FhR%9#iDd0rw#?O)kIe z@-VWuZrvJu|GVEpgB!t6_X3*A)}n>7!q?(QH4J15mwBMTlGlymdE(Dw?;Wl&(0YIU`mcvc zAv3+N{Zj#d4ugNQulRwCYNf^5S0DiUP4++gyLr{Pp^OaVZUc5`j=CP)5}ApyY7*>ydiiyjB4=k z_!7L%-F7*bFPg!s1~i};)zSdxK6xRudbjQ$*0Z-js6{60BhUaD&E@_94G?gGSI0v+ zMrQ5my4`R7(@N04RcMt=)u?vuYP?uiLNP!sz<&=7FwG}^_?3&DAf`y2O5GRS`o;Zy4nD;=!SWstuBj{Wp+flF!Q zH_1=UWZgfwX4k!(A8xoo6XR7+HG*UY*^b|I&CkDY;-mT$*7F{Cx_5FfAY%XsS$E6CvZ(Jz8PP_p}z|Y*19t@7jfqEz0rlMS7#j^MKq#mog*e;6xaibOO~;Rxp*x(zL|8pU~r$z@E^m{2VnSK!@rIRc^giYsi87{ zo~!*)l5=ff0{=VCd@yVd{OkEwDWw{*t^X)5=}gb%m-aa8IUoBEk%a$HK0rRf;IBZU zYqGsqTC4F;otkd8W9M4`+v!}6ysn7Z0w#GRp#8M|KNSDT^J#Hc+^i6P|MC@_(LJJP z7xy3-xDqiA4`}oU4tJ`$(wrl_S@A~cW$JujpW|2KN0`xZ6}JH7rtp5@D54NsW0w&lNyfYV)`C9UV|hxW&fT-NgT!(lGr$-;jE z8lOy+dj&`KpoQ11!ewZz!PKjp5&aOkaCU(#9RQ9P`jOwEgfJ8zA#q#NyvWAT`)r z{41gBVaP%m4>Zm+9+r5JWG4Db*hdCokdUu+vz!&=Yd(9>*rtNfp0FSp#YRv|!@=O@ zPLN4ZpMS0xA-v|GtE5wX(;tzCZ2B7Ale!n9x{$R5br1EhE0l&+veyGL^N$HyANaFg zZXS6gUP;NC*7sZm6ds9bWUuzon ze@raq_Y#<-7vs;Oq-M2t!OuFa3_^9*HV|xB&A`{TdcOK8g^!KA^ z(rIC%F(|;H#qhx7D+~%ZBQhw8QQa66ZYpGGQbN}T=mbGG2QCnFxv=TQ7tt>GQs)2F zS6veZL>SfLA^xjTcg?leC7;iK?(;e1v289${H|HQE3dvPmHsl8GFGC!kPC1q1SG@x zYAjw@&H@gmtdaPCoF%N>iYcWzmPnyx$c@U5Y%onzb|6BL#+tQ)MCfg z*Ib>uX1K+F9yG1QWVeh7werNt(kTzYgxQr>TnWzIH~O8={SNeU6?EvdXm;=7&}*ah zzv3%`33Gv$rTvyGeH8vLrG3|s&x=LRh^VlZE+_QqYM;rFu+u*Oh0h1MUwhqk=|dSR zYG^yg^GH+e1rJkTFN zQ7{io8gRS`o@w|SFwoy&{h@z1wI^INZ${wM&7bqH*73!lxEBElw5sVp+p|!RFG;6R#`4sy1Dx180Uw!M=d?=TjU?DX=6i^slc!Eg<+ifezwP z7{8x}Ng+;;FJ|@?xpe~ zWe@2}EOh{n1u&!3_S1i=lwG!Vr$SmCM}M}1U>i9^4*w;Oj|`c+zN zkU#D&xn%&+%LG+`cOx5R5?-JE_0zEaAJ+ejBF0FDkAuR2HPC+nkv~Dwfg_9rPu~69 z0;cKzQr4hr*RGAFhM0TR%^DHAWepFR?q&U6jOr@mK=?CXLA()Kl~Jwx2iCP}(0T6C zO@9}o`Yx0h&cgIJLaX4UFecm!coxC@7e`utG=;5y!zDa&K({g0fh@nf@zJ8iKFaot zq-enBK-}|2H{CdGT?rb1@TLcbzk@K4bm=DCpNV_lfCeaBq-L{p?&H6PbtQ1GW=f6c zUPAh)J2x?xRynkw^Z}F_TdxhmF0&IE-pV^;LC<D;Lr#U_`y# ze{Dio=+|JR+hyN^Q7!BgDq=w#WrtN*Rnlsb_|mn$yAo2f7kF{>Ijlo@cJ(z)hJ$Nk zWf1x+ti=su;ot0`T<+I=k-in9T8-*Wv6`}U35;qO{&Cl12?PGkTp8#OV}Y^BkZ_1{ z^Vj=8f8WdWcga$$?P+BR;TQ!pb-CkS-8H-#)e0?X5#wN{zcWbMPw2snN^Q-`5<*Zi zswGJJc-3lC+yNovs2k6?2}M9iR}ed}ws$1sPsaLM&a&Qw#>6@kdx>0(TQ6^iqkp}e z8t9C3$2)A!AAF3o{`>+AS8m0K~BuALNJZc z9vc71_&`N1T?A@^kF^ib-eN4;mY?c>1CCdS&MqPXNcQ3 z_7JvTWw;V>vS#htzx@PfwJRtfwthau)l(CtKbmk#gU-!J_emOJMkTD&x@YB{!=e~j(jJhUTzYb-jdloETSBx40gv1Aq)%{B+1(xSmAIb7>#8hmgCCH4bgh653)L8KHz>F4z(QRF}y$%DOe~a0?sLi(w!fSigBzJ>B z)l%Mk(%ZZkv^C>)`Dp%LZs;O?Y?>*NiO#6rsQCfhC5n z#Sw1as8?6Rs>q7dpAS-g`+V4&

      )GsV()M_uj~%`~m*M_&fIb$F%Yw-Gh=3VSY!P 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%0AoZG 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

      %_ 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


      y`-ROZx(#FeP>M@F(QeIoS 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

      `<<6rCr5WILOs4gw_O894V&y6XS$^`5S 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

      K;oG-*b={SRBD_QZ1a^9>#AYpBQ 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±yuFDFUcOEBG!pEr*L! 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%0D~8#isV1=W(r|2<(Y2e93m{_ zuJ9-b6&~!SQrObRgPjagDn6Xd-OqTi{<3vUE}m}gNs5i1O8&bVSGo$`EUM?<>B)mf zOWS@ayW8lw9McRvmGD13;}26Uk!*!o97}%#{YxH>zYXVo{58a9=_ARQ(9GfA7ccG^ zzS~!C*|iM3YB9&87MYB49+*uU2Ujk!3n(Ov|MkzfshDm2>G&}E<7LZh8uDH&G~W>Iybsb zG2~MUkR?yj8s@J;ZC~tvE^^)tT;}IdP*nYmsRG+^;L&aEJUZP3a$fv(TGCBD*9Zkg z+XbuJT+`%?YIecyilVxXfXG?GRD3D_Pa#MpT|_AL0OylpO}7_Cbv8gb4xp%Z{E1MC z4XhVkgpvZcue!_9&7X_V)GUa#Ue>bZyrlk}{;dCM+<$3NEpncABkUnvDT0eiUN{mr zmXF`Uo;e%RBDJUG;2SgX7W3ai186&a^FL7Co1XU1#tyoY3N{rpb(VH1f|a`-K8(Ve zc)G0A>NNe2@rS)4v_BE}U!8?^<~^;QVEay(M820&sA$BF9c7J4P0-?3!T9ApLkzi@ zLORPv3La|wS-}59<39~f8@Bd8eCTjCZ64{ESoz~j$iWG&&G{-&8zZ>AJ5vw3hn?KPh-vT(&X;D@4_M)cdyr9 z$GGvi^h@Ez;+wlJ&6BmH&c7pU$k4iD`*zN#X55KIwP#f0`g_w9w}IDO8yB{5+t)TM zy`~j(j)2&a^?+7zvkgnu-phJ$@#^NU=>|3{ZE4>2@T$?zsMbq|o1}KIwy3qh#o5$! zDV8Pj?l(MIVhR7RjKvR?@CJ;NxlF=rK@d0?=Ps`^%e*T`45VD6#{m z=D(qI!}*syPXqo>rv9g+{TJ}7ZBK;$7WlUp*deMX^1{XQ2jD*^Lw^O8HH3<0%HWX+ zf)5|?V~RFgL&RGiin808)1Qmt=7yVYU@TZ4PYl96lg)i*;G9POr_93|GDt8MyosW^ z&e&Cv;8>!*Tq}hV-_lJ97B41@tmwnT+s!=aT0jTo=tp+rkmjUw&>zOtbQkRfH`5}QtE$Apsqd*I*WUatP?wW;5e zPb2GL!&Am;poGsm9$OZE+bl5fhjJS)A;K{xf8c(0y*K=%7NBXz@((gtzy~M4rucV5 z`a@eEE{_Iyo$)xU2iRyKy-P)2or-)fDx42Vr14J@@-s(&M5qiPF(`QWmdMFDStL$H zT=JzQuWtoz{9GYJ9!JqXUt08!68@WbT~n58{gv&mS%XJLt~c4Z{M3{13+A@t{wJT& zl3MRF7XL*1zZ*j@;&?*k>UGWcf8jh7OZw*eTfXU;)5vbd@J(y~KX`x*4WSdysGjjz zH|h6Fst9j70seC=_->H6`r50>Xa%x$jI;VY_Z0WP6TU&^}EzYQK^$C~O_fJlbO9e%u_?;8T_pF4!aBVlkp( z!rcaS7F}0VE0B6CB4YDTjvm4b!mdJXu3?PD(+A8kknLy=EqGWZ(BbX=yXdQ@te z!@DYO7(m=fYBZFZ-1YM zJQwh*$qHe?j6c08=5RIif2iVPfPbg45=f^*8kllB?~_8{k5N=3{L$i)YXu9DZ~{K6 z;C<&EEGl_+e&{{ctQQDW*iAkwQA~5og2DN<6L=R{S}m(EP)PKm zZud~&YEkVj+p>%+tk-X{N;<0vFuIo&w5-&_Iy$N6e*{20pVbr;>5qJWhw>cc4Cw8T z;QCv|xaTBwi|P%v3wPz}Is&4ENV?@isX#m}3O6$jXg!f{mSJfB_DGQMEr*Kl2OrS0 zh8vb}{mo)gMc}J=>Tvwg8bj-koJSX-)Or?~PfXrm5!&(JiSAhS@9?d^XZFSQH${m1 zFBIOzt19(-@gIs@c$8M!`XCL~0C)IO!F%yPvq?I$%cD6j;DZFvV*fai^%rr2Ja8wW zbBkp&c^pCzk^b70E-TL>KQ<%ic9KDd{(V*iq7f`WgBefkCxKtBm(1xi)iQqLS%8E^ znFIe1{gK9bRm#9~zf5U=2scyx98~wC(p%x zcq?aAGj7~<_ucUEH51R6_6UViLQ*s~{+U5-V6EW@6=(8~72fu3&65WkSF!H6{<`ZX z8^3_tz^hSIV^Lk6Fc9uhx7x6D2g-@(VtAlcU7cB4{ULqUQnmt@MRlzOKF=7?kCSlB z^cWz=lpS3*)QuPr@ICnqUNulKBp)lx)oyvJo(m8=UZbTGmH(_>eGUS=+RUV}M9$cT zPo&7SV<5SN;yGO76vIC;{wFO_Cd%d2@3w)(X`yY7ZU3^Y)}eh(JVM}+sYiQP0dMNQ zaYA0@bI@pQ;iJ}nG5!_)gXoX2{TJ{<>s)MxNP&8e^ z()x+aKRzDqZ@;%j&YP`Nowd%RRZfUMwP7WS<|sg#>uxq3-Ebpbnb`Q_22tZjHbg#f z|KLo1;QH6Ge!0Tza!* z_1^6tMKv3dyq+YTI)=iQ#X7qEJ&Gxw{J2X;p{Zg0-w8?V&92UA4Vj<+RjU-m@yx@S zY??g(0?!s-F>!<25qNCpug05`KM3D4F4i9zw?an^^|Kau@AkJ%I{l4Xqk@la|5Js3 zz1z5HP}lqFx-N7+1O2L~o?TU<*?XtVR^(n+`gHNQam*ff^ex#{p2MR_B%@`oiaY*f zh*y%dmy^-|$$w0p-?_|^?UJ90I}V&n(q2vkem|pH_$sR1q;657sBUL67qseA!d$NZ zf6(@S16j&L54B_4nk+@W8QD!>&ci>TcKn5QEbCUi4Sn#J)H=DX4 zQ$=;1QT<`ozr$Cjun(O=JSkB(z4P6H$BZ2DKtJ)!>hfX=vQD7=8RPpXU-3KP&J#^F zy)k-saY3Z^-t&dx`n$V&g)ytxP!Oi8*E_MuyLjzd&MRW@i93%vD>PlCXDc;v4X->5 z@Ds=n`8pwqqjC$$dj^*wl@Z%TBPE$ph<66*`d4ck;e=f@k$R%hE8z?Ht)+vbAZ>yF z1^q4hAG}4@^HKAk2&7nOL|{ajW-gVPcxU=yA!|bXrWP0|L~=H%3Xu$wH)b;BpysaG zeR#xpn}v;v>bQ5h-7~6n)s3PW#dWtb==?vK=ckyc6Y{C^gKja53_<)(y27shr4^hf~3SJ-6tqSPIJjpNJ=qf|K@Z{9mDt*PJlu6u}qH zr)T^L8tE1_)pija6#MS@>%iNtG5$lUEj%%d=l{7$I{_`9VY`Hx5Vz+wjPQZuH!?i| z{3|@I{!&RYr&z%M#NmHzHDud&`dh&U9_gA zDw&&#;n1cE2Y`Amw&5%LS=tDG-Z+4wdK=aZFXBFmjh$z6M)i&E%4MFMBPrnPDU<>X z2sQPv%%ie)`cI(YDA6qVUEmqjZeVryIi5A} z$Yg!HP%3$k@o)Ca)IXI2uhvm(x$gQq7S#x;QYyZEdibw3Zr3Mt{UaIWJVn~oO$#(T zO0(6_a;q1#=lSWb?#^HXh`jopBX2|V_ID}0Ddr#wKGj8@{I7nLThWYET(Xwgnl?1k z;tu^kfjy4nn7xZDKP_@zI>7q4fG-}nK0)|TS>?H0oX!mW$w#e#?d}b#;k-|Ij`N&i zGJFV)RJu-w6~-sxov8ew;0qo4b^ZhV92p_Kv+*e72)y}C`1tn69z*E$Le2|Sxp33X zc;ax}$OenH(Sm$DE8Xrh3uoMM9N6YKFjH=*=-$Bm-Sh2qr@wbU8;tbMLEZF-q_y62 zQ6}6S*t%jHIPgeeP26GhYXa#L+ z{X5Rf>k7kTV~~00s~k%H=4Eu#3BSU7N$R~ttGJ0{BGZLKHc%<_2f}}c`hMyUU<&)e z+J6B*P5i#-Z-M_0m;TaEq4|ESn-lXe!OYi zj_YqXuX^U_ST~R!axE80Ng6Lze zHCW33dOmefYSqnnsRZe1t-P6!*9D(hJNerG^0mntHV*ukU;Ltusv&&A|7gx2X+|SK zn7HAO&^#=~|Hqa8+y8XwoU@9Z�(olXeu6%>ehW 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

      x*74#utP)~rinNgB*fp!|!XXy+XGv5$Q$ z%o;Vyb!ASGv-y@eq#(|7O0`DVVhb!Bz-1{b*q&(>EEP9Oxi&{w;u=ZjsqSR=-Dlr0 zgAO|s{J>nQylJbrYLh|vG{UgQd*_{ZUM%R2KKj#%Cv#O)4!6JkKkrsG{XhisQdJML z)ibIUyj^j{S71C$>3!=PSX3jZE+yA4DmZFa+KHEp7lQ4dsgbu)mub4d_So)2@rHwj zM(k_ae+*^I<514+vE7Fv4hQ{PhVPi3|M2|YpZ)2d^%md?QtM3H+VL@C`|W#w_1Ayh z+hNA`gY~j~+}5>!hR84uUH{*UqP0w-UEhpFHOd>t2{Vjv6G*(NUVgs=6iLU1jGq#H*ceRSxC^MdXpRV3AYnZ6I|!`#oXQO%D??&F0O!In3NxgCLxB9%!z=-NVP- zYu3;zwJ;ALKzBcI>E)Nj!rE~3T@G4rpq&vv#CN&ky>m4Lx{KP}c4Ce+@@3 zximOfvTSMZk#x@So1OJALtL(M1Cu+5(P3Xr8B}(Bs$umb; zPlX8LFW1=hkNLNTasE>4Kfw;W{=VZb1o?W6pg`;5|7*PA8P(FJH@x8u@Z>fNA5VH}_bzyq z!Jsx|m^^bY?+>lk84{!u7b+gf_luw!ln=Z`SzwQZq0jCMR3O*}Q?}CD2nh`gO{c3C01dn zx>$>P6#hI{b|v${qYppYTlVBKjL)t`aK1V7)+wCZU6!HFCkM{npA04>T>hV4WHj>G z4`o~T5-Lr(-mHuR(RoJ zJ%Jn$e1GOMpGml0bZifmDi)?32SUClps=Nj<>IwEmz{pvsoBfUm@y;mzRNDV^d`~% zdic=0rtZ5{niYOqf32(kwSJ@}`-rULYSurq2K_(Tkkf0sTF)YNdu;ci42Ofpj=z6R z@D;q?30;uKt8#sF{jCyd&SZ8!&78e1`JdxmdM3R)2BmKCmNTj0MXNNKBf1Dnd%r~c zFJFNdF9gr_GmWq6IL-28u{QYf;BV9mlJVue47my)YQ{WTrq>F;-^Zf*t?)wV_mQ|h3B=2qBc!^?kpQ>k1V3F>AjJztqukESbhr`;l zXCJw-xt2-Ab0^{+giheXv(7Z?3dQ6%iXlZOTiH!M$;%Zcd1)Ua>8B_mKDFUW9gQa5 z2aCrl7aIaL5S|qqHzIOQj8`kx%84|-%Rq5MlnFbD8Ome`*ox1C_4iW%@#I3x*rmTJ3P=*oCBeHQQS18`sDtf9xzO7ha$yoh!qFIAG@f$!eE z)~tVpSG-iJ0@`na>g%XDsdsIDjT(Ht2K;-bo~0AFf@*kIL){J2wOCf_YFMp1wQ$?{ zAEI-@L~+{TDtI!dkvg=eb|>=C*U`^@TU*Ge1jBKX=}^u*2Dd{A+Shg;3t>1sSr4VH zcYfE1)CJ@=^pVGZP4EXb>mKYEjzV5yU*M3|PRKtjphoCja{r4%Tel`|Bj*?gtvA|!73#Nr=_Z@ZAQN2Zv zElOD|nq`s^e8k~LvRK+Sv`#vsfB+&A28rXL39A40D+;PNVG&o0r`J0ET)3LH7*dq8 zTVR(U#BxzG{>uo7)@-*KQR{D0;73s1?`M%NW9n&y)6c_fu|CVtnpL}0#?)87azz%# zD_E%d&1((R5+Y;X`Czaaftl~QG15)XCe>18{sIKmb1p*=Fa_om?wu4=M+*+^VDfl% z^uNktnL;@``d^_iN3`GqN4haIPTcizSJO-3&+{;Hk}{1bZ8sOMqQ6=(wvaBE=wg*n zG7NoB><)guB<4tT!u(pl?VEXw(BBH}^6gRzcO3pW{>S@YjmU0T{6ddEtyC?obkMn^ zn97XntQ(~_Fm3%O-GO+t^`~`nuG1Pxx?(1o6TI`UtsO%#1mHz{VYCDlPYMbRr5t{8 zJ}_PcalFeAkQsl=JYCE_3O!~X=q%}G&g%Dm1?~U!V2rD&u3I!OHx~*MWFlRn>+fYM zGg%L^PK@?55@LD#ef9;=_Z@KkEfZpx$>sdBV1efp4GXHLv&p<2D~Fn6YR%yIAA%D+ z7H)>aodmOl94gQFF#Ww}fjEfKfnNF%3_w1fErQN^*eEAx*6)ID{>N_uxX z+t1h*p}_^2|D2mmD@Q-|0+^fVSZ)(?GRzt4wf}(!Ae-gfxwANbka;ullTNs#^_k0k zi&k2e?z(F*rYJmG}i_6YbU zYhgf!x&h9S9#m2s$0D2$3Tpgk|F^#TAgC7pDW{wqrlSgf;$&l7@b)IWfF;f|FsByw zK65-m71Hjr_a|6KVKKhN6yn)#quamDxt7^{yJpQ@_mwgo6_8)?<*%>?+p_nqZVSyD&%mSBp%5j<)W@N+j+0Dj>8|* z{@~^1@Gp&X>?j1?59X%UGb*HrORZpKrYdCH;dR?1ki+fp23S^O0YwD7N$A-EnDj-@ zqV|kx$JDO7?o!M!fXn>${7DsBH$o_u@$6ni8W}|?O6UBeBKh2TC8!qOrU+$a-tO4PqMCF6oI7OZIcJIUC)f|DXzDz0 z8CHAF3)1wFtJS(f#CHj*ITkLwA@&01McJQ<3qS-N50x8n`5zu1Hys*!JIBIlG2@t6 zqyJM7>5tbiG|M-F_4<~EOQiZL4iqX!Pz?_6yYFtiIF&0_+uNSC0-W49cV6Os;QjAM znRm0^5B~9oIm1$`_u={16jUV&4C2=QAWZ3^^i^hOAQRED5hX>EHdntuVSsp6s1yfQ zpfvDk?@-R-)KkUjXPn;K9?NDu0GNYH!bZr!yB!nzUK^kNZFS zksd1ax;16;7MWWTgstOtMz+|owU~9J*jg^uGG8eugU{;nF>6CA1{yL zX!!Fz&xNkMm{aH_50$d@7XrwCm~sRh@r%w9KLM1n{&vt>|Lcl84nJtE@h8s4 z@&B{$e?V}}sS=B4n`$|@=N=!A64R}>-IgQh^h_YVyn*lXrY@R;k`u?uc{Z^gDjd6Z zcX_lDpo~ERCZgmg{V72;7NO9+h45-U214c4(-G{=nl&qeYWXM51+M#D+i6k#MR-FC zpf%1t@^+%UN_j_J)kzX0jZ$f_jtRx}_maiT2hxC=TU55HJwdttmRH;qm#m+c^>``z zzcF4&+yi(uudNy2(iPKpy*Bg#A=k5#8d=NkMkAZsn`p5s8yoOZ%FQ+=X=^%(QH z&wVbIz&pHdMl8a2`|aKGe&`__Q$$;xj^I}T?b_=9a`450e85$B26^P+NAQ%oGW$Oj zmvo~n?UR7lU&Y6 zy8T|n+WpfgT)9U$VQA0dUSeM?pT++f@=Uc52VZ)z(ZV`#Si3lH8ScB6c-wFP{nPGx z7?3w>VV1Gq`~2tsA};6M+c}2*{p0vd z?X|f6E?2L`kSYthOD?%M3un)dNnNm|+{pP$E2=3LwT;HB)`BUom^ ztZO1m;n@m4xTv1MCc^K5&s_`4V>q);<^IF*Z?B6$FX1W-aSs%xA9sa8PS~c^V&Z7Z z<8>I?MlxuGCF95Qlmr;zd!AUl8)UBFJrgdEZu$~xJ;;+*L~Mp|JC-#R!bufO5CFy<~t16$&K6Dn^Jlk<9bVkO9<6nyo zUE$v}uUze2MNcB!0H3z0n6S5Xvncl#B2=S@>pT$8Z-mvSdhYO_9%x$2Nt_11a!W`-;=?$6 ziN-ko$NS&EyzwU!+JWEJpK)E!n3vh?D9@VAJ2aNy&<}p|OmLV=9fj~CbV6dnA9Iu$ z)VndgYTfEn=!*2k`2P2qaD_0r3#4f+;VFKgmdQ9X6ZCG`TagxxNL4b&nvFK zWpMG=ETA98GVzKlzRdg6%mWHmN6IZMiZ{4i!|#Zvj%&YzpxSu=ZT!ra;HMOp5O^%$ zJUTWlt_$P#wNqGHrSM=K>wj@3F8nThm%qYxp|J_fhFx*}ZIn9^cBoz5HAm`hv@pTJ zO*<u2(Dy`gYRW>AC#r*k9+Ob@N&%+E06x^`EPwD;b7mB5*gZZc&CO-Epzd00TC zBHMyb0cFJKR#8E-0%Wb^WFCFy_~YYlEJ6+Pc0Tc+XXidjyx9mLtn-;?oRzz-ziE=3 zSuNaH^AW+LMl!$gvCTgUnswc6LeFtCeiXH+zx~g1-?SXJtf!oUl|py6t)+Kkt98Rs zSZ-VA-m4MI&9Oqc4G_A0;R}C*h4l{U&$dI` zU)Ud3us^u_uDjAF-uT8hWiQ}5(sk<2rXG1_yE*#KV)_tt zl1p^Ys&IKu$7BMpT*9b+pV$1jj_uFdku^TNAuQ-rR?1!g9JsfTu{R&D8uErzDrriq zcZGI)?c zT)XEdJ^{_17LOg$)TeQ~D*bAKvK^I$Tp=#@4RiDkrOn1?~W?e(*yGI5vhZ-Isa8@uj8SwFnHI3%5j8%J#O9%6TE}!KgDex&5-pC5fETg(|9lQRM z{%cYFHp*+{+dZBGW0cU2E@_)as%#iAFhBqDFa0t!YQrcTS;lpa{|CMF_V^slevDwtwX~P*;@-h}seJTL z4?Y-AE`NiU7)$W}_r5Rm-?f0AptQhN;P1z=^?y0|o&o*EFMNUac`8=NS{nZng4|6I z=<7vNg@w~8j|xnu;ac0XcAW=YQ>Z{C{XGQ%wsk!SLAC25=Mj~AH$x~)*XAlkYTbXk z2RjCr%fInCP5f?I$0K0cp*dez@_IkEylHIH#Yu2P@ylP3sTxClYD--)1$@}~5c zV~?nt%7{Pu(R^HwKh=BSfgdssmgmUB%_mRdIHHe4W;F_N!LWs9+<;8WFV3G~{LQ^l zB|}|6cY9hq$tdgad#agK^*kI#@ZcH=A9*SWYvv$)`=8fv>VB)+Ld<_2A z1z$`4T`@Y4|0JHG=rfcJkKjbCyfpp!N#Sp};d-q5%M*u1*ArXz5D(SypVE)4-wM#6 zc2qbe9Kf#@gq$Sy@W;_92VZy?;LNP(C~A$wf(}=&kI9gdxkGq1HV8!2$kcVHiCtn-QP9-cYAtjc&`*J3K8YYOv%77r;XCu4ulDKBk zPLPvBw0-=}71smYpJS5)S+&_Ji>K?q z%eg5qtS)CGEg`t->Z>}&k@*glgU69V`QEAB{n+vn~}Zi84Oc@2UF4=rKcM+J|1 z85M8vg@+OR8>Rb_+aT7M@S%7<4qwAbT3*B7yXQeP9)6MFHzH&EdzOj|6vtj^SIRV) z80OE^t*6F{b>jNOqyo~1YX4HksB~I2RE4!Tkdd?fc33>DKamY~F^pv-8OQW4(wrb< zx}^VsKk;OoY1?j-#kKJ3>M)r6>)A=obAG%$ldUwnIs1+9+hF9cWTWo*S1CnTnl9oG zJM3^2V-^NJ-93|$=~Ex!6DD)vShNCN6nSo(T7xcFWp>K+a zxUn%?HxFOxHX~n-p!!KPD@&_CXe7?q{$I=~=Yy+r&X2CYwWxMM=VEuxCAtn&K+%{} zZbmqV2z-|2*fl3uPbganufXY>#=I9!VAJm1Qc(L_2E*^#B&`lU3`)ay_U}pKim|Sp3H`@iYY`YkX!d`2<3BM z5Q}Ps6s*k^NJ@vb#&!PDv&JR34QvXm)0qdN4XrX%%W8=Jlayd!)qh@6)4;dYoxgYG zyehwEvkG%a92rmo1o59_5ghxm;a|G0HQRps;jWJKXUYs=UT#7R_Yf*Txsmles(tp^ zJLi9HiGam(IzQoA&{#-L(K8Zr4_S~;wUJgMi&--~#$0&*XU~hk=IN)Njt3S6z%qBr zHF5O=_Y_(R=tlUnxCVC}bmWmoCC{VL{`Oqm-9P-{2)T3ts9W(`7nK0oh_=6qb;q#3 zaBZ+30_$npY|B~No7Xp#YZV-w|Je&jyI${8oSC~dYc$I&E_7?`I_Ib(kIt~s%1+@$ zHu2_9o?fcY@LhY5$r1ewe+YR=V_~AN{EJyTALcH1(BNx*y#!j9rmlUd?Jfty1RQ zck6L!b*!Q`VJ{$Wq4o{8he@R{!IpDer2iA!tJdQPs!>e0|GT!e-P`(78WDjt^w~b7 zMfbDIpUIig?w99WG$-y|&p1sw1XG$kEq|ly(jgU&uDgN#HT;iDWqPUjDihmr(_QiC zL`utDJ&Y9-G+jZao;7ZscT4u?GLIB~=pM5VzI3Ok75d{5Cb*x&O}~O_m~pyP*P_}p zt5u{=$x^^pN`X^r%GlqLy#PiGuiIfp<%JcP>+{S3z#)>sx+9*=FDy&&0T9^gG&i;RB)`JeGmcxZ?5DVP1iIl#H)69|~K zct7t>i&_fPQxXNZ^*V|{`efU+NQLcaWG(w}t zVjr94(6J~HsiZ`LlTJQ~*c0%c!Q4kVR9;r8D9TC;7srLTd%}J8+BJBT_T8|&`;!UZguYn98vl6?u%UbsBPoqI zxUxn{K+RL>BbD7Cw1Zf=x3pbWjs6B^#Yo<12O6@=s)IKUKge%51S{kCw|7+^w*S7G z{#R>!<`($WC8)kGN~9nB^AAGnH^uAUeetTG)vmPQ>T9lw5~benwCp<-!Q6I?+G{=@27gRX7(doe*GJ8kxu{86Ng7hoP5&B*?)Kz^)z^%_NyrUs$@$( z9%W(Jr;u@2uKn3#O~a+PJmHDRXS`gGJkB0bm7Pf4#M4 z&qfVS@05#$)lI~`g^!G}sCI1x-FBbt`P-{ja{fDa71ZuRDbarY!yo=IuFMZQnB$VR z!srnAt+{+yTmN%>-lWnXF>S^os>BRQnLgP%dhhKza{L>cv^!5@6>(&RRr zemHzo4uh0=7*6sp2!1Jk+(9>8U9P{C)6q^Uk;an(0^xKz`>_qMj`44m)1GOhuG6Rg zRI-=bf5t+ZJ*O7`^0xI#bVfW`*l)>b415(KJkwepy!}Ma7m2SYfHvrU3h?_F3CPQ_ z+Qm}=AHf4R+q|{=+lzPyRY^~5oxkd!@yG63qY!fM;oj1-FUwW}*n{_>V!25XBkN&Vk@j};!@G+BJL&!|@`SATv&kh*@Vcb zkU;xghNQ66^m-m4^zvt(B%g`VD3)luIFXP>>y32Lf)f&94#Y4!^3G2>w54koSR)?E z1eJ>q#=6#JA1Qa2vxItrAsfs(4qCMt5 z4&UB3s{IEIv?ksSd3eFYy+8hwKM6xS-HpWdyBRR5FTzdG>t@U#hssgLxedecKr8cM zEFk_QcNr=!&UC4{J(gHsK$~v|(uL7NQkmWMaTgjg&foXG_r)bmEXT-CH%Z3-!WX`X zB^T+s@fXHX8Xty@<)Z&Ri{SW5ACPox{&MIFU!;Km*P^iX0@V#$zk|YXir@%qieoexSUIe zM&`BGUIhcZHX{o1E%2+U|L9VLYNgJ}h`j87Rex~dvuv8s9`GY!=&@0f8796-8H@C^ zL%sWDaE+pWm8N~Gc+kHN=Yw$DM*2&5{sR+KaCPulNl24(30L|rjtBIyKIL~DK4_^K zBke0fyK5Z(B4WJ%{XEB?z0r9|CPtXUbjs&hH$D&DQK;aGadPLuCT1c^=ZoeiZ{X*Qt*lkSOxCpsL|B*IdK>f5j~79Q zaWT7bxqOu=^%fMi6mGkTmu|ZbZRZLtV7~Rp3ODn`0BWTexr+nGqV#@dzu)@~`+^y- z+Yu&2o!zQ8qF7I`shf|G;N_uQ^Uyy&S6&7KYc)adbnO8r)=U#k!p?A!&pC_q^Kbbbz8w`a^6|6JU{DhN5|nB(}m8il)0!qj>Jp~xNxs9_p;UYvUq6H~|a*}wdF;Ue7a z?UQ<(3bRS;7R7P^>R=Hy4N>?soiGc&)(i`KpTycv{JVbI4(8NEHm@Dt{05nw9$Db}{GyA#gzInIx2pKgxXWb)Bv-sR)}`Zd{Y`w=)2`=r*XsGgUdDsi zq#vosLg{#=Pyk$o@N+q5T;KLR=7C4C;Etdgg(cF@+z~4}nEhH*XC43-H4i)ytC9K4 z17AULHD^^)?%}IyRUz36z%aXpvsKHhhI0UW0ovlpr*I>FG2WFPehA@rQ(8qZ0nNPw z<>8g=qt@vEFEjoN|Kd2!Ng-@)F6g9Xk(O@=9^aZ|)a&ce%&wgSo z&k47z{)MU%iQ^KWUHd@uEqAF%c8#>&_$c z@g76z>CCgvzzP!20rV*q3--qHTV9)VR-=!G$MU*CR;f2dVP3J$BCGZ~JX3G7VXeeZ z&pmm4GmV!wzj!BhcZt=CAl`kfxAr|C5|%W67iO1f+y5oUGzPip1~CoPmCXzZvb|dW zOI`sn4u2f~)#HBF{m)KVN~;{_20d~AaQzL}p+K`q?_+y>EW9HHGR{TPALoMae&@R0 zBPg!OYmGM!)}+(*CX&KJr=WlGKWdJ$S6Ba+4w?R@o90GoX%5FgD2P1k9E=#C-#hKR zbJmX1Y~y+lhx2$1|vnOD#y%u9NkAip%TC$qsFQo}( zQ4MbhSwYVD?F4;gQC+TUr5P`^{h z+BU6H=4t(9Lpi@3%o^Txj^3A4VA^7fEz&pjhO&@7!ujW)m;J}dC*y?*Wmfaj@aO>b>nTzJ8Sc=dRu*YEe4Gp6)@=XZX$xB2FqW=*0+^EbcwEewK|p}aO9LGfn2 z4}at%kr{|#*F^j7$Gk{i8Lq!@_K!t1me!}8QDc{?tkk304_tS~uWXY%IBIxe@Um%h>$ z!?Zd2=%Z4;z0nT!Oj(Jwi)_!y#(4ry1&3>oh~!nNVsU%%5e&3yQ$Gu8rTS`IU7Ufm+qLvp$mV@;RYnRT1BqL zC=(;1B@=3Erw+bl30mltZhB>uN}Tvy;fZesnSKLr5M=P+66h<(zj@@qc;N%nQK2Sq zJ=Ymp*I$puH9yrud94w@ z1JS;Y!+#a{r#){O-A6hW9dBBlY4ww{PC-rFj-s>=;BXToeRt}t=zENkLvfY zV*J@@)791PF9xxKYN?2H$?|0^^6X?_eQ$&bV_T^;+u*yHdh=V~oXyCRCDN_u(hkz^ z2&!2)UUK-pka4I>O_F3((Zc*6u3z%y^V;SgvQ7VA13obS zIqB~>{4wo6j{oug$H0|TW&Ao&bNy`AKW+R;3!Q&F=3ryIRe0(3!*$?ttmRz1O=ex{ zn$BY-oCDjX)vU!dtQbjEa_Om?4Vf*&>pz(s#dx)DJWJ==`j7X}f4(Rv5eYR{ArQe! zh(cy9s-17$TsaRoU(SRn^|rUXEpzG8rOpGmd}ZEn9+<;9be=1uwZ>Bls!`_h8cY8R z>6C}^x><3v9;Vd5^*0JjFuoO1lr;uI3g!XNqbtuEca!&s+t*-0yf7_HfT7&hzik>C zUVp}-I)ds6y}Q_)Ip0|xF;r{fQWzx{=C@K9wGP6N87MPo?@#O<=DY$Q=cTN_$zWB7 z3-eP@?HSeLT&ojv*qi-_aAb0LPTGrU3+5NvUIDmFCJQgK#HQMpvvV!kS!bRFGeoPG z>I;@j&nAm^G* z>j=y4UP*k43$6A(dFY{eQ;4GA+4Ym~Yo7xKC{zAOA-sbSmWY>F1A!OwGP74Q|3)zu zH*AYof6loKK{blet}pD@;@pCpx6s#iwX%rUc&2HQtW2v^D^Qom8u^j71J+WHx~~y` z%-1o1>gzcCF=%NBv1^QJPw=nB^gDOkE&a;w8@0Q&#}djIYXuSWp6QD~#?_HMoPw$K-al@>1h0{TXHALfyMq7YMy zp_&)mf3*JZy3_tv`yJ08UP*o{diULXU))vZXdviv1l8E}^j`6Y{R)HTuHR*4=?Y1b|&*|m?(`#YgJZmh2$rKM+z*I^1 zQkYEc^S<&Gjsn6%l7ih)<7ue>3$G7u<84pD1ap8EU@F8Y{PbLG_X1HWfw8NlowU>A zm~^}D6*N-iS2F$w^B-`AC0BnnR2!e4=e-tRMfG6Ugwz2nO8$oTddE{ll}aw?+ZU zItpU5%_dQZg1eYK^QVvbbijI?mEq;$Tji(OnG@{0(rV$W>~s_^#TPGLlzBvDtfP-Q zDm=7cnF`6zvSRD2j70stQn#-DV!`@nF6O1?JcTvHO>}cA{#O^!f(QM-P-RXeAm18i zT@M^u|D^v{tU%?5tKq-Omi|#0=4-VL15G4$;a#yt;3u07KF_8x-^3dWpYjdbHV`U) z7d!o8`1{)6Cz>wlKq^|#CZlg zW8rq}_dFJEJ^1WTEqf~KJ@bg5S|bMNcjf~21ny~u`wqZHUBc3p_;;?o7GB`%P+s*| z2@NcmTkzherJZ{Wm8RlhgSDIG*TcqgcyeR;|7)~AePJUMk=}+Sq5U_mzawMlD%;vW zeSB2Wx)Pt!s6aveg3br|4>O+LG~p2j^PL4P07CX$xj{%e{>TB z(ci=~?bEc;hM9}r@s4+-pGjYI`|UcxInI7R8DaPz{m~!wwwOFQ^?Vc;-uuE^7NNuS zcQ2&EmGiHAHsNP}>F_^%hP6s~@}F%J*CM(kxBtEOz3&CyN~uLZV>knVNk)f9!G5gCBx92tLAVtxr;SN~fV{F$>bI(RdJ zYLef9M~afQ{`1wp!7r~&()sedB%PP{uY!~HcOQ`Thm{@lEAcSYhubUnPEb7**K}MJ zr^Or!>w@CWL#g-R-nt+sKh5aN-4W;OFu9gSF=>h8nGiB~N?7#*T3kyYQj23@pb+^}GHMVc z$zWWJ>xmOt^t;GD?C>K3>(fUc9fI$R+M~xFdweVyT>Oh*>u;xP@O7J{tKuVA)T@Q+ zgz4GSM;>{2h@K2F%dBuu%ZVe7I#T4rFgl{QHTjpzagwo_3xQMsMOC7S4Ka2NC9!ca z+M%Z!+HZ_n;~H+A2Mbp4kZ|q}Y}dTzlX!JA)7ON5Qspv#;U}Z+CegU=`s-oTVNreg zrM;=N|F^HYx;JZ9zu=jM6ha!`ucHI= zHaaL!?5V9T|5o73IMpKheeZu?`t(UBotVXdr2-KeXX=191^&uPLxrNUfmx z&sZdwhk|Tf+^I2_eo6bufH~m6{iE#hmw)-cB6!vX(IbyO-22c6KNJ^ZCoo=hwcRck z9#LnpjwLwwVzZt@ysoi zRCJrBf{DzYFuur8#%u^}8ooC5wbv=-7|W)o1l^)*(X61@b5kzG<*BavPQ`LaMs$^p zVgmow(m&JcZcW6=RIuBNhqhq^l|<2^8uv5^%GHwejOw@^XEQUauX`sfC^)ZYiRVdZ zU-#mF@<3(Z9ThP8MyRsCy&&)IgBmF<)d9IHHIT9YTI?^miP7+H4&EKd1SBy#E!=fS4$7kpAidN`}0Xi}Y9JDv6D&6fc?Mu1`El zM*34nD!68YUXe!S9;3z*kndrjL6@Xu<`I{!#H)FT45fJ_49(|BMuIb4S$~-o!1=GB zpw1?}ISOSLUxK?TnDKG_Jqt^^H)Bx^Gv70%b@L~);whO(C{`_4;5z=YSXg@=tK}TI z3VsW+ZUcp-88D@o2a<+~KtXjAQn@N= z$evOCXqYDErC`Sh2jeD=2hNU0aLhW!wTJj$j?n#4+|T*lwmIX>I%|3_1i%&}R&z2F zT}J@d^^fa=efQ)1PyU^b0)hJ(+uwCYSyv$V<~&jBc7{iXkly)C_?ER@rdN>SUSsLf z$9s>XMEuzcE=ZgYfA}NW$83W#pjyx3i0Iifxc<=9s}|0CIm5@0?9rA3# znHQPcRm3~&@H$hv!MCi7VRFqrM9Xu8ASWCb>%Iu|NV~i<+Zi{kMjMUX+ITYX7&52hArqg ztoAROeEpB5zrv2~&@8t74^h3xaCTd6a47`Ff|HilCZ#Kqi+K)k~lo?$00x(0$4^ zhj{=&_1|hy{q(SBjWzqf_1B0&FM6+g-3;~?&ME9mP*!#_!*xIP=y1*~iRXGCd=-thEv@`g8bg6bbU5UY6wzK&P-Q0|fD z-8`3g8}~l;Q7jk1iRY9zevjbNKWK;06ku07R@)fnpMAm-TeK=yA|^23!KataX}m;~ z?qcz_blH-m*N7q>o~nW=V`acE+2v>s=IEzT05)LqMw|p&j-78MDKY1pDDp|5H zn_RXqY0Zca!WfjJf)YNe|9Aaj0FQ^4tABm(^5#XQ%bVaGDUkW-$4Y_b?z{2ypv5rX z6){(0s{u=cwh`*>MWRxrao zLCpt#Q}C^q!37W1*`*$#b1n0Rg2lTcXjy4ixq|u*|HA?HGli~i(W06TbhiR4`TxYV zuUlE7P!8_ZrBi=D<-z72?tdw@{bU$eMQ!bG()uh;=?!L<{Gnf_^!X=%@7Q|*1t58$ z2kJ^208v12Z<2x+eD`-N;axq!+CfDFWg>Uron;F=F=??mojr-=T!c*GC={SPmf<72 z?~cr2T5m@@UaAa{fjFxE<&ypH{_d;L{-vCS{eLo-cz&}=d)v?0KIpL7|N8&^SH|JQ-Z#GS4_QMk#U=3b%(;#sY5i2@lPSz$ zzxSTsi`DivDrunj0H3h_f+@4sY7!P4S5N?svT#SLYnv7^n@|gXSKE|0v1o0-Eu6 z$t80zOx!XG8Lodu_nu@n_*vuIn1Fg69hkS#LF6X}#AID-8-D|!Ll0}oW~5%ktM8*@ z(&xr)&F*-94fJPS@b!wM!jACokf#D2v@w1EY0|%!gRi_(nX4Xh zh3^^F3aa&*VEy&hXI~v$WBOISjs#9%5l9_clkmYB@qhRl?))v>#Y^ZW6IWy@d9`rVnm+T)vojIfOXDU93vSP4 z*al&=lY-@lt3l2qvfge;)siyYD!Os?u4Sp$dc6458r5&&#b06AScSjD>TpJIQjPwW zw)K;F5d9~`znPRKqGfaiK&C7T)iS#Ny6ZB@Tz=W*;9*My)o8fS>=Pg0UGYHp?r+zqpb?s#g35-uHgqCiFi4SD%kSxit92 z`s&_;5B{jP+dFsjC5kE%Q5ohklz!(w{|>1*OAaPQzdx(`ch@f-dF0{VpZ$;bChULx z#b5NMV;#LAnr;%gKluIk&_yQn{^1|~0ataetNud%<|`xWUGM(AjGrsNbtQ}KnSo(h zs(q{PsVH;zUH9;<*V|>+U9t&qAzs>v_oV+m`P9?tt5ezx=b7wla3?n z5pN60-XGkwAvpGOGpV3RKEp_Y8X>)9!jW-Kmmq_XK6pgX5{iqIZtBjq+-Uo3adUkuC-us zKG5~|<7nbXXb$cae7lHNn<}oqhpZ@W$BH7%AoH-DUIqOR@>A&%`eV&0O6aKNibXy7 zMv!k@Vbl%!2L((s;m$8EN~jO`a&sH360yoeG8Yr=T>xIvzdR(C0sPqx+>?QI>R=kr zur8^umAeg=%uuo2#2|xj715 zb5vMTP<{HTJ?CF7={AIs{5T3rVHlH_?wT%RQ}GZQ^fJMu<6%}xymE~pXr!^+{l3<8 zy7|NPH$sYN)lSgOU!76itm&Gq{!j$K+ikZ!$yReL$-}X7xbVWy#k%qc6joK-(xtadTm{Wq5sGW! zR5{qs?0W!ZeE|Wm7SAwjsDnavakz-{rH?=UIMx~)M0Ev_$dYbMS;1N-FnH|mVJwsJ0+-gUNshfbSwoO zhaXm!*_BT)MS842a7*iT5*}&vkW*Gx-4RQ`d=}xdp!F!A8^Qhe-!J_&`!e=%;(xgP zvu`j%uHp8#0@*aPz6#R-ftvdb`=9-K)Rlx?NHs8db@MNUv1S>>7HsIU&ke&L`81rN zp~LUP&s~b)pzhgrt3Emo|0l)&gSz(K?YBYXY7{1Q?cEP9Q% z(LZ9D$G9lXf7^LtX!(8j-Jdi&A*igXP6-n_YCSbuDfk0Pkv42$Z!GbcIc4Z|0)1zy_W^V;E${TA9{(b68S`q$3? zavriCmapYp@P%4l$IPbYcw%(CA_bkTEQY1r=0ir}Y?OeN0N?8iF?e_0@h-j!a+li} z`e$DDt##p_FATxTIXRdq@go%BThZS@_(fL)Aub@3eLT<;U;!%+Y)5fVu{dNJn)TY2CB+i;y-`p;~?ZR-zb5YFZtx= zllbB-ybzy=7i>T$ymBLQ6~l5?xHoA@@=96LLsBeJAwJ5pNx=^j*ibjI^qE?lS$@l1 z__t8@@yuaD^nVA>Z^rUnaA|hnTYqcNl)6)I;;Lvo>k)ifX8tNSo)a$qD??!fjxY@5zx36%wLcrJ@d8ZYHOP&4eox+A zI^V@Xg^je4=@Qqftfh{XW)Q38P^n%){l$^(=OwwI;jj4em!mABl2%>8%o@+OgZW)^wTerfpqhP-?Y~SVDCV&F z>@gHrZ#iYF-gofIrxK=X`Pvh_JpMH{@fbh*U)xJm3#SDMr);kP|F4Dr)cTPye$w`D z@TC~;1s}tx?Kr$M+9!^{sLi!|uso*!c`VaczxuZbq#w)K-kVRF6r(x4J6b9|Vto4O zW8(edLm&DOg5_A(pepl8p7k=)-UWCzElI{C!l1@aYz^qj;+5&hsS*S7`t;B`{5;b82{Gy7>-{Q#^ET_>P6S~ zSFo%%8uz8Q+YG8xBeqaUQ>I&`S#z4C3v-^I9Yf9b04F?QY-c=zkMa^ znJrPq#wZJ~o~{2?xl+80Kb~?`zmb|s&uIZG!)wuBgDOVG>QEH<--*8#`jfmu|EfjJ z;a?Mcol{`*7Qb8IJyIbN=5=gphP9l2je{|#Sj{X6t^*iEbf{%r=n+xAHhj)O_V zY!CAGo8FafyH#b+MbIzlu3l2L+;`3HHG+RrxW3dyd@Qh`)0=We^_fv9!o@uQDz<&C z#-Hym)&H#Tjhv0Hg3&Pinf+OD{Y^&D0qJK`j3r0%&Xu~@Q`Wxzbo~FM@Z~MIUutu% z-udD=W5Im9^j#8OlH;ndIa2?Wu`6a3ma-6!bpXF(uY~ZE0WtK^@KjRG`qG+}ArQd? z1WgT2C#7}{(L)RHN6sV^#sQO*76*4?w%^y51wG zyWn6fFaFpOgB&8fNaGucD~nrR%)7P(-G_v<=ay%ehu=oEzu}|tpMjKt8!&-yZp&9Z zgP{6`2;?KE#vR60SIIbYFLX;Sb}YFfu^P%i*7h&#@4B6f0**h{_o2V;$o;mp#sZlHf)l{W}PxX__mq{B|ce zMu7cK5BA=%+itYj>M$wn7pv(1&Mz{BWCFR+uykrxy1})*O}E>B-i>ZZIv7ne`+eZl z2GLE8jHus!C*R5F$}3@1^>-v4t9BoTH(aWgQ_%>eZ3av1&!2u^2`lKu?(ZTDoJ zWNMCl;(2fxJ~aNQuhF#nwrVAaB@Ftq8vIY-{LN@JgDV$jb8iwpT7L+PJtJGUBaJcD z+;ljph-W92oI}KBL;=N93Mc}M!lZa>jz5`m{h70R*U~OKcoc*J518xXzs(2pnWPka zcoe|Z%m>q{{~b)G?I;Lq`-D)Uo!n{KX4a7;m=1HNwxL&b7? z9D?-Rxxh7@OieE>-m> z7MStQLt370y6MKa3&oPI@3}?_s!I#D31M&M!IZj&^GUI$)74rOpqvK~R6GBKDTM;-R;-hC`>MMv-Tc*YJzWR4(h_E_{7S!_ z>-`MP7EWj=b#(rYMKvGqz7wlF-G6}w>(7h~-bJAFpD@dxOp{U8-8ql#;6wO~YwS}` ziA(O_J<-XC1kQhMGH0_dFe90PQ?V$1^pQv6?(V`1FJOPLL7fu{s1uGqfvM<)-d-rG zdY1I2n{38DVNvg3*8Qf}{hZbg8(^VeH5Do^#6y$ke=cI}vn3W0x?t56o$yy-!KsDC zQYTy!-#p-kV0f|)%524jo|2-wCWkd;81h7iv-gxt{g zGT4?cmMs~KCkPM-*pe*UlIMAlt^51^chx!PeI;3vO=1G?^GfG=o_eZkSM93WRkf%3 z(?3fcK7;2eh1n+{VBTwvXI#%B{o0%%XGY>uOUt8=J}SZ`-NWw5e#iM;q(04@Zr9u% z3q`F)J=(}Mn}xLh0c3F3Dg^FFqCm|4>#zRuvnU$w1w+-d*%6+zeiF}GE;@E)#@&g+ zah=avRwH}oTs?ra_9t_$YOmb*RPArL{Tgj`m__cZF1ZNT-@7aPx;p)^rSxX?NM64Q z@Okt~{{1q{4^!Y*P{H4D|F8Ti(_}-kp7S_#YKYLLTuI2!4E!l*>20+k`g8m3%Lae& z`@f(5{}2E7*9QB|-!FYtG`jw~ZQ1RE|L~gEB+PRWhwKmHu9*nQv$d2=D6NIW{~?DS z0<-qM!JobL2oz;+k1~Wz)(8n1N896))#lQR7^DS~!#JQ{XDk3Wit@Za{S@PdzbJZ; zpo9o|d{dFW#(_MAM_8}Uff*e)mw2G-mt)R&?n_+L+TT@pj|KK@nPluIP<&0#0-p5V zazr>tp!87q&q6~SFW1AQmF~r&+9M#aI$AKqZQvn?hK9t7HcC-zv7*!J%_AU|Wj~-5 zTnWXhOjX7}7D&eZa30D^i<-ARylV6_s`b*LlGHNx7PS}How0f)GI|jvwY{(YjgN7kWbo9>XjnkE_U9dp2WGMnM#9L|a``8I zyxR_Z>+MfK;91_$Lo1K{-@cMOoSV69p47oY1Y{CcQh{^X3c`%ABMF2_I}o+w-}l4@ z#$^AqIDT;b7(WExFVFQR*wGKd_g(L%bol`q`|*^5!qi$(P%mq*}s&UqL=%|Qt= z3IhnL^)A=yY5g5HVwjG`T)>eB7%}L&SV2P0xJKYI9O`XPBZh4vbnMC+DjJ=C{sr-h zm^}gSH9kR%mllySJe ze)4JNHvV?o-D5?aL+JC&758GvY^x{?-je<1HpnGHtoZe^1^f7OOnC0E@D+ARYcl`P zmf^<|SDvi{P3uYFxW}<@4?g?=>x>$g?xS|uh2vP6kK}`{W&a@GINh+(KZVuqNoJ#D zAK*)Mz9{yF1aIam0-(L6 zFv33xQ~&;LI{eV(e5`&_D5E`t*n->V;a?^A)>a-##yh)>wA!vfm#+84AStS_(0G1*BGJM?s+;1$7C4X~0-r#FIeDI+M6L$-E>l~%S z*meB-Zm~Ca{_W7K;+qa%FS>dykj@LgpHVF@$@-V^8~FvXV<>sDpq6%`{w1i+2kSDP zCMT2D=ZSCT!Q}5|orAaMay@)Rz9}Dc$b#Y3VaFuBo>Man6;*Gf_KqjSv-f&CVG^Pa_8ME2giTlcgW}FRSHeJgPtu*2v*S2hj)RNtT&at^ zBct`SJ7)szv+q8GlTPydo;}%^n(j_41+@4c#DaT{ZaCOLYQb?V7TlIkm*s9SWkQJt z7lCP@jD|E9sSPh7QYC#iBIZU)l6~BZr!UeG8sN4 zNqd=rKQYE9kX7iJ_!e|ln`hBa-*m#4D5YMeWeLSC{MW*-R>D#ghWAJx%vK z=pVz5{9VY^rc!!mW_>f?$C>Xgrmlktql;4+xjQuY!yy8SgK_nTg2BDGgL7jeest53 zGpZF(z@SpV5KF)+t*8Q4enyXOw$0D;W>j3#-CvmJTh!U47cn_4Ujd^l0t(J1Wiz7I zY}`9Nu0}4c*635fG?cbmzE_>7q{K$})ZYzvZN3O6kE*`{XGaoxmQ@(_Y<8q;Wwxa2r@te#&cL6+ zfBKF;GySiyFlGGz5{*CCpUzp*$opUhIPQ0xy%Xy@Xh7yCnPZG?BKFO^0!PW%jtCjH z-fCN1we8Gz)=mf^T)(>B^Kt_%>8N~UsuRxlezbvoL;6$mj^CM|AaGF_BVFhr-<_v* zM}7SgTz@k!dlbXSqIzCw;cmTM9RZO%$XA6W1sTf~DliY|YP8Soolq8hOUfmQ1NQtO zZvNs~Lxm+=e@kPj$Aft4aQ@L6!=r(69$lDH`yi;kF#=}Sr{>c-eZM8hys1j+-{Ff? z84EJiOs4yhyf#cRvnFf#M3*}LvsHTWQ|ss~J=XP%(~EAuk*y}-nu z@%-<){eACyf8d;RF7D(|Ox4BU01QF%zFjNt931xn1l{DR0NM!0z3;fZpL4F8*Eujp zo{XaG2aZ!w7E9w#o(`NkV_E@&76PuF&O7(K^dX`oy~l@GdKKi-{{gZa46Ap(^X&+b z@zlh|*tJQ0rwXjKWbUYGZGNBs{O7Y5Iu1d+3cMdZ^y=!8PFDeN-&f8Pn&w*++4qH@wYV*R=V!&85!&u{vVYE?oPo%uf5C z3KKnTwR(HyHp2H1OTiK)BQ4AJn!qyy@qwqUQuJoZ;E^v?aBI#Q9h$kq= zyG$)vw^@JkuEK{`*6ozfwX$9>bls`-j~*AKL#=Cs{%5_OSAsVL z9lPmPylOxvlTWL7uYYgHe00oCjQ{EDZ_{MAmh#yCDxz*bIPhS+ZZODm_B6@}@?XqX zCjMh86N3}!-`jAptH4Ir-!kjP!6f`-3w(pqyYihVt^UTYKIN0o#@#gj3r&c5&ZZ5Z_*MxD3*5Z;(QE78vX=W#ipF>zl5Jcjmkk>BBTun^K;-6)zXjfZ(Ulk zt;c8`kr*bSM?{~h>YUnAkKQ)czrziP4u^ZkhyBH>SAVcfRi5zXNSyMU&a$-3s@y3N z;U*~jS$_dqX7`^dy5+O|U326sKU_Y0RrLyg$%_zcVC$Jt@Wi7q1FEI0bi`_FX7OM3 zH&0q6-G(&qbj4fX@nhM%dRe4*_05m;A=WL6~Oc%%MTU#f<} zH(JFV@Beuhx&5*rqxXsWTUNhS1zKjj+M)Osxa5)kN7O`??-m5R z{_gO`r4ZAWvy~+XF8J%CKQE;IBN|S@R4OV#^{m0$rAsKbN|*HD5#c1XT%{$I95pJC zx6@rD%m1+aeU6zNe`3J&PvAQII*k|*py>MBJ;6D+u+dhoYHK)wI|2Qb&*kqbGSij{xMai4mB@UqTcnG5qItp*q3mw%!EJQQsRh7vAW zcV4JAG*-)Lgnu(Nj_n3-`;kWmU;BrD$ocHj&Aw)zKK>uo^8UK91@x>~VCz-Qy>7uD z&wmZZ_?D;2)50UGfS2Qu4`qBdrrX1z%BGxAO`iRX>VFCPw=ww26g*-ko|HhCg6fMe zZAUyH6ZXt%=hr{lYVDx6>DSYo%U8iyAirY7oNs^QGs4U>W(UH8WIHw-D6 zSWZd`He`h9>h%&P&)u;O@JuKh@g^*)<2T&`^=zLDe&X;$zAgyLQMpMyzu>OHvAXi+ z^XX@t5tn@tOtT{K%qbTvZV+|f7tKf_w>uYl%2y^-BVuB2)zVAGLD zk%n<}+2x5`oVx%3KmbWZK~$G>W?XaqJsc+PX2B;#3Y1!p`(J{meH({aHr~d!(WlL> z|1=ou4y6Vt06Um5;QqCL`Bj0R#XNm8i~qFEAPnd?zv)eJ5of)1q3NP|zqxbcoxpJ+ zBUQ_U*S+rd+z|}^;eUONu&oFG=YRWeoPl;n7Q}NoTlz~E{4METO3vVt{_2FZTtW0} zbs0VweCu0fp?Y95fH`<0b5cx z_n(emC($o{@e6D=W;F{4CMgrOYt&bG*x2|BBON%s{@EmxS8W>1v@&)<^n?}|Xw7=A zi!Qixo(2{eGLxLt+>G4EMDMvVQkl4Sy2vxCb=3`H3c+<0Xvk|r{a^eI!MB3yItrrZ z1Izg^_0Ad9c&4_}9wi(%+`iJm1m@@8Y0pNQTQ^QR&OmUdtx52!8ip`$d zq|!{84Lz<&We$3U2|*Sijg$D#R|3dC^AC6pB;jQ+Co-|Pk1oIQ;*EHlOn-?#10TEv zrIS64fEoPH^gqU%YB>y(^oL)r@n@l+kLjwq+fz#%CY~0t&>e-mu92j*l8zEMQw=7k zop;`4@JIjUk2tqz`zT}SO3$@uXo0nr!AL~T=^?xnladMfnHL}PFD1x#aO66XV0mz^ zTZN}Z_0sD-qq#7=F!r)w7e_I}Q56pz5 zHNA!6#|`njILq4Abv&ZzdYfm3OS-N$&ZqIbB!qXr>)n#EF#YyH2;HL^ zu~R>KO5AvNCb8{&4{qo_`msNc@awJQw-=V*b0~v2e3-dhrL<3R4k0xg9Lau2#oC>B z#Oi_iduF#L;-{SMvhj|DkzH4 z#q1mohnA39j<4z$EtH!p8ZX;<6xVQIil4grmkqCf%xQd)t|jRy`?u-vM<9qWip#?c z{LROIjv88cco6vwkNz1Bv){1anwv)h9d_8^v^B25@#L@ox|hX#Yn+aMJv-b49g*2{ zzySw97q^P_&Kj7K_uc;>IboHw3!Vh%Gg&{9(EW#(YfOoZ>+#SS;s`(e)qA_bq)AjL zh<%#y<#((Y{PCOL0{vaX8TOu0y-(`m7)#mmQ%7qpMmXWoXEOIATqdX9+K4Zid_!t#h)_i8HYELn<+T?N&+*qwy}nGEQh1*?T7 zFan=@3BG_49Ispdb>K7TjpemD<3Hsip{t(EW6Zr771XQdFW(ikH-Qv;>)>Jno_I@n z16}x}un>u9M)koS7@Uhc<8=C$>hZG~_>VCK*(M+Hl~M}IcA+-G8}Gsz&F!vLSlgs% z74FWx>T7vOO*;91?(wXDwL{g!eCw&hsXm|fPn~%uon;~^m+5W)Bum*8)S69rhZMy5 zKUa^>$0|>S$E{_@lL;+jgp$8e;v$kN8(<-*lxElIc11 zcU{?G2}2&?s9s5LITIy6z5RvZmtOyhl#rCWiX(o>({eE`yqwdmx7Lv2-}m%CKN2sN z{K;2J6UbF3iaEl+ak)}gD=Dyc%Ll(zXxhd4C&1eV#$Pfcl54x9ZTPEx*AzXhEPQFd z2PRLQE>oG5-!)B&MElbnlkE%X{}i~&^E~UHcCtXAU!xz-kaqp_c04`I!fN$a*SM_H z6huqQuT@D8L9@IX1=U*i$y4^bjqNc+*1h__{ZQ137xn}QJQP&BC#Yi}Opl-%qoP9& za!-Krs+Mu!$l-B6-ZU=4^|#8ao;fxj04)SX3uJ`xYPLZ4W`U zmUapHQw_w~M{Y~SL$8*vDS#kY+2+(kOOS_!AAyjKw0|0n_RIAG$KU4Q-(ymK<2Qa24^i7jVY=vIFZX)-9|dgGp^8jYFK-k( zVHx@mqAgoJia6Q-LlP2Kd=xQFXEBR*@jk+vc~0y9`8qX@3IDCZm#?e`xI0#^7`*9? zZ$=6AcGjg2XYOohv|3cG=!P|Jwain!5fh~L^>@ZxB0?((@A!AWklx7TRlSl(4gb$~ZUc|bEb}6e4 zhw${VG&hf&*{$cGl)Hdz%KZC_fUl=0>Ad_Z;XlB<;odw7NzNO{TEdgDvD&rX`sW*1 zXHxh3lxvj0(EfFlVSRN#%8=@tk$YfBJCVKJ%=&o6<7H4V#wFUUr^6VL(02rqsIY8tiTuKOg+yaVhU9r=AkmfHuS`(j5(h z%981dPmAs++j$*3Bd}hDWx_k(@vfBl+;h)GP>q!+giXfQI}udNR66Z+7(p;*WD-`L z>Et|g3(hRUs86jm5F_#IHMVTY>-dN7HmO5JJWOrfYC9vF%k#y*6G(F6r*F{BE1?ur zX4JLUa7H!wz6`B9+y9Cyt{5yB4vAFdw+xj@o~HbaOWET1b(E~W=66cOaTXIX#)0d5 zdd~DMfpNTM;1?d!n<3;{N%_|pG`8y<2qNF~mN&<>r+q<-A;-mB1l4=MEY&TgjFV-! z==;6by)N!7KmYmv5vKkJut<`T>*j9`KsP694uO|AT-E3p@PrO@}z(-K-Xjh>o@3s&5b+>MAdb?Jx^zvfpvC2Hc zkJhY$YRc#t)um{JKppy>%?O(Z&%o17ZEdc_WED2QljR0SLj~1~IHTIlh!)!EBW0m| z@kLEQ!DdQ}uthMZ+)Ulf*`&H@3Lb2yO|1Vq@WFAfzjc=WYdQaupZqi~hZMT&7D>eg zFL5ZHR8SFwfzJxx5dN!GCYCCJ*UO#6$)NJJFKin9r6v;m0-xLZ+kXbWNSeXFqg_0J zjfwF$)BhR<7{{Bp{`tj>zk*52z{InkdXw%;|NZs|0!L}6N?D!KxW?NJi!#r}ddnZb zB??6U{L`Nep1^hWGgz+n=C#F%ntY31bt(*`PPe?1fY~tQY-_nn_7h!@66ZSdjWawmmA3W zD6n1)vq>R^7S)*tDBr^>urmL|g)H-m^T3q|Gor9Gu`ifT|I*{-Af`T@4i2XIQ?`sx4H@AOlT}4 zk9}|LW6oqBvlsgW&rD0daq~?%RBp3APcyIS;@W+Wdx6hzo}lw+DL!Cj2OQlvzW;sX zM>#)n+G!EI+qU*c@0R13qmN0uoOJR@S%>VrGZy{ir=WV}ohy^S@J~Zfo$@F+2WRPj z;)8Eq!Lbj#5=#HyDtJ2PX!ltN`JEE6#p5;+V;s1?r{_%H5*Wv827cjT61&szcROcPAGUBIW6d+F*&opUb$)9l zRZxBS;S2M!$o?^ZSa=PN8=~n4@+WS+^;Q~kZLBsFaw@EL4Bx}L)^V{D?lZSyJUqR| zqZ&#mV#Zy7s~0IVH?Egs&z{j<)0{rLf3du-Rd2uj_Q8LC!+*wg=Tljqt1#31e^#aR z0mqvb(bp{2IzuZu*YgM$SkK2g131F;NFd?6FCbCTKf?6@W%}!vULPh`-w&v`KLlS2 zs@-p?xGLQi-74^Ed95c5t@fN3q&FFoqkd^E>#~gQ1s1s%n9Cf{_5upn9)zCNUZ8kG z9t)?Sx+^QGBru)+tD5y(1^{mJ_G%Q?AH6d?OCIoD@z6&!r{>>8qd9reG>!N2o_`_Jl! zWFHtXerbPmF5W?b6_Co&-n)`@-wyTq%j^}t_~JMDa?8GbR8VVUJ%qts_|`Kx_7e~O z@0Ud~|4J`5_#>_1Pp98k|1nR?Ed0bb1IubwX@4I~$l8DM;G_37hJcm?11!VoO+_zT1WoAA+( z`M#j~10!Xua!adoMm2)i^7OEMJVF#*g5SiNJ}zKcn?_KLfs{PAeK<1DdW(?qzGUI8 zub2`MEq~Hqciock-lXyIvcz1nVAw3G*}vR_;l{Hl&f4B}EZl{->Mq`pijOf`NsjeX zXc;3%To1`FMhu=&t*n4CX4{mYy1Xo1f^nN(mby{f%_=S-sNNL%@A^{jfZ{I3aI7=a z#uj6AO_Yf+;RhA{-dErBb1~H_CNbo@n2gXvm#uM zI>(>HqumUia!n7n{!*MEA|I=>=GS}(^VuAK9pT@Ba_1YHaaf62lF_ z6R4d0ns%Aq{v-S+W-uR|+cq8ld+s@hz3Ybudm;l|AN{XAY8_9dqNZL|&sHhBdk?cf zT;8U`UmyKTekv&8CAE%mo6R18BO4YhfERLb`k%+CjXhGBdzIa%DfJ%*|H9yJ%YI2u zR2n^aId7=gq=J+6mlxzZH2@Q1{4-IU-nr@iUc_m58drtTK4Fft7(Y!;J~^YhTU58n zOyrf86k4<0y%UpXkcUNMO_o9)qp!a)wGzl8(}iON7T}43x`f+C{1YjJl;%w^UkH=z~UZ?9mUFxYd z{47Y>9&3$NtAKNq3@BZUbGBR7Ze6QA`Z5l56Jsl4$QPm8TK7wjt zVq}LdLypJsV#RRY`QOv~wlVxCZck*&QGn(23@y&6W+N@*=(5W_i;%^~6}bLp^O|-y z{=_xPim=i1M*80UU1Q1E@xJ%MSUAC_!b_vaIgYxsC}`XR*)@2Gv`q|9`9NePYDXO zzw|d>!e#i}Xcxz|cNk4DqF^))hr_nnsD5`FjH=fxT$ujv_s)oN05zlr zU>3KYqxmO)@?Wv^UY4^i)DTV@=!$2J*ehiuc}XwqzI|~X1~Ko_n1WIhrEx2O9v>pM zC22Sl=#fXG2y=EUw_sHFXzgyIO&Nbl2#z~^1^L2vmXrRt=`ui#FE=xuQGI7~{k?tM zj$lzeoHsZK?JLh$)g4ndrquZ%+;m)c!TEz_ECMdWRkw;qMRx+VemY9IJH{OMGKOUk z&qYvuZ}MxFbXa8Q@>O?#PFAJ31ak`d+b2_Tn(}XA{X5<3chl#x&h*76IY&?{i5tFm z0~Twm2VeWz|H3-$q4dAd1c8B~oLxg=H%=BHG|~^?ZA0@<%4+&n=;X(1%d&6Xn_eG3?>PfA#Sv*c2@&Z27H-2_$Num~Kf(jVlhChX*!NwFLJ_Z`PenPLf5VJ&#E>>6 zkpAzC_EfaIrYsHUy zOR%^G#Q_ysk2|hhdVlhh?jKO1gBfaDKg=Abz*^VUV0&;B7R8<=y~B>PiKF)ScJVM& z`;WEkKiEg?yZ6Y`(^2vC)bNr@KhE+#kM!*Oo(8@#REo15WDyf}qMIznP|KJDTPrUtK_VNfh?dzUR{j;C_3?73X8;U;U zTvpOmbJKeCYuivo3|rH)<Q>ud_2fk1=DGgbGQQz;seUH6mRa&ja5f{n#4g zEEM-$zaN6)>b6^Nhj5vF9P4P|$MrYNrFd9EP%V=w`;HCte{nS=uUOD2mU=GTQX@cSB3Yj~H^6Ox-Die>FBe(x6;_Tc4Yl zBXkX0Q>uF?bQd`TG2Z$IMg;B?mDmRl=c$7LFpI*a49|F~J!3*Y!1z9q9~q&>-_ z=#3>N4*we}^In2mEK#8KepES$rpvqWq~pSm5`u}rYr-Rd=DPwa%2;ayl_eAl6Gpg@YH!?Xm=EM{uIx$8&oxQ%tsg!a z$vg$X+9kPAwxsPjCkj90Ly&RpXO_Eg+`@<c~s@TfzsKT7Oe;8JCI(-~1?P-s6>l zXIsgCrGVg?MFA{pgX~%92c0L;+uuxjE@UOmi1m8Q$Np0Jm8EgOrx>&kpZff}#(u%S zRy>n%sr1O2gcrTz38%{G+MpCBj5W1wOt~5TKLZoMqjHlRfQ9G&ERY1}&SS3NE-y7k zEw6vp-}v>(U;ptrUMVi@ivjsP+{=t=_L_;eD)z^(YJ!mm4U2@Ii z_s1SBZ!%FnWsSaL1RxkqVI)#YrPWT>f3$Y*WutNRMzaJ3ow)vn#;f$?nr}EC-Vn;G z+p=C$uq=&q4d`5O;e{6rmcuK%6y9#_3BWHk99?#f4ucQU%i$2$-_Utof0t1N?MwMH zw=f?pUtY(A#)#pntC`E@6rI+hx?io0gw?wE=)OIIYI%8nyD?r{;nzJc{9Bh7v;Ak_ z|69VpquV`G)&%suKL2f${6T;A7(Uk0f!Jp^@gp6IT> zt-tSCceZ*P$E)K)!alkGE{p2IP{r&i>aG2@&Z@~r zLFI0PD>#d8Up7+RqB=QF!VM&VcQ-G*k3X*q-$_?Nn3e&S<ZK-a zCn8!Bya(5P3aZb9(WJoH&4AXFAChrHKBu2?T3qRQR-heDjTzG&iED6?cV@KJ*g#TL z2gtF&_vKSCgxqZDlEsqSVHHTf_gGvC^7m0(`*{wNf-VKvT9AtBPkiFE2&!G&3g3L~ zDlRgFUyEKsz-tz{gpCFrPopd0zKO%BF@)o?rxw7KBDstaT!BgG0-|D$KR1}bnCv_S z$J{A%Hb*`+*JNy@b?JBcWtXS@zx7-e)nh7$rB|>>T`*k0Q-vQ!_)4^E z6l%&)`ob5!5P`Kq)7x1DYdI~9Z+;UO-Y~vpxZL*h+Xja%to)=q!{M;-9tdj(w_%Z> z#e_w=3VJhXQPZ1R_)nm1dE<>YCDp-L5J*t}u1^W2hB_OY3=Vg^`Zy~?|3q+I7uy7x504h z^tm)lSsy}k=OCE-&b#N{jbH&7|p=tsDGaQ+((@wCMJ{8G**z2_d!x6{*7SyVg!EMLKSbO@?F0%Bx6 zk$FJR8tYkqLKDTK^tZk?sKVn25Mhm>0{U8cKXY8HmZv`u_x zJsuB7?|i2Tm=_TcVF7F%GsiP0I>S46%M8>a+O%ik@g;(4>T8{49=qOs*E`>3F`A|G zUX(=vn9OAM8O;6eKdglU;(dVAJw4U_f-|zuLU0U|5fD~4>na7-5v*HY)<@=}VB5An za9S1#~pV} zpYiOkyYF5#I1*Rf&UWYF32H9{^5V_{$s89q;viQR9L|EaOm)Y*5g2Rnt@ZUuC+V8J z;G2hi%**|m%5k4Y!C2+plTJQ4|9PxORb2OSoG(XE?HSdg+oOY|d)Z$T(l!6LLg7;-#~pE=XS_58jR*-CD^E0qSC0nk%15qKuU>RD zOs6}e*u4Wn>~m3=(NjWQkRf2aU&=_qQ5b=O;UpDnini( z&SPdj;5;ztVM&Fh%matkQ9yOBbRCPMqNQoWXwW*6D8Pc@Ftj~_ z3FZ{(hRXOdsB|$aZ%AdO(Hy{DNDDg8UhSi?Rhf66tkg#Of679<`j>mpYg_m@T2#9p zzxfutI5Ee%_U~<|z-H-E&Zs8d5geBwBT?6hDkz7xIgd8@?ybDi=Dm=;ff{gQ^iMu- zI{$^aj{Ni2Xlw-4WELhUc@=Mqc&-Wfi?Xc{=wHGd?KxSKSbzJt;nT})T2mxG5$s!G zG9}fx{Pi@hf7PBylh>5`3(c!yW*!Ajj4>L_6sRH*(&L%L`dcrsKFZVlgwH>2RS!!} zO5>!%SKV8d$LeJx|sd!PZw`q>3Mw#Msem27ggSbVpdb=*PmLWrLD;kiO{%uu|K z;a6EUzyDVmQ~i_y*yNv8hQ$F;uao^HV>D2!zQ&lOQQ{``^Fz-x`BY9RxBV{ouQIpK zB=CtEk;ik+zvgYc`j=EKWV6S==`4Sg@J52_BchZPPY>|0tkdK0G_H*|8I<%;BH97h z;Qg%B^1g(z1#3@nMS`kHRVDq0J(?!zk*UMIxg1JM5N zZ7<$6B5)vYI|li-A0I}S>E@vnrgE6a0V(*7QUgi!&f(eEDnXU^Rh3t-j&fy}6>JLr zXTj(97(3y|5*yDPWS`4oZF>JJnrWJzepBG5{v8^LC)3ZspTYl3|Le0_21(JO@c^s9 z5YAuC@mGS~W>F2ji=bMI>d_is6i7HWt^O*vUVCi`zU8IVaiY@g1$9O>xz!ofC}i^d zi|&6LgRfh5y==Qy6~10tV^IyAm)=KEE$_gOll{Q=buRi2izcEO)5Xj<-IVzKLo%or z7g26(uEKR+SybcB115uufJ{DEPRQWWA}=of5LCs*AB+F7V4{`C)s_o7{#>HkR9-H3 z40A!pzbavitH4(VlbZil;Y>7wW1)ZrwPnx(!baa}i&}K)^2)Q0vcW%rCXEt%C$ zE(?J7Wnu8KkA5tSnO!}DiiM?%wYyeg!Eg-eD3bzdEw^1HCcn50EJ3;MR^s}b>bOBv zWBHh)j!C{}V2Q1uS~p^MuR`!GBZzXBUwbSoT_N(G#h6W!`nqx8U!f=Pv*`5QI4wNL z;%nR;5jMWWCyO}qweZ}n`#RV2z<=@(R@+Qjmad^IPQQ(yT87o-mwy@I5Q+-4{}6%X zh`}|b5N5P_{jbBXelgChatdn3IZh26M;<-Rz~3DF+x22$%v}aR?^Cwmh~dL#=l0uw zK3I78YtsKF+h2y#LIlc=AqApC&coRYE2da0(?7d_+cJ5EWzLeL+a`SBVKnX*EM~6? z{Yk&39qrY(lkfk2*x`Bhdo1`9!Tt|5Y5hR=li$1HdnuR93oXgC0M;UWO%o7ATirBC z#~p3#>Yg>1zZe7M@yA>J@T-jyC^KziaEu6pcXEIZw1whMy|gbbBc__=BCpB zDex&k&V=PI{-t*^D4k4i_|6ScG`b8rq!Pq?Ig519IeXxGWp?6;8`~)sFyPFMcP$l! zV9jV@E9nP2ehczz|74IK(*6@stdTi}R`+xjIVt*2=w|9)U}oSKnn%ciZB>hoQ>+ zsi0eCnC_nxu#{&F_62y>xbY?|p{e(V=)cIV8Nv#U;Tx_+bzFZ_pznR}#t4HlZxhXP z9xZ6xV}b|U$@x~d)6SKyWA0|1{=wr?6({Vfs>E+s|5WgG()$ibo%Pbn5W&PkcNAEsrR=7c0n9PCYdY__w|N?KwBg zbFgFiWJQ=8Z3_h-D(C8HY}P*~opf@JXVDvu0{0Jo@PnzxX{X^joO%|6miZZc z+y81N}X*q~3$)-7_9UrkiT7 z-s0=q|0M#^>!&uCwP-bS~>Yl{y$IAGPpZ>YuN71GPOuX8DhDKuE^g zZ#hQ?{o#N5Lx#b#@$j?Xym`3r-f>EwmPYF?&!d6N`G5oVk2UVr+io2z+*@yzfAM6| zS)0OniFo;guBhZAyz(kl9@#=epaYKS5;AHPiJNB9YsvliJix-#2GOdzjdYz3G+`iCJ$Dfz=@KO3>I`gqy8WT8PBB(~;MS83? zhWr!vORqZQ(BMizwQ)_S6|`0mddSn&xE`0X&uHbE-v6beH3wWdn77~j&>7tWi-*i9 z2&%haLK>i@ojes?wyF%^`qyhy$A6DKo&O=c&i`=#bEv@zlGloXmun-yNAkCDu#*E-8~51pv25~mkC5LyRw&a~~uuB2w9)+z^-W%ZwUK)M;1 zgm*xg{mQ%g7xGqRU+UnK!3_ks-PqPr)YM?+` zS931L)MP#ufwK%8UDi2C{^oD~W&|7k%(kPC#&R1-=aJsduYz%XnS^*Iy+t++M_1E=x+e((KnvWQ9CqKsqq+^eW8(+bLZ zBCH!UJ!Jeo17Eyi8NdeK#peB-U!$AKIWRvZg=rLKSM%BRD};Bz&0IGs`GFUql$cmAJ^ac zZUmwvdwzI*9QqSMH7^GpcyJiqoWBWZbF=-w4&Hmm#@ql(!HB*R8S4msOLp?qfDQx z{td2Cgds!DJi;1bqp8A>!h!F87mI2ba+hCrSvGrr{xKN)F!U5ud&%^%-L)i3TPJiP z^9|vDB1#b6-v3qUZ^zlheFpx&;`}#(_dX70@c-+H|6+1Ux#$$o6RjB}2{M~GSA8Oir&T!-;B zf)HUs{{zQ)fX&kNORlfYjTY4rP&C)yo>9#_P;UN87(Es&qi~969GO&WDF2973#f`R zx?A1_2t1sByTX#z6I(eCXgz^N^|BQxENM*#Q%c1qEeCJW%5CK4Zz9u1e}jj~`WwZn z^IayM^O*Sh9-dMZLde*(pfcCI!nEc&jC*DY=O)`hnC=VCKKrc9BPV|NBOLv+JKsdB z_$Li{smP>Y_jm-_hM)S;Q(5!OiSWwxf$gBB@<~`QJO7`2%E>ve%6*D(R1(lN_$N35 zNDFB_IJy6DzIE?(%Bd%(oF6{n#DdS8aGcj%&DZ?vIz*RR2&8eDZTS15c(o^cl@`uf z*>;cPk3W8}$DBRW|AGf`04nT%GGevZw?2Awk_mnC$sdWJTF)`7SFgh2`b?6o9lRe4 z@;$(Zr3osh?LVq-Q&RCI9{676J9Th3`RG}|IBI;G!IQYPS5QrEssD*5f^YDULR&@= zPrZbf`zFl4GBX#mX;)F;;)^eZ*;$tQ!{LxTdTuSxo^`(Pjdz3WF5_!jq)~Y)e(=zv zOuP5jabC|2-+1e$nI1BJFFa2q>Yv)Zzy3PH*CWy&abDfCD5;;-ERq!%ixY(?j=v9m z5YK7sS3bpleeT?S@g%TQ`hT@T34Pq#l%RU;;1vhFBJ{=eze+9f*x=p=`YxkCN9OQs zf3^=3luq)r3M_OKg0N*Re3h^vMUV)a1ODao#=Q|$B;QCzmtFzc2l*|0S{xACP z5GspmU4QE#soee{oIt@v{znu_sIWB0OFl%#QhR@94SO5}m1EDmq3@7jGhXQpiOj(-@vL1NTXbYvEU;!-I5e z1wYB2bb47pNicJEKPIE_YFD)X8(#sUm-AxP-)H_?5A(Bd`DQ&SG4#rKmdh?tNC4S*|2IXIsw1bjuVoyyKXKAeCZguMHE4Y! z{m*g`$LfX0q-5K1D-`PGw`4(t-tX47_RkmUSMklkyyQRkLwOewx-S{*85)^dmtkW()!Mnx~%RDWr-4ke0EnkoR@&HOo7vcJQ8Amr<-Pk?OJ{QDf^Z)5Pw_^&)?SR?lg z<&_DG>S==NUR&eUH9f@ns?_azjCJm#BzYLUQRgkPv01d}O3t302XmqeCJ?q^8(DJ;c({PdJhU6XZcqguRv0`CD-->gqcHk@`UERI=UGEO#M&XIt zy&w4C2XKkEd#o%Kbm+>?&ZLVhUG}-CQ9I(OquvwvXP<>DKC} zb499PJ{!Xv6Fn>0=a2t_Q+bM$w4;k_FBYa|O zy#vAHfBoaP(66@OEa|_&h3Q=CUkiD)khPpX{IJ7=lCp3frvK%PYFvNYZ?5>(w+0J_ zL*j_Hx)gBh`rCxxy5gI$sFtB~J7-(J{`G&5s9*oaH=#fCiPPHz*Wb6@jv#ws#-9xE zq51aD6EPKx-ULJ2>tI}8yU5j=T1M2*e&!i;9v@KcX+7O|`|7xE!K3dMdo z0reCQU;_r1mSRhnEX^5oU;M%sv%!-wu8Yr}+OkZRHSY;pm;Qkkt^lSS(z()_6<%j( zXS>?o!-PRl?HP_2!*H5Cdxy9Nm6`PNm%lvBY~6iF(TFr|9z2I=1?~IgFMoOP$iokV z8#eVLTGLDCy%3!Fz|9DP>iy#KRpt~7Jm|qg4?7=p0Yx1JaV7JC^ir)anMS!Pt9ov~ zp^4Nlc%OiusNF-4SXW)yB8T`-mzZYTrLF2ZCNhhs(6vmJAe|s29P5>%8 z%IGfZ4VZh(HL*g4pviQT8LLIqfmnN)UblYELph$n4h`XO%@n4SG3e&f+WeQ+$SXBc zTYowKI8W(LS@<;{6nqtTzH|L|N}$L3T&9-m*5PnLx&97Qip>Rct+|$4zDqLCD-cm& z(G`{~T3sPRJl6P=-iIlbd0;<;u;ppV@CRd2-2@&evhIcz?NwJ^!91`JOeuu|>moKBYsiFBa@iY3Ghtb=5V))JL*B8G1%{}>wJC+ZQKJu6x`66v~0Ixv- zV|T{fpQE5YcfYxV`S2{Z*20o8C&r4YPgI0Yu60XLJs2GDiUVS0Yje48xFz)E$tdF9 zvugF=!zZ2qoYmwY-BqYnM?XmK?6jVtCx99+j^C}qe>nD-V+VUsp6w7e$&4>1R%1FL z5b7S6djAjIB_GGAil^6HvpDD7U3!^NZgxg`S~d&^`A9OA*T6 z1>fTmj%d>&TfT-zEFFTvlE+fqcVD^f6TUR7j_yG?;Smt*2jr#H)%)bQ|A_~M-g?`s zGfCkMIj2B(w8p;p5(L!630KdH{6FgK#OW|JbCr{KiBvl^?4FXi>Iu=eFtwU zgB{2mVcc78VXk3M=9$B`k+kr!SQa9vCf*T8;QE_AQWpr>KZ;CLU9Degn?g;k|2pv7 zXYsVDWfO%*uk zNy2$^9oOG@+ta%K0oIz*7{_1nhAxcJg~!6>7zpyIigN3fo~Xb39p?j;SLb;~_5I8( zj74#!GVG*F*z&M};u5?e_XO5+Q}C~nj)HaJ-waQw1l+AyttmDg|JI|f7pMI@bg}wk z^uHPS9RoA?pXq;_LVr5_+YtTth=s-1=>@4jDcRubL>VFXw>q$f9 zY?S_Yh;r*WD2U3-DTT~Qp33IUKjQ*CU-;XoQ12eXbw9wvOVU_v`E-lw^;CKcp8D5} z5{v2{-Y5S;&j@{KgFf$6N}2;fR2Wja{(h-~>UKtTHX|iHU%niRyjajFs9wb6Glxk8 z7k_LD0-hPOmUH#$Ldyk379UP70`<*_&~R6|ZMM;}<1Pd*??3MSAmdpq2tJ5r{+uvp ztdCY4E?9JTa^L;;5B~bE{|5_|Ee9uj=!C)UFr#WB+af|61<~)qh4^YVoVx3q0~6}M z|LLE`WwlHj&u{(9zxqq^-gbJm~Q5q)8$>AQmJBXI>N zvON=4*WX^c;5`c0c-D2~ro~v)Gum&&@l3r6GPT;1+vcuoVi&&Mvf54{qez@hUj41Y z3y%$Xfg@gnQ_>}_`D`Now?HFL&B7FrIwUWVK%Txjh^~p716+TzvDFpd6<1t27!KzV zg<;>?bF#cXZ%+RU%;_0Syjv$rHudVE{XXq0<+4qzR}q}{o#@m1|N3&D%xwb@h*J5l zFa5u@`YTX=&1+wi{`bvqe4X|kHvCaLHVwD){qVyM<3(59i}+6aQ~#t}xG*@r0zvfr z`J{tx*#Ept_uAL}2V!n9_$Gqv`MBuQQfwJ#%)S2iem@(QZ+wGrT>E)-Tt`s7@bC-| z7sb-2saM66NpTBw$a1M=za7?6ZpdVm|Kum0LHER94gJ|+=Gd}bDrEw!LdwpElslW! z*8j6f5-54w(rz*zWixU0)&C#kekFq6uS7FB^Z@3J!f23lW74U;Aac;jpYIJcmdDg+c(C9}j9thk)F(N&C5UGN(KX^k$h;TELO{^P@kc zqyC+yxEU=g^2f7@ySWLfFSy_$6a==5t6M#0gc(7fi=g6J@}RM&!Z%NAXTkVJJ@^L+ zwas}S(Lcg~&rijz)*QVN*sdhzc_OZPlDC&x%)l@D>zH^pxDhiVW(NN={qL81{KcAt zek#LTTA-Dh1msEPlrZ`D=E#@fBpr!6N$v_)oPS<%;44fPCY1A!LQHBLdMt@x1UML= zKM*U@$z(Ub{51MwJegC5>(L|x40PYJ>-ld+HiKXX*tUD;6d%kJITd;ks8p=%6lyKv2zmlBDDl8cv>OvF`fU z{Jidr@xC2`n5;Rh zcFN&=Ibe-IIl!%F>w;3MBoNB;Oyw7$hT*OLD*2j!c?R$iD5NRtGwWfAQIJ4TCw%uq z=2-1p!T{UoX_PXuzA|qjDzu*7{(d*_zW3gK9_w~o5KD?f>q-6%c;^AAgYcKj0Ow41M-R1sE0W zT?@N@)P4R5A3gz>{&#UU{QVib*}oIl@#0=U4+ZvL1=tDHi=|7@5}XPtX43haARIBA#tC6AGDK90NBYp#Jw1^+{9ikwRtK{fjc zJ8kOY0I%_HV8)|#g}fdg9RUH;4Caw@)tOjS&*x~aLk~R^CC;q}tDOg=^;}Ufl5T@n zk8H?Z0Xndu%RcPhVi99-KfEi|S#?D>b^Uz_E@s29VovdlYK<87igzWHR>A$|j{gnu zKSYK9t-o|nWhS4sxC~0@Hb-DhwU)1^w#8T~&Z%co90lvq3G^iZ*@EF=-Q(Cm-Jtw46X40 z{lEY1%;{C#PvsT40wqz332P=UF1Sb}vw;t3x zXH;W3=W!5m{muQBTRkQR&os1u&I(=3u_y4FFNN2tmn3=0@}hhFor|n!w-mRkRk9LP zFVToWfd|T~JD{+rpnKl1ol%X!m0p&lGvVbt@ZjL0i?yicI3VU8=Ykri$#nDsnr(_) z;&eD%z?$p|j2Ms==xq<0YnfDj^%$aMD^OfwE>cjv=qilb;0?v7O$AHZ#kd<<|A~J+ zW*mI*A;4SP1l*nXje+X)q(PrS!;D25Ezj^(ylx6SAI=j3kG3U_tRQ|eFK{X0Nm%8SL z&gwPETz7)Cvza`E^0k>cRaux18Fup9g@BKdhk|%?m zw1)FbFfosFCssE>wF^BNQWr7#tZ?!P<3JaGSH`9GO}IAH^=`6vb%6DWaBQH_Wq5#d zD@rpePLJb;P{zc25Cm&6?YVNg+<8j3G&HPb?3Y#&#+$P?-Qe4KKJb17 z-c0 zy%5W3uSv#Xg};XOUyC668!$+Q(Hb`+8S2Y!zkTq!*S(HZYX@Kd`q#tsaPy`hdSL|I z=65CZXMXZX0q8%sx9@hWD)Y||4_c?=(A-4Z3v?$&#i+J5d|MaIn&4%#_ z7$yW}lVf^aW!iV^>`%s{8(03kTjvOJdFa~Mjz)3oCNNs7XvKPVquNi~vpM!`P|xLl zUgHmVZrbd>VYGucnQktu-B9p}eDj;lOyBGXU%I@*Yy{Px`V0b!`Gc45kDwYRnpV?& zqy5kW4-GDeMfLK*SN`trur|}88ho_N`d02dv={03aMN`#j8TE+>3gUDS_?_i zoMZj3mk^oU-}&whgS%EC;9wruewOFaH37vTSkj>k89_Ay3iIiL z#RQ(pa*;H)7fH0*a!yV<8cBDV=DP-gt@$djlK%Vd2j^n}v zqj+nPs{Vcb(S;?|*b1bd4x@Wl1VC1C72ZTlv+FMGTgXStyl2*OEE4sQX{2`*FV{E5 zH%v67{DzRmORGb_m!*D{!|>W%^N{}PoR*bOt3LuFlrX&F2`Y?L+L$WsywlFW!4){( zwai0Y3#;#c2uQk7`}5X9a!;vRfP%Zl2&(VK0!%@5x&B@>7!HS($FyIQnO>0Q>MirX zuU?}FJXiG-+<*G#ypLW+4?Wrj?>%PVw{=8AbEO$Y;B^N6I(Y2p$%oO)=pn9Y??4$` zm$)P01%1r5`y6PE0t@@U>o3Q@D2{N5Cz<=w-|v6_`^o+luf+9tlsmLI)T$LB0c&B; zir31_HT7L6x_|uRA0N}Y^eJ++QLB@2TN^J5$D=5}Hv)5&bE514EqLrv`Y#sJdLX+9 zVZm(Hsb_QEoN;>pHy>;0zFFbK;>Fj*;!!I)g$uem*D5*dXyWDw2*5`elX^k745!|Y zGG4y3l>NC@beCMjJb-ZHY>$BGuD`X0C@W~8s-UFRo9BosoCuSNv7Bp!_R&Mel6iHD z>OKcp_9(3a(=)1d)Blp)cg^t+`@$O;xhh;A{Rfy3yhe~(fM{MH|0B4lBvBAM7^P&X z)6G~WXO5*j;#UP-Enb#fzm&Nc%f%z!9)a(zT3$0JfwuIK4&OJ0CWc#>4Z&}qb2F~< z&&K#K3ZEWvp5=Hb`U(BMpwPs3;Mf-td`4IWFNirV z@Ch^~zBc$3zqTsxj9WvJmftRLwSB9|v>|a-3UQwr0V~gb3@?(sr^*)M%W^5)G^KEM z-gT$J8~^By%#XXIAysI2^&zi9aIJ-PDH&RZC=}b!!lypq$M}!c5%FU2O+MQqK(|woDtGZy_z;&0j1@Rn9W0W((863R6_G5D|C7LA zv&xNp$u9MWcjx-^0fdh#j4fYrN9Ji;bb-^)raQ?BP*e`)=7 zc;nk1yz1#e0Y`a+kS>)n%e4ry^_Hi%ixM=SlXWOVDvFr&7X{1b!_!@{9HRrhYm5XAmFJX7w-?()W!S5mQQJND zb4(~S*ZKFMhaZU2th^zWuH+Rjf_JC)(VI~UdjeU3Wwre~PDhYh0NF>;3D(?>KjEuzjnQi}Lk1ThAUaZvO<0i%&l2y$uRNE zsS{5;G1lA)h)ky|SJtda=z`1Y?Kx*JI?adEX0|$ytyOf8-+(poh=`KQ*`2_!jJ>{PZWgI6zEg<~KX>cB{`Q{|t-VyeCVwr1*VOvA=+kbMZff8R{7uFG3K-aK@^t?g zHx@EhWEnV+=o5G2=Hh5P4oI{vyy!wK8D1JxhnT-%VTlg!PuF6kVP zT7`Y-i(eeB(=eipqlWfFZsLF!PX?4emTau5x`Iaa-)Cd7 zA&l+FOJ?-0yX}I@GB$#2j&)zO1VQyG7*SfX$-I`aR2~)_OzmppYD4(HK30C$Ek*0r%?R2|3T!`xMYV$dm+z0;Gw>_}$&HOT>F%ADGwJ>v z7T^y)3=Z7*drcy8^eXas)~$Hl{VjJs@Ejt}kR+ZKBO~UN zd2dGjjc)vqHwxw502zq#(A=axj;8mGH+~P-->VUjl%QG*LK%Q=-o#*uj2me46T$70 zsf6-on|}->MXSF>orEui&Zp2{zj{`?@d*uQz^`2GW?IRnuf|Sr9(qXoW*p;A#^X7c zeSrL}N5S`AxZo4;DO2E^ff?~H72wqfJjYUmROT-n!}8`cp-I-#=Cd(*w{IE0m@~y} zYALHO{Eh_9ma}r@x0jE^t!$z8z8cFi2{$nV3OI(OG^75{s{zDsF@p<&h#UIzqTv69 z!Y|xZO~nUKq9i|t8pbdGy5Ot?MTE-q;=3`dzj)~5pO<80`ds47mxlieBVEFHBmU^I z!8gRP3=i|>FYx#YtSRu#vEpQS8Rib=O>h{y%3ow?Yz}p_L4H=6F169j+u5$cu zi;F}r7xHaA=2hE}GO!VH&8AlwxCNg;$~v`=(~r~TPfRcyycOV2~i10|rE?Ef8v9bWv)R5tw@ za3fgfcmv7{iTNOaCO_RuI{)wm>~BTcbhXV96Z8Yqmy#>_uz~Y^huO1J2Q5>af1^N^ zdQnL3y2utIT`187P|1h%Q^r3@o@W2!T&(+RNMI~&tnRM6m4dB(Ani+8g|DTKb3t4& z8enAJdq1+)viDt=rTo;h7thXF>o4lXd}>-}RJ)*e*FRxglfbo=7Cm(a?G}Tbw7vqA zLcf~BNCSXS8RCzMVxGV;#IWA~c?|w-%WRs%to6)ZT*`CKq5W?-TtH$Xkl*^R>I((4 z#~^+nSqGl@>F|4u$$Q0~{H=8UCf|*~@36*sR$jj6iJuwx4VPmijh-ek-=CfT+=n~= zWt~I&JBI8Awu${M!X7)SK65`d?2-?%VXR5nAOpE^*MQYd!N$8Rrk@4X#Gu@X}aRtF)?j zC5#vlbSR8BFBw<6YC(q*dyWCR1>O*QmEPLPkDuQEgD>7~$6VYqyhf$4y=zQcvM%tn zjTNNDqMGnqZmHun%to5y8dgT)lBJ$ejX>yaZ;ypa;xU&<|BRdX-dh1IU(v3VG_fY( zPmceJL4tlIvuUA(Nr&&f_kQ+_kD)aE&x5Dwb5F6qehe%4YrcI=j+RJYCLiy;{yX6E z_ji8xcT;W!z&q|Vd+;Cs;6FwYN#!{ELufo8qm<*iE8s0iUFK(oF9iS3Qr5fSd)edW z?70`?%J~Zz04qT?u!LbcQe|yJk#rrLKk#mSJC99)z4#AL zkACXWCXS7pF@}kNi!T2tcvFy9!bvL}@M%L~XgUA8zg>89@a#By$HDKv{`EN;@L?^p z=^I)bi>r*IWKsE~kW?gIL>yzpHDcBsCdiQE-E#Zx)sqrtI}in--I@rgSFK)^!a0sT zwu8(HuJv!}od2w^^h-~X=C|jbyHf@{v=pWtvgS&f!cWR+kj;=AGcR>@{&kGIMzjC_ z(@*}X6ga@YE~ghQx;ow$jGOAPu(5XAU>PaRIP_JAM%i%|Lj4_g+-Y#w;fJUHX@%{P zWVTrv%=#C2e%ob1Y|NBsS{UQiisdtvv9B1tubt$rnxP69dWw-&*;iEZbNyLIx8TD3 z5oifCUU%4L=^9FYh~6}}M7dyZ_`>q0N-==`7~XJ|DaEsNygpz0^TO(HJ5yE^Xs%m= zMYWzD-iDwWylYY2l_;d;*ELJMOAs8-M)5JcF)j6w*85j$RVz|BO}RuN`9BK1U5cPu z1FA%%P&KLM$0(of^i#*L2@TV zAl%{Ib>2{pf}p*`wcq3oT^i-p_6Q8T{Mp>?zeZH?{xS&D=NW_4N<`@ITSVpTsi-uDvxvrT<0YNLSq`6h#KWxAO?uPq`Auix_Ko_q-}7DT7(CU_QK%L#V;CwGKk|@Gn7sHU?il z{Qby;qfAEqA7tI{df$1&`j;mTS3ia85e_CsWLkos&|e0!@6)bC8HY`K^@EGAZaMK% z&YidqcOEW!Tztvk>So?D#AHY*z?d^f%Ly1sG^h;_qC!DaRNfOrdKX!}0=|XuY>)9u zag!no?|X!+b{3PaX+)52k#t`r6JCoJ7s$Krx(j8NnZja=_idPTUGTWTbCQ1NJKmYB z&pYot%DD%wydKD6a19!*PPBUxmd$Lf0#g(9x(Cf&Caik240`=}7dutus=x34mA0JAkita+D}sWDDK~x`Ok%e#MRiV`y z;$|BCOFRI(nUMx4m@rL0vpTtwOfBKZ*~~0mx^!@-lNx8z&0^zr9)j}Wg5ltm2Ob2? z+$P>5-2BQYcu;NX3ofk9$Yp5F!bpe^8wgV`D{gtM`WA!Xumlu23PQR}*$7U01=P!y zEssTpM*&=Q1&T|Y6@4S^;HGPH>mQiaxDFiWjx!fd<7c!eAzG4%u!;6hpx?}k|IzHvLp_Ja@!eFG|0ylhc(YHJHJ%^xG4oN* z=i=23sQo{J58ib}>s9lpf)^Q_bLWI#mY>Nn`Ix6dj;fImNpAUruog;wg*nrY-Pa|u@x+f8H{<#KuYv!9 zx%u!-XT80|x1}yRkRWg-%`8QcQjqBuy115(B_sk;+M7fXl!>pLYsb6uafDgPwTHt9 zB$A+PD}QCsn@(ns?cOa$BY-7b=9E|HAMbLxM0F{gX_ZinHP>5y?tLWB#v{+_|7niA zjM|_0(jMVgy{EQ+%kVk-f5)HWQkW?xFt>poyZ-A;E<3ZiOLHvKHdTn*6cEs| zF8a^<*7g8?1iQdhfa&?!Hz1(63zxN*C=h|Eb>^8Rs8&#(c_8av-945iopgKoauk-n z`jvRr$T`xz00C;jxP;H6c!)I}>pd;1S2GW2J)yXWS*O^{o11N#82h#+#o|R^>A$7e(EiUHgzsAII_7y56)(BuqB{GW{x=*B`QC7ne1e(^%LmeX=L%j&Rh~>$ z-`D>;5pVR^9;V)sTv(ztpW640=DYp~Ep#H2(PMj$-B;uM)?T(BB{b_@B~o4tTle*E+X)&ifOg&${S!Ua|AImv9U} zf})B0pOa5IsTAD#mUSMPYgKW=2`9vJ#NK<&K}fPS7L0X-mt#&EajkCr*w2)ObP1lN ziE{SaL1qPKaZ!l;X5cStt!P? ztufA0P(8m{RKq*bm3dtKlAXc{tsva%skr)3^Q;kADPe)FM@A%d8j_b5)gJ$FFZ(Cg zeY66~N(ic%Q#_;k(#sH3qf~NL7gW0!0H5p7e+lWd{ST1O-^lb5?AN??H<^T4A^J5Xb7Eb-XbN3m1_H&%ggO}b~A6!tZ${JzX-qb>HW{S(E3+v z@<4y{-6|O7KOv_5eE_iQZ}-$`f5KKH+&|?M@W!{3u*4E??(MxCPiC1p+3d(@6$&w@ zf@kwO5hIy7d+tGg0`-3Yx0?y_ID(ZmJ9+5ML@yCP{_&3^tp4(szZ?r$X@q>2&w{so z!Jo%0I{xH;nwM*!m3PwL{;&Ve{Vvvx+s4JeUf3*0##iWDD~<3eQtEFBdEQX}PaV@k zh}5oBiv*+klb<;&;9rH1{S%)!E$v?T5@#UG?<6#;Yfsl3+3O0M_dWO6WAK3wejvt0 z@sdZpx@em!TwX23=JbEz2HTT2o;Rod9lrfTTCc^k$Ce#|pjze9+9SBHD+Qa;8P$yU z?gCc+SJj_(gQsKtyOO1av5NNTN6CK)f^Y>MDv`Pl`_!k;%UrPk{>*)>TNOrUy$LcN zjG!9c(2C_X7vOErG199&dYGucuon!6gDbjG+kG69LEBjf1=W!iu*Y!RY1AgKEPH~R zi#N0>_@Ct-070l@Qm?Ju7%s)wO#IVRs}0-lroex$`itw$Y5!kE_$utmYjw`~#~=PM zM>5#{p?~06{H3i#)CB(hG{UW)BnBZMb|2Cc-ylEbO2=+*+=~9XAL{g{(im+9{tW(q zQT^{p_P00O@IBV>D|5`S^yr*(>j(z>n#O92S>xZWpxQM%bo?B=CaIM6|Ficd-hNhP zzUL1Jga9%dMw1h-D9BuERadWd`~D5xy;fIuSKYGiUAOKnEVV34Yp^T_5KtLp7Ux+Y z1W-$=Z&j&b9zvKCnH7+P84@JSLFmut`|SPu{m#jJKwMJiP0sIq-~H~rpJzXNex{w) zYO}UUPHF#sTi^Jj;CqRCh8VwjMz#5!HkgR(Zw1vDJurTTr$WYNJDvG=y71+HsNfWZ zeBdjX_GpQf%o~W(UMyV7=XcVD{s!~s)uJR| z27ag!s%$R(rI`bfmeqgyp7#t^KJ;LtcTsr%x9vAL@0@cH9PbaUd;9awMI+E+S9fJH zKw532pQ(lao$r1(XUUaIzWN$o1^v?ae`Gq+cY&IMX5r{+-t@ixtz_X@IxoXL160ch z!;Vl;%_bn)t8ChC!;->9t_)N+-3qEbi%w>ZZCn?xmStNMOH5zxvU%daLbJW*&SjIk z*Wg1R`VgD$J<-s9OZvm&OBctIO;_4Gu^Bk!)X&E~({%e^+A@Xd{ZBec)2^^neGE+L z$YJEV8G(_e3vQXxT5Kp#IGpn9%Bx$_$;i{4)Ayj`3eFO}h|Nz~TerScRVyh|=IU31 zE&+uKDK#IcHH#I6^8xuSL_lGE#Wkn%0UkEAY%cdsH6Qd$)BYqbMBUK%pSY48d@O74 z+r9kG0czJ@bCnG2vK(;}cGg*6h!Vq^XV;L$R&j~i&()MxS{_=LX|LoPfdlbu>%;Ni zlttiddJ7j)5EcO-_ul@7L@C}Bbn{)+P?_w*~DT3MW5i57;h-+fj{`ipz- zr5yCVefEuFNXln9jRTTlvhbYq&HwrlW!Ga z*#A{jsdHV0`Nq>fcmj7i^>2xa$-eW7fHYMA#HVVne4njH8Q`lt zB<-cE!tE6>gdH1q!NY?JKh|@EL{>s*D9lm)yX-OlQUE9y#o{77+gu<2NJR$3W!y1+ z)&o3Pzjc`rDFdT}A`GNWX|4JsPNui~md7vV?N_gg+kOq=aozS0jTCT^k!ADpOj6rl zxdWup@ZWqhUeeEF;YmDQ6FYQzWkWD6_+&5K2H*Bq0?3*twEFnvieF|dmJw4z3_zjzI@0og?p4D zC|vDY%+K%DYh^S${+nhEj6#X9BbME^uqecgjlbp%==?eUl$r-I9Vm>)Epf;zmJh+3 zaPJ`Oe#~b#>Rwt{S6^}Mq%|pmYBJbyr-DCTexdgEZyuIkc*Bb@-<{{LMO!_BK7?SN zbEpD@?YdvqQ;jQyui+#g{&YA7dHGGs_t<$Fy&5HvdimRHXpwL0{7lWU!I+w7OE)!k z-lxXpeFlE7p`vH4|7a^2)JFr$q zHf!9Mu@~5r&^lsKgazfwd#~1J!3(~C{cjr-WEC`PT^nl(#?f;3szo(|YC8&7t?P7m zu7a5@xyC#3eF5u9&+Uz3hgNi)YZ}iQ^Vtt*^~5|7w|#m8A-^aXAw+l(1z{DIo<=wk zg{2L&KWS{=>#o0_gf1CBsS{lQb|VJM+K+$e%1SC})jVw}Hn0DuKE)*^HCg@*=L@`qu<i z&iQ}&mmfeNI5*?5^PTyJX3P~Tkl07G=KU%Hc-N&L`BbEz|!9L**vrO$#8M^`#=@ z2`79GL3NEWCag5(*XU~=zH&Fs((q4Y>cEv0=OFKS>^TW>fMDE?PqQX8JwV(*5X1qb0T1UT;mg%c5D=-!(}s#0C2HoDCYcAJC@q z+QRD3dN=uVr!Ire4?cT8?N@y*G+T(n)RMiHQX;DQCq6 zm}9Q(%d%Ly+{o1TYCD{5NPG9I<@doj8TaayaK1Q>hW-Zf+=w;8+5G%eag!VQIR1?P z)?1BAhUdHK5~~1`Q{^AVtohc=^lB407ZasY`zr&t&okyj1<_S>cj?AA=%!ukKHvBe zZ~#+!*_rHP&LLXrXoc{eKl#sb7xxd1$yEJgL`MZ8vpEC)9q)KYgw??h`iO_+*FC&# zw3t8DzsKn>eCL1rTIYGJ>srR4)+k z<}A+H+ig!h7ZbEI#}ph%*Dyt?i5drNCu8LW?phb5T=pOHAGU4#6KIKeZ~vlR=)3N* zRWmOz)+Z9r=HPGLCqMC_g;#XbrW@IwlFrP1s`0<-gEZh#eV7p2U&Egdq)Q7-ctPGW z_|jkZnx@JT7NL_08C&P9ORb&$_&?K6V8Vam6Q8IfV(e_W@P5Gjb2w*2i}$kSS`o+` z_oLX;XKh%y?7OC`vh?68chyJMyX2$Co5Yh2{CBdWF1_m;Tq#%;C8Cg&>E#>-!2)_a87`d+&JcJ5x^`d30^ zjIe#Q{!_4k3Enj>I=S)PzOLK(NqD5F#@3zNa@#3E%+?nXb2%gEIAzfpE!Qe;E=GA_D7`w!${@BX=82k(Mezdg!Ku0tGG^w^*vJNp>Yn49hYW&Ru+S7Sx+@FVOOj`@^d2A?|m z=rE%^doz8(_D^T6{lDw6S@1((a>c5xjmt2xPCxC8@jFWw7Ai}YP7+ivU%o5~HkPx-i-O-qjFi?49N#+pU`)0Nw+tkSvJj8K zxsUVW&o{?n*Ibs)^@2whU2(+~>^UDF{Pd?k!G-rugD;-_MU=kw&%R3Udnz6p-?fI6 zaUbmZON9VkT;E08)x*|*{Ez=Jik!Fq4CQOq_gPDZXth=ny`nV;6TY<`2g$G2{3$hW zTSor~pxGxsfyM8azVwxN9{b0CKmg70dCsHeZ$DBA{A7;(`Zeo+Ept6yZ(oF+DtyQn zNcr5WjKS|qrmTm^%ktYsS6Ob>Oemp`|peQEom;#;rD<4_rY~*cm%o-e}P)5_Gev*fBPTYe6bds|EbJ`NyonaO%mIK zpPA=sE$2Fpxb!Vr0b{@*4CfCas20*`rz?2gC$PrLpEY?>Y(?LHWbnbi`e0znOVBc_ z3!uA_ntT`GzxxQl$0>}Q^N zX6U^3W%$ut-Q%AyL%2ZSvi46x{t3~s1^j{U_+Y_%{ZB2w>z{llvazz>B#Cr)T)Iv{ zHHtPll7O*ZMHVgPgrtl1YhzjWC}&hNmb0cmmAON&gpL#Ds}eC8GtRjFO-VyP>72C_ zb5AVunxOg%91AyZ-o)UbgAPm|dj|fG^Ocm;Q-OkN*YH2Y=wb~52OOyNag z>p>Kkloh}Oe&Pv_38hVfi-PLx3C0A~&TY1T=UNpUd;b%@^fjUNUuEHqpzWB$j=(FF z-*34UWiscHY0GvnB!wa6q$CpO zLp-&lqBX0lR|FGk{B~^`^QjzbFv7b@0a5Uk2fjNm4Y{5KOW7yaT~j8p|; zW$~*()%2iC^!ykx2`d}48EHI!^AQBqd_L*qlfyW3QD~Y7Tlk>su)ff)1*;WmRz&hY ze}NCeK1O?y2N}xw)DVrJz^GK9iMB-`U=~_yS`_~*zwXOBe1f_&wKLqyKN_RZq8i2&G!MM zLJ6<-ombNc!`fyu6RmXw)xI8fh=S_b^vANYyY2Sd(auIg+r>BO?5{EajydM&Eaq3Y zGdxY}a?~?dv_AAq>b-E||IxqyXtcs-qv2^BH&AW{)LM0Oc`g>_3QSMK^|s?75DK$K zC~un_|43DR!ttr-unijP(xvEMbh7M@hics}QDDnBmr1R`cN2d&=UK#}T16u#70SDY z&4}97TD+?TC3C5tLj+;Tm4fBsIdwq@W3`N76_=b3x)p`tVRWITZhmT0mBrIyCh>g+ z%Wh`Vr4>cX*4yTkzwjV(tA7`PKBo*2N5+H}gb`G`2|xFoOy*~vaaI_B(r;S?90$Dp z9bwGH5{E$N4Zm4N+nVjW-fifOz71ESS$|#~eqK6_h)}I?)c%rnOOb5AIofW##BzXd zGCtEcOiy^FAuNa_A~>0vtCc_VpExHrjMHo^`A*^rt7qMSd8I#+pG-72tSV;+%lMYa zHf{Nx|GfHqB_qP(c|Mrdx_|h8{UKJpYop+`7e{-vURD6}Kn%bApS%=s>e@JN#Bi^v z%ge+eZ&7~*H-@p&EApnl5zGbFw4G?(@fHCn?*T5&L;{3g)(s-pHrv|%t1c3!3SRL- zfx@ivHbrtspLsp#p9b9OV$0!6b1>t-RZt@WW#L^Wlhq!buEKRni= zkFje0C_(%PUdxbxE@&{X^j(O-W3DZQ?;0;>B7&NXRxg#QEQR!N-1|TOkN-VZ-dZrL zOqF$Nild-)N-_f!`qQ_m)>*|32i>Ft4hMs&AoG zo0*sx%>y~3nlZ#?p#qdv8(L$?oXQap>>pxLeG3Y#Y^uy%4Ds9n-w*N9LEcB=8d2zKyr*j6eA}%qbWq z6I+mj#-#7{rT_L+zK=iq)=QSSlRl2}oq-Q|C((DDP$N1`rS5d-Z&k{WU&}ajC&EnO zzVn?2a*T?KtR4--8P#z|`eNn}+fsx_R8sfYrXb2AgS09Y(@)|4Sa-&@zj4g_`b!UV z5t8Pd(C&T}1tOSS`|it`)6R>u)n}hoP|exy2rgB?y!>(m)hMFX8PyzVbG8bY`{3Fe z>rY`hF@t}tXPq}F0e=eS^gy7(Qmipxs_B;V6pw&dzu{C0bAWmo5_%H3yXIZ;cpO$7FATpc-Wo1=YF$+yf(qc-zyv5@WXln03bg zR3`nNd`I;xHGMUVYdzy%@9XYG74)cdVEnu8x)c08dzviyvF=Klw_8*n1x*kLu}75F zxttIi{H*zzFd%24V}vpI*-J?LhFX+Gq1B}RF73<@eB!l_`f|Jz%`N@w_6nJWI z|1a+!?12ZCFQSCt(OI*YpUtuak<_h|s_CJvA7-%@)Ki}p?C}A{Ht*CGu*wpbalOHu@gEfe}$Mcm+`!M`3bgd+qV9e=9Qn{`wQsyVuWgaUoHHU zIrU%9X=lEZmsj>GX)A@dNxZxXKk+Gx9tiuoLre5yjy*Qx&j+zY-xEu8j|+^@yX|}2 z4>>-qMv25R=5$H_kvO5y6aEr?D3AqIfgM>i~pC_BB-YBRD38<(8_i_o%UZj41YU(1IC}n z%WtWBJ1|~`g+`AYNw8!|_GWSY&6<6gf>`zlmbZ>QQPBWPJ4_v!lekrm71=R}V8GozVH$ML8l`3ac zljq1g(`1@&4*i2KSpT-_|IG^DJ?>%bF|Et0ANIIBJC}~P|2J#-DQYXPPhK_F&6NMm zQUA}O7<28_@Yoqgy8ULo@eVxHHLu@ zZN7?pTQlZOmXu%Wie(2lxDm4?VcBm>^~F77O#rL4t(p-GaAT(qeLp&K2` z^yM#oIp_L#hEW!h4W`!G`(!FUvpxi?uZF@O^Gs)ZKUDy9o2q${LnmJQE#3 zd&Aq+uVHkMH^%33r+kj#?pBRY-NHdsE%6@uo#v< z7zLG#dm9`7%-a&xW~4Ut8F&~kGX6zqrwFjzYhKG{$IXa>hnhrn`C5!A%do0>#Be-( z3JvA++2sFn#Y$X%1L&z(06rmJ@w$<9Kk+|GAnYXDbMaQV#WC}Q2%48IO1&m?FOBB9XuCNK( zyrSiemvEiKboc1htr>Jr90+ax@!2^~S8-Zqmf}OXol)`PB&;LUf+j2Ai>u{%B?4{F zCDpaDjHUZ??pwLfXA%qZ*Y>XqW-plnwGTGEw-b>rm@%_H12O*EnQVKM%vsbH_Y`((&rs-}!dp zoGh~tcW~(_P?9A4x~_O7ZZQu!@Idn0I_^DnbqF^KT(~u6$5xDI>65L!X1*tfFiE*b zkPiL(`fJ$!Q<15$EIF!lRbS#S?$)=A^=Y?%@)=+M+5XDqx2>Y`u5;9AKftq`j(K8H zN3e7ksnTT2`=4b{W8D5{`Co>n&vN#!b+H^*v3hj)D()z?{5>5eneGO~%u5_1XyuG* z%OB=A^H1hFz7=(d1hR)_RV@l;hze_S@$26#+#A z)khqex#~&g0qaz_-Q}y+6P|auhIzq!>JtABzv!G^5A6996LH`7w*B`TJki`gImYN& z!+9Y2X-yXw&7(=r?8vbcms?IzBRM2VLd1G#J? z6~Di)3%_DiosD8mDgPU|{!ZDZ(*I2W-}(%d9S3=+;lnU%Xhi?s4~p6T?BMb%E{_%B z#TWlmT$ldj$68d+Ys~dlPbME#SydyyeT*=BnejbZ-N%22Ns?+jvr!uwJ&niCbI*9n zhpEB+eH?NR8zr3_GJ-mK8pUl-lamZTPYv$xbszs7CgGvSs<08%(bIVBJWozC{5&o%@F<4uweG+wv!78dlW8?frnNGeD39leo{z$+3QL}$t-?~)yFlpIi0Xyo zgnI!54l!at(O037d$!~S&MGUZw7OfoYQP(cMRh3|NzbX{|J44!-uj<1{$;#q>krrZ zhaPeWIqS7VK@W4RV+}NM4^@_hOR`7!^YQCGk6Pi`t@&qb1;Dg;#+b3y)^v@mSLGOJDv{1l7;1c?Md;L!?jj zabKF-_U(U$iD$-W>kVZ0Q;)7v#;s<6#hmH=#Nhbjj*oJK zXOip1P5y)938M;mv*!wPxOf6K5yzWcl+hBn$I@$r3LB3;`qem

      q}v^`K@?hWy-JHXbbuPiWV=j&-8c?^GJIm$BaeE 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%0D8M+C3{@7UW@@CYA<*(j~EQEsU$O>Y_ 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 x%U0XjH&z$Bo_hzqo0pOHe*l`I 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 z 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

      5*n2(a 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≶$`I^4 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry022.jpg b/documentation/doxygen/images/geometry022.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be328e470dea47ce544326420269b5ea4a1791d6 GIT binary patch literal 45641 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry023.jpg b/documentation/doxygen/images/geometry023.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d9f857ce6b3bf01bd7f2a68d754e517aad4572b GIT binary patch literal 48620 zcmeFZ2UL^I)+iiB5fGJ7rAw%xN@!A52!VtidY38*(wj6Z(rXAM6plpd~A}3c7h5 z#xH=8s^<64F+;-{JcD(JB_>y{sUsO6I`6$rE5>wiEW&#mJ8k14ko;%OjI&q+i~_o z)pGi-i@<{c*KC}gk;gUkkRdl6zw}hyEoK$pxeYA%$65;OF@Mc8CLd|G24`d_BowMscJ=%c@?)5qb{aHa6`@dG*e z7vYDmd(Y9!7VhOQ$2Lp{54%5-jA?)zc=;-rTO#__KG$6Q*V=C||C4wcqrMqhe_0^> zjpl!1)&HjE-@N&^r2lUz&c8+IZxQ-ig#H$xzdfY?p2PWno!;zy$PD;o=&H%$HFYV- z!fisFm&I*@R=>ni&wD5rjCj!VKgv;7>&IwuztV1%8Dbq|I17+trw=7kNy1qPc^POfr(-3U)5Izkg2q zu#`>xw`e}1@xu)}FH^7+gv}J=-WWHY(pERkx^hDIBV0H8n8UU$2nFxYO3}r+S2FS% zT8nk1W-u-a@3gs~Xzmnux@8T#;6YGTBFtSbzvHTf2FBT!kA2^dV-E;@Aeh+nJu5Hu z@i8sUDPXtf`U1JmYgXAS#MN(8qvtBRgszkx@}vk0;@dGvLp*&J{Olg;fGhhuFA z^R45|WcOJ2dPK4sb)FYoe-`)TW~NfQ3=o)pUd$0B?UdQd-?6;}AM1&69^{-{n73PT zq_p;PW-s}a#=!>NyU(k2Rf)$4j?3kDvmZCYW*oW?wqH+ z&7@GIUt~2=U7poxE&fQu;S(beAKDQa8NvJ`>-7wO+qVa@!F0a$a@`oiCiY zIS`=Z6v()W|FT>TMoc;8W{@4S&(&#c&$ZS3l1=!x`(%Tz3iPoX_H-q_;Vj;9`3^`>IGU7q9KuH~Rif@%%@OK0<24u!% zFIHbMwdsGQ``gXAM&sw}MlqL1Z+1UWc0xTYA`_rlAA>vbLyij}OFAaw*F^b3N3Dl5 z3^GlJMZ&uqlW%V%UoX1eZVSL1nJlogk8ELpHC^cP8(!6Cy5P`2nJ6!}eIE@0q z=3$TZYWwa3$AO`aq4W8=zPXQm>5dsE9;?jmPhHzDj=749;L^(zsx?B?Z-{I9G2tCS z+!$Rga1w(}Kw1|db5j zG|bSQ0<8J(w;Rt`zkF@VF@N2?@Jm6c6VXqRr}hQ)qzPHp+hDW0Ocfi6Tk)U;0Y*Md zmUx&RqL;0X4!J@wlDM^ET#dI@Rq8-=g!b~F#017VHoKGpMD_1gw3`53BZjlEQPjHH zSx7g*dC0u{yQqv)K&-nEt#0_Z8&`9e8S@>@mhB@vyU1P2X95sW+o*#A-GVVhgWk;Y zAnU<`H1Ntg?V$4*p)6Cywmz!P$v^VY{Qi$fcehUuUu1>5nF@0y8>>BcARh}n1$Ztj zuH5()=*t=&)B`JDnZtNY)l%jca;-=2u@p8I zX$?@W5cL!)KDH~eOLijn0itIsn>$4)hD(Vxo-8xPQrHc0W|Ew8qFb=6tdVAD*sa9{vJbEBPcnWcEN)!Q$EZ0p(jIN!03s zx$mnkY$%)p>fOHXQB@7NQOZ#BOh(2XneB#ZisAM>)uZVGibPmE0%MQr z!6-}^aJUdICVJ~anSLtR( zumPdG$eysag5gYZP6z}fVXvQnjf|~CNOEVFrg`wFp_83ToK)>SLQx%CnU!u%rOS@F zRViCAlsLU7?o}u3x78~Dw^wVj$fj6ID}#xmP}K5~KKMtmyR#`+tymnc->GJz795Yn zWJBQb&W!nCJT_x~l`7U1ZFFnJ^lKO@XEAbjDy`aQycXz5X+vYJ#>R zGVDyU<#RLyhkOVXg5Se`gG^`rZ$p03JJHLU|JtrW|5@m_i`7%S`WzR+1YAoeOl8OI zvnHU1O|Ept*?D=>Li$GFm-9oDZkmb`g(libv>4?rdsP!!JEt%mc3`Zpx%2Bzwu?7^ z#f}$$r4Kkf>?>6sRh-bJ6f^M0^=rzLQ&YKAKkv2!SID)Racx3=miu)0CZstAgR$so z9j|1Fj*?=6eE!!|(-Of_=s==%*E}{Jfy@>ty7$}Q0ssEsfngxIj^ggnBP8eBpxVI_ zL2L+BRvnnflrr+HgyuWQ`M%zz=hw`Lf)^W_19_vSSWrd zws=Y zHU;@KtA8>r9rb^bwKRX5!-uwCvB)n?2IaGJ|HS0__kVx6WAFS^)=Aj^ZDK*lF8#N4 zWbj?UKb0C~z`t)SI&S>NM==q1Ge0_L7HhIa*(UWmVz9XbC3fyBs{(;0uNoh<(t6JeM`o z{H;RT8IOYCK}9v<}=V`9d%o1W!@#L(!;7 zux>txPyp4Q|I~h?6@h6H{FsBgwWQBf;7pH%$THHeOg49!_XgjeDqmqJ%*zzU(^|aZ#p#`o`Qz0`BLi1ZwLa@!Vs=MI>= zRtm5oPlmja$&fjxf_k2$+4=>!UWx}XNTOMy(cK;uv9RoN))JfY4SE(5jRJyxp#gtq z>H4B58$`2ogYzMg_)^ChNK?c$y)efV1+%xc#lV?L#`zzSTi#Myf6lG-USOFl(3K>% zS)%?Y4SpdF=>_-5F#SdguFPAY=iuN9Ef&uyDVgYu4_a^rE-CNRPrrCDj=_IQ*bP#s zh3FkqzjX~61&Ee7#~=&(d?%dPgiNj|0g>wiXcT6ks{0BSDmYoUB;{T)w*i7zS61|@ z6iJVvBaHLrQ}mKnqto2Y14U#)Odz&7LqLufe3fRMs(1IfvN<8#K&NV@D9u)CZD&|Z z#mrsSD2?vWEY9r*552b~`M#Ij{s{W^jx3uErBDY8Q;_+zz)!~xZ0-fZ<0WOxP+?rp zOrmNGl;1(@l_N_l?#05ObCIcyW7+dnr+`}#qoljmG2w&9^CD(|HVK5#Z5m=62}y6B zT8`+8LQi^2YqW*EY$*>1WC9zHjCuB4Og;~4>Wwq|$XeDBrB@~tzD`K=p?R%q@QA`z zCcji>t|F=n~#3UR*PDxRN4T8jAfwTr;C@aScRui zsuS^VhmxsucucQy7Z-Tjeu(;jRh7u^cVd)*8?u#JsNpiv?kn6bzt6Op4UzH8@FUfa zPoxTMw<=x)ed(Eq_=d2p`TRcWsAdV((k#)Wd@Qfep}J2_{{FW zc2>WjBnDRd1%9(Jm{Tz^Ck11_-_n)KvpA)b&W$wLww)kvK1|D zYs4yZc$BWx+E)mSMUgu6U<`dk$ovUtA-k?#B#HP3vl!j7!L`npnpNsIrvg8u*N_cq zI$m=Z9@oy<8SrAbEVTPOPyQhQ+ACw$p1gb?^HK%{Th2&8o7v46f0KkKEWu(?q!J#ih+FG_|6TRXqc&);!vDYX~!c*&wv|eZZt=bT=UkI%9UsOP8D~OkE*ZR}?xYB`gaZ zu}j8m8c?WrH`zRnh1v(uvjmP9;U()X^RglNtG-In!x3-<3CF@WZF0Px$EMTu4~with$H$m4mnGy2-{xL~WFeT9uHAwe^qeJxq*ZH#LDAx!?brYf;kWzqA=274?R3g~&$Q#1 z5H=-Aw8$%y3htESNGcS>x%E9C5jvMJ8907&`Q;6-x!>n=QKMK&dLqh?qzaa#8c*+m zLYw8Fr_7Sb(Q4Nu)BT<5?Fn+4z(tGVlpd_v-BhJEq(eV`ZS6r%n5pzA>L!i8Z+39) zfrtHP-MS>_{ao;5vB2e#qsku)a(C8SejDr)gdqnk9Ln=y_Ki zYFR|jq*hKCbitWx7bx(2=5@z^kp)p!sVn+x$*{z5&jR8nz1LWNuJon!bLx(ay#1>R z>tV+6wk}L?oldl1sjGVDg-2Wbc+IfztZw)4VQ9{RxJDSO^9@3Wb2zFeZ4~4tU}yi# zz=E2_iz`Oj^58e_k$IVM@!-1G68NLAOmDkheTiHzAw@49sXjaAtCus?5DwW&CP|F^ zq=wgBAV`;}Z4WJ~OGZI+#gi6mziOY^>>g|_v^dYsU6wH+axZmQWODhs?_G;<*#2Ar zD#I*-F*_6?!Sr2%FFO6qZK*KzLdb_HfD}yWdK{7pEo(mB{QB$-?GvdQ6(Py}@T!0$ zT^zW1fTi1?I_jp04)7~u;^ft?QcmlHbDiJdddWA>&fgCOZ%#VY#nBDr#L@M1G#SSp z58%;_B&PtB$|>N)@1muuCUQJPBVI3qACq|B-oB8SfWhta#AMhiCH~s zs-ak0+lz@;1)nMi!d=ngaGj+RjW(~ug_3I}T-iu%TLYaq4tra}YGt2Dc#`QYH;W`8 z&y_D@ifLY>))iREpoCt8m_}%5XirZ&i}wR2f(^ycvih?u7y4AP!a;U3qXgx`l)21i zuG%c)WiFKo!qkL`Fq9z4srT7{du5mEZvJgq1-AE?)o*k%gaR?10t!T;eSkf-ofnC& z$4(9LclI`u+}cjd*qZZAwX~J`sCD4l*jrX{bJ0H6Se{QcSpRytrLqCj4e?EDB^PP3 z{^pF~cS>kyMfG8BnMLnQ$-QtM)xm@(H0x*yby#bhv$r}1i$NNvBBEPODVFU0W%I1_ z+xhTs?&j&o_GHiUPDBr>7fh3Rp}VR_A~tjlT&LiSDdc#{BO3aYzMm!R4Wh?f6m()& z)M6qNYv}w~q-F{RC(B*!I=Q)tZ+2g*by!lY8f=yW(MUkKm~nQK@uTowgUbo3E4*w$ zVPsO1cNZ(L<80Q#)ZVzqMh%}q17C#L@ONTN)T^^Tc&81+TRYvz%pPvt7)q!$gusmj zCjDLMsy3`E;aMZ5#l%nY>Rz>bT_=jg1xxF&md%c79P@)P*wX776A>J_);VvT9S=jx z=I<5sfJgDvFB*9DUPER0W04bz)^A&ouEIoU~tUlxl47D2ETI z>zPhm{#H&x__5tAEq>?uS5ac&_CQuW@r#=7(AQ1^SX}}xX<|IJ<;!&z0~5!kgoaj! zf8EjK;lHSmQoT+Fo#H+pCMmA~<>I(19)g)uH9b51nqAyL+)FHpX49<@CbgyQB`O7(2}>@W_g+zN#%zkbn!tm2s1x{c+(y`2Ftzw<|)C_pde zm3BE>1}awcB2&6yc$%nCYo!c7yP^Ry8_0*LfN&cl1ioej*p^wFUw_!x9MH|YL7{N{ zplz^e6P~dRqMYEPr-&9{wM;auHbsB;!_|mI>W3Sa3rEUXSSi>=?URfp!PrD@WN@a>nsoBU0e zznS6xE+L6Q8Cg=ym2krDU!6l=;ZVcN%LkXi8ad6gNCYZ1keEk)97Kbv+yU!BOcUy={^?0vLSn zHFVN8Tg;t;;z+%=SeD>f7Ob%g{q~IK(kA&cxiG{jz*dpx``|%QV2!8w_K24bB%Jv&0Dj4>T$ z)*ujw>nvdc2}d9?Cx8pn<^pr^0R!^)(5se|sY_w&7j6I$1&xDWcV9b75(k~)O1NOY z+Sr-a`_97O!+%$@yH$@v?pZYou*HK4xDPP9+qF4La4zg_w2A9MT@!fV-T+4_9aNfBzVW;!0!^_tazfY9v-){(>kSYC8`~%PPA-p>u9S_3+ z(!5*o>gi{}`YxEScRdPJH-%BD*cW=vRQKv}ASw7HU5S_*l}-0h>*Krvd#1D>9{^Bw zZCY}I zx@ynq6;=(FQTRbErM4oW@Q+DJ<4ar_ zT&gp&U&1ecwH&4+@3}14$SGA^9Mj}^mc6oz^$b24XcQs&s6zy#Q)Yn2GvAq)PW$=wmPTx7Y)0Z7Uw=2+4f;|HB#_?pPXC_G2>yMH z%+;$OFj;Vv$jzf$)+Uo)6au*@9Z(ni?36OGg%e=vBk-0*MJ!`R>31Xy4^!Ao)m_9%bJzVviyVJtv5-IRz$Tn*4PpRovsh}{?^mx zN!%6TZ&u#(mhod}$z8!KpC0umb9P|M_Mzgt!*;NuA%B+6MG;Q~S4 zbqs98QvlHR&im}q_m)RpVT)v^fL2w%(bic8^iSL6JKt^wv$P6Ycgb$|qoc&9mgotk zoI%)}G&l~2djJBseB?R>OcF$iDtvxf+fCv(g_h@*1m}Q zY{czQqxe&R^H7tgPrvA<^#u;E@o*${HWW`A4|%IwAHFyZ>#HjoxSVGsbH}dHBGuil>}7Xh7N0Fb&~5j-`3>dr@^nXyg5sC`36`# zaZ0<3S+Z#3INS|vB}l@UU)F6brcvN$HAfk+AwG?;D?`5V1WhAi`~^#fPs9XxbcDr zsmF#(HQT=p)cSq!mn$UH@69%(&GHPaC08qIKB+;2i4`ERy9K1ShzgANLU~ev&o)7z z+4XIpJjdIiGV=v|iOF4^k!#DVlt6SjULKxh%cSF1uju?KgFqa;==`O&?cqDNG(&6XX zGkl#Wngr}vjb3AEfnX;)c{(XL5pe`wn=!kp7?jUNL&UAR>me!$6Wp?wZ8&idrU~1$ z79u8IC$U+qv*HtFpYbVRIQzi^5m^s2$pUoCy+K{ zQb7bWdi;L3?2iKsW#`_L*=><>={^4|JMT_1Z>q$BEjL2-!NbR<#`*eVEhe)0BiTfJ zA<0*h0;nC&D#zt=?osN}wpMn!>WO75$3Oc#`jI~Ft|6fMWjt|D%Dl~;DvT0yrCogv z3NnGCkQ&PE#+a-+Cr+Vf9Zx^qCx(RmXp+~h-|5S}M)U2FAKq($%OT4%e?k_=Uydvo zVSR2`BKa9_D)qTBm>&|G%8|2^5O)C@+^_r^gN-u^@u{$2*>M*8!Dw*wnuJku3p;6I z<^q+#3h}@acxp5`IfYjrnX&jFoP{){vzWR@vc-@Irg%nNhUY0j7~=Am-u~QkeWVMw zGZS1I0HX2Es~Uvd_B|zIMWQVV>F7BRfovr$w!S$W6p0Xo?*(6)AywR0Yk7I4{jn1N ztoJqBM(Iye_xB(r2lq(jXVW3yD_S#D?*)F6T2_B6Sk6nl&i;_`^0>&=hf<6ultqDK z@|d0F=WZGOT{Y8Bt{*(|?4IwY4&-=x@Z>LjZAJb9^)G_~Y^MK2gXGV?Ph;Qw3HAA3 z20Ity^Cuct{_OiNQ=q4mGJ9e9tS;85pn}LM86~!g;gEI*$zs?QX;BkqAOVX-|F|(q zwi#jKV5nNuN((~?1xUO=!YB`>GA+_gW)!082XEPvPN*M=E;r-%!;xk0)t`@{N}n<4pEtbDnhTcERc>5?AYg zjHBA}htLx_+y-@TtJt^5_YfS7ZVgOwCn9Bm1%x<@QBV^wE{)~d1kD9s>V%&iA!lZ=6KhN4 z+nEZ}43P*n!yM=Gy1y-|KkD`!HiwJN-I^bE2E7Syg(^B9w*TC6!8Po|cmSlvv$tla zdv~QCb-1LtY%Lw8HrZO=1K6eSMx9K}iur5=|9{f>qF=TdQQ&Ko(~2XFErM!7L)R(} z$IXQi6LRjJ*q?O#l3ct>p%5>sKvrzEFRl`5)1bgVu2h7hA|^0CsH16A;(T&G(CxCb zpQ#(a;vnlYq@Do;f?}q;^N(dc7g2R>`&HZR%6vb)@+uoc@xRop%g7I>R9g0UMU(*m z`hRHf|6HL+`#Jt4AhBubTKc1cN3*wDx+wOL3gKFt84R6{Kkprmt|e{mM#{Y^QwG)8 z|J*)E8cX{jANboS8mgm(H3;4Hx{E(uOyIp;|CGL&0 zb~&kuKHNX0bP1+&--_N{UbhkSrh$4advfX~O1a-UH8rSJo6LQ zG<+!M64y$g;k5)tVzL#s7Mn?(U69`kh8mkXiKKG*A~xg3`Q(CUgOtUy8BS+JFmA86*2q3(!i1Fb0iqS?mnmCph1ru^Ohs!+{HF8R``BRR@!t}n$ z3sKGD>T2pbFBPkiKFFL}^fU_Z@jIUE| zVwVho%O1;x8;PTSse_4v3s5mKyAR5-ymiNolKxIeHq9$(^}(!G2X?aHA)ygg)8bq_ z+^IfqD1@BUL5kWzyg>C67%p)mj0bA*jwJf`Zhz2U8t}^>&llz5qWY^)q3EIf!WbFx zOAM@=vqC0>iPkJ`nX}aKsnCwD#j42a%Oxl>=W>Z^B9;Tf!j;Qy4dP~NzJ3bOJi)tZ z#ZNI(G#qX{-WK+Q0a|4)9rRmgj1S548%>B7rTn#K7<9bFIroDmDeDQ~vf_VEh|VBg z)cnO(n_ZdrSKD&a%EvxO-5Z*LY%RV!Rkg3h$+J5Lb1Lb%93BQP&-ykiIdKSyqfM~> z)EJPMn0yeFU!hw@^82#t;hfi>!UUb(FZ{0Q(pQvYOeMNq@iFSHG*RK9e4?k*mydC~ zEgUWc!)A|1f#w`*XyL(Q6NLRDr9fr7p{8XTuA)yz77| zRQBdmxicJb2NOke(oG7baSNkgM!s}KPd44X~bO1sdH3f|-R%4!TbD&h(y{uy~~EraPzjjh==&wMM1plKD5+)L&WiJ4w-4 z73zf_8zv_S%c^qM)=*WgGbFap#g(X39pP&ny7h|H_zTX}^*hp-TXn}V*3auD08{i5 zxHeEoJy-%a6c*3P34%bVYkosAmQ>hLm5B{4xDsXfn#egszYuSN&{oCNP<#Y86B5xv z!T0?S6tBjL%byoijddJD3qDlSjWe<1Q@m~x2F<+@S{x5C>F6m5SldqSlHJtbNt?|u zRE@Yy-G$?M@NhV+$oujl8^WuUUgb*FE#;b+C-YYq-6x$P5P(gn%$@!{MoqOB7A-oq zGBsvyBgh~jM^~aVUr+cFTKvXP;8fU~4W+`2XmKH}T-BU+MRP{jLuta7>rPdWEnAE} z?m{a6Du}br3G})X+oQ&x%jnKwz*A3T_mfE|ag%hz(@wsqo>Ef`KUQ%}=ypi>bJ<%p z_*Uv!46LDT*jr~YG*eVw8dqi&S1}w8G&+l+g@$?`39d{oq;oC@E6$?Jf|ibd)GGxR zzNJasU0Vg%%-W?h2YBQJ?D+q0x3XfriQ+sryk`|!P&H+!7B38Cpc+(tSSe&MFRYVV z)bw)s=hx*N>jba2vnEy5Y$&4fYlXlHA562^K;-ir?Z zvb$XPXL1PNH#9a}c;&fKNzKg^oR*(OW>AY0wsw!FCvo4d!oXoa+h{VJt00$K)b;5w z_^LMkW3JxkJWe_XK4&3`k^Lrq+5Sl-wFCO7ARxULHDi}Xi33tSyycezinep*HZUvO z>vvtzST=blYJ_JpGUlgE9DD3#?k{y4F#ZuCzK%>crU^E_*o+UEp53@>j!pvWgWAL^ zLvF-YB025wncpN%umwz?Z{bP{@)+X4prr#YikW}mwW!SH+1E@!UdQ;H_=(Av#PbeddN{%nJ>()l@46Z-nti^spbi#kQVAEnf#i1;x-$A^KLv26om{35o! z-#yZLb$WLCNRh5leAi2(Quj$d8oRzU@v3;LYoX8$-d95S4ukqWx;v_`(P=lmFcLv| zQC$u^v?!FSX72Cu!)|SEQ-ypiT1@ZI8IlyPZnX7=Bl`h1A4i2g&hh{{K`K-eTHX-t zQ}gqLi=(EFVOHv~dBQJ*a`3`69Je&gdW!AiIeWZeM8VN9xz%JFOEq^HUi1{~QdUBxCy;tJ@P}!($H>G=NuYB^5~9s_m9j7YgD-)fg*S0f&|Z$nqHBxl z%4G`e3GI~ZQJxj+vWPwfh~=LG`g^8Rvpt+eI@i5Y-q@Qi4IgD(JuGobPkc{G%HS=> z!}&%>DcmlZ5);otge8}OTQ_?A^MpqUShW^BOf5RD5X92qweT-((xiKSA3Jrm4abXC#E+r@=25PKM%n}oz zi`=xH2Xf5e$A=~B8zw^cmQe#?iJgS%34*WT%O$^Np02eqm^TFRz$Z1qSW(FTr{z}< z#l-XJemnVl8u{CPzTKJV6W0BCH4R^EZfn$jL_$n`+-XU1uks zX1L5#!-{9Ot0h{-PGyA#n{r{&UB`KAd2*>AsEWzvcb7vZyql6}$hSN@B&YE((}@JT z5UrtVHM?fFTqck7@31U`$^42qCMOT|+)jK&-Ij)*dSyPg*{hak%|z$J5RO^ZzzZ}A z>ax$O*MMaqux@?ELWYB*rvSEW_m+*$A#~dIdlSUgKy{+?=$Vf*LLkUS(5&aa=R5o2 zkqLIHL0o;&UsgEtO*+k_Wj;%GZjZIf7tiL`evfRS`rS^PB_*XcWOTo7SJ~*&& zG5KqpJ=a*Lab$S=0|7)}4m6!(w6dllG;FC;z)hr+mzn@H1uw!G@nEB2N4jE}K$HcA zm9%J*5x=Kua0sV8cPXUT0U03?MQU%G2a`j4?%=IHL)8U~f(Je%7oef4D63q?it1u) z94@i#Ec}t*)A2pL6?e0MKgKLxS1*Wf2A=8n>>IuDcq^su`o#}1FAu#+sXa`iM;8`2*dMLTFg#u6 zTRk)P?paGyL<<{1k!mAmQ>{SRO}jn|}AR9&W-n|I_ESvjYEfBmQH z_Ghd3t7gXeZXNE%nBbl;G|ILDp1z^tEHJkDBc@Sa{`ZZ97d%}OL0%`uCHG7gW9B*p z4Lo^8Ht+O@;#Z_`{LMwXN2&DJ(B^+Q(0M7tqEyF$Y5>w;gePVTHKRl{Fu~fnI7SRy z4ZGq5_HDiS^DB9JZiUl^K+czIlaytrlila9@pmD8|X?wQw4JKT9K2wp>~ud+^uM(PBBRR zgH-+|Lz@etI^L<_U$_k!^>F34)jY(9IVwR&jkN&D&dR$?XX%5HI1DzLp)Sr7Ies`} zDDW1j>9V*qIe)mK+(Q`tQc9OQ#G2b#3U$vPuG9tLI#YZ=IwoRJy#9N+NosG6A%C(S z=(o18`x{yJ!W`f`13U!LTJ`!_S7PF~zTErn5T&Ra9hLT7SzT@@I*J^$zupvccKXJX z;ZgPgwzE*2Mt;v$@Hnr9;t;wwuH96=us1;&yXe9uiaYFMb(VX%+~}E@z0|~3>6w-` zQf?}&W^UN)-aXJ^wTj|q57#&@SZ7#^51`u^kEmH_{95kuust>8?2_R1E+SLM(Dfl1 z8yzXL5QD@CR2yO%YCNUuzzw_+kAoE@*@(a>ha6-pNru;{*Dn zbz4k1*nS)rm&vb{8S%N@YDzZRN)@#t$|A0Y?dnA7%OF&-6$&i|NxF24((YZ80uWhq z{#7py%d7d#z3?~g?II9(n~BtHq2`Y|dAZ?-6CW4f0WPIW{p%k8e=$lP{1=a)4_=!M z?6)DBv}|R%BhE7;iaPN*vu zUdUoh&P(rahSXGyRZ{@wl1rqF;?UF93H{h=4+XRz{W-JXJ-=6v8{f+v$!;x(14u6adj66907{X+ zAi0*LHMr+c26uZX*iWP-P&-zZ+A0TT4758@tvBI#e{L*i-J_)coGvFxkeqilp^t|k z^}{mG0xWYs)qN9=4RbeS!UMu5cABl#3Y4Fw(77F6&DE+;?1V-JsXQ2!E#R>&5$* zr+I|#$eVkBYdNM=&O_U7;yHW7Wd^%ki9yV^#K=wnHN4mImTr$3e zJ`iWB)3WkBxnnyQmy)OontZ<%fbW;~ZB9!>!+TxoO-#e%t4#K#zKO-{r3c$W?eAN2 zjJQZuboD;oh|BnKmB0***R^%d4_{r-0segZX$6T5io@t1fs`OgaVBmi)|q9T^$gu?6GcFeb0Y z!c-L_hXMj%-t$|QvF>NzFNjyHD6mKCB)Q4u{v@%u{6&2YCRb{3Jem8jfxtWtZ&(*B zXe=P`Oz4R5lRMx1A$moJNjoY0(_DcUDOcZPN`kN=V`Mk^17dJLe#Ezvxuk$u`$g{A z_3s|M3DmuVIi5}5Tcd#ZddlNdNxg}tXM8o$ggubVi9r^asWbXIx{FiC_9?REgN&wN zHmjzfmRTf^E$_7#;IJskUlmw~dml(o4+ z#>G{5gea+lJO5|y3tjXHafx;%rAL|uDu3CXVJ`;Kmmyo z+Z1o~v9uX8(zeV<4`n8Jm%k`nKaaU{-|4BH9iyw2ukvecvR z$Whf#s#nDzBr!5KO~n|hmR2=OhP==Ufr*Q@FO}bRO2fLJiGtgi#y(zeQ2l<5d@IMA z(ijl}64vlE_m$?Bu2?({7oMBKs+7yAJQB)o)lA6NXe+fcQJ`)u)6=K|hZF)S(&<`E z^iX1Y&(*4rQ){@Ya&eF~%nJ;q?{}ueV9(~!P-`~57+Qw-QtT)M_IgX-h|1Pu!n!6_W^^+H$$5D!C}eq zH202aE{;-2rz94r>EIZboR!+U9o$=s3v`8nwmrTbz1)a*wICkO5UpHwnQ4`4I@~FA zJP(!+F4_w~{a;jP+pB3xVp+UOHchk%mG4JsB8=@Q1wvelub4ZBT;&R*UPvhH@?3;t zyNYv`u$8*eS*;P~Fav~YHPGapz~OAC75_uq`B@FD$xOY7K+&6BzjenPt@z#|0Dw>9 z)xW5P|Ft;$T-MR_Yxek++wUEeh(*G0bek`9tGQ0L>hUHe@c3$nFq(`6e$E9WBfp=e zzmHRVS|nM)Wv-M5gEz4>=-7Doqk|m&D%m>NS~T-ZGo*`rfvc_eOko^63415__@E z^PzsN5WRS-XD8wMR+)!JraUNm;X!dcuDG{L_v}j^aDCN1`B)}7nmdTNyYCgjoOw4kIKzxjRWl7{Le`& zabbVr@JEk3j4r=tu3Y)OgSFN#uqHMAJ=H}eBg|1R&vjE{;bnJFXmk-LZ;6}1-E>Tl zIl|Bv%y||pfY~tlZ6xeWET?uJajaJuwm80Y;oW$`?2le|U8zh6#ckDT zcotold`DMo7p6v&K#{K5^01`Fv}`a($lU>H;v|%Xpd~O3MF4?jTiyb|$m~CWg_L$$ zUMcl$%%}jsPXW`n;=96sGTX#Hg?qVk>n)au#N8H5MEDXo)Q;nA@7n>{8QBKp{>gyn zB!7?7aQtca{^O^(SFe>B5R+zvGKx{HhQVyuB0cX&U6-+hacru$3WHfW1_`sjZvzpS zv^&ehg27xmnY8VT7~>{J&vq6+-(>HCx!agRt2a5T+YU|v#FOp(4{~jfAYGL`FE)M<`ggnwOWwA05ueQ+bkb+|3l3i_aCjfOq*UMSMUu^O~!kdn_3<= zvIblkGFKrT3}i5=S(doIJ?**KU&FKxLzoGBlL-qo;#^Xn(_EybbWeOPj1ST9z}%XBM94YmXd%X&X^IGR2N^r?j*s?rEF7 zcN~(FKNn2YtbgC2gZVlo__0L5H5I|aoziDAZ#e=s9>K`w8a!CBJZC0ASE~j>Jl3!M zz%wQ9PV2}i*q*@1wU0Xx`O45CZ_$1XXQ2l{@b}5ZQ~Wpm(W%@|1 zqMS1;-=B}PuSrS{66+0H=@1lW1>|3WQ-zz=(pK2 zUFCQczMN|A0qVG$dwV6>aug&f8)6G8MhF%1m~eu@aJDufw*-zVOtrl+E72CAX+zei zsagap92^cr?!(Z%J6f7g14Z6B?EcJXx@8`~y7KZ(SNx|L=2Jl8ebDW~LElkE$@<4x z`QantJR|(c@jnxyZ=QJ8iY~45?W)(330XPX)X&$(2t*ZN&vG71ZhplvE}9p+F9aOI zYRt`#eAEaza}hjuH^h8w?V+$W$P?>6d2Z*J?3(SVP^Bm zamL-BmzBOghlePn3ukJlBkyK8Mghe*2AdYmK>{>kXZh-;_fGz_erhd`k4$_L7>?oR zJD$uSE(H~3$Shkhci!1a@K`omZ@-y2>Ntpw=9jPmYNVtbhvLt5$>?gT>uH**$@l9J z4VB0x7#2$%;lL%a4sY}$p*WsO#$4irbCP5>4~`m+kWg^vTqmToS5Rw@Z{07>a)Sk2 z&Z%V67Lxsah!$TyHtN!V_4J21u=cVc*B^zdFY1u`MnKi%l*wqRQtTkwZZCy$Jn%wO zR~1T@Iux_ySioj?iA6sP`pBE_{&TwU;~F6OUVVZDg{cGAxWF4EJ*rCQ)Lr|3*n97&CbM>Z7)KpN z5v6Kq3M6z;ddHCxNFWFS0)*lK36MbOML=Xm>4cIHK$;39^nmn^O7A7~(4;C=L5kg9 z-gS;M^IPwn_gm*Z=Z|l#@8h3r*7IaN``+2l-uJ%m>%Oily_~1`Zyb)1UtnrCA-1b( zFV)=4Dk@W{dE=@ns2adJc0=kl>3r*tQGNHvw2?hL1MwUeHbX(%_H*iFWBpP}{A-sK z#-|inym9dOWz)5qnA{=fl*i-{&M!7XFlTu~O7*-94h)k65=q#5tNK%Jit#95PSxD7 zweB+h!)1uG##3Y<@%JT(*Fz0c3F*}X>g*i*bA?m!EVTuk5byqUHrt(#_ivfG8L;)? z2jO~(<2j8d4}&v}8jaOY;84Q&O1bNOJayWJvUw5wZMB`~jXWo@5044aIiNmu+O?OW zwm!*b;-m4b6dJ@$?pkk~Qkvh|H27h|y4*GCM@lw|FuoDDczy4OMYZtpD4;lFmPnNn zvTcmwWRK(U+m-_Je*_c}e%5rIQ$dPPjz&8(ez*qz8xW2Y;{`-SpLG>~^yjp%p(h`f ztuvs^mF~{^Umf3kXL?dzS|vsr6`-D}QI-Voe`rwp&Q#=cQLy?s8^nC|S>wVHc4)^> zWWl^F%O)_eCU*>Wpq-FLm|mV2YA7T^tU=beXNgU|Ur{$XmuVD&iW}Tq7otFzquyVu z-AjlfI?t3eR@?46>px2L82;FC9ti4Yp%E*M`X9~<%U%C+5fnYEQaC|`W7QyaaHL+* zZcX03=B%AkvqN>>36*_TkiaZ%*E_83Y5^5(9j}`wB!rCD_dH-2D4p>6%!erc$mF}z3(T84f&8CblLM-d z-4*~txyIY(gDG-ll>Dd?0>FHyfCG%WumLkTS}uby4* zvDT3zV0TC*pjuL97CJk>{q%6p(Pzd&D7)-cOVN;cd2qmSrfb-$z1rCg_}P7O@9BAn zYG?ob>xUoDti+j$(H>}QX-2sLcD^&6{EAXHNw(;DU$0;1KxE*_*9FH%DeN)2L}1Fm z07?JZ5w3RV%}0BY>|k#S%SR_wv31i*yeCG1*zeE1`(=XbUJ-u%dfxk2^Q__+ErQblKKm{fUI3JqVb5Yk6NeRCDWuf8)4HicyGy}#3KbDJ4YxqVU_HaS39FCYio9otYmEuqGfjoWQ) zrXIJwd#lW18sVi8b0Ds`?@Viqwd%#!Z96E;xs2T?dMvHU<9bq*=*0&_Yx1rQbDQwY zd}Z|g8xPEhP=gp|AyY!&(d^fdbuliUW-6arau!7_e|39z3a*8XO=$Hc<<=M?QfEt) zSE{qr^1<;+yd&%SSRBP zN4}q5eWg4kz|bGx;U*_l6d9iW7{#XG@b%n-BW_D(E9YBqc;&J;Nnw^S?lNzmGwGX6 zM7H^gqic3$dl8hr>pQ!tpS?`8Y2Ox(%hc5G?m6{69X%dqa%A}l9w=NLa}mDO3za7+ ztm(W%EYRSo?J`|U0Afu%U|n9wn*J`-Y3k?81qcgXA9V>e#1}Jrv|jL}cM5-8B)!+b z6u?F#qEKM4PH$-#tvXq+u)xWpeix2n4=D0fNa@ArJ$DQjls6buhZ*Ot<_am?So|u< z=Xj3oozvjNq#)b7OUSkf15EXvfF-YCziAlK!C6RtpjPx-i@0IzPz!bKiF?Y_*|K;C1L)bLF(&Gtv^l2YI|AfRX~SN~0S#vQ>Mwp~3D}=amlGRy9i} z8T?q8Oo#DW840fPO9pEqj+nbM+eB1Ofr#?Lhr8~$K%07N< zvb96V5x1ziwx3=&Zaq=`K{Y7kzj_WYphKfE-o60-=>5BS+qy$>Un$GO?K7e`j!?|yM6fK@1#Jp?0+(DR0L}c2UNtI5ft~76>GN^8a8KJ;Dp_X{dnh7`C-7}e6 z_D`Cd#>!F(7wrxP(^YGl>H^R$)HLhL$yU3x){%UN{GvmPzC?>6l6>ffSb^Im(~9{+XPll&!m+ZtliKX5*}QrTI&vX7L5fSS-Q&EVkpi8R@{=z(5w;K5%E z`0IQ-Q1~0~K&UegN^$7Jox`Ukv;G9Dg)id>mD-oW2^l08M}0tcNAcU&4d0oX8#b<- zy!7V3U*}@k65H-0q(c&cJ1>{ByW4H^%s;g z&E6OD&h&ZXj%ar%wS8!jF7nk={BcW#*=c^!#D5tF0xw|UCsECE`7mK^htTG!&ZQ8gmpdwIk=7ZXmShkYB zo2tq#S30|gOq+~t%EsQn?vp3tpPZno1YR0yui3AG=iMT|2wK%Lp__j)Gf8{2tdc9N z2r~2*H+Iy)2GxMt;N~^bL3#T1-{SB#KJq+0iiL&EpKQZ3?D4s#6us&=S@zf|8OZ`! z;86ShtGvcleFyh70^Ug|Jzu(q7)q49s+F-o3%=ujTy_z>b9Z4TW#0it~&xOs+KrTuVEM(M86Daz^RFcs{=PM}D+zuUqm zUe|7g#ID_Svr5afPvjtD#;xTpmnT&k+{rFJz#U<^?T`+1_vqZJ7>%49IOtdjub%7w z&a^|sC9V4vBpcAB{=RTed zD2&lVvjGC}cb39Vtw_{6Zcg+gltbm3utVSCtE73V5COFro2ep_gNE8aaWj(UHnNw) z;#%)zg?(6)!D#eC*u*=I&tupV)1KEgExrvjzG2juRi`u=Ag9?B^5k9jrVY;KuHjex zN5h9tE?;J(V~X2<~bgIKzvWQpsF3!1Z>n^Muoh)>^iEFBdzq8i8} zXnlbd$Ke%h>-#z9MQB8vE=sR@_?!FN7!+e~*7uQpdy~cI!`<Tgpm!-_<9 zK%jt>iE3!Kw3|BQ1dopg?mA}8lFj=`Aj8)+SYC#>DrEP4rD>9-0~Ur~^Ib5yX;@`H zKAtuxqt#tMWgG-dXM<4!X@KSUbFMAJU(HRGmu=sD?mp zDj5z2D>m>6s@K+tcyY~pFET=LZ*+(d6hg<p8W!3v~dnIn_F; zXE&{ssY}2}Rdlek-u>$zY|h+0coKPJ2X*W7W~-{n;VxayF86OxU+4v)=#$%HNX*AV zCZ@yu2hS5X#zdD^f=NS-MaD@J+UJ;cBN|sEL7C!S12w^`?9+;S?DiHteH%B$Gw?U< z6Oim5Js%L+?r)MDHxqS)vNz{#e z!c)OXC%M%i4~}pH`&X$Ca5R6EvjMKszv2AK?E`p2N(`oEskj>ZjW6HQA!l;MJXcYg z)TnC+<+~*f%oUasu1MK-`P3P90gRvU<^J^}flfHx&A~W2juQynZ6){gmo}@MOQcI$O;No?;Xv7S79?+ zQoeQz2ChB7b%)Nxs-)(lb!o(sRb+@#BY6C)g=w z5ylg{-G@QDXjDciu@+t25oGcYbwgrpw=TdT{spHQg@{heC zu%yRY?3IKy(__|d1Y3Z6ga)e!S=GP{r>S6byt~q{FxzzImLcDSRoM{y*{4epcwX^lMFm+aZe%t7dRA4`vS%3H839gBJO{e#VlsxQaYa3yq6L15!)4 z$8;k5>SI@(gMv%&H>@U8eP(bb#a^JXC)zZqQJM;CHGS->qsXXKzpPbR<+NKx@96ut z&mRNv584VV4fY=xhNMK4tj`U=-D-u)FKTlJh-?YHkt4R5?H#@|(M z_KDBv0pFtY5>{y~uV$As8qwgUNbI4l`HmVjdcVaYuL!1U9Mh1A_7;Gqd+SoDo#HZ3 zP^vz!WVJ3T7tt?sqF}@}*UTHF_VC=PM$*rZ{l}lCev0X!I2+#WSC0w-6zTf|Y>%RY zO?`tiaviJ9lwbB~LPYX2V5`yvBZcdc0Rm{AY@D@>ZfUrs@Uy*YRAcj|6dld(Ay8oU z>o{4tJijD>g4(YGBeE7%S&U)u|jwir&8 z=-rKNEt=QApG7>l89TOjfh zfY+VyRf4`&-gm|gORHSt1LZPfv^}!A0-+?UwxXv45D{vV*NR^;OjgcV*T4b|nz;a2 zYvfZ9?5K~+dypcHCLQg--*zTOK&jA-=T%$n0ogZw$L_Ot{CX6sI@&qzH$P?!?WKe% z+V9u8LDco9S~`28V$Ok(I`BMrJZ{)1!&lCnj;UBJw;FdDJXizX7&quq8X;4<{nKgs zFW{(U6<5dXtp|w+51v7{^r%faB4q+gv$d9n;2vmSke2r3MLm$VBQ1~94`YzB>wMmQ z_txL| z^RbjlHg~EkCgquytML^=Zh_;kS`m9@)#2D%moG>R_d+W(`lT6>LyzxFw-RP(Z9|HM zl++DRL|{wWCZaO16_t!x)aRScE7jl1W9}?!o_w8^Sz&_5^cC)#1liuoU3aBh3Yjj7 zlZWwE;N~}SX5%eDLk~`zu0&NQkGq_XtJn~yQ&M{`(jyJNZmo+frKVe>NFdnL+AH?I zmNbr+9aFC+@?A{5FEZmbQ-5rn`5s70E7D5zZM3x@SO2O*Dy?F3wA=sAWF9@-D024w z*?wViKu_5FuhRRmw>wGL+b;X0`797KrnL|HRbtZe{%-u5^v|U2PsS;gn|+gE;>YHd zHw&57>N190Titlf95tIQg+8h;+ZQHQDPCu|sYhW^mzF@M8xSM{FuMF%)2#mE&ikCJ z;^tl2yWZABQgW+h`mIh7XC`eIj#0`UQwF!tW9ClAVTb6JZq7pLtU7NTOkqxz&KUeqnHsq-5*fBt`2d8*!wXxN%|hbn)!E@ zHFiAPtkU}=I3Rk8&vW+OeB%Q9&j;U@#B}vq(M!q%6x9GoQu0zsqJvUq%IBs4hA(_= zpr@DkJhaoc|7+NIAk*`9cNya>2Si><9p+##WAQ?@VZ%tG6q&^Y6V8YnFfpk`|Hi1WG~)~#-3z_Uek6PKJ5%1c z+`G{E4i8HUTuI*^mY6AEH(g@~G;Api`jC*!)1;FIA=M#041*x+M#Qc2(uMvt00GNO zxlme(mpLgNCpZ>f!sBoDB=_Kcciu5|Ys!h;Qco)$d01mv<`6xeLB+T}UY$nYPAnCk zhpMtxzTZ@k8!JT4S%W%-c2qj!-AosXVk@Z5lvwe~cO6i;BZMD~S_%862QB_p? z@zqT=nUy%C4c#py_}v5%X5GXE;~nwVRHakhu9z3Sos<|-D#)eHnt3@TLwb_Ijze{v znJ(TgzQCN*FL6Szn8amOVjLyZh!AC5UoWtfXiugdDs@_0F)@vx{@A*i{uh$0-D#0o z1lD^IS}jLGudh0^kv6SF*~{N-nxTSNMo88Ae%brD!LIwAf23u#3*a3pea6bgOJ9^> zPc1#_mi50^z+8)McUFR&35)YA!oM|yV6S-_mjquP0;zWdH^Xx$HP+*a+|Jn4sVdU-`OYt8>Bjc{M*z1HtcW)vKDGmXK7 zgj@Wy_PkE!iRKZu9TBDKuaa^uIL{4C*xW<2V~6& zQA?&1pmP|`t|e8XQz<2dC`WCBp5I>$l=*2tjX|nfx--?NQ1J@SG33+u+dPleJ23NW zRl8q0-o4Aj9enuAqBPmzkjG`b;IX5);b!+q>081^^;c%|*!E%dq*qGgMSCtiO>uBy zemv0(@+zf&Um5g-e}7GKU5t%X*+Kf`B8^6pNcI9|U>VzW zIZkjU;p+O|*naXNYq{SSdxq`)niYz$u`DwL#?QKb^*L;ZUn^vLyx`s3+R_Koet=R< z#>s;TK#?_UB8Mm}ot?Nk;k!b&IitAr(GxMDcr>G6kknBZR?rGT<0zGVFi{D9`Y1pe zp-J(3Y{Mr#N=ZER>to-P@t^X<-wOPWp~DGwZA~3ZQ=d+iwCC z(=>;T-+?Y>2E z;SsUcw)S#JBCQI-ZpUF$YIf#B;|4C^G*LL7n z0WP&?b}2IC_H_mrS)ocv0QtFB=ekY!w1#AHPj2uD$*W``e%f%Z4C0Z6*Tzat- z3C>#o*JX}yVnI@YNdzDVoI3bmK<}mKd5qgd#V-zx7d*%lVHZa>OjarnRX08a%O9Rr zAqJ}lJ(mh+Kl`}H6fi)pe+(%4nZ!O)87T^MxeN;9{+yi&aFkdoZo_A}XVU{lOX;7= zVF9f_qXYs3OJC-gS*rP_LTr;BC=jzuffJ-E0Gm6MA&4|-QFbrN%J$W?I8JdiU;glmr&?s+=w{%(JH`g8PseoAzC@3P1WI!x~)oyzS3 zxMPRoPHSCPDX9~@`w^QuuLfff;T`lRmiSMyJXWx((T#WX@K8YrD-+S~RO%^glY^A7 zUbYB7@}X(CzcM!}dfJyG3j@r|K)6?l$2$Oo3dN_1pE5 z5^3PXm?n(>RuGRx!GQmjNHDS^^}^=B7WUu!?{ClRBnS(j; zn>NqK-hOA|xhnR>DK>T z2=7Kq5#J?ZKJ!$paa1)-@mo*dTKFt||7+B*__p{uKG!6QwWU;T1>3Pw;?z~RQ4E;Q zIv>9q_CZJ>@JwBy!@Em&Bj4)}2CF;A_0c>BTPEWaKPftIz&(t+x25BG!=_F1zwRvv zf$c3PvMm(}UU+JCtxa@zMbo=l5w2Qy!Hc7JXAQ|uGDGg%lWTc<|7h2-8JT(bJK&ge z4qr5gPWhm2{FR$=N&)^y5L07Av^)q5)(zht^!&KEDrom%3S)RWJW6O$Vl@LYGb0)r z%vDxC8s@E`AP-se9(X*kR3O0&(dwN5r1dWF^}5>T4`f40V6-DFc2c%C>kUrbR;ae0 zAk|9Ei?uT&+DN^D%Qz#1g*BrVKk8@YNRTE@#}ow_QV5LYj#>yEY-BzCic!J^ z1oqX5t_04dGM(J)KKmEX=U+7c$6#uUcf%f1nAJ~~-CVa7U) zcl&TD*3K&k=t+aFjT5yPS}jipn$qK1wR?W|W;n*TxpmScY7K7<6oH-PF7$K3u`cduR%-$r_$l{1V_8P|;<5_KtDrFkt!yjLHXgu8Y2OS~$re=}cm zD7F`vLatHix8W*&ESwE}VudNNMXoxY(ssbc9<<@JcQNn#+QE#f;2axvG$R4_0iWP5 zadl#RNkLhI3Pzhuj8t=L0cuy(Pcnz>JG zhVJEayt*|U#?n5_;FOH$l$vvmmB4XiOGMIp(Pi<9Ejia!2E|7)UTH}IbF;6*8(6?6 z-x8y1G$_}Q)*$MzZtUp@;!bBJXM`KfX0NvE3K<%UOLK_HD~KZWlOJF$5~hUYh1B`O zqXfY|F+> z*CD2Lpicp;5f(a$>&Wa-oECPHe>YbiEjp)JJX=lmPK?@+vM|mc4`lwb=`E(p$}3%8 zvhIC>r^XdoC9wsC=w}CNv6r)YoNt%Ml$xQ&eA}IQ95~dDnI+L66ez%QP0n^uq$GpW znVc@Rt1cKnGu1DqQGQ*UM#CL!t=I4_yhR)er{23Q;SB81Y9P~=x+t5hh2}j&jRo=` zeP+4%34*)nwHOpcSn6YRl`?7kxmJKykvb1w22QaZ`KF?{o2}6=rZ~xyBhrW?o(+`z zCA%gL#P+(?{sdt@Fg3mDIAHx7p-I^z)UjpOwBbGS=vd}LeN%1g=!F5$FSf4U3A{0m zK$NbID{+&3<*X#Az<{K?e-_^_nI0Ejz9X?|HUFscHTl3433_fjZ0QoJ>4qrX=5rYt z_F_8oSn2ocJn)sN8xi(#(jK{*+ET7%MR`Ib0-&!tUOSYe<>^uyR~w|d zZ)I^3v#o*nW3^h_?@T5?#o3XURVE(!(`!7QD7hnS61grFZAQ~GNvr;iY5oZslz_xAl@^~=EFM);yaOyv+a)=J zxH35%)z)Cg$oQ+wB5ItYH};m%f@30;tJVcR;^Oi>U`%6l8QOP+3+r%=0tc#0STvgf z+;edr#zMGhR^S}YOwrvV1&v$H(GBNd?sFcUX-Ha8xi-Z3=#4g>0 zu%~U5$ra;ZF_lxt?xEbI9Z$Q~Ra%IGqLVmwh5e?oAn#pctKODHNk< zqy!ambOI9_)(~b>b$l^4XX6p-ghXBzNAbj8i+LvoJhgLftU4xm?vgY`%`4QYW_&olC=@A5+~FH z*7Yi~Mnn)7U5@9Ks?P`62y@)mHCbkRbW~|6(FE@Rm2`OJd-4Kh-Kr9TTAy) zMz{-^u);;tCnuOq>jRK-Yk=C!bJA)YUQ0D4=*tY~RN=U@GegZNP*H4PU=Zy5AAe5C zXQD{unR#`y9&vAbw-|>$y4G~BIGFX;iOxzp5(!}f`pR6qM?ljX0BG4rcNVF#I zQz$@ew!~o0yW{aefYpb@?GBIgeH$NWE zzQo}<>_I!9~5jl79R$%54)wkGu+RoQ(EY+k07- zvY*mfs}ZK_x9?Bwrh6|Yb>or=KZmcu`v%jF3>(ABJ-^V^?7rjx2<~>hO1o?U>RLM2 zN!|D^hfVj7&|20!JbhHJWoYuY?;>!XW~hO7ZR+&XE7|}RBnqq$>gz^Rz$Fr$j?Hd%XR!#>bLMA+VK_Y|Nf*ms|}z3`^YF?bn8g1JiuB1Tr086|cy8XW#x}o=tn> zQgE6xprh7=fC8PNo2%^%9}L_3GUeA#xi9b z)$Kb&yr&s(KjBY%ZYxmL7p)_~KN{4}0>562{@{{f^;vK`=r=9lrN=+~z>LjVS}(S5F(_oDuQCUSHJwg!4iM6esMaAnNO34Z^ZG|& zN~z6})qKT9ij+2CA$9RQBpmHCohPjR*k;Y54jjIA##H)pyvl6;ROQ5@#+JD5a_&}z zysYy(XMQx!0Y(mt)})F}ylO8M>8av%lm*R}n<3s)CUk>=*iI*Jkq}Q@t>yzKD?`0R z3wv@+q?c0)H(P0d(63FlJD;dwn-@H2z=kmj- zKds9$x}2w)9w@@m#x5@x)o)>(P*U5pYTt1r(N}VnZF;9e0~^lIqLU|5(QGB8%VmTW zXox0oKJdmu7_=u|5bKHBRib?D%Z$6wLl@#D+`RPs^*~o2!yrQF-I_fL->W;Wnm-z* zYYy|A`rhL9mtRI&Po`PaFA;7)4D%`16%#t#)skxl;?Ff$ODKFg_aa!$hy+GlXd{1) zHj8%OAiNhBS0Iw~QrC5{5Wung<$K|x+GObrXL8(weVK3^BF&3zb#7w`08I(GFsE>eMOC2LF<(uY63dt#CL~lcd zjA<)EGVk7f{qxJ-UCAgjhBriEKUu@fCe#&L7=K42B41)0mfzvx4`Abp{_p{R!sbY{ ztyNmAxnpYjqT@ZuWm?<-EcEx+4yB&_eX|M^6E_}9;J3~x4&_#UGGn88S1ZlVpqewA zvcbvnx9;l&fY=CW_wXT6>lk(sjsk<+qN!^=HnWfO4gDL88g=u{d*^!guPdX&dK+E} z!MZZ8#QLvfWR6v>9?Ff`3>(Kma!2|sWa5kp#+akNGg0)S+W-@dWIYcx_MY;EtTlh>#UgTSHI669&VjRRY@+{y}vqXS4&? zcId}*wraU|SQyQCU&zzHncOCubGc#cF~Jx$91jDBc3r~0Eu_(n21+gEE7;sw!oCW`4x%-<;3D#h z#(SIT(8^xB=hUzKo++g+bq}m7BL%+2$5m*6cD#@C%;A`2kt_!(Hik!pa7_TDamA~9 zIO}a%Vg?Xm$s6p5DAyW`WA)Sy8uEKSQ;=Es!<}r#EyKf{hJTqM@MmIQ{YehI;`@*O=rJfkopr094n&6tyWz1P zdp8^Jg|hPam;9PZfh*(dI(P5!R4ukaj`GJMbc)Be{2omp&1=`%i1;0~nQhasA^?9+ z&k;kZV!8*$#gosScDuy$h&8m{%#P@J`?t^iM&hf@jJTcw38s!B#*B-sqk>{|^8^xD zJMfNYhig||#1E|`MT!+(lfc`SEM+!^j!C)nh}2GQ+N=*yLVfLV;_BDz#jjWJe0=i%tX%9uBWZ-9_z#7+e~?)qhs3WxeAMzo!L*_PfzwbKL6PytIDCcPoNxf z9S)aHxA3iah-u_wlC5I*d0Gt8k=OJ&9nz39qN&At$D8zoTV- zXKF0ol&oumid>3EY9;RTZc@Fp-=LGSMLhV8+ z6VvpsKi=1W{rT^)D*uJ4PU3@09k;@MC}Zd*&g=b=4%0azL~XFiUa-8Rs^x7|RKuT! zH1ZR#9T~cpep?lgzQyV6(u0_G4$x)(J1qNtaY$VV+SB9pJUwL>HyVnl>`v3NYw&cN z#YF)6PJKL}56UI#5F$6;i?iqQK|E^;Raw~~l8Hv9M1In z`_(AL4E3Uk984Qwd{%xrg5NKcLL%qdp@2Rf?uRmM03tEP04u4%6 zHt4(xK0wY3Hg3m$!n{edC@u~t(qqVu1O6Nt7%vZ5dvx$X?nMrXh* zf%AGHgvC2ASdL-3-Zyctu12b&&Aw9pW6O;!)q?x96Qsi$_WLvj;5DR#)HiurHOG? zh_^`2&il7ExGrOQraRUB#o4TH9l=(?c1|vxC4Q5nw9`P+JN+U9GVRS?3J(DmaofRA znR6V$PJ@AU8Jb=Mu5De*Rl$7o0#oFDt?x{7w1k`IAEe$>e7kLlIZ%3g6>I+0(#`Vf zdE-KJaq;^Fw|#h5Yk={Pp4(5GE)yTho1tT;VTWolJe~-hcmz#R>j^&X7wfU}W(=Bp8y_;s*rq%g9HGc7zQrRQ5|ru&NwsuO?y)Xa z{1m%n@$3M_TU%&u2?$~!5;(0{-<2iHOIF*kW7MbLIw}-i{MF*!(uO4WaQUa{f+gv8 zgW|F*x5DA1{t^arOaGdVq@?wD3M2mVEGj$F8;xv;Eev| zv+-!V8x>|Npx~)wsp#kr;Lm8^{$I~Dlv3`odS(}tTtG{{^1ZjCX|=aRO55b@wl@pO z(5Z5#%Yz^y$RyIb`i!LwxWuY*Ml)ro&l(bJa~o=g)fvap>AV9(_sLZ!s8KnZ$7HR_ zy`jjKy=LH|{0U3Djz?a_Z}oM3ecZc}=tjd5Jj5-7hGUBq=7#C$p>+mN5Y_(&Ww~sk z-yfo}|5Me1(vvl7XGG;jKP`Sjp03<5tAs-%JV!dFAir=`C* z1nZSsv%UiPOye<-#+{SuCMFrhBTR zv<5_Zi|hLm>Or@g|MY_CLe!NX^Wne!`EP15+;wd|c0aTF>Eb&izl_PoTMMlGYF(pp z*Lf4vvwe6iVhnq?Ctk$Hv)r107mS$czQ6fLvNn7a^-Hn-i;*Sm$U%_`s{(`Q2Iuh( zwb{3;#G{7EanBsa5vKP{x~|)+%jdCG{s_My-9mT*siQbs?mUSMw|C}yVB9E=v6hPv z*QLBujFYQKz1L;za{H7m(}|_>3yRN&#;1$Nmuo-=kTm9~OR1>l@Em4jN*dCZn=TAR zki-aRV6WkzT7hArNv2`y{ycPpm?BQRMPN^LZ|o&94r-EpnyGZXK7AD?t}M+58wb!* z$lfNG@-fS0@sUTNtC_O7MKB&D6at#wgzHu{j_bF>x3g*&&6=oYD=QBlZwhf{AwCbd zkqjpDd^*8?i6^Bjq}}*@b&`%D|xoN&0;8uu_t4 zSlY}p%OA20gb5M988MO7fu#MjyAbboQ?}!y--Lhr&xxUqm3Pp|)tUEM=^h4sX`EtK zEln+V+uKWeZ)%$(=rvHxIgoU$Md2+hMdCA>-j#(u@T_x8fb~?Zo|6-a7VUTgUD80lgpTt%wbMv`A~_m~ zfEeE^5+0)P$6*s*d&OC_6JUmpXxZ!H4-*O!9Ey<5J*L;ns(=)=Y9fO#OfQ6cbS>m> zW3<;?b!z6q#LUAMwdA<|2rmUG6#HwXoT%rlm;JRJ`>9q~A$3-7U|^d>V6z<ik%1)^p;5BPz#&|kk^edA z;ChIuwQk5=Jie#D*>USfc%I3T|F3eh|8EzcZJ8FXPKXb4hzg7BVZ}?mCsZ@kqF6eD zov1qPTe<00`GgjjuXFQfO&G4Tlc)dx!Nx)!`$%J zq%o~`yzdh=tf8NDj6T2kiS`rqxyt)aQaM>+xcTQl?_oOdPLa`bVtvlePS>5B94~a< zNLOsU;(uMi*b0B>yn+GQc-YXpow)RiCYY^mS)gB%VkS!UjEdDc%yVr6l4XQUQgWxD z1pd^)HhDQva-@FhsfVKFGnoe(8$f<|aatw-S zn~In=Q*WQ1f`^xF{@N?y7bnO@8P6yU`O{R-A&ot>15i4aHy+#~|@%8{gJ-To^3cN+?t$z;TUxztkNAYzver$LIiAj@?<0*bxNaPRD zRpt%KKODmkHn33L5~#OC27xqv)U&+n^5;yQ6(0i7u`F*!$9`!aG{zT)#PgB|X3jmH zsm2I<4gS1TbPDXjk;#l~8zcn&{iuq42#O`ex;q#8q_<0UO5B%{k6uO4W6cXLRhs<_ zQOYoncMv}hg;#m)LPb?9?fAP17cUe8Bl#1I%w6jEDNn~r64Dbnm?2j=P@~t9^r~cR z+@B@>{amU3t>n+qJ@Mx~Ow!jRX8-mVI2#=JfA-e8t7hJV6QS^KQTvvI0mqEK#CA%| zZHQlf%&K_Vo2l0`&k3h^?)|j%bI^_*libqpDBCt0z?uOE$e3iqQ>7CxMdne1WgKsn z7sua7y#H_$Bhoccn-pL+%W{NV57hiNt9?b^$4xHVulem-l)Ig0(xjZrM;;2M1$mtB zIkBzTD7vIGbLYa$o?Jn*J*V%oEy_=e7JURC^WE`K=|T@*FXyMNcW zl4qGy$~baPyvd#UEw%c)#c|W4$wjC7PQTlB?|Gw?(TO*o%B^HQt&6l(U9z0I?zkU4 zTEH%1GhIb-+WFq6n--g_-{h_Ka$=-<@#*Auf`V@iubnv-e>E$-HhZmEbCj6NqQXN? zVY5}vdK&K(Tmmd*PyOb*v}oJ3Im^Y$Ca=6Jl&WdjGv)WiJC2j`+*YexyPaD6CR%yN z%cVyPr?}h|mUdLCF)!8K@oGYg!MjwQlP;A$mpr|qT`x`YU0)15o9wB{qqCaoMXz}m zmD~z6SvoQ1g7>!IKtb6{?nN8l+(=%>>!k8T@x(gKjHqJ8v{qGZrLCW4PMw-_Qd#MZ z&xyWcNv@XDrDH;YhwvD)Je5wFs&lu}U-;XDr>7<c@hl{Y=_y8mnLr? z{@uCK*Al|M$hJHR(u!KSWmT!9ci{~^i?(@rmYOP=rsiw>($4g2olY;=#;&J597is=}P<8Lv zKI5dng8uhem#|wZt$kfB_2X>!7gzfleuSbe4NOB!qPNq)O#O%n=M}GMlNPU2xfXJI zNsro;)tb`_zNa0QWLxq}1$ex2&J>T*r)yQ#83E5?USz>wScZIZKQ+$r$D15rl8ip< zy^{DQ1X=~16?}YgUg=dK-^idzC1>75`zIC(`~+Uku)=lK%lRT#64vIq)fG*-HRaZX zEN!tntCWm>depLAGJn2n`robkKl1tK+zNf$82X>#z59ntmS(xCC$6o$e9H8bvH5e= zS7!RIQ(vvAQFm$dI3n`Pg>$0PoRjNC^Xlch)`g z2Y=ZnU+a>au5r;oedTASuCVgDyh^lDY|w1&n=X@$gL>7L zYPvVqPBV1>9`b%>_$|4qYxLBvs?W66zIB(~d_J$>whjCOA!_D)V$+mPOnUn@*St|x z(`%#T-0tXm%Jvhg{%tF1{rL6%r*H95CjUB@?MZiA?Y_#v*KlXxS+`q#mMglAeAPEx zO}?>MY<_Oow11KwpIN?iy$Q7{d7f3ib(imk+_k>bziwWl-w!;NXZogJ7m(N&*UH^m ztNX`j;xo>d{BX^ENol8l-Ml1z{CfTAo3$BL2mXyzwqL{ z`GP=|Tr}H|1;3owRtt*~pz79qX&(K0WkjNt%~8 z^-8ZXwlFIUzj?#P<@430l6HEU`)8>vS6!6$EMHILgPZ2Fm$4oQ)@6Gv@#(fM?dJXC z?LYeq=LOY7?wozP)kd(Za#wheG@NB}9$Vl)%bokDqJGAAzEN$k^f($M7+G{QNJfKX zv@98za&m{M#}A>Y5=*WudL)rEtCMB>LQhAjzUN81ZL0bI@KnzJyr{qR>YiKfK_>qh z1b;2wGORSHD71TPGsk0=dI{%29 zNw62+mT$JJ)=n3AWV%x4WT0fsgh@s}d3xFcE`-*tT{2hml0j-**!M##)Esvz&1+fs zC2R4HS4Fd1w!Aev(f87}t;T)JimIBW2N%8U77ogsc*@3NvZ>E@;0D1-UKLjs8wbvp iTyX{h%0d>m914iY(J@+mzbIaHp~TKpkxS11zX<@iiMo{l literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry024.jpg b/documentation/doxygen/images/geometry024.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a7373d7e3e8c27b43915463479c998f952a3360 GIT binary patch literal 71111 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

      lYR^emd&~S;qkx2S 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 ^}+bz%$dytrv#pNEadSf7(r6En>3SW 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 OQc%{bj$SsuP5wW212vui literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry025.jpg b/documentation/doxygen/images/geometry025.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c9896c8ddfdde619eaa12616b20ea26084ee3fc GIT binary patch literal 68726 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

      {k0N+ZoH1$j@uWPUsq2(AZF(8g>yM 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 I9Q)Y+4}YwhZvX%Q literal 0 HcmV?d00001 diff --git a/geom/geom/doc/index.md b/geom/geom/doc/index.md index 187d061265883..714067ea76280 100644 --- a/geom/geom/doc/index.md +++ b/geom/geom/doc/index.md @@ -1,5 +1,3102 @@ -\defgroup Geometry Geometry -\brief The Geometry related packages +\defgroup Geometry The Geometry Package + + +The %ROOT geometry package is a tool for building, browsing, +navigating and visualizing detector geometries. The code works +standalone with respect to any tracking Monte-Carlo engine; therefore, +it does not contain any constraints related to physics. However, the +navigation features provided by the package are designed to optimize +particle transport through complex geometries, working in correlation +with simulation packages such as GEANT3, GEANT4 and FLUKA. + + - [Quick Start: Creating the world](\ref GP00) + - [Example 1: Creating the World](\ref GP00a) + - [Example 2: A Geometrical Hierarchy Look and Feel](\ref GP00b) + - [Geometry Creation](\ref GP01) + - [The Volume Hierarchy](\ref GP01a) + - [Creating and Positioning Volumes](\ref GP01b) + - [Making Volumes](\ref GP01ba) + - [Example of Volume Creation](\ref GP01bb) + - [Positioned Volumes (Nodes)](\ref GP01bc) + - [Virtual Containers and Assemblies of Volumes](\ref GP01bd) + - [Examples of Volume Positioning](\ref GP01be) + - [Overlapping Volumes](\ref GP01bf) + - [Replicating Volumes](\ref GP01bg) + - [Volume Families](\ref GP01bh) + - [Dividing Volumes](\ref GP01bi) + - [Volume Assemblies](\ref GP01bj) + - [Geometrical Transformations](\ref GP01c) + - [Matrix Creation Example](\ref GP01ca) + - [Rule for Creation of Transformations](\ref GP01cb) + - [Available Geometrical Transformations](\ref GP01cc) + - [Ownership of Geometry Objects](\ref GP01d) + - [Navigation and Tracking](\ref GP02) + - [TGeoNavigator Class](\ref GP02a) + - [Initializing the Starting Point](\ref GP02b) + - [Initializing the Direction](\ref GP02c) + - [Initializing the State](\ref GP02d) + - [Checking the Current State](\ref GP02e) + - [Saving and Restoring the Current State](\ref GP02f) + - [Navigation Queries](\ref GP02g) + - [Finding If Current State Is Changed For a New Point](\ref GP02ga) + - [Finding the Distance to the Next Boundary](\ref GP02gb) + - [Computing the Safe Radius](\ref GP02gc) + - [Making a Step](\ref GP02gd) + - [The Normal Vector to the Next Crossed Surface at Crossing Point](\ref GP02ge) + - [Creating and Visualizing Tracks](\ref GP02h) + - [Checking the Geometry](\ref GP03) + - [The Overlap Checker](\ref GP03a) + - [Graphical Checking Methods](\ref GP03b) + - [The Drawing Package](\ref GP04) + - [Drawing Volumes and Hierarchies of Volumes](\ref GP04a) + - [Visualization Settings and Attributes](\ref GP04b) + - [Colors and Line Styles](\ref GP04ba) + - [Visibility Settings](\ref GP04bb) + - [Ray Tracing](\ref GP04c) + - [Clipping Ray-traced Images](\ref GP04ca) + - [Representing Misalignments of the Ideal Geometry](\ref GP05) + - [Physical Nodes](\ref GP05a) + - [Geometry I/O](\ref GP06) + - [GDML](\ref GP06a) + - [Navigation Algorithms](\ref GP07) + - [Finding the State Corresponding to a Location (x,y,z)](\ref GP07a) + - [Finding the Distance to Next Crossed Boundary](\ref GP07b) + - [Output Values](\ref GP07c) + - [Geometry Graphical User Interface](\ref GP08) + - [Editing a Geometry](\ref GP08a) + - [The Geometry Manager Editor](\ref GP08b) + - [Editing Existing Objects](\ref GP08c) + - [Creation of New Objects](\ref GP08d) + - [Editing Volumes](\ref GP08e) + - [How to Create a Valid Geometry with Geometry Editors](\ref GP08f) + + +\anchor GP00 +## Quick Start: Creating the "world" + +This chapter will provide a detailed description on how to build valid +geometries as well as the ways to optimize them. There are several +components gluing together the geometrical model, but for the time being +let us get used with the most basic concepts. + +The basic bricks for building-up the model are called +"volumes". These represent the un-positioned pieces of the geometry +puzzle. The difference is just that the relationship between the pieces +is not defined by neighbors, but by "containment". In other words, +volumes are put one inside another making an in-depth hierarchy. From +outside, the whole thing looks like a big pack that you can open finding +out other smaller packs nicely arranged waiting to be opened at their +turn. The biggest one containing all others defines the "world" of the +model. We will often call this "master reference system (MARS)". Going +on and opening our packs, we will obviously find out some empty ones, +otherwise, something is very wrong... We will call these leaves (by +analogy with a tree structure). + +On the other hand, any volume is a small world by itself - what we need +to do is to take it out and to ignore all the rest since it is a +self-contained object. In fact, the modeller can act like this, +considering a given volume as temporary MARS, but we will describe this +feature later on. Let us focus on the biggest pack - it is mandatory to +define one. Consider the simplest geometry that is made of a single box. +Here is an example on how to build it: + +\anchor GP00a +### Example 1: Creating the World + +We first need to load the geometry library. This is not needed if one +does "make map" in root folder. + +~~~{.cpp} +root[] gSystem->Load("libGeom"); +~~~ + +Second, we have to create an instance of the geometry manager class. +This takes care of all the modeller components, performing several tasks +to insure geometry validity and containing the user interface for +building and interacting with the geometry. After its creation, the +geometry manager class can be accessed with the global +`gGeoManager`: + +~~~{.cpp} +root[] new TGeoManager("world", "the simplest geometry"); +~~~ + +We want to create a single volume in our geometry, but since any volume +needs to have an associated medium, we will create a dummy one. You can +safely ignore the following lines for the time being, since materials +and media will be explained in detail later on. + +~~~{.cpp} +root[] TGeoMaterial *mat = new TGeoMaterial("Vacuum",0,0,0); +root[] TGeoMedium *med = new TGeoMedium("Vacuum",1,mat); +~~~ + +We can finally make our volume having a box shape. Note that the world +volume does not need to be a box - it can be any other shape. Generally, +boxes and tubes are the most recommendable shapes for this purpose due +to their fast navigation algorithms. + +~~~{.cpp} +root[] TGeoVolume *top=gGeoManager->MakeBox("Top",med,10.,10.,10.); +~~~ + +The default units are in centimeters. Now we want to make this volume +our world. We have to do this operation **before** closing the geometry. + +~~~{.cpp} +root[] gGeoManager->SetTopVolume(top); +~~~ + +This should be enough, but it is not since always after defining some +geometry hierarchy, TGeo needs to build some optimization +structures and perform some checks. Note the messages posted after the +statement is executed. We will describe the corresponding operations +later. + +~~~{.cpp} +root[] gGeoManager->CloseGeometry(); +~~~ + +Now we are really done with geometry building stage, but we would like +to see our simple world: + +~~~{.cpp} +root[] top->SetLineColor(kMagenta); +root[] gGeoManager->SetTopVisible(); // the TOP is invisible +root[] top->Draw(); +~~~ + +\anchor GP00b +### Example 2: A Geometrical Hierarchy Look and Feel + +Before going further, let us get a look and feel of interacting with the +modeller. For this, we will use one of the examples illustrating the +geometry package. To get an idea on the geometry structure created in +this example, just look at rootgeom.C. You will +notice that this is a bit more complex that just creating the "world" +since several other volumes are created and put together in a hierarchy. +The purpose here is just to learn how to interact with a geometry that +is already built, but just few hints on the building steps in this +example might be useful. The geometry here represents the word %ROOT that +is replicated in some symmetric manner. You might for instance ask some +questions after having a first look: + +**Q:** "OK, I understand the first lines that load the libGeom library and create +a geometry manager object. I also recognize from the previous example the following +lines creating some materials and media, but what about the geometrical transformations below?" + +**A:** As explained before, the model that we are trying to create +is a hierarchy of volumes based on "containment". This is +accomplished by "positioning" some volumes "inside" others. +Any volume is an un-positioned object in the sense that it defines only +a "local frame" (matching the one of its "shape"). In order +to fully define the mother-daughter relationship between two volumes one +has to specify how the daughter will be positioned inside. This is +accomplished by defining a "local geometrical transformation" of +the daughter with respect to the mother coordinate system. These +transformations will be subsequently used in the example. + +**Q:** "I see the lines defining the top level volume as in the previous example, +but what about the other volumes named REPLICA and ROOT?" + +**A:** You will also notice that several other volumes are created +by using lines like: + +~~~{.cpp} +TGeoVolume *someVolume = gGeoManager->MakeXXX("someName", +ptrMedium, /* parameters coresponding to XXX ...*/) +~~~ + +In the method above XXX represent some shape name (Box, Tube, +etc.). This is just a simple way of creating a volume having a given +shape in one-step (see also section: "Creating and Positioning +Volumes"). As for REPLICA and %ROOT volumes, they are just some +"virtual volumes" used for grouping and positioning together other +"real volumes". See "Positioned Volumes (Nodes)". The same +structure represented by (a real or) a virtual volume can be +"replicated" several times in the geometry. + +**Q:** "Fine, so probably the real volumes are the ones composing the letters R, +O and T. Why one have to define so many volumes to make an R?" + +**A:** Well, in real life some objects have much more complex shapes +that an "R". The modeller cannot just know all of them; the idea +is to make a complex object by using elementary building blocks that +have known shapes (called "primitive shapes"). Gluing these +together in the appropriate way is the user responsibility. + +**Q:** "I am getting the global picture but not making much out of it... There +are also a lot of calls to TGeoVolume::AddNode() that I do not understand." + +**A:** A volume is positioned inside another one by using this +method. The relative geometrical transformation as well as a copy number +must be specified. When positioned, a volume becomes a "node" of +its container and a new object of the class TGeoNode is +automatically created. This method is therefore the key element for the +creation of a hierarchical link between two volumes. As it will be +described further on in this document, there are few other methods +performing similar actions, but let us keep things simple for the time +being. In addition, notice that there are some visualization-related +calls in the example followed by a final TGeoVolume::Draw() call for +the top volume. These are explained in details in the section +"Visualization Settings and Attributes". At this point, you will +probably like to see how this geometry looks like. You just need to run +the example and you will get the following picture that you can rotate +using the mouse; or you can zoom / move it around (see what the Help +menu of the GL window displays). + +~~~{.cpp} +% root rootgeom.C +~~~ + +\image html geometry001.png width=600px + +Now let us browse the hierarchy that was just created. Start a browser +and double-click on the item simple1 representing the +`gGeoManager` object. Note that right click opens the context menu +of the manager class where several global methods are available. + +~~~{.cpp} +root[] new TBrowser; +~~~ + +\image html geometry002.jpg width=600px + +The folders `Materials`, `Media` and `Local transformations` are in fact +the containers where the geometry manager stores the corresponding +objects. The `Illegal overlaps` folder is empty but can be filled after +performing a geometry validity check (see section: "Checking the +Geometry"). If tracking is performed using `TGeo`, the folder +`Tracks` might contain user-defined tracks that can be +visualized/animated in the geometry context (see section: "Creating and +Visualizing Tracks"). Since for the time being we are interested more in +the geometrical hierarchy, we will focus on the last two displayed items +`TOP `and `TOP_1`. These are the top volume and the corresponding top +node in the hierarchy. + +Double clicking on the `TOP` volume will unfold all different volumes +contained by the top volume. In the right panel, we will see all the +volumes contained by `TOP` (if the same is positioned 4 times we will +get 4 identical items). This rule will apply to any clicked volume in +the hierarchy. Note that right clicking a volume item activates the +volume context menu containing several specific methods. We will call +the volume hierarchy developed in this way as the +`logical geometry graph`. The volume objects are nodes inside this graph +and the same volume can be accessed starting from different branches. + +On the other hand, the real geometrical objects that are seen when +visualizing or tracking the geometry are depicted in the `TOP_1` branch. +These are the nodes of the `physical` `tree` of positioned volumes +represented by TGeoNode objects. This hierarchy is a tree since a +node can have only one parent and several daughters. For a better +understanding of the hierarchy, have a look at TGeoManage. + +Just close now the `X3D` window and focus at the wire frame picture +drawn in a pad. Activate Options/Event Status. Moving the mouse in the +pad, you will notice that objects are sometimes changing color to red. +Volumes are highlighted in this way whenever the mouse pointer is close +enough to one of its vertices. When this happens, the corresponding +volume is selected and you will see in the bottom right size of the %ROOT +canvas its name, shape type and corresponding path in the physical tree. +Right clicking on the screen when a volume is selected will also open +its context menu (picking). Note that there are several actions that can +be performed both at view (no volume selected) and volume level. + +TView (mouse not selecting any volume): + + - Click-and-drag rotates the view. + - Pressing some keys perform different actions: + - J/K - zoom / unzoom + - H, L, U, I - move the viewpoint + - Right click + `SetParallel` `()/SetPerspective` `()` - switch from + parallel to perspective view. + - Right click + `ShowAxis()` - show coordinate axes. + - Right click + `Centered/Left/Side/Top` - change view direction. + +TGeoVolume (mouse selecting a volume): + + - Double click will focus the corresponding volume. + - Right click + `CheckOverlaps()` - run overlap checker on current + volume. + - Right click + `Draw` `()` - draw that volume according current + global visualization options + - Right click + `DrawOnly()` - draw only the selected volume. + - Right click + `InspectShape/Material()` - print info about shape or + material. + - Right click + `Raytrace()` - initiate a ray tracing algorithm on + current view. + - Right click + `RandomPoints/Rays()` - shoot random points or rays + inside the bounding box of the clicked volume and display only those + inside visible volumes. + - Right click + `Weight()` - estimates the weight of a volume within a + given precision. + +Note that there are several additional methods for visibility and line +attributes settings. + +\anchor GP01 +## Geometry Creation + +A given geometry can be built in various ways, but one has to follow +some mandatory steps. Even if we might use some terms that will be +explained later, here are few general rules: + + - Volumes need media and shapes in order to be created. + - Both containers and contained volumes must be created before linking + them together, and the relative transformation matrix must be + provided. + - Any volume have to be positioned somewhere otherwise it will not be + considered as part of the geometry. + - Visibility or tracking properties of volumes can be provided both at + build time or after geometry is closed, but global visualization + settings (see section: "The Drawing Package") should not be provided + at build time, otherwise the drawing package will be loaded. + +There is also a list of specific rules: + + - Positioned volumes should not extrude their container or intersect + with others within this unless it is specified (see section: + Overlapping Volumes). + - The top volume (containing all geometry trees) must be specified + before closing the geometry and must not be positioned - it + represents the global reference frame. + - After building the full geometry tree, the geometry must be closed + (see the method **`TGeoManager`**`::CloseGeometry()`). Voxelization + can be redone per volume after this process. + +The list is much bigger and we will describe in more detail the geometry +creation procedure in the following sections. Provided that geometry was +successfully built and closed, the **`TGeoManager`** class will register +itself to ROOT and the logical/physical structures will become +immediately browsable. + +\anchor GP01a +### The Volume Hierarchy + +The basic components used for building the logical hierarchy of the +geometry are the positioned volumes called `nodes`. Volumes are fully +defined geometrical objects having a given shape and medium and possibly +containing a list of nodes. Nodes represent just positioned instances of +volumes inside a container volume but users do not directly create them. +They are automatically created as a result of adding one volume inside +other or dividing a volume. The geometrical transformation held by nodes +is always defined with respect to their mother (relative positioning). +Reflection matrices are allowed. + +A hierarchical element is not fully defined by a node since nodes are +not directly linked to each other, but through volumes (a node points to +a volume, which at its turn points to a list of nodes): + +`NodeTop ` ` VolTop ` ` NodeA ` ` VolA ` `...` + +One can therefore talk about "the node or volume hierarchy", but in +fact, an element is made by a pair volume-node. In the line above is +represented just a single branch, but of course from any volume other +branches can also emerge. The index of a node in such a branch (counting +only nodes) is called `depth`. The top node have always `depth=0`. + +Volumes need to have their daughter nodes defined when the geometry is +closed. They will build additional structures (called `voxels` ) in +order to fasten-up the search algorithms. Finally, nodes can be regarded +as bi-directional links between containers and contained volumes. + +The structure defined in this way is a graph structure since volumes are +replicable (same volume can become daughter node of several other +volumes), every volume becoming a branch in this graph. Any volume in +the logical graph can become the actual top volume at run time (see +TGeoManager::SetTopVolume()). **All functionalities of the modeller +will behave in this case as if only the corresponding branch starting +from this volume is the active geometry**. + +\image html geometry005.png "A geometry hierarchy in memory" width=600 + +Nodes are never instantiated directly by users, but created as a result +of volume operations. Adding a volume named A with a given `user id` +inside a volume B will create a node named `A_id.` This will be added to +the list of nodes stored by B. In addition, when applying a division +operation in N slices to a volume A, a list of nodes `B_1`, `B_2`, ... , +`B_N` is also created. A node `B_i` does not represent a unique object +in the geometry because its container A might be at its turn positioned +as node inside several other volumes. Only when a complete branch of +nodes is fully defined up to the top node in the geometry, a given +path:` /TOP_1/`...`/A_3/B_7` will represent a unique object. Its global +transformation matrix can be computed as the pile-up of all local +transformations in its branch. We will therefore call `logical graph` +the hierarchy defined by nodes and volumes. The expansion of the logical +graph by all possible paths defines a tree structure where all nodes are +unique "touchable" objects. We will call this the "physical tree". +Unlike the logical graph, the physical tree can become a huge structure +with several millions of nodes in case of complex geometries; therefore, +it is not always a good idea to keep it transient in memory. Since the +logical and physical structures are correlated, the modeller rather +keeps track only of the current branch, updating the current global +matrix at each change of the level in geometry. The current physical +node is not an object that can be asked for at a given moment, but +rather represented by the combination: current node/current global +matrix. However, physical nodes have unique ID's that can be retrieved +for a given modeller state. These can be fed back to the modeller in +order to force a physical node to become current. The advantage of this +comes from the fact that all navigation queries check first the current +node; therefore the location of a point in the geometry can be saved as +a starting state for later use. + +Nodes can be declared as `overlapping` in case they do overlap with +other nodes inside the same container or extrude this container (see +also ‘Checking the Geometry'). Non-overlapping nodes can be created +with: + +~~~{.cpp} +TGeoVolume::AddNode(TGeoVolume *daughter,Int_t copy_No, +TGeoMatrix *matr); +~~~ + +The creation of overlapping nodes can be done with a similar prototype: + +~~~{.cpp} +TGeoVolume::AddNodeOverlap(/*same arguments*/); +~~~ + +When closing the geometry, overlapping nodes perform a check of possible +overlaps with their neighbors. These are stored and checked all the time +during navigation; therefore, navigation is slower when embedding such +nodes into geometry. Nodes have visualization attributes as the volume +has. When undefined by users, painting a node on a pad will take the +corresponding volume attributes. + +\anchor GP01b +### Creating and Positioning Volumes + +\anchor GP01ba +#### Making Volumes + +As mentioned before, volumes are the basic objects used in building the +geometrical hierarchy. They represent objects that are not positioned, +but store all information about the placement of the other volumes they +may contain. Therefore a volume can be replicated several times in the +geometry. As it was explained, in order to create a volume, one has to +put together a shape and a medium, which are already defined. + +Volumes have to be named by users at creation time. Every different name +may represent a unique volume object, but may also represent more +general a family (class) of volume objects having the same shape type +and medium, but possibly different shape parameters. It is the user's +task to provide different names for different volume families in order +to avoid ambiguities at tracking time. + +A generic family rather than a single volume is created only in two +cases: when a parametric shape is used or when a division operation is +applied. Each volume in the geometry stores a unique ID corresponding to +its family. In order to ease-up their creation, the manager class is +providing an API that allows making a shape and a volume in a single +step. + +\anchor GP01bb +#### Example of Volume Creation + +~~~{.cpp} +// Making a volume out of a shape and a medium. +TGeoVolume *vol = new TGeoVolume("VNAME",ptrShape,ptrMed); + +// Making a volume out of a shape but without a defined medium. +TGeoVolume *vol = new TGeoVolume("VNAME",ptrShape); + +// Making a volume with a given shape in one step +TGeoVolume *vol = gGeoManager->MakeBox("VNAME",ptrMed,dx,dy,dz); +TGeoVolume *vol = gGeoManager->MakeTubs("VNAME",ptrMed,rmin,rmax, +dz,phi1,phi2); + +// See class TGeoManager for the rest of shapes. +// Making a volume with a given shape with a unique prototype +TGeoVolume *vol = gGeoManager->Volume("VNAME","XXXX",nmed,upar, +npar); + +// Where XXXX stands for the first 4 letters of the specific shape +// classes, nmed is the medium number, upar is an Double_t * array +// of the shape parameters and npar is the number of parameters. +// This prototype allows (npar = 0) to define volumes with shape +// defined only at positioning time (volumes defined in this way +// need to be positioned using TGeoManager::Node() method) +~~~ + +\anchor GP01bc +#### Positioned Volumes (Nodes) + +Geometrical modeling is a difficult task when the number of different +geometrical objects is 106-108. This is more or less the case for +detector geometries of complex experiments, where a ‘flat' CSG model +description cannot scale with the current CPU performances. This is the +reason why models like GEANT [1] introduced an additional dimension +(depth) in order to reduce the complexity of the problem. This concept +is also preserved by the ROOT modeller and introduces a pure geometrical +constraint between objects (volumes in our case) - containment. This +means in fact that any positioned volume has to be contained by another. +Now what means contained and positioned? + + - We will say that a volume `contains` a point if this is inside the + shape associated to the volume. For instance, a volume having a box + shape will contain all points `P=(X,Y,Z)` verifying the conditions: + `Abs(Pi)dXi`. The points on the shape boundaries are considered as + inside the volume. The volume contains a daughter if it contains all + the points contained by the daughter. + - The definition of containment works of course only with points + defined in the local coordinate system of the considered volume. + `Positioning` a volume inside another have to introduce a + geometrical transformation between the two. If `M` defines this + transformation, any point in the daughter reference can be converted + to the mother reference by: `Pmother = MPdaughter` + +When creating a volume one does not specify if this will contain or not +other volumes. Adding daughters to a volume implies creating those and +adding them one by one to the list of daughters. Since the volume has to +know the position of all its daughters, we will have to supply at the +same time a geometrical transformation with respect to its local +reference frame for each of them. + +~~~{.cpp} +TGeoVolume::AddNode(TGeoVolume *daughter,Int_t usernumber, +TGeoMatrix *matrix=gGeoIdentity) +~~~ + +The objects referencing a volume and a transformation are called `NODES` +and their creation is fully handled by the modeller. They represent the +link elements in the hierarchy of volumes. Nodes are unique and distinct +geometrical objects ONLY from their container point of view. Since +volumes can be replicated in the geometry, the same node may be found on +different branches. + +In order to provide navigation features, volumes have to be able to find +the proper container of any point defined in the local reference frame. +This can be the volume itself, one of its positioned daughter volumes or +none if the point is actually outside. On the other hand, volumes have +to provide also other navigation methods such as finding the distances +to its shape boundaries or which daughter will be crossed first. The +implementation of these features is done at shape level, but the local +mother-daughters management is handled by volumes. These build +additional optimization structures upon geometry closure. In order to +have navigation features properly working one has to follow some rules +for building a valid geometry. + + - The daughter volume(s) must not extrude the mother shape. They are + allowed however to have a common boundaries. + - The volumes positioned in the same container must not overlap with + each other. They may touch on one boundaries or shape vertex. + +The daughter nodes of a volume can be also removed or replaced with +other nodes: + +~~~{.cpp} +void RemoveNode(TGeoNode* node) +TGeoNode*ReplaceNode(TGeoNode* nodeorig, TGeoShape* newshape = 0, +TGeoMatrix* newpos = 0, TGeoMedium* newmed = 0) +~~~ + +The last method allows replacing an existing daughter of a volume with +another one. Providing only the node to be replaced will just create a +new volume for the node but having exactly the same parameters as the +old one. This helps in case of divisions for decoupling a node from the +logical hierarchy so getting new content/properties. For non-divided +volumes, one can change the shape and/or the position of the daughter. + +\anchor GP01bd +#### Virtual Containers and Assemblies of Volumes + +Virtual containers are volumes that do not represent real objects, but +they are needed for grouping and positioning together other volumes. +Such grouping helps not only geometry creation, but also optimizes +tracking performance; therefore, it is highly recommended. Virtual +volumes need to inherit material/medium properties from the volume they +are placed into in order to be "invisible" at tracking time. + +Let us suppose that we need to group together two volumes `A` and `B` +into a structure and position this into several other volumes `D,E,` and +`F`. What we need to do is to create a virtual container volume `C` +holding `A` and `B`, then position `C` in the other volumes. + +Note that `C` is a volume having a determined medium. Since it is not a +real volume, we need to manually set its medium the same as that of +`D,E` or `F` in order to make it "invisible" (same physics properties). +In other words, the limitation in proceeding this way is that `D,E,` and +`F` must point to the same medium. If this was not the case, we would +have to define different virtual volumes for each placement: `C`, `C`' +and `C`\", having the same shape but different media matching the +corresponding containers. This might not happen so often, but when it +does, it forces the creation of several extra virtual volumes. Other +limitation comes from the fact that any container is directly used by +navigation algorithms to optimize tracking. These must geometrically +contain their belongings (positioned volumes) so that these do not +extrude its shape boundaries. Not respecting this rule generally leads +to unpredictable results. Therefore `A` and `B` together must fit into +`C` that has to fit also into `D`, `E`, and `F`. This is not always +straightforward to accomplish, especially when instead of `A` and `B` we +have many more volumes. + +In order to avoid these problems, one can use for the difficult cases +the class TGeoVolumeAssembly, representing an assembly of volumes. +This behaves like a normal container volume supporting other volumes +positioned inside, but it has neither shape nor medium. It cannot be +used directly as a piece of the geometry, but just as a temporary +structure helping temporary assembling and positioning volumes. + +If we define now `C` as an assembly containing `A` and `B`, positioning +the assembly into `D,E` and `F` will actually position only `A` and +`B `directly into these volumes, taking into account their combined +transformations `A/B` to `C` and `C` to `D/E/F`. This looks much nicer, +is it? In fact, it is and it is not. Of course, we managed to get rid of +the "unnecessary" volume `C` in our geometry, but we end-up with a more +flat structure for `D,E` and `F` (more daughters inside). This can get +much worse when extensively used, as in the case: assemblies of +assemblies. + +For deciding what to choose between using virtual containers or +assemblies for a specific case, one can use for both cases, after the +geometry was closed: + +~~~{.cpp} +gGeoManager->SetTopVolume(ptr_D); +gGeoManager->Test(); +gGeoManager->RestoreMasterVolume(); +~~~ + +The `ptr_D` is a pointer to volume `D` containing the interesting +structure. The test will provide the timing for classifying 1 million +random points inside `D`. + +\anchor GP01be +#### Examples of Volume Positioning + +Now let us make a simple volume representing a copper wire. We suppose +that a medium is already created (see TGeoMedium class on how to +create media). + +We will create a `TUBE` shape for our wire, having `Rmin=0cm`, +`Rmax=0.01cm` and a half-length `dZ=1cm`: + +~~~{.cpp} +TGeoTube *tube = new TGeoTube("wire_tube",0,0.01,1); +~~~ + +One may omit the name for the shape `wire_tube,` if no retrieving by +name is further needed during geometry building. Different volumes +having different names and materials can share the same shape. + +Now let's make the volume for our wire: + +~~~{.cpp} +TGeoVolume *wire_co = new TGeoVolume("WIRE_CO",tube,ptrCOPPER); //(*) +~~~ + +(*) Do not bother to delete the media, shapes or volumes that you +have created since all will be automatically cleaned on exit by the +manager class. + +If we would have taken a look inside `TGeoManager::MakeTube()` method, +we would have been able to create our wire with a single line: + +~~~{.cpp} +TGeoVolume *wire_co = gGeoManager->MakeTube("WIRE_CO",ptrCOPPER,0,0.01,1); //(*) +~~~ + +(*) The same applies for all primitive shapes, for which there can +be found corresponding `MakeSHAPE()` methods. Their usage is much more +convenient unless a shape has to be shared between more volumes. + +Let us make now an aluminum wire having the same shape, supposing that +we have created the copper wire with the line above: + +~~~{.cpp} +TGeoVolume *wire_al = new TGeoVolume("WIRE_AL",wire_co>GetShape(), +ptrAL); +~~~ + +We would like now to position our wire in the middle of a gas chamber. +We need first to define the gas chamber: + +~~~{.cpp} +TGeoVolume *chamber = gGeoManager->MakeTube("CHAMBER",ptrGAS, +0,1,1); +~~~ + +Now we can put the wire inside: + +~~~{.cpp} +chamber->AddNode(wire_co,1); +~~~ + +If we inspect now the chamber volume in a browser, we will notice that +it has one daughter. Of course, the gas has some container also, but let +us keeps it like that for the sake of simplicity. Since we did not +supply the third argument, the wire will be positioned with an identity +transformation inside the chamber. + +\anchor GP01bf +#### Overlapping Volumes + +Positioning volumes that does not overlap their neighbors nor extrude +their container is sometimes quite strong constraint. Having a limited +set of geometric shapes might force sometimes overlaps. Since +overlapping is contradictory to containment, a point belonging to an +overlapping region will naturally belong to all overlapping partners. +The answer provided by the modeller to "Where am I?" is no longer +deterministic if there is no priority assigned. + +There are two ways out provided by the modeller in such cases and we +will illustrate them by examples. + + - Suppose we have 2 crossing tubes that we have to describe. Such a + structure cannot be decomposed in a containment schema. This is a + typical example of simple structure that can be handled by using + composite shapes. What we have to do is to define as shapes the + inner and outer parts of the tubes (tubes having + `Rmin=0`,` Rmax=`inner/outer radius), then to make a composite: + - `C = (Tub1out+Tub2out)-(Tub1in+Tub2in)` + - On the other hand, if we have an EM calorimeter having a honeycomb + structure, Boolean combinations do not help anymore. Here the + problem is that we usually have a very large number of cells that + are naturally belonging to the same container. This result in a very + flat and slow structure for that particular container, which we + would very much want to avoid by introducing additional levels in + depth. We can describe the basic cell as a hexahedron that we can + represent by using a polygon primitive shape. Instead of putting one + by one all cells in the same container, we can define rows of such + elements, fitting in box-shaped containers. Then we can put + row-beside-row inside the container, making life much easier for its + navigation algorithms. The problem is that in order to reproduce the + honeycomb structure out of rows of cells, we have to overlap row + containers. Whoops - we have not obeyed rule No. 2 in positioning. + The way out is to position our rows with a special prototype: + +~~~{.cpp} +ptrCAL->AddNodeOverlap("ROW",nRow,matrixRow); +~~~ + +This will instruct the modeller that the daughter ROW inside CAL +overlaps with something else. The modeller will check this at closure +time and build a list of possibly overlapping candidates. This option is +equivalent with the option MANY in GEANT3. + +The modeller supports such cases only if user declares the overlapping +nodes. In order to do that, one should use +TGeoVolume::AddNodeOverlap() instead of TGeoVolume::AddNode(). +When two or more positioned volumes are overlapping, not all of them +have to be declared so, but at least one. A point inside an overlapping +region equally belongs to all overlapping nodes, but the way these are +defined can enforce the modeller to give priorities. + +The general rule is that the deepest node in the hierarchy containing a +point has the highest priority. For the same geometry level, +non-overlapping is prioritized over overlapping. In order to illustrate +this, we will consider few examples. We will designate non-overlapping +nodes as ONLY and the others MANY as in GEANT3, where this concept was +introduced: + +1. The part of a MANY node B extruding its container A will never be +"seen" during navigation, as if B was in fact the result of the +intersection of A and B. + +2. If we have two nodes A (ONLY) and B (MANY) inside the same container, +all points in the overlapping region of A and B will be designated as +belonging to A. + +3. If A an B in the above case were both MANY, points in the overlapping +part will be designated to the one defined first. Both nodes must have +the same medium. + +4. The slices of a divided MANY will be as well MANY. + +One needs to know that navigation inside geometry parts MANY nodes is +much slower. Any overlapping part can be defined based on composite +shapes - might be in some cases a better way out. + +\anchor GP01bg +#### Replicating Volumes + +What can we do if our chamber contains two identical wires instead of +one? What if then we would need 1000 chambers in our detector? Should we +create 2000 wires and 1000 chamber volumes? No, we will just need to +replicate the ones that we have already created. + +~~~{.cpp} +chamber->AddNode(wire_co,1,new TGeoTranslation(0.2,0,0)); +chamber->AddNode(wire_co,2,new TGeoTranslation(0.2,0,0)); +~~~ + +The 2 nodes that we have created inside chamber will both point to a +`wire_co` object, but will be completely distinct: `WIRE_CO_1` and +`WIRE_CO_2`. We will want now to place symmetrically 1000 chambers on a +pad, following a pattern of 20 rows and 50 columns. One way to do this +will be to replicate our chamber by positioning it 1000 times in +different positions of the pad. Unfortunately, this is far from being +the optimal way of doing what we want. Imagine that we would like to +find out which of the 1000 chambers is containing a `(x,y,z)` point +defined in the pad reference. You will never have to do that, since the +modeller will take care of it for you, but let's guess what it has to +do. The most simple algorithm will just loop over all daughters, convert +the point from mother to local reference and check if the current +chamber contains the point or not. This might be efficient for pads with +few chambers, but definitely not for 1000. Fortunately the modeller is +smarter than that and creates for each volume some optimization +structures called `voxels` to minimize the penalty having too many +daughters, but if you have 100 pads like this in your geometry you will +anyway lose a lot in your tracking performance. The way out when +volumes can be arranged according to simple patterns is the usage of +divisions. We will describe them in detail later on. Let's think now at +a different situation: instead of 1000 chambers of the same type, we may +have several types of chambers. Let's say all chambers are cylindrical +and have a wire inside, but their dimensions are different. However, we +would like all to be represented by a single volume family, since they +have the same properties. + +\anchor GP01bh +#### Volume Families + +A volume family is represented by the class TGeoVolumeMulti. It +represents a class of volumes having the same shape type and each member +will be identified by the same name and volume ID. Any operation applied +to a TGeoVolumeMulti equally affects all volumes in that family. +The creation of a family is generally not a user task, but can be forced +in particular cases: + +~~~{.cpp} +TGeoManager::Volume(const char *vname,const char *shape, Int_t nmed); +~~~ + +Where: `vname` is the family name, `nmed` is the medium number and +`shape` is the shape type that can be: + + - `box` for TGeoBBox + - `trd1` for TGeoTrd1 + - `trd2` for TGeoTrd2 + - `trap` for TGeoTrap + - `gtra` for TGeoGtra + - `para` for TGeoPara + - `tube`, `tubs` for TGeoTube, TGeoTubeSeg + - `cone` for TGeoCone + - `eltu` for TGeoEltu + - `ctub` for TGeoCtub + - `pcon` for TGeoPcon + - `pgon` for TGeoPgon + +Volumes are then added to a given family upon adding the generic name as +node inside other volume: + +~~~{.cpp} +TGeoVolume *box_family = gGeoManager->Volume("BOXES","box",nmed); +// ... +gGeoManager->Node("BOXES",Int_t copy_no,"mother_name",Double_t x, +Double_t y,Double_t z,Int_t rot_index,Bool_t is_only, +Double_t *upar,Int_t npar); +~~~ + + - `BOXES` - name of the family of boxes + - `copy_no` - user node number for the created node + - `mother_name` - name of the volume to which we want to add the node + - `x,y,z` - translation components + - `rot_index` - index of a rotation matrix in the list of matrices + - `upar` - array of actual shape parameters + - `npar` - number of parameters + +The parameters order and number are the same as in the corresponding +shape constructors. Another particular case where volume families are +used is when we want that a volume positioned inside a container to +match one ore more container limits. Suppose we want to position the +same box inside 2 different volumes and we want the Z size to match the +one of each container: + +~~~{.cpp} +TGeoVolume *container1 = gGeoManager->MakeBox("C1",imed,10,10,30); +TGeoVolume *container2 = gGeoManager->MakeBox("C2",imed,10,10,20); +TGeoVolume *pvol = gGeoManager->MakeBox("PVOL",jmed,3,3,-1); +container1->AddNode(pvol,1); +container2->AddNode(pvol,1); +~~~ + +Note that the third parameter of `PVOL` is negative, which does not make +sense as half-length on Z. This is interpreted as: when positioned, +create a box replacing all invalid parameters with the corresponding +dimensions of the container. This is also internally handled by the +**`TGeoVolumeMulti`** class, which does not need to be instantiated by +users. + +\anchor GP01bi +#### Dividing Volumes + +Volumes can be divided according a pattern. The simplest division can be +done along one axis that can be: `X,Y,Z,Phi,Rxy or Rxyz`. Let's take a +simple case: we would like to divide a box in N equal slices along X +coordinate, representing a new volume family. Supposing we already have +created the initial box, this can be done like: + +~~~{.cpp} +TGeoVolume *slicex = box->Divide("SLICEX",1,N); +~~~ + +Here `SLICEX` is the name of the new family representing all slices and +1 is the slicing axis. The meaning of the axis index is the following: +for all volumes having shapes like `box`, `trd1`, `trd2`, `trap`, +`gtra `or` para - `1, 2, 3 mean X, Y, Z; for `tube`, `tubs`, `cone`, +`cons - `1 means `Rxy`, 2 means `phi` and 3 means Z; for `pcon` and +`pgon` - 2 means `phi` and 3 means Z; for spheres 1 means `R `and 2 +means `phi.` + +In fact, the division operation has the same effect as positioning +volumes in a given order inside the divided container - the advantage +being that the navigation in such a structure is much faster. When a +volume is divided, a volume family corresponding to the slices is +created. In case all slices can be represented by a single shape, only +one volume is added to the family and positioned N times inside the +divided volume, otherwise, each slice will be represented by a distinct +volume in the family. + +Divisions can be also performed in a given range of one axis. For that, +one has to specify also the starting coordinate value and the step: + +~~~{.cpp} +TGeoVolume *slicex = box->Divide("SLICEX",1,N,start,step); +~~~ + +A check is always done on the resulting division range: if not fitting +into the container limits, an error message is posted. If we will browse +the divided volume we will notice that it will contain N nodes starting +with index 1 up to N. The first one has the lower X limit at `START` +position, while the last one will have the upper X limit at +`START+N*STEP`. The resulting slices cannot be positioned inside another +volume (they are by default positioned inside the divided one) but can +be further divided and may contain other volumes: + +~~~{.cpp} +TGeoVolume *slicey = slicex->Divide("SLICEY",2,N1); +slicey->AddNode(other_vol,index,some_matrix); +~~~ + +When doing that, we have to remember that `SLICEY` represents a family, +therefore all members of the family will be divided on Y and the other +volume will be added as node inside all. + +In the example above all the resulting slices had the same shape as the +divided volume (box). This is not always the case. For instance, +dividing a volume with `TUBE` shape on `PHI `axis will create equal +slices having `TUBESEG` shape. Other divisions can also create slices +having shapes with different dimensions, e.g. the division of a `TRD1` +volume on Z. + +When positioning volumes inside slices, one can do it using the generic +volume family (e.g. `slicey`). This should be done as if the coordinate +system of the generic slice was the same as the one of the divided +volume. The generic slice in case of `PHI` division is centered with +respect to X-axis. If the family contains slices of different sizes, any +volume positioned inside should fit into the smallest one. + +Examples for specific divisions according to shape types can be found +inside shape classes. + +~~~{.cpp} +TGeoVolume::Divide(N,Xmin,Xmax,"X"); +~~~ + +Create a new volume by dividing an existing one (GEANT3 like). + +Divides `MOTHER` into `NDIV` divisions called `NAME` along axis `IAXIS` +starting at coordinate value `START` and having size `STEP`. The created +volumes will have tracking media `ID=NUMED` (if `NUMED=0` -\> same media +as `MOTHER`). + +The behavior of the division operation can be triggered using `OPTION` +(case insensitive): + + - `N`divide all range in `NDIV` cells (same effect as `STEP<=0`) + (GSDVN in G3) + - `NX`divide range starting with `START` in `NDIV` cells (GSDVN2 in + G3) + - `S`divide all range with given `STEP`; `NDIV` is computed and + divisions will be centered in full range (same effect as `NDIV<=0`) + (GSDVS, GSDVT in G3) + - `SX`same as `DVS`, but from `START` position (GSDVS2, GSDVT2 in G3) + +\anchor GP01bj +#### Volume Assemblies + +In general, geometry contains structures of positioned volumes that have +to be grouped and handled together, for different possible reasons. One +of these is that the structure has to be replicated in several parts of +the geometry, or it may simply happen that they really represent a +single object, too complex to be described by a primitive shape. + +Usually handling structures like these can be easily done by positioning +all components in the same container volume, then positioning the +container itself. However, there are many practical cases when defining +such a container is not straightforward or even possible without +generating overlaps with the rest of the geometry. There are few ways +out of this: + + - Defining the container for the structure as "overlapping" (see also + "Overlapping Volumes") + - Representing the container as a composite shape - the Boolean union + of all components (see also "Composite Shapes") + - Using an assembly volume - this will be described in the following. + +The first two approaches have the disadvantage of penalizing the +navigation performance with a factor increasing more than linear of the +number of components in the structure. The best solution is the third +one because it uses all volume-related navigation optimizations. The +class TGeoVolumeAssembly represents an assembly volume. Its shape +is represented by TGeoShapeAssembly class that is the union of all +components. It uses volume voxelization to perform navigation tasks. + +An assembly volume creates a hierarchical level and it geometrically +insulates the structure from the rest (as a normal volume). Physically, +a point that is INSIDE a TGeoShapeAssembly is always inside one of +the components, so a TGeoVolumeAssembly does not need to have a +medium. Due to the self-containment of assemblies, they are very +practical to use when a container is hard to define due to possible +overlaps during positioning. For instance, it is very easy creating +honeycomb structures. A very useful example for creating and using +assemblies can be found at: assembly.C. + +Creation of an assembly is very easy: one has just to create a +TGeoVolumeAssembly object and position the components inside as +for any volume: + +~~~{.cpp} +TGeoVolume *vol = new TGeoVolumeAssembly(name); +vol->AddNode(vdaughter1, cpy1, matrix1); +vol->AddNode(vdaughter2, cpy2, matrix2); +~~~ + +Note that components cannot be declared as "overlapping" and that a +component can be an assembly volume. For existing flat volume +structures, one can define assemblies to force a hierarchical structure +therefore optimizing the performance. Usage of assemblies does NOT imply +penalties in performance, but in some cases, it can be observed that it +is not as performing as bounding the structure in a container volume +with a simple shape. Choosing a normal container is therefore +recommended whenever possible. + +\image html geometry006.png "Assemblies of volumes" width=600px + +\anchor GP01c +### Geometrical Transformations + +All geometrical transformations handled by the modeller are provided as +a built-in package. This was designed to minimize memory requirements +and optimize performance of point/vector master-to-local and +local-to-master computation. We need to have in mind that a +transformation in **`TGeo`** has two major use-cases. The first one is +for defining the placement of a volume with respect to its container +reference frame. This frame will be called 'master' and the frame of the +positioned volume - 'local'. If `T` is a transformation used for +positioning volume daughters, then: `MASTER = T * LOCAL` + +Therefore `T `is used to perform a local to master conversion, while +`T-1` for a master to local conversion. The second use case is the +computation of the global transformation of a given object in the +geometry. Since the geometry is built as 'volumes-inside-volumes', the +global transformation represents the pile-up of all local +transformations in the corresponding branch. Once a given object in the +hierarchy becomes the current one, the conversion from master to local +coordinates or the other way around can be done from the manager class. + +A general homogenous transformation is defined as a 4x4 matrix embedding +a rotation, a translation and a scale. The advantage of this description +is that each basic transformation can be represented as a homogenous +matrix, composition being performed as simple matrix multiplication. + +Rotation: + +\f[ +\left|\begin{array}{cccc} + r_{11} & r_{12} & r_{13} & 0 \\ + r_{21} & r_{22} & r_{23} & 0 \\ + r_{31} & r_{32} & r_{33} & 0 \\ + 0 & 0 & 0 & 1 +\end{array} +\right| +\f] + +Translation: + +\f[ +\left|\begin{array}{cccc} + 1 & 0 & 0 & 0 \\ + 0 & 1 & 0 & 0 \\ + 0 & 0 & 1 & 0 \\ + t_x & t_y & t_z & 1 +\end{array} +\right| +\f] + +Scale: + +\f[ +\left|\begin{array}{cccc} + s_x & 0 & 0 & 0 \\ + 0 & s_y & 0 & 0 \\ + 0 & 0 & s_z & 0 \\ + 0 & 0 & 0 & 1 +\end{array} +\right| +\f] + +Inverse rotation: + +\f[ +\left|\begin{array}{cccc} + r_{11} & r_{21} & r_{31} & 0 \\ + r_{12} & r_{22} & r_{32} & 0 \\ + r_{13} & r_{23} & r_{33} & 0 \\ + 0 & 0 & 0 & 1 +\end{array} +\right| +\f] + +Inverse translation: + +\f[ +\left|\begin{array}{cccc} + 1 & 0 & 0 & 0 \\ + 0 & 1 & 0 & 0 \\ + 0 & 0 & 1 & 0 \\ + -t_x & -t_y & -t_z & 1 +\end{array} +\right| +\f] + +Inverse scale: + +\f[ +\left|\begin{array}{cccc} + \frac{1}{s_x} & 0 & 0 & 0 \\ + 0 & \frac{1}{s_y} & 0 & 0 \\ + 0 & 0 & \frac{1}{s_z} & 0 \\ + 0 & 0 & 0 & 1 +\end{array} +\right| +\f] + + - \f$r_{ij}\f$ are the 3x3 rotation matrix components + - \f$t_x\f$,\f$t_y\f$,\f$t_z\f$ are the translation components + - \f$s_x\f$, \f$s_y\f$, \f$s_z\f$ are arbitrary scale constants on each axis + +The disadvantage in using this approach is that computation for 4x4 +matrices is expensive. Even combining two translations would become a +multiplication of their corresponding matrices, which is quite an +undesired effect. On the other hand, it is not a good idea to store a +translation as a block of 16 numbers. We have therefore chosen to +implement each basic transformation type as a class deriving from the +same basic abstract class and handling its specific data and +point/vector transformation algorithms. + +The base class TGeoMatrix defines abstract methods for: + + - Translation, rotation and scale getters. Every derived class stores + only its specific data, e.g. a translation stores an array of 3 + doubles and a rotation an array of 9. However, getting the + TGeoTranslation rotation array through the base + TGeoMatrix interface is a legal operation. The answer in this + case is a pointer to a global constant array representing an + identity rotation. + +~~~{.cpp} +Double_t *TGeoMatrix::GetTranslation() const; +Double_t *TGeoMatrix::GetRotation() const; +Double_t *TGeoMatrix::GetScale() const; +~~~ + + - Master-to-local and local-to-master point and vector transformations: + +~~~{.cpp} +void TGeoMatrix::MasterToLocal(const Double_t *master, +Double_t *local) +void TGeoMatrix::LocalToMaster(const Double_t *local, +Double_t *master) +void TGeoMatrix::MasterToLocalVect(const Double_t *master, +Double_t *local) +void TGeoMatrix::LocalToMasterVect(const Double_t *local, +Double_t *master) +~~~ + +Here `master` and `local` are arrays of size 3. These methods allow +correct conversion also for reflections. + + - Transformation type finding: + +~~~{.cpp} +Bool_t TGeoMatrix::IsIdentity() const; +Bool_t TGeoMatrix::IsTranslation() const; +Bool_t TGeoMatrix::IsRotation() const; +Bool_t TGeoMatrix::IsScale() const; +Bool_t TGeoMatrix::IsCombi() const; // (tr. + rot.) +Bool_t TGeoMatrix::IsGeneral() const; // (tr. + rot. + scale) +~~~ + +Specific classes deriving from TGeoMatrix represent combinations +of basic transformations. In order to define a matrix as a combination +of several others, a special class TGeoHMatrix is provided. Here +is an example of matrix creation: + +\anchor GP01ca +#### Matrix Creation Example + +~~~{.cpp} +TGeoRotation r1,r2; +r1.SetAngles(90,0,30); //rotation defined by Euler angles +r2.SetAngles(90,90,90,180,0,0); //rotation defined by GEANT3 angles +TGeoTranslation t1(-10,10,0); +TGeoTranslation t2(10,-10,5); +TGeoCombiTrans c1(t1,r1); +TGeoCombiTrans c2(t2,r2); +TGeoHMatrix h = c1 * c2; // composition is done via TGeoHMatrix +TGeoHMatrix *ph = new TGeoHMatrix(hm); // class it is what we want + // to use for positioning + // a volume +ph->Print(); +... +pVolume->AddNode(pVolDaughter,id,ph) // now ph is owned by + the manager +~~~ + +\anchor GP01cb +#### Rule for Creation of Transformations + +Unless explicitly used for positioning nodes (TGeoVolume::AddNode()) +all matrices deletion have to be managed by users. Matrices passed to +geometry have to be created by using `new()` operator and +TGeoManager class is responsible for their deletion. Matrices that +are used for the creation of composite shapes have to be named and +registered to the manager class: + +~~~{.cpp} +transf->SetName(name); // if not already named in the constructor +transf->RegisterYourself(); +~~~ + +Generally, it is advisable to create all intermediate transformations +used for making the final combined one on the heap: + +~~~{.cpp} +TGeoRotation r1(...); +TGeoRotation r2(...); +TGeoHMatrix *mat = new TGeoHMatrix("name"); // we want to use only + // this one in geometry +*mat = r1 * r2; +~~~ + +\anchor GP01cc +#### Available Geometrical Transformations + + - Translations (**`TGeoTranslation`** class) represent a `(dx,dy,dz)` + translation. The only data member is: `Double_t fTranslation[3]`. + Translations can be added or subtracted. + +~~~{.cpp} +TGeoTranslation t1; +t1->SetTranslation(-5,10,4); +TGeoTranslation *t2 = new TGeoTranslation(4,3,10); +t2->Subtract(&t1); +~~~ + + - Rotations (TGeoRotation class) represent a pure rotation. Data + members are `Double_t fRotationMatrix[3*3]`. Rotations can be + defined either by Euler angles, either, by GEANT3 angles: + +~~~{.cpp} +TGeoRotation *r1 = new TGeoRotation(); +r1->SetAngles(phi,theta,psi); // all angles in degrees +~~~ + +This represents the composition of: first a rotation about Z axis with +angle phi, then a rotation with theta about the rotated X axis, and +finally a rotation with `psi` about the new Z axis. + +~~~{.cpp} +r1->SetAngles(th1,phi1,th2,phi2,th3,phi3) +~~~ + +This is a rotation defined in GEANT3 style. Theta and phi are the +spherical angles of each axis of the rotated coordinate system with +respect to the initial one. This construction allows definition of +malformed rotations, e.g. not orthogonal. A check is performed and an +error message is issued in this case. + +Specific utilities: determinant, inverse. + + - Scale transformations (TGeoScale class) - represent a scaled + shrinking/enlargement, possibly different on all axes. Data members: + `Double_t fScale[3]`. Not implemented yet. + - Combined transformations - represent a rotation followed by a + translation. Data members: + `Double_t fTranslation[3]`, `TGeoRotation *fRotation`. + +~~~{.cpp} +TGeoRotation *rot = new TGeoRotation("rot",10,20,30); +TGeoTranslation trans; +... +TGeoCombiTrans *c1 = new TGeoCombiTrans(trans,rot); +TGeoCombiTrans *c2 = new TGeoCombiTrans("somename",10,20,30,rot) +~~~ + + - General transformations: (TGeoHMatrix class) represent + combined transformations in any order. + - Identity transformation: (TGeoIdentity class) is a generic + identity transformation represented by a singleton class object + `gGeoIdentity`. + +\anchor GP01d +### Ownership of Geometry Objects + +The class TGeoManager class contains the entire API needed for +building and tracking geometry. It defines a global pointer +`gGeoManager` in order to be fully accessible from external code. +The manager class is the owner of all geometry objects defined in a +session; therefore, users must not try to control their deletion. It +contains lists of media, materials, transformations, shapes and volumes. +A special case is the one of geometrical transformations. When creating +a matrix or a translation, this is by default owned by external objects. +The manager class becomes owner of all transformations used for +positioning volumes. In order to force the ownership for other +transformations, one can use TGeoMatrix::RegisterYourself() method. Do +not be therefore surprised that some transformations cannot be found by +name when creating a composite shape for instance if you did not +register them after creation. + +Logical nodes (positioned volumes) are created and destroyed by the +TGeoVolume class. Physical nodes and their global transformations +are subjected to a caching mechanism due to the sometimes very large +memory requirements of logical graph expansion. The total number of +physical instances of volumes triggers the caching mechanism and the +cache manager is a client of TGeoManager. The manager class also +controls the drawing/checking package (TGeoPainter client). This +is linked with %ROOT graphical libraries loaded on demand in order to +control visualization actions. + +\anchor GP02 +## Navigation and Tracking + +Tracking is the feature allowing the transport of a given particle +knowing its kinematics. A state is determined by any combination of the +position \f$\vec{r}\f$ and direction \f$\vec{n}\f$ with respect to the world +reference frame. The direction \f$\vec{n}\f$ must be a unit vector having as +components the director cosines. The full classification of a given +state will provide the following information: the deepest physical node +containing the position vector, the distance to the closest boundary +along the direction vector, the next physical node after propagating the +current point with this distance and the safety distance to the nearest +boundary. This information allows the propagation of particles inside a +detector geometry by taking into account both geometrical and physical +constraints. + +We will hereby describe the user interface of `TGeo` to access +tracking functionality. This allows either developing a tracker for +simple navigation within a given geometry, either interfacing to an +external tracking engine such as GEANT. Note that the abstract interface +for external trackers can be found in `$ROOTSYS/vmc` folder and it can +be used to run GEANT3, GEANT4 and FLUKA-based simulations (\*) by using +directly a geometry described with %ROOT. + +The interface methods related to tracking are incorporated into +TGeoManager class and implemented in the navigator class +TGeoNavigator. In order to be able to start tracking, one has to +define the initial state providing the starting point \f$\vec{r_0}\f$ + and direction \f$\vec{n_0}\f$ . +There are several ways of doing that. + +\anchor GP02a +### TGeoNavigator Class + +One geometry may have several independent navigators to query to +localize points or compute distances. The geometry manager holds a list +of active navigators accessible via: + +~~~{.cpp} +TObjArray *navigators = gGeoManager->GetListOfNavigators(); +~~~ + +Upon closing the geometry a default navigator is provided as first one +in this list, but one may add its own via: + +~~~{.cpp} +TGeoNavigator *navig = new TGeoNavigator(gGeoManager); +// Store the index of the user navigator +Int_t inav = gGeoManager->AddNavigator(navig); +// Make its own navigator the active one +gGeoManager->SetCurrentNavigator(inav); +// Switch between navigators +gGeoManager->SetCurrentNavigator(0); +~~~ + +A navigator holds several variables describing the current navigation +state: current point position, current direction distance to next +boundary, isotropic safety, pointer to current and next nods as well as +several tracking flags related to volume boundary conditions or other +properties required for track propagation in geometry. Each geometry +query affects these variables, so the only way in testing several +navigation alternatives and remembering the active navigation state is +to use parallel navigation. The following paragraphs will describe the +usage of a single navigator. All setters/getters for navigation state +parameters as well as navigation queries provided by TGeoNavigator +are interfaced by TGeoManager and will act on the current +navigator. + +\anchor GP02b +### Initializing the Starting Point + +The current point (`x,y,z`) known by the modeller is stored as +`Double_t fCurrentPoint[3]` by the navigator class. This array of the +three coordinates is defined in the current global reference system and +can be retrieved any time: + +~~~{.cpp} +Const Double_t *cpoint = gGeoManager->GetCurrentPoint(); +~~~ + +Initializing this point can be done like: + +~~~{.cpp} +gGeoManager->SetCurrentPoint(x,y,z); +// or: +gGeoManager->SetCurrentPoint(Double_t *point[3]); +~~~ + +\anchor GP02c +### Initializing the Direction + +In order to move inside geometry starting with the current point, the +modeller needs to know the current direction `(nx,ny,nz)`. This +direction is stored as `Double_t fCurrentDirection[3]` by the navigator +and it represents a direction in the global frame. It can be retrieved +with: + +~~~{.cpp} +Const Double_t *cdir = gGeoManager->GetCurrentDirection(); +~~~ + +The direction can be initialized in a similar manner as the current +point: + +~~~{.cpp} +gGeoManager->SetCurrentDirection(nx,ny,nz); +// or: +gGeoManager->SetCurrentDirection(Double_t *dir); +~~~ + +\anchor GP02d +### Initializing the State + +Setting the initial point and direction is not enough for initializing +tracking. The modeller needs to find out where the initial point is +located in the geometrical hierarchy. Due to the containment based +architecture of the model, this is the deepest positioned object +containing the point. For illustrating this, imagine that we have a +simple structure with a top volume `A` and another one `B `positioned +inside. Since `A `is a top volume, its associated node `A_1` will define +`MARS` and our simple hierarchy of nodes (positioned volumes) will be: +`/A_1/B_1`. Suppose now that the initial point is contained by `B_1`. +This implies by default that the point is also contained by `A_1`, since +`B_1` have to be fully contained by this. After searching the point +location, the modeller will consider that the point is located inside +`B_1`, which will be considered as the representative object (node) for +the current state. This is stored as: `TGeoNode *TGeoManager::fCurrentNode` +and can be asked from the manager class +only after the `'Where am I?'` was completed: + +~~~{.cpp} +TGeoNode *current = gGeoManager->GetCurrentNode(); +~~~ + +In order to find the location of the current point inside the hierarchy +of nodes, after setting this point it is mandatory to call the +`‘Where am I?'` method: + +~~~{.cpp} +gGeoManager->FindNode(); +~~~ + +In order to have more flexibility, there are in fact several alternative +ways of initializing a modeller state: + +~~~{.cpp} +// Setting the point and finding the state in one step: +gGeoManager->FindNode(Double_t x,Double_t y,Double_t z); +gGeoManager->FindNode(Double_t *point[3]); +// Setting both initial point and direction and finding the state: +gGeoManager->InitTrack(Double_t x,Double_t y,Double_t z, +Double_t nx, Double_t ny, Double_t nz); +gGeoManager->InitTrack(Double_t *point[3],Double_t *dir[3]); +~~~ + +Note that the current point coordinates can be changed and the state +re-initialized at any time. This represents the `‘Where am I?'` +geometrical query representing the basic navigation functionality +provided by the modeller. + +\anchor GP02e +### Checking the Current State + +The current state and all variables related to this are essential during +tracking and have to be checked several times. Besides the current point +and direction, the following additional information can be retrieved +from TGeoManager interface: + + - The `current path`. This represents a string containing the names + and copy numbers of all positioned objects in the current `branch` + written in the /folder/folder/.../folder/file fashion. The final node + pointed by the path is the deepest object containing the current + point and is representative for the current state. All intermediate + `folders` in the path are in fact also nodes "touched" by the + current point, but having some "touched" containment. The current + path can be retrieved only after the state was initialized and is + useful for getting an idea of the current point location. + +~~~{.cpp} +const char *path = gGeoManager->GetPath(); +cout << "Current path is: " << path << endl; +/A_1/B_34/C_3/D_1 +~~~ + + - The `current node`, `volume` and `material`. In order to + take decisions on post-step or further stepping actions, one has to + know these. In order to get a pointer to the current node one can + do: + +~~~{.cpp} +TGeoNode *cnode = gGeoManager->GetCurrentNode(); +// then: +TGeoVolume *cvol = gGeoManager->GetCurrentVolume(); +// or: +cvol = cnode->GetVolume(); // (*) +// then: +TGeoMaterial *cmat = cvol->GetMedium()->GetMaterial(); +~~~ + +(*) Note: If the current point is in fact outside the geometry, the +current node pointer will not be NULL, but pointing to the top node. + +In order to take decisions in such case one needs always to test: + +~~~{.cpp} +if (gGeoManager->IsOutside()) { + // current point is actually outside + ... // corresponding action +} +~~~ + +Specific information related to the current volume/node like ID's or +shape can be then retrieved from the corresponding objects. + + - Current state `index`. The number of possible different states of + the modeller corresponds to the number of different objects/paths in + the geometry. This has nothing to do with the number of nodes, since + the same node can be found on different branches. In other words, + the number of states corresponds to the number of nodes in the + `expanded geometry tree`. Since unfortunately this expansion from + logical to physical hierarchy cannot be stored on regular basis due + to the large size of the latter, one cannot directly assign state + numbers. If the size of the expansion proves however to be small + enough (less than about 50 million objects), a parallel structure + storing these state indices is built and stored in memory. In such + case each state automatically gets an index that can be retrieved + after any state initialization. These indices can prove to be quite + useful for being able to keep track of the navigation history and + force certain states. Let's illustrate how this works with a simple + example: + - Suppose we have a simple geometry with a volume B positioned twice + inside a container A. Then A is positioned twice in a top container + T. The complete list of logical nodes is: `T_1`, `A_1`, `A_2`, + `B_1`, `B_2`. On the other hand we will have more states than + logical nodes: + - `/T_1`- 1 state at level = 0 + - `/T_1/A_1,/T_1/A_2`- 2 states at level = 1 + - `/T_1/A_1/B_1,/T_1/A_1/B_2,/T_1/A_2/B_1,/T_1/A_2/B_2` - 4 states at + level = 2 + - All these states will get automatic numbers, starting with 0 + corresponding to the top-level state and ending with an integer + corresponding to Ntotal\_states-1. The mapping from a given logical + node to a state number is generally not possible, as for the node + B\_1 that appears as current node for 2 different states. The + numbering order of states is therefore not important, but it can be + used as in the following lines: + +~~~{.cpp} +gGeoManager->InitTrack(pt,dir); // anything to initialize a state +Int_t istate = gGeoManager->GetCurrentNodeId(); // in fact state Id +{ + //... code changing the current state +} +gGeoManager->CdNode(istate); // forces state's re-initialization +~~~ + + - Current `global transformation`. This represents the transformation + from `MARS` to the local reference of the current node, being the + product of all local mother-daughter transformations in the branch. + The global transformation can be referenced or copied: + +~~~{.cpp} +const TGeoHMatrix *global = gGeoManager->GetCurrentMatrix(); +TGeoHMatrix *copy = new TGeoHMatrix(*global); +~~~ + + - One often needs to perform `master-to-local` and `local-to-master` + point and vector conversions to get from `MARS` to the local node + coordinates. This can be done by using the global transformation or + directly the **`TGeoManager`** corresponding interfaces: + +~~~{.cpp} +Double_t *glob_pt = gGeoManager->GetCurrentPoint(); +Double_t *glob_dir = gGeoManager->GetCurrentDirection(); +Double_t loc_pt[3], loc_dir[3]; +// Go from MARS to local coordinates: +gGeoManager->MasterToLocal(glob_pt,loc_pt); // or: +global->MasterToLocal(glob_pt,loc_pt); // will be omitted from now +~~~ + +\anchor GP02f +### Saving and Restoring the Current State + +As we already described, saving and restoring modeller states can be +quite useful during tracking and is a feature extensively used by +external tracking engines. We will call this navigation history +management, which in most of the cases can be performed by handling the +state identifiers. For quite big geometries, state indexing is not +possible anymore and will be automatically disabled by the modeller. +Fortunately there is a backup solution working in any condition: the +modeller maintains a stack of states that is internally used by its own +navigation algorithms, but user code is also allowed to access it. This +works on any stack principle by using PUSH and POP calls and user code +is responsible for popping the pushed states in order to keep the stack +clean. + +~~~{.cpp} +// push the current state in the stack +Int_t index = gGeoManager->PushPath(); +// push state and current point +Int_t index = gGeoManager->PushPoint(); +// retrieves the last pushed state (decrements stack index) +gGeoManager->PopPath(); +// the same but retrieves also the point location +gGeoManager->PopPoint(); +// just decrement stack index without changing state +gGeoManager->PopDummy(); +// retrieves a state at given index without changing stack index +gGeoManager->PopPath(Int_t index); +~~~ + +\anchor GP02g +### Navigation Queries + +After initializing the current state related to a given point and +direction defined in `MARS` `(‘Where am I?')`, one can query for several +geometrical quantities. All the related algorithms work in the +assumption that the current point has been localized inside the geometry +(by the methods `TGeoManager::FindNode()` or +TGeoManager::InitTrack()) and the current node or path has not +been changed by the user. + +\anchor GP02ga +#### Finding If Current State Is Changed For a New Point + +One can find fast if a point different from the current one has or not +the same location inside the geometry tree. To do that, the new point +should not be introduced by using TGeoManager::SetCurrentPoint() +method, but rather by calling the specific method: + +~~~{.cpp} +Bool_t TGeoManager::IsSameLocation(Double_t x,Double_t y, +Double_t z,Bool_t change=kFALSE); +~~~ + +In the prototype above, `x, y` and `z` are the coordinates of the new +point. The modeller will check whether the current volume still contains +the new point or its location has changed in the geometry hierarchy. If +the new location is different, two actions are possible according to the +value of `change`: + + - `change = kFALSE` (default) - the modeller does not change the + current state but just inform the caller about this change. + - `change = kTRUE` - the modeller will actually perform a new + `‘Where am I?' `search after finding out that the location has + changed. The current state will be actualized accordingly. + +Note that even when performing a normal search on the current state +after changing the current point coordinates (e.g. +`gGeoManager->FindNode(newX,newY,newZ)`), users can always query if the +previous state has changed by using a method having the same name but +without parameters: + +~~~{.cpp} +Bool_t TGeoManager::IsSameLocation(); +~~~ + +\anchor GP02gb +#### Finding the Distance to the Next Boundary + +All tracking engines need to compare the currently proposed physical +step with the maximum allowed distance in the current material. The +modeller provides this information by computing the distance to the +first boundary starting from the current point along a straight line. +The starting point and direction for this procedure are the ones +corresponding to the current state. The boundary search is initialized +inside the current volume and the crossed boundary can belong either to +the current node or to one of its daughters. The full prototype of the +method is: + +~~~{.cpp} +TGeoNode *TGeoManager::FindNextBoundary(Double_t step=kBig); +~~~ + +In the prototype above, besides the current point and direction that are +supposed already initialized, the only input parameter is `step`. This +represents the maximum step allowed by the tracking algorithm or the +`physical step`. The modeller will search for a boundary crossing only +up to a distance equal to this value. If a boundary is found, a pointer +to the object (node) having it is returned; otherwise the method returns +`NULL`. + +The computed value for the computed distance can be subsequently +retrieved from the manager class: + +~~~{.cpp} +Double_t snext = gGeoManager->GetStep(); +Double_t safety = gGeoManager->GetSafeDistance(); +~~~ + +According the step value, two use cases are possible: + + - `step =` `TGeoShape::kBig ` (default behavior; `kBig = 1030`). In + this case, there is no limitation on the search algorithm, the first + crossed node is returned and the corresponding distance computed. If + the current point is outside geometry and the top node is not + crossed, the corresponding distance will be set to `kBig` and a + `NULL` pointer returned. No additional quantity will be computed. + - `step < kBig`. In this case, the progressive search starting from + the current point will be stopped after a distance equal with the + supplied step. In addition to the distance to the first crossed + boundary, the `safety radius` is also computed. Whenever the + information regarding the maximum required step is known it is + recommended to be provided as input parameter in order to speed-up + the search. + +In addition to the distance computation, the method sets an additional +flag telling if the current track will enter inside some daughter of the +current volume or it will exit inside its container: + +~~~{.cpp} +Bool_t TGeoManager::IsStepEntering() const; +~~~ + +A combined task is to first find the distance to the next boundary and +then extrapolate the current point/direction with this distance making +sure that the boundary was crossed. Finally the goal would be to find +the next state after crossing the boundary. The problem can be solved in +principle using FindNextBoundary, but the boundary crossing can give +unpredictable results due to numerical roundings. The manager class +provides a method that allows this combined task and ensures boundary +crossing. This should be used instead of the method `FindNextBoundary()` +whenever the tracking is not imposed in association with an external MC +transport engine (which provide their own algorithms for boundary +crossing). + +~~~{.cpp} +TGeoNode *TGeoManager::FindNextBoundaryAndStep(Double_t stepmax, +Bool_t comp_safe=kFALSE); +~~~ + +The meaning of the parameters here is the same as for FindNextBoundary, +but the safety value is triggered by an input flag. The output is the +node after the boundary crossing. + +\anchor GP02gc +#### Computing the Safe Radius + +Other important navigation query for tracking is the computation of the +safe distance. This represents the `maximum` step that can be made from +the current point in `any direction` that assures that no boundary will +be crossed. Knowing this value gives additional freedom to the stepping +algorithm to propagate the current track on the corresponding range +`without checking` if the current state has changed. In other words, the +modeller insures that the current state does not change in any point +within the safety radius around the current point. + +The computation of the safe radius is `automatically` computed any time +when the next boundary is queried within a `limited step:` + +~~~{.cpp} +TGeoNode *crossed = gGeoManager->FindNextBoundary(pstep); +Double_t safety = gGeoManager->GetSafeDistance(); +~~~ + +Otherwise, the computation of safety can always be forced: + +~~~{.cpp} +Double_t safety = gGeoManager->Safety(); +~~~ + +\anchor GP02gd +#### Making a Step + +The modeller is able to make steps starting from the current point along +the current direction and having the current step length. The new point +and its corresponding state will be automatically computed: + +~~~{.cpp} +TGeoNode *TGeoManager::Step(Bool_t is_geom = kTRUE, +Bool_t cross = kTRUE); +~~~ + +We will explain the method above by its use cases. The input flag +`is_geom` allows specifying if the step is limited by geometrical +reasons (a boundary crossing) or is an arbitrary step. The flag cross +can be used in case the step is made on a boundary and specifies if user +wants to cross or not the boundary. The returned node represents the new +current node after the step was made. + + - Making a geometrically contained step with boundary crossing + (`is_geom=kTRUE`, `cross=kTRUE`) - This is the default method + behavior. In this case, the step size is supposed to be already set + by a previous TGeoManager::FindNextBoundary() call. Due to + floating-point boundary uncertainties, making a step corresponding + "exactly" to the distance to next boundary does not insure boundary + crossing. If the method is called with this purpose, an extra small + step will be made in order to make the crossing the most probable + event (`epsil=10-6cm`). Even with this extra small step cannot + insure 100% boundary crossing for specific crossed shapes at big + incident angles. After such a step is made, additional cross-checks + become available: + +~~~{.cpp} +gGeoManager->FindNextBoundary(pstep); +Double_t snext = gGeoManager->GetStep(); +// The geometrical step is taken +TGeoNode *newNode = gGeoManager->Step(); +// The step=snext+epsil is made +Bool_t hasCrossed = gGeoManager->IsEntering(); +// Is the boundary crossed or not? +Bool_t isOnBoundary = gGeoManager->IsOnBoundary(); // The proposed +// geometrically limited step to be made was smaller +// than epsil value. +Bool_t isOutside = gGeoManager->IsOutside(); +//Did we exit geometry ? +~~~ + +In case the desired end-point of the step should be in the same starting +volume, the input flag `cross` should be set to `kFALSE`. In this case, +the `epsil` value will be subtracted from the current step. + + - Making a step of arbitrary value (`is_geom=kFALSE`, `cross=`no + matter). In this case, the step to be made can be either resulting + from a `next` computation, either set by hand: + +~~~{.cpp} +gGeoManager->SetStep(stepvalue); +gGeoManager->Step(kFALSE); +~~~ + +The step value in this case will `exactly` match the desired step. In +case a boundary crossing failed after geometrically limited stepping, +one can force as many small steps as required to really cross the +boundary. This is not what generally happens during the stepping, but +sometimes small rounding of boundary positions may occur and cause +problems. These have to be properly handled by the stepping code. + +\anchor GP02ge +#### The Normal Vector to the Next Crossed Surface at Crossing Point + +Supposing we have found out that a particle will cross a boundary during +the next step, it is sometimes useful to compute the normal to the +crossed surface. The modeller uses the following convention: we define +as `normal` ($\vec{n}$) the unit vector perpendicular +to a surface in the `next crossing point`, having the orientation such +that: $\vec{n}.\vec{d}>0$. Here $\vec{d}$ +represents the current direction. The next crossing point represents the +point where a ray shot from the current point along the current +direction crosses the surface. + +~~~{.cpp} +Double_t *TGeoManager::FindNormal(Bool_t forward=kTRUE); +~~~ + +The method above computes the normal to the next crossed surface in +forward or backward direction (i.e. the current one), assuming the state +corresponding to a current arbitrary point is initialized. An example of +usage of normal computation is ray tracing. + +The two most important features of the geometrical modeller concerning +tracking are scalability and performance as function of the total number +of physical nodes. The first refers to the possibility to make use of +the available memory resources and at the same time be able to resolve +any geometrical query, while the second defines the capability of the +modeller to respond quickly even for huge geometries. These parameters +can become critical when simulating big experiments like those at LHC. + +\anchor GP02h +### Creating and Visualizing Tracks + +In case the modeller is interfaced with a tracking engine, one might +consider quite useful being able to store and visualize at least a part +of the tracks in the context of the geometry. The base class +TVirtualGeoTrack provides this functionality. It currently has one +implementation inside the drawing package (TGeoTrack class). A +track can be defined like: + +~~~{.cpp} +TVirtualGeoTrack(Int_t id,Int_t pdg,TVirtualGeoTrack *parent=0, +TObject *particle=0); +~~~ + +Where: `id` is user-defined id of the track, `pdg` - `pdg` code, +`parent` - a pointer to parent track, `particle` - a pointer to an +arbitrary particle object (may be a **`TParticle`**). + +A track has a list of daughters that have to be filled using the +following method: + +~~~{.cpp} +TVirtualGeoTrack *TVirtualGeoTrack::AddDaughter(Int_t id,Int_t pdg, +TObject *particle=0); +~~~ + +The method above is pure virtual and have to create a track daughter +object. Tracks are fully customizable objects when inheriting from +TVirtualGeoTrack class. We will describe the structure and +functionality provided by the default implementation of these, which are +TGeoTrack objects. + +A TGeoTrack is storing a list of `control points` `(x,y,z)` +belonging to the track, having also time information `(t)`. The painting +algorithm of such tracks allows drawing them in any time interval after +their creation. The track position at a given time is computed by +interpolation between control points. + +~~~{.cpp} +myTrack->AddPoint(x,y,z,t); +~~~ + +The creation and management of tracks is in fact fully controlled by the +TGeoManager class. This holds a list of `primary tracks` that is +also visible during browsing as `Tracks` folder. Primary tracks are +tracks having no parent in the tracking history (for instance the output +of particle generators may be considered as primaries from tracking +point of view). The manager class holds +in TGeoManager::fCurrentTrack a pointer to the current track. When +starting tracking a particle, one can create a track object like:** + +~~~{.cpp} +Int_t track_index = gGeoManager->AddTrack(id,pdg,ptrParticle); +~~~ + +Here `track_index` is the index of the newly created track in the array +of primaries. One can get the pointer of this track and make it known as +current track by the manager class: + +~~~{.cpp} +TVirtualGeoTrack *track = gGeoManager->GetTrack(track_index); +gGeoManager->SetCurrentTrack(track); +// or directly +gGeoManager->SetCurrentTrack(track_index); +TVirtualGeoTrack *current = gGeoManager->GetCurrentTrack(); +~~~ + +One can also look for a track by `user id` or `track index`: + +~~~{.cpp} +ptrTrack = gGeoManager->GetTrackOfId(user_id); +ptrParent = gGeoManager->GetParentTrackOfId(user_id); +ptrTrack = gGeoManager->GetTrack(index); +~~~ + +Supposing a particle represented by a primary track decays or interacts, +one should not create new primaries as described before, but rather add +them as secondary: + +~~~{.cpp} +TVirtualGeoTrack *secondary = +ptrTrack->AddTrack(secondId,pdg,secondParticle); +~~~ + +At any step made by the current track, one is able to add control points +to either primary or secondary: + +~~~{.cpp} +track->AddPoint(x,y,z,t); +~~~ + +After tracks were defined and filled during tracking, one will be able +to browse directly the list of tracks held by the manager class. Any +track can be drawn using its `Draw()` and `Animate()` methods, but there +are also global methods for drawing or animation that can be accessed +from TGeoManager context menu: + +~~~{.cpp} +TGeoManager::DrawTracks(Option_t *option); +TGeoManager::AnimateTracks(Double_t tmin=0.,Double_t tmax=1E-8, +Int_t nframes=200,Option_t *option=""); +~~~ + +The drawing/animation time range is a global variable that can be +directly set: + +~~~{.cpp} +gGeoManager->SetTminTmax(tmin, tmax); +// without arguments resets the time range to the maximum value +~~~ + +Once set, the time range will be active both for individual or global +track drawing. For animation, this range is divided to the desired +number of frames and will be automatically updated at each frame in +order to get the animation effect. + +The option provided to all track-drawing methods can trigger different +track selections: + +`default: `A track (or all primary tracks) drawn without daughters + +`/D:` Track and first level descendents only are drawn + +`/*: ` Track and all descendents are drawn + +`/Ntype:` All tracks having `name=type` are drawn + +Generally several options can be concatenated in the same string (E.g. +`"/D /Npion-"`). + +For animating tracks, additional options can be added: + +`/G:`Geometry animate. Generally when drawing or animating tracks, one +has to first perform a normal drawing of the geometry as convenient. The +tracks will be drawn over the geometry. The geometry itself will be +animated (camera moving and rotating in order to "catch" the majority of +current track segments.) + +`/S:`Save all frames in gif format in the current folder. This option +allows creating a movie based on individual frames. + +\anchor GP03 +## Checking the Geometry + +Several checking methods are accessible from the context menu of volume +objects or of the manager class. They generally apply only to the +visible parts of the drawn geometry in order to ease geometry checking, +and their implementation is in the TGeoChecker class. The checking +package contains an overlap checker and several utility methods that +generally have visualization outputs. + +\anchor GP03a +### The Overlap Checker + +An overlap is any region in the Euclidian space being contained by more +than one positioned volume. Due to the containment scheme used by the +modeller, all points inside a volume have to be also contained by the +mother therefore are overlapping in that sense. This category of +overlaps is ignored due to the fact that any such point is treated as +belonging to the deepest node in the hierarchy. + +\image html geometry007.png "Extruding volumes" + +A volume containment region is in fact the result of the subtraction of +all daughters. On the other hand, there are two other categories of +overlaps that are considered illegal since they lead to unpredictable +results during tracking. + +*A)* If a positioned volume contains points that are not also contained +by its mother, we will call the corresponding region as an "extrusion". +When navigating from outside to inside (trying to enter such a node) +these regions are invisible since the current track has not yet reached +its mother. This is not the case when going the other way since the +track has first to exit the extruding node before checking the mother. +In other words, an extrusion behavior is dependent on the track +parameters, which is a highly undesirable effect. + +*B)* We will call "overlaps" only the regions in space contained by +more than one node inside the same container. The owner of such regions +cannot be determined based on hierarchical considerations; therefore +they will be considered as belonging to the node from which the current +track is coming from. + +When coming from their container, the ownership is totally +unpredictable. Again, the ownership of overlapping regions highly +depends on the current track parameters. + +We must say that even the overlaps of type *A)* and *B)* are allowed in case +the corresponding nodes are created using +TGeoVolume::AddNodeOverlap() method. Navigation is performed in such +cases by giving priority to the non-overlapping nodes. The modeller has +to perform an additional search through the overlapping candidates. +These are detected automatically during the geometry closing procedure +in order to optimize the algorithm, but we will stress that extensive +usage of this feature leads to a drastic deterioration of performance. +In the following we will focus on the non-declared overlaps of type *A)* +and *B)* since this is the main source of errors during tracking. These +are generally non-intended overlaps due to coding mistakes or bad +geometry design. The checking package is loaded together with the +painter classes and contains an automated overlap checker. + +\image html geometry008.png "Overlap checking" + +This can be activated both at volume level (checking for illegal +overlaps only one level inside a given volume) and from the geometry +manager level (checking full geometry): + +~~~{.cpp} +myVolume->CheckOverlaps(precision, option); +gGeoManager->CheckOverlaps(precision); +myNode->CheckOverlaps(precision); +~~~ + +Here precision represents the desired maximum accepted overlap value in +centimeters (default value is 0.1). This tool checks all possible +significant pairs of candidates inside a given volume (not declared as +overlapping or division volumes). The check is performed by verifying +the mesh representation of one candidate against the shape of the other. +This sort of check cannot identify all possible overlapping topologies, +but it works for more than 95% and is much faster than the usual +shape-to-shape comparison. For a 100% reliability, one can perform the +check at the level of a single volume by using `option`="`d`" or +`option`="`d`" to perform overlap checking by sampling the +volume with \<`number`\> random points (default 1 million). This +produces also a picture showing in red the overlapping region and +estimates the volume of the overlaps. + +An extrusion *A)* is declared in any of the following cases: + + - At least one of the vertices of the daughter mesh representation is + outside the mother volume (in fact its shape) and having a safety + distance to the mother greater than the desired value; + - At least one of the mother vertices is contained also by one of its + daughters, in the same conditions. + +An overlap *B)* is declared if: + + - At least one vertex of a positioned volume mesh is contained (having + a safety bigger than the accepted maximum value) by other positioned + volume inside the same container. The check is performed also by + inverting the candidates. + +The code is highly optimized to avoid checking candidates that are far +away in space by performing a fast check on their bounding boxes. Once +the checking tool is fired-up inside a volume or at top level, the list +of overlaps (visible as Illegal overlaps inside a TBrowser) held +by the manager class will be filled with TGeoOverlap objects +containing a full description of the detected overlaps. The list is +sorted in the decreasing order of the overlapping distance, extrusions +coming first. An overlap object name represents the full description of +the overlap, containing both candidate node names and a letter +(x-extrusion, o-overlap) representing the type. Double-clicking an +overlap item in a TBrowser produces a picture of the overlap +containing only the two overlapping nodes (one in blue and one in green) +and having the critical vertices represented by red points. The picture +can be rotated/zoomed or drawn in X3d as any other view. Calling +gGeoManager->PrintOverlaps() prints the list of overlaps. + +\anchor GP03b +### Graphical Checking Methods + +\image html geometry009.png "Safety computation checking" width=500px + +In order to check a given point, `CheckPoint(x,y,z)` method of +TGeoManager draws the daughters of the volume containing the point +one level down, printing the path to the deepest physical node holding +this point. It also computes the closest distance to any boundary. + +\image html geometry010.png "Random points" width=500px + +A method to check the validity of a given geometry is shooting random +points. This can be called with the method +TGeoVolume::RandomPoints() and it draws a volume with the current +visualization settings. Random points are generated in the bounding box +of the drawn volume. The points are drawn with the color of their +deepest container. Only points inside visible nodes are drawn. + +\image html geometry011.png "Random rays" width=500px + +A ray tracing method can be called TGeoVolume::RandomRays(). This +shoots rays from a given point in the local reference frame with random +directions. The intersections with displayed nodes appear as segments +having the color of the touched node. + +\anchor GP04 +## The Drawing Package + +\image html geometry012.png + +The modeller provides a powerful drawing +package, supporting several different options of visualization. A +library separated from the main one provides all functionality being +linked with the underlying ROOT visualization system. This library is +dynamically loaded by the plug-in manager only when drawing features are +requested. The geometrical structures that can be visualized are volumes +and volume hierarchies. + +The main component of the visualization system is volume primitive +painting in a ROOT pad. Starting from this one, several specific options +or subsystems are available, like: X3D viewing using hidden line and +surface removal algorithms, OpenGL viewing\* or ray tracing. + +The method TGeoManager::GetGeomPainter() loads the painting library in +memory. + +This is generally not needed since it is called automatically by +TGeoVolume::Draw() as well as by few other methods setting +visualization attributes. + +\anchor GP04a +### Drawing Volumes and Hierarchies of Volumes + +The first thing one would like to do after building some geometry is to +visualize the volume tree. This provides the fastest validation check +for most common coding or design mistakes. As soon as the geometry is +successfully closed, one should draw it starting from the top-level +volume: + +~~~{.cpp} +//... code for geometry building +root[] gGeoManager->CloseGeometry(); +root[] gGeoManager->GetMasterVolume()->Draw(); +~~~ + +Doing this ensures that the original top-level volume of the geometry is +drawn, even if another volume is currently the geometry `root`. OK, I +suppose you already did that with your simple geometry and immediately +noticed a new ROOT canvas popping-up and having some more or less +strange picture inside. Here are few questions that might come: + +**Q:** "The picture is strangely rotated; where are the coordinate axes?" + +**A:** If drawn in a new canvas, any view has some default +viewpoint, center of view and size. One can then perform mouse/keyboard +actions to change them: + + - Mouse left-click and drag will rotate the view; + + - Some keys can be pressed when the view canvas is selected: J/K +zoom/un-zoom, U/I move up/down, L/H move left/right. The coordinate axes +display as well as changing top or side viewpoints can be activated from +the **`TView`** context menu: right-click on the picture when no object +is selected; + +**Q:** "Every line is black! I cannot figure out what is what..." + +**A:** Volumes can have different colors (those known by %ROOT of +course). Think at using them after each volume creation: +`myvolume->SetLineColor(Int_t color);` otherwise everything is by +default black. + +**Q:** "The top volume of my geometry is a box but I see only its content." + +**A:** By default the drawn volume is not displayed just because we +do not want to hide its content when changing the view to HLR or solid +mode. In order to see it in the default wire frame picture one has to +call TGeoManager::SetTopVisible(). + +**Q:** "I do not see all volumes in my tree but just something inside." + +**A:** By default, TGeoVolume::Draw() paints the content of +a given volume three levels down. You can change this by using: +gGeoManager::SetVisLevel(n); + +Not only that, but none of the volumes at intermediate levels (0-2) are +visible on the drawing unless they are final ‘leaves' on their branch +(e.g. have no other volumes positioned inside). This behavior is the +default one and corresponds to ‘leaves' global visualization mode +(`TGeoManager::fVisOption = 1`). In order to see on the screen the +intermediate containers, one can change this mode: +gGeoManager->SetVisOption(0). + +**Q:** "Volumes are highlighted when moving the mouse over their vertices. What does it mean?" + +**A:** Indeed, moving the mouse close to some volume vertices +selects it. By checking the `Event Status` entry in the root canvas +`Options` menu, you will see exactly which is the selected node in the +bottom right. Right-clicking when a volume is selected will open its +context menu where several actions can be performed (e.g. drawing it). + +**Q:** "OK, but now I do not want to see all the geometry, but just a particular volume and its content. How can I do this?" + +**A:** Once you have set a convenient global visualization option +and level, what you need is just call the `Draw()` method of your +interesting volume. You can do this either by interacting with the +expanded tree of volumes in a ROOT browser (where the context menu of +any volume is available), either by getting a pointer to it (e.g. by +name): `gGeoManager->GetVolume("vol_name")->Draw();` + +\anchor GP04b +### Visualization Settings and Attributes + +Supposing you now understand the basic things to do for drawing the +geometry or parts of it, you still might be not happy and wishing to +have more control on it. We will describe below how you can fine-tune some + settings. Since the corresponding attributes are flags belonging to +volume and node objects, you can change them at any time (even when the +picture is already drawn) and see immediately the result. + +\anchor GP04ba +#### Colors and Line Styles + +We have already described how to change the line colors for volumes. In +fact, volume objects inherit from TAttLine class so the line style or +width can also be changed: + +~~~{.cpp} +myVolume->SetLineColor(kRed); +myVolume->SetLineWith(2); +myVolume->SetLineStyle(kDotted); +~~~ + +When drawing in solid mode, the color of the drawn volume corresponds to +the line color. + +\anchor GP04bb +#### Visibility Settings + +The way geometry is build forces the definition of several volumes that +does not represent real objects, but just virtual containers used for +grouping and positioning volumes together. One would not want to see +them in the picture. Since every volume is by default visible, one has +to do this sort of tuning by its own: + +~~~{.cpp} +myVolumeContainer->SetVisibility(kFALSE); +~~~ + +As described before, the drawing package supports two main global +options: 1 (default) - only final volume leaves; 0 - all volumes down +the drawn one appear on the screen. The global visible level put a +limitation on the maximum applied depth. Combined with visibility +settings per volume, these can tune quite well what should appear on the +screen. However, there are situations when users want to see a volume +branch displayed down to the maximum depth, keeping at the same time a +limitation or even suppressing others. In order to accomplish that, one +should use the volume attribute: "Visible daughters". By default, all +daughters of all volumes are displayed if there is no limitation related +with their level depth with respect to the top drawn volume. + +\anchor GP04c +### Ray Tracing + +Ray tracing is a quite known drawing technique based on tracking rays +from the eye position through all pixels of a view port device. The +pixel color is derived from the properties of the first crossed surface, +according some illumination model and material optical properties. While +there are currently existing quite sophisticated ray tracing models, +`TGeo` is currently using a very simple approach where the light +source is matching the eye position (no shadows or back-tracing of the +reflected ray). In future we are considering providing a base class in +order to be able to derive more complex models. + +Due to the fact that the number of rays that have to be tracked matches +the size in pixels of the pad, the time required by this algorithm is +proportional to the pad size. On the other hand, the speed is quite +acceptable for the default ROOT pad size and the images produced by +using this technique have high quality. Since the algorithm is +practically using all navigation features, producing ray-traced pictures +is also a geometry validation check. Ray tracing can be activated at +volume level as the normal `Draw()`. + +\image html geometry013.jpg "Ray-traced view in a pad" + +~~~{.cpp} +myVolume->Raytrace() +~~~ + +Once ray-tracing a view, this can be zoomed or rotated as a usual one. +Objects on the screen are no longer highlighted when picking the +vertices but the corresponding volumes is still accessible. + +\anchor GP04ca +#### Clipping Ray-traced Images + +A ray-traced view can be `clipped` with any shape known by the modeller. +This means that the region inside the clipping shape is subtracted from +the current drawn geometry (become invisible). In order to activate +clipping, one has to first define the clipping shape(s): + + 1. `TGeoShape *clip1, *clip2, ...` + One might switch between several clipping shapes. Note that these + shapes are considered defined in the current `MARS`. Composite shapes + may be used. + 2. `gGeoManager->SetClippingShape(clip1);` + One can activate or deactivate clipping at any time: + `gGeoManager->SetClipping(flag);` + 3. Perform ray-tracing:` gGeoManager->GetTopVolume()->Raytrace();` + +One can redo the steps 2-3 as many times as needed. Let us look how the +rootgeom.C example looks clipped with a tube. + +\image html geometry014.png "Ray-tracing example with box-clipping" + +\anchor GP05 +## Representing Misalignments of the Ideal Geometry + +The ideal positioning of a detector does not match its position in the +experimental hall. This generally happens not only for the detector +modules, but also for their components. The accurate knowledge of the +detector real misalignments can be extremely important for getting close +to its designed resolution and the expected tracking efficiency. +`TGeo` offers tools for representing positioning misalignments, +applying them to the ideal geometry and performing navigation under +these conditions. Detector tracking algorithms can then directly query +the geometry for navigation purposes or for retrieving actual +misalignment information. + +\anchor GP05a +### Physical Nodes + +Physical nodes are the actual "touchable" objects in the geometry, +representing actually a path of positioned volumes starting with the +top node: `path=/TOP/A_1/B_4/C_3` , where `A`, `B`, `C` represent names +of volumes. The number of physical nodes is given by the total number of +possible of branches in the geometry hierarchy. In case of detector +geometries and specially for calorimeters this number can be of the +order 106-109, therefore it is impossible to create all physical nodes +as objects in memory. In `TGeo`, physical nodes are represented by +the class TGeoPhysicalNode and can be created on demand for +alignment purposes: + +~~~{.cpp} +TGeoPhysicalNode(const char* path) +~~~ + +The knowledge of the path to the objects that need to be misaligned is +essential since there is no other way of identifying them. One can +however create "symbolic links" to any complex path to make it more +representable for the object it designates: + +~~~{.cpp} +TGeoPNEntry(const char* unique_name, const char* path) +void TGeoPNEntry::SetPhysicalNode(TGeoPhysicalNode *node) +~~~ + +Such a symbolic link hides the complexity of the path to the align +object and replaces it with a more meaningful name. In addition, +TGeoPNEntry objects are faster to search by name and they may +optionally store an additional user matrix. + +~~~{.cpp} +// Creating a symlink object. +TGeoPNEntry *TGeoManager::SetAlignableEntry(const char *unique_n, +const char*path) +// Retrieving an existing alignable object. +TGeoPNEntry *TGeoManager::GetAlignableEntry(const char *name) +// Retrieving an existing alignable object at a given index. +TGeoPNEntry *GetAlignableEntry(Int_t index) +~~~ + +Physical nodes store internally the full list of logical nodes +corresponding to the elements from the string path, as well as the +global transformation matrix for each of them. The top node corresponds +to the level 0 in the stored array, while the last node will correspond +to level `n`. For each level, the node, volume and global matrix can be +retrieved using corresponding getters: + +~~~{.cpp} +TGeoHMatrix *GetMatrix(Int_t level=-1) const +TGeoNode *GetNode(Int_t level=-1) const +TGeoShape *GetShape(Int_t level=-1) const +TGeoVolume *GetVolume(Int_t level=-1) const +~~~ + +By default the object at level n is retrieved (the align-able object). + +Once created, a physical node can be misaligned, meaning that its +positioning matrix or even the shape.: + +~~~{.cpp} +void Align(TGeoMatrix* newmat=0, TGeoShape* newshape=0, +Bool_t check=kFALSE) +~~~ + +The convention used is that newmat represents the new local matrix of +the last node in the branch with respect to its mother volume. The +`Align()` method will actually duplicate the corresponding branch within +the logical hierarchy, creating new volumes and nodes. This is mandatory +in order to avoid problems due to replicated volumes and can create +exhaustive memory consumption if used abusively. + +Once aligned, a physical node is ready to be tracked. The operation can +be done only after the geometry was closed. + +Important NOTE: Calling the `Align()` method for a physical node changes +the node pointers for the stored node branch in the active geometry, Due +to this the other defined physical nodes containing elements of this +path will be invalid. Example: + +~~~{.cpp} +TGeoPhysicalNode *pn1 = +gGeoManager->MakePhysicalNode("/A_1/B_1/C_2"); +TGeoPhysicalNode *pn2 = +gGeoManager->MakePhysicalNode("/A_1/B_1/C_3"); +... +pn1->Align(...); +~~~ + +The call to `pn1->Align()` will invalidate the pointer to the node `B_1` +in `pn2` object.. The way out is to either call `pn1->Align()` before +the creation of `pn2`, either to use a global method that will correct +all existing physical nodes: + +~~~{.cpp} +void RefreshPhysicalNodes(Bool_t lock = kTRUE) +~~~ + +The method above will optionally lock the possibility of doing any +further misalignment. + +\anchor GP06 +## Geometry I/O + +Once geometry is successfully built, it can be saved in a root file, as +C++ macro or as GDML file by calling: + +~~~{.cpp} +TGeoManager::Export(const char *filename,const char*keyname="", +Option_t *opt="vg") +~~~ + + - `Filename` is the name of the file to be written (mandatory). + Depending on the extension of the file, the geometry is exported + either as ,root file or .C(.cxx) macro or GDML file in case + extension is .gdml. + - `keyname`is the name of the key in the file (default "") + - `opt` = `"v"` is an export voxelization (default), otherwise + voxelization is recomputed after loading the geometry, `"g"` this + option (default) is taken into account only for exporting to gdml + file and it ensures compatibility with Geant4 (e.g. it adds extra + plane to incorrectly set polycone, it checks whether offset of Phi + division is in (-360;0\> range, ...), for this gdml export there are + two more option, that are not set by default: `"f"` and `"n"`. If + none of this two options are set, then names of solids and volumes + in resulting gdml file will have incremental suffix (e.g. + TGeoBBox\_0x1, TGeoBBox\_0x2, ...). If `"f"` option is set then then + suffix will contain pointer of object (e.g. TGeoBBox\_0xAAAAA01, + ...). Finally if option `"n"` is set then no suffix will be added, + though in this case uniqueness of the names is not ensured and it can + cause that file will be invalid. + +Loading geometry from a root file can be done in the same way as for any +other ROOT object, but a static method is also provided: + +~~~{.cpp} +TGeoManager::Import(const char *filename,const char *keyname="", +Option_t *opt="") +~~~ + +Example: + +~~~{.cpp} +// Writing to a file geometry definition ending with: +root[] gGeoManager->CloseGeometry(); +// geometry is ready +root[] gGeoManager->Export("MyGeom.root"); +// file MyGeom.root produced +root[] gGeoManager->Export("MyGeom.C"); + // C++ macro MyGeom.C produced +root[] gGeoManager->Export("MyGeom.gdml"); + // GDML file MyGeom.gdml produced +root[] myVolume->SaveAs("MyVolume.C"); + // C++ macro for the branch starting + // with MyVolume +// Reading from a file +root[] gSystem->Load("libGeom"); +root[] TGeoManager::Import("MyGeom.root"); // geometry is ready +~~~ + +Note that not all-current information held by the modeller is written on +the file. For instance, the painter and checker objects are not written, +as well as the temporary current navigation properties: current node +path, point or direction. On the other hand, all objects belonging to +the geometrical hierarchy will always be written. The idea is to be able +to retrieve the geometry in a ready state, ignoring what the state +variables that can be always re-initialized. When the code is generated +for a given TGeoVolume in the geometry, just the branch starting +with that volume will be saved in the file. Executing the generated code +will create a geometry that has `MyVolume` as top volume. In this case, +only the materials/media/matrices used effectively in the `MyVolume` +branch are exported to file. + +Volumes can be made persistent in the same way the full geometry is. +Exporting is straightforward (module1, 2 are pointers to +TGeoVolume objects): + +~~~{.cpp} +module1->Export("file.root"); +// by default file is overwritten +module2->Export("file.root","","update"); +// to the same file +~~~ + +Importing will append the volume to the current TGeoManager or will +create one: + +~~~{.cpp} +TGeoManager *geom = new TGeoManager("myGeom", ""); +TGeoVolume *top = geom->MakeBox(...); +geom->SetTopVolume(top); +//name of volume or key (depending on export usage) +TGeoVolume *module1 = TGeoVolume::Import("file.root", "MOD1"); +TGeoVolume *module2 = TGeoVolume::Import("file.root", "MOD2"); +top->AddNode(module1, 1, new TGeoTranslation(0,0,100)); +top->AddNode(module2, 1, new TGeoTranslation(0,0,-100)); +// One should close oneself the geometry +geom->CloseGeometry(); +~~~ + +\anchor GP06a +### GDML + +Few lines above word GDML was used. GDML stands for Geometry +Description Markup Language. It is an application-independent +geometry description format based on XML. It is mainly used for geometry +interchange between %ROOT and Geant4 framework. More details about this +project can be found http://gdml.web.cern.ch. This feature +(importing/exporting from/to gdml file format) is disabled by default in +%ROOT installation. To enable this feature add `--enable-gdml` option to +`./configure` script call. + +\anchor GP07 +## Navigation Algorithms + +This section will describe the main methods and algorithms used for +implementing the navigation features within the geometrical modeller. +This includes navigation queries at shape level, global geometrical +queries and optimization mechanisms. + +\anchor GP07a +### Finding the State Corresponding to a Location (x,y,z) + +For reminder, a geometry state is a ‘touchable' object in the geometry +hierarchy. It is represented by a path like: `/TOP\_1/A\_1/B\_3/C\_1`, +where `B\_3` for instance is a copy of volume `B` positioned inside +volume `A`. A state is always associated to a transformation matrix +`M` of the touchable with respect to the global reference frame +(obtained by piling-up all local transformations of nodes in the branch +with respect to their containers). The current state and the +corresponding global matrix are updated whenever the geometry depth is +modified. The global transformations corresponding to all nodes in the +current branch are kept in an array: (`MTOP\_1, MA\_1, MB\_3, ...`). + +\image html geometry015.png "Navigation in the geometry hierarchy" width=600px + +The elementary operations for changing the state are: + +~~~{.cpp} +TGeoManager::CdUp(); +TGeoManager::CdDown(i); +TGeoManager::CdTop() +~~~ + +The current state accounting and global matrix handling after these +operations are depicted in the figure below. Now let us suppose that we +have a particle at position *P(x,y,z)*. The first thing needed for +transporting it is the current object our particle is into, so that we +can retrieve its material properties. This task is done by: + +~~~{.cpp} +TGeoNode *TGeoManager::FindNode(x,y,z) +~~~ + +Note that the current particle position can be set using +SetCurrentPosition(x,y,z) method of the manager class, in which +case FindNode() can be called without arguments. The method +returns a pointer to the "deepest node" that geometrically contains *P* +(in our case let us suppose it is `B\_3`). Since a node is just a +positioned volume, we can then get a pointer to the volume, medium or +material objects related to it. "Deepest" means that `B\_3` still +contains point `P` (as well as `A\_1` and `TOP\_1`), but none of the +daughters of volume `B` does. After finding out the node containing +the particle, one can check if the geometry state is different compared +to the last located point: + +~~~{.cpp} +Bool_t *TGeoManager::IsSameLocation() +~~~ + +The algorithm for finding where a point is located in geometry is +presented in the figure 17-36. + +It always starts by checking if the last computed modeller state is the +answer. This optimizes the search when continuously tracking a particle. +The main actions performed are: + + - moving up and down in the logical node tree while updating the + current node and its global matrix + - converting the global position into the local frame of the current + node/volume + - checking whether the local position lies within the geometrical + shape of the current volume - if this is the case continue the + search downwards for the daughters of the current node, otherwise + search upwards its containers until the top level is reached. + - the number of candidate nodes to be checked at a given level is + minimized by an additional optimization structure: voxels. This is + effective even in case there is only one daughter of the current + volume. + - in case the current node is declared as possibly overlapping, the + method FindInCluster() is invoked. This method checks all different + possibilities within the cluster of overlapping candidates. One of + the candidates is prioritized if one of the following conditions id + fulfilled (in order): + - Is declared as non-overlapping (these are anyway searched first) + - Has at least one daughter that contains the current point + - Was already declared as containing the point at a previous step + +\image html geometry016.png "Finding the location of a point in the geometry hierarchy" width=600px + +\anchor GP07b +### Finding the Distance to Next Crossed Boundary + +The most important feature provided by the modeller related to track +propagation is the computation of the distance to the next boundary +along a straight line. + +The relevant state parameters used for this task are: + + - Current particle position and direction `(x,y,z,nx,ny,nz)`, where ni + is the direction cosine with axis (`i`). + - Current node (and path) in geometry must be set by calling + TGeoManager::FindNode(x,y,z) beforehand The method computing the + distance to next boundary is: + +~~~{.cpp} +TGeoNode *TGeoManager::FindNextBoundary(stepmax, path) +~~~ + +The output node returned by the method is the object which shape +boundary will be crossed first. The distance to the next crossing can be +retrieved after the call: + +~~~{.cpp} +Double_t TGeoManager::GetStep() +~~~ + + - The main input parameter is `stepmax,` which act as a trigger for + different features. The absolute value of this parameter represents + the step value proposed by the user. The algorithm will never try o + search for boundaries further than this distance. In case no + boundary is found the returned node will be the current one and the + computed step to boundary will be equal to abs (`stepmax`) having + the meaning "step approved". The default value for `stepmax` is + TGeoShape::Big with the meaning that boundaries are looked for + without limitation. + +\image html geometry017.png "Finding the distance to the next crossed boundary" width=600px + +According the values of the input parameters the method will perform +additional optional tasks: + +`|stepmax| < TGeoShape::Big()` + +The safe distance in the current volume is also computed. Moving the +particle from its current location with this distance in any direction +is safe in the sense that will never change the current state. + +`stepmax < 0` + +The global matrix for the object that will have the next crossed +boundary is also computed. This can be retrieved for masterlocal point +or vector conversions: TGeoManager::GetNextMatrix() + +In case the computation of the normal vector to the next crossed surface +is required, using a negative stepmax value is recommended. In this case +one can subsequently call a method for fast normal computation: + +~~~{.cpp} +Double_t *TGeoManager::FindNormalFast() +~~~ + +`path 0` + +In case a path to a given physical object is specified, the distance to +its boundary is computed ignoring the rest of the geometry + +\anchor GP07c +#### Output Values + +TGeoManager::GetStep(): distance to next boundary. + +TGeoManager::GetSafeDistance(): safe distance (in case it was computed). + +TGeoManager::IsOnBoundary(): the initial point `(x,y,z)` was (or was +not) on a boundary within TGeoShape::Tolerance(). + +The algorithm checks first if the computation of safety was required. If +this is the case and the global point coordinates did not change from +the last query, the last computed safety is taken. Otherwise, the method +TGeoManager::Safety () is invoked. A safety value less than +TGeoShape::Tolerance() will set the flag IsOnBoundary to true. +On the other hand, a safety value bigger than the proposed step will +stop the computation of the distance to next boundary, returning the +current geometry location with the meaning that the proposed step is +safe. + +The next stage is to check if computation of the distance to a give +physical object specified by a path was required. If this is the case, +the modeller changes the state to point to the required object, converts +the current point and direction coordinates to the local frame of this +object and computes the distance to its shape. The node returned is the +one pointed by the input path in case the shape is crossed; otherwise +the returned value is NULL. In case the distance to next crossed +boundary is required, the current point has to be physically INSIDE the +shape pointed by the current volume. This is only insured in case a call +to TGeoManager::FindNode() was performed for the current point. +Therefore, the first step is to convert the global current point and +direction in the local reference frame of the current volume and to +compute the distance to exit its shape from inside. The returned value +is again compared to the maximum allowed step (the proposed one) and in +case the distance is safe no other action is performed and the proposed +step is approved. In case the boundary is closer, the computed distance +is taken as maximum allowed step. For optimization purposed, for +particles starting very close to the current volume boundary (less than +0.01 microns) and exiting the algorithm stops here. + +After computing the distance to exit the current node, the distance to +the daughter of the current volume which is crossed next is computed by +TGeoManager::FindNextDaughterBoundary(). This computes the +distance to all daughter candidates that can be possibly crossed by +using volume voxelization. The algorithm is efficient in average only in +case the number of daughters is greater than 4. For fewer nodes, a +simple loop is performed and the minimum distance (from a point outside +each shape) is taken and compared to the maximum allowed step. The step +value is again updated if `stepGetCurrentPoint(); +Double_t *current_dir = gGeoManager->GetCurrentDirection(); +for (Int_t i=0; i<3; i++) + current_point[i] += step * current_dir[I]; +~~~ + +Note: The method TGeoManager::FindNextBoundary() does not modify the +current point/direction nor the current volume/state. The returned node +is the next crossed one, but the physical path (state) AFTER crossing +the boundary is not determined. In order to find out this new state, one +has to propagate the point with a distance slightly bigger that the +computed step value (which is accurate within numerical precision). A +method that performs this task finding the next location is +TGeoManager::Step(), described in "Making a Step", but users may +implement more precise methods to insure post-step boundary crossing. + +\anchor GP08 +## Geometry Graphical User Interface + +The geombuilder package allows you to create and edit geometries. The +package provides a library of all GUI classes related to geometry. Each +editable geometry class `TGeoXXX` have a correspondent editor +`TGeoXXXEditor` that provides a graphics user interface allowing to +edit some (or all) parameters of a geometry object. The editable objects +are geometry manager, volumes, nodes, shapes, media, materials and +matrices. The interfaces provide also access to specific functionality +of geometry objects. The editing mechanism is based on ROOT GED +(Graphics Editors) functionality and the library is loaded using the +plug-in mechanism. + +\anchor GP08a +### Editing a Geometry + +There are two different use cases having different ways of invoking the +geometry editors. The first one applies when starting with geometry from +scratch and using the builder functionality to create new geometry +objects. In this case, one should use the sequence: + +~~~{.cpp} +root[] TGeoManager *geom = new TGeoManager("MyGeom", +"Test builder"); +root[] geom->Edit(Option_t *option=""); +~~~ + +The lines above will create a new TGeoManager class, create an +empty canvas and start the editor in the left-sided editor frame +attached to the canvas. To open the editor in a separate frame one +should provide a non-empty string as option to the `Edit()` method. + +\image html geometry018.png "The geometry manager editor" + +\anchor GP08b +### The Geometry Manager Editor + +\image html geometry019.png "Accessing/creating different categories of editable objects" width=600px + +The second use case applies when starting to edit an existing geometry. +Supposing the geometry was loaded into memory, besides the first method +that still applies one can also edit drawn geometry objects. For this, +the menu entry View/Editor of the canvas containing for instance a drawn +volume must be activated. For starting the volume editor one can click +on a volume. The GUI of the TGeoManager class can be started by +clicking on the top-right `40x40` pixels corner of the pad with a drawn +geometry. + +This is the main entry point for editing the geometry or creating new +objects. Once the interface is created (using one of the methods +described above), several categories can be accessed via a shutter GUI +widget: + + - *General.* This allows changing the name/title of the geometry, + setting the top volume, closing the geometry and saving the geometry + in a file. The file name is formed by `geometry_name.C` or `.root` + depending if the geometry need to be saved as a `C` macro or a + `.root` file. + - *Shapes.* The category provides buttons for creation of all + supported shapes. The new shape name is chosen by the interface, but + can be changed from the shape editor GUI. Existing shapes can be + browsed and edited from the same category. + - *Volumes.* The category allows the creation of a new volume having a + given name, shape and medium. For creating a volume assembly only + the name is relevant. Existing volumes can be browsed or edited from + this category. + - *Materials.* Allows creation of new materials/mixtures or editing + existing ones. + - *Media.* The same for creation/editing of tracking media (materials + having a set of properties related to tracking) + - *Matrices.* Allows creation of translations, rotations or combined + transformations. Existing matrices can also be browser/edited. + +\anchor GP08c +### Editing Existing Objects + +For editing an existing object from one of the categories described +above, the interface imposes first a selection among all objects of the +corresponding type stored in the geometry. This can be done by clicking +the button next to the blue label *Select \*. The dialog +interfaces are generally different for different types of objects. The +volume selection dialog offers the possibility to select either a volume +already connected to the geometry hierarchy or non-connected ones. +Selection for shapes and matrices is split into categories represented +by top-level list tree items for: boxes, tubes, translations, rotations, +etc. + +\image html geometry020.png "Selection dialogs for different TGeo objects" + +Once a selection is made and the dialog is closed, the selected item +name will appear in the corresponding label and the button Edit will +start the object editor in a transient frame. Closing these transient +frames will not delete, but just hide existing opened editors for later +reuse. Their lifetime is determined by the canvas to which the manager +editor is attached to, since these will be destroyed together. + +\image html geometry021.png "Editors for shapes, materials, media, matrices" width=600px + +For most editors, the functionalities Apply and Undo are provided. + +For shapes, changing any of the shape parameters will activate the +"Apply" button only if the check button "Delayed draw" is checked, +otherwise the changes are immediately applied. Once the apply button is +pressed, the changes are applied to the edited shape and drawn. The +"Undo" button becomes active after the first modification has been +applied. It allows restoring the initial parameters of the shape. + +NOTE: In this version the "Undo" does not allow restoring an +intermediate state of the parameters that was applied - it will always +restore the parameters at the moment the shape was edited. + +All material properties changes are undoable. The mixture editor +currently allows adding elements one by one in the mixture composition. +This can be done either by element weight fraction or by number of +atoms. Once an element was added using one method the other method is not +selectable anymore. Summing component fractions up to 1 in the final +mixture is the user responsibility. Adding materials as components of a +mixture is not supported in this version. + +The elements that were added to the mixture appear in the bottom of the +mixture editor. The operations performed on mixture are not undoable. + +\anchor GP08d +### Creation of New Objects + +As described above, all geometry object creators are accessible within +the geometry manager editor frame. Generally, if the new object that +needs to be created does not depend on other objects, it will be built +with a set of default parameters. This is the case for all shapes +(except composite shapes) and matrices. For all the other objects the +interface forces the selection of components before creating the object. + +\anchor GP08e +### Editing Volumes + +Volumes are hierarchical components in the geometry, therefore their +editor is more complex. It provides the following functionalities: + + - *General*. This category allows changing the name of the volume and + selecting other shape or medium among existing ones. + + - *Daughters*. The category allows removing existing daughter nodes or + adding new ones. The button "Position" allows editing the + positioning matrix of a given node. + +\image html geometry022.jpg width=600px +\image html geometry023.jpg "Setting volume properties and modifying volume hierarchy" width=600px + + - *Visualization*. This category allows changing the visibility of the + edited volume or for its daughters, as well as other visualization + settings. The radio button "All" allows viewing all volumes down + to the selected depth. "Leaves" will draw only the deepest nodes + that have the selected depth or lower level ones that have no + daughters inside. "Only" will allow drawing only the edited + volume. The check button "Raytrace" will just draw the current + selection in solid mode using the ray-tracing algorithm provided by + TGeo. + +\image html geometry024.jpg width=600px +\image html geometry025.jpg "Volume visualisation settings and division interface for volumes" width=600px + + - *Division*. Allows dividing the edited volume according a given + pattern. The division axes that are allowed are presented in a + radio-button group. The number entries labeled "From", "Step" + and "Nslices" correspond to the divisioning parameters on the + selected axis. The range of the division is between `start` and + `start+ndiv*step` values and its validity is checked upon changing + one of the values. + +NOTE: When changing a value in a number entry by typing a number, press +ENTER at the end to validate. This applies for taking into account and +validation of any number change in the geometry editors. + +\anchor GP08f +### How to Create a Valid Geometry with Geometry Editors + +1. Create a new geometry manager and start the editor as described at +the beginning. + +2. Create at least one material from the "Materials" shutter item +category. Generally, for creating objects, the interface is always in +the TGeoManagerEditor in different categories - one should just +provide a name and requested parameters. + +3. Create a shape that will be used for the top volume within the +"Shapes" category. For the moment, the shapes that have editors are +Box, Para, Trd1, Trd2, Tube, Tube segment, Cone, Cone segment, Hype, +Pcon, Torus and Sphere. + +4. Create a medium from one of the existing materials from the +"Medium" category. You will notice that some categories as "Volume" +and "Medium" are inactive at the beginning because at that time there +is no material yet (for making a medium) and no shape (for making a +volume). These categories are dynamically activated once all the +required components are defined. + +5. Create a volume from the "Volumes" category. You will notice that +contrary to the other editors, the volume editor is opened in a tab, not +transient - this is because it is more complex. + +6. Go back to "General" category and select the newly created volume +as the top one (you can do it also from the volume category). This is +just for starting. To create some hierarchy, one has to create several +other volumes and the matrices to position them. Once this is done, use +the volume editor interface to: + - add/remove daughters, change shape, edit position of daughters + - change visualization settings + - divide the volume (only if there are no daughters yet) + +7. Close the geometry from the "General" category. + + + \defgroup Geometry_classes Geometry classes \ingroup Geometry \brief The Geometry related classes diff --git a/geom/geom/doc/materials.md b/geom/geom/doc/materials.md new file mode 100644 index 0000000000000..fc04c39d8976e --- /dev/null +++ b/geom/geom/doc/materials.md @@ -0,0 +1,311 @@ +\defgroup Materials_classes Materials +\ingroup Geometry + + - [Materials and Tracking Media](\ref GM00) + - [Elements, Materials and Mixtures](\ref GM00a) + - [Radionuclides](\ref GM00b) + - [Tracking Media](\ref GM00c) + - [User Interface for Handling Materials and Media](\ref GM00d) + + +\anchor GM00 +## Materials and Tracking Media + +We have mentioned that volumes are the building blocks for geometry, but +they describe real objects having well defined properties. In fact, +there are just two of them: the material they are made from and their +geometrical `shape`. These have to be created before creating the volume +itself, so we will describe the bits and pieces needed for making the +geometry before moving to an architectural point of view. + +As far as materials are concerned, they represent the physical +properties of the solid from which a volume is made. Materials are just +a support for the data that has to be provided to the tracking engine +that uses this geometry package. Due to this fact, the +TGeoMaterial class is more like a thin data structure needed for +building the corresponding native materials of the Monte-Carlo tracking +code that uses TGeo. + +\anchor GM00a +### Elements, Materials and Mixtures + +In order to make easier material and mixture creation, one can use the +pre-built table of elements owned by TGeoManager class: + +~~~{.cpp} +TGeoElementTable *table = gGeoManager->GetElementTable(); +TGeoElement *element1 = table->GetElement(Int_t Z); +TGeoElement *element2 = table->FindElement("Copper"); +~~~ + +Materials made of single elements can be defined by their atomic mass +(`A`), charge (`Z`) and density (`rh`o). One can also create a material +by specifying the element that it is made of. Optionally the radiation +and absorption lengths can be also provided; otherwise they can be +computed on-demand [`G3`]. The class representing them is +TGeoMaterial: + +~~~{.cpp} +TGeoMaterial(const char *name,Double_t a,Double_t z, + Double_t density, Double_t radlen=0,Double_t intlen=0); +TGeoMaterial(const char *name, TGeoElement *elem, + Double_t density); +TGeoMaterial(const char* name, Double_t a, Double_t z, + Double_t rho, + TGeoMaterial::EGeoMaterialState state, + Double_t temperature = STP_temperature, + Double_t pressure = STP_pressure) +~~~ + +Any material or derived class is automatically indexed after creation. +The assigned index is corresponding to the last entry in the list of +materials owned by TGeoManager class. This can be changed using +the TGeoMaterial`::SetIndex()` method, however it is not +recommended while using the geometry package interfaced with a transport +MC. Radiation and absorption lengths can be set using: + +~~~{.cpp} +TGeoMaterial::SetRadLen(Double_t radlen, Double_t intlen); +~~~ + +- `radlen:` radiation length. If `radlen<=0` the value is computed + using GSMATE algorithm in GEANT3 +- `intlen:` absorption length + +Material state, temperature and pressure can be changed via setters. +Another material property is transparency. It can be defined and used +while viewing the geometry with OpenGL. + +~~~{.cpp} +void SetTransparency (Char_t transparency = 0) +~~~ + +- `transparency:` between 0 (opaque default) to 100 (fully + transparent) + +One can attach to a material a user-defined object storing Cerenkov +properties. Another hook for material shading properties is currently +not in use. Mixtures are materials made of several elements. They are +represented by the class TGeoMixture, deriving from +TGeoMaterial and defined by their number of components and the +density: + +~~~{.cpp} +TGeoMixture(const char *name,Int_t nel,Double_t rho); +~~~ + +Elements have to be further defined one by one: + +~~~{.cpp} +void TGeoMixture::DefineElement(Int_t iel,Double_t a,Double_t z, + Double_t weigth); +void TGeoMixture::DefineElement(Int_t iel, TGeoElement *elem, + Double_t weight); +void TGeoMixture::DefineElement(Int_t iel, Int_t z, Int_t natoms); +~~~ + +or: + +~~~{.cpp} +void AddElement(TGeoMaterial* mat, Double_t weight); +void AddElement(TGeoElement* elem, Double_t weight); +void AddElement(TGeoElement* elem, Int_t natoms); +void AddElement(Double_t a, Double_t z, Double_t weight) +~~~ + +- `iel:` index of the element` [0,nel-1]` +- `a` and `z:` the atomic mass and charge +- `weight:` proportion by mass of the elements +- `natoms`: number of atoms of the element in the molecule making the + mixture + +The radiation length is automatically computed when all elements are +defined. Since tracking MC provide several other ways to create +materials/mixtures, the materials classes are likely to evolve as the +interfaces to these engines are being developed. Generally in the +process of tracking material properties are not enough and more specific +media properties have to be defined. These highly depend on the MC +performing tracking and sometimes allow the definition of different +media properties (e.g. energy or range cuts) for the same material. + +\anchor GM00b +### Radionuclides + +A new class TGeoElementRN was introduced in this version to +provide support for radioactive nuclides and their decays. A database of +3162 radionuclides can be loaded on demand via the table of elements +(TGeoElementTable class). One can make then materials/mixtures +based on these radionuclides and use them in a geometry + +~~~{.cpp} +root[] TGeoManager *geom = new TGeoManager("geom","radionuclides"); +root[] TGeoElementTable *table = geom->GetElementTable(); +root[] TGeoElementRN *c14 = table->GetElementRN(14,6); // A,Z +root[] c14->Print(); +6-C-014 ENDF=60140; A=14; Z=6; Iso=0; Level=0[MeV]; Dmass=3.0199[MeV]; +Hlife=1.81e+11[s] J/P=0+; Abund=0; Htox=5.8e-10; Itox=5.8e-10; Stat=0 +Decay modes: +BetaMinus Diso: 0 BR: 100.000% Qval: 0.1565 +~~~ + +One can make materials or mixtures from radionuclides: + +~~~{.cpp} +root[] TGeoMaterial *mat = new TGeoMaterial("C14", c14, 2.0); +~~~ + +The following properties of radionuclides can be currently accessed via +getters in the TGeoElementRN class: + +Atomic number and charge (from the base class TGeoElement) + +- Isomeric number (`ISO`) +- ENDF code - following the convention: `ENDF=10000*Z+100*A+ISO` +- Isomeric energy level [`MeV`] +- Mass excess [`MeV`] +- Half life [`s`] +- Spin/Parity - can be retrieved with: `TGeoElementRN::GetTitle()` +- Hynalation and ingestion toxicities +- List of decays - `TGeoElementRN::GetDecays()` + +The radioactive decays of a radionuclide are represented by the class +TGeoDecayChannel and they are stored in a TObjArray. Decay +provides: + +- Decay mode +- Variation of isomeric number +- `Q` value for the decay [`GeV`] +- Parent element +- Daughter element + +Radionuclides are linked one to each other via their decays, until the +last element in the decay chain which must be stable. One can iterate +decay chains using the iterator TGeoElemIter: + +~~~{.cpp} +root[] TGeoElemIter next(c14); +root[] TGeoElementRN *elem; +root[] while ((elem=next())) next.Print(); +6-C-014 (100% BetaMinus) T1/2=1.81e+11 +7-N-014 stable +~~~ + +To create a radioactive material based on a radionuclide, one should +use the constructor: + +~~~{.cpp} +TGeoMaterial(const char *name, TGeoElement *elem, Double_t density) +~~~ + +To create a radioactive mixture, one can use radionuclides as well as +stable elements: + +~~~{.cpp} +TGeoMixture(const char *name, Int_t nelements, Double_t density); +TGeoMixture::AddElement(TGeoElement *elem, + Double_t weight_fraction); +~~~ + +Once defined, one can retrieve the time evolution for the radioactive +materials/mixtures by using one of the next two methods: + +#### Method 1 + +~~~{.cpp} +TGeoMaterial::FillMaterialEvolution(TObjArray *population, Double_t precision=0.001) +~~~ + +To use this method, one has to provide an empty TObjArray object +that will be filled with all elements coming from the decay chain of the +initial radionuclides contained by the material/mixture. The precision +represent the cumulative branching ratio for which decay products are +still considered. + +\image html geometry003.png width=600px + + +The population list may contain stable elements as well as +radionuclides, depending on the initial elements. To test if an element +is a radionuclide: + +~~~{.cpp} +Bool_t TGeoElement::IsRadioNuclide() const +~~~ + +All radionuclides in the output population list have attached objects +that represent the time evolution of their fraction of nuclei with +respect to the top radionuclide in the decay chain. These objects +(Bateman solutions) can be retrieved and drawn: + +~~~{.cpp} +TGeoBatemanSol *TGeoElementRN::Ratio(); +void TGeoBatemanSol::Draw(); +~~~ + +#### Method 2 + +Another method allows to create the evolution of a given radioactive +material/mixture at a given moment in time: + +~~~{.cpp} +TGeoMaterial::DecayMaterial(Double_t time, Double_t precision=0.001) +~~~ + +The method will create the mixture that result from the decay of a +initial material/mixture at time, while all resulting elements having a +fractional weight less than precision are excluded. + +A demo macro for radioactive material features is +`$ROOTSYS/tutorials/geom/RadioNuclides.C` It demonstrates also the decay +of a mixture made of radionuclides. + +\image html geometry004.png width=600px + +\anchor GM00c +### Tracking Media + +The class TGeoMedium describes tracking media properties. This has +a pointer to a material and the additional data members representing the +properties related to tracking. + +~~~{.cpp} +TGeoMedium(const char *name,Int_t numed,TGeoMaterial *mat, + Double_t *params=0); +~~~ + +- `name:` name assigned to the medium +- `mat:` pointer to a material +- `params:` array of additional parameters + +Another constructor allows effectively defining tracking parameters in +GEANT3 style: + +~~~{.cpp} +TGeoMedium(const char *name,Int_t numed,Int_t imat,Int_t ifield, +Double_t fieldm,Double_t tmaxfd,Double_t stemax, +Double_t deemax,Double_t epsil,Double_t stmin); +~~~ + +This constructor is reserved for creating tracking media from the VMC +interface [...]: + +- `numed:` user-defined medium index +- `imat:` unique ID of the material +- `others:` see G3 documentation + +Looking at our simple world example, one can see that for creating +volumes one needs to create tracking media before. The way to proceed +for those not interested in performing tracking with external MC's is to +define and use only one `dummy tracking medium` as in the example (or a +`NULL` pointer). + +\anchor GM00d +### User Interface for Handling Materials and Media + +The TGeoManager class contains the API for accessing and handling +defined materials: + +~~~{.cpp} +TGeoManager::GetMaterial(name); +~~~ + diff --git a/geom/geom/doc/shapes.md b/geom/geom/doc/shapes.md new file mode 100644 index 0000000000000..dfc0833eb1311 --- /dev/null +++ b/geom/geom/doc/shapes.md @@ -0,0 +1,283 @@ +\defgroup Shapes_classes Shapes +\ingroup Geometry +\brief Shapes are geometrical objects that provide the basic modeling functionality. + + - [Units](\ref SHAPES00) + - [Primitive Shapes](\ref SHAPES01) + - [Navigation Methods Performed By Shapes](\ref SHAPES02) + - [Creating Shapes](\ref SHAPES03) + - [Dividing Shapes](\ref SHAPES04) + - [Parametric Shapes](\ref SHAPES05) + +The "shapes" provide the definition of the `local` coordinate +system of the volume. Any volume must have a shape. Any shape recognized +by the modeller has to derive from the base **`TGeoShape`** class, +providing methods for: + +- Finding out if a point defined in their local frame is contained or + not by the shape; +- Computing the distance to enter/exit the shape from a local point, + given a known direction; +- Computing the maximum distance in any direction from a local point + that does NOT result in a boundary crossing of the shape (safe + distance); +- Computing the cosines of the normal vector to the crossed shape + surface, given a starting local point and an ongoing direction. + +All the features above are globally managed by the modeller in order to +provide navigation functionality. In addition to those, shapes have also +to implement additional specific abstract methods: + +- Computation of the minimal box bounding the shape, given that this + box have to be aligned with the local coordinates; +- Algorithms for dividing the shape along a given axis. + +The modeller currently provides a set of 20 basic shapes, which we will +call `primitives`. It also provides a special class allowing the +creation of shapes as a result of Boolean operations between primitives. +These are called `composite shapes` and the composition operation can be +recursive (combined composites). This allows the creation of a quite +large number of different shape topologies and combinations. You can +have a look and run the tutorial: geodemo.C + +\image html geom_primitive_shapes.png Primitive Shapes - the general inheritance scheme + +Shapes are named objects and all primitives have constructors like: + +~~~ {.cpp} +TGeoXXX(const char *name, param1, param2, ...); +TGeoXXX( param1, param2, ...); +~~~ + +Naming shape primitive is mandatory only for the primitives used in +Boolean composites (see "Composite Shapes"). For the sake of simplicity, +we will describe only the constructors in the second form. + +\anchor SHAPES00 +### Units + +The length units used in the geometry are **arbitrary**. However, there +are certain functionalities that work with the assumption that the used +lengths are expressed in centimeters. This is the case for shape +capacity or volume weight computation. The same is valid when using the +ROOT geometry as navigator for an external transport MC package (e.g. +GEANT) via the VMC interface. + +Other units in use: All angles used for defining rotation matrices or +some shape parameters are expressed in **degrees**. Material density is +expressed in [**g/cm3**]. + +\anchor SHAPES01 +### Primitive Shapes + + - Boxes: TGeoBBox class + - Parallelepiped: TGeoPara class + - Trapezoids: TGeoTrd1, TGeoTrd2 classes + - General Trapezoid: TGeoTrap class + - Twisted Trapezoid: TGeoGtra class + - Arbitrary 8 vertices shapes: TGeoArb8 class + - Tubes: TGeoTube class + - Tube Segments: TGeoTubeSeg class + - Cut Tubes: TGeoCtub class + - Elliptical Tubes: TGeoEltu class + - Hyperboloids: TGeoHype class + - Cones: TGeoCone class + - Cone Segments: TGeoConeSeg class + - Sphere: TGeoSphere class + - Torus: TGeoTorus class + - Paraboloid: TGeoParaboloid class + - Polycone: TGeoPcon class + - Polygon: TGeoPgon class + - Polygonal extrusion: TGeoXtru class + - Half Spaces: TGeoHalfSpace class + - Composite Shapes: TGeoCompositeShape class + +\anchor SHAPES02 +### Navigation Methods Performed By Shapes + +Shapes are named objects and register themselves to the `manager class` +at creation time. This is responsible for their final deletion. Shapes +can be created without name if their retrieval by name is no needed. +Generally shapes are objects that are useful only at geometry creation +stage. The pointer to a shape is in fact needed only when referring to a +given volume and it is always accessible at that level. Several volumes +may reference a single shape; therefore its deletion is not possible +once volumes were defined based on it. + +The navigation features related for instance to tracking particles are +performed in the following way: Each shape implement its specific +algorithms for all required tasks in its local reference system. Note +that the manager class handles global queries related to geometry. +However, shape-related queries might be sometimes useful: + +~~~ {.cpp} +Bool_t TGeoShape::Contains(Double_t *point[3]); +~~~ + +The method above returns `kTRUE` if the point \*point is actually inside +the shape. The point has to be defined in the local shape reference. For +instance, for a box having `DX,DY` and `DZ `half-lengths a point will be +considered inside if: + +`-DX <= point[0] <= DX` + +`-DY <= point[1] <= DY` + +`-DZ <= point[2] <= DZ` + +~~~ {.cpp} +Double_t TGeoShape::DistFromInside(Double_t *point[3], +Double_t *dir[3], Int_t iact,Double_t step,Double_t *safe); +~~~ + +The method computes the distance to exiting a shape from a given point +`inside`, along a given direction. This direction is given by its +director cosines with respect to the local shape coordinate system. This +method provides additional information according the value of `iact` +input parameter: + +- `iact = 0`computes only safe distance and fill it at the location + given by SAFE; +- `iact = 1`a proposed STEP is supplied. The safe distance is computed + first. If this is bigger than STEP than the proposed step is + approved and returned by the method since it does not cross the + shape boundaries. Otherwise, the distance to exiting the shape is + computed and returned; +- `iact = 2`computes both safe distance and distance to exiting, + ignoring the proposed step; +- `iact > 2`computes only the distance to exiting, ignoring anything + else + +~~~ {.cpp} +Double_t TGeoShape::DistFromOutside(Double_t *point[3], +Double_t *dir[3],Int_t iact,Double_t step,Double_t *safe); +~~~ + +This method computes the distance to entering a shape from a given point +`outside`. It acts in the same way as the previous method. + +~~~ {.cpp} +Double_t TGeoShape::Safety(Double_t *point[3],Bool_t inside); +~~~ + +This computes the maximum shift of a point in any direction that does +not change its `inside/outside `state (does not cross shape boundaries). +The state of the point has to be properly supplied. + +~~~ {.cpp} +Double_t *TGeoShape::ComputeNormal(Double_t *point[3], +Double_t *dir[3],Double_t *norm[3]); +~~~ + +The method above computes the director cosines of normal to the crossed +shape surface from a given point towards direction. This is filled into +the `norm` array, supplied by the user. The normal vector is always +chosen such that its dot product with the direction is positive defined. + +\anchor SHAPES03 +### Creating Shapes + +Shape objects embeds only the minimum set of parameters that are fully +describing a valid physical shape. For instance, the half-length, the +minimum and maximum radius represent a tube. Shapes are used together +with media in order to create volumes, which in their turn are the main +components of the geometrical tree. A specific shape can be created +stand-alone: + +~~~ {.cpp} +TGeoBBox *box = new TGeoBBox("s_box",halfX,halfY,halfZ); // named +TGeoTube *tub = new TGeoTube(rmin,rmax,halfZ); // no name +//... (See all specific shape constructors) +~~~ + +Sometimes it is much easier to create a volume having a given shape in +one step, since shapes are not directly linked in the geometrical tree +but volumes are: + +~~~ {.cpp} +TGeoVolume *vol_box = gGeoManager->MakeBox("BOX_VOL",pmed,halfX, +halfY,halfZ); +TGeoVolume *vol_tub = gGeoManager->MakeTube("TUB_VOL",pmed,rmin, +rmax,halfZ); +// ...(See MakeXXX() utilities in TGeoManager class) +~~~ + +\anchor SHAPES04 +### Dividing Shapes + +Shapes can generally be divided along a given axis. Supported axes are: +`X`, `Y`, `Z`, `Rxy`, `Phi`, `Rxyz`. A given shape cannot be divided +however on any axis. The general rule is that that divisions are +possible on whatever axis that produces still known shapes as slices. +The division of shapes are performed by the call `TGeoShape::Divide()`, +but this operation can be done only via `TGeoVolume::Divide()` method. +In other words, the algorithm for dividing a specific shape is known by +the shape object, but is always invoked in a generic way from the volume +level. Details on how to do that can be found in the paragraph ‘Dividing +volumes'. One can see how all division options are interpreted and which +their result inside specific shape classes is. + +\anchor SHAPES05 +### Parametric Shapes + +Shapes generally have a set of parameters that is well defined at build +time. In fact, when the final geometrical hierarchy is assembled and the +geometry is closed, all constituent shapes `MUST`**have well defined and +valid parameters. In order to ease-up geometry creation, some +parameterizations are however allowed. + +For instance let's suppose that we need to define several volumes having +exactly the same properties but different sizes. A way to do this would +be to create as many different volumes and shapes. The modeller allows +however the definition of a single volume having undefined shape +parameters. + +~~~ {.cpp} +TGeoManager::Volume(const char *name,const char *shape,Int_t nmed); +~~~ + +- `name:` the name of the newly created volume; +- `shape:`the type of the associated shape. This has to contain the + case-insensitive first 4 letters of the corresponding class name + (e.g. "`tubs`" will match **`TGeoTubeSeg`**, "`bbox`" will match + **`TGeoBBox`**) +- `nmed:` the medium number. + +This will create a special volume that will not be directly used in the +geometry, but whenever positioned will require a list of actual +parameters for the current shape that will be created in this process. +Such volumes having shape parameters known only when used have to be +positioned only with **`TGeoManager::Node()` method (see ‘Creating and +Positioning Volumes').** + +Other case when shape parameterizations are quite useful is scaling +geometry structures. Imagine that we would like to enlarge/shrink a +detector structure on one or more axes. This happens quite often in real +life and is handled by "fitting mother" parameters. This is accomplished +by defining shapes with one or more invalid (negative) parameters. For +instance, defining a box having `dx=10.`, `dy=10.`, and `dz=-1` will not +generate an error but will be interpreted in a different way: A special +volume **`TGeoVolumeMulti`** will be created. Whenever positioned inside +a mother volume, this will create a normal **`TGeoVolume`** object +having as shape a box with `dz` fitting the corresponding `dz `of the +mother shape. Generally, this type of parameterization is used when +positioning volumes in containers having a matching shape, but it works +also for most reasonable combinations. + +\defgroup Tubes Tubes +\ingroup Shapes_classes +Tubes have Z as their symmetry axis. + +\defgroup Cones Cones +\ingroup Shapes_classes +Conical tube classes. + +\defgroup Trapezoids Trapezoids +\ingroup Shapes_classes +In general, we will call trapezoidal shapes having 8 vertices and up to +6 trapezoid faces. Besides that, two of the opposite faces are parallel +to XY plane and are positioned at ` dZ`. Since general trapezoids are +seldom used in detector geometry descriptions, there are several +primitives implemented in the modeller for particular cases. + + diff --git a/geom/geom/src/TGeoArb8.cxx b/geom/geom/src/TGeoArb8.cxx index 05aea0681e8be..f9c79b7bd3ad7 100644 --- a/geom/geom/src/TGeoArb8.cxx +++ b/geom/geom/src/TGeoArb8.cxx @@ -21,31 +21,41 @@ ClassImp(TGeoArb8); /** \class TGeoArb8 -\ingroup Geometry_classes - -An arbitrary trapezoid with less than 8 vertices standing on -two parallel planes perpendicular to Z axis. Parameters : - - dz - half length in Z; - - xy[8][2] - vector of (x,y) coordinates of vertices - - first four points (xy[i][j], i<4, j<2) are the (x,y) - coordinates of the vertices sitting on the -dz plane; - - last four points (xy[i][j], i>=4, j<2) are the (x,y) - coordinates of the vertices sitting on the +dz plane; - -The order of defining the vertices of an arb8 is the following : - - point 0 is connected with points 1,3,4 - - point 1 is connected with points 0,2,5 - - point 2 is connected with points 1,3,6 - - point 3 is connected with points 0,2,7 - - point 4 is connected with points 0,5,7 - - point 5 is connected with points 1,4,6 - - point 6 is connected with points 2,5,7 - - point 7 is connected with points 3,4,6 - -Points can be identical in order to create shapes with less than -8 vertices. - -Begin_Macro(source) +\ingroup Trapezoids + +\brief An arbitrary trapezoid with less than 8 vertices standing on two parallel planes perpendicular to Z axis. + + +An `Arb8` is defined by two quadrilaterals sitting on parallel planes, +at `dZ`. These are defined each by 4 vertices having the coordinates +`(Xi,Yi,+/-dZ)`,` i=0`,` 3`. The lateral surface of the `Arb8` is +defined by the 4 pairs of edges corresponding to vertices (`i,i+1`) on +both `-dZ` and `+dZ`. If M and M' are the middles of the segments +`(i,i+1)` at `-dZ` and `+dZ`, a lateral surface is obtained by sweeping +the edge at `-dZ` along MM' so that it will match the corresponding one +at `+dZ`. Since the points defining the edges are arbitrary, the lateral +surfaces are not necessary planes - but twisted planes having a twist +angle linear-dependent on Z. + +~~~ {.cpp} +TGeoArb8::TGeoArb8(Double_t dz,Double_t ivert); +~~~ + + - `dz:` half-length in Z; + - `ivert = [0,7]` + +Vertices have to be defined clockwise in the XY pane, both at `+dz` and +`-dz`. The quadrilateral at `-dz` is defined by indices [0,3], whereas +the one at `+dz` by vertices [4,7]. The vertex with `index=7` has to be +defined last, since it triggers the computation of the bounding box of +the shape. Any two or more vertices in each Z plane can have the same +(X,Y) coordinates. It this case, the top and bottom quadrilaterals +become triangles, segments or points. The lateral surfaces are not +necessary defined by a pair of segments, but by pair segment-point +(making a triangle) or point-point (making a line). Any choice is valid +as long as at one of the end-caps is at least a triangle. + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("arb8", "poza12"); @@ -75,19 +85,20 @@ End_Macro */ /** \class TGeoGtra -\ingroup Geometry_classes +\ingroup Trapezoids +\brief A twisted trapezoid. -Gtra is a twisted trapezoid. -i.e. one for which the faces perpendicular -to z are trapezia and their centres are not the same x, y. It has 12 -parameters: the half length in z, the polar angles from the centre of -the face at low z to that at high z, twist, H1 the half length in y at low z, -LB1 the half length in x at low z and y low edge, LB2 the half length -in x at low z and y high edge, TH1 the angle w.r.t. the y axis from the -centre of low y edge to the centre of the high y edge, and H2, LB2, -LH2, TH2, the corresponding quantities at high z. +A twisted trapezoid is a general trapezoid defined in the same way but +that is twisted along the Z-axis. The twist is defined as the rotation +angle between the lower and the higher Z faces. -Begin_Macro(source) +~~~ {.cpp} +TGeoGtra(Double_t dz,Double_t theta,Double_t phi,Double_t twist, +Double_t h1,Double_t bl1,Double_t tl1,Double_t alpha1, +Double_t h2,Double_t bl2,Double_t tl2,Double_t alpha2 ); +~~~ + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("gtra", "poza11"); @@ -108,18 +119,14 @@ End_Macro */ /** \class TGeoTrap -\ingroup Geometry_classes +\ingroup Trapezoids +\brief A general trapezoid. -TRAP is a general trapezoid, i.e. one for which the faces perpendicular -to z are trapezia and their centres are not the same x, y. It has 11 -parameters: the half length in z, the polar angles from the centre of -the face at low z to that at high z, H1 the half length in y at low z, -LB1 the half length in x at low z and y low edge, LB2 the half length -in x at low z and y high edge, TH1 the angle w.r.t. the y axis from the -centre of low y edge to the centre of the high y edge, and H2, LB2, -LH2, TH2, the corresponding quantities at high z. +A general trapezoid is one for which the faces perpendicular to z are +trapezes but their centers are not necessary at the same x, y +coordinates. -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("trap", "poza10"); @@ -137,6 +144,20 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + +It has eleven parameters: the half length in z, the polar angles from +the center of the face at low z to that at high z, `H1` the half length +in y at low z, `LB1` the half length in x at low z and y low edge, `LB2` +the half length in x at low z and y high edge, **`TH1`** the angle with +respect to the y axis from the center of low y edge to the center of the +high y edge, and `H2,LB2,LH2,TH2`, the corresponding quantities at high +z. + +~~~ {.cpp} +TGeoTrap(Double_t dz,Double_t theta,Double_t phi, +Double_t h1,Double_t bl1,Double_t tl1,Double_t alpha1, +Double_t h2,Double_t bl2,Double_t tl2,Double_t alpha2); +~~~ */ //////////////////////////////////////////////////////////////////////////////// diff --git a/geom/geom/src/TGeoBBox.cxx b/geom/geom/src/TGeoBBox.cxx index 9c54683588c96..14e473efa427c 100644 --- a/geom/geom/src/TGeoBBox.cxx +++ b/geom/geom/src/TGeoBBox.cxx @@ -11,31 +11,52 @@ *************************************************************************/ /** \class TGeoBBox -\ingroup Geometry_classes +\ingroup Shapes_classes +\brief Box class. -Box class. All shape primitives inherit from this, their + - [Building boxes](\ref GEOB00) + - [Creation of boxes](\ref GEOB01) + - [Divisions of boxes](\ref GEOB02) + +All shape primitives inherit from this, their constructor filling automatically the parameters of the box that bounds the given shape. Defined by 6 parameters : - - fDX, fDY, fDZ - half lengths on X, Y and Z axis - - fOrigin[3] - position of box origin +``` +TGeoBBox(Double_t dx,Double_t dy,Double_t dz,Double_t *origin=0); +``` -### Building boxes + - `fDX`, `fDY`, `fDZ` : half lengths on X, Y and Z axis + - `fOrigin[3]` : position of box origin - Normally a box has to be built only with 3 parameters : dx, dy, dz -representing the half lengths on X, Y and Z axis. In this case, the origin -of the box will match the one of its reference frame. The translation of the -origin is used only by the constructors of all other shapes in order to -define their own bounding boxes. Users should be aware that building a -translated box that will represent a physical shape by itself will affect any -further positioning of other shapes inside. Therefore in order to build a -positioned box one should follow the recipe described in class TGeoNode. +\anchor GEOB00 +### Building boxes +Normally a box has to be built only with 3 parameters: `DX,DY,DZ` +representing the half-lengths on X, Y and Z-axes. In this case, the +origin of the box will match the one of its reference frame and the box +will range from: `-DX` to `DX` on X-axis, from `-DY` to `DY` on Y and +from `-DZ` to `DZ` on Z. On the other hand, any other shape needs to +compute and store the parameters of their minimal bounding box. The +bounding boxes are essential to optimize navigation algorithms. +Therefore all other primitives derive from **`TGeoBBox`**. Since the +minimal bounding box is not necessary centered in the origin, any box +allows an origin translation `(Ox`,`Oy`,`Oz)`. All primitive +constructors automatically compute the bounding box parameters. Users +should be aware that building a translated box that will represent a +primitive shape by itself would affect any further positioning of other +shapes inside. Therefore it is highly recommendable to build +non-translated boxes as primitives and translate/rotate their +corresponding volumes only during positioning stage. + +\anchor GEOB01 #### Creation of boxes - - TGeoBBox *box = new TGeoBBox("BOX", 20, 30, 40); +``` + TGeoBBox *box = new TGeoBBox("BOX", 20, 30, 40); +``` -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("box", "poza1"); @@ -54,19 +75,25 @@ Begin_Macro(source) } End_Macro - - A volume having a box shape can be built in one step: - `TGeoVolume *vbox = gGeoManager->MakeBox("vbox", ptrMed, 20,30,40);` +A volume having a box shape can be built in one step: + +``` + TGeoVolume *vbox = gGeoManager->MakeBox("vbox", ptrMed, 20,30,40); +``` -#### Divisions of boxes. +\anchor GEOB02 +#### Divisions of boxes Volumes having box shape can be divided with equal-length slices on X, Y or Z axis. The following options are supported: - Dividing the full range of one axis in N slices - `TGeoVolume *divx = vbox->Divide("SLICEX", 1, N);` - - here 1 stands for the division axis (1-X, 2-Y, 3-Z) +``` + TGeoVolume *divx = vbox->Divide("SLICEX", 1, N); +``` +here `1` stands for the division axis (1-X, 2-Y, 3-Z) -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("box", "poza1"); @@ -87,11 +114,13 @@ Begin_Macro(source) End_Macro - Dividing in a limited range - general case. - `TGeoVolume *divy = vbox->Divide("SLICEY",2,N,start,step);` +``` + TGeoVolume *divy = vbox->Divide("SLICEY",2,N,start,step); +``` - start = starting offset within (-fDY, fDY) - step = slicing step -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("box", "poza1"); diff --git a/geom/geom/src/TGeoCompositeShape.cxx b/geom/geom/src/TGeoCompositeShape.cxx index c4d30999ba6b8..f31714355de28 100644 --- a/geom/geom/src/TGeoCompositeShape.cxx +++ b/geom/geom/src/TGeoCompositeShape.cxx @@ -9,159 +9,175 @@ * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ + /** \class TGeoCompositeShape -\ingroup Geometry_classes - -Class handling Boolean composition of shapes - - Composite shapes are Boolean combination of two or more shape -components. The supported boolean operations are union (+), intersection (*) -and subtraction. Composite shapes derive from the base TGeoShape class, -therefore providing all shape features : computation of bounding box, finding -if a given point is inside or outside the combination, as well as computing the -distance to entering/exiting. It can be directly used for creating volumes or -used in the definition of other composite shapes. - - Composite shapes are provided in order to complement and extend the set of -basic shape primitives. They have a binary tree internal structure, therefore -all shape-related geometry queries are signals propagated from top level down -to the final leaves, while the provided answers are assembled and interpreted -back at top. This CSG hierarchy is effective for small number of components, -while performance drops dramatically for large structures. Building a complete -geometry in this style is virtually possible but highly not recommended. - -### Structure of composite shapes - - A composite shape can always be regarded as the result of a Boolean operation -between only two shape components. All information identifying these two -components as well as their positions with respect to the frame of the composite -is represented by an object called Boolean node. A composite shape just have -a pointer to such a Boolean node. Since the shape components may also be -composites, they will also contain binary Boolean nodes branching other two -shapes in the hierarchy. Any such branch ends-up when the final leaves are no -longer composite shapes, but basic primitives. - -\image html geom_booltree.png - - Suppose that A, B, C and D represent basic shapes, we will illustrate -how the internal representation of few combinations look like. We do this -only for the sake of understanding how to create them in a proper way, since -the user interface for this purpose is in fact very simple. We will ignore -for the time being the positioning of components. The definition of a composite -shape takes an expression where the identifiers are shape names. The -expression is parsed and decomposed in 2 sub-expressions and the top-level -Boolean operator. - -#### A+B+C - - This represent the union of A, B and C. Both union operators are at the -same level. Since: - -~~~ {.cpp} - A+B+C = (A+B)+C = A+(B+C) +\ingroup Shapes_classes + +Composite shapes are Boolean combinations of two or more shape +components. The supported Boolean operations are union (+), intersection +(\*) and subtraction(-). Composite shapes derive from the base +**`TGeoShape`** class, therefore providing all shape features: +computation of bounding box, finding if a given point is inside or +outside the combination, as well as computing the distance to +entering/exiting. They can be directly used for creating volumes or used +in the definition of other composite shapes. + +Composite shapes are provided in order to complement and extend the set +of basic shape primitives. They have a binary tree internal structure, +therefore all shape-related geometry queries are signals propagated from +top level down to the final leaves, while the provided answers are +assembled and interpreted back at top. This `CSG` +`(composite solid geometry)` hierarchy is effective for small number of +components, while performance drops dramatically for large structures. +Building a complete geometry in this style is virtually possible but +highly not recommended. + +#### The Structure of Composite Shapes + +A composite shape can always be looked as the result of a Boolean +operation between only two shape components. All information identifying +these two components as well as their positions with respect to the +frame of the composite is represented by an object called Boolean node. +A composite shape has a pointer to such a Boolean node. Since the shape +components may also be composites, they will also contain binary Boolean +nodes branching out other two shapes in the hierarchy. Any such branch +ends-up when the final leaves are no longer composite shapes, but basic +primitives. The figure shows the composite shapes structure. + +\image html geom_composite_shape001.png "The composite shapes structure" width=600px + +Suppose that A, B, C and D represent basic shapes, we will illustrate +how the internal representation of few combinations look like. We do +this only for understanding how to create them in a proper way, since +the user interface for this purpose is in fact very simple. We will +ignore for the time being the positioning of components. The definition +of a composite shape takes an expression where the identifiers are shape +names. The expression is parsed and decomposed in 2 sub-expressions and +the top-level Boolean operator. + +1. Union: `A+B+C` + +Just to illustrate the Boolean expression parsing and the composite +shape structure, let's take a simple example. We will describe the union +of A, B and C. Both union operators are at the same level. Since: + +`A+B+C = (A+B)+C = A+(B+C)` + +The first` (+)` is taken as separator, hence the expression split in: +`A` and `(B+C)`. A Boolean node of type **`TGeoUnion`**`("A","B+C")` is +created. This tries to replace the 2 expressions by actual pointers to +corresponding shapes. The first expression (A) contains no operators +therefore is interpreted as representing a shape. The shape named "A" is +searched into the list of shapes handled by the manager class and stored +as the "left" shape in the Boolean union node. Since the second +expression is not yet fully decomposed, the "right" shape in the +combination is created as a new composite shape. This will split at its +turn B+C into B and C and create a **`TGeoUnion`**`("B","C")`. The B and +C identifiers will be looked for and replaced by the pointers to the +actual shapes into the new node. Finally, the composite "`A+B+C`" will +be represented as shown in Fig.17-23.** + +\image html geom_composite_shape002.png "Representation of A+B+C" width=600px + +To build this composite shape: + +~~~{.cpp} +TGeoCompositeShape *cs1 = new TGeoCompositeShape("CS1","A+B+C"); ~~~ -the first (+) is taken as separator, hence the expression split: +Any shape entering a Boolean combination can be prior positioned. In +order to do so, one has to attach a matrix name to the shape name by +using a colon (:). As for shapes, the named matrix has to be prior +defined: -~~~ {.cpp} - A and B+C +~~~{.cpp} +TGeoMatrix *mat; +// ... code creating some geometrical transformation +mat->SetName("mat1"); +mat->RegisterYourself(); // see Geometrical transformations ~~~ -A Boolean node of type TGeoUnion("A", "B+C") is created. This tries to replace -the 2 expressions by actual pointers to corresponding shapes. -The first expression (A) contains no operators therefore is interpreted as -representing a shape. The shape named "A" is searched into the list of shapes -handled by the manager class and stored as the "left" shape in the Boolean -union node. Since the second expression is not yet fully decomposed, the "right" -shape in the combination is created as a new composite shape. This will split -at its turn B+C into B and C and create a TGeoUnion("B","C"). The B and C -identifiers will be looked for and replaced by the pointers to the actual shapes -into the new node. Finally, the composite "A+B+C" will be represented as: - -~~~ {.cpp} - A - | - [A+B+C] = (+) B - | | - [B+C] = (+) - | - C -~~~ +An identifier `shape:matrix` have the meaning: `shape` is translated or +rotated with `matrix` with respect to the Boolean combination it enters +as operand. Note that in the expression A+B+C no matrix identifier was +provided, therefore the identity matrix was used for positioning the +shape components. The next example will illustrate a more complex case. -where [] is a composite shape, (+) is a Boolean node of type union and A, B, -C are pointers to the corresponding shapes. - Building this composite shapes takes the following line : +2. `(A:m1+B):m2-(C:m3*D:m4):m5` -~~~ {.cpp} - TGeoCompositeShape *cs1 = new TGeoCompositeShape("CS1", "A+B+C"); -~~~ +Let's try to understand the expression above. This expression means: +subtract the intersection of **C** and **D** from the union of **A** and +**B**. The usage of parenthesis to force the desired precedence is +always recommended. One can see that not only the primitive shapes have +some geometrical transformations, but also their intermediate +compositions. -#### (A+B)-(C+D) - This expression means: subtract the union of C and D from the union of A and -B. The usage of parenthesis to force operator precedence is always recommended. -The representation of the corresponding composite shape looks like: - -~~~ {.cpp} - A - | - [A+B] = (+) - | | - [(A+B)-(C+D)] = (-) C B - | | - [C+D]=(+) - | - D -~~~ -~~~ {.cpp} - TGeoCompositeShape *cs2 = new TGeoCompositeShape("CS2", "(A+B)-(C+D)"); -~~~ +\image html geom_composite_shape003.png "Internal representation for composite shapes" width=600px - Building composite shapes as in the 2 examples above is not always quite -useful since we were using un-positioned shapes. When supplying just shape -names as identifiers, the created boolean nodes will assume that the shapes -are positioned with an identity transformation with respect to the frame of -the created composite. In order to provide some positioning of the combination -components, we have to attach after each shape identifier the name of an -existing transformation, separated by a colon. Obviously all transformations -created for this purpose have to be objects with unique names in order to be -properly substituted during parsing. - Let's look at the code implementing the second example : - -~~~ {.cpp} - TGeoTranslation *t1 = new TGeoTranslation("t1",0,0,-20); - TGeoTranslation *t2 = new TGeoTranslation("t2",0,0, 20); - TGeoRotation *r1 = new TGeoRotation("r1"); // transformations need names - r1->SetAngles(90,30,90,120,0,0); // rotation with 30 degrees about Z - TGeoTube *a = new TGeoTube(0, 10,20); - a->SetName("A"); // shapes need names too - TGeoTube *b = new TGeoTube(0, 20,20); - b->SetName("B"); - TGeoBBox *c = new TGeoBBox(10,10,50); - c->SetName("C"); - TGeoBBox *d = new TGeoBBox(50,10,10); - d->SetName("D"); - - TGeoCompositeShape *cs; - cs = new TGeoCompositeShape("CS", "(A:t1+B:t2)-(C+D:r1)"); +~~~{.cpp} +TGeoCompositeShape *cs2 = new TGeoCompositeShape("CS2", +"(A:m1+B):m2-(C:m3*D:m4):m5"); ~~~ - The newly created composite looks like 2 cylinders of different radii sitting -one on top of the other and having 2 rectangular holes : a longitudinal one -along Z axis corresponding to C and an other one in the XY plane due to D. - One should have in mind that the same shape or matrix identifier can be -used many times in the same expression. For instance: +Building composite shapes as in the first example is not always quite +useful since we were using un-positioned shapes. When supplying just +shape names as identifiers, the created Boolean nodes will assume that +the shapes are positioned with an identity transformation with respect +to the frame of the created composite. In order to provide some +positioning of the combination components, we have to attach after each +shape identifier the name of an existing transformation, separated by a +colon. Obviously all transformations created for this purpose have to be +objects with unique names in order to be properly substituted during +parsing. + +#### Composite Shape Example -~~~ {.cpp} - (A:t1-A:t2)*B:t1 +One should have in mind that the same shape or matrix identifiers can be +used many times in the same expression, as in the following example: + +~~~{.cpp} +{ + TCanvas *c = new TCanvas("c", "c",0,0,600,600); + const Double_t sq2 = TMath::Sqrt(2.); + TGeoManager *mgr = + new TGeoManager("Geom","composite shape example"); + TGeoMedium *medium = 0; + TGeoVolume *top = mgr->MakeBox("TOP",medium,100,250,250); + mgr->SetTopVolume(top); + + // make shape components + TGeoBBox *sbox = new TGeoBBox("B",100,125*sq2,125*sq2); + TGeoTube *stub = new TGeoTube("T",0,100,250); + TGeoPgon *spgon = new TGeoPgon("P",0.,360.,6,2); + spgon->DefineSection(0,-250,0,80); + spgon->DefineSection(1,250,0,80); + + // define some rotations + TGeoRotation *r1 = new TGeoRotation("r1",90,0,0,180,90,90); + r1->RegisterYourself(); + TGeoRotation *r2 = new TGeoRotation("r2",90,0,45,90,45,270); + r2->RegisterYourself(); + // create a composite + TGeoCompositeShape *cs = new TGeoCompositeShape("cs", "((T+T:r1)-(P+P:r1))*B:r2"); + TGeoVolume *comp = new TGeoVolume("COMP",cs); + comp->SetLineColor(kRed); + + // put it in the top volume + top->AddNode(comp,1); + mgr->CloseGeometry(); + // visualize it with ray tracing + top->Raytrace(); +} ~~~ -is a valid expression. Expressions that cannot be parsed or identifiers that -cannot be substituted by existing objects generate error messages. - Composite shapes can be subsequently used for defining volumes. Moreover, -these volumes may have daughters but these have to obey overlapping/extruding -rules (see TGeoVolume). Volumes created based on composite shapes cannot be -divided. Visualization of such volumes is currently not implemented. +\image html geom_composite_shape004.png "A composite shape example" width=400px + + +Composite shapes can be subsequently used for defining volumes. +Moreover, these volumes contain other volumes, following the general +criteria. Volumes created based on composite shapes cannot be divided. + */ #include diff --git a/geom/geom/src/TGeoCone.cxx b/geom/geom/src/TGeoCone.cxx index dca5689f33625..7f83c8f8bad4b 100644 --- a/geom/geom/src/TGeoCone.cxx +++ b/geom/geom/src/TGeoCone.cxx @@ -11,14 +11,24 @@ *************************************************************************/ /** \class TGeoCone -\ingroup Geometry_classes +\ingroup Cones -Conical tube class. It has 5 parameters : - - dz - half length in z - - Rmin1, Rmax1 - inside and outside radii at -dz - - Rmin2, Rmax2 - inside and outside radii at +dz +The cones are defined by 5 parameters: -Begin_Macro(source) +~~~{.cpp} +TGeoCone(Double_t dz,Double_t rmin1,Double_t rmax1, +Double_t rmin2,Double_t rmax2); +~~~ + + - `rmin1:` internal radius at Z is `-dz` + - `rmax1:` external radius at Z is `-dz` + - `rmin2:` internal radius at Z is `+dz` + - `rmax2:` external radius at Z is `+dz` + - `dz:` half length in Z (a cone ranges from `-dz` to +`dz`) + +A cone has Z-axis as its symmetry axis. + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("cone", "poza4"); @@ -40,14 +50,21 @@ End_Macro /** \class TGeoConeSeg -\ingroup Geometry_classes +\ingroup Cones + +A cone segment is a cone having a range in `phi.` The cone segment class +derives from **`TGeoCone`**, having two extra parameters: `phi1` and +`phi2`. + +~~~{.cpp} +TGeoConeSeg(Double_t dz,Double_t rmin1,Double_t rmax1, +Double_t rmin2,Double_t rmax2,Double_t phi1,Double_t phi2); +~~~ -A phi segment of a conical tube. Has 7 parameters : - - the same 5 as a cone; - - first phi limit (in degrees) - - second phi limit +Parameters `phi1` and `phi2` have the same meaning and convention as for +tube segments. -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("coneseg", "poza5"); diff --git a/geom/geom/src/TGeoElement.cxx b/geom/geom/src/TGeoElement.cxx index adf78e23d797f..d68237d7eb27b 100644 --- a/geom/geom/src/TGeoElement.cxx +++ b/geom/geom/src/TGeoElement.cxx @@ -10,7 +10,7 @@ *************************************************************************/ /** \class TGeoElement -\ingroup Geometry_classes +\ingroup Materials_classes Base class for chemical elements */ diff --git a/geom/geom/src/TGeoEltu.cxx b/geom/geom/src/TGeoEltu.cxx index 7dff2ce79127e..ea0f4197fd010 100644 --- a/geom/geom/src/TGeoEltu.cxx +++ b/geom/geom/src/TGeoEltu.cxx @@ -10,14 +10,16 @@ *************************************************************************/ /** \class TGeoEltu -\ingroup Geometry_classes +\ingroup Tubes -Elliptical tube class. An elliptical tube has 3 parameters - - A - semi-axis of the ellipse along x - - B - semi-axis of the ellipse along y - - dz - half length in z +An elliptical tube is defined by the two semi-axes `A` and `B`. It ranges +from `-dZ` to `+dZ` as all other tubes: -Begin_Macro(source) +~~~ {.cpp} +TGeoEltu(Double_t a,Double_t b,Double_t dz); +~~~ + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("eltu", "poza6"); diff --git a/geom/geom/src/TGeoHalfSpace.cxx b/geom/geom/src/TGeoHalfSpace.cxx index 6206312587956..644901e573313 100644 --- a/geom/geom/src/TGeoHalfSpace.cxx +++ b/geom/geom/src/TGeoHalfSpace.cxx @@ -10,13 +10,20 @@ *************************************************************************/ /** \class TGeoHalfSpace -\ingroup Geometry_classes +\ingroup Shapes_classes + +A half space is limited just by a plane, defined by a point and the +normal direction. The point lies on the plane and the normal vector +points outside the half space. The half space is the only shape +which is infinite and can be used only in Boolean operations that +result in non-infinite composite shapes (see also TGeoCompositeShape). +A half space has to be defined using the constructor: + +~~~{.cpp} +TGeoHalfSpace (const char *name, Double_t *point[3], +Double_t *norm[3]); +~~~ -A half-space defined by: - - p[3] - an arbitrary point on the plane - - n[3] - normal at the plane in point P -A half-space is not really a shape, because it is infinite. The normal -points "outside" the half-space */ #include diff --git a/geom/geom/src/TGeoHelix.cxx b/geom/geom/src/TGeoHelix.cxx index ef9caf927910b..b0437d227d59f 100644 --- a/geom/geom/src/TGeoHelix.cxx +++ b/geom/geom/src/TGeoHelix.cxx @@ -11,7 +11,7 @@ /** \class TGeoHelix -\ingroup Geometry_classes +\ingroup Shapes_classes Class representing a helix curve diff --git a/geom/geom/src/TGeoHype.cxx b/geom/geom/src/TGeoHype.cxx index 339daac14eb4e..698da5f491826 100644 --- a/geom/geom/src/TGeoHype.cxx +++ b/geom/geom/src/TGeoHype.cxx @@ -21,37 +21,67 @@ #include "TMath.h" /** \class TGeoHype -\ingroup Geometry_classes - -Hyperboloid class defined by 5 parameters. Bounded by: - - Two z planes at z=+/-dz - - Inner and outer lateral surfaces. These represent the surfaces - described by the revolution of 2 hyperbolas about the Z axis: - r^2 - (t*z)^2 = a^2 - - - r = distance between hyperbola and Z axis at coordinate z - - t = tangent of the stereo angle (angle made by hyperbola - asymptotic lines and Z axis). t=0 means cylindrical surface. - - a = distance between hyperbola and Z axis at z=0 - -The inner hyperbolic surface is described by: - r^2 - (tin*z)^2 = rin^2 - - absence of the inner surface (filled hyperboloid can be forced - by rin=0 and sin=0 -The outer hyperbolic surface is described by: - r^2 - (tout*z)^2 = rout^2 -TGeoHype parameters: dz[cm], rin[cm], sin[deg], rout[cm], sout[deg]. -MANDATORY conditions: - - - rin < rout - - rout > 0 - - rin^2 + (tin*dz)^2 > rout^2 + (tout*dz)^2 - -SUPPORTED CASES: - - - rin = 0, tin != 0 => inner surface conical - - tin=0 AND/OR tout=0 => corresponding surface(s) cylindrical - e.g. tin=0 AND tout=0 => shape becomes a tube with: rmin,rmax,dz +\ingroup Shapes_classes + +A hyperboloid is represented as a solid limited by two planes +perpendicular to the Z axis (top and bottom planes) and two hyperbolic +surfaces of revolution about Z axis (inner and outer surfaces). The +class describing hyperboloids is TGeoHype has 5 input parameters: + +~~~ {.cpp} +TGeoHype(Double_t rin,Double_t stin,Double_t rout, +Double_t stout,Double_t dz); +~~~ + +Begin_Macro +{ + TCanvas *c = new TCanvas("c", "c",0,0,600,600); + new TGeoManager("hype", "hyperboloid"); + TGeoMaterial *mat = new TGeoMaterial("Al", 26.98,13,2.7); + TGeoMedium *med = new TGeoMedium("MED",1,mat); + TGeoVolume *top = gGeoManager->MakeBox("TOP",med,100,100,100); + gGeoManager->SetTopVolume(top); + TGeoVolume *vol = gGeoManager->MakeHype("HYPE",med,10, 45 ,20,45,40); + TGeoHype *hype = (TGeoHype*)vol->GetShape(); + top->AddNode(vol,1); + gGeoManager->CloseGeometry(); + gGeoManager->SetNsegments(80); + top->Draw(); + TView *view = gPad->GetView(); + view->ShowAxis(); +} +End_Macro + +The hyperbolic surface equation is taken in the form: + +~~~{.cpp} +r2 - z2tan2() = r2min +~~~ + +- `r,z:` cylindrical coordinates for a point on the surface +- `:` stereo angle between the hyperbola asymptotic lines and Z axis +- `r2min:` minimum distance between hyperbola and Z axis (at `z=0`) + +The input parameters represent: + +- `rin, stin:` minimum radius and tangent of stereo angle for inner + surface +- `rout, stout:` minimum radius and tangent of stereo angle for outer + surface +- `dz:` half length in Z (bounding planes positions at `+/-dz`) + +The following conditions are mandatory in order to avoid intersections +between the inner and outer hyperbolic surfaces in the range `+/-dz`: + +- `rin0` +- `rin2 + dz2*stin2 > rout2 + dz2*stout2` + +Particular cases: + +- `rin=0, stin0:` the inner surface is conical +- `stin=0 / stout=0:` cylindrical surface(s) + */ ClassImp(TGeoHype); diff --git a/geom/geom/src/TGeoMaterial.cxx b/geom/geom/src/TGeoMaterial.cxx index 83b6fb17c7fd8..205e6bf38390b 100644 --- a/geom/geom/src/TGeoMaterial.cxx +++ b/geom/geom/src/TGeoMaterial.cxx @@ -10,7 +10,7 @@ *************************************************************************/ /** \class TGeoMaterial -\ingroup Geometry_classes +\ingroup Materials_classes Base class describing materials. @@ -700,7 +700,7 @@ void TGeoMaterial::FillMaterialEvolution(TObjArray *population, Double_t precisi } /** \class TGeoMixture -\ingroup Geometry_classes +\ingroup Materials_classes Mixtures of elements. diff --git a/geom/geom/src/TGeoMedium.cxx b/geom/geom/src/TGeoMedium.cxx index 60f13bed44448..12cdac993b77d 100644 --- a/geom/geom/src/TGeoMedium.cxx +++ b/geom/geom/src/TGeoMedium.cxx @@ -11,7 +11,7 @@ /** \class TGeoMedium -\ingroup Geometry_classes +\ingroup Materials_classes Media are used to store properties related to tracking and which are useful only when using geometry with a particle transport MC package (via VMC). One diff --git a/geom/geom/src/TGeoPara.cxx b/geom/geom/src/TGeoPara.cxx index 7650b63e4e829..147e8df301304 100644 --- a/geom/geom/src/TGeoPara.cxx +++ b/geom/geom/src/TGeoPara.cxx @@ -11,17 +11,31 @@ *************************************************************************/ /** \class TGeoPara -\ingroup Geometry_classes +\ingroup Shapes_classes +\brief Parallelepiped class. -Parallelepiped class. It has 6 parameters : +A parallelepiped is a shape having 3 pairs of parallel faces out of +which one is parallel with the XY plane (Z faces). All faces are +parallelograms in the general case. The Z faces have 2 edges parallel +with the X-axis. - - dx, dy, dz - half lengths in X, Y, Z - - alpha - angle w.r.t the Y axis from center of low Y edge to - center of high Y edge [deg] - - theta, phi - polar and azimuthal angles of the segment between - low and high Z surfaces [deg] +The shape has the center in the origin and it is defined by: -Begin_Macro(source) + - `dX, dY, dZ:` half-lengths of the projections of the edges on X, Y + and Z. The lower Z face is positioned at `-dZ`, while the upper at `+dZ`. + - `alpha:` angle between the segment defined by the centers of the + X-parallel edges and Y axis `[-90,90]` in degrees + - `theta:` theta angle of the segment defined by the centers of the Z faces; + - `phi:` phi angle of the same segment + +~~~ {.cpp} +TGeoPara(dX,dY,dZ,alpha,theta,phi); +~~~ + +A box is a particular parallelepiped having the parameters: +`(dX,dY,dZ,0.,0.,0.)`. + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("para", "poza1"); @@ -39,6 +53,7 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + */ #include diff --git a/geom/geom/src/TGeoParaboloid.cxx b/geom/geom/src/TGeoParaboloid.cxx index b0621d3ba287e..dcc13d83897a1 100644 --- a/geom/geom/src/TGeoParaboloid.cxx +++ b/geom/geom/src/TGeoParaboloid.cxx @@ -10,23 +10,41 @@ *************************************************************************/ /** \class TGeoParaboloid -\ingroup Geometry_classes - -Paraboloid class. - -A paraboloid is the solid bounded by the following surfaces: - - 2 planes parallel with XY cutting the Z axis at Z=-dz and Z=+dz - - the surface of revolution of a parabola described by: - `z = a*(x*x + y*y) + b` - -The parameters a and b are automatically computed from: - - rlo - the radius of the circle of intersection between the - parabolic surface and the plane z = -dz - - rhi - the radius of the circle of intersection between the - parabolic surface and the plane z = +dz - - | -dz = a*rlo*rlo + b - | dz = a*rhi*rhi + b where: rlo != rhi, both >= 0 +\ingroup Shapes_classes + +A paraboloid is defined by the revolution surface generated by a +parabola and is bounded by two planes perpendicular to Z axis. The +parabola equation is taken in the form: `z = a·r2 + b`, where: +`r2 = x2 + y2`. Note the missing linear term (parabola symmetric with +respect to Z axis). + +The coefficients a and b are computed from the input values which are +the radii of the circular sections cut by the planes at `+/-dz`: + + - `-dz = a*r2low + b` + - ` dz = a*r2high + b` + +~~~{.cpp} +TGeoParaboloid(Double_t rlo,Double_t rhi,Double_t dz); +~~~ + +Begin_Macro +{ + new TGeoManager("parab", "paraboloid"); + TGeoMaterial *mat = new TGeoMaterial("Al", 26.98,13,2.7); + TGeoMedium *med = new TGeoMedium("MED",1,mat); + TGeoVolume *top = gGeoManager->MakeBox("TOP",med,100,100,100); + gGeoManager->SetTopVolume(top); + TGeoVolume *vol = gGeoManager->MakeParaboloid("PARAB",med,0, 40, 50); + TGeoParaboloid *par = (TGeoParaboloid*)vol->GetShape(); + top->AddNode(vol,1); + gGeoManager->CloseGeometry(); + gGeoManager->SetNsegments(80); + top->Draw(); + TView *view = gPad->GetView(); + view->ShowAxis(); +} +End_Macro */ #include diff --git a/geom/geom/src/TGeoPcon.cxx b/geom/geom/src/TGeoPcon.cxx index 490fbf5fa747f..2723e80c58030 100644 --- a/geom/geom/src/TGeoPcon.cxx +++ b/geom/geom/src/TGeoPcon.cxx @@ -11,17 +11,53 @@ *************************************************************************/ /** \class TGeoPcon -\ingroup Geometry_classes -A polycone. +\ingroup Shapes_classes -It has at least 9 parameters: - - the lower phi limit; - - the range in phi; - - the number of z planes (at least two) where the inner/outer - radii are changing; - - z coordinate, inner and outer radius for each z plane +A polycone is represented by a sequence of tubes/cones, glued together +at defined Z planes. The polycone might have a phi segmentation, which +globally applies to all the pieces. It has to be defined in two steps: -Begin_Macro(source) +1. First call the TGeoPcon constructor to define a polycone: + +~~~{.cpp} +TGeoPcon(Double_t phi1,Double_t dphi,Int_t nz +~~~ + + - `phi1:` starting phi angle in degrees + - `dphi:` total phi range + - `nz:` number of Z planes defining polycone sections (minimum 2) + +2. Define one by one all sections [0, nz-1] + +~~~{.cpp} +void TGeoPcon::DefineSection(Int_t i,Double_t z, +Double_t rmin, Double_t rmax); +~~~ + + - `i:` section index [0, nz-1] + - `z:` z coordinate of the section + - `rmin:` minimum radius corresponding too this section + - `rmax:` maximum radius. + +The first section (`i=0`) has to be positioned always the lowest Z +coordinate. It defines the radii of the first cone/tube segment at its +lower Z. The next section defines the end-cap of the first segment, but +it can represent also the beginning of the next one. Any discontinuity +in the radius has to be represented by a section defined at the same Z +coordinate as the previous one. The Z coordinates of all sections must +be sorted in increasing order. Any radius or Z coordinate of a given +plane have corresponding getters: + +~~~{.cpp} +Double_t TGeoPcon::GetRmin(Int_t i); +Double_t TGeoPcon::GetRmax(Int_t i); +Double_t TGeoPcon::GetZ(Int_t i); +~~~ + +Note that the last section should be defined last, since it triggers the +computation of the bounding box of the polycone. + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("pcon", "poza10"); diff --git a/geom/geom/src/TGeoPgon.cxx b/geom/geom/src/TGeoPgon.cxx index ecf4f1cbb7b4d..cc1a2855f3680 100644 --- a/geom/geom/src/TGeoPgon.cxx +++ b/geom/geom/src/TGeoPgon.cxx @@ -11,18 +11,15 @@ *************************************************************************/ /** \class TGeoPgon -\ingroup Geometry_classes - -A polygone. It has at least 10 parameters : - - the lower phi limit; - - the range in phi; - - the number of equal edges on each z plane; - - the number of z planes (at least two) where the inner/outer - radii are changing; - - z coordinate, inner and outer radius of the inscribed cercle - (distance from center to edges) for each z plane - -Begin_Macro(source) +\ingroup Shapes_classes + +Polygons are defined in the same way as polycones, the difference being +just that the segments between consecutive Z planes are regular +polygons. The phi segmentation is preserved and the shape is defined in +a similar manner, just that `rmin` and `rmax` represent the radii of the +circles inscribed in the inner/outer polygon. + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("pgon", "poza11"); @@ -45,6 +42,16 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + +The constructor of a polygon has the form: + +~~~{.cpp} +TGeoPgon(Double_t phi1,Double_t dphi,Int_t nedges,Int_t nz); +~~~ + +The extra parameter `nedges` represent the number of equal edges of the +polygons, between `phi1` and `phi1+dphi.` + */ diff --git a/geom/geom/src/TGeoPolygon.cxx b/geom/geom/src/TGeoPolygon.cxx index 76dfdef6515c1..8e5216caf3886 100644 --- a/geom/geom/src/TGeoPolygon.cxx +++ b/geom/geom/src/TGeoPolygon.cxx @@ -10,7 +10,7 @@ *************************************************************************/ /** \class TGeoPolygon -\ingroup Geometry_classes +\ingroup Shapes_classes An arbitrary polygon defined by vertices. The vertices have to be defined CLOCKWISE in the XY plane, making either a convex diff --git a/geom/geom/src/TGeoShape.cxx b/geom/geom/src/TGeoShape.cxx index 41504bc2c953d..acb7cb510c871 100644 --- a/geom/geom/src/TGeoShape.cxx +++ b/geom/geom/src/TGeoShape.cxx @@ -10,7 +10,7 @@ *************************************************************************/ /** \class TGeoShape -\ingroup Geometry_classes +\ingroup Shapes_classes Base abstract class for all shapes. Shapes are geometrical objects that provide the basic modelling @@ -43,7 +43,7 @@ shape topologies and combinations. Named shapes register themselves to the manager class at creation time. The manager is responsible for their final deletion. Shapes can be created using their -default constructor if their retrieval by name is not needed, but in this case +default constructor if their retrieval by name is not needed, but in this case they are owned by the user. A shape may be referenced by several volumes, therefore its deletion is not possible once volumes were defined based on it. @@ -138,7 +138,7 @@ is always invoked in a generic way from the volume level. Details on how to do that can be found in TGeoVolume class. One can see how all division options are interpreted and which is their result inside specific shape classes. -\image html geom_t_shape.png +\image html geom_t_shape.png width=600px */ #include "TObjArray.h" diff --git a/geom/geom/src/TGeoShapeAssembly.cxx b/geom/geom/src/TGeoShapeAssembly.cxx index 12afe5211ff8e..069415ae97f88 100644 --- a/geom/geom/src/TGeoShapeAssembly.cxx +++ b/geom/geom/src/TGeoShapeAssembly.cxx @@ -20,7 +20,7 @@ #include "TMath.h" /** \class TGeoShapeAssembly -\ingroup Geometry_classes +\ingroup Shapes_classes The shape encapsulating an assembly (union) of volumes. Automatically created by TGeoVolumeAssembly class diff --git a/geom/geom/src/TGeoSphere.cxx b/geom/geom/src/TGeoSphere.cxx index 9455d349b22eb..4587e034aebd6 100644 --- a/geom/geom/src/TGeoSphere.cxx +++ b/geom/geom/src/TGeoSphere.cxx @@ -11,17 +11,18 @@ *************************************************************************/ /** \class TGeoSphere -\ingroup Geometry_classes +\ingroup Shapes_classes -Spherical shell class. It takes 6 parameters : +TGeoSphere are not just balls having internal and external +radii, but sectors of a sphere having defined theta and phi ranges. The +TGeoSphere class has the following constructor. - - spherical shell class. It takes 6 parameters : - - inner and outer radius Rmin, Rmax - - the theta limits Tmin, Tmax - - the phi limits Pmin, Pmax (the sector in phi is considered - starting from Pmin to Pmax counter-clockwise +~~~{.cpp} +TGeoSphere(Double_t rmin,Double_t rmax,Double_t theta1, +Double_t theta2,Double_t phi1, Double_t phi2); +~~~ -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("sphere", "poza7"); @@ -39,6 +40,12 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + + - `rmin: ` internal radius of the spherical sector + - `rmax:` external radius + - `theta1:` starting theta value [0, 180) in degrees + - `theta2:` ending theta value (0, 180] in degrees (`theta1 diff --git a/geom/geom/src/TGeoTorus.cxx b/geom/geom/src/TGeoTorus.cxx index 7f6c1b86464de..d2757c926a1fd 100644 --- a/geom/geom/src/TGeoTorus.cxx +++ b/geom/geom/src/TGeoTorus.cxx @@ -10,17 +10,11 @@ *************************************************************************/ /** \class TGeoTorus -\ingroup Geometry_classes +\ingroup Shapes_classes -Torus segment class. A torus has 5 parameters : - - R - axial radius - - Rmin - inner radius - - Rmax - outer radius - - Phi1 - starting phi - - Dphi - phi extent +The torus is defined by its axial radius, its inner and outer radius. - -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("torus", "poza2"); @@ -37,6 +31,20 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + +It may have a `phi `range: + +~~~{.cpp} +TGeoTorus(Double_t R,Double_t Rmin,Double_t Rmax,Double_t Phi1, +Double_t Dphi); +~~~ + + - `R:` axial radius of the torus + - `Rmin:` inner radius + - `Rmax:` outer radius + - `Phi1:` starting phi angle + - `Dphi:` total phi range + */ #include diff --git a/geom/geom/src/TGeoTrd1.cxx b/geom/geom/src/TGeoTrd1.cxx index 7567257cf1d7f..9576a533ff158 100644 --- a/geom/geom/src/TGeoTrd1.cxx +++ b/geom/geom/src/TGeoTrd1.cxx @@ -11,10 +11,15 @@ *************************************************************************/ /** \class TGeoTrd1 -\ingroup Geometry_classes -A trapezoid with only x length varying with z. It has 4 -parameters, the half length in x at the low z surface, that at the -high z surface, the half length in y, and in z +\ingroup Trapezoids + +A trapezoid with only X varying with Z. It is defined by the +half-length in Z, the half-length in X at the lowest and highest Z +planes and the half-length in Y: + +~~~ {.cpp} +TGeoTrd1(Double_t dx1,Double_t dx2,Double_t dy,Double_t dz); +~~~ Begin_Macro { diff --git a/geom/geom/src/TGeoTrd2.cxx b/geom/geom/src/TGeoTrd2.cxx index 332a50e412a5a..eb18695d98537 100644 --- a/geom/geom/src/TGeoTrd2.cxx +++ b/geom/geom/src/TGeoTrd2.cxx @@ -11,12 +11,12 @@ *************************************************************************/ /** \class TGeoTrd2 -\ingroup Geometry_classes -A trapezoid with both x and y lengths varying with z. It -has 5 parameters, the half lengths in x at -dz and +dz, the half -lengths in y at -dz and +dz, and the half length in z (dz). +\ingroup Trapezoids -Begin_Macro(source) +A trapezoid with only X varying with Z. It is defined by the +half-length in Z, the half-length in X at the lowest and highest Z +planes and the half-length in Y: +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("trd2", "poza9"); @@ -33,6 +33,7 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + */ #include diff --git a/geom/geom/src/TGeoTube.cxx b/geom/geom/src/TGeoTube.cxx index b5a4e5aeeff84..7fb9382210530 100644 --- a/geom/geom/src/TGeoTube.cxx +++ b/geom/geom/src/TGeoTube.cxx @@ -11,13 +11,18 @@ *************************************************************************/ /** \class TGeoTube -\ingroup Geometry_classes +\ingroup Tubes Cylindrical tube class. A tube has 3 parameters : - - Rmin - minimum radius - - Rmax - maximum radius - - dz - half length -Begin_Macro(source) + - `rmin` : minimum radius + - `rmax` : maximum radius + - `dz` : half length + +~~~ {.cpp} +TGeoTube(Double_t rmin,Double_t rmax,Double_t dz); +~~~ + +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("tube", "poza2"); @@ -38,15 +43,24 @@ End_Macro */ /** \class TGeoTubeSeg -\ingroup Geometry_classes +\ingroup Tubes + +A tube segment is a tube having a range in phi. The tube segment class +derives from **`TGeoTube`**, having 2 extra parameters: `phi1` and +`phi2`. + +~~~ {.cpp} +TGeoTubeSeg(Double_t rmin,Double_t rmax,Double_t dz, +Double_t phi1,Double_t phi2); +~~~ + +Here `phi1` and `phi2 `are the starting and ending `phi `values in +degrees. The `general phi convention` is that the shape ranges from +`phi1` to `phi2` going counterclockwise. The angles can be defined with +either negative or positive values. They are stored such that `phi1` is +converted to `[0,360]` and `phi2 > phi1`. -A phi segment of a tube. Has 5 parameters : - - the same 3 as a tube; - - first phi limit (in degrees) - - second phi limit -The segment will be be placed from the first angle (first phi limit) -to the second angle (second phi limit) -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("tubeseg", "poza3"); @@ -63,21 +77,22 @@ Begin_Macro(source) TView *view = gPad->GetView(); view->ShowAxis(); } - End_Macro */ /** \class TGeoCtub -\ingroup Geometry_classes +\ingroup Tubes + +The cut tubes constructor has the form: -A tube segment cut with 2 planes. Has 11 parameters : - - the same 5 as a tube segment; - - x, y, z components of the normal to the -dZ cut plane in - point (0, 0, -dZ); - - x, y, z components of the normal to the +dZ cut plane in - point (0, 0, dZ); +~~~ {.cpp} +TGeoCtub(Double_t rmin,Double_t rmax,Double_t dz, +Double_t phi1,Double_t phi2, +Double_t nxlow,Double_t nylow,Double_t nzlow, Double_t nxhi, +Double_t nyhi,Double_t nzhi); +~~~ -Begin_Macro(source) +Begin_Macro { TCanvas *c = new TCanvas("c", "c",0,0,600,600); new TGeoManager("ctub", "poza3"); @@ -107,6 +122,13 @@ Begin_Macro(source) view->ShowAxis(); } End_Macro + +A cut tube is a tube segment cut with two planes. The centers of the 2 +sections are positioned at `dZ`. Each cut plane is therefore defined by +a point `(0,0,dZ)` and its normal unit vector pointing outside the +shape: + +`Nlow=(Nx,Ny,Nz<0)`, `Nhigh=(Nx',Ny',Nz'>0)`. */ #include diff --git a/geom/geom/src/TGeoVolume.cxx b/geom/geom/src/TGeoVolume.cxx index bf42276771130..ddb8440e58897 100644 --- a/geom/geom/src/TGeoVolume.cxx +++ b/geom/geom/src/TGeoVolume.cxx @@ -11,7 +11,7 @@ *************************************************************************/ /** \class TGeoVolume -\ingroup Geometry_classes +\ingroup Shapes_classes TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes @@ -107,7 +107,7 @@ elements in the hierarchy of volumes. Nodes are unique and distinct geometrical objects ONLY from their container point of view. Since volumes can be replicated in the geometry, the same node may be found on different branches. -\image html geom_t_example.png +\image html geom_t_example.png width=600px An important observation is that volume objects are owned by the TGeoManager class. This stores a list of all volumes in the geometry, that is cleaned diff --git a/geom/geom/src/TGeoXtru.cxx b/geom/geom/src/TGeoXtru.cxx index 3f355b50c08b6..0ec3193e03561 100644 --- a/geom/geom/src/TGeoXtru.cxx +++ b/geom/geom/src/TGeoXtru.cxx @@ -10,46 +10,81 @@ *************************************************************************/ /** \class TGeoXtru -\ingroup Geometry_classes - An extrusion with fixed outline shape in x-y and a sequence -of z extents (segments). The overall scale of the outline scales -linearly between z points and the center can have an x-y offset. +\ingroup Shapes_classes +A TGeoXtru shape is represented by the extrusion of an arbitrary +polygon with fixed outline between several Z sections. Each Z section is +a scaled version of the same "blueprint" polygon. Different global XY +translations are allowed from section to section. Corresponding polygon +vertices from consecutive sections are connected. -Based on the initial implementation of R. Hatcher +An extruded polygon can be created using the constructor: -### Creation of TGeoXtru shape +~~~ {.cpp} +TGeoXtru::TGeoXtru(Int_t nplanes); +~~~ -A TGeoXtru represents a polygonal extrusion. It is defined by the: -1. 'Blueprint' of the arbitrary polygon representing any Z section. This - is an arbitrary polygon (convex or not) defined by the X/Y positions of - its vertices. -1. A sequence of Z sections ordered on the Z axis. Each section defines the - 'actual' parameters of the polygon at a given Z. The sections may be - translated with respect to the blueprint and/or scaled. The TGeoXtru - segment in between 2 Z sections is a solid represented by the linear - extrusion between the 2 polygons. Two consecutive sections may be defined - at same Z position. + - `nplanes: `number of Z sections (minimum 2) -1. `TGeoXtru *xtru = TGeoXtru(Int_t nz);` - - where nz=number of Z planes - -2. `Double_t x[nvertices]; // array of X positions of blueprint polygon vertices` - - `Double_t y[nvertices]; // array of Y positions of blueprint polygon vertices` - -3. `xtru->DefinePolygon(nvertices,x,y);` - -4. `DefineSection(0, z0, x0, y0, scale0); // Z position, offset and scale for first section` - - `DefineSection(1, z1, x1, y1, scale1); // -''- second section` - `....` - `DefineSection(nz-1, zn, xn, yn, scalen); // parameters for last section` - -#### NOTES -Currently navigation functionality not fully implemented (only Contains()). -Decomposition in concave polygons not implemented - drawing in solid mode -within x3d produces incorrect end-faces +Begin_Macro +{ + new TGeoManager("xtru", "poza12"); + TGeoMaterial *mat = new TGeoMaterial("Al", 26.98,13,2.7); + TGeoMedium *med = new TGeoMedium("MED",1,mat); + TGeoVolume *top = gGeoManager->MakeBox("TOP",med,100,100,100); + gGeoManager->SetTopVolume(top); + TGeoVolume *vol = gGeoManager->MakeXtru("XTRU",med,4); + TGeoXtru *xtru = (TGeoXtru*)vol->GetShape(); + Double_t x[8] = {-30,-30,30,30,15,15,-15,-15}; + Double_t y[8] = {-30,30,30,-30,-30,15,15,-30}; + xtru->DefinePolygon(8,x,y); + xtru->DefineSection(0,-40, -20., 10., 1.5); + xtru->DefineSection(1, 10, 0., 0., 0.5); + xtru->DefineSection(2, 10, 0., 0., 0.7); + xtru->DefineSection(3, 40, 10., 20., 0.9); + top->AddNode(vol,1); + gGeoManager->CloseGeometry(); + gGeoManager->SetNsegments(80); + top->Draw(); + TView *view = gPad->GetView(); + view->ShowAxis(); +} +End_Macro + +The lists of X and Y positions for all vertices have to be provided for +the "blueprint" polygon: + +~~~{.cpp} +TGeoXtru::DefinePolygon (Int_t nvertices, Double_t *xv, +Double_t *yv); +~~~ + + - `nvertices: `number of vertices of the polygon + - `xv,yv: `arrays of X and Y coordinates for polygon vertices + +The method creates an object of the class **`TGeoPolygon`** for which +the convexity is automatically determined . The polygon is decomposed +into convex polygons if needed. + +Next step is to define the Z positions for each section plane as well as +the XY offset and scaling for the corresponding polygons. + +~~~{.cpp} +TGeoXtru::DefineSection(Int_t snum,Double_t zsection,Double_t x0, +Double_t y0, Double_t scale); +~~~ + + - `snum: `Z section index (0, nplanes-1). The section with + `snum = nplanes-1` must be defined last and triggers the computation + of the bounding box for the whole shape + - `zsection: `Z position of section `snum`. Sections must be defined + in increasing order of Z (e.g. `snum=0` correspond to the minimum Z + and `snum=nplanes-1` to the maximum one). + - `x0,y0: `offset of section `snum` with respect to the local shape + reference frame `T` + - `scale: `factor that multiplies the X/Y coordinates of each vertex + of the polygon at section `snum`: + - `x[ivert] = x0 + scale*xv[ivert]` + - `y[ivert] = y0 + scale*yv[ivert]` */ #include "TGeoXtru.h" diff --git a/geom/geompainter/src/TGeoChecker.cxx b/geom/geompainter/src/TGeoChecker.cxx index 9de7e52121061..de9247bd8af04 100644 --- a/geom/geompainter/src/TGeoChecker.cxx +++ b/geom/geompainter/src/TGeoChecker.cxx @@ -11,7 +11,7 @@ *************************************************************************/ /** \class TGeoChecker -\ingroup Geometry_classes +\ingroup Geometry_painter Geometry checking package. diff --git a/geom/geompainter/src/TGeoOverlap.cxx b/geom/geompainter/src/TGeoOverlap.cxx index ebd52e7756c8e..adc453d8a5c96 100644 --- a/geom/geompainter/src/TGeoOverlap.cxx +++ b/geom/geompainter/src/TGeoOverlap.cxx @@ -26,7 +26,7 @@ ClassImp(TGeoOverlap); /** \class TGeoOverlap -\ingroup Geometry_classes +\ingroup Geometry_painter Base class describing geometry overlaps. Overlaps apply to the nodes contained inside a volume. These should not overlap to diff --git a/geom/geompainter/src/TGeoPainter.cxx b/geom/geompainter/src/TGeoPainter.cxx index 7aeec016f1175..e48a9532b4eb5 100644 --- a/geom/geompainter/src/TGeoPainter.cxx +++ b/geom/geompainter/src/TGeoPainter.cxx @@ -9,7 +9,7 @@ *************************************************************************/ /** \class TGeoPainter -\ingroup Geometry_classes +\ingroup Geometry_painter Class implementing all draw interfaces for a generic 3D viewer using TBuffer3D mechanism. diff --git a/geom/geompainter/src/TGeoTrack.cxx b/geom/geompainter/src/TGeoTrack.cxx index 5bc62e8debd08..c2908ea0c2e5c 100644 --- a/geom/geompainter/src/TGeoTrack.cxx +++ b/geom/geompainter/src/TGeoTrack.cxx @@ -19,7 +19,7 @@ #include "TGeoTrack.h" /** \class TGeoTrack -\ingroup Geometry_classes +\ingroup Geometry_painter \deprecated Use of TGeoTrack is deprecated. For the event display please switch to TEve (using TEveTracks From 75b2b7dcfd4f661eb2a0ea647592f548e7326ddb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 11:42:16 +0200 Subject: [PATCH 283/577] [VecOps] Add handy aliases RVecI, RVecD, RVecF --- math/vecops/inc/ROOT/RVec.hxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 4badba6114c46..faaab6d6542ea 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1263,6 +1263,10 @@ Its storage is contiguous in memory and its interface is designed such to resemb of the stl vector. In addition the interface features methods and external functions to ease the manipulation and analysis of the data in the RVec. +\note ROOT::VecOps::RVec can also be spelled simply ROOT::RVec, and shorthand aliases such as ROOT::RVecI, ROOT::RVecD +or ROOT::RVecF are available as template instantiations of RVec of fundamental types (int, double, float respectively +for these examples. + \note RVec does not attempt to be exception safe. Exceptions thrown by element constructors during insertions, swaps or other operations will be propagated potentially leaving the RVec object in an invalid state. @@ -3008,6 +3012,17 @@ RVEC_EXTERN_VDT_UNARY_FUNCTION(double, fast_atan) // Allow to use RVec as ROOT::RVec using ROOT::VecOps::RVec; +using RVecB = ROOT::VecOps::RVec; +using RVecC = ROOT::VecOps::RVec; +using RVecD = ROOT::VecOps::RVec; +using RVecF = ROOT::VecOps::RVec; +using RVecI = ROOT::VecOps::RVec; +using RVecL = ROOT::VecOps::RVec; +using RVecLL = ROOT::VecOps::RVec; +using RVecU = ROOT::VecOps::RVec; +using RVecUL = ROOT::VecOps::RVec; +using RVecULL = ROOT::VecOps::RVec; + } // End of ROOT NS #endif // ROOT_RVEC From 691499533bf9e783ba345ffe39db183f90fe78ec Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 29 Sep 2021 11:49:01 +0200 Subject: [PATCH 284/577] [VecOps][NFC] Showcase RVecI, RVecD, ... aliases in docs --- math/vecops/inc/ROOT/RVec.hxx | 89 +++++++++++++++++------------------ 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index faaab6d6542ea..d13b180154b7b 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1341,7 +1341,7 @@ RVec v{6., 4., 5.}; std::sort(v.begin(), v.end()); ~~~ -For convinience, helpers are provided too: +For convenience, helpers are provided too: ~~~{.cpp} auto sorted_v = Sort(v); auto reversed_v = Reverse(v); @@ -1352,7 +1352,7 @@ auto reversed_v = Reverse(v); It is also possible to manipulated the RVecs acting on their indices. For example, the following syntax ~~~{.cpp} -RVec v0 {9., 7., 8.}; +RVecD v0 {9., 7., 8.}; auto v1 = Take(v0, {1, 2, 0}); ~~~ will yield a new RVec the content of which is the first, second and zeroth element of @@ -1369,7 +1369,7 @@ The `Take` utility allows to extract portions of the `RVec`. The content to be * can be specified with an `RVec` of indices or an integer. If the integer is negative, elements will be picked starting from the end of the container: ~~~{.cpp} -RVec vf {1.f, 2.f, 3.f, 4.f}; +RVecF vf {1.f, 2.f, 3.f, 4.f}; auto vf_1 = Take(vf, {1, 3}); // The content is {2.f, 4.f} auto vf_2 = Take(vf, 2); // The content is {1.f, 2.f} auto vf_3 = Take(vf, -3); // The content is {2.f, 3.f, 4.f} @@ -1391,8 +1391,7 @@ for which the energy is greater than 200 MeV. The code required would just be: ~~~{.cpp} RDataFrame d("mytree", "myfile.root"); -using doubles = RVec; -auto cutPt = [](doubles &pxs, doubles &pys, doubles &Es) { +auto cutPt = [](RVecD &pxs, RVecD &pys, RVecD &Es) { auto all_pts = sqrt(pxs * pxs + pys * pys); auto good_pts = all_pts[Es > 200.]; return good_pts; @@ -1813,7 +1812,7 @@ auto Dot(const RVec &v0, const RVec &v1) -> decltype(v0[0] * v1[0]) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 3.f}; +/// RVecF v {1.f, 2.f, 3.f}; /// auto v_sum = Sum(v); /// v_sum /// // (float) 6.f @@ -1843,7 +1842,7 @@ R Sum(const RVec &v, const R zero = R(0)) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_mean = Mean(v); /// v_mean /// // (double) 2.3333333 @@ -1861,7 +1860,7 @@ double Mean(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_mean_f = Mean(v, 0.f); /// v_mean_f /// // (float) 2.33333f @@ -1891,7 +1890,7 @@ R Mean(const RVec &v, const R zero) /// Example code, at the ROOT prompt: /// ~~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_max = Max(v) /// v_max /// (float) 4.f @@ -1907,7 +1906,7 @@ T Max(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_min = Min(v) /// v_min /// (float) 1.f @@ -1925,7 +1924,7 @@ T Min(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_argmax = ArgMax(v); /// v_argmax /// // (int) 2 @@ -1943,7 +1942,7 @@ std::size_t ArgMax(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_argmin = ArgMin(v); /// v_argmin /// // (int) 0 @@ -1960,7 +1959,7 @@ std::size_t ArgMin(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_var = Var(v); /// v_var /// // (double) 2.3333333 @@ -1984,7 +1983,7 @@ double Var(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_sd = StdDev(v); /// v_sd /// // (double) 1.5275252 @@ -2000,14 +1999,14 @@ double StdDev(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1.f, 2.f, 4.f}; +/// RVecF v {1.f, 2.f, 4.f}; /// auto v_square = Map(v, [](float f){return f* 2.f;}); /// v_square /// // (ROOT::VecOps::RVec &) { 2.00000f, 4.00000f, 8.00000f } /// -/// RVec x({1.f, 2.f, 3.f}); -/// RVec y({4.f, 5.f, 6.f}); -/// RVec z({7.f, 8.f, 9.f}); +/// RVecF x({1.f, 2.f, 3.f}); +/// RVecF y({4.f, 5.f, 6.f}); +/// RVecF z({7.f, 8.f, 9.f}); /// auto mod = [](float x, float y, float z) { return sqrt(x * x + y * y + z * z); }; /// auto v_mod = Map(x, y, z, mod); /// v_mod @@ -2033,7 +2032,7 @@ auto Map(Args &&... args) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1, 2, 4}; +/// RVecI v {1, 2, 4}; /// auto v_even = Filter(v, [](int i){return 0 == i%2;}); /// v_even /// // (ROOT::VecOps::RVec &) { 2, 4 } @@ -2056,7 +2055,7 @@ RVec Filter(const RVec &v, F &&f) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {0, 1, 0}; +/// RVecI v {0, 1, 0}; /// auto anyTrue = Any(v); /// anyTrue /// // (bool) true @@ -2075,7 +2074,7 @@ auto Any(const RVec &v) -> decltype(v[0] == true) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {0, 1, 0}; +/// RVecI v {0, 1, 0}; /// auto allTrue = All(v); /// allTrue /// // (bool) false @@ -2100,7 +2099,7 @@ void swap(RVec &lhs, RVec &rhs) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto sortIndices = Argsort(v); /// // (ROOT::VecOps::RVec &) { 2, 0, 1 } /// auto values = Take(v, sortIndices) @@ -2121,7 +2120,7 @@ RVec::size_type> Argsort(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto sortIndices = Argsort(v, [](double x, double y) {return x > y;}) /// // (ROOT::VecOps::RVec &) { 1, 0, 2 } /// auto values = Take(v, sortIndices) @@ -2143,7 +2142,7 @@ RVec::size_type> Argsort(const RVec &v, Compare &&c) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto vTaken = Take(v, {0,2}); /// vTaken /// // (ROOT::VecOps::RVec) { 2.0000000, 1.0000000 } @@ -2166,7 +2165,7 @@ RVec Take(const RVec &v, const RVec::size_type> &i) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto firstTwo = Take(v, 2); /// firstTwo /// // (ROOT::VecOps::RVec) { 2.0000000, 3.0000000 } @@ -2227,7 +2226,7 @@ RVec Drop(const RVec &v, RVec::size_type> idxs) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto v_reverse = Reverse(v); /// v_reverse /// // (ROOT::VecOps::RVec) { 1.0000000, 3.0000000, 2.0000000 } @@ -2248,7 +2247,7 @@ RVec Reverse(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto v_sorted = Sort(v); /// v_sorted /// // (ROOT::VecOps::RVec) { 1.0000000, 2.0000000, 3.0000000 } @@ -2273,7 +2272,7 @@ RVec Sort(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 3., 1.}; +/// RVecD v {2., 3., 1.}; /// auto v_sorted = Sort(v, [](double x, double y) {return 1/x < 1/y;}); /// v_sorted /// // (ROOT::VecOps::RVec) { 3.0000000, 2.0000000, 1.0000000 } @@ -2323,8 +2322,8 @@ inline RVec> Combinations(const std::size_t size1, const std:: /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v1 {1., 2., 3.}; -/// RVec v2 {-4., -5.}; +/// RVecD v1 {1., 2., 3.}; +/// RVecD v2 {-4., -5.}; /// auto comb_idx = Combinations(v1, v2); /// comb_idx /// // (ROOT::VecOps::RVec::size_type> >) { { 0, 0, 1, 1, 2, 2 }, { 0, 1, @@ -2341,7 +2340,7 @@ RVec::size_type>> Combinations(const RVec &v1, const /// /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {1., 2., 3., 4.}; +/// RVecD v {1., 2., 3., 4.}; /// auto v_1 = Combinations(v, 1); /// v_1 /// (ROOT::VecOps::RVec::size_type> >) { { 0, 1, 2, 3 } } @@ -2396,7 +2395,7 @@ RVec::size_type>> Combinations(const RVec& v, const typ /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v {2., 0., 3., 0., 1.}; +/// RVecD v {2., 0., 3., 0., 1.}; /// auto nonzero_idx = Nonzero(v); /// nonzero_idx /// // (ROOT::VecOps::RVec::size_type>) { 0, 2, 4 } @@ -2426,8 +2425,8 @@ RVec::size_type> Nonzero(const RVec &v) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v1 {1., 2., 3.}; -/// RVec v2 {-4., -5., 2., 1.}; +/// RVecD v1 {1., 2., 3.}; +/// RVecD v2 {-4., -5., 2., 1.}; /// auto v1_intersect_v2 = Intersect(v1, v2); /// v1_intersect_v2 /// // (ROOT::VecOps::RVec) { 1.0000000, 2.0000000 } @@ -2457,8 +2456,8 @@ RVec Intersect(const RVec& v1, const RVec& v2, bool v2_is_sorted = fals /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v1 {1., 2., 3.}; -/// RVec v2 {-1., -2., -3.}; +/// RVecD v1 {1., 2., 3.}; +/// RVecD v2 {-1., -2., -3.}; /// auto c = v1 > 1; /// c /// // (ROOT::VecOps::RVec &) { 0, 1, 1 } @@ -2485,7 +2484,7 @@ RVec Where(const RVec& c, const RVec& v1, const RVec& v2) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec v1 {1., 2., 3.}; +/// RVecD v1 {1., 2., 3.}; /// double v2 = 4.; /// auto c = v1 > 1; /// c @@ -2514,7 +2513,7 @@ RVec Where(const RVec& c, const RVec& v1, T v2) /// ~~~{.cpp} /// using namespace ROOT::VecOps; /// double v1 = 4.; -/// RVec v2 {1., 2., 3.}; +/// RVecD v2 {1., 2., 3.}; /// auto c = v2 > 1; /// c /// // (ROOT::VecOps::RVec &) { 0, 1, 1 } @@ -2543,7 +2542,7 @@ RVec Where(const RVec& c, T v1, const RVec& v2) /// using namespace ROOT::VecOps; /// double v1 = 4.; /// double v2 = 2.; -/// RVec c {0, 1, 1}; +/// RVecI c {0, 1, 1}; /// auto if_c_v1_else_v2 = Where(c, v1, v2); /// if_c_v1_else_v2 /// // (ROOT::VecOps::RVec) { 2.0000000, 4.0000000, 4.0000000 } @@ -2566,8 +2565,8 @@ RVec Where(const RVec& c, T v1, T v2) /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec rvf {0.f, 1.f, 2.f}; -/// RVec rvi {7, 8, 9}; +/// RVecF rvf {0.f, 1.f, 2.f}; +/// RVecI rvi {7, 8, 9}; /// Concatenate(rvf, rvi); /// // (ROOT::VecOps::RVec) { 2.0000000, 4.0000000, 4.0000000 } /// ~~~ @@ -2782,10 +2781,10 @@ T InvariantMass(const RVec& pt, const RVec& eta, const RVec& phi, const /// Example code, at the ROOT prompt: /// ~~~{.cpp} /// using namespace ROOT::VecOps; -/// RVec pts = {15.5, 34.32, 12.95}; -/// RVec etas = {0.3, 2.2, 1.32}; -/// RVec phis = {0.1, 3.02, 2.2}; -/// RVec masses = {105.65, 105.65, 105.65}; +/// RVecF pts = {15.5, 34.32, 12.95}; +/// RVecF etas = {0.3, 2.2, 1.32}; +/// RVecF phis = {0.1, 3.02, 2.2}; +/// RVecF masses = {105.65, 105.65, 105.65}; /// auto fourVecs = Construct(pts, etas, phis, masses); /// cout << fourVecs << endl; /// // { (15.5,0.3,0.1,105.65), (34.32,2.2,3.02,105.65), (12.95,1.32,2.2,105.65) } From 97982b980cf43205de97a99c758ea6b22a85e9fc Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 10:27:39 +0200 Subject: [PATCH 285/577] [VecOps] Prefer RVecF, RVecD aliases in tutorials ...and add a little bit of test coverage. --- math/vecops/test/vecops_rvec.cxx | 4 ++-- tutorials/vecops/vo002_VectorCalculations.C | 6 +++--- tutorials/vecops/vo003_LogicalOperations.C | 10 +++++----- tutorials/vecops/vo004_SortAndSelect.C | 6 +++--- tutorials/vecops/vo004_SortAndSelect.py | 4 ++-- tutorials/vecops/vo005_Combinations.C | 6 +++--- tutorials/vecops/vo005_Combinations.py | 6 +++--- tutorials/vecops/vo006_IndexManipulation.C | 4 ++-- tutorials/vecops/vo007_PhysicsHelpers.C | 20 ++++++++++---------- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx index 5589e94e8e0fa..6894589550e1b 100644 --- a/math/vecops/test/vecops_rvec.cxx +++ b/math/vecops/test/vecops_rvec.cxx @@ -15,7 +15,7 @@ using namespace ROOT::VecOps; -void CheckEqual(const RVec &a, const RVec &b, std::string_view msg = "") +void CheckEqual(const ROOT::RVecF &a, const ROOT::RVecF &b, std::string_view msg = "") { const auto asize = a.size(); const auto bsize = b.size(); @@ -25,7 +25,7 @@ void CheckEqual(const RVec &a, const RVec &b, std::string_view msg } } -void CheckEqual(const RVec &a, const RVec &b, std::string_view msg = "") +void CheckEqual(const ROOT::RVecD &a, const ROOT::RVecD &b, std::string_view msg = "") { const auto asize = a.size(); const auto bsize = b.size(); diff --git a/tutorials/vecops/vo002_VectorCalculations.C b/tutorials/vecops/vo002_VectorCalculations.C index 0b7ee0ac77b74..ade87e07d94c9 100644 --- a/tutorials/vecops/vo002_VectorCalculations.C +++ b/tutorials/vecops/vo002_VectorCalculations.C @@ -16,9 +16,9 @@ void vo002_VectorCalculations() { // Operations on RVec instances are made to be *fast* (vectorisation is exploited) - // and easy to use. - RVec v1{1., 2., 3.}; - RVec v2{4., 5., 6.}; + // and easy to use. RVecF, RVecD, RVecI, ..., are handy aliases for RVec, RVec, RVec, ... + ROOT::RVecF v1{1., 2., 3.}; + ROOT::RVecF v2{4., 5., 6.}; // Arithmetic operations are to be intended on pairs of elements with identical index auto v_sum = v1 + v2; diff --git a/tutorials/vecops/vo003_LogicalOperations.C b/tutorials/vecops/vo003_LogicalOperations.C index 647f820184d70..74dd8f1820c27 100644 --- a/tutorials/vecops/vo003_LogicalOperations.C +++ b/tutorials/vecops/vo003_LogicalOperations.C @@ -16,8 +16,8 @@ void vo003_LogicalOperations() { // Logical operations on RVec instances are made to be very easy to use. - RVec v1{1., 2., 3.}; - RVec v2{3., 2., 1.}; + ROOT::RVecD v1{1., 2., 3.}; + ROOT::RVecD v2{3., 2., 1.}; // Let's start with operations which act element by element. In this case // we expext a RVec which holds {1. > 3., 2. > 2., 3. > 1.}, i.e. {1, 0, 0}: @@ -38,14 +38,14 @@ void vo003_LogicalOperations() // Selections on the RVec contents can be applied with the "square brackets" operator, // which is not only a way to access the content of the RVec. // This operation can change the size of the RVec. - RVec v{1., 2., 3., 4., 5.}; + ROOT::RVecD v{1., 2., 3., 4., 5.}; auto v_filtered = v[v > 3.]; std::cout << "v = " << v << ". v[ v > 3. ] = " << v_filtered << std::endl; // This filtering operation can be particularely useful when cleaning collections of // objects coming from HEP events. For example: - RVec mu_pt{15., 12., 10.6, 2.3, 4., 3.}; - RVec mu_eta{1.2, -0.2, 4.2, -5.3, 0.4, -2.}; + ROOT::RVecD mu_pt{15., 12., 10.6, 2.3, 4., 3.}; + ROOT::RVecD mu_eta{1.2, -0.2, 4.2, -5.3, 0.4, -2.}; // Suppose the pts of the muons with a pt greater than 10 and eta smaller than 2.1 are needed: auto good_mu_pt = mu_pt[mu_pt > 10 && abs(mu_eta) < 2.1]; diff --git a/tutorials/vecops/vo004_SortAndSelect.C b/tutorials/vecops/vo004_SortAndSelect.C index f44604770d326..bb7442338c646 100644 --- a/tutorials/vecops/vo004_SortAndSelect.C +++ b/tutorials/vecops/vo004_SortAndSelect.C @@ -16,8 +16,8 @@ void vo004_SortAndSelect() { // Because RVec implements an iterator, the class is fully compatible with // the sorting algorithms in the standard library. - RVec v1{6., 4., 5.}; - RVec v2(v1); + ROOT::RVecD v1{6., 4., 5.}; + ROOT::RVecD v2(v1); std::sort(v2.begin(), v2.end()); std::cout << "Sort vector " << v1 << ": " << v2 << std::endl; @@ -35,7 +35,7 @@ void vo004_SortAndSelect() auto i = Argsort(v1); std::cout << "Indices that sort the vector " << v1 << ": " << i << std::endl; - RVec v5{9., 7., 8.}; + ROOT::RVecD v5{9., 7., 8.}; auto v6 = Take(v5, i); std::cout << "Sort vector " << v5 << " respective to the previously" << " determined indices: " << v6 << std::endl; diff --git a/tutorials/vecops/vo004_SortAndSelect.py b/tutorials/vecops/vo004_SortAndSelect.py index d056d22ff90c9..792f623fe0aed 100644 --- a/tutorials/vecops/vo004_SortAndSelect.py +++ b/tutorials/vecops/vo004_SortAndSelect.py @@ -15,7 +15,7 @@ # RVec can be sorted in Python with the inbuilt sorting function because # PyROOT implements a Python iterator -v1 = RVec("double")(3) +v1 = ROOT.RVecD(3) v1[0], v1[1], v1[2] = 6, 4, 5 v2 = sorted(v1) print("Sort vector {}: {}".format(v1, v2)) @@ -34,7 +34,7 @@ v2 = Argsort(v1) print("Indices that sort the vector {}: {}".format(v1, v2)) -v3 = RVec("double")(3) +v3 = ROOT.RVecD(3) v3[0], v3[1], v3[2] = 9, 7, 8 v4 = Take(v3, v2) print("Sort vector {} respective to the previously determined indices: {}".format(v3, v4)) diff --git a/tutorials/vecops/vo005_Combinations.C b/tutorials/vecops/vo005_Combinations.C index 12369ffe9e18b..b4c906027367a 100644 --- a/tutorials/vecops/vo005_Combinations.C +++ b/tutorials/vecops/vo005_Combinations.C @@ -15,8 +15,8 @@ void vo005_Combinations() { // The starting point are two collections and we want to calculate the result // of combinations of the elements. - RVec v1{1., 2., 3.}; - RVec v2{-4., -5.}; + ROOT::RVecD v1{1., 2., 3.}; + ROOT::RVecD v2{-4., -5.}; // To get the indices, which result in all combinations, you can call the // following helper. @@ -40,7 +40,7 @@ void vo005_Combinations() // single RVec, you can perform this as follows. // Get the indices of unique triples for the given vector. - RVec v4{1., 2., 3., 4.}; + ROOT::RVecD v4{1., 2., 3., 4.}; auto idx2 = Combinations(v4, 3); // Take the elements and compute any operation on the returned collections. diff --git a/tutorials/vecops/vo005_Combinations.py b/tutorials/vecops/vo005_Combinations.py index 6d178cfc4cb12..8cb264c796841 100644 --- a/tutorials/vecops/vo005_Combinations.py +++ b/tutorials/vecops/vo005_Combinations.py @@ -14,9 +14,9 @@ # RVec can be sorted in Python with the inbuilt sorting function because # PyROOT implements a Python iterator -v1 = RVec("double")(3) +v1 = ROOT.RVecD(3) v1[0], v1[1], v1[2] = 1, 2, 3 -v2 = RVec("double")(2) +v2 = ROOT.RVecD(2) v2[0], v2[1] = -4, -5 # To get the indices, which result in all combinations, you can call the @@ -40,7 +40,7 @@ # single RVec, you can perform this as follows. # Get the indices of unique triples for the given vector. -v4 = RVec("double")(4) +v4 = ROOT.RVecD(4) v4[0], v4[1], v4[2], v4[3] = 1, 2, 3, 4 idx2 = Combinations(v4, 3) diff --git a/tutorials/vecops/vo006_IndexManipulation.C b/tutorials/vecops/vo006_IndexManipulation.C index 07a50f464a950..3665193510c26 100644 --- a/tutorials/vecops/vo006_IndexManipulation.C +++ b/tutorials/vecops/vo006_IndexManipulation.C @@ -15,8 +15,8 @@ void vo006_IndexManipulation() { // We assume that we have multiple linked collections, the elements of which // represent different objects. - RVec muon_pt = {20.0, 30.0, 10.0, 25.0}; - RVec muon_eta = {1.0, -2.0, 0.5, 2.5}; + ROOT::RVecF muon_pt = {20.0, 30.0, 10.0, 25.0}; + ROOT::RVecF muon_eta = {1.0, -2.0, 0.5, 2.5}; for (size_t i = 0; i < muon_pt.size(); i++) { std::cout << "Muon " << i + 1 << " (pt, eta): " << muon_pt[i] << ", " diff --git a/tutorials/vecops/vo007_PhysicsHelpers.C b/tutorials/vecops/vo007_PhysicsHelpers.C index cd6049b7170b2..3ef4c53c3313f 100644 --- a/tutorials/vecops/vo007_PhysicsHelpers.C +++ b/tutorials/vecops/vo007_PhysicsHelpers.C @@ -22,7 +22,7 @@ void vo007_PhysicsHelpers() // RVec and a scalar and two scalars. In addition, the computation of the // difference and the behaviour at the boundary can be adjusted to radian and // degrees. - RVec phis = {0.0, 1.0, -0.5, M_PI + 1.0}; + ROOT::RVecF phis = {0.0, 1.0, -0.5, M_PI + 1.0}; auto idx = Combinations(phis, 2); auto phi1 = Take(phis, idx[0]); @@ -35,7 +35,7 @@ void vo007_PhysicsHelpers() // The DeltaR helper is similar to the DeltaPhi helper and computes the distance // in the \f$\eta\f$-\f$\phi\f$ plane. - RVec etas = {2.4, -1.5, 1.0, 0.0}; + ROOT::RVecF etas = {2.4, -1.5, 1.0, 0.0}; auto eta1 = Take(etas, idx[0]); auto eta2 = Take(etas, idx[1]); @@ -50,15 +50,15 @@ void vo007_PhysicsHelpers() // The InvariantMasses helper computes the invariant mass of a two particle system // given the properties transverse momentum (pt), rapidity (eta), azimuth (phi) // and mass. - RVec pt3 = {40, 20, 30}; - RVec eta3 = {2.5, 0.5, -1.0}; - RVec phi3 = {-0.5, 0.0, 1.0}; - RVec mass3 = {10, 10, 10}; + ROOT::RVecF pt3 = {40, 20, 30}; + ROOT::RVecF eta3 = {2.5, 0.5, -1.0}; + ROOT::RVecF phi3 = {-0.5, 0.0, 1.0}; + ROOT::RVecF mass3 = {10, 10, 10}; - RVec pt4 = {20, 10, 40}; - RVec eta4 = {0.5, -0.5, 1.0}; - RVec phi4 = {0.0, 1.0, -1.0}; - RVec mass4 = {2, 2, 2}; + ROOT::RVecF pt4 = {20, 10, 40}; + ROOT::RVecF eta4 = {0.5, -0.5, 1.0}; + ROOT::RVecF phi4 = {0.0, 1.0, -1.0}; + ROOT::RVecF mass4 = {2, 2, 2}; auto invMass = InvariantMasses(pt3, eta3, phi3, mass3, pt4, eta4, phi4, mass4); From 90ef9e7f3dc53061e1bcc50d2309350db4392317 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 11:23:20 +0200 Subject: [PATCH 286/577] [VecOps] Remove now unused imports in tutorials --- tutorials/vecops/vo004_SortAndSelect.py | 2 +- tutorials/vecops/vo005_Combinations.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/vecops/vo004_SortAndSelect.py b/tutorials/vecops/vo004_SortAndSelect.py index 792f623fe0aed..ede6e0ce9851f 100644 --- a/tutorials/vecops/vo004_SortAndSelect.py +++ b/tutorials/vecops/vo004_SortAndSelect.py @@ -11,7 +11,7 @@ ## \author Stefan Wunsch import ROOT -from ROOT.VecOps import RVec, Argsort, Take, Sort, Reverse +from ROOT.VecOps import Argsort, Take, Sort, Reverse # RVec can be sorted in Python with the inbuilt sorting function because # PyROOT implements a Python iterator diff --git a/tutorials/vecops/vo005_Combinations.py b/tutorials/vecops/vo005_Combinations.py index 8cb264c796841..d67e8d9f7b114 100644 --- a/tutorials/vecops/vo005_Combinations.py +++ b/tutorials/vecops/vo005_Combinations.py @@ -10,7 +10,7 @@ ## \author Stefan Wunsch import ROOT -from ROOT.VecOps import RVec, Take, Combinations +from ROOT.VecOps import Take, Combinations # RVec can be sorted in Python with the inbuilt sorting function because # PyROOT implements a Python iterator From 6b50a360952ef87ae42a4501d247acecb7f385b5 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 19:03:11 +0200 Subject: [PATCH 287/577] [VecOps] Remove unnecessary `using namespace` from tutorials We can just rely on ADL. --- tutorials/vecops/vo001_AdoptOrOwnMemory.C | 6 ++---- tutorials/vecops/vo002_VectorCalculations.C | 2 -- tutorials/vecops/vo003_LogicalOperations.C | 2 -- tutorials/vecops/vo004_SortAndSelect.C | 2 -- tutorials/vecops/vo005_Combinations.C | 2 -- tutorials/vecops/vo006_IndexManipulation.C | 2 -- tutorials/vecops/vo007_PhysicsHelpers.C | 2 -- 7 files changed, 2 insertions(+), 16 deletions(-) diff --git a/tutorials/vecops/vo001_AdoptOrOwnMemory.C b/tutorials/vecops/vo001_AdoptOrOwnMemory.C index 04607c528fd1e..6c3a642b06497 100644 --- a/tutorials/vecops/vo001_AdoptOrOwnMemory.C +++ b/tutorials/vecops/vo001_AdoptOrOwnMemory.C @@ -18,18 +18,16 @@ public: UponCopyPrinter(const UponCopyPrinter &) { std::cout << "Invoking copy c'tor!" << std::endl; } }; -using namespace ROOT::VecOps; - void vo001_AdoptOrOwnMemory() { // One of the essential features of RVec is its ability of adopting and owning memory. // Let's create an RVec of UponCopyPrinter instances. We expect no printout: - RVec v(3); + ROOT::RVec v(3); // Let's adopt the memory from v into v2. We expect no printout: - RVec v2(v.data(), v.size()); + ROOT::RVec v2(v.data(), v.size()); // OK, let's check the addresses of the memory associated to the two RVecs It is the same! std::cout << v.data() << " and " << v2.data() << std::endl; diff --git a/tutorials/vecops/vo002_VectorCalculations.C b/tutorials/vecops/vo002_VectorCalculations.C index ade87e07d94c9..6b08c4dca1897 100644 --- a/tutorials/vecops/vo002_VectorCalculations.C +++ b/tutorials/vecops/vo002_VectorCalculations.C @@ -10,8 +10,6 @@ /// \date May 2018 /// \author Danilo Piparo -using namespace ROOT::VecOps; - void vo002_VectorCalculations() { diff --git a/tutorials/vecops/vo003_LogicalOperations.C b/tutorials/vecops/vo003_LogicalOperations.C index 74dd8f1820c27..b632c5db43bff 100644 --- a/tutorials/vecops/vo003_LogicalOperations.C +++ b/tutorials/vecops/vo003_LogicalOperations.C @@ -10,8 +10,6 @@ /// \date May 2018 /// \author Danilo Piparo -using namespace ROOT::VecOps; - void vo003_LogicalOperations() { diff --git a/tutorials/vecops/vo004_SortAndSelect.C b/tutorials/vecops/vo004_SortAndSelect.C index bb7442338c646..5539cec2c68a0 100644 --- a/tutorials/vecops/vo004_SortAndSelect.C +++ b/tutorials/vecops/vo004_SortAndSelect.C @@ -10,8 +10,6 @@ /// \date August 2018 /// \author Stefan Wunsch -using namespace ROOT::VecOps; - void vo004_SortAndSelect() { // Because RVec implements an iterator, the class is fully compatible with diff --git a/tutorials/vecops/vo005_Combinations.C b/tutorials/vecops/vo005_Combinations.C index b4c906027367a..c7e2a46ac1cf1 100644 --- a/tutorials/vecops/vo005_Combinations.C +++ b/tutorials/vecops/vo005_Combinations.C @@ -9,8 +9,6 @@ /// \date August 2018 /// \author Stefan Wunsch -using namespace ROOT::VecOps; - void vo005_Combinations() { // The starting point are two collections and we want to calculate the result diff --git a/tutorials/vecops/vo006_IndexManipulation.C b/tutorials/vecops/vo006_IndexManipulation.C index 3665193510c26..702c27d015359 100644 --- a/tutorials/vecops/vo006_IndexManipulation.C +++ b/tutorials/vecops/vo006_IndexManipulation.C @@ -9,8 +9,6 @@ /// \date September 2018 /// \author Stefan Wunsch -using namespace ROOT::VecOps; - void vo006_IndexManipulation() { // We assume that we have multiple linked collections, the elements of which diff --git a/tutorials/vecops/vo007_PhysicsHelpers.C b/tutorials/vecops/vo007_PhysicsHelpers.C index 3ef4c53c3313f..46eac40c4de96 100644 --- a/tutorials/vecops/vo007_PhysicsHelpers.C +++ b/tutorials/vecops/vo007_PhysicsHelpers.C @@ -11,8 +11,6 @@ /// \date March 2019 /// \author Stefan Wunsch -using namespace ROOT::VecOps; - void vo007_PhysicsHelpers() { // The DeltaPhi helper computes the closest angle between angles. From faa58a7c0c094c29c14020d5a965f1a517cbc429 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 1 Oct 2021 13:28:50 +0200 Subject: [PATCH 288/577] [NFC][VecOps] Spell out the full list of shorthand aliases in docs --- math/vecops/inc/ROOT/RVec.hxx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index d13b180154b7b..c6101e342f596 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -1263,9 +1263,18 @@ Its storage is contiguous in memory and its interface is designed such to resemb of the stl vector. In addition the interface features methods and external functions to ease the manipulation and analysis of the data in the RVec. -\note ROOT::VecOps::RVec can also be spelled simply ROOT::RVec, and shorthand aliases such as ROOT::RVecI, ROOT::RVecD -or ROOT::RVecF are available as template instantiations of RVec of fundamental types (int, double, float respectively -for these examples. +\note ROOT::VecOps::RVec can also be spelled simply ROOT::RVec. Shorthand aliases such as ROOT::RVecI or ROOT::RVecD +are also available as template instantiations of RVec of fundamental types. The full list of available aliases: +- RVecB (`bool`) +- RVecC (`char`) +- RVecD (`double`) +- RVecF (`float`) +- RVecI (`int`) +- RVecL (`long`) +- RVecLL (`long long`) +- RVecU (`unsigned`) +- RVecUL (`unsigned long`) +- RVecULL (`unsigned long long`) \note RVec does not attempt to be exception safe. Exceptions thrown by element constructors during insertions, swaps or other operations will be propagated potentially leaving the RVec object in an invalid state. From 9aae4f718f39a9b633b35a9c4d89b13963dbadbe Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 4 Oct 2021 11:08:07 +0200 Subject: [PATCH 289/577] [skip-ci] remove reference to the old user's guide (#9063) --- geom/geom/src/TGeoPhysicalNode.cxx | 2 +- geom/geombuilder/doc/index.md | 1 - geom/geompainter/doc/index.md | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/geom/geom/src/TGeoPhysicalNode.cxx b/geom/geom/src/TGeoPhysicalNode.cxx index 9cc31d7bb854c..3215a4ab68bd9 100644 --- a/geom/geom/src/TGeoPhysicalNode.cxx +++ b/geom/geom/src/TGeoPhysicalNode.cxx @@ -53,7 +53,7 @@ replaces it with a more meaningful name. In addition, TGeoPNEntry objects are faster to search by name and they may optionally store an additional user matrix. -For more details please read the misalignment section in the Users Guide. +For more details please read the [misalignment section](\ref GP05). */ #include "TGeoManager.h" diff --git a/geom/geombuilder/doc/index.md b/geom/geombuilder/doc/index.md index df143aa592f62..886d36729b03e 100644 --- a/geom/geombuilder/doc/index.md +++ b/geom/geombuilder/doc/index.md @@ -4,6 +4,5 @@ Some documents describing these classes are listed below: - - [The Chapter about the TGeo classes and builder in the Users Guide](ftp://root.cern.ch/root/doc/18Geometry.pdf) - [Presentation, May 2006](http://indico.cern.ch/getFile.py/access?contribId=3&resId=1&materialId=slides&confId=3028) diff --git a/geom/geompainter/doc/index.md b/geom/geompainter/doc/index.md index ce72d8361eef9..e8b909c6b1326 100644 --- a/geom/geompainter/doc/index.md +++ b/geom/geompainter/doc/index.md @@ -1,7 +1,3 @@ \defgroup Geometry_painter Geometry painter \ingroup Geometry \brief The Geometry painter, checker, overlap and track related classes - - - All necessary information related to how to use the package can be found below: - - [The Chapter about the TGeo classes and builder in the Users Guide](ftp://root.cern.ch/root/doc/18Geometry.pdf) From 1b62987fe4cda1bfb7c17f9d6a4ad40329885e4c Mon Sep 17 00:00:00 2001 From: Vassil Vassilev Date: Fri, 1 Oct 2021 07:15:36 +0000 Subject: [PATCH 290/577] [cxxmodules] Complain if glibc is not installed. Likely will improve root-project/root#8157 --- interpreter/cling/lib/Interpreter/CIFactory.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp index 60f43e2451ab7..52e882507564c 100644 --- a/interpreter/cling/lib/Interpreter/CIFactory.cpp +++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp @@ -570,6 +570,10 @@ namespace { llvm::SmallString<256> servIncLoc(getIncludePathForHeader(HS, "windows.h")); #endif llvm::SmallString<128> cIncLoc(getIncludePathForHeader(HS, "time.h")); + // FIXME: Diagnose this until we teach cling how to work without libc. + if (!llvm::sys::fs::exists(cIncLoc)) + llvm::errs() + << "C system headers (glibc/Xcode/Windows SDK) must be installed.\n"; llvm::SmallString<256> stdIncLoc(getIncludePathForHeader(HS, "cassert")); llvm::SmallString<256> boostIncLoc(getIncludePathForHeader(HS, "boost/version.hpp")); From 466caea0a20b249673e3ec35e1f5b772902fc5f6 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 5 Oct 2021 08:20:22 +0200 Subject: [PATCH 291/577] [builtins] Update builtin xrootd to 5.3.0 and move it to proper ROOT builtins (#7335) * Update builtin xrootd to 5.1.0 and move it to proper ROOT builtins * Cache xrootd version * Thanks to Sergei for nice catch: XrdClient is not anymore available in xrootd 5 * Move XROOTDApplePostInstall.cmake in xrootd builtins directory * Apply suggestion of Sergei: move xrootd version constraints directly in 'net' CMakeLists * Update xrootd builtins to latest 5.2.0 version * Try to update to xrootd 5.3.0 as a last released version * Update xrootd to 5.3.1 to include fixes fro https://github.com/root-project/root/issues/8767 * Update XROOTD_VERSIONNUM to match 500030001 * Fix rpath handling on Mac OS and improve Xrootd target hangling * Reverting changes back: according ROOT build system logic netx and netxng needs to be defined before * Use autodetected XROOTD_LIBDIR instead of hardcoded lib directory * Fix INSTALL_RPATH for xrootd * Revert back changes connnected adding dependency for xrootd builtin for NetxNG * Add patch from M.K.Simon to handle properly BUILD_RPATH for dummy Xrootd target --- builtins/xrootd/CMakeLists.txt | 93 +++++++++++++++++++ .../xrootd}/XROOTDApplePostInstall.cmake | 0 cmake/modules/FindXROOTD.cmake | 6 ++ cmake/modules/RootBuildOptions.cmake | 1 - cmake/modules/RootMacros.cmake | 5 + cmake/modules/SearchInstalledSoftware.cmake | 85 ++++------------- net/netxng/CMakeLists.txt | 2 +- 7 files changed, 124 insertions(+), 68 deletions(-) create mode 100644 builtins/xrootd/CMakeLists.txt rename {cmake/modules => builtins/xrootd}/XROOTDApplePostInstall.cmake (100%) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt new file mode 100644 index 0000000000000..ab0820a3808c4 --- /dev/null +++ b/builtins/xrootd/CMakeLists.txt @@ -0,0 +1,93 @@ +# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. +# All rights reserved. +# +# For the licensing terms see $ROOTSYS/LICENSE. +# For the list of contributors see $ROOTSYS/README/CREDITS. + +include(ExternalProject) + +find_package(OpenSSL REQUIRED) + +set(XROOTD_VERSION "5.3.1") +set(XROOTD_VERSIONNUM 500030001 CACHE INTERNAL "" FORCE) +set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) +set(XROOTD_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/XROOTD-prefix) +message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") + +# Guess under which directory XRootD will install its libraires +set(XROOTD_LIBDIR "lib") +if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 +AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") + set(XROOTD_LIBDIR "lib64") +endif() + +foreach(lib XrdUtils XrdCl) + set(libname ${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX}) + list(APPEND XROOTD_LIBRARIES ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/${libname}) +endforeach() + +ExternalProject_Add( + XROOTD + URL ${XROOTD_SRC_URI} + URL_HASH SHA256=1194ba435dc1e243f3cdb8273f6385407183799faf7622a582a828f4aff6807d + INSTALL_DIR ${XROOTD_PREFIX} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} + -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} + -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DENABLE_PYTHON=OFF + -DENABLE_CEPH=OFF + -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_PREFIX}/${XROOTD_LIBDIR} + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install + COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include + LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 + BUILD_BYPRODUCTS ${XROOTD_LIBRARIES} + TIMEOUT 600 +) + +if(builtin_openssl) + add_dependencies(XROOTD OPENSSL) +endif() + +list(APPEND XROOTD_LIBRARIES OpenSSL::SSL) + +unset(XROOTD_FOUND CACHE) +unset(XROOTD_FOUND PARENT_SCOPE) +set(XROOTD_FOUND TRUE CACHE BOOL "" FORCE) + +set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd ${XROOTD_DESTDIR}/include/xrootd/private) +set(XROOTD_NOMAIN TRUE) +set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") + +set(XROOTD_INCLUDE_DIR ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_LIBRARY ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/${XROOTD_LIBNAME} CACHE INTERNAL "" FORCE) +set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} CACHE INTERNAL "" FORCE) + +add_library(xrootd INTERFACE) +target_include_directories(xrootd INTERFACE $) +target_link_libraries(xrootd INTERFACE $) +set_property(TARGET xrootd PROPERTY INTERFACE_BUILD_RPATH ${XROOTD_PREFIX}/${XROOTD_LIBDIR}) +add_dependencies(xrootd XROOTD) + +add_library(Xrootd::Xrootd ALIAS xrootd) + +set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS XROOTD) + +install(DIRECTORY ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") +install(DIRECTORY ${XROOTD_PREFIX}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) +if(APPLE) + # XRootD libraries on mac need the LC_RPATH variable set. The build process already takes care of setting + # * BUILD_RPATH = build/XROOTD-prefix/../src + # * INSTALL_RPATH = build/lib + # Since the install directory for the builtin_xrootd target corresponds to the build directory of the main project. + # Use a post install script to change the LC_RPATH variable of the libraries in the ROOT install folder. + install(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/XROOTDApplePostInstall.cmake + CODE "xrootd_libs_change_rpath(${XROOTD_PREFIX}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" + ) +endif() diff --git a/cmake/modules/XROOTDApplePostInstall.cmake b/builtins/xrootd/XROOTDApplePostInstall.cmake similarity index 100% rename from cmake/modules/XROOTDApplePostInstall.cmake rename to builtins/xrootd/XROOTDApplePostInstall.cmake diff --git a/cmake/modules/FindXROOTD.cmake b/cmake/modules/FindXROOTD.cmake index 838c41c3c03d5..fe48c0162a8d8 100644 --- a/cmake/modules/FindXROOTD.cmake +++ b/cmake/modules/FindXROOTD.cmake @@ -169,6 +169,12 @@ if(XROOTD_FOUND) endif () endif() +if(XROOTD_FOUND AND NOT TARGET Xrootd::Xrootd) + add_library(Xrootd::Xrootd INTERFACE IMPORTED) + set_property(TARGET Xrootd::Xrootd PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIRS}") + set_property(TARGET Xrootd::Xrootd PROPERTY INTERFACE_LINK_LIBRARIES "${XROOTD_LIBRARIES}") +endif() + mark_as_advanced(XROOTD_INCLUDE_DIR XROOTD_XrdMain_LIBRARY XROOTD_XrdUtils_LIBRARY diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index d90367761460d..7a63f1b38f4c1 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -399,7 +399,6 @@ if(webgui) endif() endif() - #---Removed options------------------------------------------------------------ foreach(opt afdsmgrd afs bonjour castor chirp geocad glite globus hdfs ios krb5 ldap memstat qt qtgsi rfio ruby sapdb srp table python vmc) diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake index c536c5999b6ae..b2a2410a2165f 100644 --- a/cmake/modules/RootMacros.cmake +++ b/cmake/modules/RootMacros.cmake @@ -914,8 +914,10 @@ function(ROOT_LINKER_LIBRARY library) get_target_property(_target_type ${lib} TYPE) if(${_target_type} STREQUAL "INTERFACE_LIBRARY") get_target_property(lib_incdirs ${lib} INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(lib_rpath ${lib} INTERFACE_BUILD_RPATH) else() get_target_property(lib_incdirs ${lib} INCLUDE_DIRECTORIES) + get_target_property(lib_rpath ${lib} BUILD_RPATH) endif() if(lib_incdirs) foreach(dir ${lib_incdirs}) @@ -923,6 +925,9 @@ function(ROOT_LINKER_LIBRARY library) list(APPEND dep_inc_list ${dir}) endforeach() endif() + if(lib_rpath) + set_target_properties(${library} PROPERTIES BUILD_RPATH ${lib_rpath}) + endif() endif() endforeach() endif() diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 863289b12f2e2..ebe69811dbcdd 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -954,6 +954,11 @@ if(monalisa) endif() #---Check for Xrootd support--------------------------------------------------------- + +foreach(suffix FOUND INCLUDE_DIR INCLUDE_DIRS LIBRARY LIBRARIES) + unset(XROOTD_${suffix} CACHE) +endforeach() + if(xrootd AND NOT builtin_xrootd) message(STATUS "Looking for XROOTD") find_package(XROOTD) @@ -981,65 +986,23 @@ if(builtin_xrootd AND NO_CONNECTION) endif() endif() if(builtin_xrootd) - set(XROOTD_VERSION 4.12.8) - set(XROOTD_VERSIONNUM 400120008) - set(XROOTD_SRC_URI ${lcgpackages}/xrootd-${XROOTD_VERSION}.tar.gz) - set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}) - set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) - message(STATUS "Downloading and building XROOTD version ${xrootd_version}") - - # Guess under which directory XRootD will install its libraires - set(XROOTD_LIBDIR "lib") - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 - AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") - set(XROOTD_LIBDIR "lib64") - endif() - - set(XROOTD_LIBRARIES ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdClient${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdCl${CMAKE_SHARED_LIBRARY_SUFFIX}) - ExternalProject_Add( - XROOTD - URL ${XROOTD_SRC_URI} - URL_HASH SHA256=86d8e4bd7382fb3053002cf3d58b997623d1d26db93c8891080603827f01b4cd - INSTALL_DIR ${XROOTD_ROOTDIR} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} - -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} - -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DENABLE_PYTHON=OFF - -DENABLE_CEPH=OFF - -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install - COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 - BUILD_BYPRODUCTS ${XROOTD_LIBRARIES} - TIMEOUT 600 - ) - # We cannot call find_package(XROOTD) becuase the package is not yet built. So, we need to emulate what it defines.... + list(APPEND ROOT_BUILTINS XROOTD) + add_subdirectory(builtins/xrootd) + set(xrootd ON CACHE BOOL "Enabled because builtin_xrootd requested (${xrootd_description})" FORCE) +endif() - set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private) - set(XROOTD_NOMAIN TRUE) - set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") - install(DIRECTORY ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") - install(DIRECTORY ${XROOTD_ROOTDIR}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) - if(APPLE) - # XRootD libraries on mac need the LC_RPATH variable set. The build process already takes care of setting - # * BUILD_RPATH = build/XROOTD-prefix/../src - # * INSTALL_RPATH = build/lib - # Since the install directory for the builtin_xrootd target corresponds to the build directory of the main project. - # Use a post install script to change the LC_RPATH variable of the libraries in the ROOT install folder. - install(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/XROOTDApplePostInstall.cmake - CODE "xrootd_libs_change_rpath(${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" - ) +if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER_EQUAL 500000000) + if(xproofd) + if(fail-on-missing) + message(FATAL_ERROR "XROOTD is version 5 or greater. The legacy xproofd servers can not be built with this version. Use -Dxproofd:BOOL=OFF to disable.") + else() + message(STATUS "XROOTD is version 5 or greater. The legacy xproofd servers can not be built with this version. Disabling 'xproofd' option.") + set(xproofd OFF CACHE BOOL "Disabled because xrootd version is 5 or greater" FORCE) + endif() endif() - set(XROOTD_TARGET XROOTD) - set(xrootd ON CACHE BOOL "Enabled because builtin_xrootd requested (${xrootd_description})" FORCE) endif() + +#---check if netxng and netx can be built------------------------------- if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) set(netxng ON) else() @@ -1050,16 +1013,6 @@ if(xrootd AND XROOTD_VERSIONNUM VERSION_LESS 500000000) else() set(netx OFF) endif() -if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER_EQUAL 500000000) - if(xproofd) - if(fail-on-missing) - message(FATAL_ERROR "XROOTD is version 5 or greater. The legacy xproofd servers can not be built with this version. Use -Dxproofd:BOOL=OFF to disable.") - else() - message(STATUS "XROOTD is version 5 or greater. The legacy xproofd servers can not be built with this version. Disabling 'xproofd' option.") - set(xproofd OFF CACHE BOOL "Disabled because xrootd version is 5 or greater" FORCE) - endif() - endif() -endif() #---Alien support---------------------------------------------------------------- if(alien) diff --git a/net/netxng/CMakeLists.txt b/net/netxng/CMakeLists.txt index fec022f6b2686..a57702eafcc8a 100644 --- a/net/netxng/CMakeLists.txt +++ b/net/netxng/CMakeLists.txt @@ -19,7 +19,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(NetxNG src/TNetXNGFileStager.cxx src/TNetXNGSystem.cxx LIBRARIES - ${XROOTD_LIBRARIES} + Xrootd::Xrootd DEPENDENCIES Net RIO From e0d4c6e6fb22cb3c682dfa048f4d9cc6484ab714 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Mon, 4 Oct 2021 15:59:05 +0200 Subject: [PATCH 292/577] [DF] Improve DefinePerSample docs Co-authored-by: Enrico Guiraud --- tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 41 ++++++++++++++++++---- tree/dataframe/src/RDataFrame.cxx | 1 + 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx index f192fb8a3f02a..205999dda3dff 100644 --- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx @@ -490,16 +490,25 @@ public: /// \param[in] expression A C++ callable that computes the new value of the defined column. /// \return the first node of the computation graph for which the new quantity is defined. /// - /// The signature of the callable passed as second argument should be `T(unsigned int slot, ROOT::RDF::RSampleInfo &id)` - /// where `T` is the type of the defined column, `slot` is a number in the range [0, nThreads) that is different - /// for each processing thread that can simplify the definition of thread-safe callables, and `id` is an instance - /// of a ROOT::RDF::RSampleInfo object which contains information about the sample which is being processed (see the - /// relevant docs for more information). + /// The signature of the callable passed as second argument should be `T(unsigned int slot, const ROOT::RDF::RSampleInfo &id)` + /// where: + /// - `T` is the type of the defined column + /// - `slot` is a number in the range [0, nThreads) that is different for each processing thread. This can simplify + /// the definition of thread-safe callables if you are interested in using parallel capabilities of RDataFrame. + /// - `id` is an instance of a ROOT::RDF::RSampleInfo object which contains information about the sample which is + /// being processed (see the class docs for more information). /// /// DefinePerSample() is useful to e.g. define a quantity that depends on which TTree in which TFile is being /// processed or to inject a callback into the event loop that is only called when the processing of a new sample /// starts rather than at every entry. /// + /// ### Example usage: + /// ~~~{.cpp} + /// ROOT::RDataFrame df{"mytree", {"sample1.root","sample2.root"}}; + /// df.DefinePerSample("weightbysample", + /// [](unsigned int slot, const ROOT::RDF::RSampleInfo &id) + /// { return id.Contains("sample1") ? 1.0f : 2.0f; }); + /// ~~~ // TODO we could SFINAE on F's signature to provide friendlier compilation errors in case of signature mismatch template ::ret_type> RInterface DefinePerSample(std::string_view name, F expression) @@ -540,8 +549,28 @@ public: /// The expression is just-in-time compiled and used to produce the column entries. /// It must be valid C++ syntax and the usage of the special variable names `rdfslot_` and `rdfsampleinfo_` is /// permitted, where these variables will take the same values as the `slot` and `id` parameters described at the - /// other DefinePerSample overload. See the documentation of that overload for more information. + /// DefinePerSample(std::string_view name, F expression) overload. See the documentation of that overload for more information. + /// + /// ### Example usage: + /// ~~~{.py} + /// df = ROOT.RDataFrame("mytree", ["sample1.root","sample2.root"]) + /// df.DefinePerSample("weightbysample", "rdfsampleinfo_.Contains('sample1') ? 1.0f : 2.0f") + /// ~~~ /// + /// \note + /// If you have declared some C++ function to the interpreter, the correct syntax to call that function with this + /// overload of DefinePerSample is by calling it explicitly with the special names `rdfslot_` and `rdfsampleinfo_` as + /// input parameters. This is for example the correct way to call this overload when working in PyROOT: + /// ~~~{.py} + /// ROOT.gInterpreter.Declare( + /// """ + /// float weights(unsigned int slot, const ROOT::RDF::RSampleInfo &id){ + /// return id.Contains("sample1") ? 1.0f : 2.0f; + /// } + /// """) + /// df = ROOT.RDataFrame("mytree", ["sample1.root","sample2.root"]) + /// df.DefinePerSample("weightsbysample", "weights(rdfslot_, rdfsampleinfo_)") + /// ~~~ RInterface DefinePerSample(std::string_view name, std::string_view expression) { RDFInternal::CheckValidCppVarName(name, "DefinePerSample"); diff --git a/tree/dataframe/src/RDataFrame.cxx b/tree/dataframe/src/RDataFrame.cxx index 13d1e82725503..7b53633df8544 100644 --- a/tree/dataframe/src/RDataFrame.cxx +++ b/tree/dataframe/src/RDataFrame.cxx @@ -81,6 +81,7 @@ Transformations are a way to manipulate the data. |------------------|--------------------| | Alias() | Introduce an alias for a particular column name. | | Define() | Creates a new column in the dataset. Example usages include adding a column that contains the invariant mass of a particle, or a selection of elements of an array (e.g. only the `pt`s of "good" muons). | +| DefinePerSample() | Define a new column that is updated when the input sample changes, e.g. when switching tree being processed in a chain. | | DefineSlot() | Same as Define(), but the user-defined function must take an extra `unsigned int slot` as its first parameter. `slot` will take a different value, `0` to `nThreads - 1`, for each thread of execution. This is meant as a helper in writing thread-safe Define() transformation when using RDataFrame after ROOT::EnableImplicitMT(). DefineSlot() works just as well with single-thread execution: in that case `slot` will always be `0`. | | DefineSlotEntry() | Same as DefineSlot(), but the entry number is passed in addition to the slot number. This is meant as a helper in case some dependency on the entry number needs to be honoured. | | Filter() | Filter rows based on user-defined conditions. | From cfb84d9477aa0f1118c3e2b2e5e169c3a6120921 Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Tue, 5 Oct 2021 08:21:21 +0200 Subject: [PATCH 293/577] Fix Imt compilation warnings (fixes #9020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Should fix the following compilation warnings with `gcc 11` and the current `builtin_tbb`: ``` In file included from ginclude/tbb/tbb.h:48, from /home/vpadulan/Programs/rootproject/root/core/imt/src/TThreadExecutor.cxx:10: ginclude/tbb/concurrent_hash_map.h: In constructor �tbb::interface5::internal::hash_map_base::hash_map_base()�: ginclude/tbb/concurrent_hash_map.h:131:24: warning: �void* memset(void*, int, size_t)� clearing an object of type �struct tbb::interface5::internal::hash_map_base::bucket� with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess] 131 | std::memset(my_embedded_segment, 0, sizeof(my_embedded_segment)); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ginclude/tbb/concurrent_hash_map.h:93:16: note: �struct tbb::interface5::internal::hash_map_base::bucket� declared here 93 | struct bucket : tbb::internal::no_copy { | ^~~~~~ ``` --- core/imt/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/imt/CMakeLists.txt b/core/imt/CMakeLists.txt index 9fa2ee75d7078..3158c365a7201 100644 --- a/core/imt/CMakeLists.txt +++ b/core/imt/CMakeLists.txt @@ -55,7 +55,7 @@ if(imt) src/TThreadExecutor.cxx ) - target_include_directories(Imt PRIVATE ${TBB_INCLUDE_DIRS}) + target_include_directories(Imt SYSTEM PRIVATE ${TBB_INCLUDE_DIRS}) target_link_libraries(Imt PRIVATE ${TBB_LIBRARIES}) set_target_properties(Imt PROPERTIES COMPILE_FLAGS "${TBB_CXXFLAGS}") From c2c918c2662a02f3668b5044007e12d220133e71 Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Tue, 5 Oct 2021 12:15:41 +0200 Subject: [PATCH 294/577] Add the _MSC_VER value for Visual Studio 2022 Add the _MSC_VER value (between 1930 and 1940) for the coming soon `Visual Studio 2022` --- interpreter/cling/lib/Utils/PlatformWin.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interpreter/cling/lib/Utils/PlatformWin.cpp b/interpreter/cling/lib/Utils/PlatformWin.cpp index 03a323766ae9d..545cc5dbb400a 100644 --- a/interpreter/cling/lib/Utils/PlatformWin.cpp +++ b/interpreter/cling/lib/Utils/PlatformWin.cpp @@ -384,6 +384,8 @@ static int GetVisualStudioVersionCompiledWith() { return 15; #elif (_MSC_VER < 1930) return 16; +#elif (_MSC_VER < 1940) + return 17; #else #error "Unsupported/Untested _MSC_VER" // As of now this is what is should be...have fun! From 8b2104a4e2a02b52e41280bee947544b160cad30 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Wed, 24 Jun 2020 11:32:10 -0500 Subject: [PATCH 295/577] Tree:Fix ROOT-10829. Avoid using deleted object. When deleting a TTree, we delete the list of friends and aliases. Their deletion is broadcasted through RecursiveRemove which eventually reached back to the original TTree. And if TTree::RecursiveRemove then tries to call RecursiveRemove on those deleted list ... then disaster follows ... in the form of: ``` pure virtual method called terminate called without an active exception Aborted (core dumped) ``` At least that is what was happening prior the PR #9021. Still, just in case there are other (unknown for now) ways of getting these situations, let's be safe and applies this backup fix. (In practice we will close the jira issue ROOT-10829 as a consequence) This is related to: https://github.com/root-project/root/pull/9021 and https://github.com/root-project/root/issues/9017 --- tree/tree/src/TTree.cxx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index 8606bc5e1965f..b44b9196d5c1a 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -7859,10 +7859,14 @@ void TTree::RecursiveRemove(TObject *obj) if (fTreeIndex == obj) { fTreeIndex = 0; } - if (fAliases) { + if (fAliases == obj) { + fAliases = 0; + } else if (fAliases) { fAliases->RecursiveRemove(obj); } - if (fFriends) { + if (fFriends == obj) { + fFriends = 0; + } else if (fFriends) { fFriends->RecursiveRemove(obj); } } From 825a0c94b2e956c55fbba7f5d7068ef58300c167 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Fri, 1 Oct 2021 15:35:17 -0500 Subject: [PATCH 296/577] In TTree::RecursiveRemove 0 -> nullptr --- tree/tree/src/TTree.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index b44b9196d5c1a..21474627c0b7c 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -7845,27 +7845,27 @@ Long64_t TTree::ReadStream(std::istream& inputStream, const char *branchDescript void TTree::RecursiveRemove(TObject *obj) { if (obj == fEventList) { - fEventList = 0; + fEventList = nullptr; } if (obj == fEntryList) { - fEntryList = 0; + fEntryList = nullptr; } if (fUserInfo) { fUserInfo->RecursiveRemove(obj); } if (fPlayer == obj) { - fPlayer = 0; + fPlayer = nullptr; } if (fTreeIndex == obj) { - fTreeIndex = 0; + fTreeIndex = nullptr; } if (fAliases == obj) { - fAliases = 0; + fAliases = nullptr; } else if (fAliases) { fAliases->RecursiveRemove(obj); } if (fFriends == obj) { - fFriends = 0; + fFriends = nullptr; } else if (fFriends) { fFriends->RecursiveRemove(obj); } From 6b9b46bb3fe66c321ae7fdf32560a25faac3d2ec Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Mon, 27 Sep 2021 14:15:57 +0200 Subject: [PATCH 297/577] Disable the failing rcanvas/rbox.py test on Windows Disable the rcanvas/rbox.py test which is failing with the following errors: Start 993: tutorial-rcanvas-rbox-py 993: Test command: "C:\Program Files\CMake\bin\cmake.exe" "-DCMD=C:/Python39-32/python.exe^C:/Users/bellenot/git/master/tutorials/launcher.py^C:/Users/bellenot/git/master/tutorials/rcanvas/rbox.py" "-DSYS=C:/Users/bellenot/build/release" "-DENV=ROOTSYS=C:/Users/bellenot/build/release#PYTHONPATH=C:/Users/bellenot/build/release/bin#PYTHIA8DATA=C:/Users/bellenot/libs/pythia8/8.3.03/share/Pythia8/xmldoc" "-P" "C:/Users/bellenot/build/release/RootTestDriver.cmake" 993: Environment variables: 993: ROOT_HIST=0 993: Test timeout computed to be: 1500 993: input_line_35:10:7: warning: ignoring return value of function declared with 'nodiscard' attribute [-Wunused-result] 993: ((const shared_ptr*)obj)->operator->(); 993: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 993: input_line_39:10:7: warning: ignoring return value of function declared with 'nodiscard' attribute [-Wunused-result] 993: ((const shared_ptr*)obj)->operator->(); 993: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 993: Traceback (most recent call last): 993: File "C:\Users\bellenot\git\master\tutorials\launcher.py", line 34, in 993: spec.loader.exec_module(module) 993: File "", line 850, in exec_module 993: File "", line 228, in _call_with_frames_removed 993: File "C:/Users/bellenot/git/master/tutorials/rcanvas/rbox.py", line 24, in 993: box1.border.color = RColor.kBlue 993: AttributeError: has no attribute 'kBlue'. Full details: 993: attribute access requires an instance 993: 'ROOT::Experimental::RColor::kBlue' is not a known C++ class 993: 'kBlue' is not a known C++ template 993: 'kBlue' is not a known C++ enum 993: CMake Error at C:/Users/bellenot/build/release/RootTestDriver.cmake:227 (message): 993: error code: 1 993: 993: 1/1 Test #993: tutorial-rcanvas-rbox-py .........***Failed 3.69 sec 0% tests passed, 1 tests failed out of 1 Label Time Summary: tutorial = 3.69 sec*proc (1 test) Total Test time (real) = 6.60 sec The following tests FAILED: 993 - tutorial-rcanvas-rbox-py (Failed) Errors while running CTest --- tutorials/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index f85c7b4079238..77b07a73e6978 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -313,6 +313,7 @@ if(root7) #---EOS is not supported on Windows list(APPEND root7_veto rcanvas/df104.py) list(APPEND root7_veto rcanvas/df105.py) + list(APPEND root7_veto rcanvas/rbox.py) endif() else() file(GLOB v7_veto_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ v7/*.py v7/*.cxx v7/*/*.cxx v7/*.C v7/*/*.C rcanvas/*.py rcanvas/*.cxx) From 42c7ba93ff1991cb1a64ef930d42e5442e4529f4 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 11:42:16 +0200 Subject: [PATCH 298/577] [NFC][relnotes] Mention improvements to RVec --- README/ReleaseNotes/v626/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index c36b8b4d0ecaf..aa38cf28d318c 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -91,8 +91,11 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). ## Math Libraries +- `RVec` has been heavily re-engineered in order to add a small buffer optimization and to streamline its internals. The change should provide a small performance boost to + applications that make heavy use of `RVec`s and should otherwise be user-transparent. Please report any issues you should encounter. - I/O support of `RVec` objects has been optimized. As a side-effect, `RVec`s can now be read back as `std::vector`s and vice-versa. - added `ROOT::VecOps::Drop`, an operation that removes `RVec` elements at the specified indices. +- handy aliases `ROOT::RVecI`, `ROOT::RVecD`, `ROOT::RVecF`, ..., have been introduced as short-hands for `RVec`, `RVec`, `RVec`, ... ## RooFit Libraries From 0aedd5d7fb82c014c58a7a5568b9b4261a6ce177 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 30 Sep 2021 11:39:13 +0200 Subject: [PATCH 299/577] [NFC][relnotes] Fix a couple of typos --- README/ReleaseNotes/v626/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index aa38cf28d318c..ccb558d9aa66f 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -77,7 +77,7 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). - Add `Describe` to the `RDataFrame` interface, which allows to get useful information, e.g. the columns and their types. - Add `DescribeDataset` to the `RDataFrame` interface, which allows to get information about the dataset (subset of the output of Describe()). - Add [DefinePerSample](https://root.cern/doc/master/classROOT_1_1RDF_1_1RInterface.html#a29d77593e95c0f84e359a802e6836a0e), a method which makes it possible to define columns based on the sample and entry range being processed. It is also a useful way to register callbacks that should only be called when the input dataset/TTree changes. -- `Book` now suports just-in-time compilation, i.e. it can be called without passing the column types as template parameters (with some performance penalty, as usual). +- `Book` now supports just-in-time compilation, i.e. it can be called without passing the column types as template parameters (with some performance penalty, as usual). - As an aid to `RDataSource` implementations with which collection sizes can be retrieved more efficiently than the full collection, `#var` can now be used as a short-hand notation for column name `R_rdf_sizeof_var` ### Other improvements @@ -165,7 +165,7 @@ From now on, the likelihoods are normalized by the sum of integrals in each rang ### Deprecation of the `RooMinuit` class -The `RooMinuit` class was the old interface between RooFit and minuit. With ROOT version 5.24, a the more general `RooMinimizer` adapter was introduced, which became the default with ROOT 6.08. +The `RooMinuit` class was the old interface between RooFit and minuit. With ROOT version 5.24, the more general `RooMinimizer` adapter was introduced, which became the default with ROOT 6.08. Before 6.26, it was possible to still use the `RooMinuit` by passing the `Minimizer("OldMinuit", "minimizer")` command argument to `RooAbsPdf::fitTo()`. This option is now removed. From 973f21312c025022f3b7c728ca0b9808cfbd3aad Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 6 Oct 2021 15:45:59 +0200 Subject: [PATCH 300/577] [skip-ci] add an example with lambda (#9073) --- hist/hist/src/TF2.cxx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/hist/hist/src/TF2.cxx b/hist/hist/src/TF2.cxx index 8ba4c8126d86a..da1f1fb039d1d 100644 --- a/hist/hist/src/TF2.cxx +++ b/hist/hist/src/TF2.cxx @@ -26,8 +26,15 @@ ClassImp(TF2); /** \class TF2 \ingroup Functions -A 2-Dim function with parameters. + \brief A 2-Dim function with parameters. +The following types of functions can be created: + +1. [Expression using variables x and y](\ref TF2a) +2. [Expression using a user defined function](\ref TF2b) +3. [Lambda Expression with x and y variables and parameters](\ref TF2c) + +\anchor TF2a ### Expression using variables x and y Begin_Macro (source) @@ -37,6 +44,7 @@ Begin_Macro (source) } End_Macro +\anchor TF2b ### Expression using a user defined function ~~~~{.cpp} @@ -55,6 +63,17 @@ void fplot() } ~~~~ +\anchor TF2c +### Lambda Expression with x and y variables and parameters + +~~~~{.cpp} +root [0] TF2 f2("f2", [](double* x, double*p) { return x[0] + x[1] * p[0]; }, 0., 1., 0., 1., 1 /*npar*/) +(TF2 &) Name: f2 Title: f2 +root [1] f2.SetParameter(0, 1.) +root [2] f2.Eval(1., 2.) +(double) 3.0000000 +~~~~ + See TF1 class for the list of functions formats */ From d0480627a3ad5dc0584af40776233d22d2c92c0f Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 6 Oct 2021 16:09:11 +0200 Subject: [PATCH 301/577] [skip-ci] comment is comment are not allowed. (#9077) --- hist/hist/src/TF2.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hist/hist/src/TF2.cxx b/hist/hist/src/TF2.cxx index da1f1fb039d1d..e69efd726f3c1 100644 --- a/hist/hist/src/TF2.cxx +++ b/hist/hist/src/TF2.cxx @@ -67,7 +67,7 @@ void fplot() ### Lambda Expression with x and y variables and parameters ~~~~{.cpp} -root [0] TF2 f2("f2", [](double* x, double*p) { return x[0] + x[1] * p[0]; }, 0., 1., 0., 1., 1 /*npar*/) +root [0] TF2 f2("f2", [](double* x, double*p) { return x[0] + x[1] * p[0]; }, 0., 1., 0., 1., 1) (TF2 &) Name: f2 Title: f2 root [1] f2.SetParameter(0, 1.) root [2] f2.Eval(1., 2.) From a03d1143091be9a0aa8e00f7d427249c45a1035e Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 6 Oct 2021 16:24:44 +0200 Subject: [PATCH 302/577] [skip-ci] improve the cleanup after the ref guide build (#9076) --- documentation/doxygen/Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/documentation/doxygen/Makefile b/documentation/doxygen/Makefile index 0e59267a75fc7..5e6f11286ee4f 100644 --- a/documentation/doxygen/Makefile +++ b/documentation/doxygen/Makefile @@ -53,8 +53,11 @@ doxygen: filter pyzdoc ./makeinput.sh doxygen ./listlibs.sh - rm -rf files c1* *.ps *.png *.svg *.pdf *.root *.xpm *.out *.dat *.dtd *.dot *.txt listofclass.sh + rm -rf files c1* *.ps *.eps *.png *.jpg *.tex *.svg *.pdf *.root *.xpm *.out *.dat *.dtd *.dot *.txt *.csv *.log *.rs + rm -rf listofclass.sh tmva* data* result* config* test* Roo* My* Freq* + rm -f Doxyfile_INPUT filter htmlfooter.html MDF.C pca.C + rm -f greek.gif hsumanim.gif mathsymb.gif parallelcoordtrans.gif rm -f $(DOXYGEN_NOTEBOOK_PATH)/*.root clean: - rm -r $(DOXYGEN_OUTPUT_DIRECTORY) filter htmlfooter.html dataset* + rm -rf $(DOXYGEN_OUTPUT_DIRECTORY) \ No newline at end of file From 9e539bbc04d03887c66879afd11c33af045e34b2 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 6 Oct 2021 15:48:24 +0200 Subject: [PATCH 303/577] [PyROOT] Produce a more meaningful error message in addressof --- bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx index 659111ceab553..411a57a862f5b 100644 --- a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx +++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx @@ -431,15 +431,14 @@ static PyObject* addressof(PyObject* /* dummy */, PyObject* args, PyObject* kwds // error message if not already set if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, "aap"); - /*if (PyTuple_CheckExact(args) && PyTuple_GET_SIZE(args)) { + if (PyTuple_CheckExact(args) && PyTuple_GET_SIZE(args)) { PyObject* str = PyObject_Str(PyTuple_GET_ITEM(args, 0)); if (str && CPyCppyy_PyText_Check(str)) PyErr_Format(PyExc_TypeError, "unknown object %s", CPyCppyy_PyText_AsString(str)); else PyErr_Format(PyExc_TypeError, "unknown object at %p", (void*)PyTuple_GET_ITEM(args, 0)); Py_XDECREF(str); - } */ + } } return nullptr; } From 7c527f4bf2d4712697862239ac31cecb8cb8caaf Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Wed, 6 Oct 2021 15:23:46 +0200 Subject: [PATCH 304/577] [DF] Enable DefinePerSample in distributed RDataFrame --- bindings/experimental/distrdf/python/DistRDF/Backends/Base.py | 1 + bindings/experimental/distrdf/python/DistRDF/Operation.py | 1 + 2 files changed, 2 insertions(+) diff --git a/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py b/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py index e53eee2ac640c..b4870ad881d9f 100644 --- a/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py +++ b/bindings/experimental/distrdf/python/DistRDF/Backends/Base.py @@ -43,6 +43,7 @@ class BaseBackend(ABC): "AsNumpy", "Count", "Define", + "DefinePerSample", "Fill", "Filter", "Graph", diff --git a/bindings/experimental/distrdf/python/DistRDF/Operation.py b/bindings/experimental/distrdf/python/DistRDF/Operation.py index 791528793774f..9bd7bff65796a 100644 --- a/bindings/experimental/distrdf/python/DistRDF/Operation.py +++ b/bindings/experimental/distrdf/python/DistRDF/Operation.py @@ -62,6 +62,7 @@ def _classify_operation(self, name): operations_dict = { "Define": Operation.TRANSFORMATION, + "DefinePerSample": Operation.TRANSFORMATION, "Filter": Operation.TRANSFORMATION, "Range": Operation.TRANSFORMATION, "Aggregate": Operation.ACTION, From 1d2f52894bbb4558a102443f76fffd7a504babbe Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 7 Oct 2021 11:18:57 +0200 Subject: [PATCH 305/577] [skip-ci] Fix wrong formatting of math formulae (#9081) --- geom/geom/doc/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geom/geom/doc/index.md b/geom/geom/doc/index.md index 714067ea76280..29c20b80c3f5e 100644 --- a/geom/geom/doc/index.md +++ b/geom/geom/doc/index.md @@ -1902,9 +1902,9 @@ problems. These have to be properly handled by the stepping code. Supposing we have found out that a particle will cross a boundary during the next step, it is sometimes useful to compute the normal to the crossed surface. The modeller uses the following convention: we define -as `normal` ($\vec{n}$) the unit vector perpendicular +as `normal` (\f$\vec{n}\f$) the unit vector perpendicular to a surface in the `next crossing point`, having the orientation such -that: $\vec{n}.\vec{d}>0$. Here $\vec{d}$ +that: \f$\vec{n}.\vec{d}>0\f$. Here \f$\vec{d}\f$ represents the current direction. The next crossing point represents the point where a ray shot from the current point along the current direction crosses the surface. From b085f726787e982b4026552e125e7f467e60de97 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 7 Oct 2021 11:44:22 +0200 Subject: [PATCH 306/577] [skip-ci] Move the units' doc in the right place (#9082) --- geom/geom/README_units.md | 40 ------------------------------------ geom/geom/doc/index.md | 43 +++++++++++++++++++++++++++++++++++++++ geom/geom/doc/shapes.md | 15 -------------- 3 files changed, 43 insertions(+), 55 deletions(-) delete mode 100644 geom/geom/README_units.md diff --git a/geom/geom/README_units.md b/geom/geom/README_units.md deleted file mode 100644 index 243e22be87e26..0000000000000 --- a/geom/geom/README_units.md +++ /dev/null @@ -1,40 +0,0 @@ -# Selecting the System of Units in ROOT # - -Historically the system of units in ROOT was based on the three basic units -centimeters, seconds and GigaElectronVolts. -For the LHC era in Geant4 collaboration decided that a besic unit system based -on millimeters, nanoseconds and MegaElectronVolts was better suited for the LHC -experiments. All LHC experiments use Geant4 and effectively adopted this -convention for all areas of data processing: simulation, reconstruction and -data analysis. Hence experiments using the ROOT geometry toolkit to describe -the geometry had two different system of units in the application code. - -To allow users having the same system of units in the geometry description and the -application it is now possible to choose the system of units at startup of the -application: - -``` {.cpp} -TGeoManager::SetDefaultUnits(xx); xx = kG4Units, kRootUnits -``` - -To ensure backwards compatibility ROOT's default system of units is - as it was before - -based on centimeters, seconds and GigaElectronVolts, ie. the defaults are equivalent to: - -``` {.cpp} -TGeoManager::SetDefaultUnits(kRootUnits); -``` - -To avoid confusion between materials described in ROOT units and materials described -in Geant4 units, this switch should by all means be set once, before any element or -material is constructed. If for whatever reason it is necessary to change the -system of units later, this is feasible disabling the otherwise fatal exception: - -``` {.cpp} -TGeoManager::LockDefaultUnits(kFALSE); -``` - -followed later by a corresponding call to again lock the system of units: - -``` {.cpp} -TGeoManager::LockDefaultUnits(kTRUE); -``` diff --git a/geom/geom/doc/index.md b/geom/geom/doc/index.md index 29c20b80c3f5e..9c58b791030e3 100644 --- a/geom/geom/doc/index.md +++ b/geom/geom/doc/index.md @@ -12,6 +12,7 @@ with simulation packages such as GEANT3, GEANT4 and FLUKA. - [Quick Start: Creating the world](\ref GP00) - [Example 1: Creating the World](\ref GP00a) - [Example 2: A Geometrical Hierarchy Look and Feel](\ref GP00b) + - [Selecting the System of Units in ROOT](\ref GPUNITS) - [Geometry Creation](\ref GP01) - [The Volume Hierarchy](\ref GP01a) - [Creating and Positioning Volumes](\ref GP01b) @@ -334,6 +335,48 @@ TGeoVolume (mouse selecting a volume): Note that there are several additional methods for visibility and line attributes settings. +\anchor GPUNITS +## Selecting the System of Units in ROOT + +Historically the system of units in %ROOT was based on the three basic units +centimeters, seconds and GigaElectronVolts. +For the LHC era in Geant4 collaboration decided that a basic unit system based +on millimeters, nanoseconds and MegaElectronVolts was better suited for the LHC +experiments. All LHC experiments use Geant4 and effectively adopted this +convention for all areas of data processing: simulation, reconstruction and +data analysis. Hence experiments using the %ROOT geometry toolkit to describe +the geometry had two different system of units in the application code. + +To allow users having the same system of units in the geometry description and the +application it is now possible to choose the system of units at startup of the +application: + +``` {.cpp} +TGeoManager::SetDefaultUnits(xx); xx = kG4Units, kRootUnits +``` + +To ensure backwards compatibility %ROOT's default system of units is - as it was before - +based on centimeters, seconds and GigaElectronVolts, ie. the defaults are equivalent to: + +``` {.cpp} +TGeoManager::SetDefaultUnits(kRootUnits); +``` + +To avoid confusion between materials described in %ROOT units and materials described +in Geant4 units, this switch should by all means be set once, before any element or +material is constructed. If for whatever reason it is necessary to change the +system of units later, this is feasible disabling the otherwise fatal exception: + +``` {.cpp} +TGeoManager::LockDefaultUnits(kFALSE); +``` + +followed later by a corresponding call to again lock the system of units: + +``` {.cpp} +TGeoManager::LockDefaultUnits(kTRUE); +``` + \anchor GP01 ## Geometry Creation diff --git a/geom/geom/doc/shapes.md b/geom/geom/doc/shapes.md index dfc0833eb1311..f20c37f786cd6 100644 --- a/geom/geom/doc/shapes.md +++ b/geom/geom/doc/shapes.md @@ -2,7 +2,6 @@ \ingroup Geometry \brief Shapes are geometrical objects that provide the basic modeling functionality. - - [Units](\ref SHAPES00) - [Primitive Shapes](\ref SHAPES01) - [Navigation Methods Performed By Shapes](\ref SHAPES02) - [Creating Shapes](\ref SHAPES03) @@ -53,20 +52,6 @@ Naming shape primitive is mandatory only for the primitives used in Boolean composites (see "Composite Shapes"). For the sake of simplicity, we will describe only the constructors in the second form. -\anchor SHAPES00 -### Units - -The length units used in the geometry are **arbitrary**. However, there -are certain functionalities that work with the assumption that the used -lengths are expressed in centimeters. This is the case for shape -capacity or volume weight computation. The same is valid when using the -ROOT geometry as navigator for an external transport MC package (e.g. -GEANT) via the VMC interface. - -Other units in use: All angles used for defining rotation matrices or -some shape parameters are expressed in **degrees**. Material density is -expressed in [**g/cm3**]. - \anchor SHAPES01 ### Primitive Shapes From 2e086b4b108fa6ab4acd0d67bf1522dbf05efc09 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 7 Oct 2021 14:25:12 +0200 Subject: [PATCH 307/577] [skip-ci] Fix formatting issues and add a missing picture (#9080) * [skip-ci] Fix formatting issues and add a missing picture * Better placement of "Figure x" * Fix wrong link in TSpectrum --- .../doxygen/images/splot_fisher-bkg-sPlot.png | Bin 0 -> 279834 bytes hist/spectrum/src/TSpectrum.cxx | 2 +- math/splot/src/TSPlot.cxx | 63 ++++++++---------- 3 files changed, 28 insertions(+), 37 deletions(-) create mode 100644 documentation/doxygen/images/splot_fisher-bkg-sPlot.png diff --git a/documentation/doxygen/images/splot_fisher-bkg-sPlot.png b/documentation/doxygen/images/splot_fisher-bkg-sPlot.png new file mode 100644 index 0000000000000000000000000000000000000000..afa452c2ee774cef393bfe991243784d3072dc72 GIT binary patch literal 279834 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

      0>+! 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%0AncEa>pj&?m(QDKI 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

      @Y**F z^*?4Gvgf$E+V&ZXh<0#Uu_)$nWl!+yGUdRlZRfQnxPUX=6vG6dgGRdHj;>#t~YJcvP5i8;5k8jU~g#Bvy#dY3T&nLmU zz5RgXhIR$kU{su&dL}GcaCdm(zhD3D;PAC|cZwqTe{jK)zeMO{sp{XK_(+6CJBZfz zkMkb5G$0RzpV^0uH^)#gA!8Ob*AxrO{e<*Q@m*?>JsSK@p$ zJr3ur5~DhqW*&ML9`J?B6c22Em%7}Ys_as!SrqN<<3kA_@6Ve;{t!t3e`zz1?64jl z7tGOA!wG0B%4|337zG9OD~z8oROKnAbKffj3#fzkTG52;Z6MmW_BO4UQ!I4^+&!xk zf-YmL57wU0**&`ZOy(c4h#BlHiQYp$V-1sM)mE?Yr7w}Z$q^3>poC?nOVh&=*%VB- z@(Rj5YIn8^&<-CNtpk@Me7?gB^p)yEWQKG~L83X2tU#hR|-=_VeXVdOPS z{J>Ekj1{lh`}A%wgr&U)-BHC*+afkY{F^oN z^9oOf>L<6ki?G zoio_~8QrpxzPmA6X8+ubd++CPKo6%5GKB|fmK5l1KYB&Y9upTAU!22w<}lg+!P4^Y zlOZ93JThyQH~&q0Ns=cXFsaA}B}ghrPF|6yPG@Tk#tL)P$BHB0huurj-;us$2s_kC zLyj;&>Z-laJ342%^W27K!xm6@QSw8UhtZfC^%L7ud$?HunrI1ag6U=%wP9=pjc!d< z290vwJ_3azN6aG_7Gz#Au4<#@?|6J|c8nbNnF84U==AF} z2EGjoS^CJ*|Ni&49JEH{ef?t^ma8!<{cNBUdC}^8w(j&tz7*~9spy#9pcxINTc|$R z1=0f=F`an7g2v3^63)mo&^x7RKhPAy<$l%#$;C_9bMwk(OYURk&yQo6ess&${G9IA zA=iBmuIKJLGG|YzJp#w=?+AnG?wXD`n-nWcT08B7l53a^#gX zNH{J;3GqT5S;4~FnQZ{+J-F!9mYwAduUoj^U(mW=KY@h>W=`@8z;0~;mj_tnEs2)} zYY;d{tuEeCZnY-UwIZwpz=V@_?E6LTXAk%ZTLyB4FPy|bmjK$dhnM6I$VhLQ4Hv6& zJmFKW25pQI98t3=#{k?cN9;ZE-%sY|h?)1MQgN=ji1?}N1KWu+qEcESP0T(&m*z*x z?>G4R2%WmWhn>~Hnk(v8U!4u=;R^cW`YIr8(Et#mh`embc9`(B)0Bkdc3s}p;p3uj z8ze)PRg)v1z3J_LQRj`?To+cC&CGUDF-I+}WsKa|m@$Fz#L{8!_D{GmIso*u0Gyfv zH#g?lGrwMzA1eO|?3)Y{lDwu3^KZxVP^yDL3YWo;ms!v zWDkt4I>^@9kX=B;3hA5%#IqIS2V_|0l(AilpkDQ4Mf*OJ-jmU`0g9>+IK6H;l}eM| zr_T=$jPR)i(V-jA_9&OnBQqe@{dWzb#s$;C?1|&jGxa$s4b!7Uu)&H(W@cR=>$AP6u2H()8`VI%VG0Lj`-0&qJk>4C555Ausd8A?`iA^^{P+;7_@R{DJNg{6j3^Go@c|cuVrC z__biz(*A&EqandK=Y6`}>h;DjgU0_$uq9BUao9o3)KP}^A z;4X%~$vM_>2U64CX7!sfMS6S7b2q?m*8wKhm1M1~W#c-kfHF!15^I9PG)Lelc|o8K zibK-j+h8|uNs>KtX@p8cR(3AJ{_<+JA<#yaq~^kzthayOKSRmj1YpU-(3jBJx8un} z(nqS)Er6t6J*915hd_y!@055AC!e{!3&ceVz#(@`O$kpP0GgBtQXd@{fO;UKs!zPL zG9(QgBQvN{q8^7`ukE+`2B(l*a9ZZ~*}N(h6k;12JciX5*(=06(PlIJ?3!7s0Lgj! zSX_omw>uF+k}#_ooApQx2ML>)D~fKNg@k<9Grh@!zD)wkaH@ch*QOilwmZ6O_QKg% zX87lleplx3RZ~YEL#ckmFV@1&l89`);xJrDv@ld_9o&hsI7P0@nMQxi$Sg7=!y7h` zsU=J?ReXyZbcNBJ;YI_Gu7pd{Wvp12V0~2|djv6OsHlj@=tF;z6{%*GrVxMN;<;h> zl)BFqA`IM1RJ-+&pK9gu&<>{`eoFrR?|+Jc@9E6@BAl$?2fUq?r;WPRT^>wn%*@W~SD_05)gEh9u(;5+u=1$Du}I80(ybR9R7yIp>f=+!vA)~~o(S2B z%Umz!x2qy+*VcUM2B8_337frP7Tf+&U$V~#U+4FXu*lN8WH(nmFQ^|3wW~yu%K<^l z{^1+}_qnPZn@3!5u3el&%5Ly0GTU1|`h+w+V0nqG87+~0;QI#qnL)z_jJc~{pDD4br%GK+wCbepn+S|o{H`ctAGPH`6viR!Ts`h2>?jsitveM%Q|Jc*N`&gN(Ma%$8Lxr_7z}o!=Ie{@wRse{Q!z55$QFx3cX6m-}f_ z#cQBf8Ll)FKMxgX*(=pfIq25%Ui$xjq?Si;0AqP_h_d#T+)8?}z1csmi>ImgaiPAt z`=Vl|A>(sG7my0?`{QK`6Jn&JY(M@v3qMyogoT?RMlX@k17>GnT=n!@j+fU^!|^TU zC;LS?|J!B|B5j5g*ZRI-BN|6oe>@GQ)YX6d_%RyY1GADH_Xar(rJSYOXTU!Tl^6h` z-0li6BX8USG9KGBF8`mF0-N9HrxxhDdQkdPMhhP+Yd6K6Y{rTSb(;KCy zs0G!p-WAOA8pya*0QzJ_(NDfQGo&)d=w_FIR4gfrrEgB%tqyzlW|E)F*lTS-zdY)u zzh<4JIoK`>J<-*w3^I)@Ulg7tSgKpq9m|)ABKB3)|8Eyk$prsEY9#UN7U)9CUdrUi z$c!xZ-!qc^AxT#w6a1E~efV(y`C&5DdnMDNoduDvXU}UECfpVBz~!uf)4>TuQgu5$ z%~OK1vgcrPZz%c<$QQEBNaNJVhjrGl6gZ935p+W;BT?X{cwYB(n= ztQnh3e*{boHnzU3YF(b$GwsV2H=B6dTz$uz4~?cI(05k)9l!9Ef(65w&pUPMwOHX0ikg5@M(O`Xvh*&NGbYJCsi`c zR#O2fdw?R;$8MGSPtL}HZl0HZbiVnH7H$@ZXDgx$PvPQf?(*u#;TTa~xNyNo$1?|q zD}ReH6{Z(e44wxxwS1@r_0uqz0qwM4r4@r7Dj7WUaAkz3NnTaS#mkNeP3&`owt_*W zDpE4(4&I>=)_tf~$qlhlLxrB$D1YwE8G#=S8Qm}v!q9meXi!Bhow71)VOK9aK&kf5zPv+w0phF{zOrw6m=CLFE?60u^u6Di ztcw3Pn8QW1MB)wqm8jVz(hwE~wnSl8NV&uHE=D#eyq-b8pcT!{(ZpvH^?1Q|?E?V` zrJCA+{wl*AhI}#byI=-ZKx?-Irh`&Ic_I;&pKU*}Lsw2&kOUGYl4yciVPUAeK2|nv{^i6{67tsT z=g-VS=U=i7%V_c^QM0*VG0+VwK{*{0l_hz(8Qb`OU-r3i2yD?J{zTl{*RVPt8?N_K zO*Um{wE8bhU3<>eu>8W0n~jgbhH3`_rxkUXKe-~8{rvZUgKu`sx^1mpCE5?Q6`>n1 z%Aq_{XCeAml0SxX25FgPUh?c*rMG7YaR(>Qkm(3Qj^mh^o_aP?qcWZ*13686m&&Ee z2*jcE%;QwH5Q>Rlg1##q*ihM+w)Rar$F^=#%Qw(|Fhe9vqZB&%5rs*=We7f|ii`JS zeS9KaQPTP^Kv^jrN8+CU@+$_}mYtLvHLtBo;akr5FhwUQ!I+U%=mh2al*`Y2UprD> z_DzBP#!7X;sS~i$^#Nx*348qqn%I!yb7W&jorVWI`uVLuj5~a#6DQp-j*dH$KlupN zB^Q*n+G#bBW7dyckW}J#i}Qw8J)ONJJ)t1~x&5B%wg`PNzfiF>y zWT*<*{$$`|+9&3BAcgXPmiMyP8CoraXI|xWCvACpuZi_Y4my~sn%g6YwgW_HQH41 zO&G&u|4;+ncD3^aPmLFB7fnM-z8^n-qFm%+&(H%f#_zQJiL440ZgXMF=w(q0@tL6% z7@XB%xKtMUonOp^O3r>5n4>N`@O`DlNp2Ip{I+3nCoPX#1UG;>4fR-SPB$$&} zq59Tk3l&oBMBby7sEH7C6y6nZ{fGUlM!@er^z+wGiJm2Jz5r4`L-o?Bgw+3}VYD>7 zP<&E6U7=bu4i)7>WoQC;1zz&m{WQBXO~^$bX)};x0_a&D0}H*Qq+rNOl)dD_cqnQW zEqU8>+fJf01pDOvBoKm1P&(THQ)MfC+d~lWGGab@R|Z4a2<}+fJLE8ycw6t&Op_5# zd#BSkz(sxbKIi#D`ToF_uN>#3?w}N%E6lyXyO)czan4_W*l7)MiTx?Dzj<5q<`gJw zfD`H;b-8PLDF@gS%_sUQ!Y%b@LRP_)kg2)3x%h)jljfibso45aD~K=IVu0$~m&flJ z;5yqG$${Zc&uQE%s(V0VIz0keP+8U%DAWDxUK?(a7b5PNVWCuoXMu zCn0A$dGh4P98vd;Hm`cnN``!+!TamB9m8o)g&fzAq@*t#LC!~S4$=bc@=;j!QXJiU zJIDa$p=?e^|2U)XAN6`VvOCnxbAQ*xM!W`+GqW>3%@ysa)QnLXF2X@5uPZ_Y7TiOt zF2f5cQDvBYu|!J3vM?gUttR6nrDEfwcx;-UNm{)*@UWSfcQYD$93sVo=P=j3GC3p_ z`?3M)t6}_}9_%#vV{3u=uOQB$cPo(i5!&$?R$6LnFZS^I?mUb9jQv3Gc@DCfru*d? zKRS61mgbCO0G1xSzSo{7t0GADNLH&0iQL3tk!@|q&!yC8q6 zz@y#nff}s@^*DpWJ)j^a>aSy%uz-a=Tq&wl?j|vUyzU8Ip8F>Cmm<(xafq^?AL!AD zUmFZrdMkX>rnL>l1E#pCQ^d){W#bh_k1J9*4Ky!m3~}s5e4fggUFc~wgMwTK%d6O) zwvO&5W0^IPWCoWJzXKpF)hcn5FTWfB3(u~0(%A_a$zb+wok?N#!tB(-fuQ*Xe9=KV z%J_lz0}MY9pJ&LYDC>^Mz)mFaQHpDqSs0MH`WoP>hqoCo*g@H4J(MrYPGR@S&bpaQ zil5nOku(jt$zaf2C{6LZ6uA)K~Ue+_aA0T!4i`;@W&&ilM!fMBQ8=tE@2+P zuye$3nr2ee<9k>ImH;mMY)(eb?PnUlEoJk7LH>Ee+7g3(Jsp@fPy(E{gyF^z`A{<9bNWy8 z?r;7dnT5q3P<;cTyWl}bJG8!&AJ4G9FCr?M%Ed&k`>Uz7ZGKFG`OeVvdjj4v^OwN; zz5U}Iuk@0Z2QHioi^*`Y3iBtbVwNOX;I=24Q(*LfZ>aP2_N6GxcUuCpw-_%wjz&I- z%KbY9I|l(oL3Jkd%`IHyrHT0)ihW;U3~u@evuxTGG9r7CPLkS-5c{>iFuOCzaaH|* z&CCfc_#DsqyTX66I?L_gx=Tu(K{nZTKM}J1a^_p@$bI&k_f7rAI<6kWT!L3*4FWjF zkSE}EVJ{2|_MFBsUvc`^=^RuYoZh=uB#xzu{T5QDN&*^(-VaK*L@2G@psqd-D)Jir zoY9OBmQQ!ws22k2QbPjuAdV!#);%6cYL~?;-sg_6yHc#Xii7R>lALlNTc|VawB=)g z48$&=2sJmd`+yx4tYI`ZbrHiwj4ZF{8g}5p^d}~h+I>?BF4f4GwEOounsLUn&^}++ zO?HHje`V_B+QB84X7oQj+=D=fz^eR?xxcEHq=aMcItPG95uZ7e5o$;Db5M{1t06O_ z>P#NxJvB>l$lE>;Fq!4r&h3KDN2>7?chG3U$+JXRkt_EEujjvJ;InWtGKrA_Wt!cnvhvnfs2Rx?9@u!wBoUz0{wcg# zVDoYeI%;|w=`WBKJ;m6ARQ)NFqNWqZLN@D5TuJiJ?t8tFxj+sT&lIz{QwR%roF#@Q ztS4K5`|FrjeXa@C@|5^ckoQ&p%>;~-W7rE25+qji>*8usNl;xZ>IOzz!D!F%xSFua= z1YpmH;b@%ezTkSBR7IV2V2IyGo4*KXJ;m~E1q|hs45BQg=iF5wbpIEgy?Z-|7claZ z&~G&>aRluOR@i;v_!_miJ8!==USpTh`3^=m7pw8$E;axrO2n)|FX&m z@}5Y!lckJcUBebRBO8oH%m8-gPPKX7QU-4V?UWLS4iuL5ILV7G@>v>XQrxUGbf?%+ z_0fzY_!J!_dmENN#eld-3CS|S4G!Aw&z>s0S8*tE${bFzdTVQ==s23T0~fVkvSkcQ zRlQXyfRp$q*flOfi}w_L(G1CTUp@_Kxi7?uJsy1<{8tqsfq7LG^5Tt%Szrxhq@{Xg zOlcxBtCEqp3RI+~NNwu0w;QJ9Da%pV%8`2dytB0c&}lG(O|pQJsW`Rp%6a5z9BjhT ztCRm?3!pN>!Z>;omJ1oz2$t)XXHD2knhOUWG)8yJ&Ip?!O#w*nLHZv&cQjI<<42(Tg5*6H zI8I8T3g+tQ>g8!*m93#qn23S4`wMkwFF3}Ql=LFh$YM{ZXxW3ptM?3%a?6HG3)ErE zmQvVI4wXaKAeZp|j>=#9P?dcP0q zkBLT~8q4UDmTZ8J>V>epyy7?k`#Y)+!v^C*sIvnC0;;dSkUMWw;XGPgd5eJP2k3K= zAt9k^7a%lJ8w_ELQ@H=QN5tU`6tK$kkiLVFuAnsCI#B*qtxnHJcC~pJ6;1V~q!N>{V3;Is(}MvqZTws)zck1>_0gd! zBHqEBq0NA$aiH+XNdY2c4yR9NEK{a;&VLJTf!07MC+^mc^TXI@@SZKPj+HQltKVe| znO3OnHDNBF^t^qWZ3DRU+txQn9+L>=px0{>96xa!i5iEW$YADGHqwE+gHEez5qS3_rg;`uBZH z%7WALF+S)8UKY!(s)(>-VT#?b_>DdCLyQ5PGjI!XvL9}&P3quSLqDR~2VZbe{+@Y6 z7@N3^2SXbo`Ejgc39SYW;ylL`j0BcUXLlZg$uN<$a9UyUq1`PKH_cQJ_58vsy}C0l{Q4>@w+oONVZ>9vQ+ALQiJOch$=6ZnRW$H=fcv%;3{qGbJRg@{ z+k5xwmak7FIWUC3uNHBYjU=orJ^% zTtir&d95V@JEBPE)@E7@V(aekUDFm(gD-syWF1k{(ExC2YuqL5Gq=NgMEZ>khNm8e zKF*NJz7a9;$nRAHfX}iplSU$mud2fTXc(FJWIuH1Ej5D`u~}6NhHtcC_K-#2C7V_4 z9D*zFi9zEhD;oL?AX7(VV03l-Q2{cLOx{;61^j5<++X}?Jd3?)gB#-4!2lg+8Z`T7 z;^|NQ=y~$2D_w|J>0OHHe9@>%c@j}pcyB{6mUChd7hcv}*tZ1;st5%3bZ_qEad|q< zHa6pis*Y)IPlA_9zhR|c)W$Pr5I;SYUIxZSUCKC=j1#L5p1%h=m(=puJ9qAMM`)lW zFc29I{S9nemP@3VY=C^8lEo@MuY?$y0YyV*qZ1QvE*h<%7I;W*X!>dfnckS}J4+mY zctU1&-eMfq1C0u5mmBIBv_kQy_n3DT-5bf zXI_M3^LM~3PqFN)^blKPxlos*^#2G)FbVzb^E*Z^ySI-&9IS!XDExQ?AK|xJzmw6>Bz44=EY4Ac z_dtJYDk;M)vj#S>3dpA8RJF^F`|Zv5(V6-o)44~yYHm;g)QAEHK;)(TJcKiQ+GFZ{ z4!7R!r{RV#R9oM~S!+8iFTG3%u{}liLjkj1wPg%QhQ&+rp(6z3tRKmGKR)vIf|Kvq z%43}IKbf2zge4jd`Uj#Y)gE3Q0$W&7!wGzM`Y)z16U4E4Z7k>dtMucKF<8L{hMTE~ z6s$(+Vz`bvhy|=nF2|g709Hzyyj_q={}`~WCNcRtfkh^q`JO~%xSNOx!3Rt5<>!Vg z_5h43P5kQ@4uMonV%cZ-jeG1f&0&YIU>z@XX%QtE7F=1Z6^O%M@B0w&IXKqgt>$#Z z7apDGw~El;l2EgWK{SL_HzY~06W>sHw1KFPl6Yr(n?#VuqLnAV^S>#D?!TW+RLcJL z=P-M*@gX|)WDdbNi`ygz^Bj9^2NYg4K#^zrCuv>5V)e6TdA z5DfT2{4P#QzdNT=IoEvZ!SNHf4xW&zEwM<7PGtx{!_psmnaTVG)+foqMv%y4ErW*O zMM7a^Wo4S&5-+kX%epsXsEX!4A}B#t_}a#3ZbEKez8ZGG_)PydqJLiW2V-7AkGviUvS_;ZPu(eV=J6ge2VRyA>KZXj~ip0S(O@=(Lo%DS+zq6 z2?;P}@;1}n3pKeZ9A;O~^4ZfN&RXTyfE70w-bYERv zbr>_PM2d@Qb(QhgmhRCjR~P0uwM!CaxVs(6hcY|MF(vCHf-ye?8-b>}{p?Vt zAP#QUQ|Z>DAgbVwNi_LlqblgxmglNv)ZjW^nE^wNSmI}o`^@v-W!ElVVxW4<$C|+T zq`iEPiovz3%;)U=mXX+9=ow~3$NA`#kS%Y$&PNnQh>cpf;}rqO)3&`}TzIhSMku5S1sEMXi>7WJ_)Db# z_*eB=psmL**>TKj%&^_5;6*rp~iw2 z?mVj-(WMiuS?_Aix%?^2>o`d<4Qn_$ijZFKabQQUV00{ws6o2357XR-oG(bMXdD16SZ=3e8(&gz@bdF@2WpCscdARkYncRB1 zOGqKGHi<+D=d7S6>?}9J?+{b9l@bZp1ZFzVLO7lohEbzb<&omn?S;QfFjEfX1a_!O z@)F&;_J8R54sa~{_Wy`N$|fnBC?nifnHkx#iHvMX_TI?|8JRcPTV+>fLS>UtX10<& zGSc{;*Bw32`~H9Lb38}K`yNmCeP7pioa1wT&d)hs!veIde(AFOav*w3Z_U=#8osAh z2R4MV-n%AWLN&D73F&5}#vLmE#8-x9Rv@4h|MoCagZ<>W$Vo9w?egkn!#kXBfSPQ; z1l(3wqFD&&)Jf8y6EGGSZ5K!Nx9+ozf$!3QfbarHDQJ>?1Wc?bR3$aLszvE+N+2s+ z>0xBGOcL7r8_Ct|>Ukm&nN3U|Y8QtYu`7ELk4nqOJ(vNn)SY z%Q8#FQ63ZYfzh74KHr@Kt{ZEPq0~rE3{R#8Y#qJe;yntu@+FbT>Rosfx?QXF%GYNO2S-h##Q5Q5@Qqcal&_5b)3Y9dWbx^~ zXz3M6GO`F@r4-a%DW!a)V8_IRf3azGyf&Y6@zyE9vd4Q>Zaip(&Q_UcnqvV^z=-72|R4d*L}-nha3=SZCX0?ucWf{g*eKIsrQ-p z_N!PJ*{&NdecuzO840>6<-PMDDg)okPa5=Hgf)=PWOugNtaqa0U@dWXbnL$xGhl%x zF7`H~Rp8|`28kyvS>~N5z7fplBLYy4+wv&_PYuZqE4~=YfDi-5mO0mwqD)9UR}KA< zikLD72>BG)$}-q|jlVKtV<-J7Sz5VXV7>5O68_W)5}(#lcQDg~FtFw+B>Bg4RP^od zTZOW<0*uMFPTa&#YtO*TClyQ>3sZjMHON+Z0xD(k2eXdY(}oTNy;*{;`2iE&+a6ia zf0!-vfHICz=0WSC!F@%^{xeKnVh6b${W?ypLN7U|WghcRFPB6`+DVUR!@V}zl_iBO zNM4L|Z*)Lp8RwJze!*lNot~cF*iZ)DYUF&85@l&POR4^%0HPa*d%tR(+Xq?r(_9bV zI{72T3nm zA%;&#IDm@=#>5_UROW&is2SD!%SnfKo%9C!!wt92W!c`Ad&J(NlrQG$A*&M@p6byi+R6vy!rli^JRGGcl7Ykd11RS zQotOBZEiqzn^Kfj&&WcM)!~J(arLi_wi5k&dsO5xIM}!yRM<}=;s6mef-10=l=8X2 zU@CWAzJXLY^k!+bwVDJfp**gD!!I)`vtpYm2tXrF?D!W_V8(>sKLppHzQ>3X47tSl z@y6uHD$BG-saDVVs~y*&b6V##HY?8%xf43BZuIJ&$g28>?Q-=;(#}lo#6o~ zE{it8YYKi|;r^i)CMkQssMvFsrS2^MepP%{VA;I>GF_QHj)yKy0;S9hLRt~sIX&qX z3+R~{Y(d&FW4Uf#uE0|!mbilV5CI@XKG5Qr(CH2~^$~36uCwdjJVm2EJ0P+38Bi%) zA|&?>VH|y%2uZ~*sj1h2V|Mq!p|=UX?eVHAe_UJiOL&SP^OybA**6KRRi^i^i6>lB zkl&U(D*sLXyuXi;@|Y5#%*9jRIVfqLDtMe z(sWAO`!`e=HrA%3VCZLJd$k4#&q*m{W^&J_Ks6F_@xh{Y$YU-j7DIysp6#<~4Y1bQ z>!tIM*L@A>0*rDFga#ggv3Z++@i|L?5KscCEj4ZB4!L8B^jqKg@eQ79Uj1mjlgfju zta>NY@Go7Q1^?(+2|}7-1>)kEhJBB%rh2~0)1Xc`TlizzNZxWb-CvXdeL5bXo>pj? z!F>pqE#L zeU?b+vfBy=6m3wq6Qdu1uW17rv=&7#dz{Sp|G&?tlpFgwhm~y5wbnU5t_~xQA(pFqS?g%A^C-&upks zR?!M=#z7;4gIXZa&J0B>l9zeLYV<&G@OL6E)q&c54uo**a!#gZS5gkj=MVZKE~9&X z?}+2ys8%xkQO<5t<+%!tPVOihuEHPs=sTu|zlB66{y)J8SdW)E0cTf$N0-wuSAl|E zt0?YG0aEH5?s<5cr|FhYITL9p@Cq$7&v>gIoRw~Q1Ra}AOcC>`SsJhXcqtG+`?a&H*Biu?id1k05iKL`}nAyh^538BcqAdiRYhhI9pEk z$&fz39S$>)sLLOC^?#V|e_jtgWB*Z1;>Nh;EBPd-5&(^GlxLS-GdHW_0?%GjQXSN* z6kXbU<>=4A-+FJqcJyF9g;=okDUgw$+`5x59A;#pG8;BE1T6w8km%=R3B_2R`cQ#H zL)}u1X}Dd`-dQ*yENy)z9;yNz2w4*1SL^_?xxKJg%=T?p@kf7V58H7q{3b(WeX+x~_*k#sZ{J_4g z#rks+pyg`)Llu>Vz@2{IFf*;&TwjlYgWCaAJsja>Wukpk)XX*bspG81Jy3kR1S}yX zgx-sVg;kRs$73oBb*r!lI&nh)HZn)9_YTOsIn00{<*>Ix;=3z#Domhjn;yZhaHs{q z#L58ywbsRMhM*?e6V-kqq9SkJXlY#2lWS~893u6l+QY8YEA+;S@XG|jK|!ssG)T0y zAFf6)_YiSHm{&L53Q_j3m8JP>f}^#vdnH8(fUL2ol+o4Y6l43tIawb3X89UUE*G^vjoy=V)wgOXDL z(H_3FJYK6qE8?J5rTnux&uxd5B7l6Zo_;nWRa_)n(RjP{poYATQ zIxazAkpnJQEYS4|yzVe%xo1oO({uqe&LoD+kT};6dz;Iu$ra=mpZ0-9#A~m5?BZcy zG08!Ri5Z>%x^?Nx{^eoLrXuF*R4EWlh#3X#hS(}BdSZd_#(tY4RI0Q!&^{T|!}-}I z2Xfg4${FtK^7Lt4rP z7KHLmTlaxoZ{)%s0=6D*AXJ1BfEHPNc9ZoZnP`T4lDPAi>xEjy3G_B$_aUOG#up0A z@Ibn6GfYA7GWf*hXhHYk7ackC$NAqZex<-SD8Jt1`rArimusQokCA(J?|&FMI8i3& zpt_}IPPDkNz#f|O1F)N1Ksqo%j))kPG_M!4UxP4}wlAqyswL>i_xIQ63V$S*7S+2h zqo3TUQjqb5@d46e`%8S1qHsBo3WXw>x!=Lw82jPGLZjMGB(pVxX)7C`S9&eaK2)Cc z*?FKz*aR3uoQu#Tcv9B*z)g^m+T%!)X;-w;89-|(#M7uB=a$}QhbX8%5?sQ?RX+dY z*=Fot7D+0!QG*+N1?LJ(Zz6z{7Zsl%R}QlBT;R82JMdXZie*3`Rvdx?c>lrJ(%f8b zkkS%SxE@|68`87`w*u)m9F$4{xdl0-(P?LfhP0F%HYb4*4E+Ih!55#oDg&Ry2|{Kh z;%)xnkdXrTi1kFnJt!>Q)Z=a%4uZ{r$V9T2kcbHB`U31gc@9ovAnt%C?us(fzx9IG zGBzVO{B&mF@i3Qz6++U23`|;Jd=6I1?C744@ku_jR^rz!*dCl)1RLgDx}_2zT*C>r zCDIn*GqEe`4Vh12DGvm?BH3jsP-o`)fY$Fk&;@>z66u6zJUxtm=<4|ca>!BKH*1&y zD|!UH3${d3rf4V-#S&0lz@z+5!DXQ9Mw0oy0g(o**$o1&Ho!q_xGl|N}?|*5#ik$!v_XB}Q zxII#@r?)|OMOw0dp<%hs`0q1YBEM9Vy$a6^Oi85u@cAJ^%;8n`8<5vB(3neKu4= z9a0FLv0Aqh!qb-|I47Ge>jU@aAy`#}7cqmTi_VKB$SIhd#W^d}8xa~xoKw69w{Ott z2-D~=U~%#Kwp-^XS zat@gF6hqdTlbM7YKc5)AGNcb`66+{v^j!oNHe$U4L^=P@du#Y21Am?LeX{P^U1(U6 zR%|1Fl=kAq3+TEr;AHHCIf0#Be>yFv*#h&d*~;iW0i%xTAy)d9rvv5J1+Cfy=bkvj zv7O(yiXH-LPaPI`_ux7qh44&F&S4MA2_AbJ<^jtTj2sNMaLh%|C_j1j`9(2V^a(Cym9lBH%Ra|_#@~0BrRUlX1qnYgm?tKJI6zZuAD`7U~0mr}@9DDAN zS3gebJ|1WxA>of?tl%G6-Rbn5S^N0l#!4Yd>`5h`>|SrSfH~o~+V~y^QFSf8-*11r z@1idAPv5rKJ|3wv9*e&yDp<);UD2h1|G4C{ff$FD4Tc9aYhr=y#9qvy`wqdCVi{!! zWXPxIz!;fBqa@OKUhTG;R^;a9mWWVZMI>Q5FR`ksYBLE4yay>kyQS!4GNfluVp4-2 z+aJZRgYWLrIWlc=a8&KFu}d_1gZ!)Sj0%|ZhwobtT|7fEW&~tftz4VXuE7>7KcquW z=s4CjG8CPNdj_Q=lK%$=209<-aY7IDwVco0Qe0%9ea7`3Vz!9jdvyQW1{2IST!(GI zPkDkg$3Rh(1v0mU7ZbkvP~2h)?F>q)_WSKS41n6$D?g*K*t{R&=Po-(i}`%VYf&Cp zppf?Sg`q1@UABl9cLI5sPO6;a4_v~KT>3rUFxH_N5)JssVm19*gz+IFu>ow5+fT+O zeK&?J)7dQ_C8@BLt+YmhO;ouCTcJ!i38|MEbU+7c3VOa#cJlP>XG-4cL94Xy|Eet= z8F&a729D8RM<9o3Qmb5XN8aN$$CFf0;z_?@o(8EplERXrKtzG@_x{9hW)2P|pJVfo zdnrJK6PJW6JReVgoZ=UdE8YOcTpPs0ESD}_hZ##HOV&@XXfBQGA+5F_Vm`YZ!~~6s z*dqr9;SmPK7U{l5g-;ISJyvNiOeChNuCUY&dOtq``(E(G=9zx#AdCFwU zadHyN{3O8Y#6qSj0iA?O2wUSkzp;06aWw-jiyDJCdXGuA;YO8^onV#)|S_xeDt3+Yd?rus&}vk6h+ zbq|5}@1W~Fj-FujMjQ~03w(foboO?G@?g?$rT`pbc=fCPJqesCz!m4ks;?izy=oCf zE1Cn%)!Y~N{zk2htoXY6y@dGqF(4q?2CY%EK-3K;ETt#dF1ONw^pz`um-)>}II(K@ zLRlGMi=#k$LfR}!Nhh`<=)bzm_#9iVmRfXX&(;4xIK4byl!cJEu8=GnWq|B(2eg*VLMVaVp$C?g9ST!7^wQpN zhr8#l@rIYzIemTxUD_JMcQc88$UH81Y2(2Iy~B*)$VhZYKprC(zl9w2UcAB0JtHY8 z7Thn(#!PL;-;O)uQJg27R!~jWfvwI@l~W?)7G)&ni?PEZ69qeUqwA|AQiJoS#=1s< ziU~XxE*U*P4@ro{$4CNcYYP{bn5z5b@&c-E6uI(}8dMbjYP6x3$1^@f2vP!o7X4)7 zIgho>_B9n9XmQI5y}AhbE7v)NE86MDad8WyjY6*y^RI`tsP7YZ_1Ed;DsYpzTn`mACHgles^? zb$ww{=FN?XSQ)7Z+0uJcZ+&~+`lF;9o%TVS9|pOv6T@betbnpk7$wRyjUQnPknRi@ z;&ioSPJd#KM&aBdK)32^LDE7{&#wR7oZn0AC zM?z9P*Dc*ZERy>1VriWpG^k^8NxMBeKQdD4m4Oxa-K?SE({T&6lqoe z5G+-wnw=9FZP2=^?aM?$WS8Qyh<=sh?lYnsOT}jOyepO>^n#o6+|!?Xy5;)j?5+To zEr4)(dm(j^!{Ei08*`JL4eH$WC1!2ta1yj<^uI~2^3q4t(7LnXGOxne;b_DM96c`E zUBV8E2YGu9;KGwjgK=yhNI(xpHFt`@oeMxfDl6QaZTk!V=tlYH;&x3=8oxg3uJp`x z_0!X=2NB(3ke+Nn@mK*q!whNWpF|#B%5bcnsV9myzLzQFiSN7#Rky8ypB2@nY_%sC z7R_FyH|!eeb)>xhFLFj>0G>C1)zIuY+A1sn?2J=f@W+PPU1nnkB;a`%ckZwUb)2L$ zCnGFAA3*UqNU93FlS)%#< z^g$-hOcsSXi+WGH)q_wfnh-8GOBcO!ezG}aIXcaEFAn>YKlRD+yM&eNUVP(kp(VH33b)=kR{-%+87&%A?HIMUpp;H zjI=E7b_6_a9O#lL0DTzO^&0||J(QxC$5EydbdZ0f#+W8T?2$R_A@k+)autF3MFOnWDH#bl++37ky)qi*CAuIC6x9S*^{KL8}A9g+ul7B?G~9^;S# zyVoL%r2OdNV|!sIkfKN;@p+K3S&ksxETu0UnjG3~06MTpG;QqB0~Qm2^;qd%r4^Po zn%$1@`YSBc&so3UU-+C-Nnm~P1RAj9cF%2uXA0HE2Wnhhnm3|tKKI>~qvPBV)p)0( zU9IVQ*g=h00k9Q-eI`lho_ms%^jI6fKHamXU;`jfygw%RKC*2VS zNNTuL>O}h2J-V2`Wi_h(m5_$^4vqNV^AG=H2oae1a84ZlnCti?PyZesko641mBan5 zJ#UOJxd}lMFHE4+qRWwk_7I;rEF(Ft?gwB;7JTw3dNt8TP1)rAvv+RPNo7kKZUmfZ{R zo$XMeI{DN>wDM<%P4ze+?dO3I!?)b61Dk)G8HCqTah~dNX6g&-{{DKk$~#$BnD6GJ zFyHi+CsstCdYhRrH0_^OUH^ z1^%5Cla`8Ou7bt?z6$g|+Q>Y9eRS|>@JkO($mg_iSXW_L$^As!<2d(*C7G45g$;fv z8h|($M=FIxAc0;d>I3VN0d9(Yjy`z{=4G}tOOc(%6h#sm!)x7U_sX(KJ$IuAOL&%= z^zg-f3@XqkQCAYe?;dmT$qsy(*JJ#=D~qBHC0T)3q;H(zuEigRkyf|GLJf03V@N4y z1V;zN+*Zbr!os)Fr6T77BjYTv zQ`&7@A8Z@{45OU0)+9bRpxf~oAS1!T8&ySWd>E|}i9kG|lni`8Gk@22CW*)k(EjL; z)&ue-A|*Dxy2=gU39s!tB=-CJ?>3?W=khM>e=Q0-KGdCBAwFe;phP<+dFt5n5Pyvt zXKREPIPg?IQM*EA@6MFWBYzisXsz`4+~}((;PssFyKAx)wX{okVqzjpAG#`IeRT|h zU=Ob&DRc!Rpu6w?I%6u==+~?>Y$qCS%0|+%0GW?M`t}(L-7Y{t)e(vmAT)pcnFKaI z>tsZrMeq7dxzlTrV+NgE6~E^f>PNpQoG%^8_mY^9f|= zA?ZR`<^amXLs%v!7pi6(EeFYEe3vcoh7g3kb8235g4~b;A7ZO+HY+jl^+W@MN(q4{ zhOAO|MPu!cj@jASAub3}Zv(DVO9n;pKiQu@OeM!4fuy)yI2-jaEp7Mv_aYH0T`ho= zJ|O4fhS@OpL0%)o8qgdjdjh-mvT@&Gy}9y9fZ5*`zqg3Mf>~{AvWH|9K{TXJfc^D z;K~9*CF)u3`0MN6=*WX$TELRRO_)WlWCxo#FjvIW}pnMGIt7&?SFQXe02G(+@nfCY(x z4T0Q2%@|N`0zFMg*2N2ubmnL%!vzF-D<#IVq(r4Jk1>9}m!`P5DL5+71+>a>Q6@CjyYPd-C;M z?jf9WACF#j9t@SHSSPgHDBA9H0^p>vQv!e@DIC!gkFjboH^UU^lMi10rIvR8en(@t z;B0<=&zvMj6bdo??r)=kYi*h|_8$*afq5XSCE4Df(9^`k8NUE^daC#)V+Y2bAf-Hn znls1Z3Gy=K3*VP2dRqGX`;ED^A4yCDe4=z#d`0=d5lMKo>2@k9*UNG5y z#0k%fnFo2!f9^qJ0|x7IACAlj8~j}A{?zDI!xHr2(r*l1MHC(py#d+Cvn*+bm5;0L z^EgyGWn?T^F|{uq+S?9d7`+>efNK`rsq9cHHal_|QjWeHc@3!lS3(zA-+x&#+ZfC}eE>WKRzf&I@xY+H zII1^f0sE*lY(6EaY>T_CUm7mMvz!Rbtsz&Q(PL^9A6}HAUEJKLX6YTBoHUBZpfj5Z zX(byCpjXSpqEyf^cJ*Y-nugGx9*#Q>SBDCcK2EIk%e28i5{Xsxll3zcBxKW z=!4@|Lwh;2pClpDSYY=|8^~_U(Z?WxC@H<$VYYvq$zR5EfBR?VIGJiZo$sz>=@*rf z$xNY*GN`r6)7hSMBOg~s=Q?jv`T%BdDw{0sR!I||d^jGh z9B*Hi_&H%OB#G2-Tvx`}p*Ejcut!QaabPbI)`c=KZ>-0s%7Ag1Py&!730^!@bF{TN zWJ7!ByO*y_Pc#|vTaP|}I`BkKLmAJQI$UdUol}?OH;8f|T<{;Thkc0c>dn0OU^fCt zn5x(gh&B^f+)(ggsUuw?Xq#MwnOXY#_HwbKC1VKd*9Zkz{#;0`m& zKcSU39H|JEMLAvGz4_{JZ@&?t-wxnM=a43L2o?)1Prvt?JpWI8gLH3T3N^Rf0$J@5 z?!jC+R52O=yz7f54!Slw8l>D|neM}S@(e1PL$6$S)}$N!r8(R(5TD{~T?}hgr6esy z*8D?8`ys=z@fRNb-Fc7}jq^b`k(!2X*~R`e@-VDspy^7E975)#56FQZ=DYm!U147b zrK%D2^WPaF-n*B+zx^%7@Khy+QN|3Ch*-h9hLS2~|3SGP#Z;DNOcMj=L56YQ=-Js) zD3{!0$OP}!2CcPofD0=Ov|Mn}eW9B*$pEfzd=_dkUrk6JK7!(bqH~wn|HUui7#OX( zok&P0W&kq2`II}<0jF{ zfLp{Ny9u~O;8`?4A+a#n7H+2oGn7#&7t_zh_=mymC&O-?c+< zCc{gNSUb^BJ}>l|gd_gOv&44b_#zUnmOcM9R;*a0z)-_i`H>1D4Z744$U z#1GMiq{{42nxC{dw)j8C`v^WWF7nv9c1VLz3?g4O-1(tcM|EygS~@?s9Z@P`M8Wc2 zK-yP|=Zdw8EecnLiSVVNTKBJVRO133z2!V8o}0rBMwr~XP8LmJI6Jwm)xrDfvk{gU z2cQoE(R|<8Bzm214_tkw^MnIfu!-P8&y0jZ5PJi02?*j!N0p3180cZj z9tZ@F0s%@X7D<7bGPy9Kt@RcPTJ1T2v8Y}=cTux|9yEL{X_dp@n_p9d@Fzmy-s(Y= z+vtJU7>^VFh29Lv$2XCtIrnwIXfOJL6tu#CQv8MZ1IH8a5kWSbr-@PHDbEu=(+z69 zT8F%wTsNGCLO0ZHp-%=esRKdZ{s}B3um%3)+pnS5S>(vqk*Z>Zu`u70&JE2%6{ouZ zNNb0bAO6q9z_CSbQ zvFZP~m&QDd`?eQ?iXq4rvY2%z@kqf{&;JFK=_Ix+UFugb@@)^A&>8QT7%$vUr3BFl zIn9Z&WSlMd@t~%gn?`dO8ysapfug6A%K)D#!o0P;P zSZdPI7Lqw~tLN15tclfkep#Lqc+{!Hnp|zt?v{4^QS}{*PgiQ4oL)KolENYoDmrph zd4}(iSZ`bv)Q~jd(`P^3tNxH7d9;pa`lPdOVMVp_%T#Rgj3c;g5?BP+Cm9GX^$t)? z%pFypdZd=X`@0tsRIR9;moJ4V44{#R7?Kz5-)1YBP!BCmkyKaEeqIg3Awfwr3UVR- z5}EHBB&4K)$e>8DRoCq8?Y|FtD`C~*UFxko!9;Wwe!?G{+};W+nQs%w4#+GbF^G)A zoh%gcYe1d1P{jpsUnx*4lzJuDAcXvFLR6&q(LC%ffb2~`gH{(BW^3q7>fZgPZ4)I- z-k67~tk$^-L+<#LUWc})B99Tydfo*&pgalj z3)U(5HOj)fG``0@ZFMG{K_ei~w#=-J6oId7xRhr^fBlx5@B0C%;C1MGkvmQ$fO+pf ztNf0{IHPd2+CD`>#A%)oa;5vwNJO(5Js+c)7^^;$?!AHE5t;8WRq}V?8cA?YTYdGS9J|m$v$8BONlqzrm5hlPb%7!`N^`~~ynZvn#shOYCP(JEusrJKG{qJNho`2=e2 zu6Q8_zr(aNjO_m4p6^HN;pLSLm9(Pl=gziMZUOSFTsa3P74}#L+2bWUDl3BgEzd-8 za?phJhneO@;^b!CS&%O&#A)B&s*W-^@U zVU79~1qXFF!=^$T7vj98+?|01Hh` z@`j(=`VnV^Nli@hUeTCoT0j+VAT600u7fICRF| zvWB84@;E}}$g!+2W$%sSM5d=9{cb+jPOt9$zUCNp3v8^_$7kpMbKL?$xZwvUoF=ye z@*;ZUsvpcoVO5*NH9!nX!o$N;v}FtQhJl`~(KR02EpjA1gf5 zgxP3n%;HsbVk;LiRzVCg7$ftGHcstl-iT9=Xb8mcS->=V!fH+s+Hr7#$TR%ov4gD% zSh&k`eSUuXc>0p@k?EP4K@*7XLf|iF0-E^zY{LF8CK#h@VWV&%HujNbXmV=mllcz9 zlPB+YKC&*-nSpVY$h1KQA)(Wd?8`ubCkFCwew#<>j0Cem65k~>=6h{E)d|Z+(cbCr zSM)am_W8Hr=L-^J$%h8L7-yD1`>hWHOlgR8 z{NhS{@&&v*QDEy*7BYhl##s4}^(Vq4^4i$E9j96ejiwHOH6_G!0giqHRX@#WVT;bw zbp=1mq8osNMFdRECd4ZZQw__`bH~zdq^k1OQ_?LmM2q#JBA&$URoYr_P(utXkmj?k zr+=#1hyB1Lm8wh3U)_i6F<^xTcVb@iaq{&&t)6bsg^Z)1;2oSk20O=eLg;D+yNSiv zj=qCm#|vR8igWkl78CuGMyb<#Mu})~!(V5cB}Xj&(j(0s$I*9M!ujR1dsq60lN86# zw;L}^^4sHkOFStCI5jW*wD~sldHs9qPo>+tK|x6dJ@@~ywBxwUoj}bv1)7)lH$V4` zw!~z(q}2jOd#}5L5Ors|v$SFq2i&V5YH~)4XpcA$^6Cz7KRT`NIIi1{^x@< z@#FZ#RC9!SMcU7l6cTb-Q{2VwROUn^ZEf+Et@wqokP?2z?t?#iSpDFrX^pd}o{ z#R<77BWUk$zScP*)Gt^f+ch=ehxemMTlrOcLsZqynVlITxuI8r%?{>41rr*|F}3TD zs6RMh{kgAjdfbPwNv&jMWwRvj9TW1}esa_3)KTSH$0km=mO31pB_xH1b)GTn$ zaDF-!CTW5^rb)lU%L7~CkDY)!dqeZ`Ag5v7X^=b!*&0H9%<(n`a@3{mpJi4<1q`$M z=t#J7{uL*L6f&s!Hz(u_YMCvCt9tvGuG5H8$I%sjtfc)d4}#bchA^r#k22)e^qUl2 zDi12b&d%(Gr+50<8;OpFQ%OhGRY#m+AQGYTJL6$=?$oO@QD(Z9A8~ohP2QrIeQQ}~ zOzM56b{ze1w$DX7oJ%~oRcsOgAsqCZ7P8}ES3{_-O!l!nZ3;fg$;EYwm#)UdllmB1 zz!*I=2r-@f$CEDMzjtSd_!;@?@9_uZEs>Ft-2;{|1y~4;YyorLk1(q<8_whcQQJH6 z(iF@BSr0tBso%9=)A6YFWIu!vnILBJ{4C_Ye=aqfv7|&%knN{BYDB7f@ak+7jT0x- z2MdZKGpJ#(e45`c56E1SN8>t>6DJh!?{yqKay9|?K@-zUdiCzdz1Us9yYkJJ@kNMz zsOSs_^19#4TBFY_vcD^wo(mAWf3G)R7t1}5CMQ`Vz@i8TJu`8wZ|62&1HbCs-R;w% z8B=#H4BoN)y;_qDC**e7b|zs&!12OoW{Owb*XR?tjUKl6%}ZEjSchA@^|^VuH|`Q2 zBO^A%;Z1N|AN({|OfyA*%8K1%ZDqAXhx%M`dgP zK$x=WVm_Ca22Iws-`n}8u${B|t<%PYtYxoJR~jlZz~T(yFNMEW)|oQ;tI~#By^;%C zWI&$JYk1p;@W|#*K3)t=>{3!vQ$U((ccoxg$ARVvbtg**gfzxEVug9Sx-yd!3>1Re zA`79AG7ZktYPg)m&~MqL(j!xOq-*yI?h-4+YIboV#0QS_9nLITO<}O^=k{pPjZo(Y zd>?ZvZbBHV_3b{7>0A4Uu1?ntRAAGeBAfm^{rMe|_epL)1-4n3o0amyuGNX~Wax@H zbEeYC@hLnC$Xos;g8lc(muf@&QKddS+MRo}3!(~RV2|pS8e`?u>42I+$|kh~QU93wFBLn~vxdo#iFD$G79ZHY zQ>^qK!$~cW4qe>}i<2v#>Tj=8fa;v?O+;Mu3=9&Wd@-kh>}WUJ+`5gJo)dn6>HM)b+T2=o(X%kYMY4XYNtu>XN7M-H3cM>({-0IsSvPp=ft~Lz7e56HUc^HXXxH>%jeq0^CNk7fC!5Z`3 z_P4MKr;+5O6V0!9Ke;cg+hB8N=Us70!vka})mMfzYrCr{qalATXNtcR4tgXGg`cm& zI5kvuc1p3qlUjb?mEl{Uz+H>)3Fq+)qXt7%XY%_>c=m*}XcDWZqQo!xb?gk?o&TnY zx>4os@T1sE5LK)}^U3hjSKUv!ip@F~tyd`GdS=U(tD*z)>X|*x{(WgZb;@ zchQ(=CslJ2!fqSQdBFMXq5UO%_3GuJHt!{*o*pl4=81zzHJ-6e;z0&6k}{aNT?r>=90B8vH?zRquqQa@Ax8 zeWl$9`KCpW@AZZ;seQZk*7y^&H$0p~X^tw3x_H?BeKSmQV%ZKS7gCZe2;idoDgb9t z-@FM_IZ@&+l?-;#B^ZXT)iw-dpdxYRGXl1F$@eOhX}YubjwHSsLW1vcHV^tg-{}7g z`(uew$d7e|*?3meb70!3tu7gI<#!OmtPPn)iN0L7bvXYFNslITuuqX#&6ke<%)Umv zGk2AFbtHBwS(G5b|8Aloo_DTMu**C&#&*&O*k11+PuhRDzP+ve_$3Up4uD9A9GW@= z+=Obm!B)Dd(?%c0lILN)3s>cx79^17_o8?EFgZmtgZ;JXNWxiS=lxE7kXzxE@vTu5~#;!w4J0eF>pE7nmfgSI;?QqsJ z5*XR1!~d?P`g1%@7eb{R6h+&ZV*%sP)J}sdAK6G=1pQDocRkt#01Q%4Dl*suYoHX2 z=2fTw@z$an5^w}!o-4$!7niOw9Yb$_n|*(ngxITK9YcRl6HGjX^aYlIDm_fY*1Op$ zzS+qqOSK7h#Prs!QsD0Mf8_%TMtn;Ap3oKNFaCNXB9y|z`)U(WxKS%|@C4@;Y}cy( zI5j4`F>wcMp6n2YZy(|bnNTFe5sf{RuU|M)xLY}CejR4+jQe^H-ir#7l1PZ+3+(&H zoZ6KUo!+7tJ`h^vc|o110lv;&7#{9zKB_h#@2pJT2cU*A0!VYml}mZp4vK#_tT*lO zfLt9?BX|s5L$-RI*7B#LT}-9aA(J}^zc!SVq*u&W-a0) zc9m3qO;{bN=7H>%8!~#;Vw?HB$)O+jvA0P9tl*ZX4Z$351DQrOY~^aPIv9vv@1$AW>t`>ql*Me`TP4j5Di}}t==MfX;Z1-rf!|jvD@hh%NjgS>7 zC;Z~8JKoHnZIDRGcD=DQNgVNTFYhC%cE7D+2Kx>V@B;Hz?#d-Qu}j@90+F?%eulPKa7=Z@YJZFCjLB5cN&ef$N+V!Q(O8*iYe*e@dB|F{4q|fuGa;XyFzP za(z8fB#sRk`#ost&jv|21^r(Vp%7}cX`Ek&#-c*r3f?{q&&m9srVJ1eM#rQ>nAyw} zC6cw84DW@w_t7-Z28TcI#k5umYlL#!T{F?joB{uI)!Di7&7}%J{7&<_iN4C}J$B!IOeD4^1Q-KS@$dfNRF;(PLjg$b zsLXLr0g{rY=}0qtuA@hf@<3&{Zfw(B^Qkt4p`l^7QqM;SldjY2BR787_9QBIW*ct$ zz?NWwthIv61$HMfX!`r+WA@|1(tapJb)p`qzb~VKyv*k=NQD^cJimb>**&un0COGa znVDl9jn>!K6@-|XaiC56!dP5PD)4EdW6%pJV@a_dd~`lrYIWbg7F&TGc^G$B{`ckG zAs;y7H9ghyS8_2>&>{}4MFxAkD2!RW5BF#W1V=55N)7m+VRa@q(Xa`@N|MFg#4hke-Tpfq=YAPy#UqGU$Z?5h#98IvQ%d&Wk(Q@uZCo8|vr*IO(A4rsYSDy8Yqo zn+HGdigkBxfA%CW)A0|maGiTehxx{rMUBk_m{$EFUqIBV6Hp&#Yt&>d1Z)QI94i33 zZZDEbtzNE1FmV6k6PJ2XV$ItGsHn5T4_-{r-UBr{eE8?B>PAmCf*gVXs5>C|F3Y;j z68+5LREH_hqy^@>OxaOb5#&bH#F3UmysG&+57s!g(s7;JTz@tlCp9fCZEbtocTH8H zJ>jB`N>>HD)170`-Ee11R8-_LZpKx&6Peq@L1xY~?-QGgn+W zAk7Jexpk+-+r*=C20WldJKz>O*56yq(>tJ;@b1rE0}Pamfq~5 zjHv|*yAIR4_+u|Uq#~!|XtYUnK~3exPZ$ndDX?nc!M~FiB;U7~7Kts)(nx|9X6gEz zi8(!%B&`rJK(z$=p3mjni*b&q&>WX~Mh3x0D0E0k&Fk%qJ~2Dg0{HBbUEy7{dl~Mx zC~}AvM=tipW&eV^nIz_O8D{F4{b07Hm5(oknq$!(s-NTeV#)t)xa?@G&giaAs5aJn zxmBsz1XfmP9$@8~v#eLce_T&8=^Mgw;_tvdj^h^SCWf8Mx+5TzBCJxM%VUmMJ zYFtO&UbyuFzPnS$5q6`^mg22jPyz-MU<#)f*q-;$QvK6!4dmhGHY#I0gO%4YbRUC0 zc2|$sKHmbMes zu;&yl9bFXEQmLWfBn64JmM{-AZ~F9*My-5+&y0WH+U!CcX@)<3Kq>*o!~5*JDm}hT z0a=gQxe2AZ)Z^h_L5h2xeQ~Ia3CMy!jD`J>J(*lVPKG$vHX$n4rV+@kJTMRdIz75} z!+v=%??|>Ma+eexM-=&7dIhR8PoAK*8u5R36SF9Y=cdMZU-GK2kEgX{7cpxOokc}A)| zC&dPgS`l-NcS$^(8n&Z&a~dSPqWm5le@!FeI~y#K1QO~~90o6mK_iL>xe8#-3f0it z^zq`9vqlhoT>^PzAdhv>hRpG>MN5JWIY!F$r(h#U)qABk;^9MWlRSe(A8581sl<`D zcw>$ZgwliwOx6J$?gSLSEnW4WA)lChhAePTUHwtzLKT(?9iSgE_<|+sE106!haq7FlC9SBY!l{3poR-S;KW>Xl#`O1!W46iv#BkW-Q8y=)g_Zg&u!5v6< zy|8mV{^u$4kf&5do>KTb7#huMD-gmYFNZQs=tFwlR9V=6eX;Du4cv=#GgKDM5L^mO zI_MlOtihkqIX1vTzz3SggEFN;imERF-_IX<3CV$w);a(FB@J#TVo~ol^Z$9sG;B{? zbX!~7F4Vg&A%!%{n$E{|zN3gcL6u|5Qus^&Sq=~2gHNs*&k!IL*C2O8&_Tqsn#_>X*8=FAnp!- zi4;9q_VZNJA2v2h1SeBgy^Mu>;D$u7=|@Ddl|6z%diWNMfls>Za)HC8z3^tO0LJkktPj4kwRPA41fkgG+MB`QHtQ3Zvpu4#>RDMA#{ke>cOrg5T1_MaKki*4I zS&qHXSF5HF4Rc1O0mLl&*dS8!BWA6IOm*_0DUkbFaA0E;~%pqNH4wKNZljwr#7jH>! z(8FL>!F*=_xKG=TF??IBahq-`;O*%*Nj z%AyPd@>fS}lbNY6idvu6taj8P+Oj47h=$F!tv$*6U6_z;>Dz z5YPI4UpVg#3Wr0$o~p4*Ji>ea2AqxeAbW`*?5R?G=Nre@gdrfBlK-rqhjD4)*bpJ) zI*mZkTL!JKh|GnHZpBuM`i#d?ORo)@JEc9ZxqMaTLQSCj!}rt|7ii+ z(*WIs1C~E?{`Y4!kdf(y7K6I=w=@NY^)+pG%FCkzEVL_Ma$!iT?>4WD}%h}qo;#FaTn^hortDS--p z6Ocjefvwz}MJRrIpa82-=n_z_Qm!ljl-AgRi`fb!*~o;A^ii$pz(F5lO;*$pLqWKq zNwpFz%#?GjJ}Qc6Hdxa&B{84M+uLX0zAvDTTHJ4`uGEE6a_UR8N0t5m{^2?JQj!%Y zj3>d^i!;d{AR}FI)^V9FTbH>7#AX?RFo0Wq$}AhRD~q_d1nne#{Lqs-S&ue3--A}A zUu|`pv4`4GEY&0w~oTjZ8TiLt{LEK(rQ{tA)9R$j+EY#8=F66bNQzaaUv3tLRz(Ip zT@vI}1xKqnSO_B(%=dl6M5vA`s~P`UP>5;9AqM-pk8j^5p)p?Y;Ne>+s%h@Ut*zM) z?l(YCzqYyAkx*b_mXDLNQ41|7-z|01p5AjjPoN9+>V5)dyFYvnA|r_t1RARo*B)%E z);=v-KGkiKh->koWe0fdaaaGvJFhk zTM84izl%lZR-Kpc+UnRmB(@3;4!#AzLK2h(XIB+8lvnP^S>CDM(|&HN=YD&_XV{t$ zRgwMH=P%B{kFgVKiG-;8N_Hyp(d=_tIr&pCH5Q9H*ScJ%zTquI?6wGsKt|_=u?qob zN#!0!NRPdkpr1;984e7VT50j}NIx9&A-1I;IB18(4+q?;ftVc->}=(sgq zwlQsPQ13&NFt49D`c-w;!}NL^qx=iCZa(-gOo*;H%y{ z!Soxgyw;xB(?nAJ0Ap9ilp9H~m3aWFxr`KK(MEH}~h2!pOeL0p`vp zGc$!votBlCDoRW4_j$p(sX1cS?FFTMoP@@T4yemf0SOQhr|(K5Tlg^!6Oj=X1$f8S zje4?UXbbD=Kh_hDkRZl4wz=*}Xc&o2f(X<#TU!pm!18u9)_3i|nD;BIicAO~i+rBU zJt-jXnmx~*Q;JWS^v#mAgFm=0&BgCZ+n$PQLa&`Zt0*9DlowE2lz9F-C4Nv)@|z#t zgyG7+%`&VPjaxcpG@dmvI-oe@rPF7a&-;1) z?Gvu?z0Pr*$8ns(yI6o`i7P8B??y6 znjV!d{`J@Z1T5(+$guT)m+XuY@elglH$|El9pwJ}u6mM}VB8J0$DNl39Ofghkp(T_ zVLi{|xo?pJ)2STE$)n&@hsURy&a^NMj1U9?D20ZFjxOo?xv9Flj;{s2YYg3c?Er8G zs^4uyNnnci@3FOpD3mi?`g`4h)Jm3gJU;&7FpG*`pDd@{^?mA_9%lh@*2=bnl|tx* z7AHMCZ8mtmHc&qteJKPgqS$CT5?fa*n-NKwNBkSItOhM!(+wWQRnxjPnif2#EGzjr z*|?d&&SCJR#F^6>dND?`J3O407JGr75MZn>iT!%fFh_x2vj3R`=gB|i44*ETfDr|P zh5vKd|Nijd!yEjvYKl6-_KJ&O6O|55OdC7Ze(VaT&7A6oV7x`>Oj|$R2;C$p@ z#j2Xj!MtMm>Zcp0bFSo7yk(o9V_*>fQR};l0=oVqV18!8&;Y`VOypNPV2oLZQSBV{ z=mDvO(jOcmTT65zf-1WzRbqF(-_vC)l8ohfMK`RDtD{8cy>GNOe4_|2;%)X@Iy%cO z8*$&)aF2l;d|BrY=(FMt*}Fyjg4M?r@B*<@1sr!vfNM@8 z;5o?3&y$i`6OO3uQ-MrS2)0y&06`T!**YYC3Z0`~6MpoG!TsGOLYfxRyD6gIAY=dB zU3m7=vX6?`qVru{P@E2BKGS_HIz~nbafV&fX&5pWgwjH_Advjsg=KEv!6LOUK zqC{xhkd_&>Vn@#AebES5DhWd}{!X#J6 zdsGX7O!mrs<>4p$JE9k^v!z$?bjJtUko(MbVo!ByOwX9l6YWI9Z=Tyx@|42wY`148EO@>Gn05P#0n{R!3%>`uSm;=T>13K`PV3YW4r zj8J-eH^y0ehTQ*~)(Z>odM(&{`1<>R+~S8~a&U`VoGn@S zYHk=IpIdx?{8^JBbspW%xZ_v2A%dY6FrWPs%a{5>#IP|3-%~q5o56TJ5Z!A;kHNIH zef_xX7RB(v<1}mI>>rX z3#q%0`eLc0CpZRRN2hf6dgE`y1X)~yC$VO~ZBdMp?8SoGPzetO*9!h9&1gvaZV`Xs z8DMWVR6Rd`dTv9I6iXD@M)-4~%uxv90`(Is5L;d|&~nmdluDi9{9Sdmn^miX!W(ww zg43_4Y;W10m$$+;-5!u5pN4pffwAIct;)xza?ntcKJ{K^0_f~yl;GCGe1-5tj()Ds z(?f z?0bDchXwpk)cc1keoy!J8sR#)@p6{7!{Y;}fjw{veF68;&%WY`pUi@n7*V*KbGoJA zNOxJ#^9BsL1HrbShWWx2$x+-8G{d+JS#KUt_f~Kw+JMU_h#b$Une|a^xDFzQd+m4g zvRg$5WATss4FrK;KYG%G@T8xD>|y&g?6giI)6jvU^fi!S5Mm-yJCi0Se@skDdI*y| zgm-uCPJ`gdo)vMIMtSUk(`drxF5f%PfI^kCuRAU(Mc+l8U3IYDG_YA4dHg=ppZH(t zmw)X=`mH3$#N6|2Z+4chufXmn7X6wVK&=ge{)m>3Z}jtzBY+GJLFuig_kfA;al=w} zc{CU9fc1p>w;w-1^1+Sdg7&HBiQ*76bFgavMU~tO{SHiY4D{j!ZsP-HPq(0(m0&iJ zj$1mP-JEMCZC7=s#w{HP8qUZj%ZQAN1-zd;CGI7evE$gz`=7-)RdlUR4y+O@Oj95oj0KlXe35$K@Ob-fV?G7TTEh&bxy~ zd}ED8O8pPb-C6R6LE)$vRJn@~C_$U>g_1p;xsP7cD8uw(K+fdgPp?oO*>B}K1qBKD zcWoEXa(REZ`u=r9DHxqo6$ew6o(`uYYy&xDk?b@H{1Ak~AZ^faaSi1>@c|bGWC{r= z$ui#`9+=!|G_pT|7Tis9zPCSv#s|tg3)duT<#>@3$ka%97QVTs#vJ!mn@TX3PAcqX z4)paAfU#5Ml2=w}arhQunxxP+(|g>i1*Be#{`x}hKIPj3hwH{YyK*(?`0%&#hN7^; zvcJ++>orWLu7OOBLC^L0)|8t(Fm4lY%~6H~2hSi#rrLJ9f}onhuOIQdIU_|nfdGv| z3k6?$Jk@{D=2=WaVJW~g_GbyD#|LH&{p{>k0%M-SO}+1~c>y=IHA9Xv!-3&SFdW92 z76K7T0HsmPqotC~s-(jDKpiEIY&KvrGNieeZtd4qR2-w~17<5?(D{~E(N-Tf<9LE} z7)-mrp~f;D9>~^ioIa!9KoVufHeE3^OIC`kS?VuR&yUSk_Bla0Y zS5hj3`r`{&)HQ=wT*#8r5Z)h$2OC!WG;qwmZ*Gc#qP-{E#5`!B)VO5>hPVq&b<=8p zf}$PK!?3UxK(mJ^=BIqWor57=;u40rS&sSw0&Nw*D!`>5N7WO2)<)NlF1`L!jq^z$ zZE=Hc@KI1u(CJLv0Ric}G4Q(5*p~g}$Ho1G;bc#R$wAuR+-yl09b4|wH-khlpyt|p zFF~q$2k3G~Y&j1TdTI>04}Qc4{q@0Cmrc@(@P3%_Gr}4GdqcV~TRN_U_n6>I*Z%qG zWGd!|BhJ&O>&fIl((ZnGxpu;$Y6}PiV)vDmqm$WckQxaIL65-@)4Q7>N6dFcdGGYO z)|aje(N-2WYok#119Wb_zq~GXJ`*{ajD>zb$Uy70aF_JMn?Z76O7E*iP1E6DSL!9d zo>E+wEz%u*IK- zxu(p&`w66g2tczlyoa>X2EhE^zfMoSZ&q@BH~Gx5|AfRd>qk<=%uSph*@$tu zh^p))m&Yrg&i|JWvrNecSW#{T8OkEZY1ilR0K^#*k3?>#1#ba>(R zC`X2CjN#k5LtLGO>+{=7%lHo*|SzSBIaK6ei6^ef6d-sg=d;i2c76 z5q!|V*@)%3N0E!mMISGCZ?9s{@^Xpo9$T`ZH}4udJ~e+hgr}1*IP{zeCK;NP&8g<8 zR|m-4HyL>Ez;=Sj;RFM7!TptT?N@I3OKCOnm^_G9;_r|%qjP(R>CwpJ2fmER_Z&&i~ zTS|hG%^LGvWLPRgf4s6Kh{^%Y6Ly%aiD7#HgP)!>1I8Ftv49*`5wXftP#d#54TJ?5_St>u2SHF4!*oR4R) zjYKyeY$%8%=ZxPz!{xf$a=(-HZ3Ou_$=gZ%v4s_FYhy$aLOYAK}^ z?pV2|K>9@I_I@v=+N<+qR#S~sTiJF)71)NKHVOtWcidkcj2+mQvfcItz(>h|D&@3_fh>6I&rb)xJGo5Mk4#@ zxvv)*?JlS~8dfc*O^vM8`#N(Hc8RY~57hfu?BITA@X)i#wrtb7_UJ&kLHSNg$GCnn z!$Q{(&yOJiO6x1RpL)t&6lT{rPk23bC_o^Tzh_IC=D5-FFqq~F$eA&SBIP^R&b zq9wVo7ckjg++ypr;PWN2s z5Yg=zGOxk6-#nW$rEvsVG`U~)HiW(I)Dkb5XPee4eszzaJM(Y%DT=`YuTD3>tc5|5 z#0uPCs1Ps;rf%m!ZU;+%^Pa)HWb}s`Ee*+|iq${=Ps)R?s;O&CpQDU=vbG z!HfMj?OM1L{gsI{0n8xehgIYSBF#TQ^ZD>;1X;%K9=Q$tx>E#Mm)Dy`2S)>=jt=nj za~$Be=l6_cMxf=z=BG-nlPd1<*nbL-s_d28|6xsU+QYS^Z&)UY>kCbFUP&+6-ypQXzkK5a7<`Jof1!DGX}^-RdKgn-it6MAu7jTN zuQfq`D=oa5=%Xn}&LB2gb$%NLb*kU2Vc0_s@{AF!_U8BW>Iv^NT%1Lq89AfpLX2Go z$|lZzkICaEoI**I*#PME*vRN4Q@FXg8Fep4^^wH9%KCUE3rq%s(jVd+BME1@INyB% z!3tCm8_HOzLjCdlB}%D$0q{DFV77AUT(+Ro|FVd^DdnD|9cSHTa-m~!43+pNvexC|#{5Lc0JZfm` z6iKZNYhAEa3yP3^dkjw+Bom`xlEnYEtu52rU6IdG=do=$3p~+(<8+E!qO#j}>O2&J zlc9%iLri(M)$pWsegmN-4^PgrEicbzaq$!9wLsIfdRW0nwF$@()5uCxm#1B*}@ zBbUEV){tsZ<;IEn$He}PTIhA7Q|S5j|MbBmM-U&bJHXoP4dxf;t~VZJ$i@$YI^-iw zIf<=}O#yS=Ro<_3p0RB%Ej@7FBd$h21Dy>*l4bLrd~)=WQ04f$G4BI@hLl^|N+oe9 z+ks8Uh&HgCFM!P;5R{3et zipeD~V<%6QBbv!v-mbKj4)s_l z2V-v=hpnpX6~R$2l>RFYo33E%Gxc9Is;x$Wl$8~>q_~suhEk;mC$Vk){2cd~KKeE@ zy>uS5%M>I>WZ0vA$>ivSKZi=Tv!`OcVILpq>0!>Cdmm`yD;YLPa-YHS{4KIIQ)U8G zIEXF~MwlT%X@Kt2!5)_ItKj)F$M1E12VT>X-$Ls85nNqfm!*jDE$? zxgsQ^5eBC!6VU5Cy=ry4iF~_ z-_l=8pm7B&grDG-Gd!sX7Te-&k(4p8@>tT!_2wb)gkVWI4eYdh1VfDcg^gK#Ma^B8 z%-_IJIB3Maf85KoU5bu%gDO&OL>g(B6`u+|LP#3dbxR`XUdPwgA{-Rx+h}QMnm!Bv zMV_48Fth+j9e<$Sgyyu2ENC`bqxfmfQsC|L`HRaf6>cT=*{#h0$EW}tvR^s12LGKT zyqch+IGL%3g+_#}V6!~j^AZ?c=@5Wyu;!rC8#;KRO2`8yZr3!6E>n5UUeI9Rq05^6 zz2I}h86RM^%=xJ3Ft1t_#(kM3WU+5v4BACv9ez>4!e?;87`8fzD|mQ#s6Y`B_W#jQ z+Ac(|v(yU5sw5LyAPb%iEOoqtQFkn0WQ!06+}0*ZfyXORqF>9p+I&QnLJsSBCs4jk z!}a8^xk}6I0tAvQL{eMHorZb1;Vo?(|Gh6zA7Ch5XY9Y-aS1Il7j#{^6fh4K4nz6` zghsOImtn%Ov9WQs3`Hg?g2y8DC4_|D4n0@jHs(gNCCO|wG zPi%fX9QQzr6^mM*{G4!^y)+B%H@B7%?v{e z9|Z41z`-_}ZI9t|nSJGtJ&{SZ=&okJph-rg=i^g$@ z0TORQLZ`z$_u=QZ;1+As(A{kquJ1V4n??>)M^*&y1vkJA^fgYdlH-9_?nS3LQ8h(r zZL7;XesvdMq7^!Mmt*9)40+b0E5Q%??|#3TC$!Aww|;XjH~IRpiU-c`@uN+sU)2YZ zo)ZdDCIr^Q7IZw8;EusTwTOZujlxSdBP9_ael1k30P45R8nQ-HBSAS|vzQEaL`391 z^AiYk0OORG?q4;*tA-pLw%oy$UQ^cj;H&xLH_zI z9fGqc#}A;IbzUA~;^y_T_-5Yeo~VDfzW8Ii?^^AGGWgayDQ>3nnf{S9cxq!l8Y#Kz zw{u;3vXQYxZiAHyv$0hnx=!WG*{`YA0SCokPpAU&g%c3k)rL#t>;00i)Iq*lEVO5w z=oGsApB2XRbaNlDUAd3loRw@( zRA}mj`Xq(P=<{llY7=dG75{0&daWK+D9d2dlEe$++?0AXe^u3LiV^@-K&6 zbh>eLq|d{V&OVEd4`EYIKk@5u{eIyts+{nuY=;gL5z9AIXoV&g<+;FmspnC0e0&ht z1Qu?qYJO0UJF^F4sLy~Xzk!^pZaogjmbesasR|7z{N7|-=VRn;k)CFRO;uL0v&%2{ zV^+M2%Lgu4?<+0y3rWe)u}61a`rvV`eEuh(e1D3QHp0dITAV@Pit7! z=eeApy8*UH5(SnW?f=7~W19KsOvb^Pe9GsHxeALD<_yd;_CP3LE~6%;?f|_Rf?u1f zoV_WhL!2D=4fJ<5ZV$ru;%hmkU~6*=gOrG)ExiR@f4o=bZ0j_5LJkR{RZl&Mz)Xhu zf4BU@<2tM96DCS4M?DE9$RZFpgCGs$d9@UKQ6-bGfLP=D>kZ5-x<-9YnWn!Ld%FKu zyth)fjC)6SIM%=QIdjkx=U@6%(4EPqQ3zxCQ-Jom+UPcYW=SaZ5>Zh(;n$*fuOr*LWIH>1%M>wlfMEOu)N;$7F!F7I``R40eUU8K zFnKaedW!`*3dyex>B|GG3#D2CXk18N6cZmopwMj#n#%$d_y z#FNLuEa^=Whv|@SvMPPxKLY6piS)35L>k3DyC!RDSYNa0c~hqMLwvKZX2A9079fAh zU}%w;b@wm|XX?svsnW!T5K?^5plE&#wnJHG?O-r2{B!!GM(rqu3bD{pLO--$ zvF%1-q054Lp*UZ8y&z zYUJ*FWB;c+yyzs4fy+hP+8D}t=f&Ice(CP;hZ3?3*SW#S*hW}^v>3MJcF0%F+x&e` z*QS3S9lG0a=t4q6O~D-TC%_%*)7NO(v$4>%mq+NzN2SW@C@2gfv$=F3Nn98 z26((^vzHS{?xV*6=qetaBG%jvL*VDIg#hM`7tOBjWo6MxKV-_hz;5t5XwXuzaFxC^ z{>ETe*BMpCD#Lol3a|9>bO^A~7o>rHzC03#r%#gA1qAhfvz z%r5lDKgkloj~R@Bhu&}}%%>xt@4{VzXNI^fPk++A)%ASw>C>kI?*uG#z0Y>YeZ%`_ z^jwes3jEYXC%dD#NDa3e%q}cU1t_r=y&1he^o6XzT#p32fSA2=F%ag|`T$cL#yJi4 z&$jAA_SBeW>U!q+8J9SuGt>nl5fF`(Q^3HG0BGHk;DR#!^=obqwlNtF+1fHJqn%Qdn3xdA0NSlpt9vPjp;V?bGMOc=eU2$1N*`Gki(Wb{s?T z_=`w^n-!a&{vkG6t%Ub4L;@Ij`4QbIyw*3J=}JyF1~-h84i3KcF$cw`cqXF5yFuyF zibMtYPDxp)C7Ir7R#>SZv+w86pEI97clNCMmHePIlz^C&zijfw+I&W__{nRjypB}B z9V~f@7%|!i_rPf_ypWz~czQ%d6k@}c>+wkE$HnMg!-1Huz;P{jy8<4_&I`Sig`HiU z+Y$O*(v~H#z%Cus4ipL2eQ_`=IZ8OxxBH^IBr=`&IIuS_t-YJ=Nzu~q z`MD8DptAnR+oqG6F?+h}&-7WjDFV*(vd@+Qn9po{dZWc`n)XaRlZEq#T!eG=ZF{bWsb;feyJ6Ei?QLC=N_JV(DxA4qs`A<>;T8 z>xesT-Wjh#Zvp%CN|+6u)GaKQ|8*S%!12j>{f*8(YyL^~nvuq=0a&!CQnvIwf&nrp z@`iCCuyz8mm$RDbA2uP15qc#4wsuB5%b>0<6z_pmn1!mPE~Y@$jdRIV#O#cYJ`WA4 zPC`Ct0d@jWjAcDwX+5l;tm>fI+1BY@`+Nty7YlZCzy>x9B-)}<_K85ANwANrK6G&~?GDhKVzg~k9eyB^MW6NhQ0R1p zYZy(fsZ0LONP&-WOpu+?JmS`p8F&G-cmPXw3WACtwv?)Nz6C!`wTK!>GgqNrianHVA~_`}G352H$G!3A10DFo+QAoaPBS5#M$_? zLTAG+GChEnKLha6@q<+CiqfG;PT;bH!v{d-vvJ`lu4*&VjPL=uK;xU|Z&+7YFjS=9 za+&$Iw!q^_`FNMIKB1k|0{ts#FCp@klssWwZTkyb;ML^%XNwZ)rZ2tEzApaEJ`fS}wUsn5SMFi*}9UJ?Vbp?xq9`BQ}Y; ztC4|7QzWLdvvYw&f_gYWE98FQ6#yW&-uBsn8QJ+0uzOlqx5_SG$`bfLmsPDF{C7aK z2}>FJ&jO6~>h{&NMn+gi!mLlqtd}fMCI1mw)vn=P1vQ|J4UO7_GwI)Ce$naTQI^65 z67U{C3Dz#pd;T~5*NGBiNjf1q+8;7x;qDs*{72loP_l#L4D>sor2(M`l!m7@bRMLY z77c&#_zMkclUqHGSC5D;(1eMV3ULW2F1s;haStH#8-cK`pd~@SeB)P`4*QWR4GG_1 z;DdnVSP<{t^Rlv1$jCebXe}w?_UE;WHxP1f#hE9_U;q?YOX~Df7pfg^+ZfN&x8Euc zN>(-efc8SYQ<5?V8T<*q-#(*dL)^M$@I0Lw(6?R)-z zT^Q5#eFUlkqy&6rBA90wGP#TG2`!+ezyWNR-OzXQmWIQJ@q4xZ$oUtgS)#$lqC^jx z@!VgOV4So%gF0YOpoQxRh9r9#CMzbnTW7`puu37r(jr>(9aeZwZ?xDOK&2ZFCSEg; z+pA}!ClfH|kxHw2h7395Yu6B$FxgIIa)>BOJw5rd)b%u*<&(+F5gsWJu{smjLYvY> zBi)?Z2#BWsxL-9XVvd2rKA#pQ*We)Gt~3YC;7fNRg3tq`g+O#(94;g&(0bwUM|FIh zefi-fsoil#2<4r54m@vTG0I{P96ya6_S-2pXwz1|d$rPUFde4c zDp;Eidl9Hr9g4w$#B*;ccepX!@f`HIrw}(viklwY^JX8Ne0OO&dv3weX791;dG$e!I!mI9T*69u8zIjW$hn?rS$#rBQ!fYh!q8(k@6pRaL=975X;RT(E{Nh zpba=+5QPT;^AVihl+_J~CB8pXd-#fc&Ri}q>8OtbkYt=V5bRv|XMjvF*@XCpAr7&a zvP*9mc^9+3&x3Yvcy?o{D_bU=iQX6%n4~u=?++aQwmQr8+wslR%Jm~&X>IrbbWhbw z9Z(^Jg5zr8?{i~rG;7D$lLt{W%{Qn=mofKXaH`Jx-Ap}4|Fn6wj1d#o_W=5F+aCi-3c1W1!*zL}8nQ2dOq&iKVar)-O63HpF$Aej8c|5Q`qwi*g zrVTM6h?~%>Q+9BZJB`6~v;8>x5on1%kl+37lYio<->{`hW<<;Ybi9pKL+(g1g2_1! zG~SmH-4bkww^FD^_5Jk%7?J)oE|{z%aFO?Kt?iGgd1e#@x{RFa3urLvgW102u)ZdA zU)OXiuEEZojL!bf?~-S^i-p}M{}>ld|G*51EhiL~jWm<1^W7~&7ev!r+N*Fiz8J)U zIgBHu?xY*W572U*8;MzrpYH$qMhzAqS6Z+OXT-JVYk=TNM>&!S9tq&-!G(jky_wC) zU9S&8IE=aGcf|j>{S;vKqHiDMRo|ya7lr^S;Ooh4l2S7}}gi`y7 znwe!WXEM+dd;+$(#)Coi8??s#FwHosu~Z0Dy%og!p;0eL@ol9@r0$5g#s9Q>ib-Z4 zhUFSMd_d>vII%0)WNEEiw=CrlEHE(qJ zC4E6XU-ec*ukS|Wz~NP~Jgjub`t3_loP_`oP)L{p9GM64^c}KsXKYCQ?D7IxX|K^a zKOql=f~cqSIecnGh=(yZG4GL$78jK8KPoxgv?Xg&f1oCTuxMCZ{o1_1>GeR&~sb4jYJP<{lko6hL6$v1)3@gd) zYu71CS$Dq1C*+eMy~u;N2$D-R0u3sJN7B@CA^Jix1k<+=X*Qt(%2P)6^h(RiSL|VT zP$au3s6p-&+D7|7$PTpFe+UkEb51YmnyDA2CT94}QNQmWt}<+IL_r@`Rrr z_QeBG^8uNPwXs^EmW(#Dt3gLZI}`_c_0+ssqMGnC7PrDCjtV<@jQllZ)3Js7{lobHCD$*CPeD15`TVwn>sk02aLF43RGi;9}`6~z12D?TddK~74 z7iVLD+U^7q(~!G{#W($q${)*qM`~!JY+<~T`VWHg~vj+xc z1u^lcjOSqR;Gt#!&Lx0=-vG;=I?A}y8KSySD_e7e8zLOzg$vPTJE)yFeMUfU&Z!po zflrc6keKGD;P{RwyXjfoe!$&V#|2M{Z;~(n4)Tyn5DVnP0jhOPt}gk$YPSmUMpGONx(`3Hystq zmvrs07MmLH;x(g@uSpesZBu`PQ@W@Jw#(IiuGc)Z1hll=*;vK#TYYv}IV)PVF6J<9 zIR#xEg@nRMy8D0WI!1^$f(IkFKstEXO0ADa6422lw3g9(NX|V!7ME`vIlG1u!#M@E zkSe`-HCUqgb-tcLiR2V@$tE#5mdPih7J>AH_;EQjcT6h1{^T?|*hliGt8%gpNCl$+ z;qdOlTECCp-9ODvMN*4A&98T}yAG2uL`9=z=!Fe_=sj-K4##yVa=gnxeaTs9qBHR{ zz=FXL0Y~Sgv*dBfv8h4;aR`0hyMTQAMrr<&$~V2XvX~j`K*a_{%~?RDmKpTq<>eD4 z!ubcgFwp3YC>EL|6N=$2tmsd-s@&&AhZT#0~ zh)nnaN4LSg*D-#LPi}>1Tk2fz?D6 zTUQ^t<@3LmzKkAjLC;QeeHO99M%REb74y<1SlWxBIR8n|b0eKu2HAUE*V~vp(*d&Z z-{$LrC$b7ke&4t7Ih`1JaY+N6_wXV)-j7S~^YY$bj?um$Woi=fh~r1z?@=Gg`&FaL zqSz`b7p^|IR?oYXW>D4h`{|j$iP5w%FUKGCV|~MIU#orBR=Rz5eERqk&WrXJVc~_+ zoWQ^tx*7nZn@)gm%%PC@L23;CW*^dE_q1(sG->2SISe_wG{K&7;0YT8)@+_4%&f;;XZOH8btkXQ0|m<;K!5<4h5C%`lUtziy3`H6V;AUqlD#d zkC@F0=;t9+vBA7Ku?7ETw_*j}4u1??j;pm&aC?hn_*Kt`e>ofo9$UIB72(4c*hZq~3gN+of zm9+&V?CxTPrea{RQE>0qfF+9X??XHPFyzDo3$E`4jn%z4=;cVs;BKI}et2~?S;(g< z!nM+S+s4}T)X!ggBaON{4hdHV-*iFD)nbrOqFLTropkL>_!40T za;uW4*KI2)aw*mG^P>+EA;Mvlb|y(gF736#R~V6(ao%6lfEKRGA!-CyOzkxN@Pp6w zJD-RSMVE}S@KT=-!JxeMYe^mcHLGQJffh&Lr?^br+tHB=*K??SC%my7-r&S`O?>WU zh$tP_c`n-L?<$cuV52Dd?40^r@aHQ;_M8kQ6yb*lo0u-|I9D)naHya-IkTZH835JP zO_^oT_B;V!picoVqd&_T)g`t|k)Jr7k~@XBzD9Ruq)Hp?{k z#5AYGxHuw9Gb{YR@9QNE+zILmMQo=6 z??*GXYikYr4qwr9sXsO6y3D9CX9z|6&px?0A_mXoVXFV*Br>JC^z^1z3B#A=mu-HP z_X(FLCe7eK(9m!JA~YR6{n*$qW-}Pf>M08En(+e-D;uEkjD<`Y9Q6DCFNXi_BEsMM zGdPJA3GOXsdbqq2{u&%NFgQ4uml+ug9&nnG{PUOJA6h*dY-W05`}f^Gq=xTh?T7i~ z8T8(?H+Uy?!PtQf8l7^nFI}|fwEBm{lp<=qV8?wIsKV#^B?uD0H&|Px-1q5_?*(+-CvY+ zyE&UgpA{Q?WO$X}-}MLkM}D;O^alvD6HW$;fH7O@g1~k|c3l4u(UTCefz78-B!zj8 z(jZUnC|(3O;m}xxNaW9tyoHz}-k%X1Hv8br^=OdR$+T;vw!Rq(RgH)!1rwNjSUNW8 z{k2%*RqDAbpX^P<^Ad6l8$ocvzyA80865fnATsyU7hRdYhJmGU+c}mLdDZ(9BCxFf zkfYMQEEeAzh&c*FSJi@htzz+mmRwt*Ofdt2;sAJ8-n{W4-S1>a{*y1B`V3e-R^DMg zSB}Hs`G>bLnQef+I_N#w&yfl_?_I0Z$d_UIeb$k@m*3Y0^^ho7%ni~y-H-OEq5tA2 z&+H8S6aA}RUOrzQPkBt(|M1EHL3_Wmzo`BhH2m*aU|(xEG#+}e2v=FX7stQ3a^q%G zo@O!`(M-T;s%WTQJE?zdgqC6{P%i41c|J;Yo+m|t5^m{zW~jc`TmlMokEdS+veGEW zK-C>E4@ivXM7uyRq-C$Hww=O3FU&G$%SQBcB*Vbx3Dqa`#m-X0lGK z@2qIYW$y=cmr3mD{=Rq`BylVf6xO`j4_32MV4 zQuf;v&Ov6DmRfgh^`BkWE*0Hk@V)j^kW~=eOimg1O ziD^MwC`6Y>im}U+wdHPWW{K=+s||`7s&~s$*lR^)=kHxtr7&E{A=`=IW*)xJT+Ys& zk&|>w%ONM8OGbE!qT|HZ<}Qo=pc^N;u4z$Hdn1eUVRB7QY7pJk&8=XC7=+0KyxC%lPF-^Ulit>yc3dyKjKy9l(gAutou^2(*tzJpT%>L!~H9gK-<|ph{ zn*95Nt?-K zzwc6Zb(CV9Rj--O{f*URMEx(*kgz23dsoQ|DnoOanHz_pb@PO;+g!_FDX9@hQq;{3 zHV%%Lt=pSj5jbeSC8lNEqsLNt3qC-DE%=(*IbW7T{c37znICKc46d&JqDSfZYtmfv z&D6ht-nQM%C&j1WQ~tHJ(AZu&)6zNHhmVzt8aK>1k6Mxni}KU!BKt^vMsMLf&3}8)P%*3M#*!#$KRzG>1XX2X4D1v36rN;WK-!3Sz8VW*B@8eTwcUMZS>Wwde90-H2osRcK8NtIG7M) zfYP_Yx7MAbaIN|KO_c5hHOs+;*;#F^GGry5@V&j!pGjmy}$6=VYn-m<(P;2xygO%0>J!dpGb zZ+Z7*>tk-9{>iL$F}I{G}8QAcq}1c^&|>RN6j`c46qsYA&wd&;DQR4v3@ zcUQ;FPpgRlmCAM%+5LA&P`PY4%iFjcaqxxu_rrGVw7QS7YnzhLJw5e~tAcQM1(U2= z`u-j6-b(yS)@NxA-1OK`8Z|@a!0#`!=pnOxMEa^a=PMl%Nx6<r*IH(|ML zz0$Q+Ou8Wkmcn*lD!-cDq!htp%=aGyCni#q*~4=_SwstN&8dnZQK3QUqy+WS#~ntK z0@AV#a65NLBp7S_>X>8`I#pYkw+ppq2g{4sCTur)1-`N_eXOe{=HsSHe4Hwv?Y&w# z(g_*cF5=>&Pq`&4Za3V)-ErS?aVg#A+S18<;jBn9ZrNVp{gr;>59giYPdv!UP?f zLLT{}qz;|!?WLwlWO0Xi7`J6YBPp|BIv?BuTniS^Y4 zr}K5I<-j~$pM%Y)`xTrkLvwBUxle5ZE2|wo>iz<<@#I%l46Gi3iES zw#&2b98z=$nLNx&^A7pCrX_JsZfWusq06#NQ}>6vEbu^XCHnq*AYZZE1ebumm011B zyQ|f0s?0p>A~A7r#4UsORgNQuy@Frm`M-p7+W9I()aHZziXDWBkK6jkiO?N+ZFQ8? zI}a>yo;{A+nRJapiU6J;iMnQa69knP--ot?FCz3p3Pn!&AFj%E8x_84xv8wmdlgJZ zGKo3CEZ-@;iw{2_4<4*kMD$sx=uhM3Ia&YWl^O9NaetGIne)r9VC1C1P+dT4!%(HJ z!K*a&cJ-U>X5|#|=cAu*56lKlQt;EU7%UHGu#A1bNfjUd<~F$sXB#&b4!Yzyz3JaF zg~kYXk#iNgECwZ^?f83D#Wt_=P-eKTrlEMrBnECV=fbi!Cx&g4B5&`?j7s(w72V}O zb(}1I2A_B^f1P!5w1D$L4t|9VMG(vuR1CeB=xy0D*i9vz&#S7c+Ld~wS?3buEW1>d zWf45LiSX*6f71Sr6A@Geq-hyxvuvkwU{A)!bFZ5eZ*tga_R2=o0Pqr*#(LI-+PIS<$An-IkA%PyWh;blb*IPFR0#$X~ z*Os2lsuvRdMXOZlzQ;9*z)^I|18C#1O7L?H7Ojp7$J`E}w#{Wm2@|@L5cY}|>Y9N@ zM_*BJQ<8tRVz4OMt6%K24EUhd2}!QGKZO=0?KjSe6PPMQ*Eqy8bvIWzi&^9Dh+E`f zg^yrza!*o?JQ8M>FEOki_hwUmj;bhj&f@-&{d5ZKrIYEeUw8aX_Z)>?Q<}-GA=fPt zOE|0iMX~CxM@WT&TudvIOsp*fi#h2PHSwz!qSZZ-k=)n>D_(DcZN^zIaDBWg*Kpi! z!W*Nh!cu?T-Pc!b9L7~L4}jt^Oo^E# z>9W1RWh#?WcGPq?MIB|oN&$K+X4!iuhIQPR@z){Im1#1-WT}c>;(HDLK!JajxVeMF z+OKR-#0)gt^H~DT&Arj@wy#g#6;YgBL&^l+yjVu84(n6M`=88>{s zYw0SZ>~Z;So?e-&Szz*Xx!<8T`CZ-O8xZ}cZW)ALN((NbBCw&&7uK0N80>wR@DUZ8 zEhmMhNKIrej))$+%02ctX`gGXY`Cj4K{RguYMqCy)5oo{1(VXybkdXU7cu^nIVZ48 zg!)#OjI!RMgQb&7k}VWVbv{`#LVmEmw>?DC1_r`b(wP9ojyf}b)Fd!Al*K_C zE}vUIu9Xbw5Jc$35WiTtU@!ER9cAWSMd|q`D{Y)JIM<5O$7r<3W_e08a)gbRAKbF= zdazmdBC(FlR3q+3-Q&^9nDbn=fdb~@O$L}^oTC?5Z-l)JabqKWQ`YVqWj|G`ra9?Z zZ+EzPb1d;0`aW!Y-A+7ZI?~e<*ADi3xI`rdAvAXp$ zRp-erl;4ugsF0IORFrC8G12d=Qc|j1Gh-p$fw~9fTsDB410@DGZ9DSYh6~^&?#0H$sMtF5Uf`13xioQp zLnMHZ6W>9fL~}ga-*4n{R4_EuG$_cWF`JLS+f3o2nFVYHrkBWeVxecl$xFGFW}eSZ z>@Ipg_X38S)19~muAszdy(H1f%*Eazz+#RH*uL{OuAlLl?@4%2D&f0piy^7~jl0mrt*g(-B(XeLuW3zGd!>(~pDUaOA zcl-MNnsExXDK@WDoZA9pg{?~I%q&OvqLv-bqWjceE-g?Jh|s*T*XuHL&_`pF@g%0c zACb-=#i9L&2w~vx$%zUjElTb_B4QjzHiGlG1$v(tbPho?Q0@r)oDM90X90DhefO3W8!9{WLU zSHB6V=Y=^Fk&m%N!~W zud7yiR@;`R87C$(bqw%u-x^=l{Z%jdyayVne@7(O<+nC0yZ5_WjTP(~bEv(e{P42Bw>T)^c62+BW;Og4J*+0L* z8xUcM|75!JUCxEMskB=tYClEPDf}OIPv#3@*#sb&zyIFRxG-GT^6ihy*gh|-93h)TC~%biQ{J)U#E`~JEA?!EuExc6F5 zKXZ;b=9mnYkUMa%*!Ud|F(Chhu_Ny!mQVo=z(kz@%sz%uE$d+&CBTx`*=pBSXUFR6 zrM`o!nm`m;ZVK>mA8S#a;0UVUz-fQweQ=ex;~z5{fs-g*5-rGit@sUAto#~|sqAM8 zoy0=<2o`3Rh*bGUu`z=*O?3e=aoKm?4ZAK}HmF8L0VjDNGih+CCnqX{3}ByJCgvo#?;g}b!J9b=**I5O39@-6lf;T<(8?vSL%Lhf=L=x0>EFNU4gEr zbP^udGrA84c;7F;1#o)v^7G5fHSt^_}{^Di~!El=PD;`q3?O8h*45`eMwNgI~66H_rlP=ZpR$CfEQZ* z^pe3%LoUB;a&$V6RkOAFOHu8G^|Zrfw__GbK6O`|?j4AA@h}Q$wQJ&D$a-U}V-dUY zj;{E9c1%E43q5t`=hDF|9D7x6jG0L-udXhc=rJ&mXcftJ(~oK!W|6w;gp$aYcu>SH zycliKw#v;kpY@Bk95z1D9;e>rIR$1>A?=UN&qWmB48cgcCTOd?yT|veH1bwlTtxE7yD131sb7aCNAC_J+su>81hF zqkdLM0zo9g#qO&9T%2#r z?r>^%k2F@;#wVK^-=vp$K&J?VUPbIj7SvbnF|| z$i1?!eZ%`;XTRTJuHh7SFAzV9wn$I8d3W@(tZ;VbJ>n=r4C`>@#8~iRv=rXxQ7Z?CWkw$Wl8C=n~3N~~P47;R8 zWi-kRek3p1=oFFEJWOu0VRGD3bRE=Z zA1rdbHE5hzl0s*Cm^c4TWdAE}pOc&sThBLFAPr>z0b4`U9e5b4UykFp5GV^%>6O_Q z#U>CLx;-6nczcG&P%4JE{|l|Z`I$7w;AO0tu{0&F%S=o|^)siuW)HfDHBy*;3^d+6 zjm_~fsmi9z5jPJon`RrVw6SHBv-Ae5fB8Rn4*tG% zKKTaKnh3S3fEyJe|4xaJXQSe-YtEcd(fef3UkuS5n8Wk!M+;qvJ)+_aJQ+OPXT^IrUxl-j@4kRn2u_GHaEw{bO7PfTgPFc*w#OL;6X(id)`=y0G%v<&$Xl2MB)4pZvy=r@>I8_P-n;^; zQdL8Bo~g8(jNSOY*I?Iv*tKt1l~ai}6aDo+P#WcZGs)g%y{t<>P_i|$T{jbN^@f|& zCi)Vu7^Ob??qHwPI|;%?>tZ$^468$%V^O2jjAVfdKIvUp;BE($lNFm>A&c8xYBJZw-KK8SwAuH z>iN)+?40r2iXNM>^yK_9CY<&kyDEy?IZRw~rbxVqKF+JP=Sk(d*AGz6ayjgdbeA(3BXOVb&zWn8^Pht2 z-p=F_CoO=sou_C(0HHTy3zail=_oC9jz?A^>1k7+us;uxjwialdt z3K+1auX-?xqR`#-#~w?S*C7}@Vf}ih^?`R2Y<|;#_O9v05Y7%fRABy+ZnDB|w?8ld zZn&=EJTf;lu*qZ2)0;J^0yLoLhE!cQo0^2ZhJ=lf)^5#cC+CvZ+E$fO?|h4q-tLnw zzQWq%>NQ43-hK=klDXw1wq2p~Lw%^)6oCw>uM}1>WRLr-7`ula##Y&z#L}1lP%Box zNRQ3Ox1@Phx-u?)d3!WUI7aAF4NdVKk3m(nPjr*p1au|?vZpE8a~3He?Jl>8ky ze5QcKL)px42dzLeU8snwdp4W?#7f-e3U&%r2>r}`Q{vL%oO4`B#D!PdRq@*+X%*EX z+wU%Se^_`<9M1lT$woTcmi{b9=LQYiRf?N$?x^J~%UjRjb?{T&e8IheQ?MZ%LMtxR zI>d@z%4kWyzHkMbRafrgcDceD*f(<~s|BP#J#q^poJ1z+6o)t1nvc7WP4XYBhnT<) zgz=I1M+6WABzp`3&o<@h4J|C#GF#_rquSWt%K-h&4bO4w&gAR}sI{M0`L z=T)^^ldEwi9;4Y040&1&jW+dXJr+;_Q*;~0c4F$v_Fb}Bgbb@{y5Dc;TN?Fe21t87 zI{PSOsHwYo@u1tRh+G&g)b7s9gqdeA`cbnt&7}j&-Zg%e*`5`^j(58VQGV0B@e@@U zqn_oaO%Z8Uj}n$=(sruzSx&TxKDbC!9dR~ZJ(lSGZ*Bk*Nd0mW&1<^b5ffm8(r@Z< zujYyr-q$#Pv?CPil`0^TQZysDyPR!1EEpp%L36=8;kxs-RI8u4SCPkce8oXNajA0(bz! zo@!SzSQE)kEsTAOS;Enl-I%=OzWsp}0N4*=R)gV>xXx0?3-UaM$V|K-%0j?=E$5{> zRD=nx%A9=KIEtIl@6>-K2J@1q3S3BK_0}YZt8fU$0nc<rnoyz{=ZJ#KMRIk3K z$}Ss?YugaEywb1l6-vz9U-_^jW7Xf>WQ~u)@r_F5va*j;manzbpjG}23pO3<@VebZ zj8lpZ-;0Mdxn1|xU*S+pRcAK78pZLS+RM}?qIs!ri;;dZgad;$B4)oI(YO z`Dukwu)g0AP)Bc~Y(DMQlqMN*NOG_GhU*B`@a9IzT|+WHr;OgS#;ShTt~AE^XX!TP z1Y`w8#?X0vPz!EP?f=1&*PmbJkC@j|L}!X$;8H{Qs2mA}Av~4RBHmu7lB(@TF){Di z5Ajs|q~EpqK(M43$RP)W{o4s7ajF6S4v{!w2=8YE=u{lHKMQ&U>z=|TsIa#{+Qh>{`4@u zy3J#Ot>m*^EV;R-?X#8LlDagRzJSt*a==Le{egz%+09n!Z_}t0YWoAyV@vz+! zHN|KfE7{;N{UK};xf$xAp&7ejf4=FyU&~VHOguXdHf@qDdeLR(^q@*NM?0*by(WIU zJcauHnDvI*t(L)!V!G|6B=)4s-&Yb*tJ4W0ABxj!pS;E6N;!D7qtw-NY?hy9@yk8j z*n4OBvvo?Xt*ENvH!`q3s3DMV|v$FT#NaqTKvXh(iWSa3ENVjX@(?|vVc-%p{XysCJIl?c+!+D}`g%U^w);^EA$>eVlI zEg1HQV-0v$Jc#uqDfC0-JC>wStX%PFo;yY%3vZcv5{@51%+IkxuI<_Ksk1(@P~h&% zi3y~4%FS01KIO6;u~k0VTIEGRfX5|anyj;@)b+}nqm9y0QSAeH!AY%DZkt#Z5R%lj z1C8pwj$&2jc8RlmjciQLxdI}kL!SmrE26U*QOhIX>W}H?RU+hea3|;lla@?lmo4QT;9*eF>hEBR?j9ljN znYjo47=HYsqR)$F#&m*q2;_T99lfKi%NFZ)s)wr!Y)URZ?OxJ*%^}9o)+TPi(LSbV zZmHM5x5?SQr6}zbIYH)=%e6DAp;{<${W@#ayy#Y!Rb8oVIpa0L*;80($MV6*JQ({eZxV)rh(@KTrX0s$Dy7Q$^>to>DDyD z(K3j;f$eZ@pMnQ%Q^eN`c_g~}k zpvA%9MkGwxDK^a6}t8^ zZdu6o5k5l*yK{xpIDZ@GW9XRFH}x@>Jg4m#w>OiH8=PBNp^loqz?tK22gsOBQ%B!a z!n;OvJ-ZOJJ~jjDVbn<5>4B-FqEhsdK1+uaQz_XE3J=)0wk~Mk&ryGqb2$DB@uobB z&`O3Mp)|W#!f%XrcRUdq#?fPP$J2of!v7DqHNwgx@9o# z*^t0FVLeUD_hUqHL|hsTAHT0z6J7{D&xND-)SYqAfb_?x$w$$ahw;AN>*B$m$%f8) z(Ms%1b}owC<`M5-Fv|0|y~bhd9le=yYJrfb{e+dvpv}1i^E#Wwx)<$2R!sqUy0TgG zWd@rRxa9Ke)A-D4#A@AiR^L^cNr2VXk;FV}k{Y=yJ&}Lg@J;WVZqs=~@h<0ZR=z** zD_D>(&J74nat>~OuPt``7+!3w{4~Gg%Hz~iA>VUW_&Dd9ckiAF$$ai;XVWwg)P7Oi z^5aTWSJ?}c(U~(cN5=#&wyC*kyrZ+pQ!DzZc)#ns!9%I8PnEXWJ*Y6tu@d(_UMu!X ztHgaKEHf(+(=@GLZl8jPY+oR(?=e=3(p?Qe_hm@hwg8F0;x|((?=RghpYP2pzrvtt zNbi8KKsh@FX&?!@ythYq5s;Kco5fEupL8rz=q`DF_d6JwsomwP_!h)Gf$Ot_e(br=OoYVOxzTQE%ew|%J^(kb*GC-;%)x7S~ zr%;L<8|G`eMeMX3i6+vNBOacGGucJ7TS4L2k@nFNqe{xHk6+zXA_9gh$98R;Wtyb=S(ETt?t*4Rw&E#F7I(@@z>u= zn-x@Zy8oY0CNg~b3~ByTOFp9vbgk3DN{3h2O|19@Z37<;qoQ7og~d+%xZVPJIc5;n zEFN-uqf=@flW%ASx*m(8Jny*{qDam?K05I2@hf&)m?vk%X|5AXGWWl`{(@Vt1Pi zo>pbnLiGI=?hR^qNksDC~4+v-&#}RxS#`gX9bF281$?kwyMRIK&tYK z3F5ez#C1+~<3_BHPCZgZ1UWTn?k~^vTz_TFrUm|#-esBKDA)87d zYvg;VKZ~X#S?Q>f?X@eRT`Zwg;L?0)O&A{^Z`zsX5dZRUq|Rn*G)jAFyKZlRucUTa zUp2FTsr`Cu>BfL-sA1Abc2P!|EnN=1l3aKCiKaPrG1bs7sm6^T)Yph*O6O~L;#`)k z?O7*3qY7I!>})J|Cie|jKB^aX-@ztMz`rV1MSyc^!M*qVsPjDeha3jR=P9fS3@Ow* zob^$oTL+5`Dbwr3Yqe3H-*O_|n-U^>8WSGjDrrRk>+o+DQ8WV{KG!|wO(py*UcyKC z*6h8LdZ*g_{n0;4oxv0zb{W%lo?32>gQOwdd+6lhpB!<^BT24WlBzRrVR1syEA1m@mQIOzGpO4$gOX7#lCq%rLf^_FNMq}2rnoln_O|q_&w^bE$rjTp z<&Q)4Fc6^K9Yo_NfMr@HWhnvz#tpg?F3X>Vz8OOzmN>$uT6kOdIp6-FG7wfPf%=dM z*)r#*wFb|?UZZD9q;Sn2xpT1b)6Vf6$1#8E{@TrCPAhDhTf8ei8gzP+b61@WWYW~0DzCAY7|q4Unsg?ZXc$xnIwKRlKOXr;iG8tr@^7#V9D?4IcwuP?>~1opiXYke z2zfOW+IZRdM_t77c5L*O33=oTW+I)11TbbP0ZK*1w7GvC(q;)W;daSN_AtRQVK5O`(WqRdR|ZxKmD_BHkJkA46#W?^RIEUiJ6fv4WsyBEBW7q9svfJ~WMc0dYN@34Dcq{o zE*1Fbp!A_F5eAX}^Y&F+F~znCj5Ft+o0JsEA;OFL zPR(?CLj2U0{PLe&{j+w*`f<~|@iYW+7-sJU?k;J4R4usL%X9}A6@5%9lLDG^~inkFHNMkU-?ggE}C7;C>|FG>agJoZ9jg+ zRU(osQ_5<||M4V3`TWOlh&GI2%tfZ@R6P&kv48yKg`BZ>;>t>Gx{TX+ROXr~>CZ67 zw`h~K}vAt|5s0w+;m%ttF|s-1hgg;??; zuHx)lrO2Kop>!#|#RIX@)4fH{FTV3-R-@v!W$It&m^K)Z{m`7l*%!oSOlt#SoCgT< z6@Y}XAz1y&?`_~&awb@8OcD$e1V$$)OF!&?3%-&+unw^;J=bCl9phXN8N%}J?(PiW zDL4T!x`pw1vhg@`Zh$#Udt@tD5czfNeLzy;09esP)D+fwg+JBy45efNkhdg4!KYSo+K*+^=u!+x@z}K6` z{Ctj>=&2R&2;(44NBBt_?X3$hbQwL&72>{mQM`Xs)$A9%;Feuw&GmUPmqZJdmMvHE z;UbTIq+WT>IvFNHP;-N{hpg(_Z}MVyK%U8|Tb5xklZygH!w))G?qC8NZeS(G7=NYw*CIWJ&Q9x_ zrsLtCWp?=C0AIiK+5;iOJt?#O1EWayee6=BbJoZ%r&NHL%q{=iuV!`Uxemd^YXM=v zNrV`h@%(u!=mSjvzdZ_AM9okEy&y>k#hdrK8aG-!qvvAsam=&l39o|O2s324M2w8+ zBUv)pT~a|J=!LbLiOA8E&i0Udc3O1r0P60&O7)Y`%@==$lSn|XFmMGwU>^usqQ_(< z#nj{T9=gM%wt$qMmB{so3D-2BJmE?{82=A(>W`RK5Rkc8aT241BSvvYX|UmOVFqfb^d({k7(fXt5YWBL>q zAkV-QG*|anIr7A_{E?`fonRXOoU2 znTU5yXeRL^o3B90Yz`nYv@GzK=s|Mm3hQ=rkvu~n+??Yl>m?E6Wbzz2{jVkI>w6rw zPwOLhc4xlo>R60+(J0NxfxOi7oj;WP=QZP%Z}6Qw>-i$L1zoI!i9Z=qBx_`lJ{YcK zrtS2oDK~>?1`TzTiNDMxI4JrGY(Z8d6ZAj3L8gcKp)|Fzl=@{NkFW-iwU~V3u@nK8 zpuNxNt3!=1Jry|-4~M`FiUan^knTwvbL+(%^c@5f4Nwg2oRtKp!=Kvy$o2i>_)Df! zsj+%?K0$W#b5a3hFI_F1th4E7W48PZ2pdnGb+$JGw*#)V)&cInD&v+>lWT7;yg}W8JCWoEia~Nkz=8>$GDuR8VD6u2hxCRUqP}p61pGmO!cNu0UF`&%)`G8jqe@UlRmeI zEypA{q{AaZUQ2lM&3x-CWB8GJzHa3b&38M8qUco}%r-Owxt3H1FOjZ=o3fU}V(5c> zFXA+^j&XWhpOg)awQ1BhFiz%>HYCxCLN^Wx{|0$6x<8XXoySfkCL|;{eV_`|p06?q z<7?72&zroV%W7wq7?ID-GL+h^KEZM84F-sh z1{3yhpPUBn>01{)J&hlkom7^wS+9Bib%Qh@aV?+OKz=Gq^JzKpJQvl~Pa#Gm6weAo zhwY`W)+wp(k&!&ZmnVEiV!u$Tpy!9dxkP$Zn&qdV?oEX-GnIEVyYy@CmWFD%y)L}+ zxGr$Bl%2h|H@~SvP(}5Yj6o;pRT--HfY?i-Cqj9HY!khYoD2-tK}X+I>PG2+I&&v5 z7j@*7Mm|zJ%smVvir>b8W8*|yrhMGc$)8bBjRm+hbP7-}bhmR!$062c=)F73z{tde zUwioG6kD{wQq9{Nt|hvB7>b8pP1)@K>}R70klT%RE7-6S{iHEv#mfy<_jdy8xdf&4 z{9H!q)*gt+?|!}Bm@OHEWH=u4OGHxQu}i-%BgZhrgyca5WfIb~V-V7A(BrSXIzqG< zQc|phQW{;l6%J4LVPSJXzH|cb?I)!pwte{tq2+^Rc6##2o~x|F+*N2dZbNH6NGZl0pd@_TTeSrd(K5{^Ktg&9 z4o)+nmOd3EwPt3YGJQ_qpY=(y8TT)m(9xxjCxpz<#XfAYwYaG!&r@QYQy&=d;A^6x z01x(I=?(DisCKEB7ePx(i`d@UTU{iw&TmIZFJMQ~Ben=saWPO|IGs5$VQMu}QG`Ny zG@iSz-KrQ`o70zkhLq>Lkn$?79|-LXX(vJq_I|!zxl$q!j-;Bw%p&iaa|IV1sPefk+%cv3PcW^I5~2zkHlO3pag)9B0Hhd!7GM&~x!yQ=&f>bX2cRV=@jFR~CN?qhR(tWW~1EH(5O$+saFc9e6e} z<4J8RxvMvCk(rGwr^#d4_C$eHKE9ufCSMacj>si+tfcD*xO#&)@UXOPJ~TEq%8?Rw zh!K|bcx5+4*lqTA{p*%wsrdUpI}aw|x?NW-WE!ST_efnu?9Mi9S1~GC-G?)9|+KS zH12rcrr!9KupNlN+!(9J2Dg>E)Y0Ukf*x_pGASH@obD>Z^M*7++A;6F0z&rQU8MjT zAtMc(M>&v;8AT=WK)bvgpzv}wIZh6a+^U#66m)6d%Bqr6xU3>k-1(YSOzL?jmVgmx zY*Pz)>^e1WMKjZqqo<8r2F*BZ2d;XA4m+x!;}Y6^{Z#jF7a^Q=D$lWdxWzavYm!g& zCMD>^DWeeptt*kqFC%01xo3TN+Uy=%1{(4!V_-CYGU$Pcu?do3Wk1}iKWs)4P!TW- zYX7tZX#+``>|6y9c^uG&b{J=S$0!(-?6h*>L90{R00KJ zp2Z-xZ&N@V^fVDtsn3vbJqDt^OgM#5257RBEk_xDPYX*U_7-uX`{#i!N~wu4mzYM( z{KAkKQ|yzCkhmAJQr+SZhs|qT01Odk?$X<1hPtn=Ikd?UGJ-Y@HIgGtc-04P4jnkN zS#*jUbuBMk(7e!A&9VU4D-snhcsvLvp57F=x-12{rTC>Sc{wqbgQ^2-_-LhlJ@L6D zdTQgj_QPfEn#xl1AoQklLrrQydsE0iD^8dS(!T#WzAvFg=A+xRaE66?XT>1@{VUP* z-SO$K&`gtyxea%IauU2)Q^Yl05Ltz9lQr&Zrl2y+0g8t@aJAMJu5V11_qJ#28iNi} zpY9hFsPy)viTm(_HY>G-$^FRxaQSH7-cuGG}I>ts}Ox@CZMrccY_Wh0q; zrLw8TzZ1Ux+EOt{%aY}5$lDLcPBZG3R2i3`V@D2EhtrbMU>(Vxh$8uJdwk#F8b+w{ z?C;5F5R;gYr8jf|0m=~_31G&`8yXtM^l&ZRl9qlD>V;I%FvorwaYm_qj?-iB_Z;Z|Qx?cu#X-N5&1B{kYM@Oe=SV9FBr)htcfq|TY zLNr9KKj6eaPjN{E2C1ZzlM^i!6;+nwxx74vX(~Kw-!x+C*ChX14PVHi8J}lQSs$eV ze@90+UmmZ^{ii^@Egvh#EhsoRFS7@{J7NI-$RMx08$@akHSDJ1Zj|U z>rRy`|8#ezxP z6zk5n;>^*if08|{gO9N<3OgLPR+9XmbCveu988sskkW6(3JqlH5|v+BjLUVYM-(H9 z4`AaUvJp^>LZgR64I!IS8cXk4ef^;eR-z8`0OP+ePZc`2JegJ;@PCby$~2siRl}2Y zL|okT<`8zuFnJ&5f{=9Aq2fePqV-c*f8Q~fp50o^9FgDi^?NECY2aaQ3mQX^e1SN% z*?jQt#FA6fN@F;Qr-;~IiJK$tzOOsPtcNcq0Oa}>pELQ%G|3p)dh3c>H*WlEKqZg? zRk8S_{_B54FT%gy`ksGBR|hDQ{m5lR5D18m`VUgBDd6K1q&GAa;C*L<8C~8y!~K`q z(XSTzRUvND(xwpWk$#6doTnumOdaHFu(+XCfE?tho3)`#GHl9Uq}yA_;yu)Y30xT} zd3EZa>u6sACaSac`smR_bs+Bc6RTM=AU7)|@hBov7|1rs$jXYf#~sFdC;(4#?9b%F z`sb6r`NHu;=1i@4v@Ne8=z~~%jOirceQ+(ENAU`L&-QbYJfvZ=!VjdxGlDS~&l9ma z^RMy8gz?^)ibLV?7Yk<;`Sy7>l04Go=KDS1LEI^bD)>O!|jts`% zGx!^dz~e>Uk;QC<_3IrC=b-grHwACf!`*{BfUhJch*Hk zX{m%H&~tLa%;n90cUlq}$mwJrF#_avY}OY6qO6GPabo8DFG+*nUxS9#(Y%}vyhOWv z;F{sqksse9RPogU+kT8zRsWH1;uBUs>2})3PiE~6@Cj%a(_3lR?h}l%29EsR%Gt5d zqtb`zRq(o>NYxf{vUbMf|MSLZIK*)A*$J2sTC0d|OCe5bijIDW(N6t3Xz~QUYzs*FytFU_?pfLu?0~+o7z5wsx30M%?Dp{xh94};mzYF+{ zstHGphKo?YmMSqBj_x@vYdNMUr^$A1uo9K}fjEzeR%R|+M6ScEK2*am`uGv5)_?|Y zpg0yH5qOS^99@=ADBs zk=z=m$7&2iUd_s?SmiuR4K7J&EW?D+I?PAn6F&(q`2cAyHxy;P<#sN&@XUEX|nz+~x3M3~R-%{L%|H zui-WhN`3RQbq!n4^I(7>Se+&!uD3uzF)}+`Bn|$A*e9JQ6DQH$W2@6!($msDtO^OG z=LRh6iTe~WA7oEFYku(iD)?iCKB0WM*LsC^dG>v#>F2hAp63~+Mm246EF2(a;(}eF z7bhyJT3B_%N!sw6J>SIHU(@n6g%JTz_g^mQjc zUmJ{;Q;E&Z&E5GroFEM6p>AewVbQwLZ*&EKl5nO=_J8p3kH*{0PjqFfUA4lq^8D?f z4g>uPAgws3pI1zwE%wk0(8K57jGQ1)j%|!BfUUVI+MwX31U6M9uJx>G*~E#XD})n6 z{r*U$$#Z?)DSn-57d!REzCEAqub3YNxv4Cr14`bs!wvh`;TZa7Y8At-w&v!DC?)=8 zZ(?aRwbJjlA8P_k%`Bv%&TRdWt#Ne12#Qf!vQYbyzlsaK+38LA_wxm;E(Nb!(4jQPk`fSMkEX)w7u#GRptfiQn@8-y~yzcKyPBk-u)k z#R1(5{Ac&Rllwtn@B^q0)290Ts6>Q%AdWTx+B;hY0@+u8cO!;CyV|7ykuczJUp2)( zdGBZZ44WaD63CDR`zOO-B|V{qH#XZpRmJ;$+7F~&+{Z(CClFBe{(TH9&{9RjJ|2Td z-`Nup1U>5jd(k=8VrK-x5Cpd_p;I6NdqroT^5Z>3^8+$$D*_M@gCrah3%V6ZP7iYU zw@%AtVf{X~jm2(4LewfCT&;+*G9w#XtUOz#BwPKy69{g&vIISc6TX28#_OyfEh$zb zBO3XqJqR+f;RkXh>*rv#9q2+S-AjXf_94t-4Gd*Qi`X-cn+yB ze|sT}zZ@b;l_Y4bO_Z>iL<1jmu%n2U0qZYA(=Qhmmu5S|Pzk8);ZJyDRUmemS%WDq z8ZOe9o6l9~j+Ws)cnKwavVMh&(P*#p#>sq{q!q+7p%ld-gjJyoPxNYvK3cGUc~f5y4X0`CNCJ#+h&G$xCX=1NXfM1aZ;D`12ju0j zokV^`BRFmr2l`^d8}7bT%RX|e8pM$4dPB<$f}gOHbnh#F#QTm0PrT%euW{e^Ez;VP zx@-a%?M|WtAQk}^@7;py*|-=Z$Z{7pkvlqNd+6cULmA40cn)DOaCcamvC&t+gyf{~ zh~W`Svxc{5tUcOf@i%{kQF#fS4H_`- zTVid4X_|%0|AB0OJXi8a>wa#F zb?rI~9AE4N1_+RWGZtPemqe+8oEo`1k{%Zj{m>Cyv^eB&I32%0^#vIZiiPvJN6v%8 zV|e$ytIas*rO=y_3t!c^Fgy|O2s1^Jkm}1-XlRlqhM(^qJaN=Q0sGgX>NkY^I%%De6ukqMm~$8%A7mxLAT*g2cGF|2!|7OJE&TC` zR98qW<(5Q)8T5WnjNyh9 z)-_}s+)A4)mgr)^yl;Tz77D-azk7dIw80CWxWt)-@oQU%+9AJI+>JhihWLK`?<12b z@eu8c@gglN0*qWZ^L4mWEjvMLRQ~ZE)fYqoDGn`42tyEYQ|_gR#~hu+XW=={c=S4A zX&0b3ebk;o4}5XqiMwf0+0+H5};qLzO_%hR5EC_sb8lJUS)*Z zUFd$k{WgjR>BzdH6HOg^;j>IfM^{F;yG5bv`I#lx=nUH8R#$r5s+ZB3m)8UeeAb?h z-91R^|H1H%7Z&LD(%77?)^53Bp`wC9{?dgGk7!ZIbDVKC?0-5fU=Z~!Rdlwlzi%~} z=+KM8n#$k&q2#Du+>e53fqMH55x9L0z-&6YT-U!&BUJbhaskc07Y57_XpA~XBmDtl zZN#Y0reD0!rKF^a?S^?6FJFEc(+(8F^>ycyLN#Nk8@+glpHNq)V{{k70|*B$^4m9K zSy|bLwl)P>dHFR|b++dQ#_H;-Da1y~#x~}F8!&u$+F7%+V_9qF_5si%rBZjCeL19DblFRvplZalV<#-urt6bJAw=1pR z7#iCRiG$#J>P<@xV)TH3fX&;6KJ(mWW@dwR790}93XYZc(um_mb?u(53y7?HKPMn^ zFD$&Eqi+C{ZSP9``+o7;-}kIsC~h?cD=D2i@T_&J*XH1A>ft`aTupPs9)|PFd8jg) z*9NTPx^1XWqT3<3rhud$Z!s&Mv4NFb(lq1g^UQmC{_Qf)rB*;OFN;LGFBZ=ncuUwS!RWl%L!M2u|O`tcJ4Y zEcKxHIH^^?8?!tteLR=`dkb^n2iEctY6R^h3M1uJdUc38DFPgfwj^F<`--n8KMLO- zc=RPiB|OU$`#^7Kv9kff-?sH@y{c*j#r20jJZ1-qXbiPIw~Gc=hO`IQc715K z*IIB&mH9VKn`^c?WZAv)mN%f50q7wX12B$=x*@WrP8+>iS{32PSFVe`TR`H+ppkr& z)D@u@0OY{}l7qqZP2K4na1gbA$>tQ8vsyg-v3$5N25|hm*_Q^t&00gDrHF5ctx)X+ z*=T>5vNQ9i@wmK3y|`Zp`kRM--1#Amp*ZGxE0h$DG85;z`g3BRwhXkNo%|Wo8W{nR zGhPEmL`>z)rD>T*MGcIpkyXwyJrsd5#`jKwIq8z~+=spU$2?35h`3$^32Mscj-T|ayfb|=R3mHA z11RV9hohGR1#6{l0?aQ)plN)_`FS$Vh+=>2@W*t4oGNKQ*39kNN2!*FOQ8YgD)pEO zf(HF9G~+`IY0Dc;2RC1W!CN*4|J7ANoqrH?<6b=8HdxE|=60iH<*|9x$K`#f_~-u2$x-Fh8F6K}as`nK>}?9cy<95GrenpJ!9R_;#%v%I zu%j=&HvVb5u;=3Yn}>*cX!`6NeSpc{QuEkFRHbc{c5+ZrAu65(W3L^&Oj`ygEH%W~-7xXbbEj z40nC)1s7=RgY`rZvs1WwUI#i0|dbU8j(a~T=|wN#xo$6{JDUOJ2`pkLxvw;%-EG_ZX zo4$w{_l){G{Pw4O4id)PLAb;Q--?C8(A zK%x*IAAkSjF>7LW1fT&)pD;l%sEUEd2Q;7f(nCleok~laxwkOL+U6Mk`_*B7uG%7h=nRgnjHI8co ze!g2+*=g>xnQ<*3nq>+W*&g%EeY~7+m#?(%Mcj3gm`OR=cgURqu)_%!BzP>oCH)iJ&!EJ@?tpXoDSS})|C!Uf5eWRT)yAI06d(K=A(jh)3v$=w={^m{w3a zTYbl2%@Eu_PkhQRj_CYR^8h)=LD8*GRpc9PsGL89Dvtd|@Q%<+NK5S?aNEs!J{iK< zN$ELoXtAu+kk8a{AI%3Vh{gV)T$gCu;~S1*k=IBtAMrbKjnlSNP)gG=FKdxASePv5@+FOHHvsN&qSA8ZZTVvQ$82DZq5r~@^U=i|CvZTX(dmd6v!J%=Se z)Lcz(cpSe`uNK{|B3>8ExeQ~hXn9ISH6LJIe*+QwAV}L4D$I%PzTi2?nkk^|bFlFY zz<;B%%l!nDqQ1w_&@r&^{`SF-{>tOe)u0nwRrK`%sWfnpp8=!#^Xs^oa&ahq`Z$P6 zMaeJPRe<$!N?(^glzzVDRdB_lb6un_`t7Ln|MW!U9iDuCxhOR#Q%wkza_sp`AHL2x zty7ko{V$dOcRxXzB`SrDWvQutC;Rlj8~VpzdQV_*<=G4{{Er%E}!~? z|Dn_Wd6wTCI(lL+_rm{XaDIJHf>3=r41Kyb1>a6N(El2Am1XqVJx|C} zDYEX(-8c9Q5P&6s5w-pDCw@(xUpF?$K+_|o*AET(Rq4)Ac45F~NxJ#W!xR}t%L;Tx zH(-Ib#S6IFvp_XQ;6xE|nzua!DCfO2soi4u(jC~VW0AJ1u_ z^z`t_?pn_BXJEeW*Vey2N!m!CWE+Xe$XmmpZUW8fDS)LsdbgVNXD_pB8xkLCj7!IuDX1{IC%RtuJ_~mP65>1`GP(>LL2V5 zfTxC}o$WvOuV@51`)*{kg_uOA(tiN#+b+E0x>4Jvx+U; zxqR6<>QHFt z&249hSkb@luiGr0fi#YFkO>I?Vf(qpz1PYc|JTmip#2WyXR|p7LfS+P`kq678G~q3lrKLfQr9b84X!S(~)iK$0Y-;M$UOR zprVZ*Y&}14&xxO0DL>faddRr(33MP92Rzr>PaSNv^9-|GDqMK3E`ZEUILysKMK$x! zk-aQ;bGAFvU47c>dCG+-2IVj)iFdu1CCo=%6vx_Sri%*bh;bD&>A~qxtI^#02hG*g zb4Wk@I8F&3?yot1QsjL{6E289yN4(rIlewYG_gDreV47aN8w()@Q>{%w;wwqjbPo} z(H&YhUW0&CI7EM%V)g8GrgWK}{90Sv>F8j>1dANZDo5-tGm=Wk@m3qZ3nB@Y7i*7p zgkC~w$-bc8Cxv#B!DP5p2+rem+4_erMIcj~b_*+`!Ay?bV=_i-DuIku_tgi+nQq%q zFg~T{H499B`0uO$4XqK1_^wrv_1;U#IUa59k?hz+yz=bQ!3X)S2Ok%#Ws!>@RE5$@ z`MJU=#`uK3ju8l}t)6Oyf<*#QzcxXwT~o+KPA#slUyjiV>WQutC?0FBp9s9ZMMc-j%D0SGCkH#KmbaZ;}EfNjemMEUJ21>DT{V@Z$ zw7q8&q@l|4E5IOCDNg7fP?Z4yd2K$w#2AWewa;4Q`IsLa#+Oq???PsLd(1*$oL6)uSTU#BqXM~N8I~$?u*u9 zX9&B?F{c)@BS*tl{imvU##+xruR+LgkbxydHQQArvw01~zCrr=VKZ z&Z~}Ji}nW-W!jF`DUV<0k1+;R*tz8T+1l_oPy{)(_#Ze^k8By$9;vc*`#Sb%l; zp~BYEMP7UTC+#;5lARYJriypCdgV~{;N{W%mllG~Sh@hoQY1jdb@p~os4LtWG3mVM z(C0e<6m#pEH4QBTLXeF&d9o5=Zs)mGJr-*7qLRLztW?+~)Klr#mPAoQn9{!jvhG(G z+PE&~zz8@34SiyxP^1tr;ITvDt+7;a0OBG4?D<^63*~$9-6X?2$oadS=j%IV#Jccn zQv{vchCuE`Wb38&cij~R=rQh7Q{Srx(upTlfiBhrCovvqQnt-IXb5#_>eB*iuRxed`Y38BWR}g5i6UA^-osdwA4Tuh)is^@n zTG!UvIR6)WZy6TlzJ-nJ2!dds5*rXfF-Va{atsh@DWw%;Xb=&Qc2qp zP+;h8ML=4*;av}i;y&l>bNxTOAO7!kzU;k+J@Y)jTyd|p?ln_1DWKh+)kIrFCfkeQ{YpaRAO$RJ z^SC~wFIz$9$DxN&mV9yXKMl`;!{X_jlet5o1qYRFZwF-gaLhxIlPhSXudP~*IG z+Q7CxU|lGsUW~d7fO3-F^_J{#%b*s~*Zo(J(*V+F76lF0pF{W7joQ)MMV`g|jUBHu zhl``wFNces9#y3VBY9IMzpVBCYD& z3n(Mus*Ou9*>w+ynWupMYJi(JUgVbQ<9;|!?jYloMU1yE`r{HvYz)@A8#VbYZoFjA zp=vgP#sr*pHZ@XV3ZD0 zaWQmcCu{7w2U^RkrBP}_ET$-OK>Hj}7xd0GUkA&&?i(`J)#P2fHpj|^-SknM15h4- z6E7HX=Wz;2N|-~kWsbdxgwpG*jCG9aW9GDVFL+3#Mh9TRX;q+hQDZ>bK3aCG49 zC1{jb_LSQ6FUT0sN?e%)9&lHv#%G5_u&=rSXlw@Lk;Jp zxXK0Zt)a)LVYxnV%=H3EYCt-RgI9hrz!#}dRzwau@R?1AL3A1D&AHxU!Wbhk^fJI_ zd6{J(^cS*aTuN9l2P%MhD@0EpNcg$r(H8NES+0;567AK{(zdBZc44Q9q(b<)p_$zL zBBHEHU&_-Vn2EcBjBuo~k(NxT;DvLP_Sd@Xt8mU~4ISzrn%oeL*8ycve5Nj2^i(~d?r9bC#h(Vbl<>;i`wFJYgUlh(h?IlfICsF0UB51j??=fV9SEnG z-aHhZ1>a*xhf5HECEIf1M^yX1xEy!4s1Z5~(KSyq2N01JsTIeATI&-=^KxjnM&*iv zmMyY~Il*qw5K-E12A9@sM=lK@sqsWN#)>!AFYNhXT{II?$}X@u zu7~IkM;?5gI{OtcmS<34cKU{3Vvr4Jr80;V^`;!ZVgg2;909DC<-;-Zt*Ip8VXFNP zXLsF`4Bee(zcei#E`Zp*ZNLE^4xpQ*(t(97p(3r?2R+_C8E8jK1<2oRGq0fOFPN!$ zv9X-I!E}t->TF`+(#)F;L7?MM%eeyxi@Qaw5HBJnc8u<@_%Ox^;=~oQPRorq)9zfG zDAqDBBZFnI`v{FDTkjsfB8?33Dl$a8ah|Oqp2G_T10e@)a6i=OOB=)5Um(*^6-b9X zQ%iHZg`ZyaI?G*n8*;Dvkye-w0Q3|h;If+=QQ}h`tMNQ>`5sXxC{2oU?JzP68}N|q ze(&fPLP5~>HoNXsj(MW|8GY@G9oJ4K=9_HVkHz4Dui72Gx_P_Mk4gP6SYRghci(T6 zwz)sFP_$53aIgXsWI_(vV`iSU5e-|zK0(w4*5!pZhOl-LHQA6YS7`~qfi4nsZv}U& z$71t|UAyR*5H0}qqd-wzmCn&PRt;6JSD`AQQfs$0ObopTvBw|2jH=vxXrCEAa7WW@ z9$gxKu5u4rT7cgy)WMUON;GqjJU?TWx*D=6TYOadlJX}i8THP}hN|Z%#46M{0@Z~Ru$O7lI%|+UUJ&6xJIw^su;<}Xo`L}n=fXkg4 zQt%y*K@lZ#!4O^(E`XM&nW z@y#5%_D40qA^3^KyEc zQIZw1oKCQu%VvAHH@!VEI!}yvlut5v-WrLa7(~@@eb5HI65nj8be0Wp2Owd1n*)gj z2s(*4RtyIPf0Qg%-YAl{blo;=X@~`(HKRF1@+$xkzmYQoB}t)rDgaevBT^Q6l72($ zQx*7VK2kP8ND&|t;fnc-yQ znuKFEPsT$$d6!d(PF@(_a9LJICwyvdA|az%7TR|!3^YsxRZ9VSlL0MF@56O0QssLCXCDWy}3ir~wD5==BueechGu77cfv@`xBq9H0 zQD%Oxt*bA4Yxq^Y+J%?1N74nGy~{1xajx^*_7fWGgW)+KlLtrTD@32F*A_DNX1)JJ)^;=Q%0qM+f+N}=jiuYv zT8r^WDZVz8Y1{aTsoLp4?J?p{T?JDSk8`8)j>qPpn(|8!TxqW}^fil@d+l@m1g=hs zlFGH)5tQr4y0@46;WB-C4OBk-skOo@-)1unSWUMbuK+NU)Ug-^M$262fLnh;vKr6wQkd0?5U93J5Xlpyfj!iCKl)5*!A zpp~roaUY*FrrGcH^hrSM2Tko0*X@KdT{@4@)%}3sP&-oFqL34$e-g#1S5s|d2DP>p zshy_zq7n)-naK``${}xoS$E*@J78qIe(+h8%JFUccNT?MYS2od0^mI&fhshbOR#Vzj@2J+lloYMZCHLJZ*Hvbx>aUz&N8` zOw{*!zN$db=D{IZmW`aw~@0J89Jis_6WE~z>h!Nhq5W@x`GZHgwsrqmLxz4T5;JOroj zP83ITC$G#7A2oQ2Nqy`Yw>*hxUnI2a^(e4+smA(iTzpbof3!J*jVeZg64A|ip^BLH z=%WjM6ogne?WIECrLODYFalo*!(%OPgoUpE82V&?x zB0l${TT6gw4?oRN-Bz$P3Hkgs`*ieA}80vexU@A&A4vhS;Bk63*2JYf#g zEr$ZZnK5^u0VzXx&ot~0_sDFS;g*akcfXWA`2N;qy1JSxK8>^!qW;uKyAX>!VA$yN zdnc}o-2V57tG0M%cGso`Y{Qd}3(OcSPr3c!D}=}0XBXs+8I??+!gA&fA|O7ld#bPJQL!N17w8enrf>D?#N>mZ2D#oCS4+V5GHv)lB;U!HWk%5?h$ zgX^YvvA4k@(26;PaLOP`;zw}OVd=<*{3U47@)f~>LaaJs6-Aj4hy4J=E7ITdz9rb) z(DE~$^7WD2oO-xGrG~33%dN%75hPjshJw7Z^A=|L4!=PP=W_|+lyKizDc-0uGK>lc z0zAGdowL=jNcrHsDDHH~WLQ}(Tx(8tn#&ybJao9+(j8=4W>m_eSLgL&-~xB^f}-yxRKN3oAQRovcyQLQL6BIoG=}7lH}3of z^3_VX9x4Zwbbm%<{{6$`j(`FD>O9kvUl0E`|AD#~YV0t=ab6;N>T7ZMc@5$Xka<|w!lCICYmx3rSw-BO`jvJ!n7Nez-W ziXq-{XTb!^KojW;gR6^xi~jtUhO5J}PObnA_+-{V>d|x1HzMHd6{PiC{jyW&#wdcg zmN225+xd=NSl6Teyw;ipBI9d|U}=2?*Y^dui|4>gcE4FgX->p z_6d?wu#@{k{V+tLiTH}ZiZ@4KP9y>)mln55`Vr}2*$=*CB^F28x0=9;&!unyiGu^? zQ4S;c3K&r3KvX~&usfC;$lP*CYF~83fq0*!FH#J3!r8RG0=s5n6wFwLPsC51a#zW1YG#IXTSxB?utkjH^8G*&nF(+U@~ zodkdDx8lKyK^jndOkm@O?U!yUAhZS%)Zhq!;T6gUZX^Bp4HFC|L2(nS?(W{X=~Rzl0y_GlwSOwTxs#q4U13PnFo(*V3P4(j zEg3}77ElmnGl-N(ReguDas!8@>Y(Jc= zbCPI_jtqk-p#K~|W55ax2QHn{PJ8ip+8ALC2mny%+_VJ%Y`=p^Ijn0p4oPrnfzNW;{Jn4?QV z)BZc=yQ%}y#c8Y`iVk;LUO#eCZz$@<02l%*d?DPdmtJ_GWA;4+$aEm5%d4fv9#V9* zq1DI~h^#BG&uQRsZM+RWv|}Xt60oh(v6(_!={Vb#s*hsd3@Q*Jk?z37SJt9twwAk~ zmX48TQO`NQ5x`@jiWIAPHPmG3*Iz=LV z*sj-;-j7}z#IJLXM`v=}NL2OJGd!o3#j>G+<^)K6$NJ$B!4UC@eui(hWkQ(M=Hq~4 zV|J{a({b?wE%_rq#=9zOwIHmup?-)Rkc0;yc(lKMe9mq?(Ix&~j#1C3^V7&T20U0D(-T=~N~n&DQ^Yk%adI`j$#5Tp_-g;_;#FOw zND`e+R0&j2zxQPof{~5Me@GZe)OfVHRp5OcvuwJ~ez&jWorKKp8VI&je6J5j#IP%p zCN}{Z;yXl`e}lkVTk;YKaI$A7>HTybx88C%oFH6gx_ zLrgxBkoJ3?TtvtX8mbAQ2F$=%5UwKot&)f0M&=#AzXLIcCJ;J7%VrOU{z$LIva!gG zJRGD*dPclsoOE^15Kz#(-EF zIClQL=@Kj+`AwPAzjq$_*}uv9McaS|t?G|c-1&17eH3y@!n}k|?wJ1^lD#@99rnjJ z>FVV0Arubja|lxI&#oi(g`MAe;@DLhOU3=i_)_jxZzU9N-!pr5WVnNaOn*Lw1kw^c z5Lgz;I09IdHn_{U82OObklmq^3{(tXGP&|wu%D4g#|1y0nDNZuY}PWz^@ z^D`>{bA91*qXIK$?)^>Km}7xadmxh&N=b1K02R||OSx@hH8|27Ps{;o>jm`O5C!JV zuaJA`5zp(nl4CC)PBKQL=|M*APm95!$4))suwy*x8q2_@ymjAEWLa_;5yj(_jQ>* zh{8MvsM^VtWM=YQj8z!azovpEC;;%SyQP$M)B)^Z~X^a8rF?_-_p;-m%k5Z z>%~}G1gzq<<=r7<|Mj6^XW*;^KC$0AgWPNM92EL$>_= zSz$e}3ZpN3Uhb4M|FRY_*I+@wg#`N$b}>ZN)48bt$+0(i8-%P*|VO{`Z;x@q_>Oj}>;~(5_t@8~bO- z3AQ^3jCB*(D=PJrPl>S3_5{&|p9SxOk;_l~;EhlO8NQ?Nu#@4m+~ z;$GXc2^U3SH1Q-TGfNk0>j zhSNRVg(CdNe+ZK@TnZchp!~&;1ifoF-aq`KWFLwC^yB~fz#=lbx>=LPyE^~;UP3Ut zKG*)Y(Ge~xKSVcXOMiHI;=jEZdq!l>e|u%0+HRC|FV6wqr~mE6c!8_?|8d>mRS(VZ z3Ar3Pxw`)PFKZ0I?lk9r8$arQ3-_;^^1p@q<4FJi8M=T1?VZB4{0ok&{QgRVV7`$4oaGqhba3AS_WY+YXf^qAKJ=g zA(or{3m~cbkMgg?1qI2Eo?sZ^sJQg|KIBUls-3KpD&*;RUtq^Vj!viUYYhy-ga+YO zEz>w#2yTxfjSMPI&EqP%Q*J*-Xy~(`Iv~62ZaM~+0L!8bRErKr@6g(e04~%4Xqz!a zO`+=@d%SvX8Vw|)uY78p?DUA$Ezc}i1cVBzl}unF+(y6!KRoFmVM~lKK0B^2>2*RR z-L4L4%MhoOh$(ZWkennK8a4)OjK^-?SS?lCS@+JJ9It%vnZ?fF@OjL7j3Heu9SqQ1 zr~ctyYoIVqlkjCKTm7cm7Lg^sBjS;p<8HYn5d6x4G1 z1|(s(0q6V3x;vXflpE6beWKUiInjG&l`X7!9-1eOtall`lSt9hO4bzG=oPg7EB#@I z<499%RPSUAI4N~`){_&C*+(q~6mNlqCZX%Iz;)5H6Tq<8FB(2D9X|ZlOd#Z-C(HmfImv1nQhQm4mq8DjrjvvUm3&B zk3vd98j|Liv?qct->kQ&1&RqCXgy4i9Z9^`k) zAHxT)rhi`PdJsSc%?Ry|9i(&hKfsTh4u4o$eev<$+^iNhfuy_`cSvN{{R+ zp)!>|C@x9cy=QOEt$4*)`E%doQzEg(KC`59#p|$O_cxLn`?&E{mpPpv#u+)ZXGYO( z9}?J|s9lA`y%Ehr>-W_5s4xt(hKZ~I(g>AeZ92-pCbEzpOdGX&ODRtI+9W}5#Tyy# zqrm#IUb~jtYG~IXk_t#)3ox8GsAGB`tU^Uah3)*<@ZQ+b=Z~F+j8gbdA4I8;;*tEw zMBjQU(;`Zt;Y0RUVhGtH{TnhuuJm(7i`rVfoV*kwSf~fb;A4jG;5+7i=@9vG=u1M0 z`1+#8!$5mR68I)6JX<}80Mn1L{9gC|^}=WAGA+9E+9IP+T~|%y)^&fJ7Wop*+eNKs zR1Rm)-~09{p=3X6>%{WL3OdJ^%s+Q1f92cLuWXyoIuT{Gf({#AU-#Hhim5k4VFRdC zAX8R%zIY0S#k4?u*s4`fm&aAq^2TyWHOs<~Fo`~9coJJ;EbWmbmgz_WYYGG^pNXm~ z?~eoCGm}sfs_K}-J#k_;N+C+>Gyix-W7==g&|^vB;ydlTLwP;1ib#(v4T|fKf|53)hR3OC8D6Es>_*}I_bKF|P&gmcqD#H-owvjC>sR2TS?MK_U4MKOLO!-N z44y*aG7Ku8(LO=dZIa5gSg+hoUC(u#yEZuMwox*_;LJ{WC3{W;f{TX4PJt8gzuA_K#J>ljtv}Djl(q#S46HKHslI$hFqS)YE$u8?{jG zScJkxy-}+OvV-50b1NC1u9NchbKP(_qF>(2MP_)aPRdz%dgAy#uEKOB9A040vb+F_ zotQ+wT*|+Jj08}y8M5WUeO$!Sucyx*(T}n}O1`|CaOcMnMS`Q`UD&(D?fvd6B#oyCKjg8_> zij`-^V&XCsS0}yEoa<4sa`adXQ^qUn1@W-qkVL~Xb+aw6I}Sfnf%jlaeUji`kwM9I zys}{``guMgUTDsNpp?2p=$#+skdF*m85f?TIZXmNz7m|MbMt3nJp@Ztg?ah?Eg=`Z zwnYA8LaxT7YvHzZus1pHg#FQ+h8(~$or;1@n49lxhC#NRd=3PLxQ~1*Q%rb)j>f(p zyN+Tp+QDlN$WYQES*{BUSHgx1Q{N=RZ5wKt8tj4jnM?bs?&DI3jQr~K1}|`mSK65h zKECxW$iIq`o-|hC#71QoHMyg!;XUj}qweG51u}NqI~UoYaF-e*SD(Yj-Y3qEyZ-oS zi+oIt#9f0uY4kZPLWsqDR5Y-m!(vods(H_0eX%mKx%YU1 z*S!HNc@D0IR6=%dl33VqHu<&cH8_Ih?H)Jaw&=v48iYOheFO`N&%z*IuG!aM)Fd7jK$Q5cTj+?stzLW}oV>Y6D?Dv-x;nRj^O4N( zy5T|QS=>>5^1yQgvasq)XIN(UknH@}gnV>mHIab>5)|dOcoFs_N}_7dKCZ?z6?$6+ z6z-XS!vt(ihEYSz@n>jGrlgodXX@Mn-HwuoC%_HVE?l$XMoAZEifd1}pgGxV91DoB zQM78O*DLTP8h8I=rX)38ThtEJlJ?>#bQRI=${bqti(&rjqyeTiSx z<%|t1j=(+P(*1bo60k5SsUC-=^21TpUxq#T=wn3yS4_iOYz_^3V=n4&9*b$Z6Z{aZ z4KC8r(ednf5Lt<$M=V5k%7N#(XLlSyvdPKk=teso5iKmbu{N;XOKMq=tzIxuC9+$YBOA&^bzS=_nk~ zqJ6|`yZ-n%hkVqQ4DyD162(aGNCJBj+c1rWJuz;1cH9-sc`_R4a-ubkK+2d-7ap8P(751c^k^-!-Y5y2HRr7@d; z-%z(I#`>Z;l~kG57p{d-IyEZBz)dGp{hV)is&2MMnVX{C$?Xx)qmuz5>H_9eEtpz5 zkU*IV8HuXVG9hCC*G-KJS?Ek1y$Pn>OB#U|NQBmg?AKIpS^jo+eTOGXU`0Aoygk#q z4|)RCm_o@dBu75+J*UwD)k{Wz9{%WdxOaJq0x_sd*aVFs43TyF!`@D)K2PkvK0fA2 z?(%U%yXiYK7P4gPg;&Nn)ruVp^OKJY+2+jGe){yI+2J1N6jH;V>9AT~!L!hss~jao zY1EMst8u?xbgGzyds*TZs8_H=JlY{o+%VsIGAlkQuQI7{UeyRVW0EJlgQmp#z(cTf z8XDbLctOE7v1|vtHR&fsT_0FnG?dOOfeLzKVCqdWi{401z8?NG6YMkyKfIo`>)%^I zaWn6JtOJzR@Hnm8Tc;kC6|7%#(1MuPBwG#HE2gmC;cm#DoQLpZUh(8Yr-ICRZRr_`vSA;evC?##--&3UGt4p7;OUT?_Rn ziO`_11-Q$#y0qeY@j#?!(=EK2M=e*>A{;H@VlO$I)riu-oY#g_JLwg@q20Kq^<~lM zb@mAPNC~odxwns2T+Ry*BPXZGM6J%-AUNPrb;&cCMz$hS{n5#_dqCEHpJ_5Wrv%Vl zmh%Fgnfb>fA-bg;r^v_*{q|f%D6_RZOQ5u5&*PSsj+R6AFM2I*sO&lZ}i@H7OQplHN*9j<*FCDYf*+qYuXmDx-etzTh}(qb;9D_sIfXO zL^&3&SDSU`H7mtAIsj?Wk_D}Zc5e%a{?4eW*>bKEx4}`Es4d)^6svV3R{r$zTxi@% z^gXz9oxcr?wf?L07c`yLEY*taa}Ds`pl}cgI5C(P3+~h^Bj}G>t1n4gxYD!NAa@E* z#X@fd z!jn9q>-anEY-OBm6nwo^<&E`c3?X#1|%@sD8|C6RJQ`HvoTDNcx;}d+Yn}V4d7tUp(IORmHC%i(|}VN`-}p zESJt#<{x)ZIMj2#UD$7kIoA3np57DaWpH<5ETp#{a0HnTpHb42tqG*T&%969S{@b; z1$#7m{tqKd9G@^E80K5aP09On!Vr7{@os*83-Dru-3@q!E0?Ax@rLh7+2e;wg{jaT zCZO|Fhqr!Pwy?x|bppP#-!kd>)(gMF3y@YZF=f-r$Oi|q_yW5;Atc4@;tf38?3=oUw7fXLhhQn zQ<6Ix$XU3&-_~&dTrp%mUlVeVY)#-Z{7lMEuvL`K1}4_iaa7-SRC1i~BMWRM=Ls@8 z&wKD^#@0JsKPP-04v$z_+50U}CL#hJCc#6^`w}e$-(#O5d%%IkV6Pl|h`t9S^B%2j zJ}mwezQfU!duHo}&yo2AbKkhMH31d)+2>b7d4#8A0p?V*`$L&Upz!2nV7>!^Zqz>~ z%mk|%lf(D(F8Gkb!#-pBqYgj22H!hVgpxf|$Kv^H4~cjZy!GB%E6#MT5(Ny5)mrqwC1-(X_4MzVic2Z|5TmGI{%b#L`h`DG0c%+4%pB%TH&a7lm6l$YKSs1j6qa$R)`FsN@V~cInSEfiBsD5XXZq zTEl=I$^x!=qq;CGw{cq?lTzHb_sua!Hix?#&T@)g?eQQ1>m=M8kzQ9)Mr|mzPwjUX zsNvw?cx5ht$QZ~E2^(hR_*Xd+re%!5U^)O8>n@~VRc(^+V+pud`~Ih3d5G4>c5P@S z@0Nm!E8aCHVW868ydw=)(GDw6CXh=Y9}`AcOAvwN zeOlp1zpYu2t^ekmTYvijTi>Xl3D36y)2a!;O#s3VcKa7TR7dj1A zd=+w^&%wFPKf(Q<0sX#65Pz@ps_SNz5tr;ST%ThkvCz%xKMm>-EQ-*_1B$p;={wv~ zkeL7R9S@k`U@)@5!6*P9X$;1fN-YnZ`Tyw$njpb#W2^T6e_kY(3!^)1{QuV$>D2XG zwa2SE3OiYTT##i{u6D%}P7wDJG@C;0Sjt$?#=|B??3Z_fAc#Hkdpln-q}Z+5c4pe= z>Y8-F8an5yoMc=!+LZY&QgX<~gW~rWNyJYh!b$DL-*nU89=7zDJGgBS91;GV*8Tzj%k|6Qu>m>2Ae)_yMQ z>QG%ZO^0?Xr@8CLmrgd1sEWOwQ2sK_{O2mff_fe{=>-4o4|TiaKBJGo1zRXTTi4b3 zcyfC)u=j!EYc}ij-}S@}K}Po+Mrzl8RDWXpz4i9+(0L$YY&&25-MZOv^*pbDYAu}F z$F(ruC$N1?=rq81C^WeS>-gKp1hu?99ykKx?{;AadluoHc0ZsQ-qsU6&uuQ(sefFq zhiD5kdw8eN;=%2sBu=q;(q8@JmZ8IPd4=Jf$L(FV_b1{7a;8|X{o|RUtLvhE1MfUk zbb0%XG>C#+?eqh`^EVI$M(6hbhG}9?ffSl}DI1oXP0;%*1Uq~Z**-~-uK#iSOtIbh ztjwH^^J8sZD&_&TkO8Ta83{y-*NUaAKYKMoJwOkJLvDWDi}PAGX1fZe#WS9p@>NkHeGw_{&@nN63n%pHSRIs z@ByMwGX$kLxeA*Mu#f}Gv>4_h4q^kceW`?be8$Q~a6=JS~Z-Ur=Q4$F>7)`E*XB!V5G-B?$$tAk9Uq*Ye>1;fv>9p2k zX#;j?#zUb(S!aKwt`yTQtI{%+q2BAJqQjzVPfPfu5MfmUrAL}Gvv7f(`w|aklfR@= zS>n*W*R43#JE6Lmuj{_?alSglD?9C;Z{i~RS=G-9GPNt3!CH*U=~2Eh#c#+CR7*wv zzGn}Ri=T)n!QVh3cv;&Q6(;-bNZZs*ZPq~M?W~m-hwc^jf5{eg4e*V>lVxIY%QkZG z<~j}kptY#(+fLM%ZyrHe?KhlE(uRYwI=^bzjU|^*tE~$ta9)w3%93ynibP4)`LQW< zF!{3TS)$Up57jW3CQ6cLlSjI$tsN=*5K4`sRf`F<8MvZd z<}UQPQnTX&$3edH3u^Wr+uJ}#q6dP4@9|)qJDQV%u=iviFC4bwOu~i7zrOMiJwkly zbRA3R?Xr$zW_E+sX$c36_Sg*euBbn4=%Nv4q%i9>@a8ejG6>4*nC!I9rL(ZSC592S zUSpxmdC**PFCo*FEH#g^Ea7_Wej}Bl3>u}>U?ryG{@s)_h8fuQ=rYOGwN!eNyBLEg z!>MQB+lB4dD}i zt)$*Ny(T@kXHc9R*=NIEa`C3i)0GIuTwym-O7h7h!V6-p^v&X@Je}~MZ(+AHQ<=m~ zue=qt`i?o{1-Hrd&`gyWS0Zb`6u)%w5pQ2z1~;(0Za1A20pRnAlJc$LKqR;d`Ryjq zY+@er;5q;S(s#YwZx=IVn+W~Q*>yiwHDicuZbD=bq6DO(D7jV? zRaGAhT$nBKH`t7Niwc#J)GrKm+P_4r!}j!7Uen!iQ|L%Y+Ssk#O&lyD#+PeXdhG7t zFZbDHG#Ng-pC*32lV-84z$lxwJ*!(R@upEfk8$?ENU@!h9=_%Y`nw;oWv(5=zEy44 ze5=$7Ur{QbCb{oNxT;xlG9V*XC6;?c)yt6Eq&7Ldn&T*Y>#UQ9XxNenanY9B3i_b{ z5b;@MzQjG!&H<2_nE77zP!_jQYa2jR8Y!`8g{m?LnpPmlWuRrOr@Sa9C(@=Eib$%) z7J8kmhrSu3Xrd1_n?s+z4&d>+14JWU#8)kjSF{p-M4VF1S4}(a(=OCSY;~lh@yhF? z#zQx>@U*7KELti>_Ec4$69iKlzns1iQvT01->^F zj~p!L=H}i`KHd}9>~!eh-I{1u`(7sU2idk^HRrImW*Rz_5=`mZSdJ5Fe|UZC81-uK z%%@vNsNi3Pi;fxzCIrl#L$=H|KTb>~`giT&7iS6S^e_o(t zY{Y#8l849;pgS?e=+0npi4x6B$_f5?XPhXU1CS7{10+MYr}ICaguwhwz~vIJJU?Qp zC2jc(=sgXANF*c^QUxCT_2%%ic(@Ph7h-|j`uCerC>1Q(%QUO8yR@2*jn}?k?wsm) z;g@N;r1`po=F>8Ulo{$wj2zax@yd4oc1ha1nKovvx zkxZ)bSe>hGf8B#hW40U7PizqA~0zd3~W%zrEz)5CA1yvN7b-D=Zsu=m{ zYH8gbJZr?;wqeqCTjVCY+R>Z083W%5JHX@<0JV+6R>3w{IIO}p1_^V~sc>>;M!E@S zJo3JTgZOrb52HetUSeGYwzA$Y4LfdhFjk>6Pvb5&#IELoa=dcSEe?xy!Op4oD_KJo zW;2Rf5!#l_j+H9P%Uv^IKTJ}%;y>!qR*F~gI;J-MafPbsm+40L16C+1TVx-cA^^Nw zpo5U^R z!F=_aw!^0>{6?s#c1v8O>j4XNiab(y$FU(1k3dhLIsd}At1i8EDAsvx;&xtvg_3Xp z+Sp>Q9y5PJ%nl{*BN!cMt<(wmAik4yI&({q<)9CQIo5l8$V_VjI4evpgx4bJ9r0YE zBkxAJ&3d|OAj3ZU0Pcj#SYgB{kfa({#j|xzBnww6=z1AivW81q$KPG@wdv`{|1}tF z6M{%&jW_VuHI02HptY}q%obh9d4U?Mw%c~BY(d_L49x^KhWe)mX-34%_Vx+@QAz@2 zV^{(ETW%l6VxBN_lRdC-jRSLFDz#}2R#(sB>krE=FxmUXu8Hmxl%9ClF({7W=p@To zrx@jFH)3vS_d)yTo_KUV{lP7&poJxihTh@xEah9MFb_W&rbaL>+|_$Gfn1`=*KmQyJjo zoQZpIP+N5qlD`oG7>jh4%dC6odmx)9cRSZ-xOpZ{U}cb2yD_Xe?ZB2ERKg@3k8O1-)344|_r7DTI)W zn=L_Rd)rh6tyzZ-y<)w%6b+~CtbS*qUA91kxYx;ZpJ46+-SRwdYZ{F@EG&Sk*wh0@ zj9Sr?BYB3%hyu~rL)$BdI3PzDQ*5g3vgVhfjay2W=Ih=y^UzyllW`HqS5*OpRyP!s z^=Ek^y<0yd<&Y-p)lcrpC~a(G*D;y33)lFRYddF1VN9OUig|wI^cZkMTE<__H0$lD z+^g)?!9Gpq7yR-@zuckih4ciTm%tt#c~ycyRi;7c2#T=0;9mOepKuEBRt#q)*#Flp zAOO5ie||2sRLU~6$7#bs;c5irMO~0>A2q^_1oKT20JD+Kk5(;M0@Zd8;S?dQbQjFKPWRDY{ulyd&ngSUNkekF&MVmIfh>rOau=<6 zci2zMVb0fpd=Mmh`($V1^9c8CccE&Y9p+mv{ z4K0YY49kV5+6@Ni8AJ0kt6HH2;DDjg0}R&uU4Q`RxQD3IP0$J&F-ssja$7k$I1+$C z0*XtMa}U1_jHOJ{FUBERSlKRn`Sq7@-}c`iNT!$bgwuENQo(NvAIwHaQaS$%R%17* z$#1rQA1&$e3EB{N#@AKIRITV4OXdlI#DTrkE&@E)lR+SL1I>;;FsD3^?M?O#BT{u# z-ff&%;>TOzTa)raQdcG4Rd*pz13Z1c#oxjKDpbHl<$x_?Rm*Av`%e!FXDz?nfi9|J z5BD6r8v-e2iysQ3WuBKxy)053ioNE2#tO&XdJ~e^q`pLH5-UOB?Jc&V#do7k3=9Yx zp>);P|8SQI$mRT(faf_U;N{V?GAwtk!j&cXSH{v4fy}ohO;=LuNx((=#K8<`p|t|6 zRozzHz;?~ER&=8HUGFKy1FOPcVj9ZEOGn7YKUR_@WGFi|Z1}$oprx7obpRPR@tj83 zp;*s*AY!b5#*$W8}%ddU-k;jo%=wVwi39*5pxK| zmMw(@B`jnd@tJQ@%!z&9U^}=fF;x;Yj(R)Dx}ucrH&A&qAaJhjGN;J-o?ifuJObo* zK9yWSbAIC0Dc_&X7F8;a?-dXbkQ5$qJ{>&3mPknoBu7>QO(}Tw4L3a^nR!m6^j6Fc zH<~~`qn)L4++ML)n)Xv=RnQWd%Gss*t{#0QR#@ z2BcjMlvYDbd~LEYVZ$MIjqM=+cRJqubhxhqVTOyJm2{zeXm!;)7Nd0XGS}3DKBC9DYG?y>(s`392aOsrg z>p3Sh&K2*_HKiOk=Y=0qy7F7*Gj5{LI^zo1D6toYO%aczS@(q>^ug#uzD9#98S$9T z;YDHVdQjcjrj~ZPgN|&Ag(D1VSqbsgNQ`F*Dzuub< z-1t_&@2(2n4HF@K^vl7yxzYEmhDB@hYIeYWKMvQh%}6x5i#K^lm@madx>&fiW8j9C z4&^}Qfbf&a-&xP{H<80q-Wd%>h8z=VcY#eh@kQ=%PDMg0k5QlxAc+bdzo+}yKWb_{{nS9wKvb< zO)wFFmDoJ|RP$SYa7+@-`^zEOcFO-s=Gjk>emaIUbB0p!4q*Q7=huEa-|IGfDcG&V z3HpPZi*KQHw7>`vbj?SYDq*6Q<7sJ*As75|wCLIqNsCs?K@@8f6JP>>4%2_~y zj_F;?9D+El;v&n5u6EPh0rGetcvEY8^7yOe_6?+S-h`_YG7fTOR^uRbc+9VW5)yxa z0?EKMw(WsuT>3oJORGTh)3HFKq*Nd@{1~n}f~NBT6?puJ<{zVbL#Th|9p-e=R5^7P zFjl2lD}{?45CE;w%_4(qajBp;K-ry0X?7Jz2-1P?unNBb zVy!%^6_UTNo4CfNP3(?N_beLm*SGN>sJhYCd}AREi~{y|X`X(;e#J1Bb>V^+zZM?U z@#n*BkoQvvOEV8AYKU$h3(Poegg?Sw$On-(0P`I+tB9# z71t-A^}T&I`0k@_=t^J(Bq8K!S&N}jHI3yjsijwJ5eedb(2GAALWCubnrZwZw0&-nTO*$F za9Iz~!MpL~YryKC1$1A5U}OMnp%4C5?%ZT=FWi-*Bc2)d(rY;oDsKq|uDBIg{TT3?l5qVy}l0g{*^lA!w(t3Plo8HNNxHbw#99<1vw@ zL<*#Rv6tVucR+D~A!16c!57c*368{sj{%`wI_!M%d8LZ+W8=*yTws5@9AYj<2nmyw zmxUYm7JYyc@mJEJg6+U}!K;@FWeL2c%98zx;3h!w)NN>gkYRwABoY>+ar#xX>(0;C6Hh<6D~*$!4p7d;r! z<#Ec1hTxZ5wE{lpP~G~X=_#61p3(i6&V^0IULn-KHHxq^A{O{kp6AZjh5-h3bd~m9#R4BSI-FauOi;Br3XivPTq zP}71q%{Y1Cx~?LJeAb&OCBV@OjY-$@iD@3+A$kNUY~M=7#0;57Q)m-YqS4JNh+bSxbV+xI>_0_3^kqDN0ty9ZD$Db375Uw*cWt zv;u+^RbM8hcezrw$Ef`?@@#R2*|mU^2#+{=kkrIOyvWoqs#NPhdDQPHM8syYlZoFn zU{ZSmuPp!rMa~*awCtPE$$Pw0gFyD0F&b=eCk~Z;#rIZ8T)-=lwOQ|=vX}tpW&Xc1 zghA|ELA}XGQhmd{Q6u)C?Lv}ExpCq`{cfD4 zGVaKp68#c8fm9Y*)4M4p*W7SXlibH#pjcmxaP-w^$X4x*b<~&yF>JXI{jfD2Qqp}{ z=C<<9wnD0CE)><`1)~-gq}yL1P!ZcGUn6RX3*=o4BTNM8;f zX%&VsZQ9N6OTPFGHQ(wsN-k_+6{0qH)52E!+2Qv}`a=kJMZt3#i}AclgJRti9}q~C z2Z4q!n0EZ$g|F$DK?5Fb@CwzVFQ*e0p0lk%aE~Fif(NNDX+?U<-DyTKSD6+oRkROq zaj#f{z~nJ*J8uUJJl*oiftKybS|S4A;?F#JI@*$y?q%k7pGFOr(j=dq-90Zm+Li0g z*u?Vb>cz-XQRje>V@5m)rHw#*SnlkSt9Qw;mfSg1R%9&$#4Qe2T>w@%WW$=8T1C#! zRwv_q_|Z2Q2N%CYoW)xk_o2k+k;=Ye_id}w3`Zm&)}&3-T*Egb5L4PoAj*klC))v z_V^V8pV*PQw9I8Wg3Bw4hAOR8+=h5&?;C3oyK&`O5wuD=SDgS^rqo|zYrOm}<5aZw zaghZZ4lAh`4y#(0Ko-*-;Dt^FYF=j9Hj08I3?I`j2Oufvmd~J4S_X#h97;cYN&}ld z-d_90aqGCz;r5CANnwifBcpPnlC{uorh`={0LABKd&@s`d6`2mR&vc9SF49(S28nPlc5U19zRDV8(0xmSM(#TdC+SaXx3*B_J zasTB549&`CzqsyALqY}!{s|uOto;l3y9-|`S`l=tu_0Ym<67uj*S*q44-+xj<;wzY za&t4kci|zhC?d(=gBiqJ&5U(NGKf}zAbB^%{P0EYM%fi1@~q2YGZ_U5mvX@q$aSD@ zz7VgGpQR?FbX)IaC8(1zzt_!fSB1P$+(OA>pA40CYK};T#imSvfokz3Y`y|+S{VQs z?fAK0LT{{h7|n#*O_;C5ea``CBY(hB2Kp!jXJ@yzc2FpU2;jRCi7I78#PgdYiYJIB zuXW$Xn%MhzKgx;T;^H8o*ij?D0VHu4p_*-*;Sx|t=Ld^yM6A+qIHFNT00*@1{Mo^# zIYW(e&>iiFzgK6chV1TiKYU04v-l7~G15ct@bX`D&hBJ9a8SpWEddq@rY@kG;2(+a z0sel|(?Qb%Rdx+miL6bEi<6W*n{GHjS=!8g@q<12%2W-m;;Prgi|xXG-{}Z<1d%rJ zwZcZ_kjfZ*Zih?Mgs-7mGl1B(NVXgPL+2Apa*=Wh;nL0T>!i@ESk*d?IOkkt$07Y( z6;=mTXbnJYb&zbYp@=&GE&=le`~7aBaL^m7q3JpeC&rC&RpGk0Jv7P4E0lZGN;s!t zcZ+F%^YkSqqDLFRx1NJm{Gt`ZVL776yP`0JpB%k%BSr;4TDj;u#Ze_n^v-04BkGwi zF*Qubn%9Hgx?BEMr;g?fYtr@Rq&}I>-M;QXnr%2 zZ1gZ8OWFoNg>H18Ty1!-P)u*adV(;+Z=Wv~T+Cq;wMgACMh@q|D!(<#o3``Z*{9t7 zWP}EM6sE^kzO$NrHQZ<|ULTle6H40V0`NWfXdD*%Q1MI5r9L1!%d5-MEVP~f z;zFwmAOz(9yf=EXoFJ!^4x;kZJ(|Hfd9 zd&eDDJZJCcS!=Gj=9-IQ;3rIDy5dyJ?>mmK0~u>!XHbGw zpMW>mhmOqS8Q33{c~PLkQb&%@Wq)Y4nklhesKF;%es~1rjVOxo0wr=GtnbJg0?&3s z3*avF;=laHcF<#?#H>{H1g@tUCGBw_>^WH)oJ}L*RfDV)MfS2~y6t)sW1i{Iw=h#V zbgXeM$=lKdV&p^0*2E;&?B4y~0;8qCe+mOu7i_gBY^geQhXWkdhA`}4N@bvFxQc4> zX^?fz^=UqWwsQ&?}Sx1f!i+>bP~)tbn6WRXv66ngr|w=NgEd0bVQwJSKS5 zaJmTXfS?5Z7LV2TG8n;?P(7@s&Lt3oNMnxnY#kbyo&o z#2kB=Lpzl1RGtXF68>0xOz(!ps%lQC_a$ZidmZQ5SfkBk;|<;SQ>X8 z&Rh*WEABq^59c>%{KBBS7;T8;-w(M~o#u7unElSe&KToBY zVPd_Fc1_8fN`LMil-5O2&TmF80fVTfX%n}0TLMKraI@wX8q~FNwmNh?Gx_)nUocwz zOvhhPPL^PErtak_Vk&#aMJfmA!4cg46dg^}v=x5j2Spp#E*cawPYAptL2q(xh^~%I#^!P&#ps{e1Pi47RIVxh5}8Yr}7-TicfXFsN;HgEb?iuUHUyfIZLyP z5hx%i_MY%lnfNb*GgGr=9eB6V$1ThK7hhOfP-t%F1XdrF+LI--XyEcC1Y@6WO}=_j z$aS-LPIbl)rU-LCopU@xD>_|2RGy;nKhN#6s!FNjS=C{2y|JHZ$k&0LKhIE=7y3O1 zR-iq_eG)toz`+j7mYTA~{90{2L-=e3{B-yj8!XVD?+`rq5*x13^*yfyE=qOnCkJ!e zce<&QM34mrw~jqeRX=LsdqaEoqty94$C+tMtiE`L2ZI!(o3fDp}TVY34= zb1h-)>rM`q#ro4@9dQr)a6;<%5o7C`!Ea?O_j-kXET6hw@<}Q|Z|L9q+9l4wjm*tA zxn@;Mt5p)0_Uj&Hbr1xj?*>xg^WXSv3e)3r`8R>)hRaez<@n%a+!rUE;M3PfLGmPs z5&Cfv|E#{BpZ%%4l+c)h3X9IS;wN8qn!+DElcyM-f753^9Iwk-%VV713Q3(rt7#;slsO?j_i96o*F6`|S1>a}yD zL2r?EIG9>)oKgzUFv|(}#!>y$`bw4;S)GL^)}FwBkn!dhEU+$2Guf98{rp3lKT?_e z>BGw<(4}v(J?NM8G+5)DtG}IuCTO1 zQu~2-V87V_EXY*A_to=0Q3R_9tD7P2-^ymM>rSCGc6k+diJQh#A+*dASnetc;yYCag9+LL%xJ6kDZ zS*?wtK)mp;?3*`V`?EOc<;)3gTbDrW2Z~VQ&-OC_OL@H!ynJDa%HbF4piL$20_?AK zg^s@mcESE}q^4Zx14u>cO}a(}CIw+-;r~XtU@!8~2T@1u0q)YtmmkMT@^w_!zJg=- z^jr-Ly7_>qgDAKl#?1Ya$!7?4xXn~AqE91?d&`(X{x}lZlZwJpi^0>IF7{_V&uRMc z8ox{}6r%@_!xS!|*JURP(-K7tvKB3c!72|~<5i?y{Q#{j4q_Eoo3f6np`KG`E;Pq_ zg0IECwyc~>UT1TCuNHUoL?pqD28H63Y`q0z7QjW1hl%MY-c5>U%|4Rt_TrbDLV61e z7U|uO=~3n7ni}1Xut_4nlymb*3%1%q-GRnf!w>Cq_Q3N_o-pJ?SrpKM+Q$Aj;X$E5 zz?KtGmy$kli%z&{qt7Voh-F>I9EJ>CD8ULFhg8gMBO=cYOblnH9ONch|V%y4hKZV9-M`hvxxJS7EG(9L*`{ofsm|ZXW zF_Bs2efli4#>C)}-D@-csYjz9b55@m>MMkBbd|qRP{$W4k#`hYzN#RQA@J?AAs@3_ z^Se_UWBK9NRaG7$cD6_+XxX92aXeT%eM6$gxWNgx{K3aB*pRgs2+lSZqqQ*XPT9sFjMcKb5Yo%Amcgp*u9^A@!3j)*#5xg&un-( zmCnE_p64ik6WE(4wMh#b?R9R)5y$dt1^2*(eYDN;x$J(7=UtgWxU4EI-=!&n0 z6p`RL=ageH7xh!0mCpP>zctt&d`0;hUime5`}9kuK_9#wAkGYoDpN1&D5mayJWqGk@DN?2`l1M_F>s zdCU_?<+edGz5a)Cen|tRSkilF!;(ZtL;P#OzhV@ELDv1Ke34+Hy^ta4lb2Cl-*P|W;;AMsNV z7%OE=n@d;CDFVtK0*$%Vo@bOH;5hDHE%)UyF^zgne^Tcw;wp*k7~)o0E^Dr7^VnFe+(LuG_cl`@|CS#9Zp+-O|-z_s|-kEx_}4 z3rwWzqobokIM(p~3rjG9!w}j-C3`Y>4ZL$cg)rZ{Vf;d_yHLcOStZ4*J1ynKc(lkp z-JijtCuU2yl|i?g}r0T zEQoHJPn7qw4_=OImlFKYt^ZnqzIN)-q!yhohW2!1=7RX zXB`!VwaBJjRHZtfPuUc>Yj4$feo#O30HI)|(^S>A`F_Z(bbcTONjWRrRuMov9OFc4 zsJQFkKfcMf(E1CK=*w*X1Ecfyj)5u-$=hmj!D#5wE*!(N6`1>qEWjWRYS?@Y29;=p ziu+`=tOd%LTt%9{o>OEO)L%D3PoHfBd0z)D zx)(xT|3?P_kj88tymtFTmK`{E#(;}@znHox+Ma!sh*P-S*5jPD<97y% zhL^j=nOsU%;sY8=`gNk#|NfhU8w>97iP7t1tmn4+lUE4 zCR4~Q+d(M>cIrMy;U2;BG260w}aYj0NRQCBd~VH71Wu zZ@M6mzbK=_Ck^WgH_`wo2yRYtbCdI$1Xj`>v_wD3^U%XG?u)Q`i;?A^|xmdhj}#zyS*XpCnK z{AyT#=sCQ7+R`QuYMl8)f)It63#;h1bzIcU9YoO#$=@Y`GkJp@(oL+$I%`vJO}3oe zV27g;EfkmSIt^D}LwDA>^XE~ypG7bl6s-$nP2se6O8ijizdn9YQo+J~G(J)L0v7x> zAU;+1T7PLyv5XQGK6Cng-tp*2G%#JTJwPs;mXbN4I;<&o(g6L>sWVH?AmS*I@kN~q zwpDpFLnvd;y}uJ$j z>J#x^f0*)XDGo|$>gd@U9*{@2uW0ZQH{euAx7lNoa=vgjLFy`I%8_pY#ScL6oUFW0~bk3!N5OEfAw=Gy!+$?sKF9D-jSb*vJY8)18 z&VfAG66s3qILVeD1m1@Ad}cM&Tl@90J3yyC^cNepr{T5?a=3lNpC%5BNY2Ww|Jk+< z{(%GS8PD_f>S?^pZNE~EzagRf4Alh2g#A%?%f`FoQLJ?#r<6_j&-S23K6^WUzJV;^ z)OuNUm90J7@2C3{=BB?k(jWrWt4Kd}?)!(wJLna*ij9f#M{^Q<<`oy7mu=Wr_uHf( z#UDRX7a@8T_F& zvP~6(o>0|nuS&}uJ7=~79czB?AE9!`0Z3!Y)q?z9_bw}le>Dq;|BN?y%sC`#93#lG z#wv?*^TbStPu9yFaz28yw=pjUk;6G^X zPsmKX{Nw!X!hMR4yU}cnJR=!97;XM+)w8u5DCYXIQDXAw>((-Q_a1iSfp^RU-Egkv zD>n5XUT%Ct9u}^|_Z4!Xe66}mdi+OUKS<=y>p%&F{Bg6dGKigg_-WP@03D4etTRXkxipVq@SW9O)PbFR*7LBl7?@Ogjxi!_u0aR z&QqI?%*^{Y;6`8EyJr5o+kqJS6g9ndxNPrOUy9WL^vf*tT9)N`9AzCu(YlWE%iuWu z9vuu`D|K%hbuk-WGLAk>7Eyf!dsfZq%^>rdg)1LxIqJGH*+L$2Wt#*J*KX$|SL|w= z_r@AJ7^;t->5gZ&-jH1tQKxB!O5O;rX(-o+vyVj&3rrY#XDwp&Kio zoG7+%^H=@&Rru`2_BAB7yf_TRYgg~s6mlaXk>PB!GGbdOsLkxlGzHDGU{Wy?^?d5j zCqtqU3{P%$!RKr}=(%Q&_BVR;E9rDjuJ6BLeM`V<7yxH=3$~jO`qA$T!CiMibTxC0 z%$vbafAbFU+z9bo`bK<|Xb;)D>bfJlHBnM%gcypyAriqgHomVXWnHM8JfFzj?Zmw7 zDT<}G&?NtXeRRAd9_fF@s*-yRovq$}^osBRl+}_tLU%PRtF`VW%wp@vb?3<6FZ*JgD~)?-EcNR<@ZqK}mGhM;VAU8~ zCQ{gdPV+$IB+V}S2^6C?r$f`*OE*4U^Uh>syP)&~`13ZciuKQ>mq4UnM4bWYY2RFr z)m^uQdcH}=jTp#ra38noE_6Q>q3;zU;P)0=I0Oy*cI+rw3+!dAyhvYe>x_87Ei)^L z{dtt)btF#&UGnoVAHS34qgibC^JxR!Q6(^2!Wti(;&8?n$0r5XGdlMtP5jQh7{0CK zQtkm_*k*Aqmn5D0|2lUDuOM^28&FRarD#BdirOpvc1au%lx-tHA;KsZj_0Dx z_{@NhbO7vgIKPp;P_m>md zUGlgxIfdUh<9EO1KZYA`AauXZHzxZED=Y-(lO%Qp6e#F%CQYs|{t0IXp5xAexR_BCcMN7qnTB zr0#*O$!IprqAT{4vOQ>4*5AoxE)QiD!a=%PrF3FhkA?K%^IHf_e6 zo!{OQIsqy?7Vo^nFQZLU1@jgyu}{z(*~lQ+sa2>gFYJvY6Hc_SF1CrNB6f<^5>=UR zS(kId+E7q~HI8(D@1=?Sf~vs#xWJJsRnzua7{2SlHWU^cZ}sU)ZT-AowO~)pe{d?Q z7Ws821(EyDq^8fzwE4IJFfrKfx$!d_+ywvE5cegl3+Il;n&URR!)fc`LW;k<{_9x# zgxy7AZ{G7&%S>8=tHfUCg>US%SnDQET~E+XWed{Du;qB%B{1)&y(o+)d87VI_(1J~ z#|1jtw=A?f1yGv?Zh{DH1ZnFXgbulB#2a#h4WIaKFF7ZPX@jHQL4GfpJtt_DhSM*J z`nn(3n+;FH4vKs|u(CbAklTTfLK&qc@p^?`pI*Bj6sC0HPvM(`xtB?!feOxPh0{(i z)?jJ3v-kQqzIWQ@RDFF7`kmu#BNS#uVVGOnmY|Tdzj$A#;+D(2jne8q;R#{)8E z3HjjNW!E;tD)9xf7X*?>{s9DP*{ia*W)Qf2h{x|4^;zsMs+OVV_8YX{&wC%XKo3OJ z_Rt}X*A|(6sSo^hyr|z{db^I{iD`l-AxC^#+NV<^9q_A*x_fdTNDpzEwc;EtXc)p* zlA-w%ql3vl)TF|oWgT-^#E;R2oMp_p4{=l|#(X^bX$boLy*vZOvQ?*s%q_&rRbI)l z^o`ASZmFMk>LL8q&D0ONkM*f;kI9`kf?_3GPI(GSk-Ed}ao!q&YXV<*O=lXM zd@N_C+{{QySJ4#ej%jXm}wHKEqRmk+jObe2ZqB)4pp}9}t)a8@PM+{Q&?iJZi0E8E?=S~l2{ISGo7c?;ha9UFhx>+Rs3&Uq z)5T^>wDP6RoWSeMl`=miWP+^R_>?}4@o+k{X#)C08oriS2!v`Kdi0ViG>aMWs|e0- z4q3`UNz}0WIIgMf)ch)X+!0+YVl&GpoAn9QG4BV={oL8V>9EcqHRYv>gR!A%)>M7N z^3QtvA3x;6pX9tN1{JGxc3Hc~zVqJXemze0wiagb0sej-WUE}|tUog0Wm) zAKxqSv#wGlb^#pcouGa!5C1uy2tE;sbzmAtC%er}wmXtEK;exbgy(%ehc>Xch} zS<=7V0!*Ad5DP|+aLncdv>M-h4o1JNqsmg52a3@KW1AYNs8$$PX!>RSbUmhs7FAk4 zmJT_p4tCV-c(21|m!%Z53A=k$W0b@4xEOHGgE~n!lUgF2cyebyT{1%C1%I3F;M?^J1cVLei=OpZjy*xt zbPhXeC(OBB`#?>2Srv%fOiwNov)JPxFokaXdufw<-H2!*%X_%FeY1A^*0*=4I*q9( z>1o2qXcS1A+YVsy?h5)>cHqzNu4%I&RgcV!9s+uo$A9tekH<+zqAxk;Z+}d5W?c8N zpsv>9`U8%t8t79ubOq>@e7TM4z*_%RwpdPQ%yID^`-Plx%noFv#w2+lY9dtH?9m_3 z^CuXm!3Z>0hw`zcjy*vbNPvW$-W0{aRGD~H>|_6fGzX36$VRG$x9-VoK{|aUtJ+O& zi>}CYEoj7BxYhZHJt>DHkZs&spigXssmpZv85kZN9!`(;>MfEU229#&6mJoD(lDGY zHiud$Up0lR?*8VgB2B&+Tj!5G6`^GNsDx8eUrP~;L*ul%KS}rPdm>`~A=6mg~B~^F{WNE15SAjoo z0Lb?YYt0VO_YzA+?7I)YMnnDLNh52fVYLC0+Vi{nrnXu?VIp6doA@tUrUna{{YFU8 z@lHa$bJ3+-LhehFQ>O{NiK>~+C9wl2^c}tP+@-vrzqJY6xsOTS!>dNTyF&dG|IOdQ z{-(&(!Q~)-hS77m(j{Pp*wW6IPp@ZK?0$8Auip5MK7Ho8x-7_l8r0HwpKsxp(dpI6 zP|&RzoU>u~)g3J^G-)U@uh{hHJhhEG1fIS5kp7Ju3Op>+Jx6G4FigU1w^?2=-@ zbXEYMyhnWWRn?eS|Jc`Ytr$xVB~@PN>P>@c$yd+JR`I)&4f&a~hImRHSFAkS4F=f% zQQ*hxR?S{vX|AuDZ>Wz$x58?%XSl@#E`y*4)|}w!)c7B_xc|{w{?k&Gl$7*mb7ACl z9A}+UAikGZDGxfYIp>nI^1ILIx@J#* zZ>Jz>2RZy#^jPK-==HtR46(`zsnN7bMbiSW@&?y{0P}EPEB1QhPR-)^pW6qdxm* z!ZhBW4XO+sB!2DHW#E_F>1t_~ZwP>>w|?CDY1N~}y3>n{qeRM|ssH7tp*d$ws<~KZ z_bMBnAg)cWGRWBGi8>K6>G<5!6xm?#O>dnjuGc`9z5g-^ zLE#{3p?!aYA6+5b4!11ws}eE6p4A_tEC2ZP7^ zxn!Bo%UI`#j6PTlkrL%roS{!J3KURVBc}rXl9r>QP>6P@KLNV^^dtdD&eDkZuDI$urMerdsK<;>)Ub{ z)w-M9Ic~3hSbX=Srk+cbOd0u1o`|-y^Ld=yFe~i&N^i0VfPoHHNo5`hqsv1ICX)LY zxWnAs-x6^YgZ}uT)5nQN=R=9derE@w{H!?10&-V@Vu=}SBX_`T|Dc@Nb8>vB0&_b! zuF`AxFRXkBtF(dnGH4Ne$K5N9#U%OPpU>NPnxpkxPLD|W6Ou?mr(j>E1rD8L@@70!WOo9j3Ogvza!JULP*DUyQ@{^O40m$4|3c;r{sV zr@Bq@`S9=&1e|`5cdft@tyvl$A0Gp9|IY7g7l9LsYCOZSD1jL$5jgYIwyxe~PG4GD z`s(&51gdc=1>pEljqk92e|~lO9=uvvq6<7z##c1SOF%D}SV{ zi~Zv)brIvR+RtJ-rgCN(kKX;V7DGlK`0d?k+w;et-^qA?tg%#zrwe9M&orcS2X0#p z4gjTXSWz0R2@HZ2ZzikbLl4=KYO_K8@noRX!L`SZtcDqrAic4mzvHi`+tq+4>VKpQ zs&GamDb}W++0Z|iA`63Vg)sEC2Mw-!m1|C?nU*#-IKWLJ0sbdF_W*BPt;Qr4wG^mG zv~ngft!e&yATaQ!gW=&^mpt>PP=_#`gd>jTdQsTG>9e$~PKGOSifO!swWIwRLe&H1 z_&4hUfBhUIxU^)7%q~=Kp&ukjLzZ6YqHw z9vr*>gTfo(3!8vM^}Ja2xN5Hn2E(X*dA$hL%Vz)M#^+gbj#ZKdU-j zM{m{RdGyu6`^G3V$f-rV?3tP?=rB!4;6M>R*bM#S1qR`mCL#99<6-kq)H`B!nN!}X zgWI9~$x!^;61K~AeGy{JFU_(*yRE>u29^)IS@4!K+_ORumcb=t{Nu*f@F1V~)P>yZ z@QK~#n{zj<0K(rMFs_22Hvxm zuH_sBdB1`SfkRn;mC4cxE}Dzl!;^&nxyApv%T6TCK0DbJrY+j>_gCTE&xYO)CEZR2 z?vn**&Nq!#g`uR}kx%cOD08=5Sf&XG2$-dT^}B5%hl>rz>R}=cDWn`q|Hi|v6yyLW zqE|XHjYq>Y5wV5v?Y#mrL6drWdO*sQU!rw}tfOOc@S`I}e*jCybnV)-?-nD_HHpwT zk!KmYKvt6oCx8Rf!~4(MOXjYHb$qyEaH|dsyT{17+HX!)7}>%=oOX#Oy%N+tjWirI zNnOAu+w86M4~Qu@g)6pTKWR0nHqQ*I#O@XO{mcG(u5dG}uOh2+IS}mppiI`LsHIna zls`>1WIhvF0KNP&jxbLEVIY!2$-na(DRxaFUooBa_|JDmhxy@3P{a@bfj(eCaku4K z6Gd-(u;~<4R2c5oF)1Z7dF@qKp*AkXVZ0C}F=~TmaPXPRD$7hPwp-k68TbA;LR}rm z?|)Pc7b#-Yd9or+ax`q1IP7H&vtS5XQ88jb3)9bdUNpzo&rbznD(-hS!~gp;VUT)) zBMiIro5X3{(~K*Io8zTPy;0|1eb2o%Lu!3D4`xaopY|*+TKIY0-doWU)+H@;xK;jI z(1!W<-Hs2MfKOx`!#zL@FZHSSMhfhU(ImbseiaaSB5VP@dMP@UAU$H_?xoL$YaCX3y8gkpWYM?0)0{?<_bo=v?R7oKr17ERv8oRks z`;gg}G#qDn_>jYzwTyp%NPMj3DH^De;ozIVtU%g!(685>?DqUHGO^8%GX(Ig4>oO&Ps@SBM#Gk&(tj}@ zWH(D1ct(@EesivV6e*u`3U6T>kqV{J`NB zJ_KVL_SFHPrf}XDRl!7t9JuW>z(JZqq0KHaeqQM(H>$OX^oXssxt;-=Z5^hnvJj|| z$fQK}GB&ParTws^Zdi#sw_G=!Q99|Se8!v{R`sBy6*1oGJNM-+69Wa zy=oE?5^(*31*h=Pg4TjJvPEx?pRoiU21n==Bq}a=@O8;K_>b6-vNQQ8{iqqKhSEy)2E>NQ= zFMSmmt#tuoEE>iBto?>rRb>MmOM_Ez90H2TjuAA9RA&%Opr1~&$UHvdO^N@KEFeHLb zbH`Gf@q4i)4u;RpuUJt!{pTtpam1T(X>IL5zsp$?YZ8IHD5)xq-!BP1?uZ7)VFTpF zWRN@!EVTKcXx-ry7edQ#59nY+=N{afaTqw8AoOO@KFhT#|$S{an!h_bkUlc@i?bW4ZxJ<3P^j{t;tCaA3oN@sZtl>vy!`!+mX?s@dWh3f zkV8$$7N$026V@C_UD+ob!m9pbRO2D5)<Rm}OLj0#Ha10ljU0kF73bXH7f(IXQ zszjxrR$w1^h##I=H`4;d4wac&+hoFosxuq!IWe2H=mXjJO04fPS_c#Afo8-OS}odO z4K~aKKQrA;jvrWxM$EB=j@UM|UD2VkEZ07p?p%MJ+ixYp{6JQGbF7jjr zo%30zc?du09DV)72!yNW)6gYaBQ=bq2A{3jLhaQhKC4n98WG)w{shMGLY9gvf1t_; zBpyErq72nT5E_Zs@{2P{soc4>Z=`ye3GsUc;7c#hQZN7f>+*HAF}njKHmb12JQdtjnpV z{$rBC`j2GS3sv2)p;gp@vO3EC=;&wwQ0NNC_#Q!vNeRkKX5`$`Nrl*BTg#C7F2d>Q z*x~EiO8P4_EtC2F+-#{h+F}1R-%^Kj`m~b|zh0T{KCls!r?tH`G6MQy4yg$xBnYEvccEUUM4e z4`rbdh@ymJZU&&J!&%~_4)`YuqS6ODX_biN-I6AsLck*h3D&CxlL8O`U|wDEfB z4QmQC9-BvIq~;pKnjALWl6YVXSXefvQ*hqm!(-gR;S>5hqTGxH1~CYRNsM5^o-Q~z zc=klW3k@AqTNn+VU9Ip^$D&e|$sU5#>U5UmwjP8<6r!84fnDnG8h?KvNh}^foP6k~ z*0ZypaEBq_4Z!@Pt}GhJ6`X{0pl;$Jj}HK{eQv|61j`zkEIRILH@jQ0X%|G?QM;I( z8t`!XtvM2pqOKk@|8Yg>f}7QrpfRi)vIbN(xM#BLGMph~*{f|P4hC0)@{fa%@du&4 ztUqlIF{S5LW5#%?j!9eQKc9}o1S{g)OW6$g;H67Yh3qLp%(yW}GliUy;A=7faQ!us z0WLu)R}02eyZigdm=*z!nyKc=$q9laJoZ+UK*OC^cZqF1NrFy4Izk|CtzB$cw@opkRl zaB0ztwH3{{yuH26Q(FMc%99Hg?LLRu^DTY~u8SQgA-A`>oVOwLka2NUr*6~EAs19K z6DbKgiib*ZhwU^T_g@bDnakNr!sadHP9g*p1xw(M-S8i9`q=M~OW?qIM0%JFO#wBn zZu@;X7eI`-=RM&&K0>~u%IrMlU*EC!3>Hk^CxT?N5Ax_k@&wmv9;+s`j7Ir_w}%Lw z=7B|}nE|sjn~R+megz~vj*}H^(0b7g32pqRV!o8!1+1Vga4zij%Wz7ttahPCFgELk zmrlZ+P{aWN#BuZ7axvBE;Z&Y{x<%LYaR(-=ys(6$p5AnzJO&|LCZ|5=`wR$^O+i$Y zQH1<TjNJ~H460IUk?ZfDPJv^)y8AEkePWBKGWU|237de{Yg5LtVeC=UiShtmP z+)DJ^NseVZNC5lb;I9JW*B)C+btb=bsp3fTqH|mbi((CMmCXbY0S?68oa1Nw{9Nwh z`MZXrAO+U~!m^q{h-Vp(FUg(W4fc_=(ia^1;rQNlI*;U}kmRhtzN};>3pen&$=0}} zJgp()AkOwq0-mK5(;i^Hun=a!{P&wb;&>guvIZ~ZazMaM0ampiE=!5Y5U>ux*Q7C) z(|jdWMLkwZ?jE~1txBI4)aH{4!C`Nw%sXzc^^Nqq>qGJGtkX1zGx5VTo2R7aWi3cJ zcO_R?OgBOHlN%yVG8P%q@$T*+1cj0fA_iWFxD_F?At52U7YWh{uz$hTcBlU*q1Lk5 zJAQkg7ZbGy!AJKY3tGT+x<(36ad7|@lSa1b>M|6>PjxGe^#~}hmfT$vFnjUclf1o7b! zc<=Oq-rw207pP!rxDJ9c{jq=IcSX7pay%lUhfuioL&$v&XxmS;=5*Kuw6ah*#4=Z_ zR4~Sjpmm}BI1S*pla%kBJIb(U*`_a^p4~0`e?r-NB1~B$X+viq32<<5!nTD%ct1CZ zLqHuBQQ@-GX}{ScpVn#F;em}eM=UI0B>@&@sN^WV%~}{t7yzWASHQBq9Fh~+r!AZO zEac+$DPJ@_lB}koexWw;7&CcQimNuw0%l;+W~T4R&mLo&1s6VprpL-aGKX?kn8lAL zH(rh(M=-D)bq!lVEyV1zJwM>uXw#plT@mS7|B9Y6Rd(G_nl*{QF6` zk|9O?{L|YyaxX03qw)m2aYKip!Af@d^5q5V$rdV1S;Kc6f4Vy<+X z0ET%en50;a9feqYWZsIZ+TUFo6QRe9h>LjWJYJHZ7s4{STKe18b|xJRXc! znivdUcowZMYa`t^51|I;M!75W4C^>YcE=lFZF)RAxbM*(I&+Iv-&DenccIQ*&O8ZyCw)E?&p0|SG* zBBQAG?BuW3sC|R4y9x&VDNve}%`=h+v!Uggo*y1CLD0_jni2Znu%y}Tx#UeKeI~+8 zpT-%wcN&A!eR3yJ=_k`2z|yh&_dOM=CdmdRuo74yxo; zC`F=~o9(OCzJ{#*hla-r^bw^a?oR&z3BvI}O;#P+)+x~SQUq4!`P`fduT38vRP(wi zb?0~)U%x;00g8C7EoaCD&i(J7pc~}P&^dd+6wFM^pyb62sT1k`CkvhVqzyHY>JnJv z^ZFlor2*gs>LIC7Lq#xhW2i|C)1mn1axz(}NRjK;rGDfFQ(JfL_q92ZH{SuB zS-K;8>GAh;h^6yvYZoEr7$Px8#eK|l7(hKZObr5yu?mQVGC}eq2u#oFRpCXX!qq2d z8c+us6hf_uX&j;Ak{KM`@0_fj7yqmfn3kq-fGD?~pNrKZWo{Ld^C~JXE>vS#dG_tC)>JX_lGCW>J7eU%Us8az>>#AiWwVmK~2@^Zi5Yvb-rTPZ-bKpHw1TNHO z;Gq()-AKhAeUBV6nwrQUM<9Tvo}it9_XY>W2E-NYXWgb<0${Fnz@riJs8#vI;ShpJ zJhZJbH!A=p>Sik!e0kt-d-wf4xPfxONudm?O_LSmZC2~-H1s|z0k=TGsJgVfw?`IH z(M&0?=lb?38_C6ZzAr$`vVVR)-vKB{8wAhz*Xi+YmjW@yh8J|(WN|Ivn<@|%vq)ic z_@k{NCo)PCmSG@X)qAj+oYje9{ww`1;)c4VlGUChNd%>SH0D*ozbYWiD@;LtSSwtJ z^WBBdlQawr>y|=MO6{qcQBsDKWZdLIay-ry8_-Ct$-1YQ!vRB%EwyG9#tmhzJP1GK ztcX!sLr3)!riJgLzEUGR2;EuUj?P^nLaQ$am2-)ravlO!xGhOm*Uf<}W<7kC60!yc zgAb`9z09ptp!0=m&EoOpKB}=k6XsbfHm7$px<59H`hJ$==}tw-YU6dsU6#;i>vcZ~ z{T8*m05iO-q*SrER)pFy!H3Z9PELg<`&?1@UiW2nf0CqO+z-~E$kVQ|lu|#(EAtLs zuH-{_Lh_L>*Y9y&v45WzmL?d{*Zce<_|(P&C#%w0|EYIaY~4sy{|)*y6A2-L!!cvZ ze_so@B0=P&%>gH^Wb9T~qNI$>q`r>8{8s@m>5h`7Q}?~A)G!!W#2GCAuuQ2)nKD1?*(EJHtkw<-bbc0Iud%%Zo-H3tiU zZz&|O<0i1xjE2_qkFy!8a#~Q6kug9sBLUnf2^k(=ja(*CLBJr?!tS@xIFeWgbQm|! z1V+_(+%q()FuVzqZno?gjGKo-9@oX2e@WgazF4;TVi%4rK2%ka9!<{BO~c)~7C z`o5^83m1dI0@y4@wYxR)qrJOQAH{q>=M1F_sPIVlGO?^9LJhiW_fb?E3t;wM+wc(N49Y9Pw^{@iV;C!K4ri#0AMhh9iXw;~L=vGg^(1A(K8OD;(9 z8WW#97!!5x4P}q|bDL?b)M#p9mK!hP9iUTM1k|$d*6vV1ZjX|3qCA`!L&r=_` z@S^k5qA$mc+^!L2|4rK=ijrV=oM$W6XJS*}GINd}>gA6Ex8-#!Jd# z-H)*5J@rEkQYt@nN=$;d!rH53D`p4Y-rb1uFJf?TWALcP!ir$)acbff4OiY?K7m^f z5ze!3Z=T`K!&m#(#*ZbS3Q~jDjf5r+h7;-0_}navJ2#p;JsCsB#ybOl)u^F5UKox8 z&!{G^sn{$|Wc5lH+yRqF&C1NCB2sk+hZnDWt12~bZ|zT&&2_ol_&S0?h?+Ewg^?z8 zmSvJgBH-yKz)Dsb_x#Sd-nXspj~L*$S{#~#l>{{oaB*2=z7kEn{qZ8=CqFgiT<+GB zw=mA2`iRRyPzbrZ0Lvb90jg1@rKQbXol>J)9xfguL!#Y=O9{2@7)C`k^5_| zavL25FV&OyTHeeCBzG;4;5NozDT2fa3w$HEVK2$7jqLp};^@@V&cmwXK0k+$iuK@&eP zBZc4vFa4%JOk=OlXkYhiN8zZ!gIif%zQM~N-{WtvGWh6KJ(vfRzbNy1enE=dG`deY z$%?$Z5uaxt)-t=Da1sy@Xk)oTWgM;3nqg`D_y4b_6bzMY`MY#H_ggTnyP?Ze0$e^ z*6zl<2@t}}KogS7e4~iY&$SuJG)fn8tLhj;I$^F0K;1;W3!uAidBNCC)}FoGm{FR) zK9&o)gLFkW_QDr+ta+Sv0M(McwRq~QMHGeA52%{S;xIMW+KJ3p0=cG_x98daz&#lF zPu;Nk&fXWbMWhMezJGV{c{w$qnAB|zSL=-Pc?nN)yB%inX)JG;Vo0t8b5KpbtT&E3m&Mv1~h z-TukdKuMmla%}Z*1Ywp}eEn<00?jVd=hqQ&6$5FP+km`BxhrD4s{|_7&?8UpNt#1}r-U$CFau%jqMwqPM-GLuS*>Rg)@Hix{pEt^qo!L62- z*NHj!3EVKI&)!P*tkg*Kc{6z)AMmEhsS#TjThjEx@~xK3WHp`Ze0Sd~+w;3A9A3I8 zMZTyMp_v8l+Vkyx1}@lnYEg+xrdL6)Wc-p_0sH(phD7r7H;2?87=kRi5PgL@vX$9j#1uLWeAeV0 zS1{X`T>#$SYD<0&)P6a~QRF6w<|Gg=B??hmTiVSOBtPfZi6l>>^-p)_HmQ zAGvg&8Op4cMtcP!p=9^MFzZtdmLbF*i_2fE-M;1_cb&mWo3wO%>V9q~usd>De(eN4v* ztXBksBIgGZar`Qcp+HwG#w*{I;S2+h6>bk_c~!SY3p`x*OP6)Zud7hH60hWf9YcTE&?KF~V84aR_K{f}=^2PBz@aFR+XF8=>!?v zm^>Jly#YeKWw*S)(dBzXX*5jnI}C>@0rEnM(4S|18mPXIh)AZ56zyev65f?U`Rv1- z?3;)={?53VoZIi7;U<3|Ymw86->HQ*eXV6T7IRnnaljnki&rEkv#@NS1;~7R&%2ML zEc>#q$C2LLE?Q@^zyJOnA##Su;Y8fXA#L?!lOnffNtC@T>Z=(5^DHoi5{PqNjcJKi z&^fhhmfpHMhH3Uy)^&pefQ5J0c#bI~u-v}awTP1AhVoVP zmKmTeIcUYX40K>TV{%5{Oo}*NK@O7DDhmE!a=zlvGT4{pr%$>LkaYmM+54Zf?dUQ6 zkUOQ(x|#9!or=Ral@IpDRSdrI8mb1|H8GhtK(AaW>1$0NoJuD7vja*;4g>au)|$sx z4Qq11oKIo(Ym`fGN|oDWLQpw*m+uNVbLeuK$TGb5pT@!@A4`P1^avz`%0Na;9M`y9 zZI5*dSp)uNe4n_5ON;D^dc_MgVI5=u@OMhvq#O;P{l8auuGA<(6iI0dxDyJ zJ=kXYCEjy9@M>*L)f+Vwlf4Xw<={!atL(E`V*IYcTYYmA=f?;JP zK!Ls*W!Sx~O=L)IlK%As+#_CEn_M%7Ap^O)ckhOgx1y{;nHfQWdAE}>=snngYhj)P z;`Uvbnks`Nt=bP7hGG%bc zsDmeA4Bxrvb$G4}UOL!9CqeBHUYnoe@aav@9XR? zo-JCMhhk)ijLnJkCYgv7hlwjLAPu#IQsH1ELjk6+nYg3Wg+?+C5%YD1KihMd;a5ng zs93|#Ue+g;Mw&p-eX>7n0XE@vgNniTg1#%zM`Q|aB9$a=2S0Q6IqQgzts!_kh8N?g z`R*rliAaJdj06Aw5%wm~Sg-Hbcu6PH@E~K6xk4IDMKUBAE1An2LWX2Y$dE))gk-FU z5}6YfX_knRDPts4U90cQ_zr+oj% zw`X<<8uD6uE|7AlfN)iqS8W{oh&t@q9=^!_>XOsrlM{lTk?7df2yVRR!W#d2nDy_M zWhXlMjq;#;(x(LTeaOyw-n*VA6^85C>M?4{rArY^?)bjc`Kz+!T0t*2orTG<8a(rK z9K->?Z7#!7dk6V9IcV7eSG-ZOdpX8O;h@5aiG<==B3^Zn_R>89RB4ok?`?m(XLn>w!AvSj3?)QMSW`a=%K==c1Dax<^9o z1AfTNe5RbA7@DgEE@OLAyJzH|j?FJ@xmSE*KSwJE*6}5bH_pa|$;*oho-#9Ac?t}mEBzIxKdNR1Xyr|5RHa(J{8Z$12pD9MPk0w$7?pCV~Xj#c4v!!Xt6M<7Z z^6eTAd=YuP`_h@Y5R)tWSF3nToeJC^tdp^Fy?UEbG^f7oX5iO&bbZg(-@9^{bIVw_ zH=~>_M}rg(i_q|dSv;S)d;sH4XH5U~G-K(bNv9}RK|`j{i}mE<(GZ5ZSvI`kQEx zf<~&uX|xtok$mC{5QA4!=!zuy^syw)hXg@X12?-Gv6+nSJ%kW!wN>~8Y4K7q;JFgg zs3Gv_3G2y+FP100QodzBiE36IPCd)+Tzo@^2|;bv9$pgIRVc>4H-6iXfts?#XuoC8_jFA9_9&tz-&Oy(EyrxFeK)MLpO4t( zl$I^DzYX%}SGVO&wpsvaHBcso=1$?>#xC=dbdl-Jx_9s1t1HLoznnBW=0hy z&L57Wp3!>jzgVO21Zvn?i_bO7+%xKEVqe&;kJuurYs3|5Q6un_liRS(YZp}k;lt_j zHLm=-MiW^`vl}c33AS&V3QNqNuE_5Y7wBPsvnv&7mzMtVW-Yd^(Tbo8TSMWpPMx!( z5c5+p<5Ma+S}4N$_OhVdQ{}5nlVb*$ zbku;fDV#|sUz6<^s^u^6LI=@-^<>C+zshCd7@L+4t^y(Fci&{y>=ZP8?!^IJeOem8 zE`g`NxZZUu8Jk9!X{>he#1KW)OgLti=AFTfFT;M)(WD-<1VFQC1_9%m7wC$@XSS{h zM`@$KgyjkG1-JMdzMo}h1?$%1PJumf=zerbE;`3IMWC-ge_ryNe%`7rS{SM=@bMr0 zN`Hn#QOk0Rt#ChSeLle{wK%2L?!ek6 z8jW62#e=+iT)w(fUKoY0G81@uT=L-5XxU778V3H?BScGWYRh#5Hizg_9-k|Fn_b@k z9Q#Vh4|DpsVccwBC_!Yj_3@n3VT`uS826))W3<}xYog0f`ItGcwSwUXAkl?%!WnCE zVOOR3=!W@jB>89Y?os)_7>yS|eLKdxA~TS~`gv(T3=fk6)-`nJg!$f~dFb&=iBmTKa`lD+7Dl7r8ik*+^SLGI4=5@rQXcYdK1?F93%re0h>Ad^HZWx1$X2yQqY) z$(rl0zQSU2b@@W=ut-mkn9TJT20wcA$o7cg;Cr`_wY(ojKsK(UjAOF&eDK3%z`wy} zal%R~G)4>(#E)JUZ#ix>|3KmIOSnzd%_A}A4-OaH4SLO;7NNt(bW3msV&Hzpswwrc z-~O&p_9bd_xl+n2OEg8@-z^pCj@FCyuC;{4skx%d@q8ik-glH9GOz=LL%(HM{dSHzFH0(GT6TU9Yr$u8MQKulyuaV6q{O*b zT;kjojh`~B87(W$+l|`k7u`PEhzPBHHE`R8z}=awNjHc$t)|1e^4GQ2n_r^U_CK>kan;>Pk@P7vjZ;&n*7#cT)e+#Y zd4uTsEsQ;%I%bfw)6WZ>($2=QC5J#4&i< z>qM!`c>_Qg^rc<>pisTLdsJ^r?~#w4DScV!U2lhm2k!Zo7v{Lmlv#{akVJ>Y(7L(c z%1-Z-ex_C{UX-?_m`MsLt-48g-OCQ?^7ns~A`_cqs}&A~td$Rt22UsUn(rf#G5ouWRtC28~XAd%>spiI1V0v(FjH@hwukN3#3|=2XfxFM$|GH2}Wb|!twHK!SJG_UrS8z(*N)jc6u%J3c zjDmv?G-F@yZMt0BiWy}tW`x}rRP1_xgT4`GydKFwld%Yt$^2ht*=rRR1`zHqumRs|!8EG8Cdpj>^z>C&g|LdZE15xD zX2*`mW1~MOoVR2gtkvhE-WC)VBo&}#*sw)8WcA~eepmzC-pBhWm32GMUFox5cPr9z zAEfcAqO7h-(O8#gBU4*qt#>Yop(!wqH9+g>3mw{M3Qy&y)J~nD7OEpVXf6fbz01JA zakq3}z{5+P?gQmtweb_8ZYjrXBx{GuP1G;6b-4k$q#B|_e(`oE|of% z+Q*SzTPwadWM01sF44IK{c2`TOWdz#Yx0=6Z-v4}aO+~tcqj(;QGp(=TNf6@UdN=~ z9XROkMlmP2mHFNU{+&=sYK!qddyQHxsIhxHLiR91vfxlJ8bwk?TJAZYqtQ@IKH;E}3p1vpGFGQkG*AptP~R;xK~85bUt zSG_Ep#v|c${WV%e2?fTU(iaPvmtRRismS@|`31UlKbtBS%YF`*rYcyJZD$JH0&{7b zmA88%{(hFH7p(C$vf58&j&Gb|}A{YAXpYTp9L<$DH zeBeI7_GG~F(?q5!?LSV0M}297mVmebohGB#{f4>r!Barp)G477K* zBrn<7A5`${;y;E#TR%hJ%By`KVj>dzIis)t8N*=vyf$$H_V z+!s2`Dhq`hc!Qqr7^Ul^?Ad70@nX4ovl`yX*lu!0UOfo7MjHUp+c0QkuR%w(fKs5F zCx}hCGe|8czR=XHZY5{-{k8#!)Hdgc(#S-?PrNeK6KWV4>V)eB{49iF8{{9<;#VleTv7) z_M5HFFVusta-FQZ(CIn>9>84kdZRvjm@{9~#Fhp%N(?HsVRu1kT^9f`+tK9?d~Ld> zo5CQOjG|^&$xGKxOS&S3t`j>k2TF3x_EuxOH;%@x}*rPuAP+>#)$6uGU+^0wuOVY?zfz)P=HK^ zWd=m}t*Q8*shvn3_;6PZjkLhvowF%RtzJCIU9gfb`$dJGJ~JO!B{ICRjKM|dIz*tr z)v8wZj0f@8*yy`3-y+JB;}gS{ zQJWYw;|DFy`o_#EYxvKfR4UQfK}mU~Ks5jnZKb>Mmp1g))#MUXcz@hHN1}B4Y)U;4@OrhrSzo6Al8lqwc$MWbgTTjC>Jg@<#XF ze@z!#w$kj>0@sFzG1(eh4&4m!wr|sV(yGF>1JC56$KX7fIJpF_RMXSbM6tot!py*6 zK7`@Tx8x7tl)N-wEy9I(C1|ex8O6nj*<3o|;bAjdNY5d!hQWwOQ;GICwO`1$wk6+MscgmH-`b1@%QQ4F zVoc=`!&OUe$-)zU4GTv?59#>!EzSO^DnquUANEm~6F)wt4H-?$c2+3UH=)6$eD<^y z(cs{pcTI>cX;h{O-}`lRam0U;;4qHAPyAELIQDN@;L8ZAYTeTUTVGJ}BkU_@`Iskl z>jA@=I#L1Siw2Qb8PIJ~^ZSP$-)~@k?Qa-6PovjfK6~VQwcv&UFosH(%rC?h+~&f` zzc*urJlE#U`-wUXMAFNUsrKyz#HHGJ0hfAF`5ns0U)m|urXRNx(wVGJ z$@5F8uauic*!ZD7R@U53YITvOe$a@HFg^YZDcaz_CRZQg$~X9ihK#$hCJ-i* z%jnT?^|=jgPrxxMpHOWw*vLah_y4}KLYmnZ`u2Z)p{1Vd27kQLVw1AFRe_n1sZ6>M zsk=uLW+tk9SihwL=6B!A#mA=za4;ol6QoUo0ud??R%R#kVGs=&-qC2%)&4%Z#3f=X z(ei)&p6$hq4Ip`jtd`u1Fl?o{N)YUz9|LVBKqG&&jzvq$QE@F;$XFy6CuYNgIS_-Q zUH8(AO90YuQF|yc_t510cGM_kBAH{rAoZG!Nl9|hzVL3AxSvu{`l$BU07?&4_;3=CZ@K3UC{W1*>7p~ z|M->+g+4PSE?=wVQ6P&zmR{Yjc3t7j4al+Hm3Vvh9oM~7I>k4Lrdzn!k%YT(^_VhCdb8q|ifKeTpas=SS4gDPR4-yz! zjHxUr5+j3QM1e4j0c_nHf5%0F17&K*Sxx8MJ$9^^W>H-Uz8j08! zGoSni{#6brSS%p}qM|#9T6C@u2oj<;&AI4wV#gsZfI32Cbkp8$TD$zzCjjh*aPhFz zxMw)#gIF@0EJw9sFIUpF;MHJ;{n9q=I;`=y(h5~OKN^BMm#40OA^E=4!ju!gChzVz z`9m2T^L1e8P#)Gt0SCVI^E8Y(O)cV9P9~wJufg5qpday@&HNd}?{o(V{iQoxKx<8FDrW(3aro&<*)qhyeEa=`Dn!)!pWh@j zk%a0urqPb}O*JDPQb5pSZQa+Q*%B1I4x<+`rkZ<{TtGqxJ4aS~{QR7Q*S7}(Zim|b z#fulG(S~*^??Vjy7?PihUSzy|d}`u#RJvZ|7eJr}e6WuUmm?oM3Lm^icPjYNX&?^- za!cneyC^=E@|A@?|#?nb;8YPZoPwf=;v>G@o& zo_htNN9mKBAfB?X%1J+oEZZ)?w4IMoTD&f6-B9K>Ha3P*>eNU`kQ6gR&_=%?f1)0~ zp%JGGW*lRaNbO1V_*$aRk+CgxWDR5He*3>~m20aXbU0;LSk2nV_5(tfih*ynfAQd1YCTRPnWm?ph(T@@pCEW;xVF+$8!SC@KojpJ%7h7*uQp zQM0$@0St?ZcoGv6N!v7Hcuj7hpZ*UR@(P`=*0=Ld5A$VsHS~Om<}^lugt|1*@qN<` zjV1}*x5Qg$6~vj|#{ZX-rpR+_YSf+|=HpG0@3uNGes&eImRU8b){78xzG|^e9ip_` z_!dIh&#y~nQCuH-R3UnN-$3`m>g8BlHRhvu#%a9xwGf&k;5)}yWx{zt( z+YT@q*(ExBUu1(dG@}OI*9NaY5jJR6goMK6SGCfQLoQ2qe#V6jN2DRTJL&;$(+;Io z;f|B!K#f+PI2+m;f4?lMpU zKckWVVC3H?EZ}}PgZdNink8?||HzAd85zd07DotD`eg~@yWu&ou92U*(&SX5Fh+Nj z3I?p$F81pD71Mm*Tg~8^g3})3C7(CG>Wa0lBs|>c=xp-O_(;T!kW(V z{Vh$wwb19$MwJ%9w18hqUMvAOo5)j>gsyxT70bIYdc&o?+ywv2=Brm&Jt_xgDmmTflg7`W2PJ0lL2r?Zwk54sYtb{L=r{F$uYbi9;E z601p3TL;)V3NZey_?4QKJk5`M9(6kdXHk8qSP}sUjAr;qZ2f8db8!u5MQ(Y;f&#^) zSf3Lnr;ZFBLc6ixFLt=!*uDi9WWeRqbIUF4dLJbg_@K8iBk{ma%dINioEQC5S1|Of zx#SD@flHN<@x?}_kkDm7tzsqYZyy-ew|z-y0ss9uCNNvdOC%UqFN3`VQSqX=(oxXU zf1R{K)QXo`SPk-aRl^xXSY<>5osuU(eS@davk>gha%0cOkK9ax+F_XaY%qJ@%qf|f zov_=b6TJnszZF`l4YsihhqfO?22!G9T>ZQ2BsG}tQ%VCeUYS_mTTo3SFGTXlOoac^PF-q63P57)C_lf87{TXxkMMyY~18s9Q z4|AdEayw7!^HFm?{f;v&N#K^0Hc#dc{eB z#Tw@e3riQ$n)bqdWTT+vO2cenrW@@x4c9;pz0`Psao!K}tsy8}o7OiF59}-f6jWyl-Ki=@z)!_@D|TX*^BLI>E8>`IyC76y%?zDb&a*RTWwtq35$DcL z{zML~JP$}o6W}l#Kc~pN$^~~B%{J|P z1CXPxNx$#bCkSzT6sc~Q^2NyY@swa6C62Gzu231o0)2M!t{w9u1G!=#BZU;al*W@!nts0##n!U!D^ zDCqGt{KGrL`%&s0aD z%6$duY6{|@U{~jrw})@ExcBh^RKDMt!3!nB`Z@B)pLk~KOqJ?06D6r6MX#l-oG~d8 zqu#+XsQkgJ&B%>y@6N|cKKBpYkUM1)v+cUr$?p|~lA+a4C}J%;v-n<3tq964-Rt=2 zf!f1oDj|E!rR{xN?o%!N{KgJ$pun1T2glt%9GK3Oai!_*QI_N_Y(^&Y{lWGSB(~(p zOH8i#ZaKccl@osN-5$bB!_BxzUx~{3H4(brFH5!&8Gn2sU=##YN^@c7>*#$S3haes zPX5>|Njnz8c0OnnZ1`IQ?4XTnSgYuk8&=wc^We3b8*u8M;#an`VPyAF@>Tg-s#W{JfH`(cO$h*3-s|M9ZjIT!JcT8{@*iLZmJ9WON>A3vE zkQjcmZ^thcn)4rWdtG7}R*F!eW6Pmv)2-@HO?v}L{2eCvAKr8?m{&2_%pS}%985+D z*|NBAaLy__8-qJy{WieYrThH`ziYH~Oh3OWMG7nx)(-0}!E+nF=u~r_h~`E<{Uq!K zY+pFLCKmNxG}^;*(Zh9)SO)igQBThQ{5`4r8w559gfK+RwCKD3c(-3{%BV=_(ACA~ zA8|W$t1ji`$=h@P^RPys*roR^c9KW6?-#9>jLq7u&K|B+A0FDhQ#s1GqyDJihLRrZ zWX{IWbcRxkaB1Y{288Q#jpCHDsT0F$wB)J$rCh@+x}k6ZI}@qZvnWVlA8eYl>7q30P!8D58W zh*q|GjUOW!iR-LDk|?$a-3q7;^B-uV2LxBf7X^?tzV6e z1uA#t^E;6;Qs7h@UUk{Y*>j@Y61n?4rU!fcPoK8gzB-2CXcFeWqD!|KD*kCT@G2y@ zOf>>JYxEo~UMAn%+FtO8T0iKG*bTLBm!yKl-h`;qOsX{b4Q@?@;!bIAG$4!>K> z@NZ~Tg8Le^hNAW4^XB8D7w8kV|NP)RAwHP$Fgsh4Q|VW4uT9E<+ZGJ6oS!SlOdvg( zac)=lJU0E)gKdjffbfh*(etN*u&IeX24%4GdHce-;u7J#W9w`{_C!FY;z-&ARdBUilzs;!Y% z9nVzA%wrgO-P@dN<-;5w|UqW>U~@94XV>D8Z@664hJ@A^yB?AkBxxwUD+y91#K|>cDnUo=&)5)F0L0uot@ERn=4RMl=%%9I} z1BHa^He+yacpRe#7iJ+`&YczEu;Aa1{Lhb@5rNC_8l$q$gv(r^t0-?_g*rX5@6PRZ zAHG3mJc~A}p!0v=G*ZE;Qf2kGMET5Y-{43^W&XaVFv!&au;AozdXH`*$7+4uy;O=^m zO5kwF=O5Rmb4~k~#q_VW)@-kW+q7!eX{T_|n-4uOm~W@IVs`$z?<^T>q7>UjrfHwS zGl?K=Syq6Fax{mfKD<6bUCVzjNTdv zQaXU{ulF8}SS@)cJA3(NhoClA$va<{jFJ^?`@L_fM7$_Da=BQV)I@uo1wFWa=NkNF zui}CTL-Y?Dz@Lo$@YC= z*=zk>Kt>n%rw)WI%sutZi_N1eyxD(kUMf;DZ+yBS=FQBe`x$B?uoLV)@HypACtH*srbm&*EILyuJ ziA{O>E$WJeyEFDU;a&E)!Lpfuy9Q(7m!+BjWp{C;e%M@t@obQi+@? zxV^-WW};`4_q4iVqWAPf7c@?zGobuKuKDr(@wJELONFgVCSC9T{Ix^*gGtFI$z@HA zlCdS5MJ{261yA-++;znof1N+ak0SXm*8;i=eiQv=6B83E81Fq9S%sE;*trBOOa=kf z^}q~MuCQI8v?)d-s(!s>EzO_B_`D(6Y z9hlTkw~m)0Xzg%l<30af7Sl$uF>5J&+{_n5F?S<~OjPWWx{CR2+_KqfL>Se`L~o<$ zc9*YV<-xSC^$vAeL7;ag1Zo*CZ*NPojzUJOx5X0Q!lhBGYSH{M`PhCc6x#d!JJCo* z9lq#5XiOUb;A?Bfc79nUR>?QsYe)TLX{_IiXZ?>77puHZU-`KxJf&-fVMK9f2MC|4 zDF0I6vK7vf8#wQ+a?QR~8zfSm<9KyZr1{-obU#1W>n{Hr%z-xDdb(JVEmen?qw|Qp=Hxg2+-2jAia-E)p|lJ zKlV{ByH`LAnY<$pH zYsZ`Ko<5ENAakD;%rkDlKJ@?`OlMxUCX_bnkIk%|X;2xxBitCZUv*Vfe)y#T1?^l$ zg~p^XeuJdmOBpSbbeh_VbehnR9@)@1)?)vwYRYrQiv5#RUgFb=?O6lAu6SByI&bVc zX`KABD06IVYQorU+v3=l>-J^OT=1O9{n8&DnYPg~>ZY*T7^hyz3kK?r4TEiWeHwhC zXUti~2F`bJnin-bKks(x+nAe87xTTx6WPn0U#HC+d|mm#&Rf6G^b`56OR=wP$cxm6o7z%H)CZnf8mGE|kSiWxA1UJLm!(#@4 zAF2!|*wrXOH%o_R)bGw*SZf)*Vj#GSv*Urm);x<>cfP!M)Emb*b2qv5wAe0@tz5C-?s{!8p^}gtgG^k9P<{O(Ne4% zb5o#VuNm$8&N-CovCzch3)5H>j>E!G1&x|$J++v3m(F;}GuvXZ zW6r))ziO3!-EFE141M>*c9P}5)a3g*0ml^&_`MHi>2&0W$cgSX%m|rXe6xV+6j?$o zY8}~fM)BGNHmT`j(wKpasS6bFHG;>gz$-pj(HsFRy0Y@s1eQ&oY4Mr%T%>x9EpP47 zXC}UKqSJ16!T^<{>$jzb1;IWuF-NVApD{xW^P9@LDWfmLX%S_^3%(n zI@91Z;#&yLpn8I9I-d#{cexQ!M>zPe+Usb1F}m_e(=Q?0(4Tl&AH!G6@_ z7%bSt92cm5&7ix$hL~d{t7r%H!ehMI*-e?B$F9j(nIL zekC>4i)@eTC9$!)oGY$uacgm{kMX~b#g(t2^LHQ{?v{yJVG85M-HBn99V*?-3cGP7 z6t8&-W)T%f_iFSV1q1lwrXh}nkCsxbC!-<~xc@9JqHJ2&GKG~^t>Bqjf~+vuya(f) zJC1E7W>J2Ld15vPJTspvP-mu+6S7J6>F%=^n!XyH?R@~?{+r-1yP&k^zT2zn?#S&G ziXOUOw(0rA5vs~<5jhM0drIS)*!Fbs3g?5RlXA}JvJ2oW1`o+d`__kzc)Um8!{{!V z1mJd%>#d7Gm(hvsGd&X$Hp6^}a?H=z1l&A`k>^IFTeq2CV@+g34?N$F^V^}k?=9NI z%oDaBPbgq%?)=4mw2XzvKKl24D0-cEYcv2s;;q=hnslrmtPQR9YWG|6(AbKNO3$eM zSyx_P#rt44n|c#J*-@W;aYlv1Z7*8$y6hG8uWcVH+aS#`>i8vEJ& zWknw@7WNow+Gun-(5>Yc)8XRfLOgR1bD9D7Ao|AGDSvDn&uRo(+<;Mf7Zqe+qcK!( zK)0%ky4nZBF1mG?^3q>NufYbjZyc#~B#wVpo`U9CT{6oSB7Uc-lj9%Hw#2W;s3s2! z%ATy?++mIT6WXvumaBaqHt71;=5Cq`9N5d$A#&{JxYHB}#2KjC-5^}3;<(jphbC5C z>(VM={c2|pW}ahr7f(O1y8CPFrlp(HOo=b&G^4>gu;tbwji``cSOInib8ffS8}Ajae2!7VmZnVm8NlAi@K##fzLDHt zXif~nV7vJ&h)XLAZSMz%k_jul%mPrtM4DIKpxS4Db2v|onu=TQ8XJwy=)6cF*Si=A z(+s8gF|AN6J1BSFrJiZ5bw&y*_-;q#x-bBkTCd2FzI;&CRF-7js^;t0WY z=?wYU@st=hbpyjIU5H5u<(Y6yN3ofu35}v1dm3Bod+Gg>DL|R-9{Mi%lb0Un)iIMmx-yN+n#UI z6=EB>miti{f;Lp|n0oIlvF_*!gxQ3uOO>&$dpOD-xO_85g|(DhW-rr!JG=aMBe-Vk zZN=L#alv50?RskYLYn|fYy#`WV0jeFgc>n)>O~f$kGp-g9oyu)9E`=^i4y;XtZz#y zU#AUfIlH{0&;(#D8JBkBx_QAb2f?ocgXTVn9NpzZr1F*QiBc5cLX+C2;?JoYf+wXO z@ltxJwk(d_&?BDHrW)mD8H4h>`_*;LHz}$u%o2;M*Sv<)beELy@6Fi^$YfTgS$mcL ziRICWxdt`rE3&r>%GEsh(#CZ*XrH)|`Zj*0%#Sb`Yzpu9^rKp=E}5p;gt37wS`{Ll z+3g+NMn8BSXVHYUk#^ok9%3M)O|rmH0!?03pXWE)k%(^VC>m)`eblj zFGujK9dN>D*Yci;7vzXTgQ91yn_?~Qe!4vI#9c^8idJ?YYup98aPrQRt+QL7V@ws? z=AsEwfZR{&C;uE4nRE*WJ*v_*Xyik%0*g*B8Fs+>?d7WSY6^|GUjub)U3N}fch?yf z<3R&AUFRc$gW6rg#J`Z8x9j|WX;lSV_e8TN)xCX5XEA zt+|IBiuk{_Y?J@*>d}bcca<7f@iAHpifP;EMFrNDDf<+lC~m@d$r?k=Jai>RDqj!Z zr>}h&6T4?O{}G*~goHKirPfR5M}z;IX6dPU*Q)*YQY`yygxH{tOA%1o+OzHS38>*1fJURdoR4LN|2LHbo4ku!2N z1JMB-(^nVx3HU6Xt84Lw3|ISMmePdzR4=IVV_u8y`)J>6IMXJaubrk9^MsY1>iYV2 zs>*w<`QN{%ns`iZIB>B0pURC|J$k*spB+jXfo4vu8Oh-I%BF@snr*}@ML>=6?<3%% zrz4T9gD*zzJ4%%T?CQW0>u{162LzW2)S7!Px;^sr9(VPRsV}By!%<`Nnho;)e$NZ2 z^iP#x@BVfVyRYGKX$24{WRd}93;&(bU|n)XqXk}3 z$1Yu|!#;{d)Y%{eHV#-GVSJ)~Erudf5UPTIMSy$$>eQgV@7{R8 zU9Mj;{(Iuc#|-y;IhCx-BT(LWmS{%Bk!#W-g&owVXJeh8(Bi#UrR-0)ao9m2Q~=9Z z<06Fy@H=xGur>ZLlE}jpjkr3Jw0}Pw4f1gG_*53hCb5d!MuxI(c>;>2!;5mzycUSlkMXp?t)mi5*jLOt|j~uja4L z9LB$|8bicv>{hx&C+0KxZC%fYyXkStB@j|$>FGvX+&Hvqg4qYcM>AKpp{C0rl?}Xw zJ33veLq(SR$)Pm=Mi??zNd{dvuH_z}HPdd4~68;rNoXL0$K zGEv%4cL8M#7s*ylpyeV(l?>p-sPZhtKs_KRONl}uB{~`h8IsAd3f&k zxuTjqR{?x1*5{Iu3o@VCfvj`~h>Rc8IkN%$-Pw8Pt!4kili7If?P1s==FT>F{VhF3 z2SBh>|FYS{dqk(I-XLfJ)fPG;K9#^e!6~RXW%P7k`k~}Lgr&>E$nXDt(tl5avij_U zVOQB&{S!5tk;Jl84NcZ zLm3?>+U1PXb{^oiT+TYv=sh0&#-jLzM1?m25 zQ1lCZ9214eEBo(3D9%0zRy>FwlCMC!>IJy&a9|R+^+B|?0L$$z!`2i?Tg;=CFQ+L% zi@2Qu?hPG-5Qyb?=jtHVYYp<#npJkmfZW1fwnf}1m{ZWhLgpzm$}0tsj->M zo)ii2S@kUGLu@|OBIRoT)pJ*iD0@|uKHlKJUzCqw_M8NTEfZrp*xz)oiYUe50O=&( z`IdK2U)ft;=IzzkOqNF{0rJ^^Y7@S@c(&f@V%~O?%-{T;@XS@Uh)h3)uMOv-?Z|^3 z{axrAZGO(I)Z=-$WcORJNc`X1(!rH|V#r+bVkZFO9rq6G`3|n}gKDiRE9}*>H*`ACK|cnMT=pX{S@wxSKNv-aT$u`>>CpWnIZg-Jv?TPz&w9 z=KF6HZJ_(gRtdUeZ}C{GbIrsF`?TCVOd0MWxtuJn*gE&Ex!#h%GI}6D{aV_7Ys3Z# zsDj5*-o`lD04pTh!w(^*w~S>NYG00{d9m%!nU&T)4M;>?n=Batx zm`m+o_e%n66AT@VK$%~9i4e2#23nMJA%iv?lA@!?ah;+ft2BkA(+7+-5|)%--guOF zCGhV{Y(C0#`8N;{tU$6$H22p<8ZAL^)NRDawZcTv<-4Vl$i~%Cde<#+c#WzKMcvZ5 zvTDLgcWt8hy;Rj@Hu;?>;n-bSeqQi3A<3ou)th5lAj{=GUozJ7cbqkzY{;mEyM6PW=Ix?7rteAS?i!pItsDqQyQLH)zaq-ps zXIwv9f=6@RT2u*?z5!##_LGfDBCA~h=@?)s7*J?iQi2P?;m>AoU`0%x{(TplO+9_? zFeQ;b^|P?A=|R(D(q2~e?mMm#Jgyq)V~vHTOAdN2QF{b`8mKVv$9lynsQ9*m-P)7 zbW|I=wdFtVSSpU$jJ3|%bX$Ww%jG5&?sIWuE*Md}UL!>5bRED48k$8XFYmj&v&^_28@FzOz ze6d=4YTPVt`{7jnec{csRixY#YO$7!ow?rd-UbGBIPrR_6pNT+YqL!K+aL0OV2_-C zVGn$|w26I*Cpu_}2Qi&k9LjZ4Y_zyF*`Lxhx@#L%{QZrz8)WLMrGCh~zB(iDs5d%+ zi$XqM?mx1>OL|mrvP8@WMrbjK(s@XvC;P`c;~d?RUl{+cRHo@0?z^TFui27cqlc=7 zt70D%U`s-#@SV>5ls`f0zY-Wxz?)Tfpcwr_;mW6=mytx?uw1gaokgeeEre~3HBLD1 zN63qQeF^|TI3g48(LvGQ4{ZU}G$Sro+VVBqs;#OL?b+{qs}+;_4v}C1kbr-4$6!S1 z^slLwpl|Tsj!hjKvPFmN+M}JW8#-ZE?5jW59n@=+$oUf|PVg9Z>O6|;`HYf5#7p}c z@u+`vixbt;NT(6dOxJ($OsTH@$lS3YnR(r{@R(Rt3mo)BX|i0W z_RgXDf0nabV9C~?;aOBs?Q8w8s;BT>RjiaXq|`g5*}(d&B&Qrj=1`SiBi-CLY+nbA zP*#4jL1X_Ca7fqQ8z`B26IxEz6vQ354)Y^jMB24$oDMz2%GVw!4mVVTIgwlo?Sq4~ zsXeth!P@Bfbmj56{)^{a7pU%=czub|v%^%<;myvhO6X6%+@7}XX21od)@{d-odA!X zq}B0?jct87i@D02_5j>cOfc8~V(YO=5~|eJzV}PrxooYJOPQE^C%8<#eoHvBLB((2 zy||-;rPk!s#Pg_i@75#$tI9<}pR|0`OYMi05gRT(KCj$bI71^mV_8&OHzZErPp|&{ z3A)lQUrj6OyCQ;ED1+&~{XPU4!_5?RRUflO(#*Tpdh#_YT2rVsejGewIT!Ow#YqJ! z?1@K~B<(Zp4{y&df)lYgz(unyv;iL2NBu3BF2lL%E$m?|$>#Tw-o_g6N+Pd$=Wd}Q zHG{FB@UD3e&5SBmTI-7yXzIO1ye(Y>X*c%l6Mv0r?O)VuW@)^vPb>5xpHfE*9-S)g zdV}lIZ(LvY4f^1d1bhGQ`L`b=RgA6-8bD&q>`Z9J!k7F8eiXOZ(EDbysDi?Nzd#mFlLK1>cmvoUp!_!zh^dN zBsFX9x)?bv$$0R>C8OMRN*U`@?SGh^fK{Bs-ayqT&ip-Vy`PQbhpOF5TUn2s=KMW_ zFnkMqW=?scPPBt1j|f+2&y=}0wK>4`5S5_%dFd^v*tfq+!lBt(aNPqG5mz~^OuUA6 zAH~e81%rZ|w(UoGeC7N}a{>UkIM{o%@kr*o%k?Yp!R>+a6oB^e@3;E*A+*Pm=X+TO z=mU~h4ro*#fWG*^d*hb zol-29ZFy7!CC`b>n@6O&k5wa}5w*vBlr*z|blT4&P|+G=8&IZeGPieSGDTl-pja>M z!1Ji>9v#8!9_pEHprT#HRjtm&6*n&=Q&dc=`Y~KHHaY~pChnKuJE56reQZhc>`HL& z&3Vb`oM1ZReda1fuHBY~tTm|vUv>)rFSGKd>LGT^JFZuzUq%GsgSOCz-C997vkY zuAg4FpVSm+91?Opl(yfZBc8snlWKCT5hg-$J3Ml$x@1AezE@yxl7lMM@cY>7)xVE1 zAHr6{qtifY0!2aEeFc_7XXiT*4^ps0?G4Q69lI0U#nno>8{C_n&f*zY+}6FrK0P{q z!MBZ+uY1ekl{j~O6(GmNzBqt?o}WS`o3;6jml1#)lsZ&uwZf<+jnlIME@b-qmhZgC zE?$oMu)`xC%JGBf-TRPDN^V!3-qE&#3nvJhW4x8J*W&WtbAtbN?nULtC ze{YVb)f27O4x9X%eDOnqd$SFjsO7R=9rFS1jreBoqOV5$=>P^Jd~Z)e;`{W^aiTs`3hdGz zy|ymA3#GAEy=!~gCtLV`_Yx3}!&*kq94(I_(?XdU4@^!l^;tn{d5zQd42b3-rg(H>*a__zTTdJj{FuxKXbcbI2_E%YxNXN=I`Ng;Ph*D)D)cjq zbD}4f?hz|T_3boT#(Pm8;F5pG!|k-xmu~wePKB)5{w^wLC!%7P&8_2lXuUIlx`f;s zT}3|N>{&L{ATP*vU6GvD8q`qN6Sh0Q;5_-2Tgdp~3DYwT(p2^OzH;B$O%|-UIM}>Glq2Lx%v-sVcg9B-}!fq`75pxnX zDKH($*=SPqbvhS$NdkV@TFMH$7Wf_AlnvG{sh9~`_`MRF)|#P1vH-Cp*L?SRgKn`j znfk+X-<|82IJw8^@qCLaOD|=+Q!_*($aLK2e7Jfp2QBcsvF=*Yxc2?yWF$4zvAc?K zy>7;pk#99G&%}oO80N!+#AFrgJS1R3AUP7&A6gtM#d|9P| zu|++vTj`av@lXD=jSK(0)*w1BG8qM}JPvLKH;Fr>Q6q`O502-tkL;fPe%B@(ST-KC zAh;wXBc3JPp|{9(8T*E8v&)i>##OF=P!z-E4S?kchm=b; zd_4lPSKYiI*RiSr6vWCznIt``lxqkO8>wFgqTlccU~F zE$-($wgZYc8Z$rK^A9j#vqwx$T#BTXhw#-1y~0t{Lf>Ztz_C7R;C7Cft>*%vZ3HRO z>&@w=q}_Cq^;Y<=vRdN4l>Ha%Deq=mte^ke*TOb1J4{5xO}-kX_l2Z_76;=h+mm-mOZDy@>}G$QjQL%U$(14`FH%###-?vFdI6~% z>!8NFN-TK7Xdx-&hi#1?e(95Uphe|WT&>c1Bk z5KB&f);8Y%@%Ym$T|a2uRB*=|bFu>1XzlY`v;DX}D0>>t17t`(``JtHvQ$6n0$=42 z&W1hSXaA8b_mS#dD-B-OOMN)3v-bP^=P5^?XZdTI%F^LnTyGJ%Yca=mjs6KKl!H`Y z_2q-(*N7tA9113~q{)M72iR7r^hQfnfd7RRF8(nv2|W2;npWxuS?QS}uRQps=O@Z| z9wgl_ny&fCGEF4D=QWF&dnQW%^TlJ_hOB{2*=3;*n=yl^${T=)LfoOb0gSAU*#U#! zGwy4evFHhi>vJVE*x$ZuxPGmEtgR#kI`_`{kBjH-@qZxkFZZj|u`>q;8L5H~;Noc- zGq3qT^oPOk8~%_B55>?L}rPIYZ#(eERkP zX2xW|V)-V%5vyxBtBSMPfd5mhU)VikpX+bP8Kzsa<3u&72R0S|xKu@Nc<>%1XarS# zeO1JD%$P?MIYR86}~jj4~@Dk(DAD8ONTHJu54l_Ckf^$O;FCki7{-WbduAclHR+ z^-*#^&-2Iqd)=?!%gs68?`K@sdtFF$1((y?QVM7%S&sQYe3mw7!1S(J)FeW8E}0L^ zoKv0X(%t_eyG(Ex5g7Wmv-_A5Np*Y1gCZ0GfKUmTkqKCk5Xr*3S4x|p-RWZ6iB$ES zV8^zCJrQIU&xc15(>7JKX1fM8R}vtJf0i$GN(r2sx|%|+^X3uu0}v_E2<;y#CJW3; zFaCW8J~s}+p)oGg^Dd#>50HlVK6KHY6 z?Nm2wVPD!JT>_X<{@Wmy^ufc}I9%xN1)MY#Pwyvt@+;tcG6N}H;cu?wMmsVL2!bpT z9*h9&bwu^(fS-X2T1kyjy<2aU(6`CttXoBVB+Iv0C>k9%u{6jM-6%*A$l^I)SA(*JDMV(x*=L%&LsUC|8ABcNRKFiCJybrx@RDG+^FJ3J zJ*VL`1%AMpChJJ-C~NsPK`@gIN|9ozGkpfHN%>*Ogc%5xKB7Gj(ik4`=T^&I$DF$j zQH=rZgnpUxs~n0CRGG!=i=pTa0WShoieTbdtu3BsTjC%3VLIP3BmsyA#l^#3hxmN6i+i@<73aU$~kEg%$z(4wTlf$~<` zn(Yzp#s}cXTZ_HC|41;uXS&_36a0sfkdUGhPk-o7 z`v=!UjZdVK!l2JQf!d|_rLiMb#K(m0u$+8A-giBEs`-5v&+nX7PjHu^re%CGQHXCL zR=?0+Y&9OCI&k+;yDUVmt)OZaN^0npT^^V?ochan-K;p^2HN7%BK-`w+lBHJx~)2| z6X5*jfHcULz^pawf8we+COqP5Id2T7xI(ls$R3TcjLeXO@&*v2BmPv5#Dx{`yn8&C zzwbp1t->(9r^tsy>ay?A0(SY6Sxh!=&iqU2xv7{zV1 z1r@_ZsQL=Ce&Kj&jqxuUpbM9e-rLfoIDM%P`Z*(5b@Q1PN?e-&^CBTI&&=~`(w@6N zeG!tq(TVvk z4eyup&CQh!z|ZHt)UCh>-7M^bnz`$sqR98;4;zmhqUT{rcG4QS8zMA>)y}cNEZpVG zv%}o&AAT%QspKi3rDcF>?MoERv~fheEFPOB6xP&h{HR8#L?5ld+XR+E{?a=>Giq0%xTRYY6y;OS!k}5TWEC$?!70zzVzYq z_PIL2TV6Nwem(8Zm;%{IkGbwctgt@F?RxsWC2J&tB3bKSxYPU>aRu=T%G_oEeLCQ5 z&KgBWvaSr8IBvEkYMepR-ap(dG>T+$uF~@$?sWBQR8>2pz`$qG$g(uSmN$I$+Vq4= z#ovP9WjpFR-K1XYMkdtDUBXG%jIQZ9_Y7iWVz1G>R7=r^kx#&oeBh)A6?Vj?GISb? zWj~)HKBh4p1q4YJa94?#IKMS5X7T%(UzJ%s1tjml>0m4Ntvx(ZvIr3)@DZklB45~E z)Z-+^0S1ESv`AEbl_oKEIwt1&!4 zHpr=o&9ER`djycfpXc-dQRFwycmX=|IqF&;RBbj;^7GZ0jU=+iG>%-XS!?IB_LKXN za^oAL=xp=u9QcW;dJdgtsO=2wn7^KBlc}U)md+8f7+6Qp2*@UlM9v6}fAWzwMWtis z-o0cB04$G4-`N1!hHW2^1dhexGbOvlvRj-`0;SG0%*46fWx=CB{7xVoPj&theyL0K zbRp!pSaoJ3e9%h&5=5B{a{5f0rdCT4y|Uq78DUjD9L6obRDVdvChB{xm>}hu!A92m zqML*@@h5-(hXX9xBx?Tp3(i_YHT7^og;(DbyAi>SYNy3+`?^bycM)Dz>Vn(Fq`XFZ+fF8f@zkT+yIUq6o|PnVbf4I@Jy?!2_#5nS=-TpJHi*lC zV|%A|jb`fDqFxOZ?c@@rXkG!080pI#M_PR) z(I0iB=a_!YqnCH2hsFr6F$idI&(V<1+@T)T+|IYsVwT|wzJx6Tt!pigN;&c4(RWJp zZ6Gx~Il~5e&z@iNOei)yxy=c1vcmIEHF2-PphI@7=z_>0&WDLAU&xfB$=jKoC@UDD zTqgN4_MdW@Insg!O7>xVQhfCL6x@NQ_;w6{wFZgk8^4b94&Ohzp&yhx-=h(?N3^0| zW(s6ate?^cxc`E55-MBDnjl$F)|AH09PTlfBaT4zKc`$*o+AUNZjREjDd|RXLj>y7 zp_$8h6@i^=(75}i|Gr+?u?bL|ghk7K>~-$*uvHxc&G4i>(M|VWysd=T#_~;s8Oz&a z#<2K-abUhCKka4YfB3#36TV)^P)$8aH;~;qcgn$<>=?~fCRZlit6!m$dILrN)j-wo zUB4<^G(Xf#jQ~INtW(Lr*O_f3(H`JJDn=121mYh}+83e5}vQjb}=g!8njD^}2 zS%Chyevp&(S09gFfib72!FTDCmdRhC$kGD(Zt@F*-TZh6{9APpvAV?#(U&qXHi(?p zQ6$LTH-Wvs^@&zZQ$j-w*-=0U$j=n?6KVz(`gS{{N2jX#nBJYPL09ygs!-2ctY6%# zNa0=}C6PwkHV`K}0A1nv)@Y5J!q=C_iLl?Pp=H}%_Y(aE1dgiBW^TUUv zwJrB4BJRg=wDGftr~fKF$SoxrX)n0^h^bk-6Fz<;sY*p(p^i>fORkR8Hs|{uq}ttX zP5xq54O2+70Ecbv>sYwh9AnJ{p4A#Ch;FJT&%>$3=c}oj+W?r-iq+CnBXPJo?4$W0 ztMR9_!gVbF*C16j&9^)~j)u&1(TqZLT>(m(tDptWS5fX{1F!&h)6y?g@}ZF+UY&v$ zLPhL=#CeEt=VN)WjCo?3-(g>MfzPeyT_imXeJ_8fdc|`EZ@kSR%Pgz5+UA4qaJ-K%)1>yjNx4D_%@G6V|lLemuU@@t-D*7p{f}F^vmVGNDVs)eYupGzA{|q^Vpn z{!Z(WL_BGH*~blr$m?J5t1-0)^c9+j3xWB-2{~G9@5G&6_dXarwCXkVT|U=DpM?e^ zf2r3^Pjhj4v|{}fu@;g(h`O5rurL&)>e2)J`@ya1hf021&niHY@~Gmm z_R6h3om$-t}YVL$j%VF%8mMUg0g@3ep_namvyf4($FUUw}0pQ3JA9M$9->_|~?LoQZo z4L}4C0j0x%7AjW47GqH)y{-&X{km$R<5vzs{V-q~Bfxt`6HAy6P;VEAbqt{;$zDrM ziBvYxKGX`4IlVzMYBIVXjik&XUxnV@FVGU85`B(_mm>#*k-*;+2kzt}Pal5o5&GLJ ztvYrg$F1WnlHbLJyH<()p1Hh~zo959u&@+)hPdgwf={+|`n&M2)K8DZe}TV`v3CHKB>>x4V!Kz=@i$(Fp3{Twetce<(ACHxU`bHdkmL2Do=Pz zoFyMA(l-EA)4Yg+V|lA?D1Bxa%z*xH!^Uz2kcktn=j<4O1|PbL%J`n6Sh5s)LCc9D zxzpN7=HGagTa~;WXZkN;T%f94%TsnC!ycMpC&7GeZhvH`>=bs|t7U%)#4~i0T&c05 z%N#9mQHBWtR5T=e*5T}yq(7-oLl~#YmsK}YA)8XOwhvUD zG!-tTNZ+;8SE%V?XZFg7_rbY4ypuJ&{1W?DDHGjOy#ca? zDSJ-Fc$*%N*l96;eJZwq_;PxB%ABVa| zO}Dhje}0?HAwr~(0i6GYQKYKTT})MUpp7|Ga3`G2qf=KQ%JSWjUj5fz6rjr(!>KcK zI3BzRpcbtkID=}5FCq8H=OKTYH6;n03oUf=IvBcEkYQf^eTk!>!JUgk3s3dpQ{zBv zxGz*b_DR>TF`p+tbh=+sCdeKLL+zwenV|a(r?1v{MB^CtJ&b{YvWfX(AGv#6rzV8D zax9|Bo97vQXPhdIIp-+nVa3(fR-vZq5eWw7h0Nfyo*;1xnK;e8FInvKHjOb)LAA_c z6aXb;=%PoLP4>!%7`0{zj5L|6z{&F;`5$J3R`Qm83lt%|9}Bp9_wJl(FUdxVcS#&8be#BN}o$p3>;fr(Kf9Lre!OlzPC#2Yg%^oc8% z9S%Kd1buvs5+TESO2Zn=Lk*6Tq+>&dBQ+@_^PQSO1dxCK+zO}zvLnyy1U-~8Pu3<$TgWsw%uVfJtdh3(Wt`SIFVBy z`3KqQkI;rILYuWz_25b*JMTIHI}7I40;pCx;E?>Gr=!K_t)>mIIS#ppIkowx?C-2D z@#=>avL9)EqEJJXKotlnC=Nbx_pbYz@87(NcaEuO{5azx4oM_Jxnt>|NiP<$XWN0%her|HnfD&{i;Nv#voFCS6xwUzB_X>6@|A^Y7@_2+}s#xnZV z4>*Y}ed=^E@W{4Wx*O9VPjx0(fd}7hN@gtJg&TVPqWWlL!?6GfKH+2fJ7*UOs}Cq! z@`T30aX5uL{7cwb;bA?fbrL~K^9RXdqE&KCMqnY>-bP$-$X#4_Y@X|+;~2l8{e)}s zmwyT~rdl8nZnHga+5^wx(Rlp)ld4+Fm~gh|Fn_Ud9d2dZiU7@Z_9socoCwJnG!dx# z0TK^u&?z_WhJhKV6(G8@wapkZIrCus zy^sxZQi6u}_8Hg=r{xxKeu|MR08G3+e&@knY@R-L_zpnB0I5CI@jZ>e$BW@0FCqbb zP|oL5_3i+@c9S&CNMJw$4`tZ#v}G%?1Ar-b3H%3Cpu`i7aV3m#dj1W1$6?) z*HakUCX7J7{=>))>I<@vhgf|xyqORnmkyiUxp4C9T{TNt*y)7Ikt!wG=(diy@$Q;i zY!7e4O_>P+(RtJKg$XN^0<$WGiw>8QUMiTF(%hmpdQ`2qqUVz;ZGqRF021M(dVQsQ zk9_=N2i4+Web=uwHuNqJhLFm-s`SgL`gu4ks8d0qIiGR#JWd7&H`pAzzK>qsEf zfKn?7P}38d8E=Wf*k^+@g`)4vs+X&- zGcyU$V_3DAv%&q<33XwQxfb`*5)`UnmP;HS%255PrBInD#IJToQ(;;`louY$WVR5$ zKsJ78{wpZrE=o&o`cq*^X^h?e7kuq;U-$rzPS&?Mhh`U*Fmi#KE8t@jX)^>Z%7aHG zaN8uAX^xJ9%*!o2RXEvdHDvSmu(*T%(vDK6{3^T=G0TsAYy-P%W`qRPjMPnxqqBfD z%v(8(_(TYBfJv}vQeennCOy3?9A*k~p34Uq;)w<#GUduMP4?p4Y7{37_}D1^>Irpih^)Cb2|^AV|>nmcc-u1`&G@SYXgF>n-hOlP4G0T%Ncy>#OmUbtw1}{(;Wc^)M9($ zw3P6psuBEf+`ZcZL2PhBB$C^$(|AH*RJ5ny-ZtdGMERR=wYw08+b0?n7a;^G3DaUDoB#trep*U_0GZgskr=&lB-`3kd zK^mrlcB4XN8DcD17(cZV>$AgLn*I0A)GWj+yMszC4Kz2p1kPa8)misvdZ`J^5BwIh1mU<+(-VKSh0GQocKDo4x3=2RHQ@|WhZyli9X&*H~tw-IF~N(N}n z+fRS?3VTV)uXfJ?sc4k%BkeC}LSX_$%PgP=n$WR{f@yqgk1L?mIPoutuuy(P_EnW$ zZH}j&hxUT|aw=!pDtJbv3nC>jv6?2wa@qF*Xqb}Erk%W(YK#>UiDU(h)Qc-{qr&)d z8|eO-tG-%Zgdh@_0K@Pwq2aCg#&UEaoVvEXwKMCM14Cc~`8ialR08=JgLT}CD$&76 zP)Zeg`sg~0H%08I>3R{sx=fNBA@So<#YtSfL`#{{(rkao3(#%-@(coc%DAunXf0=IyYmmy^^k;RP1 z6sPsvExw zZ3VW<+3WCv0NPUZTaq)k)_UN$+LU|bF4ftCXGRnecJJZ}e|0kctH?8uj>v8OzF2*; zE-6;f5W1q|@}$zJcy2iFvXsx_U)=|`+(ED@&!V;9?`i13Bi}^#WEd{UP?LWVe ziRux4BR;rksH*4h-!po6k6wt=K*0CyJ1DyWTD|-RrbJ|O;WjZTlYsV@_qxw1ATON` zoIew`esVRTbiEGipv@WCIL_~Hd6z-dHG@+i0Mu7AQVpIOkqJL797Y+vet&Om$z_*N zyD(n&GE{=EQ|{CAZ8Q(+N3KZr%c_P_L3iAJYn#pN9B-&uT=Q+-s>!MA3p0RyXZ_~0 zd#`(K@fxf;VBZQ&;rbvxuze@Xyo9sm-m+2m1#qN141rJf5p+R0R9^HU2{;D*pl3Cp z$gz08j0|VsH2R)CU~T*v{N5cv$@J`Z%ySskjqFG@ybKm4gMk*wRWsseWNR>OtN$o} zO3ct#)m;-b^GJ?Z^E4ggJ=sOl>SIw-y2oWkI$>gQGym)zU>0n}Av@<5^Lc^b>jOCI z3^IYT`!a>Cd`bIi5UxBl{h}Z_C4$C$>@E`K#M)-|DhT!rY#ay5c1YT4wex&(HOPlJ zzWm4c_K69y@;o=!otxI*Owl-a(Pk!e%EIo0agoY64q^Qz2IXvYypkLv@NGm2O+8jt z#|Mj+AZ8L&;8cy4-rrP!-7ypu!S(bj=y{J5vW^k;qWCIMhwu!j2r1Xx)`T%2OR&Rg7+z{9ZkUKGC)OZZ5bHnx^D?+UjDR~ri*|h=AT8{a-Mh1zCMIE z3@DBOxXPe@($c)WEgx5+Nx|yit6G~0N9eiN9J;FP95pUc%E25rLr+}Z8L{&eV_mEZNkVbmB#M0bfL!*ltf z_F`dM=MDhzB?Vh~F<9Mp4t!W!Q@L2}Y&=(CJr!ENL$%Tqw$!8wmy>q_d$ZW3=y?E$t0{gocR*`hI zc#3=w4`d-7B%CijEVJ}0bYluQ`h`wdP{45|GEl97un!dVZ%D}nH;1Q8_#w^_`JNaS z@OuxEJzKbO@_h6$nq^eY_`casaatf{wE9f(grq{sPY?KOtsie*ZQAdv4H%p?I6`fE z>)uLhJPPJ*9qESaH+Ryma6!E-l&|1hvd&1{CUgD#L6-a-rb>pFkhaz!m5$F$6P&OU zKyrpp>tMVCdGtDw{t!p?OZO=3Im{fD+f+9f9H?@O??D9E+ zZYCDldNSBhc$TCgl!6z{NsNEmD_~%HS577}feMT6Q-=M^NCyhnw_ZyBjK`^kY0!3( zafVvn<_XJ#6fVKy5!4G+Rw6f4xZ9KvB=MMKuy}2(#CbpYcDm#Q<`^yzgM@ckUWu#v%+cKZ%c1Oj?is*N=zqG$b66xk zW~2X}uyTQ)H(S3DdKM4}P z$JjB~Fb_4zjxz^8^i_;ZumSRHNVawZWzhth0TH67D0Yl9L2$uSJv9f$js$_y?f2Ue@h+ME8O zL%PwNyAxGP(J-3?;~BuihLRtbng%^Nsz$UTaG!`{7Rryo$k_TT4<}p z_)e&iauwR?dDSc>2x-#bR`aRMS9Jo{cc38_CjwEDBM?}*mNdPf4-y^=IP+8CZFQo< z9G5qv?T^|4Zz5GE^*U01Sp!raUmT}}(OOqAk$@_|^ zsx~&<5+FQemNfn7aQ7WcLSoOlh(7z!2RtnG^6^YvJEjyC)-6q?CHL6rgxVN=1vTB~ zD2MVVREA3o?0SxLe_MN*{@=N<;y&oZs0@~+7nO2SCT8P+NCU9yT(`Git6=;C7*U47 zRqr57>cx#L=vLTZ<)|RB4E6Y1(xA*f4&?~V@XDa$G!`R`-d_sCEQ12T6%&1$M zQYp}VUxYt9rc^k{Z@(Q!1^(7A-~zJYly8Qi$ri5Okqu8CA2^;?xVG4dJmJ#9__z#L z0n5T1*Gdha?~rNJv(O19+@9MN$C8ad46*y_)~cBp38>szoao?z3hXVJs2Z<2Gi#=; zyuIO=yFavleu5Ctu7TCOgv)Bv0I_QssjilGP(qNubn3=@lj77}R1y!GwpKgE)4-BT)a-7h7?YSoYD}9>evK~cBlZ*X;Ya%Xq{ z7^+kq$*~&dSsR}&*8O@)RHbm5Aq72uCGrw?0Wm>-Ak!e|K}+|A@8cs2 zF80H@H)%Q5zkwCk8ayM;Z6~t6zpvF|z6fBH1%#&rStK7XbPftrQ#vL_TZa(1cs1g9 zkaF1jSb*faTSkvK;-jd(yFBPLqQ9KqsVA=~OJFV)fGv6vg48>J{}53;0d50Z2i!eU zwZJH}pFdJ5oib5#roZTvG%D7W*aL3Isa#1Q9scW&rThSEEklIV6NTv2*u~FW^NE(G z#mgtjMp_<wkV;q<{p`ER`fsF#TOD z(8TlKkzLZms+4MAt~NtHLtZVusCCQL)6be}{FQpC?}!5PK;o!S9mqZuOw1go75`zr zMyO)cNm%|sJMV*&lS=rVg%w5bL;TBlY39t}ry0HP;nLT_!G9T+E*&F%JSt(Aav=@aI2g|T5TG1Bwjp-N zdThPY;L>|r4u{`hi^!SY5YF<8YrwwpkMnpOVYhrPMg48U&4cE$KHCHYfbSE8s|5xq zA#DBOR7HU{U>e;dwMYliLw@%|8IoO>1eYLD@wIUfRB7HF{188GDSSfBWDM?(a(;g0 zwtx7IM2Q?Io8>-xRYU0Sp`g+P=te_ipPN636?+E=a@Q;b-c-H7ze`~AEQWlTp6<6C z+<5Bf)kv6PrN1Sva-k1e?=XwVL>U1xkhAjp7b z1M+po)4M0ol`b3zZL+|ta8f&RNcBqhmiz|Yix!gfopMT9!uxfh0Mpo%g$Ws&gq?I8 zYmhYFj6SsK2M0?8Pn1V~46#?QYc6#W%Prhe{76 zOyH&OLN+R7Tya6fkg~>4XQJP15aA;z>-1n}^~exAFfM|`s2yqYg#%p+71ZRE6SREa zH6A*&RbYz|0^I(1d`8TuoTRR1q5G=6#q|*0&#-d|z#GN!FSW1$K4zin?`$q`?!ID= zY1YM}EJQFf)*9UN}EhFn1l}eHqB3MjzA}+7 zAD7!Oo>I7oMGe#!kFJ%ER{(}hdbx-Rt;d3*5;ZF z*_Y3Q4^<8L~UK)6()%8zK#AI708dP@Wp6a5z#xd6-pa@pxaG;&>n zSZUq*V6cG`#xoGec6Ta>^4aBcf&6rdE`-Y$F8_FrYrw*+t70QY*Itz2x&|rKdS*_d z%~qe_Hcfj4Oq@kV%|n!)QvY;jB=kPe zYJorSxo)nO$5hL@dNb~oGPc5Yq&`YL?MnNI{A!Ri>kj}4oLnuz&mC^H2D>k)>e#Au{;1_tU za$N%Q!hwH=0UAD(E=wOuwS(^B!!DGN`zIko7GIVpTLrXG zK9D)I_rgyUf&{!30O+N@lPQina3y2mH+<_`!TjY@+xg6mDrib9KVxQ~6`dNCnT4 z>JY&SV7B2&K%+P?nlI=vdZNH=*%P1bovj~vqh#X<{(>Dx;>#<zCWk19Dc6bicV(s966e)Ti81b zF7H|Ghf>uA!qeW|6x*)dNok<-e>|Ql2F9B@Gr7*qFz4P;97Ch-4sKTxyo;INl24D>SC^z>`xC$pB3=S7wjyhlz z#R%orfY=10)`XoV%z>Npt4r?K<6{mGM)cr!sqF`W>=u!0_|`MoS)&oxvtje!EpqG0 z6xB+K-*4I2PUbW*k$Ye(M8S(>#09pWhwjzo;?0dN`(QA+6uJ%ZK??L;agEvTb6YrVE5+UxfPy9Cg(-w?kg?O0B+xic!mX zU(emg{$wa1_yf4+)L}Ygi9Yw@@z<~xPPlXkS!{n|2n*3A%kL9Pw~P&2F}hyjC%%+Y zY*Xnh-d>fetejUdYZ~D&C*C)rIGLUh%I>{{XJV3iMog@%ian`7 zc_^lR*_x?l&&ktIp6nl$685RzO)5!UB)a5LMsCa&Gx12JZJ%a60KU>i;v=>U9jC}`8yRomE&>I!O(GGo$dHm~g019Y zB7XQ$YjrD2rpm9}FnP#S4NYx|fy3cF-(oxEt!(&DoS*aVsDr)3B;4m+gtGgYSC&4U zbJA1k*|7U<(s66CKxD4&T*u^UhpP=vMyQW#_R7Z5MmD>gy z)DCWgfk&kcV59^!K^T`fL?F^Z#4?1%bMG0j)XBYFHFH0b#}ZM!I}29IGKPl!%!4nkA-o>^2PErapRz>(Zx7 z?>YHEioygW?Rkr<;Ocrca~SeVbcjjJ^MV3CZNsM^SEIbe5t)$4r>OfZNZF0qcr@2* zFiAo3m_eII+s)*bkTCLrK%L9?U*CXDLYDhz+|$omu-a)t6jdIQ8)WleUS(awm6 zvf?r@uU1v`9ZtsE>O*4)#l_Z!JEf4DbF_g1#02)zEEJ`0BTcQXlVFy!Bp4&vJw1yO zs9RcseS9v#NZ{)YK_OVn7|_j0GV!UsI~oW9s95%r_nbS|BbMkLnYsRxe6G;iiprb$ zewFMRXPaytO+S@L(1nQ0V+X#m5sYRCV?L3X<3{Tq-KUx%L$ydXl)_w~$9OX`VqRSr zQ|AqGbXHVLhFq}gcq;vO+g4@}67h$LF6h(MtMYzuNd=)lB&9ru*e(O4R z7ke~wzdn4jsRiSI;NmU?q2Ax@8j<8>UsZV40oJU!f;PqZYo=9F7t%c}q4+3u-TElhu zZF~4LaYIlq4FD<^?76-gl5qkKeHK_EeFvj2GD%1@5vV@;my}MKdg#{4NV;)+aPHza zm(id2FuKt^#q_H4iJ!jRXlqM)y%Hm>8BdfyW{w+{mf#c3bm1oAO)i1*9XzT+yq3+U zy97t4r_X?dDF~9aHD`xvth)S) zLS~!cM|ue0AsvY1W%>8|ykkoS<$?!(EZW@pzDDzA4bznKv;V|Oe+8q-SZ4%lt*N(! zhFeqpE;?`RGT+`v3opU?$Ih6I=v*Yc9@&zl7QtCgX8xOPGL+~h(r{b z*w~~!Ax_u=lAW$dNj<&(rr5LT^%WR>5m_)>#i;_BJmb!D+pM;+(bl?jPdQ-D5vK1x zCS`u>R%)UrE@J#kdm*2PqxJrGDsoL7;?3Vggb8ZCxi79vY(qE_!sIzq5kK@YfBw+T z9O(Y|`HTMRGr`=!8f*n8yrw&Cgkt;?1%k)LZ0`ILxf5*VXsRx5bK53LsJvL&o^-N% zQoQ)$vOz>7(=Sr;0Ip;RN&~vyg?OH>5gL4B;7Hki2EXA;>xAG4W*{m9;UybLN=hc> z)o-`XAxhrfxb#y!ZEq$g)9|DgN zaiB69#z}egE^@8+Uo@!(0vFjZ6@1 zrDu8O>l?JZylhNvHAc1GcoRH0EM7LNascI+Hllg7f*n8WseA%SDC^~)9`@M2{0NA6 zpOwHMUIpJ=xC@@P#-?{l?%o}1o23+@eLDX^9${#kD#?jR3n^&^LXw#K-Z<=JQ(Ov{ z{_ohM;-1~JG-bLL_^bOF*z~$G-jv*Zt{s}ZUeu8;_r`ly^-qiKZ8?1q9qB?f`~(X7 zuUIl+?!Se*hgX2=Br`Ls_IO!Nr{kvY`N?R$ITW~JI_?3bZ5m|ofjrHZvcBNe@ih#m zgalvaoufN&(Jek=WVAvzVUk{c>!MA!dd!pg(`ve%SC3uqe(Y^(bWj^A9zCM@js|#< zCT}@!pdo%;Z4=s=&m7KZD^;yCgvI+Ctbd{IO!HlaNulP9`?p_n*w&Lx31N#&$kaJ} zMxP618Iej_=Cu#(;XQc$l4L!mc>ME++V-YtP=%a~4Dl{^&L*d$96kckUi zkq57?&5tr8nFNT0T4!4bbratlPu5q^Pga+@v$3r9LyU<3U}!xkeMV14)_Kft>Oqr0 z6ZXv$VuY&O3i<4gyNHOWV$I|V$eOaJc2ln|AEeeyE*SjC|M$;$FOkBZU3};2A%VI7 z26Sz&fgGxY0Ik6>wUDXz9uQmxHz0YyZEE;A`74sU{~b#bduZz=P!tOX6pi^dA^so) ztok|GC0Egz$>Lc(bS0v)A_(8mM?*rAq;#%9j2_^+@}ybtCg3ef2LdD zT(p%RC7tf+;Yq-QptxVICVG3a=o`OtYxKKXJw`ozja=g+C>5KWPDu zf}qCg!t$RU#z+1H+#nrI6DC#3Cc2cXa{jso_V%|9}PV-~@uS@V@B0RyrG%YlT_{5LGG(-*q9&Iz8zpfulbLx8a#m6U22DQeo(PO6*rM*++xiK9i3TnBqiiyvh6Tcr=<*Gco1scjm`~VA#Lj@o8R~DFlw708%Nz?dEEiPbkL>ueMVm=Qo$iZ&!S+_W^s`Hgo*&$H=im`Y1aSAo^QWAeJ^+&x5J&u-Tb zy9oVAAznu*<4ZSC{DVNCy-A5qFwLB(fP}CZ*M%|aLx+qz{82T^lu3Ae z3+#4Bg}AR;vspdJzxQ^(Y=mA!1OQrMwjmUR{S+*6U9x zJg9O;;epw$viI-*v(pjG!*U|ks*MLm+Tg~=ZJs`RmNt=)c+TZBiA{VrX0IIv4*yW&^zae-l3=bfaB)Q zt(J2cO<0@-M{^|@N{k^wG3zowXR09PI#DM!m$bZhxoh#})}A^{5J!mJ{9^EC`g(X! z+)~6#nb3^%sN^3ZOJ@56gP#os{PxK+;_4?PxC{4&7tvH z&Y^)nlNASu8voxt(jO=RjU&WDNq=XQ$9#*>jtnlO+K_7Teu{1vJq&Og z<`JBGdO`#$G+IC8g;g; z%GvM5F1s|y3bAN-{}5Kr`DlSj*oIBEl_Wdo))Yr&Z1f+e18op`jr={na!2KY#vIfWLyLZ*Sf; z41^mrs#32Vu0Msv6=>eDliO8dK~N~x@=Y-8qBB%HS#N`6)l(8O`7*n&0vZ^j`O!#S zZ>zr%k?jY@bQT0Yp`^!F(|gog>aOl_7-!>NT?kI1u}dG9-fk4{hM=xnF}{L`KU3^^ zFMl@J$&(s0a%`l6{SKtra4fO7fnC{G!I}Q@P0OD^vJx(vjF^=XA#q*wN5vpz@C;V4m z6liU4CBU$1n!8wsW&BCa*<#!v*dxe%vZ^^IOyPixE!SEM_Z4|iA31UwV!8PG zV9+de-i1}YGy0Budf_+9b6;1f6|So3hrwOg-*h`?yD{ywUVy6Og8|Og zCm|MF8x3$WH4Tjk4;kZ~mXk8mbj7Ywcmv2PqAB#=PeE}CVLTSN<6+*WII(s2yMI2_ zvT&@%b`}8C3}qxE&sg-rgkbk~JzhF-;=~>3mMbC1lM{x1$St{L?z{h)0aS-6v=?An z1f<=n!0~%i=kT@7h>=2X-SI!uLxh(vOqSJ|&uJDQzvVY3_dujwrB<7Ry`&B?#rw%)VYj4X_ z99VgH*MWRxjf#qTvu=($P z#MSM&V|O2;%~=;+LCha?xvAE2vI_nitX6R?HLK_<@Qwqp$s2)Bh`E?X`*%4Uef*Du zCCO3fhsVO_$R{wEBvzi?c?VKR)lVvfi)fXWmR?~TNJl@~%XO>2gdqLSI!Krf6*|LD z4Si!rplX2Vz5Dm1PIFp+zJi)8_)+~oozuuGf*R0oV?#%vJn5U)Duz>^|5FRhxD|H8 z9T9DUW%(^5E}Y_Dtc@`VL0Ad$2Ov==YJX-$NAb}Yr*g_-44U^Yjp`jPpHP*Z=Xh6FRA zfWxhQeFlI9-)_1e$?mc_FXipc=Cyn0gcrozfX&O+G6AfxwUrqt=#(HTl{=+i_L*@F zcEPkrPoDwR)EYjpMNm4$6%C6o6%{%~PEaTffM6{c^cv4MHeYXpmIWBJx`$f;t8zV; zKpTuw1M zE}bj&+aIw+fi`CXd(0JXt+`!*34EreqqA5EcUWiu&g%?NVz0rqrL!1?fd3hFADB&3 z34%msMUh_*AQ!cK_U72;DfmCRV4(IZ_J~82lsEoV+K3dMv4&+^8!ir&ilw*mcmYDZ zR3JfT6eijsu!$Q_&jqy?H2NIDUqjfd>kSBOX#|H9oF;!H`14O!}* z`?`Jk`-HMbE~(@R&w;>1AmGYmuN-)2Vqtjh>^Hu;C#Ihb5#+`j>U}+i5o}}MKpyGD znvZ<}dj*nC&cM)yuhv)G_5W-p-iKTF5g$Pf|8h7Kd~jfLAeazvgU}Ka2o8|f?n0c` zw{MByk#*T6A^VD7!ff_3sk!N__%1QA?K|q$K_Ul7oauW6mxkmdh0da0 z(MkRQqZk*IbMF(xP|A>Sx~7#in^{vw6-+I71DhfMt{z#)mim@tT=>0>a9UY;*mz~u zgl$p=xHMxpr(eUsN$5nb)y~Xc>VF0oALpUpTgTDX|Gd0Th~Tmi+i>u(+fN&7&?evg z^@EMUFZlx5{{0GZ&K1>YKhnubY%=EB^?8o=tdSmU7xCIC7-ZN-N_sBy(ZXiP>b__H zR;k?9D&@lfC&Z(B8cYx`BO{q|fBIdNFS!kun(3F1d)PcYJZi)W-!`vfUuQuBeyz0# zTwVeD7{$7qhnihU!4vofTj4tZeU}A!kM&yWZurs4eT2%&%I_B* zL8WNPR^R1es`oje?s2@3^(j;vf5;3+(Gcb|U&q`|OPJ`q$X=rV|4%m6+ z-(64!g$@_2F2PKJklc4nwXldB5`}gVhR8~sx_8h7)&uXl(vE54)B(;8Ge~eF-m?Q~&Jr zyZKuudurQWe#i5_z*EBpOZzpzWW7olyKhjmvTN_ffl*imC$FVJ$$z@xHf%3A0)ip$ z4%-=m&Sy^kl>cGtz2m9=|2N=BWwa^LQdYKbl6@3qE60ee%ARFL6z%NIIcDN;%(5~v z+SbWBh>QlZQdwo?e!hM{^#?@=MmoLykD>9xSrQ_J%8@owd)A5f6BHVlD#nh z=cfoj1G_X88}4IQy7_>cYjI@*t?i!Xg$ywFh>v=xu=wlFkE{Rw{hOrVwCjKybObS} zQ9lCdwU8kQ%6~B3;{)zk$GCWM3hrygc^S3W&hn~Qw*qGnBN(}T?v{F|1RmR8t) zY6uH)kTf!YNW9m+2VZWaV{pmNQ9V&J<0YriP@Z@=JgQfrPTT0_N`rjU0-G;KrM$;8 zNx@wpU-SZhi~OMEUw4Q_y};y`fSm-CE*~IIrvqZZLv}oMxQa6@3NA{T+sFSY{4@Fie*SkP`A27Qq9{3%&JECjR_D8OD% zGttx6-c|FlSUIq3;T#Ytb`4pVfrr3Kyg2>N`1xIL{Fg6Zkaags9A}_mXO7#5N0=2P z-+JJDXl$5-mM#L;)Rc!zl?`dQ4gbpYnQ3=HoNm5>K2XiKROx?8>b;Ss-7lXip5Pvn z)S(VElm~hS-8)sd00`T~u!cp$G1^XVQx^n+FQvZg-?q6bSp3-ybUO^*x@hx(KNt@+ zh+SB#z0C}hM*oIknOe+N!ohJs7fvi!7Za46y>_Axj7poZFVqwnfDj#bF?91!-`{$C zM%-Q53KW^?F!9oX#mz0!BGMHX#!N@wruEf~@sn}9+I6f<)nSlVaA?q61r@3n84s-y z5L+6vnoiwgR0ZlJ`Q9)l@!vwAX-yR{!g#oI^Y(&CYQAosaaWdrBRv-a<{sYNyc!4~ z8f>A1u)zt}Q8ZHYhracw+R@6`mIc9W4x@L^Q)@+k`%O?ya)R%6G-zc_E52p*JAt4i zvZMl(_Xfq2>s3(!_3k7YY>_CovO2|aeq#ju!QQMR39kky4xf zAL&Yi1N@77+QM^nJA(vr5s-_9cfM!Vur4PBa#WGa&^E{C%ba^R#_C=5}yKP zNgHZUPJ*%qZ#T8rf*0dwP0b~XUhY^N(^F5de`C3P7*q{5iR#c2z5t1opE6Eif&^fp^gW(67B} zDh;BS*TV@_PL?^Z-WIVoJeE~MnIxkDE(n|fan^f~y^l-wBE0xVmWF^;BKIFq7!k~^ zVB=xlhz`i$a0X{KMtO_pFPL5ba?gIAYtaQ38R7zmpjOzUc_$lV>peSetJB9b{Y8e> z1D^kfh0T9fZdV^*jU5t#_A6*14Q3ZeDt?3kp(+}h%{suTKd2qO$nAj+`|_^loJ-&x zkcX1@Wy$kOg%5gf{H(Nc_W=kFH{Hm%wqmOGIyG?dnjUWUftjLG+iUr*KdOA^3zPyR z&IawfG-@%*-vpC5Gbw$0$3Cy`iIcDc^byetc=8Ed3U0&A0={|wzCh`GM3|K4gfXyvi53kpd#Hz~^{I_w6 zStWE0+HMSMoUA97z z{80zKB^Ts)Vz4^J3kF_|KRcJdgRnx(spljjY$V8dY5_WV$qGAm&4Ip0#m{dj`0mI5 zc9n#&Q!8f}l%_%92PHP2w}?eCU{!Un1J7pS3ec&Y+wZM3uuL@DF6S8*o9t_!ZUR=L+ zu_ZI}*c_yCWqWI3?#AKDp`uS< zFD23>zmP+k8X6n3?+o^!24yCHxf}n&pZ5{?p=d2JNhc|4=4vm(+R1vy=e<_P88uh4 z$Y%!XSyM-6?ejNy-I_*RLN%tq2QM4Tt4M=VF+$v0i#dV9F;vIQYx(}eK~(RxNEDYB z;H-}=EG)$9B|h(Q3G4yTuC?6VUfkXbBxhp4&~3q{J3%EA16T~I1{;4GEc40>oBmrI z({3?JlFrNf1wBogs(-`yPiCcfHJ{DYh5|lKFkSgk7=by%Xc1;EQ;*qou zU@8^2fQJo_hAX%amV<#N@#8Z=%!ATseLD?2;k zmyXZb8h!Y5Lfh8xCwLm2BPk?H%%)VWdddQOg(i+{C*2L6Ln?rBDBrTC>L66`ep>rl ztWO(#P-&}A0=EK}4JI`GFlU;w#9Zo|uGX?WYYVqEe$#ZQFfJ((V3E{a8OwW$7)3@W@jjVC@M*#e3$oZQCV1=q2 zgw{W5V0NJabx=Bpg2Zi=ks0#TZis{@W+cG&k~7V|+$b^m2f%3Ebt|D^r6ytb2OpL? zsMyH$4ba$K*#7vBQu$F=*xRjp^^~OH9oi1d<7cMF(hFc-u8m{q`13iXGI6vSXx%rOsOH} zWl_2bpshYJW4ZfwDtj13F9C|U6XN6G!g>TSRSA+crkRA11@{vq+_sdE9ZSRY&eUe{-)B~8W!Q8BSMst7m$YtF@#s#{J?IODf$AP`On3O1(Ewgi%4SWt`8mg9!~6{3a1 zMe;+ihN*G%!`*p$Lda}!r>Qtb&V3Ky_;tIWOgq3mzfv%wH^g-ot^4A+0-KawHQuph zUzzrwhk(F?98l)+s#nUGG!t{MPZWct5ObhlRu&I1bkxhzJ>EossHz6b~ADe0w}W`-LW1FC@5Sc&P`Cr5VUR&R0e&fldeo(&}`hFCK8 z+JE-Pr}&@q3+?fFLzI6A27r|ofuW&I?GVMyc5plJnS zzygr;e%gJ&JG2e7AYQ(UV~{dQx-S?XP+!hRhT%d^@&RI3wOeXsI}!hizgJ&%eH zTJ=17Y89fRw}4GZ0P@6Xur<2{NF2!|ZR$fy=y9I7whu^ttW6`pX|H-C&7=M%L^1hi)`#d@dS0OYO5B$j%gTPYz4e<389Qk|~ItyN1Hf9tw(TS=(KwB<01k0dxv5Y~!*gY}#~?%Ch>)xMN2w)DvcaLtCotGxSJXXAB3S zCQ5q~;B51tXlPH1MV<<+CwD*KG#7#^(0xyTy>;_X+vMgx1VU~rJ8L_m)4qOA#kO{@ z;jPp`;zbkv)v43YtA#ayfSX{%tmC~29?Q43)6-K~9l!%XW9+EoE>lwGCs%%N5Be*; zshuHbu~SB&EK9_~_~Img;#F_x`EhQ7iMv$tpxYl%YuT~(GGGlOwcCgAZlk}!mb5in z(_jO5G3p^&7|9?%>F(XT7u;9)q%~w(=@G=5;4xGI)&2M!3%U!4XeiMT?= zoTKQ0)gxbe9=`Sc$A#`6O|kWl=z;aN9d*e5>CgtC{P31NXxZVSQFO}PZ~O7 zTIg^h03EG^Z249=@$spVJCnd$dPVslsGqYh`_|tv)IPSVVtMO+etNErHVyLBnIQ^y zG$ykPmeq}*ZW*>z7VKE7>cfsx59J|QVVH4VM>9@nDODlRro+E0xz_?lJDi}ej6!|f z2RC)TTvG=-_MO{AVV#E(NY%`BPJ%L71@wUNtzU*iu>~m71U}OG?=%@O3}+<+T`W#d z&SOX2#*G^_8DGOFN}C^e)QXCV2EjF<)PJnSq;&Rd0~p5~fo~8M37?3YML>N1V!Bn` z3X_qSwNie-v?vI5JY7>?kJD&shNsb}nJ|z9I58?D@rU5vc1*}f_A)7r^$yfMu~6vM z!vsrcAua9vM#8+jgitNGCk%iDV>dH1XQuk~wKjy9$PupO69 ze5P*%z>bnb(u%qUi_>GB+NVyRc3gOd07PsJ8;$RWw5Hhm03hnOC!f6bYVuxD$2G)v z2hqI?tf*bZK}a3US5v1|K+_uy zk690cmO;4sA*#EZ-GXBLP2eH_S8t_~=hr7`E7u6!L>&P1jyu{GcysYmAU_vBPwDLJ zED>2L>=Kxpm!0#Wn?NpII(Nsoyt6gMqhN91S=0rq9X6byjw(^?af0KoX}tskNRogU zYKG848D;AOybh?@Mr$+>c3<|7#~9~{!~~EjDF>ye$d7{kh|F0*c;HEkE8hP3-^-WW z{dX+C+5#*bh|~A2BA<1;rE9~)j;xjp6T8(JDV8IVZrU)qL$1U79RdVuYgHNyI*bTV z7e#@n%P0$WE_FRv>u*cTP~W+kd`ZuH#K@SEB9%P5LpTH>Ec7vw{f`U-OU=Lqf0o%i{Lhz zUKiVmW%%_y8D0v>`!xr{SgxZ-U+p~#N;8BydO_Ucf{JTxc-yLNj`|CzO(GLDk}-yk z^W*Btij}`!F@62{bG@yDy?Bq%)4xSeZ`x?veW6mZlg%EMM58Jm$mu2;xipEE4#l>k z+qd1eTiU0onEl>nrvz*%<mbefPVk`SOWVFD*V`qLG1Rgp?Hs|X=PMND?Y@DzN79|Lp zkBrg36AF+CM!akMc1p>eG7sYr&)g3|ff)B~?mck%n{u`To4`ru!LuFyx`@AoIk@F0 zwN!`y;7?(BuK|yyU1OH=(|gJ0`N+m!s|`Q5gajpT|4KJDBA6oZqZ;;5;lavm*iN$| z_uS)C!1tEHMbzc(Sot?V({x4QZEWH^4VjK{o0Xk;i$YC*T9~HI^Z7j1yWkfe4)hIm zcz09`ze2A+3b~7F0JW7DkwW3v%cMVOJM3@4V0;*0k2>~RZF_PM4C&Nht$Jg?phe{_ z>Gi^a-a^G6e!3Q2Tu^`S+2%AV7uLRa?_M6jK*J$R5$clkeW_%Louyv1kh8;JM;VCv za7xKiaAq`803H)_eWyV>_v|)bwnh6o3tJ`0PdKeDND`(fqK5L3o>A^1KQMJ`+l!rAUI?y#ywuTSy^F1eO`;|*-_cf(= zAqV4a6t>X=&uZS!>Qx+xL=%5C=Vnv1Kx`ucqYekf!(Ciq9nzz}9_H6kZ(L*({$hSK znkGkvGf+o8<7#L*KuDS4@t0j?CaJ4*7%cDxB|s)x7}KcqNu9fYYn1vvX(Y z3IqU`;F;g%!`g|`+>klKOe#Ej|N8BpE}c&b@*CRrRHsy?jZUI7$MA}dNHoaX(jIC) zj&$_Q#XY$-jySE3hdnsL_R>`NSsA^fT!Ep5tqu=!vqm=8`}K#FJc||YM0<9u+=t)= z+Ar`(TqlX&hB2u-30$fznv#0gVxv`-LedZV5748NvqeXGf1yQPM4ePmi8h++-eWZt-BIiyvyw|t-3J{r+($CF^K06@ z0*cF7AT?Rc$u!F#{KTdxCb=Xga5|7o_ zn?{8vyQ+4sw)MY28GaBJnCT;NtQ3@#1o>QIXs2G1G|>sjNN@1NpP}>9n68WL3VSLW z$Mo9bb_@9jEewfXzkZz#GsU4V(VxtMX#OihWKVHOOBLYn#B>QV~^^c+giZKsk)6XRB9guL?=oXWPH)B6I^E3!T+jA#(P$)g4Fv z@m#-dE&sVS)c-RsZr>D4B+CCN0X5%0WAB}ILuY?~f63uGC%OdaA4h@&o~%cVB*7HP zdT_T1ho;&TzjR~id&`4f)Eh3Lxhv2c)<$LY7Fe2X<`W;Ez0RotDO5V&V~d#+?h$IQ z7#D#z-JZqdxSG1cLa1^2!!!*U+^qsScxwrmY)c_LnvdLE{CyU2Y9$=Ib&&(9brby) z&Z~%%H-`PYLdrx{{2SW&u#32Ta$sPW>Ms5yHPr!AA1mT)wFL~rv`^hWtyJ*Q!;&iL zg7UnX;)z)GfB^>*^9zmANzR7$T=tb@fc+nKbXcq!Q2595Lgiz)puyTK>pB$VwE-;} zs{`-t0Vq-s!&T=xvT+Nag~V(Lkd1+ryrgZb5_m-m10TdG_bq<-o-Ot>sH!FAaR0Ti z=luWvZP49A|$bW%aZ38oK1NFeOn2J5#kG8AP7S^Jz{e;zV?Sn+W99nj6o-!BdVYP@16B9dq^Nhi%bNT4(WJg&B(WJSM>GmY6{&(T2+Y& znkUaxkExNN8o*PE5!wk-%>-BAiX#1|WSuyk_B zIMCI?y0Lol(i>I$O@1Te>TV}!-NV6vu^w@KCMtfGtjwP`&@}Bv3#etmeO(M@A3*bZ zF&N)@YolFf9w&_HnbCNA6|5K$L08ZfNlZjt0fj{9GVaQmF`Lo7EG%3==%xa)Z~?gi zSDFMooD1)A;)}$aH*ad;vI-$K4NTk#QHP{Amcvwm!Q}r(KkC0#zk;?yrc%*hD}F$NW7UT|*-;DI9aA?h)irrX_gK!W1D4bq&yYJKt~sDjr$< zDOf0V&t6*7jh;l&L+aweE*PYRhlit%1Kl7fDUD#tYGoxTnc0u6j}Z_coX}^=KJ3w+ z+OokC#w^a62U+*?F6#udJ7#P0Xe8 zDPBkZ6*MZioaze=iuiHu_ipE@a5ue>n3vbVw~{Ou{4a+_YXyP)x$7kGml07>;)1Q7 zmZ}1&qm|-t8F3RnIaQD~hW{L*k!M)xo7v3JLH~}_8{j}127MFW&;fEu7|7k@uxZ3N zAoNMPZz%^I2ACT}(QMqzC6GcY{3=mH0k=6R)B$cY8{GG3G@YdOD6`pG21ZU;crhuUslk1B?jln0mt4)Ie66Xs0H=}f{+V~eMg=? z6)jYAMFdJ2yp}hWu=HQlEQCojWOE@{5E~9k)Q6jeZ_JExqc)7oxN+pIx!OhoL&oWi zRKGzRqfbzqr$$eD6#`xz=n>YrfJYQi4ou+T1gDY|7tul898& zp_ta^+PA29%7aaak&Ad+;E<_`HlNPffmYh8{U3N>aJm~~Fs}<97|uRf!+(0v-B}_U zgbugUz<{zuedSWa>s$_!Sl=Y zkGO8*{qz2LZu+bCo%Tzsgy*cTk96Q^pT#%Ntv1%p4e16ZN>CF_kAr`3wNupj{2&Ch zaL?%j9f2xu210z;eOXmLkCn3HvphtwiNYfGIyj4nm4T8a43!3;w~sa|&eM#K0%TUQx-DM{Pcmp0#2T?g4d~EgK6&(rVfuFbi`pumBO`_^glXe8~)3;*Wt$P|5zy7uL zS{lZ48CcofYjmlSZ{>E5b8Ae-E&8^;I5DLF3YNC%Kd)ZG$?|JMysZc*x>Z2^IRN&3 z#Ds`;`=Q$K(}4eQfzMj(cvr8)$lK9-E1d@(HGror2ZWa8_SaM5v`#3o?>)15ovfh49hO8xE`0X8 zV8|_My4TbAvhmLokKW>U4+WTQr70w-L^24JX?!7aNK)#os0t-s5_oCbMh$n)PFKN-mG<+#Xa>t`m4A~_NfjK) zMzj;NC6d9!bEK;Y9Dy&saWyvmLI|+3;r%D&ovdP zj{V7cWO*botj+Z=Cdqm=x;}e+`hgk{LUaF9c>k|Vj+AUDGTaxx zl=MRGn}A(>I4p>_cmF=Ri45R%-&q zXD!_IymO($c{X~iHM?{lHLls+A7_xc1PCN5!9yD0I z+GU5Z!;JM1(o}71GJ9Z_ssn2Z`M_c#=&(Xx4)|XrfHCFH%6*8?iO7T?#6#SXN%+7G zVBfS`N(Eodwh?2=E;FuIl#BGc@G8+SRa_8_BW-fzCiDF!L3mKRnk-3jHn(Lg05H zT*!~Z)lY!EgoN*dc0@sF?br^+l$0jH3AKec_x*6F!HcjoUJJjUhZu${-vQ~+#GO1} zkF-QU4=r)#kv(~V&_NQ)-+K6nvRy~fYQgB=$eR**3AQ$HKzSGo#=Y02L+lflI%@@~?J^1*h*^XOY8Qhs&z9kNd82bC)+HnLjQ|m; zK_`*_^A%L(dQj?Ilww<76X%jXEmcT6I$!16ABcyY{Rv3LAr`|GR9WSZxQ62tW52L~FL&PZUE z#vyVxs*$ygi|r(eb4=_qvfJJCtiq2fr$OeT;%j%r0a{9Rm+0DgRR^9ivOFkw_0Z9$ zRo5Us#_x!?Vu1Qc0UjFhhZAEWAeKDbg)@?$d`M?6+J`R^P;4Lvbra@=7>@YET*EkAK^;`j)P)sDiqKBS^G_fD{bo3CPhPsq*BGL+cFB zCzR)=y#*;0c-nCq8bPFDVE>z{{^h^$G$o2(PfbGkK}R12%Tw4j{x8SIGXtGpJF&fM z=l81XCM4#9sy-6Ak!ciBRAW8j`#iTEI0+`Vf)L(JB)eA{7*T%>lgD%5*Aj1Srq5+` zrwka1JaUeJZF7r?HfQZ$2NIB13+b-<&?UTZidSXe=HsCU^RbDAR2Z|jiO2!Op-aLlZ|U{a;|E-vjh9%d)4(1wpd zQ10;_%he!iB;(#>qpJ`7apV;6)o&EeFT;xOqQwK!$IW<$|G4EY{saP658RN&h0A=( ztK3Es3=hW^*i6@5jIVB*?jhFsl zq)&qTx;DatibNL?pf?#YZvPFsA|SCS8=Q|3F)&q&;m6+&RWqQI#lcClPLk}yti7x- zj+8$l$n6TzBY_Cgz;y>t*bWQpzasA<1oYMIixl0Cd<3C0RZ&BF(gODeecS%Wm5|9A zEI10s@|WM)@c5ywCd#B>b;b-wnG3oMtI1rQwl)wDd0(kUCJ_*l%7#-zEbX*p-d~S^ zgQG2d@dX&oufQmujc81cOd&KzApgbDexIpeKG$oGq037{-@b8{+rgS#`5|?6v!^Q< zM%ZquaSo6jEWjjn_pV)+D%5bv8FIkZLK9xZkyl#Yc6kl;DMEw5`2OIK*;>CLn27L) z%1%Dqx=$4Awpn~XXlbCRj&Bl9UMJogV(;L=nJN+pi}-H5(P?p#5CGk+rPr?Dfv2D< z-Y`H;D_S8mn{)3xd{~4q^a9ZONvK@8@q0MXhy(I{3rjJ03q5BKS>uVQ_(QA2VxFFw zeRi|N%w{u@BJd>^Ml9H{urOU8x9y5G;!v1-zw`QPvJTA|Fxe2g07R^VdA23kjDvHs z;U_&Y?}WZK35Sp8&V(G`Lp{yT#urAB$<$Y+b2LSfj1nxM+s-_cH*en>9?HuWgG~)0 zfE7o>UaQcV+;Z{1e4iw{PFp`BrnB z-r@qBXSP|&uXk%@AdNbW3ELCJM#;YGr-6)fNxy#hwPl6o9sCa2Uw+f$T{z^7($n@) zb>&2d8KcF=bug79XWi2Db$Y&O%NBKDDp-KQwGP;>{+^mD9OGv-;ZC_+wP5shc3g|{ zKHou#q5OFjU6gR-y7`C2UU-lXNw%TeY@EQ~cHqwrCZ6g_3Uv$0H9lZ14*=7yPX=f}547=GKtYs~Gv*c+F3twejhuayByafD(^0Fa|9edR z?#b(i8S>7HuUc{dpecwlrd->h{mnfiggr#@*wd#^E4N9F2-@UIxi$zrR{`x>I-qts zS-O0Du!ocdtimbXT#k{2w={w#sH6Wi(K=kntIz%N?zfl^fy8kDpbM1(CwyQ0@KO*F z-_9NnIBpEg?#mX0j#I6|usp06fai~HI;>K&NlG@nHe9W0r0qJ~{J6Eu)tWD?+Rx&5 zT|}lm)s~?3dfAIxH&T5K)%2pms&BbOayRiyD&^ zs!3;=LDm4*Bt{mU7rD!&Y=+IhJ1d6&C*)mu4*#ljMWuO#fc~W5rp(tLFZG9QZ zRV)WTzZw+1tSyuKAO}@k62%qP4f_TV|F->1ZfD219_+mAFS`7OWG%AvyTW*Jk+bZ8muSl|!%5ay zzoFc>)h^LW3kf#A8e+A5rUv#LE+~|G*|36ykys#{tCdgE7zH)t z1xjlENOQMy8^YgogaKR8$i0hLtRJb6RG92O50^Ujr?Le27_?_=W>q290*qQ6L)&lc$i*81!xt~_Th14&NY=P0yi)%3U_ZM! zr@-Q$k@aRyG0BUf=yto7;MH2rU-y$+UFU)Zof=}ftP(Rg3wMVQM(S=`!Y+UMSBA_fjn zd}dX$e~zl!J)=^1fW*w+EIZT4@o3>vnWKS8bQ$lEnb-GoX^nEOipG~zKWV-WmwRj@un>q{*OID#5V=o%Pw%f z+ldI#JD${Jzg|;Z^^KcSxyqn7= zjO*V|Ii=G(_9pMPe4AmT`e^CqBl|(CR%Y*r>t(t>#AwLEq3S7PWrtRIWNe_EBoRzp1{IHk(8(=fUE$4q15l{`rrX;)s>CZt` zNA^a_*5klyle84g#N(s(E>I6xgg{u2A8~I}kcZHQ3)lG7Ol7W~nl1k)RCtj@(tedS zzo7EnM=DLP@9OVoM%PEasfp}o=P^80SU312k3fk1aYlWDSJhAftoEi-S8%|2RBv~5 z!DqA`JPAXb@!kr966bzl_50-y$tft>2h+BAe zOvpOslCZ1UK?ExO?BU>17y@dZh}&Nov03CWSWS<>&OA!)#n>ECN!lw4)Ua2uDdJ$W zTkvqerTV$j>v)%6aX#MsM%(S~koS(-<+F~9_%eNuvAc9+Z>2>2$b74_l}_l=g}qxc z${zVy5g6D|4TY^)ah)^8SP+?Pcziq(6?6TM=H{1O`*x<#4rkzOmvzj9OmaU7bOV0C zqgYIy8G>CZ$^{J9?XHTS{1|QY`n}$-gl#kr(5z)^>V6qF<5D`gRY-h3e0-}+){v0ChR&G9+m`P2l}qucTQ z(cZH!pJLf`C6Wgw{}h^%@S---w|G;tj@MH?2Ae8DKe@^(B7s6}U-BtGKBGqPj+vbSe^DCNQYm`PonK!W>;2#W)21t5nz z?e9DmU+FKufxsLFba1L21q{fvTtq7sniuXN3=QpDo#3wh8^OgUvr_AD?quc7;MEHI z_%kB!vDZ>_!v~YFu7w?S<(#`*TB3bxoCLm(ah^8LmWYoQx{|2!_lNim-BNUWOC%<=e?G6I zbQk4O)PVw5=#9HYo&$Rxo89wXk9bwqcG!!ock=Pj*w630%7HB5o2G_Te}4;i@%pf}%;%~>>OaGP{-ZDD z=2fnejULTPwS>K$*(w}ZE$~onR)Y8X3SW{V8WI$aA-3@~z0E&Xelal}#7P_doC7XB zfTeK}bkwY`Ty(sd$0U8L^B&IJJViI()CAEQp~HVl6~aYAT$K2IO?17lu%k(w&a~vS zDm(NS89=+t){S4$Sn~oHH*DFEQNmjseeC=xM1@2;OE!~Zdf{sUqgC+gom;Uv?>cYQ z6^%#y+b?O=xUVcu39Fmzi}BEGWot=$#gndBlII;Py8VdqcbokN;hPeK39;DA##_eXt!~OhVrVPg4x(1Gpjp)mRfUVoRr5N} zO-)+5!DOKHA_US3Wwvz|BVt^LxTk)T?F?Y4v~G4`kz}+O&4hX_5+M#yvZN#Qq@p3% zEcnpM*-5MRlV6y3f1NMpI4|J^`bEcnKP!GFs8SX4yqg_IDKVGxqDDKN<-dISYVb7d zuT|5{CE=SZA}WqHs?0{$x*U)v0Z%Y>K~ahnSq6n@7r2ypVRs!on3(1PZf8+$?OU5! z3Sm|s4((ZBM=MYM|y32DwEOWXbf-^hw za}!kg^0u9MiO^Cs_wc4o4oa<{CjM^BD8}ZPRvMiN+IIxZvc>T9Dw-D%sA zgTGrr8~5mhzQ!6on!}a)&HLOi#=63;fiqk{zKD>+7gk-qd|7E@EF`8#B-00$202zf zvpI@gm0Z-pVYSO3*AIr@_&s>4>;xKeoe~E_ahYJFlOO*1iqgP_YN%fy^Kj)$SdTcsXdxU9T01qEEW5vM6e_nh` z^u3;qH-?mH*}7m~-!3yNe~D#NIj;zUNkn|8^hG6D3 z2>3$DVP2qXr5SZ@$Q0h4l0+2RvqFIq3x^)TTDt@~1lay+0v|Sr1=hsmJf$QT4+Y=s zoR?H}^qL$92g81qUTOEii5n9!V0iej#5Q-orVI$%&me@X_Gt zomjCxkr=PZpWD}-tf!81o9Hn-o&aJ8 zoSnq7jAKxefxERAFH15bD(ryoJY0=O_M>PFA0uMsH1^ms0jyhuz}+Ac{1M}oH)z|&|&6@+nF0c`PTHMSWEg4iPl+G%o-kH>ZA zwO8G;sYrhapc+f~^*mv7-~v+%_$^uPRd8R0d}e!)FjQla5MtxaiB=v*-i`+ktOzLq z3;{W0Bx1k=Sw4Iqm3B$;y!c~aWf`f zOoEOhn&-~#+!K^?`Q9-uk1Gx>7cOgPND%fdzk9P!^D;&0N%FHz!S7g}z1vQ&B%yLX z;AkbMBj2ZwmSdiMg*Rd^b%}|~c+U29edl_A<9i=2S$w?b#?9|9oIUM@)uxy^J_Ddh zFx|hadm{}!b_4BBKR+}2%;ZMBY=b&rnT~&GM01|{hK4(KRl*?$fNq&^?H$|X59eDK zfjzQESAMr5`k@VUm+#epPtO421}QAhHRP>G%NsG7Gn5mB+Hvna-taH z@7=qXdNjOyUSTi_H_li9!oY{~Z|WLrqo#x0#^S}@5(fOR0}LECXOj51Ppv!_$Ief5 zlpuu84+7CR5|raqem0OZwwAY*GvQbjvcgC_(=ePo;AXme^@lFs!@9c{`#=~4sQUTC z`9xs>0s8`bX@!i`Axx+7mG48Xt*r!&hHWd~7&d1&w%N_o!dJ*9tL(xaA@}!#dIl!k z0O1pRA9qEubwRLf0LX3-rVNEgGXfIluM({?K|*3_5DvyfU4)2Hup)Q2%Cp4iB~_e0 zJ+d>C+b^XK_7tHn7JXfGXR*m+dX2i`UWkI)t5*Psrj=(DT})2X5`-z2I_}uoKh?{= z_U)Ud3jFV$e1Lw;fA$Pkxeg?Inbhx>O#%q&Hat}x0c3S0OT`zuHBe{Q4ScR z{+XTGbUP(_4;uC}5?~l#yyGmO$(5MpC_J8TR1&w;BeBQL<@Dh<0fB**0Pc#xt_@^g zf!rQ-&Yk11bJ5pSA7LB^lah;5I-m(j?JXlQ@28_L0tZ@hNs3nD+GqJ2?pMY60!Y}C z!1W6x)ZrQg_4M=<-IbI7w3`vfUAolU=#V z_ZAcuDlTCqId)Pn4E$674Y!FEPsY_1alV(5+&c_Ak~O(_*xfpbc|#p~R!AfRReH}v zw{9eRdA7KuBwBXQ%WrkauP4ji&WAn`9>2;O+Ji-G50~h}6fx;jvQcGGD zDiPaz8hb@g&;&J5UsrP;18C)&2yVB)>W!=V*`~8JZen6$O1VjB>zzJDHynB%>eYGZ z4pCqt@p|^V`Ac z&_xi@#`zs#FOt0C(z1Bps&b*LAHid}8j(1f*=aFW&&-Ow_U4naSdQy!_iV)sE~NX6 z?C$dXuK7S0$M?HHK)|5t#pq_dm50UX)B?=X<7dY9Tu{0F`!~j|W`oq1xGNU7z4HHd zcUD>D7Sa)~efSon9(c0w;ct-Rm|-||nXS#b*7eqn4}v`2{YLWk+waa( zWFavOR`f6B9e}M|sU6MqYsZ<#FJ)w6cwVbHLE1elbLpmuT<+z|_ICo5?M_^Q5+9HT zc4VmT102zUt6xs>iHJOR$LO7fBE(UK@?|bfHPXTl&vFFI(F&KAQ!{FE^^EMKkHrpt zIH)t*-=*VdEIBM*maX`*^}e!8~6t!C)vIDx#lJPJLYwL%(jGrhuWxxm(0IKT^KKkTNd=z| z@j+NF6b043D$D~5O$^RY0p&0XhEO{1l0@|j3JM9DO`5BTB^lmNxr}!evqZaW4#BUr zH-f>c*zKg^;VR1GvWeOr3mz=;{{)$J(o8ZmYe{7 zZAOjiu+3d7)I(QE0avp%M3XOW9qEdg4i4o0&a2>foR4As z=J|cdCMU`m++1GhzbL>UZP3|siq|@02z0`ERuGx*+xu-hz8{ge~%DK7>- zsm~eK|2}BPe)=H()^y8R9UYy^hhGqG{B;@CJ1#CI)kUb#Gn27SxON{S_X%V@0!7jz zCr@$cpqHu~;j;EpZG`+!FiViP*AMD3O!jp6%r(uL6tp?CZ&lXPJMQY{a@#n*Q-jHdd39Y0mDAUf8e|c$ z@)+yT6cZQcmXqscOd#Ax{vYt36{E#gL)=dK2iT%bWd0{c6Jix&X7wTw&lzXyvX=Jf zIP5*9f3Nv3C-c|A#h$HFuj%n#2P3$8eYW#)*xbJx_+}-VXwk>@4;L(1cKEg-lLpDH zEPMB!_%s(3v~}$H{C9=rvOO5R0j|~PfB6wLNRG%TPQhlQXG$R_ztV%~&^gl0E&T$l zBtd~mUKiOBrlt--VQC3Vl2iX&WJLbbpqs9Pk(4Dgfv9&K=_rmL@TiMUOXKpeD4`2m z*mcA&g>6?53++nq^25^6E2%dN=H&2MNgH6SlN%a(c@)K z2`UI3QJl|6um9bJcQNuH1d&z3S+3LzCurjRg+j(YDo5}n@^(q~?7NP4T?u>}=xFIP zGf9_+5dPXL2l7&Z&l8U`?3`v{Wo#rkrE~`n;D*Uc>@rxr@$#JL{rb)6H2Z)6axm^n z$g|r-c~QrYPZg2wcMf(BT7tY=M_<2#3p3+RI*PU&DQ!~6aAsR3UVX(N2HPLU1PbdK zd;GBbcVe3zHV*4Dtex5?bo`BlvsDH}wV9Iq@mH_TFmJkcUMQP|m34ph>?h00XHUhP z7q;U|*%GKPESE5 z1xCBXg@njjX;3d`D65T5>1ftx88XcTBY6iRRF3nDx~t`#;-#TAg`#Za?fJ)=tD%ej z?&*~7@ppnkLdDDpFap?ZlKB@|jzS-IT39Q&e`c-<3R@Sr`VHK%#+P$*eiWkA?!y+*hXYON#1>9y>gb|b!KK} zhJj?G9-N4efpD@g5Kpkb|DkCcm=;b@UcjC}4M99PZP2{2G zVY?qy@5U*h#^ldPa0%GTCiaF9r*{PB>2cKJ#M#grrYN+ex1zjy2doQixA#_=io8-l22mMvRc951ix0|A_HB7z7T0 z74>uBRJUC?SH)WmGm<8~r%*BIGF|(GTSzXqOt5G5ySW~M0{H3OxZ6ZR^g-|lJ8)zC z*(}ZQL(Y&ea3c@v{)~JUsJ)IJNf%pezYc#E-2ct_?76N$g)YeToZj1#Ad6o34a@~i%pEtf8`XFs$qTYfS(4!GyGAA29d!2PZ`B^o(IFv zf&}Of!~puQc*vI-#C3b+CyI`s*67QEezS3ap zqYhcZhdRGm%YFR_Xrz>uew?T>uJS4Cjh+MBy?V$mpktIf5}VFODOZCes>~~{_eORk zEpq(p+wpM+4~zTCQ5q}1z`ukOYDI7r8UTZxXy_*TjjquXG36I=xndg7{|3a*8`n6I z&1=IqQx9x+06GE#zI-XIKD_%09G*vvF?MJ4c?H{x#!(RQ`X*J%xcbuw@W`Bl zUeN$46a}2_7YvhtFNJLM%Ru{YS$pX;mkjUzOKl<>wPjEOE)u7{^it?rs+WE^BLl9v z-=VOCZ1Xmk*q!O8Q-YxcEcw0RoZQ;M+_LLj+cQf`OF%^|czGaJ+r8D;bK*6Fo%9KA z?za>5x@|73##jAKo_+*u|7rl|jNoC?J^Y>j+*kuwVq5{iSXPdykFa49I5 zO(#u!+=@xd$Y=mViou-14+Ry16f-MOPXFNIX4-o?UDbQ_?^V+e7rq8RvD~_Omwkp)I&hD6Ou`|{`FDnWk@d6Ki=Fyg+yrj83=$CNJR4JA!6FtmG>sH zaHC6j0Th_Mf@NAw+CLuoO+os6(b@(blIOF2xzGrk`WUX5MB}J3?^IZQYuxpAzF;{-^*J(Z>p>0_P{N`Ex zKR82WTPG;G_B%#n0;~g4eudLhpVb(J?cE>CFZ=S^ln35vJ@Q!&PC(y&W+S?lWB!nv zwp{%bxz-742q0KEKY;|*~_ZHoz7fBIOjh9Kk&fGCx z`5M{bQF0%5x|q_DW7xuJX&s?=E7bgrTdfT_hUhbYW_|s7x$D`LvrBpEi6>E@=?X7v z)H*r=^wRdF4|R3nATzCp$RiAnJUNInK9LGnz{$OfW&IF4>^jG^tNiI`w1H_ja`=Fi zRt_dwaJWoaRY_6{VDxzLJdRZx&eFEzo@XUDZ33h{$}qvN>)x2-mE_}umD zgxl=xsARJmw`xAo@$>UTTY?s*(@fo3UPzv~Luz8-cgm_ISy^-LiHL}>0P37eU)lG% zIo1Rb1o#ydNyymlV`XI}*&W-ma{o5?dnl!pm!GMxR~v+-Kv76u2xX)QC>t3FevGm6 zK@osXLQpCR%tczGO7EH7O5~K|5j&|re~JtGwWCjWMsnKRrwF{CZ5t z^us47izNHb;xR|EP@0sYd&%psz!UXjKi3ttH1=*Wj=X{wV-c z3Hp{8g7O>;$qoKZB`;rKo(IhmWBFFiOj@FR1C)bGA@cJ!Qor9Y=NfiHkL}@jUnyd> z6K8?vCDtkpN#C}zIH|)(XN=kub|c2sWB&KPAK_7N<&Ec<3L@9MN`J^K&tNretcg`g4q&!k=tUp7L9b9|V=6y7K{vY<3 z=bYz!em^|>liS~N&Ux3kM_ku6`1+R`k(M}phVD{(LY{F~$13G+hsf>T@#pxUT5yil z3Y57xxzg<~QKZDPU_;zT#wRaWBw|zeB!_0DuG@xpbw*~6HtE?(n_X{}J1lP4O2Sds z{{9ubD7;UUaq)Ig(nS5b>%cK5d-4of2@`OKpxhq~$J&@_Z7`wP&YErMS;K>P1-ISxb zae3B7jqbn^zy%Y<{ZR8;reyc&KuUL7A}O#9Do+$O{_GPz`n2y^1TnKL`Q_!9CNQLI zMu=Z%)|F!0#jBrrt2VJvEmd`9W+pv*z!A-uLXgm$kW7FWQfx&83Kfk1M)qjV#lur^ z1eabq?d!F0xncQhEnBv_b1r_dRyxgWCmSVtQ_p8GzIDO4B8GR{7I z`zI}R^f|^)H?Mu-KhMuF@ciqkV5;j1z4mnysxsmDA|zK1?l#(4^yd5Z3 zfH+B%bjSb1UpHmaMieSFl9F+Gc|8i>K)m@*uhb+61V7agJDy?CXYMC^oRpI{UqE{` zNC5odInmk7Xr(Ab?GBrm5D|Lbw(XB+EC$At)k2e8ye#`(j(UQ5KKnM?_`dD%l|F*? z_OoS26r|7()>T}2a3(j(O{&UuWdv9mG`P-@FusquyB(4_YgWk=sC-PE+skzvN$C+O z!gMe6O8?I{L<)Uc!%wKLL_zXh4`iWFc_PXVH@;^rV4RIKG-8Q`8OqqycJ*h^c5oUu zwIK0F4M`dFzZ@XU9+kg+yYyC0&b=P;zq3!q2nevKc|fz^%AMc0mxb(s8Go=7m-4@bqkIIoi`d*+WX4cDm{?Vaw^ zHl03Yx=wecvTS%hOs0QVO)SaL+I!n@8?*fIhJ0hMVtrB5YcwIdW2)rq@1f> z5RRxC7>ue$(v96!D+Tag45I9JKakoi94KXF>DdH{*lO447)*?ylO-LQ@`-;YA2fy) z@li_0`cMBX3TD;T)?qe`i)m#!zHM?}J8Pb&%O+MSohU4i*>>!O4Mp^4xz0k?NQYsH zrUtVY?nMMIBQzPMx^0f%EJgAl&*+h8>psKba&%iEPLQ~s0#yQ0!6tEHXzYbAkDa`oI$Fo{dA>2knQJ+*V{EZ}t@PfoZbH8QJ zZ7d4)Dk%w_Gs+DzSal5Ba?lUm{EM1fhWC(juM%i{?{{1u|b8N%(?m{Vp#hW9~J`-73 z!+>ptaWI4jd*f&DqY|k%4PFi4Zt_sN1Wvdz=;Yt4>ThHRjkF6t_8n_DsdTNp3^fZ# zSmGbw4#IYXJxXcH={v$;bhiEH)j+oyBcmb{a>E2x=W5dL+iUSFiv}#M-rI7RH;k42 z6m0>2&G=i~w!y-<;0o)k?A+_qA~95#k_=H(m4tVTBb62QV&?|hrI)YfWbYRgXl$M4 zXiPGH#bM?!nBe0*QCaV8Vo_|+TOgAHG*U%DmxZeyqP=vZS|fKjxnHVH$&x9$AFLjc zI1G*W$*`;n9x7Dq+d14?E?iz_ut{ z>`&OT_WyE5+j2zrWlyGC*uf*Est*;Ob{Nb??SMpIG1B)yNqAKq5n@=?NU^+XkqKddf4dO> zZd1zI!8Sgu(Orj--0KQ8&MPQg4O>0=<8`ah-m!gB-&=J_esexiRZa6k041S%&o>Nr zNaY0<(o*=rFrB*24~tf3|MN+C^unv70$5?GLo@uhyswYLYNrIC zkreMWZBQA0Q_=X+?gYd0M`C^<%kr>RAZ7y&wX>TS zF%Nb^eul_`7n~bShRh=ew%{3#A8T1b$;PLtter7mlDua{X%vI@xrt2Y@`g(dGHc)1 zCHuD(=SHzlkd|8dX4!E0MBDIWH}T!olrLFm;wdT3x68>+8T@3C5Nc~B>&#+yjiK|b zoKggxCH460mGcw{QCG2ojB?e(M=9wih%ODQvvL!^t_* zMJ6XEf(TL%BkpGhcUTzP|7{f^_CGJW9ipzl>u;vve%^`)CtHPmo!rmSQ?b^D+kb+O zo1)^CO@lyj#Lo#0Rg1>9bH;mbFpO7uE!Pt*x)kRyvIW5@wiK!g6RZYn^0y;=^5lBE z@Z#$f=VKCRDVWVDe{=OET#@H*Hi_=UcffARewcQkH_cLA9cEFD-j8)^UuE#mo_m(} zXIYQcY*wOY4@{uK9qtKvtbs+<2M)B zlZ(Z(dl+g^8r$wczk5H<*LQFWan!J|$l0l;JHO$4PvaC4k$9fgKyZ^#keQO9{0c?3 zlXM*WXENTS+Mge#xp&L{`g>^o$Qkb#7;u1xkARGZsgtatG`;f!XAR3Zd8$3j5Dlw! zGq;)1x}+d%7F0+F2y?c+V}`)luW2VCsR$(=r$h|C{o&RIcMG<*2z?sPBwUXsfVV~3 zmR-4g8BskOrhzQH9Ke~fbO-IYEPm0}pp?+hBpINF{+P?7DI;g) zXHXL~H%l;n>dZS>O~uLG^=0wCtKOPyNOb4qm&&Ho3<(Nhgv zvM_>izg#!S*?duGfX3y$Ftc@1daDa^fNT$B3_>VqP ztV3`J({>#|sBe`b(`ST`to(PE1_LNc!~t_schqB!y~b0Gx@HV8$4Jg}TWn@>_6DwE zxNndJ4Qxg~SLt`0?FP0_c#_{agiSOBn)Qh8bC?$IO60e%%g1i+7V@ctlQO?rsQ#j> zeMKnLqRP}az-GkI&M3!Z=8hF7EYYus8z zel+VZ&N!8P77viez8@aj7`+Gyd*RtCk-$mRRPR}7jQaXFx%vLLJT(v-Nz? z3b_z(BB^R@nb~x6Y>-@ZwMS1j=PF6ae$S0Q798a0H5}NR%)_Hc!;?5V#>BT6Ni74a35QmWFtGML3!B)GnU~e~-l6elko~svGS=lSTXR8^0wQGOpG*wR) zMjf(Q%rUIZ^)4alQunI@0oT~Q$s65Qt!9U-%1p8{^S!mXTa7eZQU!XHR;I72=#i61 z8BAZZ{ac{`Q;g^T$o=7~p8Z7kbl}sF-(U9L?D8FrfDE8Ks1pz!mt+p&Hk`Ql11(`8 z!*Fwrcj4@b#Hl_%0d21Ct3!*au~&pc6GyHx5ad@s2CLXg zu%~Ox^o15YKCdQ<7(htGBS~S^!}y$#qOjS}g@-rCwKbQ+Ya^;gEExra$Y`)9wMwm8W>6K&n`KEIeg6omUL zdVcH2*t+U4Q`}c`Gh?3XneSClk}a>{NuGLggTbmPhl*tNa^knsN8JzHKjaE~WRE{h zziCwVs5mW63`w`5d-IFY(2t_SAbgGcwGNpaS9(^HiMLO`({f>c4KH^`5xR4-HYrFy z)Ns8>4!;+zMb(qhr00}ky1;wdfkJ@33M;krR!-5uuZkKw@yv2vgdS3JJ+HM7a*SWK zkq8wuTM-`(n}O?`?gDb>2zaptl5d7Rf!%=1YbW&Gkg&GW+&#;4p)J%sbfUc>2AXhb zV(k4V)lyNAYtHbR`)(g#TAxwkfm2LpaiaI@#RF?cd9J(vTdcGKruDo&>B2<~FH9F@ z^74mUyLz7beR<&)yX;Oz0mKZ+%THydQudy1U75D`fQ#joB?oU;mJ0gAtco|$#Q6Bd zao?8TQZXo$RYwQ&R$f6l>A}+vedaTG)5{O@N@Pp>D(?+}PM&a)?%Pfs99@W|U5qoc ztyVXyU-^4DF5WW=E@6%`DhwXVAQt=C^DKFmN`!$a zMCt8QOxR~BYxn}UHRXDJmd)i-H&)+#kgh|_=Pj^#6kMedT!&DTl3Vwnws3$qyXN!z z)ZCodB@y41j7zQS_3OeEg3cCY*e{UTx(OxfrFX{&wVXU>L-coTM_oVLLRXKkX3I~V zNW{4>T8$$qh_7dGw$0En`L?=QO?Ux{$Ju1_30qNCbJnW6idI+o9U6WMXk$|dD}MdszOBy9ZJPNlDn*G zMf!>D`EiX@^_NIULGHk<7A`&A(b5*D@S~Z_#jqqZ4rNi4MWMoto!?V;DC1+sq?+UE z$#Yxsc;BcOO13}ipDp3f0OKP=wp-Zw!|nDMcjZ0O?Rj8-0#PZ~%}viFhyg*ayy>uz zNq>S6wz%R5r!Jwp&YzN%B*URKsa@r_6IGy$iE5`D5XMEnejSMq8$qlQPYZfnKdqKf zal2(znA`osuj^#drOND?btQM5wPIbi*zNYr-tycwEsJ~}GZgF3o)<~R0i;}^X_h{z zJeuT@rFzFZXIZasPi?dEYM!{rmL*xNF;g)zhq^ZKcp(mhjn-}=i`cU}NuyDy{!P_Q z&lPI3G^<~R{h(rq|Id{Q$JgQ%&X&kaCm{ejS?VOqkG#JBc(>NO=C?$HabRfmqtUtN zXZtVP1_!ZvnB7RvAxNbRO>louNGhn-(b;vL!OlwEuTMakbBely*XeWPjh<3ML90!- zeHAVig&17pTX!>laF??;MG7K!6s`oM_Q-F4%K@-VDz$+3ZLz!W5ZPu|nJkgZRySaw z$AKvq3#sGsAvSNKe!1B`B_Tzij^4Y(=c4KYs%5TI*-CGuVH^K}KKjt5`C5Mrt$x6C zy|~C@z}n;V+Rf|9!LeI!wcG?}ReXggpNC@EUWh8Utu4guN*}@6H@0&ncU*7YmBw5x zlOes4@iVBYW(+4e^UiM-GP2`MkeFw?moGNVU7Rz%+Cj2voNV3+T5y(bCfS+O7=pj9 z>p_%1%JOyoJ5pSBur1fC-*K!e)UT0VT3&v2DhLdz_H(1Hv*}YF7`OAH$1`MtQPus} zlws-D9eg<1p-qA2Z$j~-^1AjXJ<_XE)yaNV)tR}57;JjC-dwn$^86|#wTjyAur)Hd z_8Y@hWaeJanv#|%M@6U0O49`V#n%7WuSMkK0d?9-ra`cfQ zSjUy^+?Nv>iv2b^p3(c2@?rskWtY>NHk9*%mWrxx{E)xiS-YZ9uy}!Vch+O}qK0O{ zwqXBQAEV3I>n+cdMFQ(Qk*x*%3J=2krq)o)`W1ONy}T`R&my-zEX;d3hiRCZ8)XeA zYVB8XC}voqg;&)wzGo;M!BskOBN|7M`dHuW*!^4Mc+-u3Wgm3h^iMP)@VC#U&?GJ$ z33&Ks-9da!r#zjgN>lY5;)nc=8q<}<+${68N1#$i?&oA{t5>EuKvhzfoA$1LOnp}9 zj#&9A!Hh8sU!KYs6UJ2Xp88AfUu90Czqb6ks5|J}OxPj>Emt3Y^|9UD(jL=&u^ubk zMRJab?zb4FqIKVKy|;@Z*;wf_uin;Mo1a0OpQ+e?C4_R`>abx0ku}EESS9 zDf_ZDChc{yq?f%3ZVpX&+Vf40~h;T2N(@zYM7_f?Vw2P3WzAG2q)li+Pt zvus9+0^Zf{7FhZ_q*_!4PK}yVxyzACf>S!i?k{*WyO3hm(K+za zL|Z{s+JZ&(@yrVmy*=QFL<6c~z3FO8JfFOhQrHWR*}NqnAGC|y!&OtdZaJdUt^V5@ ziuFLJjJk)SQnOq+{(<<|>JX+X*iR9As&*ms)WJuRU7QM#`6e{g$@xp?tGn^~DkYsD zu2o2D8fBUB>!uCa5VL3Uauq&a<=$u3o7~wO+i~ zqLwuIwaaB9>AB(*rzKDHtB*7r;m!DrsI{!5_@%4MTy~1GS*{T;M!lKbFq~1*No-p+ zxhlK*f-=H)qf58wGYisIzX-U>@?HBm84w(A5l(m${TI;%x5hKUqZLbPcB4PmsOGr0 z(N!evXm`KFv5`{K=d0~iqZ`xe`!A>ls4gYz^2z&gnAn;dnPX0}v=C@uFlqjlyH!3# zbr#_c((2_ZeV9*MH}Ctn;*Q*F>#N2qQKU^+6#uxWV4Rw4y|q`=Lo7i3p66FCmwWBz zHmPB~;kl0TaDpv-&F;G@4IC(*)v3u8R0`idr9$;FAJ@6X!HE*f7dvOdb?RG1mx9@{ z0;}%w{_rL?{>eu94Xa^2{>GAfob88)>_>e!EYn>*hXDN!>d-CYy0f@wtxNZ}+=%>& zI|%r&+M7eh;lurQooL^kAD0{lw9SY089FN_!vtqUpp#?`)iMb9RLHFot^?>22}z?Y zHPxi7ZoPS#Hr&2JT4T}}>DbKA%sbfl49mu4H%yig_+!lXI-8N{R$iJ|Pq%o2UC--j=5#lBF{ zpbIMA!&VvucV_z&x{|de7x1^w=8rT$oM$FRPY#f8yy)~=<*$gIDfE!I1B&ojTTS^y zo1H?7Er7DOaSOqWS$sp(Y9auTXn-`=+loP|8*fKFfX*W5M-|k4r+ePoW;wMlD?@Lf zz>_i9z9i(9@%nxSK^e;ATl$5*C?q-ol1$tqk#}>8%BY~cR=KDVI;mdO6{ld(uXU<3 z7rEqx_2M%!4Q{p0n7I|~{>!aX?O3OE-?Qlo#^tTFYcxvFg@3b%35_bx{=o8ch<$E6mA@D|`6 z*rqyve+#uJ%_kSR%@kyJG5t1VhF&EgFOVT(2z9K99+^vs>x5hPxlF`~gyqa}w36A< zLoHSRkd|j5_eLZuR^!{hlbAkcY%AZvt`6QftRJr9P1{Es7fFS$GHZvD=NXyavza&W z&_QJm2E|iIYbo%T{5HP5yUM5*KJXcpmL2&$v@2e+OsMZ_myM#z_}@ar;Y6p4iAl9_ z88>NuQZQ%9p-HX;4!WnZ6k7EMpH!cf&Fq(|;u>jUv5f1F)Q=v;^~tRe2Pe6|S^y0}X%vFojvEQ@;NY?QZnhhmK;N7< zWL90CzrMad0Cm6wP^)%fE;jSm|2|Vw)5nQ^`F%Qh-z`VaVS=<*o5h)dh>`$Bd^ze6 zi=IY`tG=dIwGd%p$9T~hix-_NBxhuWVkCcmNAdOaqS9B+Uti#)F=>=5aHgB&2S-v+ z3=o=XYR2hb?faGMbEO|sMbp>U$1vMmMVip^7hrc-nQ6rH%g<+Jv&ny#SHr(Lq=oUM z)HuR^?HU=DZbZv@!LmxRYA%S_+4&gw-&43lFDZtvLFv!LT@}@gkF-$)ygm>NZRA~+ z9s+cV%e3vhz-(^DExTP{3SUD~DBiMt9fFBoXx_mV;0Z88m&#LBwM|?+=Xs8?^is($ zHdR=aS?3V+(c7hEDF6l+2N%cf!iexw7ojuBPQrqgD;CDs3bW#*kO~nht6jbuQ$fu3 zC)L7G`Wg+OefS7+X!@^O=a+m!nHddGG>IAPj;7Sev{}&m1l-ww z`Cjlx(Q|kFRNWrTawxA34r?J0ySk!1A(v74QA#>dv7$qv-Ys_kIq>m*+=Z6>^qK&gHID1n0g4T zhBPyl`A>;+myQ$jFtkVa-c{Rlvs&yM3*^Jkarsw7d3g(J_yP$p(KyZ_sKs_f zzQ7wg$YZ6Pz6FrA+50S0wYInaow9y5Z9;Cjlz4J#C!bj96)bfsEt~vpDr=fSWPIfm zM@bn-&||r{Wy>nze5i)Gt#>FbH}=-y8H=!47A{3M;e3GsbtmT?`B~n&;#9PYqS~Aj zM85+*1KUal%{L23Z_jxYPf_B8d!%@65Jy=wc2pjTE(*)F>Pr&gIj^xQ_+P>bBsYYw z_502zF_QlL#N}auV!rwbD=VvF>r2NziL-gd_$W`Ur%QyT! z+wWK1+@3!_4B$W8JOUK-p^XJ}g#t9mzTh}_t!AD}rQt<&y24}BR?%E=nvHivZ zqoW&0prt*Wy{8k&=0SQXx0Tb$Dxg8|=$)?QTwf}xQKupSOH_TayR~A$iAe{zf7>U> zRZ7J_hns zn3XVlzzv3H`SxPNinxQ$J}MzMrf{4iS*{HY0JjJV=`*> zq_>V0_h+9{Ftl{dztFIHDNnEF13{kE74$T{Q6{-HFFIw8SIup=?r|?qrCl!tqsyig z>rZ!m$~yD*ygI|=KDqqp=qy&06GOI-xAL3C4zn;xvZFG*3GSyj7k8u`ibGZMYn#0I z^W75MExBELPCJ-IzDcZ%vr_Yw62Jd*y@ltUPeVt~rqA^H2Os_p&T4iZ(rTiG&DG+G zi`?tLIaK>;XHPb3p*4OI;F4HnQHB6Bm8U0g(NCY~tW$`Wx$Lz3p{OQjKggZC=jBPh7CIqHVN+xVARTK&OeIk(7%ybwrdm@)Z z{YFtIp7^JNN34ns&%TO7-{!@KDG_lT_|jkcIEzMNFX@ktF!zyB8++3|lYYi6LO@dO z%DZ>QDJwr$mUZA&sC31fvp=nG*^$Xj_ey>5I3=NrD>L7>n8vVioF>_6d$(l_`O zFX4?Pd0a25lWL2{px5(%HKcfAX=m_p36eZ~?vYs~(^^gT=g+xj@YRxSXa{8X9$(Hf z`gkI5)X*yDy}DMf_PJ2MDZkX8E>17AoGaWrYM-lR3plieERJF~RONVGir+eMGs~&_ z*Dp4kn%y=Eug&cWx4^o7b2vYhe%>l{fzO~q74yQ8N1`@y{drewoE1Z<21>uHb4X|` z@Ue){*qM*nZS!`8sy$=#H!vAKZ|Lg{%2JOlLb7Q^gSl>WaIyYp-ms*K?c{go-;Wr^ z=X&CZA2=@v3?38ZcSTn%#*ijR?+Zg-r_RxD*h}4*j~lbc=8(FjZjAn2!@nnXyMx32 z3?3@dG%SrmJ0)h)0Y`LuxT`RYB99t%=C~sErTf~jdHZ8Rk?E1M=*}kPsZV1&**AAS zk4Xot`4|Tq_k|^MwHI>qXh`;)Wv$mfuH<_^gH-*p%FE`RwEV9>=D(}bwF$Tt3E`N3 zb@9GzHSe(_E>w@>=6gJ);H&ofaE$R>k4Ligs!ZJgX7$)=b3ZY=e+Uy)eh zXNNCFDYDG3kJ%E04BTK7GNuOpWSt7-l=FRQY8QtmQCx>4V#a8FWv4^4h{!WZ%HXgzZbUf4@0SuyK;xiu~LRU0OR z#x}!NnF>GATSyZXT_J!g_2w1y58M^P7U+_7cIhS3wWS@j-)Z6q(a^LUv(Wv;{H{A@ ztGo8A|EWSkG*p(QpGbeCMhIOo;HeM25uhi%gZJMy^Ix-gkf(VCxX)o$FLpEOZX04^ ze50Uu_UNJ}&<~IvfId_;SfO}EKUu#v z&nZNw&@J^mS%Xjmz$gMB zeUEWT&A4#U*WX8?Q*rl};u~5J;ujFGN~!N$dW;Bo9Izye8lOc7W)U(WXpCBrCvnxS zF&hYahE#VP!Do}Tv$K<(;Ee^)-W4vrK(YCAcj%Tu|0)`CKpMcC?HJ36gmxxf&31t^ z6o=E9mQ1Ym*6tuJv;>78-7;M(zlkV$j*>;@pQn#w|2X1}SC1z5c>@1^9Ac<)dNV-W zBSd?^uaT5_XB!h)EF!SP-4jrH0@$3e^w+U{A2}M&d6msY-+gP{Y!N)b>e;fK3lo@3 zh|tlsvKc8z+XOns;M5$bHr!n4mf#w`LDk8(HpV~ z)H#FoUdK9u3f6O-pgE{@1A2E*$MlzmjKx)eC-MMtB~2wDmPnlYs*TAKn;+=rwqM%c zkU_d9+LB?uJYMioRdJjjDjC?3cALbPR^^LPdKa9ebD;^(I2MJGW)%cd^P{o@&az;Z4x z9>*Ts`hG+7X-*yuI}_I?5K)S{Gy(h3n;;43WaAPu3gzZinD9B3N=E=)5NHytvK}R+ z>krRHc{~7Ga&g@n3Q-sle;&~^Qn<6|dr9}b_$5i`JU;>$K5aj>OA0Gaj5z*gjF(kU z;O?@t{Az06o}JI`oMAg~Zfpghi>hn`zpeoAFZJw2^iwf5sA#^yF(A?==6U=`GHQta zR|j{Ombe-V@rz$cV>{9ubt|ffI;vCNa0USi5%+MJ2Nb(i(wn=*29Cp~@j-Ei~k3c&~`ph(N{@E@}!MKTPoE0tZDq+@IudONn*B_(O(YX2GtGf=`OJpmziqD?Ry@ zMrB+~cy@5)>|8HCl9QA29ykqr!79wW%5gMwiPzr);|IVZ-NHpQ$f~qJotzEPci7n2 zFk23Egwob|oy-6+8-&Cb>X1oxxH9L8)D%2MYi29j+&k6)hm zp~OZ18jkGC!OhRlABT)`9JE=}xL8((BxRvkH544<;NXB>Q&?X7Ql-`ue(4%$+?^xk zKMB$jW1F3Bg_lQE_smY&k2Cw5G2E%d^&^M*rucD8Vg2A%OT!|ZjCI4KM-DznOo$e~ z2TI@^x6+{1HTr}Y{SL7>_Xn{notJP2iuBo_!NZF$KmvA+H&a!O`T}Qt3A^ZX7y5_y z*suf#2amscI~oPu3$%eTWaeg`0ycq$Qkljs*e>@VN&ORxU; z*yVseEMvO$*X0J0HUI4W<_H=wT6Nf`FVCG~7xp)^sFkH=z`ZRmZwgv%2bEz!)nuio z-@=&8EAnGa&|Q4}ir7#@OLOx*p${zri;0RlM9y!N7LAll;6GFwCjx^0Xto?RgvnW1{nhgj?+F}JFiqm-U|%Rn@r^^pfQgUv z)m{4fn6M4>{uzaYbP<^#HqAAlI`k}9(eU2gMmXW1HuKX?iI>+Cw0PQ~@iHa4Z{#`P zXqjYv@HWDcaW;iqkT~28w~*aOz~1}kdfSl$+mQN0x_}OJK>p1?qL;>>wrdB<$pKjn z(nqlf?h+eU-M93@sWY;+wstFJ5QAv}im1uj{P0pEi89g?1yQ$lgx*oQ#4C^ojg{T* zbY_+5c9wncL~I-0JnYkiN;!D7*ft~luSj#U!NG@#Z6mjPeN)otEir(+S8od+f{;94 zJR*o?`o!eeWxo&!c)sRf6oNINNA&7m;cF{q5Yj?-$w-8)hH$A`Moh#=KP4ibe7%UCtY1AK;f(M8og8aQJ7jS5x;yttQ_3)na zz9r^uk+0m*u(w*g1oDMCV+nvVzJPVl^GDJwg^L}Hjgm-$WxQE*uLJ=?fy9IUBHbU5 zUJ7DatLR>e|5^HHh~c@cMDUly3)Ux_B``o*{GA4TPSJN#KtgY-Rx9J>T4?L&SfSfM zyvzUr%L7c|Ib2L1*TmdR)~0(TKo*=4dM}fa3ib8&GJ;C-Dh<6wbyxxc?NJ``F^ z(+TQ!7;M<4#Mry>D13hFG@mkEA66As=W~*0x^ixV#3%_dnBn&Fb*FY-4VDAeV2!^a z%j?TJ|Iuw-Lrb4I^!^Hk^8V?mRLkh1HE<@|Bn}Fnn4uzK?*}Y=wYvKG0 z7aCJCB0yL$QAw7FXJgL)LG#z?T~ujqu528KJ}UyD93M9UsALVoAouxs_UBpTPK-!1 z;z``=oE!7fugvuyK**`Hqfexsa|(XV*4+w;2R<0$x;CtW02$H@VfzJHOE zy@sv+Vk?l7C2D28-2NCBv^X`K5C9Y>|92NOG=UTzx{Vq?ag@QVA8|r?C#9Oh_JK>N zZcOtOn;Xm}Ed5T)C>L=qs38pkGJJ2XL%JtQG^In=kkNXd$kS2U;t|W*?s5uXee+VO{Pbdf@4*{ITWi zex;?QC`5e5bsl}|6AHTIVG=%_vHg76$}RaFkaVq6fQE|#`#Vx{iQi5S4T5sYgL7Fp z_CyJ5^Ch}h-qDudCn4hbOyom# zH#BXy=~%aPKad%SABL+x2g@mTXgTTrFgd2@aEN%kg}v_c(};81IM;VQOPkrIJ6&@O z4|P9d*;^V{ag6Z37Bx7er*u0^ZgqzwzC2ycfQJyT6XhvF0{6nBC6^0ESFJf1lB z+G(zX2@g$NpZSHxkg-I&=k&E-$@2{g+Q%?3D&NP?o6Hp ztjjk70ZxCjmX?+ye$&X6$6;UG|1@o;f;dRY^WW={-p7oKo_?@q#17($7fIJYKS`Sr zF}^kkQ#{e*kYfwq`e0Q)57vVsujMVc*Gme!cj*1IFG;t;+*njMYs&vux>@(&aS*%k z*!W;~^WOt-MFt=}wH<ACcCr$)ME+*7mA8~a0M*CEB}Q8f5kN-!XX^?&gqfV) zNAs`sh@CFS7v~myQKxmvKbuVE(=Lpzx@)MN7tWHq^A}4va6)>!s;vImhSID{KVf&@ zR1=MXQxmA-SR4v#SJEH#Uuh#NE=OSnXzE{6h5vg1SY!Y_n_^2Yea| z{ZWGgI0@Da=aSdJZ2hwyk~xZSw7$)M(t+c0gLUC8zIdN^lR?o@@xJzqA4;F$EPb1e zSB3T9QjN4{@i!Y!+0Ff-FjYdUZe45%Wf%TNAmJ(vV-;mG}C>KqzibPL>Tj%VPvG}LY*aNy3~ zZHNg@n~9GM_7Z}UR~Lqm2@KTzm@n2a)t)vLCI|keAg+!gI7j_>-umE~6$f6MZ-V## zX8>+6fd5$T0>pCPf1aoS=8HQ<+znTp+d`c)5wa@GfxNj&fQJpZGI~b? zgMb$|l$`L8Tm9=jU|?{Jy%RNsH{Gy}=vqMMDJD)%m1^f1`e+vAH9aAQep(u-vk`@b zg#avUfvm)*XGy&oo`eEML&Tun_2^j8jpuSW2pAs$Wji>O{2XfxBFTc3Ra8vO`RLs& zwUYp>#eyUZJr%zlkX_EtKnpI=PuLT~=`@OZ6t)dYF7x(vduI_z#j~P24?x8xv~{mH z?=k-L;tupilk{CDId^Uxk*We+m!Rj*g>KNL8a;g!whGC`iHvZOD3ERhLP5#?BvM`E z_ReHbBpHH2=PrK(uuYOIpusFaWbd`MwOI+0xEcA20Vx)`=H2Nqa@poLm~!kCn7X*# zK}JHINfLT)sG&g*LS^GU?6sKEQq`G(S4pR-_!PkT8?x}=Xu9BsD1L#ukL3QYb>&=9 z&3G_d(Y+l8o(}LDapX9O9z1_UK!qrmA}Pl7?{Ozcc@w`nKd*e-){kEl98ADwX4S6# zrT4da=||lkj7y&v5-dVVV@DY<4)wyn?}rFIM5S~T3Ro0H6;!3X5cgD(|1TS8rx z&1(rlb$z~bTl@{x)gycLbCq+8!gO!&rz?f_7vLvv4H&u}mIyB>EjrJyj@6N@2!xlo zSu`%F?03RX8+@tlr^dYJ*Ah|$aB+O+Rw)-(&nB)poc4Me- zwzui07wbAF1iyi^Q=#WNZ0hs(b+ zFYVtn<)0AfFw*;jD-;uAPKzVQEcHU7$XdTSugd+_9Kz>Lp<@z*kk1Mw<~2tl)u;1k|3M}GkI(GJRqs$xR*r`*t1W5bj|&%Vz69fj77v5Bg#P}G8Mjtk z%+}r-gGG59a=Q+31%Glu|9&E9pUhqp5)r8%wJ%-QneMtkXR+n<#e(;LpCV*{BZyk9 zD`$uEpJ@6&ILd!N|L|}3Ak3fXa>(faFEjH$ev}0ntlj5N*ZbuDw@E$xryJ2=t3;ba zHUFeF{`-snd0(17gcder9~D^sp}YK#uZMxrepQC`-n+=J^B=1A|Lw_suHs-d^-psr zBkcG8Z3>_+FAB^4|0ehUO)hMc|KIIgKP|>P`ugk>6BDKOVJ?C_Fs;Q&BI= zKPmI>vE|-g)x7-t(uN6YLFb6d%F2YF*Qo!bvdU#}czJnO7Z*VVC%s|4w&88FJ&rdJ zMRgz&9&Tm&c>1tKlFRuBz>D99yLRaNzZs!?l4M|m>@w6_7Y5~C~g zkFr|1q!~62eBOF6St6YZ0J=5EFYJHUMKwF8L{yzN;S8qaEZ z`HxhyE3U}yiW;J4HV%c5xB4*%nta>SyH}1y4uEVnBjs{t9SL;%knot#G>283cuHmW z`a^a$)8C5*x+!cG6)i48T_|+|L}nwQ-&^^{-e`sl;pW=g26m*rf;eCwwrk!tCk#Mw z!d3>h%FiJ+?mu-)DV$j~Yv^{jlyPadrT%gy`u5PPH4A*qY_`h(8Q;oB)7v&rZbTIDQfqEL-D%>Et#3IZ7qP#DYn(pHwf_;{ z2DUR%x7%;fUQ%6XfP=GFG!O%wLA3YxQX(Viq@<+Q-1HT@3hd!y`rLi*vdLFRSc308 zI!*rS;9mSc^5uApY1a@*#YoW06JME-*)^hZXe8F`Q1?v~JgNg=VHV-LuXGMXs-aiV zyL$5DaT)bIzFU2%ZJ-jF3FQR8w}<-sU>Dv=;Rq(?MaLqkym2Te*R1+t3+`U40)o#3 z;@s_e+ZTF}@&a|kO0f&D1E2Rsfgsh3ifWk6FQ9Dy!25T#Mj{aIf7ud(0oe6U1rQn5 zGA}*5z9A<&yA5PoX2-^$*OwhT7oIa|!z<3GM z`JAI#*5}vbOD#drT%g-U1UZcdrTfp@{Ezkyd?hFWcyX8_JNvJi+L&yVLV%;ND_Pkouf`|H%2K*&?NP`cBwzby&{^1G5O zLjBDZdl&ZMSjR%AsyABSAX=Ju^Vu#I6wia=a!4{nH(Qm*tLKW!goJgjKEnO$npG;@ z11RpA@Xlk3OD(*E2F7k$vtb=(5}_?S$CnQz(~-IkW>MlDw*11nH-Ol7inkKn= z_s&o6hS*G#(J^X{15;0Hu|$2aw0`?zqu6)W0%N{M_Os7RvEP0&%d`~X?vt29vD7wT zc4jk2>H_Ce3gb9MW~mG8+UK;Fv{(sw`3#IvIZt1;NQ@7^j-t_E5#HS``uWA`M)F7R z)NPTe+Ty!YE{0RpMceD!`ipb525y5uoM^b@caB7M*(!6C%)a)ww5#!Q@}gIcD!;@; z&Tl9zH-b218Qo0V+pIw-zVdU_{`xR~s=MN?E{oWsBS&#?m#+N+EY>G5<%!;V+1IZ2 zMSVcSO~#f)R#3_dP1`STN3HbVHAL@;{;DYUX7_w(35sz+pe&;PhP;`W_TVAMiDcIo z0etRobGd`t0pM9OfIlyA-cNa&sl04=mgeTeGp{kkBci<%e;gO( zvN>Zs};uM3&p!0Q)H(Lb%+Q6z9CDg*}`@$T{h$o{CVv@UYA_ zpt7`^w|z5gR=4Pej2-!k8-7rEmqaZKh6eLI`1+1jRO|)v)fO~P9h`GKTxV23%n*P> zbGaJUSe8(Bm1$<1>mAx>W41SU_7AvEm)91hLRJ#UyZ?Zr+2F((bz zd2NYGR{JUwa%4S%x^4C+Apu?zTCuc7TwD~Bt2j^K!MGs5IfrymhaHZOp5WDg@cy`Vns#i@ zxfHLZ)=IG1M&BEQv^i&-YQZvUZ$iz*Fw_0bRb-aM9*H^N_SSiBSz>Z~;%R93&{f{= zj-DJ}7)#={z5t*oB|f9*?e*_^cPq}(-a+BupnGdMbfgY8Xnpy+S&f1pJ83!R>{)4pmJ+SQ0rD!{gRV!BPxF+8dD<7pK-*#aYPUii4?FVpzw#c5 zEvucfJ{U=wCLYML@z6Z{>URS;C{9z+^}hiATvisr{k8}Apa+|Z$Pe&q%tdu;BeKhe zan}@4Jgt*0;Cl77^J~nyjMln4%w)wkK`nMrKm`5P8}ttnb*-sM8<3eg;)h~-4e5i2 z^Ciut#Bpu9K9IXGBNW^HdQ$ZA*mx|mfFi_17F*nhhp$569u(?_uRBjDJ7v?*HEevk z_8kNl!&WkL0uDF%<-&J}dOSIoiR=zY^>%2K|9tbg3D|h)P^7D}jn$SD=7+sAW>P2A z=dtNH>ON&Efiz|cn@FlXclZ)sg?rHJ#sS(qO-QTVUSBj%cF}y{I$}92E6+Rc%o7hU zI!;PtaUtgJx5HW5I^MfO#ULH>47LnM!OegK%Y|2<5h@A#1^Er)R*VPR%0=NGaCjY{ z9@h*T+R42B<5?jSiEb!`GrWCO%60`$Q52dtbk$7&3ZcWpejaYyDqGEi{e;ZYb$|%W z?|DPV0_~4)!Me}WWkV0FD&J!5cvWkBqTCZl{mgi23;YjeK|SXkU<)z;@`PALlm2X) zi=Z5Q+ZobNf=Mqq4%f~6cvEQ2a`b(p?J1GxB#lKi3zUdi%e;2Epjyx26X|e#67VxS z>v+#d#7o~B0%C^K=fZ~HYh-vIsJ3@Fh5-X7Z**)HWqV@>~_yK4`iSCQGr#(H4> zRJE-E_@Z(;{rN!R55c!i!fclH9qk-7SAh{7A;g6a-z_-hOFDLQBk5nW#1Qc`3E-GE zdT?A-z{kfn1={ zGlRw8#lzz%II2y0IA4OeVALOzi+DZM^W9w?zNia`jn2tVh5KfpYFChfKYO@Q;b>HD zP9~MT{ta-VHurI%Zlu{m=_B>DM20tqueS;jn@tw5!sNmUmuPc?j)lF)6l_PzIo-@c ztAZ(SKN52}1#i~X^FDm@5hTML25=;nx#UfZn)3hG-j#<#x&Q4JPO77Htl4tv6j9_D zOB_szgos0wt;nE7mTZ$aQ>PWtVjGmA$Qmk3mQv{0vZQR~P?V4)ODTT$Gc(mpzw3Sf ze&6fLUoK{z=evB?`?Hk?P7Vr#j!%KT4WqZs*ssfA651&)x6;pJdmprJ%cb-zs2&f` zwJkjGPj8LZtArz--Yh}GWneG$w6qhH)B1U`b80M4f1&1;OO&S12azjkIL&n<9F(H_ z3n*o--A&^CTPC@X2g^VFPpRzc(J8M3#nfrrYmKqmntrhIkSpkXAC|WRJeG&Y=!1_l z+LPy4En~{;)Xh6EU4kKL(0<(0+h?FfQ66b0YM>&ocG=r!CCx9Zp<<89b{6#+*h$r%jMuu?^eG0|zzHJFb{L6C*I%?}(6Ba{TYr&rTP(?+8S9ke zLgVbkV99OHndwz=R_9i1&iSx9uf-v_N_?uIGD%ALkSqOIp5X{(tglHLXQq^k)+u3t@#NqM$Q^ zT6%;fG|PC1sZ5HVFCOGWpm+%;o#8jjs(oKj3Nz)!t*rgTM6*`?pFxY(FYC>Hs3)#r zipn=@YYTN&-_92>E1d2t)M(nVbW=98Hu*N;Mi|}5Ob#Ip*wD|VVX)h<#mndEjdRta znTIqHatGbE#V{Y)nh;W{R)ai zWxbBuaY3e(LYqw_b_yZ0Xgy&^p&gMZa#=#2pVp9{uk^Gus-ve7wQvSjkbh;u8!jR<`lI>VY86R@JaSVw+ej){aQM$EUJdd_O zz3~>i(>D_Y;{E52o~nppWP(>lD>`-~MLVo6Uc}vnc*&v3W*cEz1oT^XrXFyFKT{#1=&%75 z*V7N4HRXFe7lFVcdYyfWiP(BTior)Ifi$%F>GZ&QDpA87acFFzggWVV(D)k9QTzGI zuqQQO``&!6u0Ef!nAx+uUe<+TdVsT+o4DtLUp;zboGChW7CjUfc&)>2d$M#3vtK{z zdyClJPKj`@Q;Z8q_{fb>D#8o@cuP*#G#OhrN8)G*S%bVc26 zVd&s+z0Sh&1sVf<*Yd7@5mA~nOub$cIN9D=fj0KPbWT*Lb^~k-1^T)5nsYA_QgbKA zVR&l9s@?|mT=BiUeFKca-2!|rTbJERWl+VPs6|%ARPQ9Q7{HbHQHgOuvlaR74_g3v zC8Ezlg#7QkzUO+o3`~woLY8^J#-3PuqmjxYO$&bgd-s#q=AzTBP*&*_6@$8$ZqIX* zApH1lSVifNgz3OXt7g@cjBM$_xlm*t6J5tEG3jf`v9z?dQFjva$QRJiQDfKmP|wa@ zR4ItTqCQ3H2(TFHyy)K>v$rsYRHjoHq^ka>x6L|lsIV#+^kyaMZF&q!wc9b8+B`he zI(?ed(E;U^vsTqC>-1Bf_SGsK?)MBPlN3xZqFI6nlAnq&0$ed*;w_ZO>YNLb5%Tv5 zy+g1^1ee)R2s-jsAdtK?BUv({?^4qHaI<-;PZ({A8uIpc>W_F_eHNqfCg0H}@I%iq zIx;&b{bFCXCV~--w~km_9=AwLoaS>bgVMDtUw=QCy2Ay2E7%Vg;2+?YyGUo|^7s<*cK>=gCoSlwG z8=4#sgfMR9%f*U**a7HGV`F5=gECsnzk;mdZo8)xh8FCO)QNqW)mV_&l4KWCS3 zTNq5_iFv>g*lK0>x+|u)iYWC4Q;4-5(I=4B=iuTHq!4dSJ??x|uw@gmDK4HDn_*%k zU$b3dav=`CbnR@q_u$~*P0K4w*28q~n_d8lsgtBoq3)lfol}iuNR_pYAVF-RtKi?> z6*g&N$cnLfAT&%Y(OzLf7q_(Yb|TulH$WH-RM(`wuQBQ&9HGgjq}sa$XogXV26^Xe zOHB`s#w})?i_B^ovgvohcAe-B&PIc>3bd0d-fNdZTGIQn_Go-rjisIca*TuLhh3qa zYbOCb)jjUeSS#U(Hma}9U|J#GHc~KdE@(AwI)rJCod9E35~+BVN8{0$oNH>CRQ>xXra@$|g}|lG^j3?ar4?|H`TnjuF~BYn zvj+(2v5~s{5z9a|4z7YbsEWhGhIn(v^QGo5H%^8G?G04KJ$Rv>!kfb#$+*z zYI?XE?-@W>SC>Q^jciLUxE}a9&3t20AC`yt4t)7R2B_OiQf?m2GWa2xY=@K{>0l)A1yz14MVcMqs zTySdRO{mUALTGeW-Cux23VHPduXg0qi&AAn7+hm+Cly*4PThUAAe(4DF(7^DS@MS* zvwvF=jbGJbRIKXTzAta@R0jMC^~USNUyz6QT#YI7`=$=TaPr^R0d!OhQyTwN8TYZ9 zzf}Zl-+dic=TG*3Y-VXshWLW_Djj|-(zc{%RsYEX43O8?c70P5s?w%LSDkK?)~z%&RHk6=+VOVcumhOt+M z2%QPF$W6BR?SFa-Bdm z@%e5H!wW%Y=SmooHuWm1=q+66J0yt)Rl4i?P1U|W4Zj#zU`?r(dbc^(1jkq2RusX| zoe0%RVH}DC!si^56Te=#t0*%0lvU1WLDmAX;>;satUwG8#ADq%-awZwK~kn zsXE8gxt1=7;T{2*HE?=2X4w^^lzGvf(q{B1`KA+Ihd{~I+3c1!VB07}qJUL_gHsV{ zZ3`gOX#;Fh5M_IGdM1P>ra;9#nQ5$=Am>~ zx_|8ljG>knlDCPLE5aK+9J2Tmr>_9J1qimjuBSSx5_c`4+TpH46i1_5Y}mkfRb-bM z+YWgit$XfZ2N>F?kuOa;{eG zfJi8s%B3hTsQ_GI-n>-Ygzcng+kb`KEg03Xi9=PB6}f~~Zx#wcs!#q7 z;G$oy3_H$vOV>;*p~)LcTP+mhf-kj6`zB9GCEkCg+M~UXx{`Nf}L?V4p4j>ZR-!3r%$CmRDpiK+D-^ zglCmY*-S#y`(r6CE7;%gPEM-6CM&s-?QsAz7R&{{Yjn2Htg?uB!aDn7MKHEW~bUKE5e7! zBS<|sO`AQZ0xh~75dws(eEZ)vv=#fZf3hhIHQk+-1W^BN|Brs61^h(EP>U0g5Pwj| z-$)?e$HORk&ANnbVpIBYv)Mjvzm1&mA!4o|`?-T>ETrsd6jXZsfxwg^@Ng0Bz2nm1O_?~W)a+k?4y%dEot>V|?;=cd|o$M$h@ajHi zKzzfn%gZ%}iujc%H75xFhk)=~0H1TyFUmPDV|$RdDfm}7tI!L;|F;*=ig*G{6Iua! zwxDP?5v*%(WipQxwc0xJD4jrYkoH}Ptnoxt$Iq%&FwZ^0_T54mFhQ{8)3q#TpLup< zJ1*IIB47(lHu9<5kx!pIkF8-Ld;e^_3e}Zwi`>%t(ZQ_q14_%BGw$g{5#t*f#Hqk zf#E;73~xl_DP&^u&!8}*OK$)c@H#2&96RaUX@i`)shrMn_cLg+JotY4`sM}fYJwaO zALnt5;ot@W_4rDDQk{52K(K5W`>|X^kTdY{eNNRawPhtP@Jh5ehnmlV5dLHk@XYAz z6Nz8E!HV0WvP!(z+`)uGoK^Gk3`utW=1cL$`?vdUisxfH!sQ_9Rd<6gZ{oaMB`&iB zVlH;&%H+6TFu!?SW&;Lo2cw#BBjR(OUt^TaZ{3OF$1c{Y4zZC9v9@gYuCfVaHi{#7 zO(B$xbPfW=dW6ou^ViI;F-6vL{;i%1p&A$K%Sr-at%w$_9TbQX3$2f1gJOiUeRA*3 z=B*9jHW8J*R&KGJ{4?Q+O)9+XwdL3kSqiaHeoTno_cNf}{)}zLjYa+=YTYN6bw^se zo%}c|2JO^y@Jn!-`CYOFFcb?xuRqw13;&tOx`RINLIfUX6sxj2Qo;U$*EMtw9zcA1 z80go1JaI9vDCxmqF1rq$Im-fvw6(UHh0w8xU`r)8qFgb&${L5--i!FY%+E(UVj`v_ zLgwY3uDKfPCWW^ryyGX%hxY@X$n1Qu=(}z6`yuDZ0YOnh zU{Jg$B|uXYQ9|&rxpl`8-pdHQWCJHHr^N0Pf;90b8sann%zLQ$Opk+hCIS#UdU?Br zQ{8ZBAs8IJ`BEie2Xwb`sY_6cqk(|&z_=)o?g1BS3#%vBA;9N66 zq094lNWoQEo*YYH<0J+H$inK~n&h~I^LD=blrE7&5Mkf*{VO=WWKLK&`juM$>+4R* zf>C5kt2kJigA?(N6vApebDA0F{r;a{mL@=$*XDr{oT7wdMG&uNU;rYx;>UC^#1<)Y=8MdP&_{fYR3Ojf|>~O XkyR8PHo1~M13#N|jW=Yj-*NaqI{5+y literal 0 HcmV?d00001 diff --git a/hist/spectrum/src/TSpectrum.cxx b/hist/spectrum/src/TSpectrum.cxx index 669e200e00baf..3d4915d0dfad0 100644 --- a/hist/spectrum/src/TSpectrum.cxx +++ b/hist/spectrum/src/TSpectrum.cxx @@ -35,7 +35,7 @@ - [SpectrumBck.ps.gz](https://root.cern.ch/download/SpectrumBck.ps.gz) See also the - [online documentation](https://root.cern.ch/guides/tspectrum-manual) and + [online documentation](https://root.cern/root/htmldoc/guides/spectrum/Spectrum.html) and [tutorials](https://root.cern.ch/doc/master/group__tutorial__spectrum.html). */ diff --git a/math/splot/src/TSPlot.cxx b/math/splot/src/TSPlot.cxx index dbacfe3716bbe..e87977cf95c19 100644 --- a/math/splot/src/TSPlot.cxx +++ b/math/splot/src/TSPlot.cxx @@ -53,7 +53,7 @@ TSPlot is optimal if the control variable is uncorrelated with the discriminatin A detail description of the formalism itself, called \f$\hbox{$_s$}{\cal P}lot\f$, is given -in [1]. +in [[1](https://arxiv.org/abs/physics/0402083)]. ### The method @@ -69,9 +69,9 @@ The different terms of the log-Likelihood are: - \f$N\f$ : the total number of events in the data sample, - \f${\rm N}_{\rm s}\f$ : the number of species of events populating the data sample, - \f$N_i\f$ : the number of events expected on the average for the \f$i^{\rm th}\f$ species, - - \f${\rm f}_i(y_e)\f$" : the value of the PDFs of the discriminating variables - \f$y\f$" for the\f$i^{th}\f$ species and for event\f$e\f$", - - \f$x\f$" : the set of control variables which, by definition, do not appear in + - \f${\rm f}_i(y_e)\f$ : the value of the PDFs of the discriminating variables + \f$y\f$ for the\f$i^{th}\f$ species and for event\f$e\f$, + - \f$x\f$ : the set of control variables which, by definition, do not appear in the expression of the Likelihood function \f${\cal L}\f$. The extended log-Likelihood reads: @@ -137,11 +137,11 @@ Beside reproducing the true distribution,\f$\hbox {$_s$}{\cal P}lots\f$ bear rem \sum_{l=1}^{{\rm N}_{\rm s}} {_s{\cal P}}_l(y_e) ~=~1 ~. \tag{5} \f] - That is to say that, summing up the \f${\rm N}_{\rm s}\f$ \f$\hbox {$_s$}{\cal P}lots\f$, - one recovers the data sample distribution in \f$x\f$, and summing up the number of events - entering in a \f$\hbox{$_s$}{\cal P}lot\f$ for a given species, one recovers the yield of the - species, as provided by the fit. - The property 4 is implemented in the TSPlot class as a check. +That is to say that, summing up the \f${\rm N}_{\rm s}\f$ \f$\hbox {$_s$}{\cal P}lots\f$, +one recovers the data sample distribution in \f$x\f$, and summing up the number of events +entering in a \f$\hbox{$_s$}{\cal P}lot\f$ for a given species, one recovers the yield of the +species, as provided by the fit. +The property 4 is implemented in the TSPlot class as a check. - the sum of the statistical uncertainties per bin @@ -149,11 +149,11 @@ Beside reproducing the true distribution,\f$\hbox {$_s$}{\cal P}lots\f$ bear rem \sigma[N_{\rm n}\ _s\tilde{\rm M}_{\rm n}(x) {\delta x}]~=~\sqrt{\sum_{e \subset {\delta x}} ({_s{\cal P}}_{\rm n})^2} ~. \tag{6} \f] - reproduces the statistical uncertainty on the yield \f$N_{\rm n}\f$, as provided by the fit: - \f$\sigma[N_{\rm n}]\equiv\sqrt{\hbox{ V}_{{\rm n}{\rm n}}}\f$ . - Because of that and since the determination of the yields is optimal - when obtained using a Likelihood fit, one can conclude that the \f$\hbox{$_s$}{\cal P}lot\f$ - technique is itself an optimal method to reconstruct distributions of control variables. +reproduces the statistical uncertainty on the yield \f$N_{\rm n}\f$, as provided by the fit: +\f$\sigma[N_{\rm n}]\equiv\sqrt{\hbox{ V}_{{\rm n}{\rm n}}}\f$ . +Because of that and since the determination of the yields is optimal +when obtained using a Likelihood fit, one can conclude that the \f$\hbox{$_s$}{\cal P}lot\f$ +technique is itself an optimal method to reconstruct distributions of control variables. ### Different steps followed by TSPlot @@ -165,12 +165,12 @@ Beside reproducing the true distribution,\f$\hbox {$_s$}{\cal P}lots\f$ bear rem the later is therefore totally absent from the fit. 2. The weights \f${_s{\cal P}}\f$ are calculated using Eq. - (2) + (2) where the covariance matrix is taken from Minuit. 3. Histograms of \f$x\f$ are filled by weighting the events with \f${_s{\cal P}}\f$ . - 4. Error bars per bin are given by Eq. (6). + 4. Error bars per bin are given by Eq. (6). The \f$\hbox {$_s$}{\cal P}lots\f$ reproduce the true distributions of the species @@ -189,12 +189,10 @@ variables collectively denoted \f$y\f$ which are chosen within three possible variables denoted \f${m_{\rm ES}}\f$ , \f$\Delta E\f$ and \f${\cal F}\f$. The variable which is not incorporated in \f$y\f$ is used as the control variable \f$x\f$ . The six distributions of the three variables are assumed to be the ones -depicted in Fig. 1. +depicted in Fig. 1. -\image html splot_pdfmesNIM.png width=800 - -#### Figure 1: +\image html splot_pdfmesNIM.png Figure 1 width=800 Distributions of the three discriminating variables available to perform the Likelihood fit: \f${m_{\rm ES}}\f$ , \f$\Delta E\f$ , \f${\cal F}\f$ . @@ -207,22 +205,19 @@ slices the histograms in 25 bins. A data sample being built through a Monte Carlo simulation based on the distributions shown in Fig. -1, -one obtains the three distributions of Fig. -2. +1, +one obtains the three distributions of Fig. 2. Whereas the distribution of \f$\Delta E\f$ clearly indicates the presence of the signal, the distribution of \f${m_{\rm ES}}\f$ and \f${\cal F}\f$ are less obviously populated by signal. -\image html splot_genfiTOTNIM.png width=800 - -#### Figure 2: +\image html splot_genfiTOTNIM.png Figure 2 width=800 Distributions of the three discriminating variables for signal plus background. The three distributions are the ones obtained from a data sample obtained through a Monte Carlo simulation based on the distributions shown in Fig. -1. +1. The data sample consists of 500 signal events and 5000 background events. @@ -230,7 +225,7 @@ Choosing \f$\Delta E\f$ and \f${\cal F}\f$ as discriminating variables to determ \f$N_1\f$ and \f$N_2\f$ through a maximum Likelihood fit, one builds, for the control variable \f${m_{\rm ES}}\f$ which is unknown to the fit, the two \f$\hbox {$_s$}{\cal P}lots\f$ for signal and background shown in -Fig. 3. +Fig. 3. One observes that the \f$\hbox{$_s$}{\cal P}lot\f$ for signal reproduces correctly the PDF even where the latter vanishes, although the error bars remain sizeable. This results from the almost @@ -238,7 +233,7 @@ complete cancellation between positive and negative weights: the sum of weights is close to zero while the sum of weights squared is not. The occurence of negative weights occurs through the appearance of the covariance matrix, and its negative components, in the definition of -Eq. (2). +Eq. (2). A word of caution is in order with respect to the error bars. Whereas @@ -259,9 +254,7 @@ are consistent with the actual observation, at a given confidence level. -\image html splot_mass-bkg-sPlot.png width=600 - -#### Figure 3: +\image html splot_mass-bkg-sPlot.png Figure 3 width=600 The \f$\hbox {$_s$}{\cal P}lots\f$ (signal on top, background on bottom) obtained for \f${m_{\rm ES}}\f$ are represented as dots with error bars. @@ -273,14 +266,12 @@ Choosing \f${m_{\rm ES}}\f$ and \f$\Delta E\f$ as discriminating variables to determine \f$N_1\f$ and \f$N_2\f$ through a maximum Likelihood fit, one builds, for the control variable \f${\cal F}\f$ which is unknown to the fit, the two \f$\hbox {$_s$}{\cal P}lots\f$ for signal and background shown in -Fig. 4. +Fig. 4. In the \f$\hbox{$_s$}{\cal P}lot\f$ for signal one observes that error bars are the largest in the \f$x\f$ regions where the background is the largest. -\image html splot_fisher-bkg-sPlot.png width=600 - -#### Figure 4: +\image html splot_fisher-bkg-sPlot.png Figure 4 width=600 The \f$\hbox {$_s$}{\cal P}lots\f$ (signal on top, background on bottom) obtained for \f${\cal F}\f$ are represented as dots with error bars. They are obtained From 2152119f873cfaec6342aba097d08d643d2271be Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Thu, 7 Oct 2021 13:33:40 +0200 Subject: [PATCH 308/577] Fix compilation with Visual Studio 2022 Fix compilation error of TBB with the coming soon Visual Studio 2022 (using MSBuild instead of devenv) and silence a couple of deprecation warnings with `-std:c++17` --- cmake/modules/SearchInstalledSoftware.cmake | 2 +- cmake/modules/SetUpWindows.cmake | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index ebe69811dbcdd..6da0540b4e449 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1318,7 +1318,7 @@ if(builtin_tbb) URL_HASH SHA256=${tbb_sha256} INSTALL_DIR ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND devenv.exe /useenv /upgrade build/${vsdir}/makefile.sln - BUILD_COMMAND devenv.exe /useenv /build "Release|${tbb_arch}" build/${vsdir}/makefile.sln + BUILD_COMMAND MSBuild.exe build/${vsdir}/makefile.sln /p:Configuration=Release /p:Platform=${tbb_arch} INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different build/${vsdir}/${tbb_arch}/Release/tbb.dll ${CMAKE_BINARY_DIR}/bin/ COMMAND ${CMAKE_COMMAND} -E copy_if_different build/${vsdir}/${tbb_arch}/Release/tbbmalloc.dll ${CMAKE_BINARY_DIR}/bin/ COMMAND ${CMAKE_COMMAND} -E copy_if_different build/${vsdir}/${tbb_arch}/Release/tbbmalloc_proxy.dll ${CMAKE_BINARY_DIR}/bin/ diff --git a/cmake/modules/SetUpWindows.cmake b/cmake/modules/SetUpWindows.cmake index 42fd22ee0136d..ba51cb4bfda0d 100644 --- a/cmake/modules/SetUpWindows.cmake +++ b/cmake/modules/SetUpWindows.cmake @@ -39,6 +39,9 @@ elseif(MSVC) if(CMAKE_PROJECT_NAME STREQUAL ROOT) set(CMAKE_CXX_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCXXFLAGS} -EHsc- -W3 -wd4141 -wd4291 -wd4244 -wd4049 -wd4146 -D_WIN32 ${ARCH} -D_XKEYCHECK_H -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS") set(CMAKE_C_FLAGS "-nologo -I${CMAKE_SOURCE_DIR}/build/win -FIw32pragma.h -FIsehmap.h ${BLDCFLAGS} -EHsc- -W3 -D_WIN32 ${ARCH} -DNOMINMAX") + if(CMAKE_CXX_STANDARD GREATER_EQUAL 17) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING") + endif() if(win_broken_tests) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DR__ENABLE_BROKEN_WIN_TESTS") endif() From d0f9bbeb2a44a3728b0598544d8bdf49c0c6d2a1 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Tue, 5 Oct 2021 14:48:34 +0200 Subject: [PATCH 309/577] [tmva] Remove very outdated checks for C++ version ROOT now requires at least C++14. --- tmva/tmva/inc/TMVA/Config.h | 14 -------------- tmva/tmva/inc/TMVA/MsgLogger.h | 10 ---------- tmva/tmva/inc/TMVA/Tools.h | 6 ------ tmva/tmva/inc/TMVA/Types.h | 4 +--- tmva/tmva/src/Config.cxx | 12 ------------ tmva/tmva/src/MethodANNBase.cxx | 6 ------ tmva/tmva/src/MsgLogger.cxx | 6 ------ tmva/tmva/src/Tools.cxx | 12 ------------ tmva/tmva/src/Types.cxx | 15 ++++++++------- 9 files changed, 9 insertions(+), 76 deletions(-) diff --git a/tmva/tmva/inc/TMVA/Config.h b/tmva/tmva/inc/TMVA/Config.h index 1f743118a8364..54f6a77a63391 100644 --- a/tmva/tmva/inc/TMVA/Config.h +++ b/tmva/tmva/inc/TMVA/Config.h @@ -36,9 +36,7 @@ // Singleton class for global configuration settings used by TMVA // // // ////////////////////////////////////////////////////////////////////////// -#if __cplusplus > 199711L #include -#endif #include "Rtypes.h" #include "TString.h" @@ -136,26 +134,14 @@ namespace TMVA { Config( const Config& ); Config& operator=( const Config&); virtual ~Config(); -#if __cplusplus > 199711L static std::atomic fgConfigPtr; -#else - static Config* fgConfigPtr; -#endif private: -#if __cplusplus > 199711L std::atomic fDrawProgressBar; // draw progress bar to indicate training evolution std::atomic fNWorkers; // Default number of workers for multi-process jobs std::atomic fUseColoredConsole; // coloured standard output std::atomic fSilent; // no output at all std::atomic fWriteOptionsReference; // if set true: Configurable objects write file with option reference -#else - Bool_t fDrawProgressBar; // draw progress bar to indicate training evolution - UInt_t fNWorkers; // Default number of workers for multi-process jobs - Bool_t fUseColoredConsole; // coloured standard output - Bool_t fSilent; // no output at all - Bool_t fWriteOptionsReference; // if set true: Configurable objects write file with option reference -#endif mutable MsgLogger* fLogger; // message logger MsgLogger& Log() const { return *fLogger; } diff --git a/tmva/tmva/inc/TMVA/MsgLogger.h b/tmva/tmva/inc/TMVA/MsgLogger.h index ad1f6dc9cbe9f..978a7309f397b 100644 --- a/tmva/tmva/inc/TMVA/MsgLogger.h +++ b/tmva/tmva/inc/TMVA/MsgLogger.h @@ -43,9 +43,7 @@ #include #include #include -#if __cplusplus > 199711L #include -#endif // ROOT include(s) #include "TObject.h" @@ -113,19 +111,11 @@ namespace TMVA { static const std::string fgSuffix; // suffix following source name EMsgType fActiveType; // active type static const UInt_t fgMaxSourceSize; // maximum length of source name -#if __cplusplus > 199711L static std::atomic fgOutputSupressed; // disable the output globally (used by generic booster) static std::atomic fgInhibitOutput; // flag to suppress all output static std::atomic*> fgTypeMap; // matches output types with strings static std::atomic*> fgColorMap; // matches output types with terminal colors -#else - static Bool_t fgOutputSupressed; // disable the output globally (used by generic booster) - static Bool_t fgInhibitOutput; // flag to suppress all output - - static const std::map* fgTypeMap; // matches output types with strings - static const std::map* fgColorMap; // matches output types with terminal colors -#endif EMsgType fMinType; // minimum type for output ClassDef(MsgLogger,0) // Ostringstream derivative to redirect and format logging output diff --git a/tmva/tmva/inc/TMVA/Tools.h b/tmva/tmva/inc/TMVA/Tools.h index 7cb0e4fffcecc..a235fdf4756c1 100644 --- a/tmva/tmva/inc/TMVA/Tools.h +++ b/tmva/tmva/inc/TMVA/Tools.h @@ -41,9 +41,7 @@ #include #include #include -#if __cplusplus > 199711L #include -#endif #include "TXMLEngine.h" @@ -228,11 +226,7 @@ namespace TMVA { const TString fRegexp; mutable MsgLogger* fLogger; MsgLogger& Log() const { return *fLogger; } -#if __cplusplus > 199711L static std::atomic fgTools; -#else - static Tools* fgTools; -#endif // xml tools diff --git a/tmva/tmva/inc/TMVA/Types.h b/tmva/tmva/inc/TMVA/Types.h index d9c97fe17c1b9..eae90b943d379 100644 --- a/tmva/tmva/inc/TMVA/Types.h +++ b/tmva/tmva/inc/TMVA/Types.h @@ -38,9 +38,7 @@ ////////////////////////////////////////////////////////////////////////// #include -#if __cplusplus > 199711L #include -#endif #include "RtypesCore.h" @@ -171,7 +169,7 @@ namespace TMVA { private: Types(); -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER static std::atomic fgTypesPtr; #else static Types* fgTypesPtr; diff --git a/tmva/tmva/src/Config.cxx b/tmva/tmva/src/Config.cxx index 88c2b70832348..2a5cacf5e7745 100644 --- a/tmva/tmva/src/Config.cxx +++ b/tmva/tmva/src/Config.cxx @@ -41,11 +41,7 @@ Singleton class for global configuration settings used by TMVA. ClassImp(TMVA::Config); -#if __cplusplus > 199711L std::atomic TMVA::Config::fgConfigPtr{ 0 }; -#else -TMVA::Config* TMVA::Config::fgConfigPtr = 0; -#endif TMVA::Config& TMVA::gConfig() { return TMVA::Config::Instance(); } @@ -93,11 +89,7 @@ TMVA::Config::~Config() void TMVA::Config::DestroyInstance() { -#if __cplusplus > 199711L delete fgConfigPtr.exchange(0); -#else - if (fgConfigPtr != 0) { delete fgConfigPtr; fgConfigPtr = 0;} -#endif } //////////////////////////////////////////////////////////////////////////////// @@ -105,7 +97,6 @@ void TMVA::Config::DestroyInstance() TMVA::Config& TMVA::Config::Instance() { -#if __cplusplus > 199711L if(!fgConfigPtr) { TMVA::Config* tmp = new Config(); TMVA::Config* expected = 0; @@ -115,7 +106,4 @@ TMVA::Config& TMVA::Config::Instance() } } return *fgConfigPtr; -#else - return fgConfigPtr ? *fgConfigPtr :*(fgConfigPtr = new Config()); -#endif } diff --git a/tmva/tmva/src/MethodANNBase.cxx b/tmva/tmva/src/MethodANNBase.cxx index 56a8e9ee2a6bf..eed7cbe28709d 100644 --- a/tmva/tmva/src/MethodANNBase.cxx +++ b/tmva/tmva/src/MethodANNBase.cxx @@ -66,9 +66,7 @@ Base class for all TMVA methods using artificial neural networks. #include #include #include -#if __cplusplus > 199711L #include -#endif using std::vector; @@ -1008,11 +1006,7 @@ void TMVA::MethodANNBase::WriteMonitoringHistosToFile() const CreateWeightMonitoringHists( "weights_hist" ); // now save all the epoch-wise monitoring information -#if __cplusplus > 199711L static std::atomic epochMonitoringDirectoryNumber{0}; -#else - static int epochMonitoringDirectoryNumber = 0; -#endif int epochVal = epochMonitoringDirectoryNumber++; TDirectory* epochdir = NULL; if( epochVal == 0 ) diff --git a/tmva/tmva/src/MsgLogger.cxx b/tmva/tmva/src/MsgLogger.cxx index 8b3de2e8f3ca2..495112a322ffe 100644 --- a/tmva/tmva/src/MsgLogger.cxx +++ b/tmva/tmva/src/MsgLogger.cxx @@ -57,15 +57,9 @@ const UInt_t TMVA::MsgLogger::fgMaxSourceSize = 25; const std::string TMVA::MsgLogger::fgPrefix = ""; const std::string TMVA::MsgLogger::fgSuffix = ": "; -#if __cplusplus > 199711L std::atomic TMVA::MsgLogger::fgInhibitOutput{kFALSE}; std::atomic*> TMVA::MsgLogger::fgTypeMap{0}; std::atomic*> TMVA::MsgLogger::fgColorMap{0}; -#else -Bool_t TMVA::MsgLogger::fgInhibitOutput = kFALSE; -const std::map* TMVA::MsgLogger::fgTypeMap = 0; -const std::map* TMVA::MsgLogger::fgColorMap = 0; -#endif static std::unique_ptr > gOwnTypeMap; static std::unique_ptr > gOwnColorMap; diff --git a/tmva/tmva/src/Tools.cxx b/tmva/tmva/src/Tools.cxx index 15f21cdbc946a..8d90eaa212dc7 100644 --- a/tmva/tmva/src/Tools.cxx +++ b/tmva/tmva/src/Tools.cxx @@ -65,15 +65,10 @@ Global auxiliary applications and data treatment routines. using namespace std; -#if __cplusplus > 199711L std::atomic TMVA::Tools::fgTools{0}; -#else -TMVA::Tools* TMVA::Tools::fgTools = 0; -#endif TMVA::Tools& TMVA::gTools() { return TMVA::Tools::Instance(); } TMVA::Tools& TMVA::Tools::Instance() { -#if __cplusplus > 199711L if(!fgTools) { Tools* tmp = new Tools(); Tools* expected = 0; @@ -83,18 +78,11 @@ TMVA::Tools& TMVA::Tools::Instance() { } } return *fgTools; -#else - return fgTools?*(fgTools): *(fgTools = new Tools()); -#endif } void TMVA::Tools::DestroyInstance() { //NOTE: there is no thread safe way to do this so // one must only call this method ones in an executable -#if __cplusplus > 199711L if (fgTools != 0) { delete fgTools.load(); fgTools=0; } -#else - if (fgTools != 0) { delete fgTools; fgTools=0; } -#endif } //////////////////////////////////////////////////////////////////////////////// diff --git a/tmva/tmva/src/Types.cxx b/tmva/tmva/src/Types.cxx index c760ecaadaa6e..3587cd906d15c 100644 --- a/tmva/tmva/src/Types.cxx +++ b/tmva/tmva/src/Types.cxx @@ -38,11 +38,12 @@ Singleton class for Global types used by TMVA #include "TString.h" #include -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER +#include #include #endif -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER std::atomic TMVA::Types::fgTypesPtr{0}; static std::mutex gTypesMutex; #else @@ -68,7 +69,7 @@ TMVA::Types::~Types() TMVA::Types& TMVA::Types::Instance() { -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER if(!fgTypesPtr) { Types* tmp = new Types(); Types* expected = 0; @@ -88,7 +89,7 @@ TMVA::Types& TMVA::Types::Instance() void TMVA::Types::DestroyInstance() { -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER if (fgTypesPtr != 0) { delete fgTypesPtr.load(); fgTypesPtr = 0; } #else if (fgTypesPtr != 0) { delete fgTypesPtr; fgTypesPtr = 0; } @@ -99,7 +100,7 @@ void TMVA::Types::DestroyInstance() Bool_t TMVA::Types::AddTypeMapping( Types::EMVA method, const TString& methodname ) { -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER std::lock_guard guard(gTypesMutex); #endif std::map::const_iterator it = fStr2type.find( methodname ); @@ -119,7 +120,7 @@ Bool_t TMVA::Types::AddTypeMapping( Types::EMVA method, const TString& methodnam TMVA::Types::EMVA TMVA::Types::GetMethodType( const TString& method ) const { -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER std::lock_guard guard(gTypesMutex); #endif std::map::const_iterator it = fStr2type.find( method ); @@ -134,7 +135,7 @@ TMVA::Types::EMVA TMVA::Types::GetMethodType( const TString& method ) const TString TMVA::Types::GetMethodName( TMVA::Types::EMVA method ) const { -#if __cplusplus > 199711L && !defined _MSC_VER +#if !defined _MSC_VER std::lock_guard guard(gTypesMutex); #endif std::map::const_iterator it = fStr2type.begin(); From f770dca0014b6b440c36bb42fc5d2ed4be1c1b1d Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Tue, 5 Oct 2021 16:29:03 +0200 Subject: [PATCH 310/577] Simplify ThreadLocalStorage.h Rely on thread_local from C++11 unconditionally and remove the case from !__cplusplus, where R__HAS_THREAD_LOCAL would never be set. --- core/thread/inc/ThreadLocalStorage.h | 165 ++------------------------- 1 file changed, 7 insertions(+), 158 deletions(-) diff --git a/core/thread/inc/ThreadLocalStorage.h b/core/thread/inc/ThreadLocalStorage.h index 51ee894adf17d..5e690567e7d9d 100644 --- a/core/thread/inc/ThreadLocalStorage.h +++ b/core/thread/inc/ThreadLocalStorage.h @@ -13,7 +13,7 @@ * thread_local or * Pthread-Keys * depending on the (configure-set) CPP-variables R__HAS___THREAD, - * R__HAS_DECLSPEC_THREAD, R__HAS_THREAD_LOCAL or R__HAS_PTHREAD. + * R__HAS_DECLSPEC_THREAD or R__HAS_PTHREAD. * * Use the macros TTHREAD_TLS_DECLARE, TTHREAD_TLS_INIT, and the * getters and setters TTHREAD_TLS_GET and TTHREAD_TLS_GET @@ -36,8 +36,7 @@ * func (a, TTHREAD_TLS_SET(int, my_var, 5)); * as we do not use the gcc-extension of returning macro-values. * - * C++11 requires the implementation of the thread_local storage but - * a few platforms do not yet implement it. + * C++11 requires the implementation of the thread_local storage. * * For simple type use: * TTHREAD_TLS(int) varname; @@ -82,34 +81,6 @@ # define R__HAS_DECLSPEC_THREAD #endif -#if __cplusplus >= 201103L - -// Clang 3.4 also support SD-6 (feature test macros __cpp_*), but no thread local macro -# if defined(__clang__) - -# if __has_feature(cxx_thread_local) - // thread_local was added in Clang 3.3 - // Still requires libstdc++ from GCC 4.8 - // For that __GLIBCXX__ isn't good enough - // Also the MacOS build of clang does *not* support thread local yet. -# define R__HAS_THREAD_LOCAL -# else -# define R__HAS___THREAD -# endif - -# elif defined(__INTEL_COMPILER) -# define R__HAS__THREAD - -# elif defined(__GNUG__) && (__GNUC__ <= 4 && __GNUC_MINOR__ < 8) - // The C++11 thread_local keyword is supported in GCC only since 4.8 -# define R__HAS___THREAD -# else -# define R__HAS_THREAD_LOCAL -# endif - -#endif - - #ifdef __cplusplus // Note that the order is relevant, more than one of the flag might be @@ -121,7 +92,7 @@ # define TTHREAD_TLS_ARRAY(type,size,name) static type name[size] # define TTHREAD_TLS_PTR(name) &name -#elif defined(R__HAS_THREAD_LOCAL) +#else # define TTHREAD_TLS(type) thread_local type # define TTHREAD_TLS_ARRAY(type,size,name) thread_local type name[size] @@ -131,124 +102,6 @@ # define TTHREAD_TLS_DECL_ARG(type, name, arg) thread_local type name(arg) # define TTHREAD_TLS_DECL_ARG2(type, name, arg1, arg2) thread_local type name(arg1,arg2) -#elif defined(R__HAS___THREAD) - -# define TTHREAD_TLS(type) static __thread type -# define TTHREAD_TLS_ARRAY(type,size,name) static __thread type name[size] -# define TTHREAD_TLS_PTR(name) &name - -#elif defined(R__HAS_DECLSPEC_THREAD) - -# define TTHREAD_TLS(type) static __declspec(thread) type -# define TTHREAD_TLS_ARRAY(type,size,name) static __declspec(thread) type name[size] -# define TTHREAD_TLS_PTR(name) &name - -#elif defined(R__HAS_PTHREAD) - -#include -#include - -template class TThreadTLSWrapper -{ -private: - pthread_key_t fKey; - type fInitValue; - - static void key_delete(void *arg) { - assert (NULL != arg); - delete (type*)(arg); - } - -public: - - TThreadTLSWrapper() : fInitValue() { - - pthread_key_create(&(fKey), key_delete); - } - - TThreadTLSWrapper(const type &value) : fInitValue(value) { - - pthread_key_create(&(fKey), key_delete); - } - - ~TThreadTLSWrapper() { - pthread_key_delete(fKey); - } - - type& get() { - void *ptr = pthread_getspecific(fKey); - if (!ptr) { - ptr = new type(fInitValue); - assert (NULL != ptr); - (void) pthread_setspecific(fKey, ptr); - } - return *(type*)ptr; - } - - type& operator=(const type &in) { - type &ptr = get(); - ptr = in; - return ptr; - } - - operator type&() { - return get(); - } - -}; - -template class TThreadTLSArrayWrapper -{ -private: - pthread_key_t fKey; - - static void key_delete(void *arg) { - assert (NULL != arg); - delete [] (type*)(arg); - } - -public: - - TThreadTLSArrayWrapper() { - - pthread_key_create(&(fKey), key_delete); - } - - ~TThreadTLSArrayWrapper() { - pthread_key_delete(fKey); - } - - type* get() { - void *ptr = pthread_getspecific(fKey); - if (!ptr) { - ptr = new type[size]; - assert (NULL != ptr); - (void) pthread_setspecific(fKey, ptr); - } - return (type*)ptr; - } - -// type& operator=(const type &in) { -// type &ptr = get(); -// ptr = in; -// return ptr; -// } -// - operator type*() { - return get(); - } - -}; - -# define TTHREAD_TLS(type) static TThreadTLSWrapper -# define TTHREAD_TLS_ARRAY(type,size,name) static TThreadTLSArrayWrapper name; -# define TTHREAD_TLS_PTR(name) &(name.get()) -# define TTHREAD_TLS_OBJ(index,type,name) type &name( TTHREAD_TLS_INIT() ) - -#else - -#error "No Thread Local Storage (TLS) technology for this platform specified." - #endif // Available on all platforms @@ -315,15 +168,11 @@ T &TTHREAD_TLS_INIT(ArgType arg) { #else // __cplusplus -#if defined(R__HAS_THREAD_LOCAL) - -# define TTHREAD_TLS_DECLARE(type,name) -# define TTHREAD_TLS_INIT(type,name,value) thread_local type name = (value) -# define TTHREAD_TLS_SET(type,name,value) name = (value) -# define TTHREAD_TLS_GET(type,name) (name) -# define TTHREAD_TLS_FREE(name) +// TODO: Evaluate using thread_local / _Thread_local from C11 instead of +// platform-specific solutions such as __thread, __declspec(thread) or the +// pthreads API functions. -#elif defined(R__HAS___THREAD) +#if defined(R__HAS___THREAD) # define TTHREAD_TLS_DECLARE(type,name) # define TTHREAD_TLS_INIT(type,name,value) static __thread type name = (value) From e82e2d9b5a4cdb508f626b71891d19f989fed893 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Tue, 5 Oct 2021 14:50:20 +0200 Subject: [PATCH 311/577] Update rest of preprocessor code for C++14 --- .../pyroot/cppyy/cppyy/test/cpp11features.cxx | 4 ---- .../pyroot/cppyy/cppyy/test/cpp11features.h | 4 ---- bindings/r/inc/RExports.h | 2 -- config/root-config.in | 2 +- core/base/inc/TMathBase.h | 4 ---- core/foundation/inc/ROOT/RConfig.hxx | 24 +++++++++---------- documentation/doxygen/Makefile | 2 +- 7 files changed, 13 insertions(+), 29 deletions(-) diff --git a/bindings/pyroot/cppyy/cppyy/test/cpp11features.cxx b/bindings/pyroot/cppyy/cppyy/test/cpp11features.cxx index cf79b7d6ae0c9..c1d47b4016504 100644 --- a/bindings/pyroot/cppyy/cppyy/test/cpp11features.cxx +++ b/bindings/pyroot/cppyy/cppyy/test/cpp11features.cxx @@ -1,5 +1,3 @@ -#if __cplusplus >= 201103L - #include "cpp11features.h" @@ -37,5 +35,3 @@ void implicit_converion_move(TestMoving2&&) { // for std::function testing std::function FNCreateTestStructFunc() { return [](const FNTestStruct& t) { return t.t; }; } std::function FunctionNS::FNCreateTestStructFunc() { return [](const FNTestStruct& t) { return t.t; }; } - -#endif // c++11 and later diff --git a/bindings/pyroot/cppyy/cppyy/test/cpp11features.h b/bindings/pyroot/cppyy/cppyy/test/cpp11features.h index e2609f8bacb98..f0eba340766b0 100644 --- a/bindings/pyroot/cppyy/cppyy/test/cpp11features.h +++ b/bindings/pyroot/cppyy/cppyy/test/cpp11features.h @@ -1,5 +1,3 @@ -#if __cplusplus >= 201103L - #include #include #include @@ -114,5 +112,3 @@ namespace std { size_t operator()(const StructWithHash&) const { return 17; } }; } // namespace std - -#endif // c++11 and later diff --git a/bindings/r/inc/RExports.h b/bindings/r/inc/RExports.h index 17e84ccc98c97..f5e8ad302dc23 100644 --- a/bindings/r/inc/RExports.h +++ b/bindings/r/inc/RExports.h @@ -30,9 +30,7 @@ #include #include //support for std c++11 classes -// #if __cplusplus > 199711L #include -// #endif //pragma to disable warnings on Rcpp which have //so many noise compiling diff --git a/config/root-config.in b/config/root-config.in index 77f913b2a4772..a1efa1c80e72c 100755 --- a/config/root-config.in +++ b/config/root-config.in @@ -347,7 +347,7 @@ win32) ;; win32gcc | win64gcc) # Windows (32 or 64) with cygwin gcc - auxcflags="-std=gnu++11" + auxcflags="-std=gnu++14" auxlibs= forcelibs=$rootulibs forceglibs=$rootuglibs diff --git a/core/base/inc/TMathBase.h b/core/base/inc/TMathBase.h index 6264679254d0a..8df6f0317380b 100644 --- a/core/base/inc/TMathBase.h +++ b/core/base/inc/TMathBase.h @@ -127,11 +127,7 @@ inline Long_t TMath::Abs(Long_t d) { return std::labs(d); } inline Long64_t TMath::Abs(Long64_t d) -#if __cplusplus >= 201103 { return std::llabs(d); } -#else -{ return (d >= 0) ? d : -d; } -#endif inline Float_t TMath::Abs(Float_t d) { return std::abs(d); } diff --git a/core/foundation/inc/ROOT/RConfig.hxx b/core/foundation/inc/ROOT/RConfig.hxx index 484eea701ffb5..dea1b93801362 100644 --- a/core/foundation/inc/ROOT/RConfig.hxx +++ b/core/foundation/inc/ROOT/RConfig.hxx @@ -44,10 +44,10 @@ # define R__NULLPTR # endif #else -# if defined(__cplusplus) && (__cplusplus < 201103L) -# error "ROOT requires support for C++11 or higher." +# if defined(__cplusplus) && (__cplusplus < 201402L) +# error "ROOT requires support for C++14 or higher." # if defined(__GNUC__) || defined(__clang__) -# error "Pass `-std=c++11` as compiler argument." +# error "Pass `-std=c++14` as compiler argument." # endif # endif #endif @@ -333,16 +333,14 @@ # endif #endif -#if __cplusplus >= 201402L -# if defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_12) - // At least on 10.11, the compiler defines but the c++ library does not provide the size operator delete. - // See for example https://llvm.org/bugs/show_bug.cgi?id=22951 or - // https://github.com/gperftools/gperftools/issues/794. -# elif !defined(__GNUC__) -# define R__SIZEDDELETE -# elif __GNUC__ > 4 -# define R__SIZEDDELETE -# endif +#if defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_12) + // At least on 10.11, the compiler defines but the c++ library does not provide the size operator delete. + // See for example https://llvm.org/bugs/show_bug.cgi?id=22951 or + // https://github.com/gperftools/gperftools/issues/794. +#elif !defined(__GNUC__) +# define R__SIZEDDELETE +#elif __GNUC__ > 4 +# define R__SIZEDDELETE #endif /* allows symbols to be hidden from the shared library export symbol table */ diff --git a/documentation/doxygen/Makefile b/documentation/doxygen/Makefile index 5e6f11286ee4f..12bbd13e84159 100644 --- a/documentation/doxygen/Makefile +++ b/documentation/doxygen/Makefile @@ -26,7 +26,7 @@ endef all: filter folders mathjax js images doxygen filter: - `root-config --cxx` -o filter filter.cxx -std=c++11 + `root-config --cxx` -o filter filter.cxx -std=c++14 mathjax: $(call MkDir,$(DOXYGEN_IMAGE_PATH)) From 9cbf7f624d163865e5c6366f4165c63cf122137c Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Thu, 7 Oct 2021 16:43:41 +0200 Subject: [PATCH 312/577] [cling][windows] change compiler flags (#9083) * [cling][windows] change compiler flags - Set the `-std:c++14` / `-std:c++17` flag depending on the version of Visual Studio (only if building outside ROOT) - Split the one line exports in three lines to fix a potential issue with Ninja on Windows (missing a white space between each `/EXPORT:` specifier) * Add a forgotten `endif()` --- interpreter/cling/CMakeLists.txt | 14 ++++++++++---- interpreter/cling/tools/demo/CMakeLists.txt | 7 +++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/interpreter/cling/CMakeLists.txt b/interpreter/cling/CMakeLists.txt index 65b14b2711eef..aa075b13b0800 100644 --- a/interpreter/cling/CMakeLists.txt +++ b/interpreter/cling/CMakeLists.txt @@ -292,10 +292,16 @@ endif () # The package needs to be compiler without RTTI information if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") - if(NOT (MSVC_VERSION LESS 1910)) - # Add the /std:c++14 flag for Visual Studio 2017 (and up) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -GR-") + if(NOT DEFINED ROOT_BINARY_DIR) + # Add the /std:c++XX flag for Visual Studio if not building as part of ROOT + if(MSVC_VERSION GREATER_EQUAL 1920) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std:c++17") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING") + elseif(MSVC_VERSION GREATER_EQUAL 1910) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std:c++14") + endif() endif() else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") diff --git a/interpreter/cling/tools/demo/CMakeLists.txt b/interpreter/cling/tools/demo/CMakeLists.txt index 992cac990a6db..85887f07dfcb3 100644 --- a/interpreter/cling/tools/demo/CMakeLists.txt +++ b/interpreter/cling/tools/demo/CMakeLists.txt @@ -39,8 +39,7 @@ set_target_properties(cling-demo if(MSVC) set_target_properties(cling-demo PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS 1) - set_property(TARGET cling-demo APPEND_STRING PROPERTY LINK_FLAGS - "/EXPORT:?setValueNoAlloc@internal@runtime@cling@@YAXPEAX00D_K@Z - /EXPORT:?setValueNoAlloc@internal@runtime@cling@@YAXPEAX00DM@Z - /EXPORT:cling_runtime_internal_throwIfInvalidPointer") + set_property(TARGET cling-demo APPEND_STRING PROPERTY LINK_FLAGS " /EXPORT:?setValueNoAlloc@internal@runtime@cling@@YAXPEAX00D_K@Z") + set_property(TARGET cling-demo APPEND_STRING PROPERTY LINK_FLAGS " /EXPORT:?setValueNoAlloc@internal@runtime@cling@@YAXPEAX00DM@Z") + set_property(TARGET cling-demo APPEND_STRING PROPERTY LINK_FLAGS " /EXPORT:cling_runtime_internal_throwIfInvalidPointer") endif() From 191a7aaf75567e7ca50a0a49cfb194514350adb9 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Thu, 7 Oct 2021 14:20:56 +0200 Subject: [PATCH 313/577] [tclingg] Do not link libCoreEntitlements (macOS 12 error in ACLiC). --- core/metacling/src/TCling.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 1c7a78df19a73..05fb268641def 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -3394,6 +3394,15 @@ void TCling::RegisterLoadedSharedLibrary(const char* filename) || strstr(filename, "/usr/lib/libAudioToolboxUtility") || strstr(filename, "/usr/lib/liboah") || strstr(filename, "/usr/lib/libRosetta") + || strstr(filename, "/usr/lib/libCoreEntitlements") + // These are candidates for suppression, too: + // -lfakelink -lapple_nghttp2 -lnetwork -lsqlite3 -lenergytrace -lCoreEntitlements + // -lMobileGestalt -lcoretls -lcoretls_cfhelpers -lxar.1 -lcompression -larchive.2 + // -lxml2.2 -lpcap.A -ldns_services -llzma.5 -lbz2.1.0 -liconv.2 -lcharset.1 + // -lCheckFix -lmecabra -lmecab -lgermantok -lThaiTokenizer -lChineseTokenizer + // -lcmph -lutil -lapp_launch_measurement -lxslt.1 -lspindump -late -lexpat.1 + // -lAudioStatistics -lSMC -lperfcheck -lmis -lIOReport -lheimdal-asn1 + // "cannot link directly with dylib/framework, your binary is not an allowed client of // /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ // SDKs/MacOSX.sdk/usr/lib/libAudioToolboxUtility.tbd for architecture x86_64 From 5ef102dba57208ae07522251a0cf9a15656715fb Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Fri, 8 Oct 2021 16:34:51 +0200 Subject: [PATCH 314/577] Fix compilation warning on MacOS (#9088) * Fix compilation warning on MacOS Fix the following compilation warning on MacOS: ``` builtins/xrootd/XROOTD-prefix/include/xrootd/XrdCl/XrdClOptional.hh:58:29: warning: unused parameter 'n' [-Wunused-parameter] ``` * Update net/netx/CMakeLists.txt Co-authored-by: Axel Naumann Co-authored-by: Axel Naumann --- net/netx/CMakeLists.txt | 3 ++- net/netxng/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/net/netx/CMakeLists.txt b/net/netx/CMakeLists.txt index d6cc4c305065f..62716bcdccd46 100644 --- a/net/netx/CMakeLists.txt +++ b/net/netx/CMakeLists.txt @@ -27,5 +27,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Netx ) target_compile_options(Netx PRIVATE ${XROOTD_CFLAGS}) -target_include_directories(Netx PRIVATE ${XROOTD_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/proof/proofd/inc) +target_include_directories(Netx SYSTEM PRIVATE ${XROOTD_INCLUDE_DIRS}) +target_include_directories(Netx PRIVATE ${CMAKE_SOURCE_DIR}/proof/proofd/inc) target_link_libraries(Netx PRIVATE ${XROOTD_LIBRARIES}) diff --git a/net/netxng/CMakeLists.txt b/net/netxng/CMakeLists.txt index a57702eafcc8a..6a7b5a7fb84d5 100644 --- a/net/netxng/CMakeLists.txt +++ b/net/netxng/CMakeLists.txt @@ -28,6 +28,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(NetxNG XROOTD ) -target_include_directories(NetxNG PRIVATE ${XROOTD_INCLUDE_DIRS}) +target_include_directories(NetxNG SYSTEM PRIVATE ${XROOTD_INCLUDE_DIRS}) target_compile_options(NetxNG PRIVATE -Wno-shadow) From a96699adbef5647b0c9c47acc70d1433c12a4605 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 8 Oct 2021 12:31:06 +0200 Subject: [PATCH 315/577] [DistRDF] Prevent copy by moving vectors when creating returned tuple --- bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py index c7f8b5b6b9e8f..ec1184a46e774 100644 --- a/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py +++ b/bindings/experimental/distrdf/python/DistRDF/CppWorkflow.py @@ -94,6 +94,7 @@ def __init__(self, head_node, range_id): #include "ROOT/RResultHandle.hxx" #include "ROOT/RDFHelpers.hxx" +#include #include #include ''' @@ -533,7 +534,7 @@ def _get_code(self): {nodes} - return {{ result_handles, result_types, output_nodes }}; + return {{ std::move(result_handles), std::move(result_types), std::move(output_nodes) }}; }} }} From c055a95568b9d598781b2b53f125c13023706b82 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Mon, 11 Oct 2021 10:04:08 +0200 Subject: [PATCH 316/577] [webgui] improve RWebWindow documentation --- gui/webdisplay/inc/ROOT/RWebWindow.hxx | 1 + gui/webdisplay/src/RWebWindow.cxx | 31 +++++++----- gui/webdisplay/src/RWebWindowsManager.cxx | 59 ++++++++++++----------- 3 files changed, 49 insertions(+), 42 deletions(-) diff --git a/gui/webdisplay/inc/ROOT/RWebWindow.hxx b/gui/webdisplay/inc/ROOT/RWebWindow.hxx index 62ee3ff04b790..f69ad6eb5d92e 100644 --- a/gui/webdisplay/inc/ROOT/RWebWindow.hxx +++ b/gui/webdisplay/inc/ROOT/RWebWindow.hxx @@ -158,6 +158,7 @@ private: std::shared_ptr FindOrCreateConnection(unsigned wsid, bool make_new, const char *query); + /// Find connection with specified websocket id std::shared_ptr FindConnection(unsigned wsid) { return FindOrCreateConnection(wsid, false, nullptr); } std::shared_ptr RemoveConnection(unsigned wsid); diff --git a/gui/webdisplay/src/RWebWindow.cxx b/gui/webdisplay/src/RWebWindow.cxx index d66a06392724c..264747e8accbe 100644 --- a/gui/webdisplay/src/RWebWindow.cxx +++ b/gui/webdisplay/src/RWebWindow.cxx @@ -758,6 +758,10 @@ bool RWebWindow::ProcessWS(THttpCallArg &arg) return true; } +////////////////////////////////////////////////////////////////////////////////////////// +/// Complete websocket send operation +/// Clear "doing send" flag and check if next operation has to be started + void RWebWindow::CompleteWSSend(unsigned wsid) { auto conn = FindConnection(wsid); @@ -953,7 +957,7 @@ std::string RWebWindow::GetClientVersion() const ///////////////////////////////////////////////////////////////////////// /// Set arbitrary JSON code, which is accessible via conn.GetUserArgs() method /// This JSON code injected into main HTML document into JSROOT.connectWebWindow() -/// Must be called before RWebWindow::Show() method is called +/// Must be set before RWebWindow::Show() method is called void RWebWindow::SetUserArgs(const std::string &args) { @@ -987,7 +991,9 @@ int RWebWindow::NumConnections(bool with_pending) const /// Configures recording of communication data in protocol file /// Provided filename will be used to store JSON array with names of written files - text or binary /// If data was send from client, "send" entry will be placed. JSON file will look like: -/// ["send","msg0.txt","send","msg1.txt","msg2.txt"] +/// +/// ["send", "msg0.txt", "send", "msg1.txt", "msg2.txt"] +/// /// If empty file name is provided, data recording will be disabled /// Recorded data can be used in JSROOT directly to test client code without running C++ server @@ -1013,8 +1019,8 @@ unsigned RWebWindow::GetConnectionId(int num) const /////////////////////////////////////////////////////////////////////////////////// /// returns true if specified connection id exists -/// connid is connection (0 - any) -/// if only_active==false, also inactive connections check or connections which should appear +/// \param connid is connection id (0 - any) +/// \param only_active when true only active connection will be checked, otherwise also pending (not yet established) connections are checked bool RWebWindow::HasConnection(unsigned connid, bool only_active) const { @@ -1081,9 +1087,9 @@ RWebWindow::ConnectionsList_t RWebWindow::GetConnections(unsigned connid, bool o } /////////////////////////////////////////////////////////////////////////////////// -/// returns true if sending via specified connection can be performed -/// if direct==true, checks if direct sending (without queuing) is possible -/// if connid==0, all existing connections are checked +/// Returns true if sending via specified connection can be performed +/// \param connid is connection id, when 0 - all existing connections are checked +/// \param direct - when true, checks if direct sending (without queuing) is possible bool RWebWindow::CanSend(unsigned connid, bool direct) const { @@ -1106,8 +1112,8 @@ bool RWebWindow::CanSend(unsigned connid, bool direct) const } /////////////////////////////////////////////////////////////////////////////////// -/// returns send queue length for specified connection -/// if connid==0, maximal value for all connections is returned +/// Returns send queue length for specified connection +/// \param connid is connection id, when 0 - maximal value for all connections is returned /// If wrong connection is specified, -1 is return int RWebWindow::GetSendQueueLength(unsigned connid) const @@ -1123,7 +1129,6 @@ int RWebWindow::GetSendQueueLength(unsigned connid) const return maxq; } - /////////////////////////////////////////////////////////////////////////////////// /// Internal method to send data /// Allows to specify channel. chid==1 is normal communication, chid==0 for internal with higher priority @@ -1182,7 +1187,7 @@ void RWebWindow::SubmitData(unsigned connid, bool txt, std::string &&data, int c /////////////////////////////////////////////////////////////////////////////////// /// Sends data to specified connection -/// If connid==0, data will be send to all connections +/// If \param connid is 0, data will be send to all connections void RWebWindow::Send(unsigned connid, const std::string &data) { @@ -1191,7 +1196,7 @@ void RWebWindow::Send(unsigned connid, const std::string &data) /////////////////////////////////////////////////////////////////////////////////// /// Send binary data to specified connection -/// If connid==0, data will be sent to all connections +/// If \param connid is 0, data will be sent to all connections void RWebWindow::SendBinary(unsigned connid, std::string &&data) { @@ -1200,7 +1205,7 @@ void RWebWindow::SendBinary(unsigned connid, std::string &&data) /////////////////////////////////////////////////////////////////////////////////// /// Send binary data to specified connection -/// If connid==0, data will be sent to all connections +/// If \param connid is 0, data will be sent to all connections void RWebWindow::SendBinary(unsigned connid, const void *data, std::size_t len) { diff --git a/gui/webdisplay/src/RWebWindowsManager.cxx b/gui/webdisplay/src/RWebWindowsManager.cxx index 8252967fcded1..469ccc50ae945 100644 --- a/gui/webdisplay/src/RWebWindowsManager.cxx +++ b/gui/webdisplay/src/RWebWindowsManager.cxx @@ -37,8 +37,8 @@ using namespace ROOT::Experimental; /////////////////////////////////////////////////////////////// /// Parse boolean gEnv variable which should be "yes" or "no" -/// Returns -1 if not defined -/// Returns true or false +/// Returns 1 for true or 0 for false +/// Returns \param dflt if result is not defined int RWebWindowWSHandler::GetBoolEnv(const std::string &name, int dflt) { @@ -182,7 +182,7 @@ void RWebWindowsManager::AssignWindowThreadId(RWebWindow &win) /// WebGui.ServerCert: sertificate_filename.pem /// /// All incoming requests processed in THttpServer in timer handler with 10 ms timeout. -/// One may decrease value to improve latency or increase to minimize CPU load +/// One may decrease value to improve latency or increase value to minimize CPU load /// /// WebGui.HttpTimer: 10 /// @@ -217,6 +217,7 @@ void RWebWindowsManager::AssignWindowThreadId(RWebWindow &win) /// WebGui.WSLongpoll: no /// /// Following parameter controls browser max-age caching parameter for files (default 3600) +/// When 0 is specified, browser cache will be disabled /// /// WebGui.HttpMaxAge: 3600 /// @@ -379,7 +380,6 @@ bool RWebWindowsManager::CreateServer(bool with_http) std::shared_ptr RWebWindowsManager::CreateWindow() { - // we book manager mutex for a longer operation, locked again in server creation std::lock_guard grd(fMutex); @@ -475,31 +475,32 @@ std::string RWebWindowsManager::GetUrl(const RWebWindow &win, bool remote) /// when starting root with --web argument like: "root --web=chrome". When root started in web server mode "root --web=server", /// no any web browser will be started - just URL will be printout, which can be entered in any running web browser /// -/// If allowed, same window can be displayed several times (like for TCanvas) -/// -/// Following parameters can be configured in rootrc file: -/// -/// WebGui.Chrome: full path to Google Chrome executable -/// WebGui.ChromeBatch: command to start chrome in batch -/// WebGui.ChromeInteractive: command to start chrome in interactive mode -/// WebGui.Firefox: full path to Mozilla Firefox executable -/// WebGui.FirefoxBatch: command to start Firefox in batch mode -/// WebGui.FirefoxInteractive: command to start Firefox in interactive mode -/// WebGui.FirefoxProfile: name of Firefox profile to use -/// WebGui.FirefoxProfilePath: file path to Firefox profile -/// WebGui.FirefoxRandomProfile: usage of random Firefox profile -1 never, 0 - only for batch mode (dflt), 1 - always -/// WebGui.LaunchTmout: time required to start process in seconds (default 30 s) -/// WebGui.OperationTmout: time required to perform WebWindow operation like execute command or update drawings -/// WebGui.RecordData: if specified enables data recording for each web window 0 - off, 1 - on -/// WebGui.JsonComp: compression factor for JSON conversion, if not specified - each widget uses own default values -/// WebGui.ForceHttp: 0 - off (default), 1 - always create real http server to run web window -/// WebGui.Console: -1 - output only console.error(), 0 - add console.warn(), 1 - add console.log() output -/// WebGui.ConnCredits: 10 - number of packets which can be send by server or client without acknowledge from receiving side -/// WebGui.openui5src: alternative location for openui5 like https://openui5.hana.ondemand.com/ -/// WebGui.openui5libs: list of pre-loaded ui5 libs like sap.m, sap.ui.layout, sap.ui.unified -/// WebGui.openui5theme: openui5 theme like sap_belize (default) or sap_fiori_3 -/// -/// HTTP-server related parameters documented in RWebWindowsManager::CreateServer() method +/// If allowed, same window can be displayed several times (like for RCanvas or TCanvas) +/// +/// Following parameters can be configured in rootrc file: +/// +/// WebGui.Chrome: full path to Google Chrome executable +/// WebGui.ChromeBatch: command to start chrome in batch, used for image production, like "$prog --headless --disable-gpu $geometry $url" +/// WebGui.ChromeHeadless: command to start chrome in headless mode, like "fork: --headless --disable-gpu $geometry $url" +/// WebGui.ChromeInteractive: command to start chrome in interactive mode, like "$prog $geometry --app=\'$url\' &" +/// WebGui.Firefox: full path to Mozilla Firefox executable +/// WebGui.FirefoxHeadless: command to start Firefox in headless mode, like "fork:--headless --private-window --no-remote $profile $url" +/// WebGui.FirefoxInteractive: command to start Firefox in interactive mode, like "$prog --private-window \'$url\' &" +/// WebGui.FirefoxProfile: name of Firefox profile to use +/// WebGui.FirefoxProfilePath: file path to Firefox profile +/// WebGui.FirefoxRandomProfile: usage of random Firefox profile -1 never, 0 - only for headless mode (dflt), 1 - always +/// WebGui.LaunchTmout: time required to start process in seconds (default 30 s) +/// WebGui.OperationTmout: time required to perform WebWindow operation like execute command or update drawings +/// WebGui.RecordData: if specified enables data recording for each web window 0 - off, 1 - on +/// WebGui.JsonComp: compression factor for JSON conversion, if not specified - each widget uses own default values +/// WebGui.ForceHttp: 0 - off (default), 1 - always create real http server to run web window +/// WebGui.Console: -1 - output only console.error(), 0 - add console.warn(), 1 - add console.log() output +/// WebGui.ConnCredits: 10 - number of packets which can be send by server or client without acknowledge from receiving side +/// WebGui.openui5src: alternative location for openui5 like https://openui5.hana.ondemand.com/ +/// WebGui.openui5libs: list of pre-loaded ui5 libs like sap.m, sap.ui.layout, sap.ui.unified +/// WebGui.openui5theme: openui5 theme like sap_belize (default) or sap_fiori_3 +/// +/// THttpServer-related parameters documented in \ref CreateServer method unsigned RWebWindowsManager::ShowWindow(RWebWindow &win, const RWebDisplayArgs &user_args) { From a4efb5a063de35cdff3da08f677ca6b12df4a103 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Mon, 11 Oct 2021 11:05:52 +0200 Subject: [PATCH 317/577] [jsroot] dev 11/10/2021 Fix/improve TGraph redrawing Fix X/Y projection statistc Provide tooltips for RH1 error drawings like for TH1 Better support custom conext menu for histograms --- js/changes.md | 2 ++ js/scripts/JSRoot.core.js | 2 +- js/scripts/JSRoot.gpad.js | 42 +++++++++++++++----------- js/scripts/JSRoot.hierarchy.js | 8 +++-- js/scripts/JSRoot.hist.js | 45 +++++++++++++++------------ js/scripts/JSRoot.hist3d.js | 2 +- js/scripts/JSRoot.interactive.js | 9 ++---- js/scripts/JSRoot.menu.js | 4 +++ js/scripts/JSRoot.more.js | 33 ++++++++++++++------ js/scripts/JSRoot.painter.js | 52 +++++++++++++++++++++++++++++++- js/scripts/JSRoot.v7gpad.js | 36 ++++++++++++---------- js/scripts/JSRoot.v7hist.js | 30 +++++++++++------- 12 files changed, 179 insertions(+), 86 deletions(-) diff --git a/js/changes.md b/js/changes.md index 1c9d84c9d9108..57438dc6eb973 100644 --- a/js/changes.md +++ b/js/changes.md @@ -5,6 +5,8 @@ 2. Fix problem with logy/logz drawing in lego plots 3. Provide x3dscNNN and y3dscNNN draw option for histogram to resize x/y axis 4. Provide JSROOT.Painter.setDefaultDrawOpt to change default draw option +5. Provide example of custom entries in context menu +6. Fix error with projection statistic calculations ## Changes in 6.2.0 diff --git a/js/scripts/JSRoot.core.js b/js/scripts/JSRoot.core.js index a0b324e38fbe6..f2f31760938f6 100644 --- a/js/scripts/JSRoot.core.js +++ b/js/scripts/JSRoot.core.js @@ -104,7 +104,7 @@ /** @summary JSROOT version date * @desc Release date in format day/month/year like "14/01/2021"*/ - JSROOT.version_date = "3/09/2021"; + JSROOT.version_date = "11/10/2021"; /** @summary JSROOT version id and date * @desc Produced by concatenation of {@link JSROOT.version_id} and {@link JSROOT.version_date} diff --git a/js/scripts/JSRoot.gpad.js b/js/scripts/JSRoot.gpad.js index faec9da7d08de..9bd4df90d56ec 100644 --- a/js/scripts/JSRoot.gpad.js +++ b/js/scripts/JSRoot.gpad.js @@ -1241,7 +1241,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { } } - if ((this.zoom_ymin == this.zoom_ymax) && (opts.zoom_ymin != opts.zoom_ymax) && !this.zoomChangedInteractive("y")) { + if ((opts.zoom_ymin != opts.zoom_ymax) && ((this.zoom_ymin == this.zoom_ymax) || !this.zoomChangedInteractive("y"))) { this.zoom_ymin = opts.zoom_ymin; this.zoom_ymax = opts.zoom_ymax; } @@ -4133,7 +4133,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { /** @summary Changes layout * @returns {Promise} indicating when finished */ - TCanvasPainter.prototype.changeLayout = function(layout_kind) { + TCanvasPainter.prototype.changeLayout = function(layout_kind, mainid) { let current = this.getLayoutKind(); if (current == layout_kind) return Promise.resolve(true); @@ -4152,7 +4152,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { if (layout_kind == 'simple') { main = origin; - for (let k=0;k { let grid = new JSROOT.GridDisplay(origin.node(), layout_kind); - if (layout_kind.indexOf("vert")==0) { - main = d3.select(grid.getGridFrame(0)); - sidebar = d3.select(grid.getGridFrame(1)); - } else { - main = d3.select(grid.getGridFrame(1)); - sidebar = d3.select(grid.getGridFrame(0)); - } + if (mainid == undefined) + mainid = (layout_kind.indexOf("vert") == 0) ? 0 : 1; + + main = d3.select(grid.getGridFrame(mainid)); + sidebar = d3.select(grid.getGridFrame(1 - mainid)); main.classed("central_panel", true).style('position','relative'); sidebar.classed("side_panel", true).style('position','relative'); @@ -4201,20 +4199,28 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { if (this.showUI5ProjectionArea) return this.showUI5ProjectionArea(kind); - let layout = 'simple'; + let layout = 'simple', mainid; - if (kind == "X") layout = 'vert2_31'; else - if (kind == "Y") layout = 'horiz2_13'; + switch(kind) { + case "X": + case "bottom": layout = 'vert2_31'; mainid = 0; break; + case "Y": + case "left": layout = 'horiz2_13'; mainid = 1; break; + case "top": layout = 'vert2_13'; mainid = 1; break; + case "right": layout = 'horiz2_31'; mainid = 0; break; + } - return this.changeLayout(layout); + return this.changeLayout(layout, mainid); } /** @summary Draw projection for specified histogram * @private */ - TCanvasPainter.prototype.drawProjection = function(kind,hist) { + TCanvasPainter.prototype.drawProjection = function(kind, hist, hopt) { if (!this.proj_painter) return; // ignore drawing if projection not configured + if (hopt === undefined) hopt = "hist"; + if (this.proj_painter === 1) { let canv = JSROOT.create("TCanvas"), @@ -4228,7 +4234,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { canv.fUxmin = main.logx ? Math.log10(main.scale_xmin) : main.scale_xmin; canv.fUxmax = main.logx ? Math.log10(main.scale_xmax) : main.scale_xmax; drawopt = "fixframe"; - } else { + } else if (kind == "Y") { canv.fBottomMargin = pad.fBottomMargin; canv.fTopMargin = pad.fTopMargin; canv.fLogx = main.logy; @@ -4237,7 +4243,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { drawopt = "rotate"; } - canv.fPrimitives.Add(hist, "hist"); + canv.fPrimitives.Add(hist, hopt); let promise = this.drawInUI5ProjectionArea ? this.drawInUI5ProjectionArea(canv, drawopt) @@ -4246,7 +4252,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { promise.then(painter => { this.proj_painter = painter; }); } else { let hp = this.proj_painter.getMainPainter(); - if (hp) hp.updateObject(hist, "hist"); + if (hp) hp.updateObject(hist, hopt); this.proj_painter.redrawPad(); } } diff --git a/js/scripts/JSRoot.hierarchy.js b/js/scripts/JSRoot.hierarchy.js index 60e9b3ed9676b..58809298cf6b7 100644 --- a/js/scripts/JSRoot.hierarchy.js +++ b/js/scripts/JSRoot.hierarchy.js @@ -1824,7 +1824,6 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { * @param {string} filepath - URL to ROOT file * @returns {Promise} when file is opened */ HierarchyPainter.prototype.openRootFile = function(filepath) { - // first check that file with such URL already opened let isfileopened = false; this.forEachRootFile(item => { if (item._fullurl===filepath) isfileopened = true; }); @@ -2669,7 +2668,10 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { JSROOT.buildNobrowserGUI = function(gui_element, gui_kind) { let myDiv = (typeof gui_element == 'string') ? d3.select('#' + gui_element) : d3.select(gui_element); - if (myDiv.empty()) return alert('no div for simple nobrowser gui found'); + if (myDiv.empty()) { + alert('no div for simple nobrowser gui found'); + return Promise.resolve(null); + } let online = false, drawing = false; if (gui_kind == 'online') @@ -2713,7 +2715,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { if (d.has("websocket")) opt+=";websocket"; console.log('try to draw first object'); - return hpainter.display("", opt).then(() => { return hpainter; }); + return hpainter.display("", opt).then(() => hpainter); }); } diff --git a/js/scripts/JSRoot.hist.js b/js/scripts/JSRoot.hist.js index 9e8cfba04f1c4..c1bb72851f1d4 100644 --- a/js/scripts/JSRoot.hist.js +++ b/js/scripts/JSRoot.hist.js @@ -1447,8 +1447,10 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (d.check('PAL', true)) this.Palette = d.partAsInt(); // this is zooming of histo content - if (d.check('MINIMUM:', true)) this.minimum = parseFloat(d.part); else this.minimum = histo.fMinimum; - if (d.check('MAXIMUM:', true)) this.maximum = parseFloat(d.part); else this.maximum = histo.fMaximum; + if (d.check('MINIMUM:', true)) { this.ominimum = true; this.minimum = parseFloat(d.part); } + else this.minimum = histo.fMinimum; + if (d.check('MAXIMUM:', true)) { this.omaximum = true; this.maximum = parseFloat(d.part); } + else this.maximum = histo.fMaximum; // this is actual range of data - used by graph drawing if (d.check('YMIN:', true)) this.ymin = parseFloat(d.part); if (d.check('YMAX:', true)) this.ymax = parseFloat(d.part); @@ -2288,6 +2290,9 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { this.decodeOptions(opt || histo.fOption); } + if (!this.options.ominimum) this.options.minimum = histo.fMinimum; + if (!this.options.omaximum) this.options.maximum = histo.fMaximum; + if (this.snapid || !fp || !fp.zoomChangedInteractive()) this.checkPadRange(); @@ -3578,7 +3583,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { w = histo.getBinContent(i + 1); } - if ((xmax===null) || (w>wmax)) { xmax = xx; wmax = w; } + if ((xmax === null) || (w > wmax)) { xmax = xx; wmax = w; } stat_sumw += w; stat_sumwx += w * xx; @@ -3586,7 +3591,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { } // when no range selection done, use original statistic from histogram - if (!fp.isAxisZoomed("x") && (histo.fTsumw>0)) { + if (!fp.isAxisZoomed("x") && (histo.fTsumw > 0)) { stat_sumw = histo.fTsumw; stat_sumwx = histo.fTsumwx; stat_sumwx2 = histo.fTsumwx2; @@ -3950,7 +3955,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { } path_err += "M" + midx + "," + (my-yerr1+dend) + endy + "v" + (yerr1+yerr2-2*dend) + endy; if (hints_err !== null) - hints_err += "M" + (midx-edx) + "," + (my-yerr1) + "h" + (2*edx) + "v" + (yerr1+yerr2) + "h" + (-2*edx) + "z"; + hints_err += "M" + (midx-edx) + "," + (my-yerr1) + "h" + (2*edx) + "v" + (yerr1+yerr2) + "h" + (-2*edx) + "z"; }; let draw_bin = bin => { @@ -4337,7 +4342,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { } } - if (findbin!==null) { + if (findbin !== null) { // if bin on boundary found, check that x position is ok if ((findbin === left) && (grx1 > pnt_x + gapx)) findbin = null; else if ((findbin === right-1) && (grx2 < pnt_x - gapx)) findbin = null; else @@ -4640,7 +4645,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { * @private */ TH2Painter.prototype.toggleProjection = function(kind, width) { - if ((kind=="Projections") || (kind=="Off")) kind = ""; + if ((kind == "Projections") || (kind == "Off")) kind = ""; if ((typeof kind == 'string') && (kind.length>1)) { width = parseInt(kind.substr(1)); @@ -4649,7 +4654,7 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { if (!width) width = 1; - if (kind && (this.is_projection==kind)) { + if (kind && (this.is_projection == kind)) { if (this.projection_width === width) { kind = ""; } else { @@ -4661,22 +4666,18 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { delete this.proj_hist; let new_proj = (this.is_projection === kind) ? "" : kind; - this.is_projection = ""; // disable projection redraw until callback this.projection_width = width; + this.is_projection = ""; // avoid projection handling until area is created - this.getCanvPainter().toggleProjection(new_proj).then(() => this.redrawProjection("toggling", new_proj)); + this.provideSpecialDrawArea(new_proj).then(() => { this.is_projection = new_proj; return this.redrawProjection(); }); } /** @summary Redraw projection * @private */ TH2Painter.prototype.redrawProjection = function(ii1, ii2, jj1, jj2) { - if (ii1 === "toggling") { - this.is_projection = ii2; - ii1 = ii2 = undefined; - } if (!this.is_projection) return; - if (jj2 == undefined) { + if (jj2 === undefined) { if (!this.tt_handle) return; ii1 = Math.round((this.tt_handle.i1 + this.tt_handle.i2)/2); ii2 = ii1+1; jj1 = Math.round((this.tt_handle.j1 + this.tt_handle.j2)/2); jj2 = jj1+1; @@ -4710,20 +4711,24 @@ JSROOT.define(['d3', 'painter', 'gpad'], (d3, jsrp) => { } if (this.is_projection == "X") { - for (let i=0;i { pnt.disabled = true; // do not invoke graphics // collect tooltips from pad painter - it has list of all drawn objects - let hints = pp.processPadTooltipEvent(pnt), exact = null; + let hints = pp.processPadTooltipEvent(pnt), exact = null, res; for (let k = 0; (k { this.remove_bind = this.remove.bind(this); } + /** @summary Returns object with mouse event position when context menu was actiavted + * @desc Return object will have members "clientX" and "clientY" */ + getEventPosition() { return this.show_evnt; } + /** @summary Add menu item * @param {string} name - item name * @param {function} func - func called when item is selected */ diff --git a/js/scripts/JSRoot.more.js b/js/scripts/JSRoot.more.js index 55de63568b1ce..7fc6cca5ee0a4 100644 --- a/js/scripts/JSRoot.more.js +++ b/js/scripts/JSRoot.more.js @@ -814,9 +814,20 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { TGraphPainter.prototype = Object.create(JSROOT.ObjectPainter.prototype); /** @summary Redraw graph + * @desc may redraw histogram which was used to draw axes + * @returns {Promise} for ready * @private */ TGraphPainter.prototype.redraw = function() { - this.drawGraph(); + let promise = Promise.resolve(true); + + if (this.$redraw_hist) { + delete this.$redraw_hist; + let hist_painter = this.getMainPainter(); + if (hist_painter && hist_painter.$secondary && this.axes_draw) + promise = hist_painter.redraw(); + } + + return promise.then(() => this.drawGraph()); } /** @summary Cleanup graph painter */ @@ -829,7 +840,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { /** @summary Decode options */ TGraphPainter.prototype.decodeOptions = function(opt) { - if ((typeof opt == "string") && (opt.indexOf("same ")==0)) + if ((typeof opt == "string") && (opt.indexOf("same ") == 0)) opt = opt.substr(5); let graph = this.getObject(), @@ -1161,7 +1172,7 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { } - /** @summary draw TGraph as SVG */ + /** @summary draw TGraph */ TGraphPainter.prototype.drawGraph = function() { let pmain = this.get_main(); @@ -1487,10 +1498,9 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { } } - if (JSROOT.batch_mode) return; - - return JSROOT.require(['interactive']) - .then(inter => inter.addMoveHandler(this, this.testEditable())); + if (!JSROOT.batch_mode) + return JSROOT.require(['interactive']) + .then(inter => inter.addMoveHandler(this, this.testEditable())); } /** @summary Provide tooltip at specified point @@ -1953,13 +1963,18 @@ JSROOT.define(['d3', 'painter', 'math', 'gpad'], (d3, jsrp) => { graph.fNpoints = obj.fNpoints; this.createBins(); + delete this.$redraw_hist; + // if our own histogram was used as axis drawing, we need update histogram as well if (this.axes_draw) { let histo = this.createHistogram(obj.fHistogram); histo.fTitle = graph.fTitle; // copy title - let main = this.getMainPainter(); - main.updateObject(histo, this.options.HOptions); + let hist_painter = this.getMainPainter(); + if (hist_painter && hist_painter.$secondary) { + hist_painter.updateObject(histo, this.options.HOptions); + this.$redraw_hist = true; + } } return true; diff --git a/js/scripts/JSRoot.painter.js b/js/scripts/JSRoot.painter.js index 530a015b87961..05339362ffa07 100644 --- a/js/scripts/JSRoot.painter.js +++ b/js/scripts/JSRoot.painter.js @@ -2282,7 +2282,6 @@ JSROOT.define(['d3'], (d3) => { return true; } - /** @summary Creates marker attributes object * @desc Can be used to produce markers in painter. * See {@link JSROOT.TAttMarkerHandler} for more info. @@ -3060,6 +3059,57 @@ JSROOT.define(['d3'], (d3) => { }, this._user_tooltip_timeout); } + /** @summary Provide projection areas + * @param kind - "X", "Y" or "" + * @private */ + ObjectPainter.prototype.provideSpecialDrawArea = function(kind) { + if (kind == this._special_draw_area) + return Promise.resolve(true); + + return this.getCanvPainter().toggleProjection(kind).then(() => { + this._special_draw_area = kind; + return true; + }); + } + + /** @summary Provide projection areas + * @param kind - "X", "Y" or "" + * @private */ + ObjectPainter.prototype.drawInSpecialArea = function(obj, opt) { + let canp = this.getCanvPainter(); + if (!this._special_draw_area || !canp || typeof canp.drawProjection !== "function") + return Promise.resolve(false); + + return canp.drawProjection(this._special_draw_area, obj, opt); + } + + /** @summary Get tooltip for painter and specified event position + * @param {Object} evnt - object wiith clientX and clientY positions + * @private */ + ObjectPainter.prototype.getToolTip = function(evnt) { + if (!evnt || (evnt.clientX === undefined) || (evnt.clientY === undefined)) return null; + + let frame = this.getFrameSvg(); + if (frame.empty()) return null; + let layer = frame.select(".main_layer"); + if (layer.empty()) return null; + + let pos = d3.pointer(evnt, layer.node()); + let pnt = { touch: false, x: pos[0], y: pos[1] }; + + if (typeof this.extractToolTip == 'function') + return this.extractToolTip(pnt); + + pnt.disabled = true; + + let res = null; + + if (typeof this.processTooltipEvent == 'function') + res = this.processTooltipEvent(pnt); + + return res && res.user_info ? res.user_info : res; + } + // =========================================================== diff --git a/js/scripts/JSRoot.v7gpad.js b/js/scripts/JSRoot.v7gpad.js index ddb8274ba1007..463b4d3e24390 100644 --- a/js/scripts/JSRoot.v7gpad.js +++ b/js/scripts/JSRoot.v7gpad.js @@ -3485,7 +3485,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { * @private */ RPadPainter.prototype.drawNextSnap = function(lst, indx) { - if (indx===undefined) { + if (indx === undefined) { indx = -1; // flag used to prevent immediate pad redraw during first draw this._snaps_map = {}; // to control how much snaps are drawn @@ -3516,7 +3516,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { // first appropriate painter for the object // if same object drawn twice, two painters will exists - for (let k=0; k { for (let n = 0; n < arr.length; ++n) { let name = arr[n].fString, p = name.indexOf("="); if (p > 0) - ListOfColors[parseInt(name.substr(0,p))] =name.substr(p+1); + ListOfColors[parseInt(name.substr(0,p))] = name.substr(p+1); } this.root_colors = ListOfColors; @@ -3701,7 +3701,7 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { let isanyfound = false, isanyremove = false; // find and remove painters which no longer exists in the list - for (let k=0;k { /** @summary Changes layout * @returns {Promise} indicating when finished */ - RCanvasPainter.prototype.changeLayout = function(layout_kind) { + RCanvasPainter.prototype.changeLayout = function(layout_kind, mainid) { let current = this.getLayoutKind(); if (current == layout_kind) return Promise.resolve(true); @@ -4276,13 +4276,11 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { let grid = new JSROOT.GridDisplay(origin.node(), layout_kind); - if (layout_kind.indexOf("vert")==0) { - main = d3.select(grid.getGridFrame(0)); - sidebar = d3.select(grid.getGridFrame(1)); - } else { - main = d3.select(grid.getGridFrame(1)); - sidebar = d3.select(grid.getGridFrame(0)); - } + if (mainid == undefined) + mainid = (layout_kind.indexOf("vert") == 0) ? 0 : 1; + + main = d3.select(grid.getGridFrame(mainid)); + sidebar = d3.select(grid.getGridFrame(1 - mainid)); main.classed("central_panel", true).style('position','relative'); sidebar.classed("side_panel", true).style('position','relative'); @@ -4314,12 +4312,18 @@ JSROOT.define(['d3', 'painter'], (d3, jsrp) => { if (this.showUI5ProjectionArea) return this.showUI5ProjectionArea(kind); - let layout = 'simple'; + let layout = 'simple', mainid; - if (kind == "X") layout = 'vert2_31'; else - if (kind == "Y") layout = 'horiz2_13'; + switch(kind) { + case "X": + case "bottom": layout = 'vert2_31'; mainid = 0; break; + case "Y": + case "left": layout = 'horiz2_13'; mainid = 1; break; + case "top": layout = 'vert2_13'; mainid = 1; break; + case "right": layout = 'horiz2_31'; mainid = 0; break; + } - return this.changeLayout(layout); + return this.changeLayout(layout, mainid); } /** @summary Draw projection for specified histogram diff --git a/js/scripts/JSRoot.v7hist.js b/js/scripts/JSRoot.v7hist.js index 2dc9eb4e678f4..c6e61c6fa97ae 100644 --- a/js/scripts/JSRoot.v7hist.js +++ b/js/scripts/JSRoot.v7hist.js @@ -1282,7 +1282,9 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { left = handle.i1, right = handle.i2, di = handle.stepi, - histo = this.getHisto(), xaxis = this.getAxis("x"), + histo = this.getHisto(), + want_tooltip = !JSROOT.batch_mode && JSROOT.settings.Tooltip, + xaxis = this.getAxis("x"), res = "", lastbin = false, startx, currx, curry, x, grx, y, gry, curry_min, curry_max, prevy, prevx, i, bestimin, bestimax, exclude_zero = !options.Zero, @@ -1292,6 +1294,7 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { show_text = options.Text, text_profile = show_text && (this.options.TextKind == "E") && this.isRProfile(), path_fill = null, path_err = null, path_marker = null, path_line = null, + hints_err = null, endx = "", endy = "", dend = 0, my, yerr1, yerr2, bincont, binerr, mx1, mx2, midx, text_font; @@ -1303,6 +1306,7 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { else path_fill = ""; } else if (options.Error) { path_err = ""; + hints_err = want_tooltip ? "" : null; } if (show_line) path_line = ""; @@ -1386,12 +1390,15 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { if (path_marker !== null) path_marker += this.markeratt.create(midx, my); if (path_err !== null) { + let edx = 5; if (this.options.errorX > 0) { - let mmx1 = Math.round(midx - (mx2-mx1)*this.options.errorX), - mmx2 = Math.round(midx + (mx2-mx1)*this.options.errorX); + edx = Math.round((mx2-mx1)*this.options.errorX); + let mmx1 = midx - edx, mmx2 = midx + edx; path_err += "M" + (mmx1+dend) +","+ my + endx + "h" + (mmx2-mmx1-2*dend) + endx; } path_err += "M" + midx +"," + (my-yerr1+dend) + endy + "v" + (yerr1+yerr2-2*dend) + endy; + if (hints_err !== null) + hints_err += "M" + (midx-edx) + "," + (my-yerr1) + "h" + (2*edx) + "v" + (yerr1+yerr2) + "h" + (-2*edx) + "z"; } } } @@ -1500,6 +1507,13 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { .attr("d", path_err) .call(this.lineatt.func); + if ((hints_err !== null) && (hints_err.length > 0)) + this.draw_g.append("svg:path") + .attr("d", hints_err) + .attr("stroke", "none") + .attr("fill", "none") + .attr("pointer-events", "visibleFill"); + if ((path_line !== null) && (path_line.length > 0)) { if (!this.fillatt.empty()) this.draw_g.append("svg:path") @@ -1999,18 +2013,12 @@ JSROOT.define(['d3', 'painter', 'v7gpad'], (d3, jsrp) => { this.is_projection = ""; // disable projection redraw until callback this.projection_width = width; - let canp = this.getCanvPainter(); - if (canp) canp.toggleProjection(this.is_projection).then(() => this.redrawProjection("toggling", new_proj)); + this.provideSpecialDrawArea(new_proj).then(() => { this.is_projection = new_proj; return this.redrawProjection(); }); } - RH2Painter.prototype.redrawProjection = function(ii1, ii2 /*, jj1, jj2*/) { + RH2Painter.prototype.redrawProjection = function(/* ii1, ii2 , jj1, jj2*/) { // do nothing for the moment - if (ii1 === "toggling") { - this.is_projection = ii2; - ii1 = ii2 = undefined; - } - if (!this.is_projection) return; } From 546c91b36b92fead736b84f29f8c1b3bce98b065 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 11 Oct 2021 14:53:28 +0200 Subject: [PATCH 318/577] [ntuple] Avoid double delete in RField>::DestroyValue The destruction of the array elements is taken care of by vec->~RVec(), no need to perform it manually. --- tree/ntuple/v7/inc/ROOT/RField.hxx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx index ef3d66fe3a68a..cc85e2ff376e8 100644 --- a/tree/ntuple/v7/inc/ROOT/RField.hxx +++ b/tree/ntuple/v7/inc/ROOT/RField.hxx @@ -1433,11 +1433,6 @@ public: } void DestroyValue(const Detail::RFieldValue& value, bool dtorOnly = false) final { auto vec = reinterpret_cast(value.GetRawPtr()); - auto nItems = vec->size(); - for (unsigned i = 0; i < nItems; ++i) { - auto itemValue = fSubFields[0]->CaptureValue(vec->data() + (i * fItemSize)); - fSubFields[0]->DestroyValue(itemValue, true /* dtorOnly */); - } vec->~RVec(); if (!dtorOnly) free(vec); From dfb9f4e42cb4a23ed82aa38783634df4d569f12c Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 11 Oct 2021 08:58:14 +0200 Subject: [PATCH 319/577] [foundation] Rename `std::Detail` to `std::__ROOT` (issue #9089): ROOT "swallows" `std::`, and we need to figure out how to handle the namespaces `std::foo` vs `::foo`. Until we do that, avoid the issue by renaming the only known "clash". We cannot use `std::__ROOT` as in several other backport cases because that's an inline namespace. Use a different name instead. --- core/foundation/inc/ROOT/RNotFn.hxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/foundation/inc/ROOT/RNotFn.hxx b/core/foundation/inc/ROOT/RNotFn.hxx index 1597807441da6..2e16da37c9a0f 100644 --- a/core/foundation/inc/ROOT/RNotFn.hxx +++ b/core/foundation/inc/ROOT/RNotFn.hxx @@ -28,7 +28,7 @@ namespace std { -namespace Detail { +namespace __ROOT_noinline { template class not_fn_t { std::decay_t fFun; @@ -55,9 +55,9 @@ public: template -Detail::not_fn_t not_fn(F &&f) +__ROOT_noinline::not_fn_t not_fn(F &&f) { - return Detail::not_fn_t(std::forward(f)); + return __ROOT_noinline::not_fn_t(std::forward(f)); } } From 06a4e5772b8e98cfe9b97280464e7aa1d89dbbbc Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 30 Sep 2021 15:19:48 +0200 Subject: [PATCH 320/577] [ntuple] Fix read request coalescing in file backend --- tree/ntuple/v7/src/RPageStorageFile.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tree/ntuple/v7/src/RPageStorageFile.cxx b/tree/ntuple/v7/src/RPageStorageFile.cxx index 853118043d411..7b6c7313cb683 100644 --- a/tree/ntuple/v7/src/RPageStorageFile.cxx +++ b/tree/ntuple/v7/src/RPageStorageFile.cxx @@ -423,12 +423,16 @@ ROOT::Experimental::Detail::RPageSourceFile::LoadCluster(DescriptorId_t clusterI } std::sort(gaps.begin(), gaps.end()); std::size_t gapCut = 0; + std::size_t currentGap = 0; float szExtra = 0.0; for (auto g : gaps) { + if (g != currentGap) { + gapCut = currentGap; + currentGap = g; + } szExtra += g; if (szExtra > maxOverhead) break; - gapCut = g; } // Prepare the input vector for the RRawFile::ReadV() call From 0e02f2399268278ce7f5db2f120433db7c45a604 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Thu, 30 Sep 2021 15:21:09 +0200 Subject: [PATCH 321/577] [ntuple] Remove unnecessary constant --- tree/ntuple/v7/inc/ROOT/RClusterPool.hxx | 3 --- 1 file changed, 3 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RClusterPool.hxx b/tree/ntuple/v7/inc/ROOT/RClusterPool.hxx index 748dfef26e6aa..a502206bb09d8 100644 --- a/tree/ntuple/v7/inc/ROOT/RClusterPool.hxx +++ b/tree/ntuple/v7/inc/ROOT/RClusterPool.hxx @@ -55,9 +55,6 @@ compressed pages and the page source has to uncompresses pages at a later point // clang-format on class RClusterPool { private: - /// Maximum number of queued cluster requests for the I/O thread. A single request can span mutliple clusters. - static constexpr unsigned int kWorkQueueLimit = 4; - /// Request to load a subset of the columns of a particular cluster. /// Work items come in groups and are executed by the page source. struct RReadItem { From 9eb93c091285bc655340850bc62e7bfd7561c136 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 8 Oct 2021 23:16:49 +0200 Subject: [PATCH 322/577] [ntuple] Fix accidental look-back when traversing offset columns --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index aed035357a387..21134e9c26d9e 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -223,7 +223,7 @@ public: template CppT *MapV(const NTupleSize_t globalIndex, NTupleSize_t &nItems) { - if (!fReadPage.Contains(globalIndex)) { + if (R__unlikely(!fReadPage.Contains(globalIndex))) { MapPage(globalIndex); } // +1 to go from 0-based indexing to 1-based number of items @@ -263,12 +263,22 @@ public: /// For offset columns only, look at the two adjacent values that define a collection's coordinates void GetCollectionInfo(const NTupleSize_t globalIndex, RClusterIndex *collectionStart, ClusterSize_t *collectionSize) { - auto idxStart = (globalIndex == 0) ? 0 : *Map(globalIndex - 1); - auto idxEnd = *Map(globalIndex); - auto selfOffset = fReadPage.GetClusterInfo().GetIndexOffset(); - if (globalIndex == selfOffset) { - // Passed cluster boundary - idxStart = 0; + NTupleSize_t idxStart = 0; + NTupleSize_t idxEnd; + // Try to avoid jumping back to the previous page and jumping pack to the previous cluster + if (R__likely(globalIndex > 0)) { + if (R__likely(fReadPage.Contains(globalIndex - 1))) { + idxStart = *Map(globalIndex - 1); + idxEnd = *Map(globalIndex); + if (R__unlikely(fReadPage.GetClusterInfo().GetIndexOffset() == globalIndex)) + idxStart = 0; + } else { + idxEnd = *Map(globalIndex); + auto selfOffset = fReadPage.GetClusterInfo().GetIndexOffset(); + idxStart = (globalIndex == selfOffset) ? 0 : *Map(globalIndex - 1); + } + } else { + idxEnd = *Map(globalIndex); } *collectionSize = idxEnd - idxStart; *collectionStart = RClusterIndex(fReadPage.GetClusterInfo().GetId(), idxStart); From cfa73cef031f220bf8e7072bc651fc63032fb36b Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 11 Oct 2021 22:06:19 +0200 Subject: [PATCH 323/577] [ntuple] Fix type in comment (NFC) Co-authored-by: Javier Lopez-Gomez --- tree/ntuple/v7/inc/ROOT/RColumn.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/ntuple/v7/inc/ROOT/RColumn.hxx b/tree/ntuple/v7/inc/ROOT/RColumn.hxx index 21134e9c26d9e..79eb860047776 100644 --- a/tree/ntuple/v7/inc/ROOT/RColumn.hxx +++ b/tree/ntuple/v7/inc/ROOT/RColumn.hxx @@ -265,7 +265,7 @@ public: { NTupleSize_t idxStart = 0; NTupleSize_t idxEnd; - // Try to avoid jumping back to the previous page and jumping pack to the previous cluster + // Try to avoid jumping back to the previous page and jumping back to the previous cluster if (R__likely(globalIndex > 0)) { if (R__likely(fReadPage.Contains(globalIndex - 1))) { idxStart = *Map(globalIndex - 1); From 377ce3ad53458090fc20017aec78638b60d34897 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 6 Oct 2021 11:19:19 +0200 Subject: [PATCH 324/577] [NFC][relnotes] Advertise RooFit RDF helpers also in RDF relnotes --- README/ReleaseNotes/v626/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v626/index.md b/README/ReleaseNotes/v626/index.md index ccb558d9aa66f..973e511e66d3a 100644 --- a/README/ReleaseNotes/v626/index.md +++ b/README/ReleaseNotes/v626/index.md @@ -78,7 +78,8 @@ More details at [PR #8737](https://github.com/root-project/root/pull/8737). - Add `DescribeDataset` to the `RDataFrame` interface, which allows to get information about the dataset (subset of the output of Describe()). - Add [DefinePerSample](https://root.cern/doc/master/classROOT_1_1RDF_1_1RInterface.html#a29d77593e95c0f84e359a802e6836a0e), a method which makes it possible to define columns based on the sample and entry range being processed. It is also a useful way to register callbacks that should only be called when the input dataset/TTree changes. - `Book` now supports just-in-time compilation, i.e. it can be called without passing the column types as template parameters (with some performance penalty, as usual). -- As an aid to `RDataSource` implementations with which collection sizes can be retrieved more efficiently than the full collection, `#var` can now be used as a short-hand notation for column name `R_rdf_sizeof_var` +- As an aid to `RDataSource` implementations with which collection sizes can be retrieved more efficiently than the full collection, `#var` can now be used as a short-hand notation for column name `R_rdf_sizeof_var`. +- Helpers have been added to export data from `RDataFrame` to RooFit datasets. See the "RooFit Libraries" section below for more details. ### Other improvements From a940bdbc40d9a0cdac8975c287e1cb7ada0d0c65 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 12 Oct 2021 08:35:10 +0200 Subject: [PATCH 325/577] Fix xrootd 5.3.1 sha256 hash for builtins --- builtins/xrootd/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index ab0820a3808c4..4e0b7104af545 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -29,7 +29,7 @@ endforeach() ExternalProject_Add( XROOTD URL ${XROOTD_SRC_URI} - URL_HASH SHA256=1194ba435dc1e243f3cdb8273f6385407183799faf7622a582a828f4aff6807d + URL_HASH SHA256=0800b4c6444591a6514c5b81b2c4c79439875136ab2267ce4bed99cb94ead6e6 INSTALL_DIR ${XROOTD_PREFIX} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} From aea2f7c05a5eb8c8eda1cb3a352c7687eee59313 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 12 Oct 2021 11:19:50 +0200 Subject: [PATCH 326/577] Fix wrong help (#9099) * Fix wrong help * Remove references to GraphFitChisquare --- hist/hist/src/TGraph.cxx | 6 --- hist/hist/src/TGraphAsymmErrors.cxx | 2 - hist/hist/src/TGraphBentErrors.cxx | 2 - hist/hist/src/TGraphErrors.cxx | 18 +++---- math/minuit/src/TFitter.cxx | 79 +++++++++++++---------------- 5 files changed, 43 insertions(+), 64 deletions(-) diff --git a/hist/hist/src/TGraph.cxx b/hist/hist/src/TGraph.cxx index d74c93c7c1e03..7e55fe29ba011 100644 --- a/hist/hist/src/TGraph.cxx +++ b/hist/hist/src/TGraph.cxx @@ -1413,7 +1413,6 @@ Double_t TGraph::GetRMS(Int_t axis) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors Double_t TGraph::GetErrorX(Int_t) const @@ -1422,7 +1421,6 @@ Double_t TGraph::GetErrorX(Int_t) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors Double_t TGraph::GetErrorY(Int_t) const @@ -1431,7 +1429,6 @@ Double_t TGraph::GetErrorY(Int_t) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors /// and TGraphAsymmErrors @@ -1441,7 +1438,6 @@ Double_t TGraph::GetErrorXhigh(Int_t) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors /// and TGraphAsymmErrors @@ -1451,7 +1447,6 @@ Double_t TGraph::GetErrorXlow(Int_t) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors /// and TGraphAsymmErrors @@ -1461,7 +1456,6 @@ Double_t TGraph::GetErrorYhigh(Int_t) const } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It always returns a negative value. Real implementation in TGraphErrors /// and TGraphAsymmErrors diff --git a/hist/hist/src/TGraphAsymmErrors.cxx b/hist/hist/src/TGraphAsymmErrors.cxx index 9c6973cd56bc6..421d9a09bf581 100644 --- a/hist/hist/src/TGraphAsymmErrors.cxx +++ b/hist/hist/src/TGraphAsymmErrors.cxx @@ -1110,7 +1110,6 @@ void TGraphAsymmErrors::FillZero(Int_t begin, Int_t end, //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along X at point i. Double_t TGraphAsymmErrors::GetErrorX(Int_t i) const @@ -1125,7 +1124,6 @@ Double_t TGraphAsymmErrors::GetErrorX(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along Y at point i. Double_t TGraphAsymmErrors::GetErrorY(Int_t i) const diff --git a/hist/hist/src/TGraphBentErrors.cxx b/hist/hist/src/TGraphBentErrors.cxx index 52a05397b8101..566f11245aade 100644 --- a/hist/hist/src/TGraphBentErrors.cxx +++ b/hist/hist/src/TGraphBentErrors.cxx @@ -389,7 +389,6 @@ Bool_t TGraphBentErrors::DoMerge(const TGraph *g) } //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along X at point `i`. Double_t TGraphBentErrors::GetErrorX(Int_t i) const @@ -404,7 +403,6 @@ Double_t TGraphBentErrors::GetErrorX(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along Y at point `i`. Double_t TGraphBentErrors::GetErrorY(Int_t i) const diff --git a/hist/hist/src/TGraphErrors.cxx b/hist/hist/src/TGraphErrors.cxx index 2756206e711af..966440d69783e 100644 --- a/hist/hist/src/TGraphErrors.cxx +++ b/hist/hist/src/TGraphErrors.cxx @@ -601,7 +601,6 @@ void TGraphErrors::FillZero(Int_t begin, Int_t end, Bool_t from_ctor) //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along X at point `i`. Double_t TGraphErrors::GetErrorX(Int_t i) const @@ -613,7 +612,6 @@ Double_t TGraphErrors::GetErrorX(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. /// It returns the error along Y at point `i`. Double_t TGraphErrors::GetErrorY(Int_t i) const @@ -625,8 +623,8 @@ Double_t TGraphErrors::GetErrorY(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. -/// It returns the error along X at point `i`. +/// It returns the error along X at point `i`. For TGraphErrors this method is +/// the same as GetErrorX. Double_t TGraphErrors::GetErrorXhigh(Int_t i) const { @@ -637,8 +635,8 @@ Double_t TGraphErrors::GetErrorXhigh(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. -/// It returns the error along X at point `i`. +/// It returns the error along X at point `i`. For TGraphErrors this method is +/// the same as GetErrorX. Double_t TGraphErrors::GetErrorXlow(Int_t i) const { @@ -649,8 +647,8 @@ Double_t TGraphErrors::GetErrorXlow(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. -/// It returns the error along X at point `i`. +/// It returns the error along Y at point `i`. For TGraphErrors this method is +/// the same as GetErrorY. Double_t TGraphErrors::GetErrorYhigh(Int_t i) const { @@ -661,8 +659,8 @@ Double_t TGraphErrors::GetErrorYhigh(Int_t i) const //////////////////////////////////////////////////////////////////////////////// -/// This function is called by GraphFitChisquare. -/// It returns the error along X at point `i`. +/// It returns the error along Y at point `i`. For TGraphErrors this method is +/// the same as GetErrorY. Double_t TGraphErrors::GetErrorYlow(Int_t i) const { diff --git a/math/minuit/src/TFitter.cxx b/math/minuit/src/TFitter.cxx index 151054bb852cf..73fb9e4fe63d5 100644 --- a/math/minuit/src/TFitter.cxx +++ b/math/minuit/src/TFitter.cxx @@ -27,11 +27,6 @@ /// //////////////////////////////////////////////////////////////////////////////// -// extern void H1FitChisquare(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); -// extern void H1FitLikelihood(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); -// extern void GraphFitChisquare(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); -// extern void Graph2DFitChisquare(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); -// extern void MultiGraphFitChisquare(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); extern void F2Fit(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); extern void F3Fit(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag); @@ -59,14 +54,15 @@ TFitter::~TFitter() delete fMinuit; } -// //////////////////////////////////////////////////////////////////////////////// -// /// return a chisquare equivalent +//////////////////////////////////////////////////////////////////////////////// +/// \deprecated +/// Use ROOT::Fit::Chisquare class instead. +/// +/// return a chisquare equivalent Double_t TFitter::Chisquare(Int_t , Double_t * ) const { Error("Chisquare","This function is deprecated - use ROOT::Fit::Chisquare class"); - //Double_t amin = 0; - //H1FitChisquare(npar,params,amin,params,1); return TMath::QuietNaN(); } @@ -107,17 +103,17 @@ void TFitter::FixParameter(Int_t ipar) } //////////////////////////////////////////////////////////////////////////////// -///Computes point-by-point confidence intervals for the fitted function +/// Computes point-by-point confidence intervals for the fitted function /// -///Parameters: -/// - n - number of points -/// - ndim - dimensions of points -/// - x - points, at which to compute the intervals, for ndim > 1 +/// Parameters: +/// - n - number of points +/// - ndim - dimensions of points +/// - x - points, at which to compute the intervals, for ndim > 1 /// should be in order: (x0,y0, x1, y1, ... xn, yn) -/// - ci - computed intervals are returned in this array -/// - cl - confidence level, default=0.95 +/// - ci - computed intervals are returned in this array +/// - cl - confidence level, default=0.95 /// -///NOTE, that the intervals are approximate for nonlinear(in parameters) models +/// NOTE, that the intervals are approximate for nonlinear(in parameters) models void TFitter::GetConfidenceIntervals(Int_t n, Int_t ndim, const Double_t *x, Double_t *ci, Double_t cl) { @@ -206,28 +202,28 @@ void TFitter::GetConfidenceIntervals(Int_t n, Int_t ndim, const Double_t *x, Dou } //////////////////////////////////////////////////////////////////////////////// -///Computes confidence intervals at level cl. Default is 0.95 +/// Computes confidence intervals at level cl. Default is 0.95 /// -///The TObject parameter can be a TGraphErrors, a TGraph2DErrors or a TH1,2,3. -///For Graphs, confidence intervals are computed for each point, -///the value of the graph at that point is set to the function value at that -///point, and the graph y-errors (or z-errors) are set to the value of -///the confidence interval at that point. -///For Histograms, confidence intervals are computed for each bin center -///The bin content of this bin is then set to the function value at the bin -///center, and the bin error is set to the confidence interval value. -///NOTE: confidence intervals are approximate for nonlinear models! +/// The TObject parameter can be a TGraphErrors, a TGraph2DErrors or a TH1,2,3. +/// For Graphs, confidence intervals are computed for each point, +/// the value of the graph at that point is set to the function value at that +/// point, and the graph y-errors (or z-errors) are set to the value of +/// the confidence interval at that point. +/// For Histograms, confidence intervals are computed for each bin center +/// The bin content of this bin is then set to the function value at the bin +/// center, and the bin error is set to the confidence interval value. +/// NOTE: confidence intervals are approximate for nonlinear models! /// -///Allowed combinations: +/// Allowed combinations: /// -/// - Fitted object Passed object -/// - TGraph TGraphErrors, TH1 -/// - TGraphErrors, AsymmErrors TGraphErrors, TH1 -/// - TH1 TGraphErrors, TH1 -/// - TGraph2D TGraph2DErrors, TH2 -/// - TGraph2DErrors TGraph2DErrors, TH2 -/// - TH2 TGraph2DErrors, TH2 -/// - TH3 TH3 +/// - Fitted object Passed object +/// - TGraph TGraphErrors, TH1 +/// - TGraphErrors, AsymmErrors TGraphErrors, TH1 +/// - TH1 TGraphErrors, TH1 +/// - TGraph2D TGraph2DErrors, TH2 +/// - TGraph2DErrors TGraph2DErrors, TH2 +/// - TH2 TGraph2DErrors, TH2 +/// - TH3 TH3 void TFitter::GetConfidenceIntervals(TObject *obj, Double_t cl) { @@ -473,7 +469,7 @@ Double_t TFitter::GetParameter(Int_t ipar) const /// - vlow : lower value for the parameter /// - vhigh : upper value for the parameter /// -/// WARNING! parname must be suitably dimensionned in the calling function. +/// WARNING! parname must be suitably dimensioned in the calling function. Int_t TFitter::GetParameter(Int_t ipar, char *parname,Double_t &value,Double_t &verr,Double_t &vlow, Double_t &vhigh) const { @@ -532,7 +528,7 @@ Double_t TFitter::GetSumLog(Int_t n) //////////////////////////////////////////////////////////////////////////////// -///return kTRUE if parameter ipar is fixed, kFALSE othersise) +///return kTRUE if parameter ipar is fixed, kFALSE otherwise) Bool_t TFitter::IsFixed(Int_t ipar) const { @@ -569,16 +565,11 @@ void TFitter::SetFCN(void (*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, I } //////////////////////////////////////////////////////////////////////////////// -/// ret fit method (chisquare or loglikelihood) +/// ret fit method (chisquare or log-likelihood) void TFitter::SetFitMethod(const char *name) { if (fCovar) {delete [] fCovar; fCovar = 0;} - // if (!strcmp(name,"H1FitChisquare")) SetFCN(H1FitChisquare); - // if (!strcmp(name,"H1FitLikelihood")) SetFCN(H1FitLikelihood); - // if (!strcmp(name,"GraphFitChisquare")) SetFCN(GraphFitChisquare); - // if (!strcmp(name,"Graph2DFitChisquare")) SetFCN(Graph2DFitChisquare); - // if (!strcmp(name,"MultiGraphFitChisquare")) SetFCN(MultiGraphFitChisquare); if (!strcmp(name,"F2Minimizer")) SetFCN(F2Fit); if (!strcmp(name,"F3Minimizer")) SetFCN(F3Fit); } From 1e957f79ccf38ebd40785c749706b4321ae3c787 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Sat, 9 Oct 2021 14:12:38 +0200 Subject: [PATCH 327/577] [PyROOT] Improve priority assignment of classes in same inheritance tree The current implementation of the CPPMethod::GetPriority function considers only direct bases of the class type given as input parameter to a certain function. This can lead to situations which are easily distinguishable but that lead to the same overload being called when passing instances of different classes of the same inheritance tree. For example, ```python import ROOT ROOT.gInterpreter.Declare( ''' class A {}; class B: public A {}; class C: public B {}; void myfunc(const B &b){ std::cout << "B" << std::endl; } void myfunc(const C &c){ std::cout << "C" << std::endl; } ''') ROOT.myfunc(ROOT.B()) ROOT.myfunc(ROOT.C()) ``` Prints `B` for both function calls. This commit introduces a new function in cppyy that retrieves the number of bases in the longest branch of the inheritance tree for a certain class. This helps better distinguish cases like the one above, that are now solved. The new logic still does not solve another issue, namely the fact that in certain situations which would throw errors in C++ due to their ambiguity, cppyy resorts to calling the function overload with the highest priority. A couple of tests have been added in roottest to show both behaviours. Co-authored-by: Enric Tejedor Saavedra --- .../pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx | 2 +- bindings/pyroot/cppyy/CPyCppyy/src/Cppyy.h | 2 + .../cppyy-backend/clingwrapper/src/capi.h | 2 + .../clingwrapper/src/clingwrapper.cxx | 81 +++++++++++++++++++ .../clingwrapper/src/cpp_cppyy.h | 2 + 5 files changed, 88 insertions(+), 1 deletion(-) diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx index c05ec97bdedf1..685ad3dc60937 100644 --- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx +++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx @@ -409,7 +409,7 @@ int CPyCppyy::CPPMethod::GetPriority() const std::string& clean_name = TypeManip::clean_type(aname, false); Cppyy::TCppScope_t scope = Cppyy::GetScope(clean_name); if (scope) - priority += (int)Cppyy::GetNumBases(scope); + priority += static_cast(Cppyy::GetNumBasesLongestBranch(scope)); if (Cppyy::IsEnum(clean_name)) priority -= 100; diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Cppyy.h b/bindings/pyroot/cppyy/CPyCppyy/src/Cppyy.h index ea4d222050d49..f85a922dc5959 100644 --- a/bindings/pyroot/cppyy/CPyCppyy/src/Cppyy.h +++ b/bindings/pyroot/cppyy/CPyCppyy/src/Cppyy.h @@ -137,6 +137,8 @@ namespace Cppyy { CPPYY_IMPORT TCppIndex_t GetNumBases(TCppType_t type); CPPYY_IMPORT + TCppIndex_t GetNumBasesLongestBranch(TCppType_t type); + CPPYY_IMPORT std::string GetBaseName(TCppType_t type, TCppIndex_t ibase); CPPYY_IMPORT bool IsSubtype(TCppType_t derived, TCppType_t base); diff --git a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/capi.h b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/capi.h index 2ea998a33d2cb..f3bef757ccf6e 100644 --- a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/capi.h +++ b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/capi.h @@ -124,6 +124,8 @@ extern "C" { RPY_EXPORTED int cppyy_num_bases(cppyy_type_t type); RPY_EXPORTED + int cppyy_num_bases_longest_branch(cppyy_type_t type); + RPY_EXPORTED char* cppyy_base_name(cppyy_type_t type, int base_index); RPY_EXPORTED int cppyy_is_subtype(cppyy_type_t derived, cppyy_type_t base); diff --git a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx index 4883e40bd0404..edb5533623137 100644 --- a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx +++ b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx @@ -1219,6 +1219,83 @@ Cppyy::TCppIndex_t Cppyy::GetNumBases(TCppType_t klass) return (TCppIndex_t)0; } +//////////////////////////////////////////////////////////////////////////////// +/// \fn Cppyy::TCppIndex_t GetLongestInheritancePath(TClass *klass) +/// \brief Retrieve number of base classes in the longest branch of the +/// inheritance tree of the input class. +/// \param[in] klass The class to start the retrieval process from. +/// +/// This is a helper function for Cppyy::GetNumBasesLongestBranch. +/// Given an inheritance tree, the function assigns weight 1 to each class that +/// has at least one base. Starting from the input class, the function is +/// called recursively on all the bases. For each base the return value is one +/// (the weight of the base itself) plus the maximum value retrieved for their +/// bases in turn. For example, given the following inheritance tree: +/// +/// ~~~{.cpp} +/// class A {}; class B: public A {}; +/// class X {}; class Y: public X {}; class Z: public Y {}; +/// class C: public B, Z {}; +/// ~~~ +/// +/// calling this function on an instance of `C` will return 3, the steps +/// required to go from C to X. +Cppyy::TCppIndex_t GetLongestInheritancePath(TClass *klass) +{ + + auto directbases = klass->GetListOfBases(); + if (!directbases) { + // This is a leaf with no bases + return 0; + } + auto ndirectbases = directbases->GetSize(); + if (ndirectbases == 0) { + // This is a leaf with no bases + return 0; + } else { + // If there is at least one direct base + std::vector nbases_branches; + nbases_branches.reserve(ndirectbases); + + // Traverse all direct bases of the current class and call the function + // recursively + for (auto baseclass : TRangeDynCast(directbases)) { + if (!baseclass) + continue; + if (auto baseclass_tclass = baseclass->GetClassPointer()) { + nbases_branches.emplace_back(GetLongestInheritancePath(baseclass_tclass)); + } + } + + // Get longest path among the direct bases of the current class + auto longestbranch = std::max_element(std::begin(nbases_branches), std::end(nbases_branches)); + + // Add 1 to include the current class in the count + return 1 + *longestbranch; + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// \fn Cppyy::TCppIndex_t Cppyy::GetNumBasesLongest(TCppType_t klass) +/// \brief Retrieve number of base classes in the longest branch of the +/// inheritance tree. +/// \param[in] klass The class to start the retrieval process from. +/// +/// The function converts the input class to a `TClass *` and calls +/// GetLongestInheritancePath. +Cppyy::TCppIndex_t Cppyy::GetNumBasesLongestBranch(TCppType_t klass) +{ + + const auto &cr = type_from_handle(klass); + + if (auto klass_tclass = cr.GetClass()) { + return GetLongestInheritancePath(klass_tclass); + } + + // In any other case, return zero + return 0; +} + std::string Cppyy::GetBaseName(TCppType_t klass, TCppIndex_t ibase) { TClassRef& cr = type_from_handle(klass); @@ -2383,6 +2460,10 @@ int cppyy_num_bases(cppyy_type_t type) { return (int)Cppyy::GetNumBases(type); } +int cppyy_num_bases_longest_branch(cppyy_type_t type) { + return (int)Cppyy::GetNumBasesLongestBranch(type); +} + char* cppyy_base_name(cppyy_type_t type, int base_index) { return cppstring_to_cstring(Cppyy::GetBaseName (type, base_index)); } diff --git a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h index e9fd3b26ab81e..7757c19d1a010 100644 --- a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h +++ b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h @@ -134,6 +134,8 @@ namespace Cppyy { RPY_EXPORTED TCppIndex_t GetNumBases(TCppType_t type); RPY_EXPORTED + TCppIndex_t GetNumBasesLongestBranch(TCppType_t type); + RPY_EXPORTED std::string GetBaseName(TCppType_t type, TCppIndex_t ibase); RPY_EXPORTED bool IsSubtype(TCppType_t derived, TCppType_t base); From b594104f3ce3577f7420df97ae866fae8f8fba96 Mon Sep 17 00:00:00 2001 From: alja Date: Mon, 11 Oct 2021 15:46:32 -0700 Subject: [PATCH 328/577] In getIntersectAt() look for controll object also in parent --- ui5/eve7/lib/GlViewerThree.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui5/eve7/lib/GlViewerThree.js b/ui5/eve7/lib/GlViewerThree.js index af53d798326f1..f77035b17329b 100644 --- a/ui5/eve7/lib/GlViewerThree.js +++ b/ui5/eve7/lib/GlViewerThree.js @@ -430,6 +430,9 @@ sap.ui.define([ let intersects = this.raycaster.intersectObjects(this.scene.children, true); for (let i = 0; i < intersects.length; ++i) { + if (!intersects[i].object.get_ctrl) + intersects[i].object = intersects[i].object.parent; + if (intersects[i].object.visible && intersects[i].object.get_ctrl) { let ctrl = intersects[i].object.get_ctrl(); From 1474ced494076427f760e005c056e1d1401e15af Mon Sep 17 00:00:00 2001 From: alja Date: Mon, 11 Oct 2021 15:50:31 -0700 Subject: [PATCH 329/577] Fix selection of REveDataCollection items from table or GED controller. --- graf3d/eve7/inc/ROOT/REveDataCollection.hxx | 1 + graf3d/eve7/src/REveDataCollection.cxx | 25 ++++++++++++++++++++- ui5/eve7/controller/EveTable.controller.js | 4 ++-- ui5/eve7/controller/Ged.controller.js | 4 ++-- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/graf3d/eve7/inc/ROOT/REveDataCollection.hxx b/graf3d/eve7/inc/ROOT/REveDataCollection.hxx index 1efad372054e1..0b70a41a5ccb3 100644 --- a/graf3d/eve7/inc/ROOT/REveDataCollection.hxx +++ b/graf3d/eve7/inc/ROOT/REveDataCollection.hxx @@ -90,6 +90,7 @@ public: Bool_t SingleRnrState() const override { return kTRUE; } Bool_t SetRnrState(Bool_t) override; + void ProcessSelectionStr(ElementId_t id, bool multi, bool secondary, const char* in_secondary_idcs); void ProcessSelection(ElementId_t id, bool multi, bool secondary, const std::set& in_secondary_idcs); void AddTooltipExpression(const std::string &title, const std::string &expr, bool init = true); diff --git a/graf3d/eve7/src/REveDataCollection.cxx b/graf3d/eve7/src/REveDataCollection.cxx index cb2f11fbc440d..a222d6f681c0d 100644 --- a/graf3d/eve7/src/REveDataCollection.cxx +++ b/graf3d/eve7/src/REveDataCollection.cxx @@ -23,6 +23,7 @@ #include "TBaseClass.h" #include +#include #include @@ -98,7 +99,7 @@ void REveDataItemList::ItemChanged(Int_t idx) void REveDataItemList::FillImpliedSelectedSet( Set_t& impSelSet) { /* - printf("REveDataCollection::FillImpliedSelectedSet colecction setsize %zu\n", RefSelectedSet().size()); + printf("REveDataItemList::FillImpliedSelectedSet colecction setsize %zu\n", RefSelectedSet().size()); for (auto x : RefSelectedSet()) printf("%d \n", x); */ @@ -143,6 +144,28 @@ Bool_t REveDataItemList::SetRnrState(Bool_t iRnrSelf) return ret; } + +//______________________________________________________________________________ +void REveDataItemList::ProcessSelectionStr(ElementId_t id, bool multi, bool secondary, const char* secondary_idcs) +{ + static const REveException eh("REveDataItemList::ProcessSelectionStr "); + static const std::regex comma_re("\\s*,\\s*", std::regex::optimize); + std::string str(secondary_idcs); + std::set sis; + std::sregex_token_iterator itr(str.begin(), str.end(), comma_re, -1); + std::sregex_token_iterator end; + + try { + while (itr != end) sis.insert(std::stoi(*itr++)); + } + catch (const std::invalid_argument& ia) { + throw eh + "invalid secondary index argument '" + *itr + "' - must be int."; + } + + ProcessSelection(id, multi, secondary, sis); +} + + //______________________________________________________________________________ void REveDataItemList::ProcessSelection(ElementId_t selectionId, bool multi, bool secondary, const std::set& secondary_idcs) { diff --git a/ui5/eve7/controller/EveTable.controller.js b/ui5/eve7/controller/EveTable.controller.js index b161ea00095f4..952732fb36ddd 100644 --- a/ui5/eve7/controller/EveTable.controller.js +++ b/ui5/eve7/controller/EveTable.controller.js @@ -80,8 +80,8 @@ sap.ui.define([ let itemList = pthis.collection.childs[0]; let secIdcs = [ui]; - let fcall = "ProcessSelection(" + pthis.mgr.global_selection_id + `, false, true`; - fcall += ", { " + secIdcs.join(", ") + " }"; + let fcall = "ProcessSelectionStr(" + pthis.mgr.global_selection_id + `, false, true`; + fcall += ", \" " + secIdcs.join(", ") + " \""; fcall += ")"; pthis.mgr.SendMIR(fcall, itemList.fElementId, itemList._typename); } diff --git a/ui5/eve7/controller/Ged.controller.js b/ui5/eve7/controller/Ged.controller.js index 7f369af3a17fb..b58a0b7f25c78 100644 --- a/ui5/eve7/controller/Ged.controller.js +++ b/ui5/eve7/controller/Ged.controller.js @@ -418,8 +418,8 @@ sap.ui.define([ list.setSelectedItem(selected[s], false); } } - let fcall = "ProcessSelection(" + pthis.mgr.global_selection_id + `, ${is_multi}, true`; - fcall += ", { " + secIdcs.join(", ") + " }"; + let fcall = "ProcessSelectionStr(" + pthis.mgr.global_selection_id + `, ${is_multi}, true`; + fcall += ", \"" + secIdcs.join(", ") + " \""; fcall += ")"; pthis.mgr.SendMIR(fcall, el.fElementId, el._typename); From 1380cc19ec8b7b2344c1a1ead5a88dc02fb19280 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 12 Oct 2021 15:14:19 +0200 Subject: [PATCH 330/577] Implement the \legacy command (#9104) --- documentation/doxygen/Doxyfile | 5 ++++- documentation/doxygen/ROOT.css | 6 ++++++ hist/spectrum/doc/index.md | 2 ++ hist/spectrum/src/TSpectrum.cxx | 2 ++ hist/spectrum/src/TSpectrum2.cxx | 2 ++ hist/spectrum/src/TSpectrum2Fit.cxx | 2 ++ hist/spectrum/src/TSpectrum2Transform.cxx | 2 ++ hist/spectrum/src/TSpectrum3.cxx | 2 ++ hist/spectrum/src/TSpectrumFit.cxx | 2 ++ hist/spectrum/src/TSpectrumTransform.cxx | 3 +++ hist/spectrumpainter/src/TSpectrum2Painter.cxx | 2 ++ math/minuit/src/TFitter.cxx | 1 + math/splot/src/TSPlot.cxx | 2 ++ 13 files changed, 32 insertions(+), 1 deletion(-) diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index bff77b6b62f78..859cec0152998 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -269,7 +269,10 @@ TAB_SIZE = 3 # commands \{ and \} for these it is advised to use the version @{ and @} or use # a double escape (\\{ and \\}) -ALIASES = + +ALIASES += legacy{2}="\htmlonly

      Legacy Code

      The \1 \2 is legacy software: there will be no bug fixes nor new developments. It can be used as it is, but it's not recommended to use it in new code.
      \endhtmlonly" + + # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For diff --git a/documentation/doxygen/ROOT.css b/documentation/doxygen/ROOT.css index 492a38726517c..7f1e461b1356c 100644 --- a/documentation/doxygen/ROOT.css +++ b/documentation/doxygen/ROOT.css @@ -23,3 +23,9 @@ div.contents { background-color: #f9fafc; padding: 15px; } + +.legacybox { + border: 3px solid #879ecb; + background-color: #fdf06b; + padding: 15px; +} diff --git a/hist/spectrum/doc/index.md b/hist/spectrum/doc/index.md index 7ee7db349e77d..e51d40321557b 100644 --- a/hist/spectrum/doc/index.md +++ b/hist/spectrum/doc/index.md @@ -1,6 +1,8 @@ \defgroup Spectrum Advanced spectra processing classes. \ingroup Hist +\legacy{Spectrum,package} + \authors Miroslav Morhac Institute of Physics diff --git a/hist/spectrum/src/TSpectrum.cxx b/hist/spectrum/src/TSpectrum.cxx index 3d4915d0dfad0..5aade1a7993b7 100644 --- a/hist/spectrum/src/TSpectrum.cxx +++ b/hist/spectrum/src/TSpectrum.cxx @@ -14,6 +14,8 @@ \brief Advanced Spectra Processing \author Miroslav Morhac + \legacy{TSpectrum,class} + This class contains advanced spectra processing functions for: - One-dimensional background estimation diff --git a/hist/spectrum/src/TSpectrum2.cxx b/hist/spectrum/src/TSpectrum2.cxx index 9520b17867434..573f7b8302449 100644 --- a/hist/spectrum/src/TSpectrum2.cxx +++ b/hist/spectrum/src/TSpectrum2.cxx @@ -6,6 +6,8 @@ \brief Advanced 2-dimensional spectra processing \author Miroslav Morhac + \legacy{TSpectrum2,class} + This class contains advanced spectra processing functions. - One-dimensional background estimation functions diff --git a/hist/spectrum/src/TSpectrum2Fit.cxx b/hist/spectrum/src/TSpectrum2Fit.cxx index f25030007ffce..d3bb11ff60b54 100644 --- a/hist/spectrum/src/TSpectrum2Fit.cxx +++ b/hist/spectrum/src/TSpectrum2Fit.cxx @@ -6,6 +6,8 @@ \brief Advanced 2-dimensional spectra fitting functions \author Miroslav Morhac + \legacy{TSpectrum2Fit,class} + Class for fitting 2D spectra using AWMI (algorithm without matrix inversion) and conjugate gradient algorithms for symmetrical matrices (Stiefel-Hestens method). AWMI method allows to fit diff --git a/hist/spectrum/src/TSpectrum2Transform.cxx b/hist/spectrum/src/TSpectrum2Transform.cxx index 529c5c81083bf..74307697e8d8c 100644 --- a/hist/spectrum/src/TSpectrum2Transform.cxx +++ b/hist/spectrum/src/TSpectrum2Transform.cxx @@ -6,6 +6,8 @@ \brief Advanced 2-dimensional orthogonal transform functions \author Miroslav Morhac + \legacy{TSpectrum2Transform,class} + Class to carry out transforms of 2D spectra, its filtering and enhancement. It allows to calculate classic Fourier, Cosine, Sin, Hartley, Walsh, Haar transforms as well as mixed transforms (Fourier- diff --git a/hist/spectrum/src/TSpectrum3.cxx b/hist/spectrum/src/TSpectrum3.cxx index ba40a58842ced..d6261bce07a36 100644 --- a/hist/spectrum/src/TSpectrum3.cxx +++ b/hist/spectrum/src/TSpectrum3.cxx @@ -6,6 +6,8 @@ \brief Advanced 3-dimensional spectra processing functions \author Miroslav Morhac + \legacy{TSpectrum3,class} + This class contains advanced spectra processing functions. - Three-dimensional background estimation functions diff --git a/hist/spectrum/src/TSpectrumFit.cxx b/hist/spectrum/src/TSpectrumFit.cxx index 1053fc200f595..5d88a21b78a22 100644 --- a/hist/spectrum/src/TSpectrumFit.cxx +++ b/hist/spectrum/src/TSpectrumFit.cxx @@ -6,6 +6,8 @@ \brief Advanced 1-dimensional spectra fitting functions \author Miroslav Morhac + \legacy{TSpectrumFit,class} + Class for fitting 1D spectra using AWMI (algorithm without matrix inversion) and conjugate gradient algorithms for symmetrical matrices (Stiefel-Hestens method). AWMI method allows to fit diff --git a/hist/spectrum/src/TSpectrumTransform.cxx b/hist/spectrum/src/TSpectrumTransform.cxx index e5f983d440db5..ff9d0b0b5dc1f 100644 --- a/hist/spectrum/src/TSpectrumTransform.cxx +++ b/hist/spectrum/src/TSpectrumTransform.cxx @@ -6,6 +6,9 @@ \brief Advanced 1-dimensional orthogonal transform functions \author Miroslav Morhac + \legacy{TSpectrumTransform,class} + + Class to carry out transforms of 1D spectra, its filtering and enhancement. It allows to calculate classic Fourier, Cosine, Sin, Hartley, Walsh, Haar transforms as well as mixed transforms (Fourier- diff --git a/hist/spectrumpainter/src/TSpectrum2Painter.cxx b/hist/spectrumpainter/src/TSpectrum2Painter.cxx index d10da9313ed87..d09b51c75c591 100644 --- a/hist/spectrumpainter/src/TSpectrum2Painter.cxx +++ b/hist/spectrumpainter/src/TSpectrum2Painter.cxx @@ -13,6 +13,8 @@ /** \class TSpectrum2Painter \ingroup Spectrumpainter +\legacy{TSpectrum2Painter,class} + Two-dimensional graphics function TSpectrum2Painter is a set of graphical functions developed by Miroslav diff --git a/math/minuit/src/TFitter.cxx b/math/minuit/src/TFitter.cxx index 73fb9e4fe63d5..0679a1e2a7093 100644 --- a/math/minuit/src/TFitter.cxx +++ b/math/minuit/src/TFitter.cxx @@ -22,6 +22,7 @@ //////////////////////////////////////////////////////////////////////////////// /// \class TFitter +/// \legacy{TFitter,class} /// /// The ROOT standard fitter based on TMinuit /// diff --git a/math/splot/src/TSPlot.cxx b/math/splot/src/TSPlot.cxx index e87977cf95c19..08a6f1bc08329 100644 --- a/math/splot/src/TSPlot.cxx +++ b/math/splot/src/TSPlot.cxx @@ -25,6 +25,8 @@ ClassImp(TSPlot); /** \class TSPlot +\legacy{TSPlot,class} + A common method used in High Energy Physics to perform measurements is the maximum Likelihood method, exploiting discriminating variables to disentangle signal from background. The crucial point for such an From 4449ef488f624a5c612cc023408a69e984cbd514 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 12 Oct 2021 16:49:18 +0200 Subject: [PATCH 331/577] [skip-ci] new \legacy interface --- documentation/doxygen/Doxyfile | 3 +-- hist/spectrum/doc/index.md | 2 +- hist/spectrum/src/TSpectrum.cxx | 2 +- hist/spectrum/src/TSpectrum2.cxx | 2 +- hist/spectrum/src/TSpectrum2Fit.cxx | 2 +- hist/spectrum/src/TSpectrum2Transform.cxx | 2 +- hist/spectrum/src/TSpectrum3.cxx | 2 +- hist/spectrum/src/TSpectrumFit.cxx | 2 +- hist/spectrum/src/TSpectrumTransform.cxx | 2 +- hist/spectrumpainter/src/TSpectrum2Painter.cxx | 2 +- math/minuit/src/TFitter.cxx | 2 +- math/splot/src/TSPlot.cxx | 2 +- 12 files changed, 12 insertions(+), 13 deletions(-) diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index 859cec0152998..6a5abe28cab92 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -270,8 +270,7 @@ TAB_SIZE = 3 # a double escape (\\{ and \\}) -ALIASES += legacy{2}="\htmlonly

      Legacy Code

      The \1 \2 is legacy software: there will be no bug fixes nor new developments. It can be used as it is, but it's not recommended to use it in new code.
      \endhtmlonly" - +ALIASES += legacy{1}="\htmlonly

      Legacy Code

      \1 is a legacy interface: it is not recommended to use it in new code. There will be no bug fixes nor new developments.
      \endhtmlonly" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources diff --git a/hist/spectrum/doc/index.md b/hist/spectrum/doc/index.md index e51d40321557b..da4e854c0eb7f 100644 --- a/hist/spectrum/doc/index.md +++ b/hist/spectrum/doc/index.md @@ -1,7 +1,7 @@ \defgroup Spectrum Advanced spectra processing classes. \ingroup Hist -\legacy{Spectrum,package} +\legacy{The Spectrum package} \authors Miroslav Morhac diff --git a/hist/spectrum/src/TSpectrum.cxx b/hist/spectrum/src/TSpectrum.cxx index 5aade1a7993b7..1e5436d50d2b3 100644 --- a/hist/spectrum/src/TSpectrum.cxx +++ b/hist/spectrum/src/TSpectrum.cxx @@ -14,7 +14,7 @@ \brief Advanced Spectra Processing \author Miroslav Morhac - \legacy{TSpectrum,class} + \legacy{TSpectrum} This class contains advanced spectra processing functions for: diff --git a/hist/spectrum/src/TSpectrum2.cxx b/hist/spectrum/src/TSpectrum2.cxx index 573f7b8302449..7b352f0e698d2 100644 --- a/hist/spectrum/src/TSpectrum2.cxx +++ b/hist/spectrum/src/TSpectrum2.cxx @@ -6,7 +6,7 @@ \brief Advanced 2-dimensional spectra processing \author Miroslav Morhac - \legacy{TSpectrum2,class} + \legacy{TSpectrum2} This class contains advanced spectra processing functions. diff --git a/hist/spectrum/src/TSpectrum2Fit.cxx b/hist/spectrum/src/TSpectrum2Fit.cxx index d3bb11ff60b54..01d3de69e0904 100644 --- a/hist/spectrum/src/TSpectrum2Fit.cxx +++ b/hist/spectrum/src/TSpectrum2Fit.cxx @@ -6,7 +6,7 @@ \brief Advanced 2-dimensional spectra fitting functions \author Miroslav Morhac - \legacy{TSpectrum2Fit,class} + \legacy{TSpectrum2Fit} Class for fitting 2D spectra using AWMI (algorithm without matrix inversion) and conjugate gradient algorithms for symmetrical diff --git a/hist/spectrum/src/TSpectrum2Transform.cxx b/hist/spectrum/src/TSpectrum2Transform.cxx index 74307697e8d8c..e31c49dad147a 100644 --- a/hist/spectrum/src/TSpectrum2Transform.cxx +++ b/hist/spectrum/src/TSpectrum2Transform.cxx @@ -6,7 +6,7 @@ \brief Advanced 2-dimensional orthogonal transform functions \author Miroslav Morhac - \legacy{TSpectrum2Transform,class} + \legacy{TSpectrum2Transform} Class to carry out transforms of 2D spectra, its filtering and enhancement. It allows to calculate classic Fourier, Cosine, Sin, diff --git a/hist/spectrum/src/TSpectrum3.cxx b/hist/spectrum/src/TSpectrum3.cxx index d6261bce07a36..de3135b041271 100644 --- a/hist/spectrum/src/TSpectrum3.cxx +++ b/hist/spectrum/src/TSpectrum3.cxx @@ -6,7 +6,7 @@ \brief Advanced 3-dimensional spectra processing functions \author Miroslav Morhac - \legacy{TSpectrum3,class} + \legacy{TSpectrum3} This class contains advanced spectra processing functions. diff --git a/hist/spectrum/src/TSpectrumFit.cxx b/hist/spectrum/src/TSpectrumFit.cxx index 5d88a21b78a22..0ad7527058530 100644 --- a/hist/spectrum/src/TSpectrumFit.cxx +++ b/hist/spectrum/src/TSpectrumFit.cxx @@ -6,7 +6,7 @@ \brief Advanced 1-dimensional spectra fitting functions \author Miroslav Morhac - \legacy{TSpectrumFit,class} + \legacy{TSpectrumFit} Class for fitting 1D spectra using AWMI (algorithm without matrix inversion) and conjugate gradient algorithms for symmetrical diff --git a/hist/spectrum/src/TSpectrumTransform.cxx b/hist/spectrum/src/TSpectrumTransform.cxx index ff9d0b0b5dc1f..0f9ebe7562e0c 100644 --- a/hist/spectrum/src/TSpectrumTransform.cxx +++ b/hist/spectrum/src/TSpectrumTransform.cxx @@ -6,7 +6,7 @@ \brief Advanced 1-dimensional orthogonal transform functions \author Miroslav Morhac - \legacy{TSpectrumTransform,class} + \legacy{TSpectrumTransform} Class to carry out transforms of 1D spectra, its filtering and diff --git a/hist/spectrumpainter/src/TSpectrum2Painter.cxx b/hist/spectrumpainter/src/TSpectrum2Painter.cxx index d09b51c75c591..17571179d52a4 100644 --- a/hist/spectrumpainter/src/TSpectrum2Painter.cxx +++ b/hist/spectrumpainter/src/TSpectrum2Painter.cxx @@ -13,7 +13,7 @@ /** \class TSpectrum2Painter \ingroup Spectrumpainter -\legacy{TSpectrum2Painter,class} +\legacy{TSpectrum2Painter} Two-dimensional graphics function diff --git a/math/minuit/src/TFitter.cxx b/math/minuit/src/TFitter.cxx index 0679a1e2a7093..f82df1d92a235 100644 --- a/math/minuit/src/TFitter.cxx +++ b/math/minuit/src/TFitter.cxx @@ -22,7 +22,7 @@ //////////////////////////////////////////////////////////////////////////////// /// \class TFitter -/// \legacy{TFitter,class} +/// \legacy{TFitter} /// /// The ROOT standard fitter based on TMinuit /// diff --git a/math/splot/src/TSPlot.cxx b/math/splot/src/TSPlot.cxx index 08a6f1bc08329..8cd48148ca1f5 100644 --- a/math/splot/src/TSPlot.cxx +++ b/math/splot/src/TSPlot.cxx @@ -25,7 +25,7 @@ ClassImp(TSPlot); /** \class TSPlot -\legacy{TSPlot,class} +\legacy{TSPlot} A common method used in High Energy Physics to perform measurements is the maximum Likelihood method, exploiting discriminating variables to From e18b171e290fea003ffe72f99c7f5f06545d03cb Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Oct 2021 15:25:01 +0200 Subject: [PATCH 332/577] [skip-ci] update to doxygen 1.9.3 (#9111) --- documentation/doxygen/Doxyfile | 361 ++++++++++++++---------- documentation/doxygen/htmlheader.html | 4 +- documentation/doxygen/makehtmlfooter.sh | 2 +- 3 files changed, 218 insertions(+), 149 deletions(-) diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index 6a5abe28cab92..495b7533399e9 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.9.0 +# Doxyfile 1.9.3 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -93,14 +93,6 @@ ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English -# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all generated output in the proper direction. -# Possible values are: None, LTR, RTL and Context. -# The default value is: None. - -OUTPUT_TEXT_DIRECTION = None - # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. @@ -258,20 +250,18 @@ TAB_SIZE = 3 # the documentation. An alias has the form: # name=value # For example adding -# "sideeffect=@par Side Effects:\n" +# "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) - - -ALIASES += legacy{1}="\htmlonly

      Legacy Code

      \1 is a legacy interface: it is not recommended to use it in new code. There will be no bug fixes nor new developments.
      \endhtmlonly" +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) +ALIASES = "legacy{1}=\htmlonly

      Legacy Code

      \1 is a legacy interface: it is not recommended to use it in new code. There will be no bug fixes nor new developments.
      \endhtmlonly" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For @@ -314,8 +304,8 @@ OPTIMIZE_OUTPUT_SLICE = NO # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files @@ -325,7 +315,10 @@ OPTIMIZE_OUTPUT_SLICE = NO # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. EXTENSION_MAPPING = h=C++ \ icc=C++ \ @@ -467,7 +460,7 @@ LOOKUP_CACHE_SIZE = 4 # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, -# which efficively disables parallel processing. Please report any issues you +# which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. @@ -537,6 +530,13 @@ EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation @@ -574,11 +574,18 @@ HIDE_IN_BODY_DOCS = YES INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# (including Cygwin) and Mac users are advised to set this option to NO. +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. # The default value is: system dependent. CASE_SENSE_NAMES = YES @@ -597,6 +604,12 @@ HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -754,7 +767,8 @@ FILE_VERSION_FILTER = # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE @@ -800,24 +814,35 @@ WARNINGS = YES WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. # The default value is: NO. WARN_AS_ERROR = NO @@ -854,8 +879,8 @@ WARN_LOGFILE = # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: https://www.gnu.org/software/libiconv/) for the list of -# possible encodings. +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 @@ -868,12 +893,14 @@ INPUT_ENCODING = UTF-8 # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen -# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, # *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ @@ -1151,13 +1178,6 @@ VERBATIM_HEADERS = YES ALPHABETICAL_INDEX = YES -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 1 - # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored @@ -1258,7 +1278,7 @@ HTML_EXTRA_FILES = ./rootlogo_s.gif \ # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see +# this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. @@ -1268,7 +1288,7 @@ HTML_EXTRA_FILES = ./rootlogo_s.gif \ HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A +# in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1329,10 +1349,11 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: https://developer.apple.com/xcode/), introduced with OSX -# 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. @@ -1349,6 +1370,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1374,8 +1402,12 @@ DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML @@ -1450,7 +1482,8 @@ QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1458,8 +1491,8 @@ QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- -# folders). +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1467,16 +1500,16 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = @@ -1488,9 +1521,9 @@ QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = @@ -1533,16 +1566,28 @@ DISABLE_INDEX = YES # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # @@ -1615,11 +1660,29 @@ FORMULA_MACROFILE = USE_MATHJAX = YES +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + # When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1632,22 +1695,29 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = ./mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see https://docs.mathjax.org/en/v2.7-latest/tex.html +# #tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1694,7 +1764,8 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). +# Xapian (see: +# https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1707,8 +1778,9 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: https://xapian.org/). See the section "External Indexing and -# Searching" for details. +# Xapian (see: +# https://xapian.org/). See the section "External Indexing and Searching" for +# details. # This tag requires that the tag SEARCHENGINE is set to YES. SEARCHENGINE_URL = @@ -1817,29 +1889,31 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that doxygen normally uses. # -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty -# string, for the replacement values of the other commands the user is referred -# to HTML_HEADER. +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HEADER = -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. See +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what -# special commands can be used inside the footer. -# -# Note: Only use a user-defined footer if you know what you are doing! +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_FOOTER = @@ -1884,8 +1958,7 @@ USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode # command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. +# if errors occur, instead of asking the user for help. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1898,16 +1971,6 @@ LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_SOURCE_CODE = NO - # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See # https://en.wikipedia.org/wiki/BibTeX and \cite for more info. @@ -1988,16 +2051,6 @@ RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code -# with syntax highlighting in the RTF output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_SOURCE_CODE = NO - #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- @@ -2094,15 +2147,6 @@ GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the -# program listings (including syntax highlighting and cross-referencing -# information) to the DOCBOOK output. Note that enabling this will significantly -# increase the size of the DOCBOOK output. -# The default value is: NO. -# This tag requires that the tag GENERATE_DOCBOOK is set to YES. - -DOCBOOK_PROGRAMLISTING = NO - #--------------------------------------------------------------------------- # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- @@ -2288,15 +2332,6 @@ EXTERNAL_PAGES = YES # Configuration options related to the dot tool #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = NO - # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. @@ -2353,11 +2388,14 @@ DOT_FONTSIZE = 10 DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES @@ -2394,10 +2432,32 @@ UML_LOOK = NO # but if the number exceeds 15, the total amount of fields shown is limited to # 10. # Minimum value: 0, maximum value: 100, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. +# This tag requires that the tag UML_LOOK is set to YES. UML_LIMIT_NUM_FIELDS = 10 +# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and # collaboration graphs will show the relations between templates and their # instances. @@ -2464,6 +2524,13 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: @@ -2587,9 +2654,11 @@ DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate # files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. DOT_CLEANUP = YES diff --git a/documentation/doxygen/htmlheader.html b/documentation/doxygen/htmlheader.html index 40f4049137e3a..7a0f93961259a 100644 --- a/documentation/doxygen/htmlheader.html +++ b/documentation/doxygen/htmlheader.html @@ -1,5 +1,5 @@ - - + + diff --git a/documentation/doxygen/makehtmlfooter.sh b/documentation/doxygen/makehtmlfooter.sh index e4e693656d1b5..7a15d13de48a7 100755 --- a/documentation/doxygen/makehtmlfooter.sh +++ b/documentation/doxygen/makehtmlfooter.sh @@ -2,7 +2,7 @@ # Generates the HTML footer -echo '' +echo '' echo '' echo '' echo '")},_setSVG:function(){var e=this.$();if(!e)return;var t=e.innerWidth(),i=e.innerHeight();e.empty();var n=d3.select(e.get(0)).append("svg").attr("width",t).attr("height",i).attr("viewBox","0 0 "+t+" "+i);var s=this.getProperty("svgsample");if(s&&typeof s=="object"&&typeof s.createSample=="function")s.createSample(n,t,i);else n.append("text").text("none")},onResize:function(){this._setSVG()},modelPropertyChanged:function(){this._setSVG()},modelChanged:function(){if(this._lastModel!==this.getModel()){this._lastModel=this.getModel();this.getModel().attachPropertyChange({},this.modelPropertyChanged,this)}}})}); +}, + "rootui5/canv/manifest.json":'{"_version":"6.25.01","sap.app":{"id":"rootui5.canv"},"sap.ui5":{"rootView":{"viewName":"rootui5.canv.view.Canvas","type":"XML","async":true,"id":"RootCanvas"},"dependencies":{"minUI5Version":"1.82.0","libs":{"sap.ui.core":{},"sap.ui.layout":{},"sap.m":{}}}}}', + "rootui5/canv/view/Axis.fragment.xml":'\n', + "rootui5/canv/view/Canvas.view.xml":'

      _>l4xrC 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�fIgW_n3t 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 z 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�TaX+g&(+JwK+1a3&+D5OQjJykn3k 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

wJg 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 JPDHLkV1jcjyO;m~ literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry001.png b/documentation/doxygen/images/geometry001.png new file mode 100644 index 0000000000000000000000000000000000000000..f97e436321a5f3369b6d54cd17ab2acbc3ba0574 GIT binary patch literal 277012 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�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%0DsH1SNY<+<0KQnloEoE9>0ZLNFz| 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 YYvHVcxo&*XKJf2?rY^2Xoe=te0C@yEY5)KL literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry002.jpg b/documentation/doxygen/images/geometry002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..444627e8bc3d903514cc3ceb2e2645606c474313 GIT binary patch literal 30771 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 literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry003.png b/documentation/doxygen/images/geometry003.png new file mode 100644 index 0000000000000000000000000000000000000000..ec68a75cd35e6ec76265c424f6a75915870346e0 GIT binary patch literal 42036 zcmdq}Wn7e9_XZ3P4U!6oQiCGWt>id>s32M36$25EQvd*;!dg~V)mBzc*1^ufS>4gp%v{dg-rU*ROik`703a3_scC4%s7V7( zsjc9CFc37Bo&AO4@^NgXo!W3PV(rqr0y4uBV^=Bjse5xa&HAD6^2Il6PB4uORcr1- z%)*s^EBig0f~|1gua&A_@q;){htB0PN9ag4YK1H6V}95+_RgHGrtbKm=3KVtNI(7H z(T|^F!{wnb=0%P!RdlZY{3+qu>N`a4JH*Q!6~`6#5Qky8tr@Yk!_qM~aa?n9Ww}wT zDu?raHe|9;tmpocIpC7^SGi#Tz6`pHWa7;!$xlhURFhMXPlRGU*25=q*`1C8J0}eAf2obdXAPg@7;3 zJl>Dv1TN?J#W1RL&6OF~_a%JR6~Cyi%xkSl_E-Ui^$j7;H}=3k%{09m7}s3$@p--uFgoTZwe; zzd!x4dfNimcbnJJT4G{I{JX_R8J_L%<^7vlIpCk#d9Z}17-QZVnhv%np+>1>u3Z9d z7f0vr+G$C|OJBt4Na-Wk__eC`o_6_bSFwMiGOl*@k6xPTQkstG!AWmUr$?&B0Ascc zz&~jdBfF(rgQ1(W0w&bYKCw_*`{)<2<_r)M(gTc5SQ; z3p~xfV%;6eZ`-lbWNjexgIX214Ut$lvW^M9;(zre=#=q(%!ds!@B*t^x=M!X%C zkf(Uu8Gqm9?LqDE7!-$9EnPIcA$-k4rsLA`ZQ?@Z;4k@fQL4$o$wAwmxCwhB3155d z@cI{8>Gk6-zg-_#(%bO5b|J>noCmMkj8PM%#wbxevP&XAJpYYpt(wOhkNUK3_|`e- z|CBp;qWl*8ombP&v?A-P?qjWUTwpK2x7M?s*pg8HV&$Y;>Wgjn$rs>5|K+(A@Zx|= zx^ueId_b4s0-v+7v#}GhApzNWE9^)={>*pTZMFNnnS|o*jtbjgPU^n(S!jU#r#LRVGStuz1xUk2>0Gu#u06z8z2m7GM zKCpfy1NZM&a2GT1{yFBke)G)$E)W2a2E2MEqv46O+1Nj5E(blXN56m1`Z>_@jPeal z3nV7Uj1y-B?>elQzDR%#qXL)aho zSz`4GiM=DuzP9J5mkvKapKsbijM263Pc&`edIjSrRo^fgMfvsH=wf5I(Z*brZ3(Ik zgDE>O#eHbzddJX%&>P<(g?GOL`K@(h7YDX%tkYkE44z<948qp#Q z?|;uIghRB*idQ54-=D&MbzA)Z<b!R!;uZ_Z}R5HPgta);$_7G|(b=oux zm8zz!w!B^eLt-92;!XlO8D&q<;gBr*^B;mx^ELceZtoa0Bj%yqLTqN!+{v zGj(pZVG~Ci6IEi#(UA&bCBvnBR75*ERKUj^A%=*TE|y9rw{Z3An-p=UUMRKT6S9{6 zU;&Y7Y|l40w{P@|&KHhwYZo(`-lL)n`f7%JAzaIyWwrp_?`AI$Tt1C7b+KZoyAckc z_x)M$n;6d)e|zPf2I{fvz0)DQ14f`kJ^pAW1YREtn!hrMI|#Jo#FVH1xe+$lN^`Lt zFwI7RF>ccymDtO;^@xl2khcl!qi3}_0)^nI*3wX~vyp%W#gb*U;vTi^3$9gaG z{o>?mkLe0ukG~ZylmjpmZZ9@y)mueV=15fQ87HV5eJ@rjqyRtK`%o2xNp=6E9&gGp znM1bqvqz^h7Q({7oJ+bDEaWw(Wi;Kf|NSt;>y2-SZ`a~4uWxymVG?GS6+GG^7U_`B zBmD4!otnubf^r1qA$xYXL|QU-m$c;K9|vx}iSl)f%&qsjH;3U;L z^HqlEVzebWrOdX*ED{}-gAkMlnMO~v$03*?<}Gel#1&K7TNlk zLp-adIB)dtf{H=Ge43_%u=Djz+bd3BcD`ic=t1J(di25ddI~%WY}a(N;to07Akg5i zgp3tLX&CVz4l%`q&wd+=o+Rh6%MuM#Wp>MKIH&Cy?JOnlfvP@K?7n5K)9Hd(6(8k0 z9wH1o4m3Y}oSh(&6bjKPwpOG>Kh@8BG_K{wS^^Gs^MaKJI#;!q<;GBM3;~a1J74#< zyRXkrJ2d+W9cS9D8~CzEmqsARGM5MHN+Y9QbCmeSBvf1KPDULk!|LaJ(8ajKsw@Ks zN+wCbyt$HhpJPI(GK1qza+8V+|@40VTqCi~6Wzq`K*stCemPC09_>yOQ(F^Ywj1s8>jwtN*+6$@-(v=t_`O>mWAdS>qQ+`mRvqfVCF=dGNc};&W~A+6@U?P^1i#T-CpOY zU%To%;Vr*49eE0vw$`3k_5KpJE1|PkY4@tjL-LsAUth6$Jm-qWZ6p`){JZEQcqT+= zKx1Ppe*K1no|mjFT0~C1WSwlQmH+(1G3cq`JxX}qRxYWv6*oLoq`k76s7M=#Km^W8 zG|M(S52W}I*T$5b506tI)F?-3SgT}pvk{@-+-55V$;z}S-;W_Z8)()E(Q1;T3ZSB9 z`Z?_eUXKP$BGHCvnw#P9Ls-w#P>E0ZgPTMMYld~1d=Zwcuyy$l>rPjz8wj4N2 zhiidUA-Idw!cXVH`=6sX55G(OAT^hr{XSrZQJcMJrGXU&CYX;>xo zI$Rrf+eqa!xx9H&onE919JT{5OW)^|o$XJWMW>B24H&1Py108)k5kJd zaDCN2u8;eivg+g)9Yjt5F{UPk&4PSmz-&{0Su_{0$Hp+R*?kMqee^6nqunnUa-JI2 z6oOI3S_81&blP{wS1s7jY5sXKr}&;wzIo(q9QhlhzMGtv`oyw37_ zLJ*W%N=E!8*L>-fX-0?0%jxrMh{B4(RLQ8i2NUlw(OPar^v0p;gq0s)l#*$a+UKb> z1v=I&?eBf`^_?SrXhVi@WZ;rKkgrLHpiMZ~Dbo^K*q>-_5cq1==h!&u;q0rbS0Wrb zIL&dA7b~JS7P%~BDk?O-bH6vlmEF?VZs;%|^iP|}xBPG>xGK?9wcss9Cb5BAD(F+d zP@#6L@H_87bED06Yw{RQ7r}32kVt~(oI25u14lMo$L`pNrMX)ii@$CalrP>acKuzA z6X$z*hB~V3u?@J3kYG1Zry}ejtDC~d!74+NFI>jI>j ze^)b1(?}UBG3V+%zm>PH={;5?dN5W)7z>eauf3fzu}G9rEMlf_n|z@FFW~dtQ8l_- zX7{nSSY(mixBqN+><~QW^!_NJdh)7H0~4Hzc+u4F#gEo;1}#$Or~o_be> z_;}{-xPfi-;dzW1`e=Z!SMJq%&NZ-({QN@WO}OBJf8 zYXa@QMjho-Iv-{hOCdy2Sk$6uVufp|eUQmZJ61wx)HoD+me{?!N>$wo^~_b&$vOAj z%ZaECN20q#XJ3xN5Fg59fsR&8`-?Xb8Vt!3)ny`;Ic_{zN=MJ#Y>m(%?rv`R{FTpB zO!FZcHLJ3~N~K~Z1iadYwND)!mk$#G=cdJOml|}cPKTWhMVEp>+Ql}kW3v9L%1mqi zn6#E3MX`0Gn@l)SpanVYoO#Y z-Ok(kL?89LJ^=%hI9Kf@>C-)(haz!-hCMmi)w`k{d@I?;y;(|D{3!18I>FGUJIxQT zrpKeV@U}u4);zkBkm}iY<|n;x9z4)eHttN^sQjf-+p#K$T=$WcjEG?ti~cRETWEj< zJZ{I+edsz{!$P2-@p)|Ax?CD%*#;?6eYx#i@Xk>D9~S-o=8w{5)s8H9;-O;ij~q(6 zm1?>4YKUD`)u>ieB!6s3Bwyc9Q@Fn&BDbW=<0!%F{G0E^&YOheA@?3X)VZ?%^f{u+ zu-MplWsSjge+G8P9wd zzH86@PYV>krL*E5EB>xhKg9@9ngh=Z}UVDyz+R80QDwsl#^Z#_E`aU3N_bE$J$A5jj1>c!O zjChdE{C`s(j%V0W-TS0v_CKjrEk0u~>Pva*fBM08NOOOIrGe^Yf#5%vdL6I~uovL+ zN_XIYy1IeQ%#4V?!T%ZN^?@`W_5y0Z@%)iP{4?GVVliTV{1Kb~TpCI4%B*hprY{hPnlX|B`r5I6gx zkGBz3w)NNykFC|P*4f4T-Hot!+yf3b$KSk8z{f^HgYK|r* zqNA#UF{&?APW*9SKkG4Qgl4w~_ zXoI_549%g?qS#--6IhM_NnJnhBS3P!!c`p>xX-b{bV28AHP8e-UZgK+x43YfyUpzV z68iQj2t6U%R187c?mF zdZdf4utd9?N-H-iU%S_Tnu!uV-)7K!Kd-`i&lB9MY)Z1zWSgKw!W7i1E^|>*ytxf* zRX1K*7XnK+hdxb7iZ|;4T1eR2Sm?R3HFPspCmA$&mU%tyrqC_Xw+yW`n{~qVGwY~5 zN1qo5Cc75XaqWomYwnvAhrY|qxisnyq+^(Vhm*FsL0 zhYg_rYs@WF_#dCJGa4f+#WnmQR5Ek|)45I^+RaJJFA*gd94Xei*{jwtbCOv2>X~jl zdu5XK9~W*i7Po8R5&F61#t*`U^GETfJbJcFfr4OH_>{3(T2efd=E0-Ea{L~fgA1Ns zYD8ZpNZr=%Vd)2!)H|n#w_%dk$-qAi3m|Do+x9qx3`{#>f)ML^}G39`qN$Rlru5Cn&$V|nd60@e5R@rG0QIcoMyXQ zjJ`q{B$2L@(2%#8-Y6LG+zb0O8IEbeqtv*1pEDN+orph=jYzrax|h9jagRk5%jq(9 zrQlICt@@UfdOR%E#PuSd=L)LE@G%FE;uL;du3b14Jrs+-w6iDd-!x9waDxaAimu;A z4?xxHcHT)KO7x;V74V3^BNm^2G!6d|cY;o2waYdesph?P z=MizvXGhIcq=GUg589n&IiJH)8Vf++Y|~Vy!`Y z<%9!C(bAP&>gI=pvv$WCUq6xN$dke{9hAT}S1E5v>nt=$*;Q?5r@7&z>BR2y*T$^% zbYZnWr5;P{JnB&5{%v1k?=YaeXY{u4NFanJ|L3gS8yzFWr9b1&lTkD~GRPP+#8WV=U#w#0=Zqc4Tz`ztoZ zlK$llJ*g;S_#1Yg9`#N>-lFbgsQew$w83!qOoxTJCxa=fC^n{h3O& zI&FyU@MzDx0CLkaheB$V|9J=Uuh{xYt|gkIZyBFc>Z?Gyro$^kaxU7*6L%Y20<*(L zzR7XE61H9Dpgd=N?>SI!R4Me@At0-uQSp{Gk^T6DQ&Ia^lJg;NR&g4mU~^ zbDPp!wfw4fTH)|@0Na*Io-IeV`mweAG}d7^{p$oDi-YHze7!x+_K{hdplSioshQF@ z{j|e1Q9MWga|+9s^#^sdJ5`0wHLP!}|Mq@?Y*ZY#gTru6XX`x%kAOm6cH)3pXO=nh znT>alG$MtI(dTpGisa8CFaX5}N5K=Pg7P^|a?x zdC!HtkVR^BKBI;^A0exZfnv?%Ed+oPUdBxqW#igk-;~`Wrxn)E847IMAC1qM=iv7p z#LCSJA8ab@RyIOm`y5Ud*=!toa{9QxU{POj-VVIA=bo=NV?!?5DyN@M8r+HoWBRO9 z^p57%xjZO@dlOsYi5o8Vd+ULiHMvec|I>Eh+!M^}*gg zt0(XozH!&gBkXo#Qm^HMHkOVk(>+nJ312`b)O(B~xsdrMzMO`VM6Ok~z$!!F6MOGO zr&Z|jfckC214Qu#qijH=N&U7-BSPQI2t5|ZE}qYaqSWZilp-47&pE>XSQuRJLDFM; zE$@JrWGzMN_NN*RQQN)A9?=tzL4?ya7!r`cA)FM5C}RJiwSRPZ(tNcR-NQthc8x*< z@7~&l?MBGR2o$zDy@_zr}yTk))gQf!~t7Yy!W zt#A54>6q<;h+J>uoCHouFlsR14fmn|bYr~8rfQUc{?6g(DLNB5;K6Q^Jv;SFFWE9e{zT|tbAWGr1Z1Xh9+zY-F%(5XZDJ43My$EXQ zp`t+1puOYd^QtbxGm0Wbq{CWg@<4y(rd2Yk!E>FJ_$)SdsGZVh0S}H#FjCzq+O!wR zWV9$a0rd3p3uT30%_yRUD?^X*KjJUyY&BuElkR*EZ*2-*nD6n_eXlx%N>%%{o2)*6 z!7NeIL;+Da%6aE-;i16H1zbJDxz96bZJTt;h^Kx4>WjL?*jI5TwN$k@laK?x`8*v@ z8Az3Qb%By9c?eL8&&uG8UO)?{pY?5DV;?wdpZKEr@~A}H{Iq>vdc2DBIE(B}C?M6GmZsk)UJ_gowV#>n-veGQe4RMNCFK zPMFJDuYr%iXl=yL>I8nN~-ru%#=(DTR1vt>Y+VW zR#c4#RA(&ch0*PUqA}dwdM{Y!ju-qK36~+$`g7OVB$=3O|NYZD&jpIZfSS3FLVK4x zegYZ>Cu|qjJzhnlPc=uPAO98_Ezh!s^)4jo(MCg~X?IgKA(t)G<&#lgyyzABI&{oo z>Bv_pf5H1w7SN+D%iyqQp^`h)?`?OAGZuvE$_iGo(0ljQt&&YZhbjtav$Q}d__>o(*vX*Iwfl;<;=bSv&`5Rn zH#0vYkAf~7;PZY#(tP5NATIC#$Bwr(p5_wZ@=|{sa-H7S;(sJuoOFKINs~dT_7K!Tw7izZGg9%8RT%BYyBMNtb9O{Xbmo4e09*5 z8OtwB1jBYO9q!$9(3qaS!ss~=EiV<_R|%A=*?y6sL*;iJd@0{VbA1C;=Q?UK2L1?g z{BoD?7XhIt3**I4spkN&0cFwD^)juK>;f-T*Y)SmZ&!34s;8fi3GPH(qb{;n*b@z8 z(6^q@HJ|=^k)G~c(W2(W^2>=00pe0X;IrbG)dBUTQd#NiBBH z=tj0?u7CoYS3bI0Uk>(L9)Qq9=4`7Yu^_=3&xOt;uZsmDDY3J%hkozR#?)1q{H4^t z?v!fl4aR~LPRxnHjD6r-! zVx!b4Ws)JT%~k#Rs?0j~P12S;>Oe6{gWwLavDG`r)h6xO_*4$H4`V+LSw34-kN`>b zM#m@pi5Nc;EDD4K&<|eP-{^Q99p|EQzKXNX{hBU7y(X$%Cr}LXN0uANNz$;_!B8&; z^mUb|vzx~9u31<<0I#&-`%vUltM%hs&DlL9O=g&J7N6X_vS%S)y9KizeS=56Mjz15OWxr0ntn-@L3VBatFkb!MBOkz9I zZn<-65;eu0ioFAX|BDh(wPRyck+hb;#(?_e<{F1DZoZPZWG&NGHu0+=Br;-nPVtXx zs)PSC#6;$GT)q(l;nb3OS0omn?9sk;(3P&fL31U&*uUe;X;s;Ej8mbn_=wUj|j z@8yU~i%TWX>p#1=*Js-@g^6L3btB^6x{O4 zg%wN8Y{v#9!S>g@EnvPRuxinNF!;e%{~?GvflS3@h=s9Wevwk-OvNky*h~>WO^Kf@ zfiTBxrS`@pcl{N3ApYLgddNqRmFLTP^-{Oyj`Tqb`&Ag;^-pg)9;56vpoGZ179Iqn zH@7 z*wlr^&2VoUq9UL$3}sC*SzI$TIcFeDe07mJ`j!iGU3Fm?PZ~Dp*4-K?VmAdu!FSk* z7LJH>@{l*g3Mm`O+2FE`Eej9BwFfe{oL6{96GI~T!zuwJu-CJPZ#Vaw)xj4 z7S9%Sn48%<@kdq`tE&%hacn$$RAM9uNKeova(J}cLBQ*lYari&+#*i2mNZftS)F>8 zYuE^_UWPw_z?6a!6Dii-7WTvG(q&s5o~t#{rX*GXaE+$paVnh<{vz2=-4}Or{>mb; z^lYgc?yq-_SG&#)d5P_MkQ~?_^00m}>pRd~fb`*s{Sf=~J ziSYq3Wxpr^@-z(WV#MS@#T;eT>_W7JIjybw%Ut{7u0Qyh^Vl_3B8IrMou%FyEuYp@ zG*$$m1&P?J`?Y*Hs~8h<;gNLy*Mk2^GRCriRy(kDIA*{2yu$!^yN_`fMQ98T9Z#1g z{A0T-n;+T&a1MARDgS@Tj?Ph4#|Eru49^$Uu1hhT+`5R^d-R>{>W=Vifh;+n7sbyM zj@m!4)AcSjiNyc7MPexsl9R!by9%YKto6rb^8OxQuwYBxVg_<+>hlG!^!+X~f1}uW zY^rpOT{)}df4C3v>^W-KVELp=+kujv^9KGKnd? zt9R*$Fc$gd1IA+8x+3ZA^*@Ymq7g5??dQDN=jcz{o25 z=Q8ujo?l@^Qi{7X)~V9eqn_Le*~E#K9~Eny4>mh^;XNSrw{;0A)*kMr3J!84AHEGX zGO_hrlqWwXS_nYU=-58ti@+w;92FMU3Xg6I3_g6iwccOBRPxaJ!0!H7)12b8uuJ&m zb=R$wWOs1a;v2_dOGL#UWLeLlR&o{_qAiw`2(0-7GO ziGMt3@dEOouY$Y?q$}LN{5G!~|6@@w3Pg_lOLU0aYQ0ejv8HY4bzEG+3eS1`iH0xh z{*j|v46d2ybf5ih1b9)(CKTs1j$7M(?xR{bBreXd>DX+jpQRx@O0&%;M}76RyKDa+ ztXe_;K?RSBmGJ1_Bpt~7hSVh4N%%ptO*X zyuv5cC5eVS*;_yPlKrc+DgGQm87PLgt0ob)b>@hunY$W!i=Ds!vg$t~9gQJL=Qy?E zisMd=cJne`YY~UOKEZ@0mcP4DgNM}Cz-7hl;$*u0QY>F3_g`fc6jmMCVtIS1j=%A8 z^)1+qfZgR@Ea{<95-WM>WbrYg*M)d@>4SI|w5vSzIQ~EST3{Ioc1qQw!o1teob}1t zYU*x8?a5_;o_!)qBWnvQznRkP!ZEGqA7){Xr@dai& zco8FFr|1yc<%cEf>i+Z*|Hb&7ci1LU{ve=M5}>&ka| z?Kyu-O6#L#9zr8;-f`fi0tRt*I*?*D9VYXCp#m(15oT4Oc_=VG;a4iF|D$E8YCH&I zV0+cEoq&~o?EiNKvEpEV#7B8gZu!@#x;=+Wb*s`K($J89mdrw?MdtKbdnvq#qvgqS zmWE?#pBvfKjczXlZDHnu|GIdrsQE|N88}X+@T&E(Z3N#BM2#MCao>Ftm~LWuNS`o+ zW_$+J!qkTCZFZ5P?vFp!)z#cRtyo6+_MWv6cSzuA=}O`3-$5ed0d|CJ))woCeJvW6 zWQo(~ECVKtO^RD8tCe}Q`m#V9NipZ|(0GFX>$-SeCj#&m+HCX-)TQG6aK@V|2^R@b z#EB^J2aPxSD(ISABKr>*zswO>AQ&=fU0JY7D_$j^QUmRG(yGPjwGfZrfv3BbcCG&m zh6X#Bqz5-M9yeylp?muOyUeUqC!E!UR z|9^c~hiFoMrMMiiG{{AHmSy_~0VXrluwirUU-slkHP@G05nS`t^@V6}sMlwh84Fm! z%Dw0B8DNpe_D`cQ_0-|HII?yH;9eYf`XvcA5Cu(5vYc}I7nH$9ev23J9E#F-Q*HTj zuX8S!+n$7l*PK7P5gf-LI9QHn_kWGo6c20_U|B{iW?%2?j?q7lHPFhR-iyEt-6!rjsCf@jC9GT`j0nt-~f{-HX z1~p&7L7F6ccCps0 zu%3H~?vCwBA}_F8j)7rU+|{E9M{Me=|0XNnrYH6el(`}I>aX)yZnhFSkiw2T-Zn z{>05}!?LyLTI0(A1&-hd;5ix+ST0=CeK8b&U?cJARE_hW_*yTpP6~jx4m2N^omG>T z&|+y~%RZ_oP%MJRFTUhmeRa!xBoi7>7NCyf+Y@TXzs97gouB1U~F@^M<{I_$BV7(aKP#PYECRb z#hV3z>Q!ES=ex*vfj(PBm0`mL^??C}O5sym=^1t_1qeF{3U6TE=b*p*lb#K!ug#Rt z%_Yx$G9&SMKI!bS_;1f!lDb}D3t(E&a!Db9#Tscwy9xwL+|QBr*n*k}tZ6JcZoH(^ zev~^185GHr25UznDe$Q@%nbH=&fIb4-z8#pD>`LPr6Vv|eUEgA(uhRZ@SKE|25a~p zuTF*N)kQ+Hr(E;y2Ibf*=pKCJ(24i+J+4UK5-JR;9_9rrg}OF8o*x@H+9ElXvZ%IP zz5Rs5YIjNk}T7Q49{y91WV*hWcRLDRYl*ONOA$~u`3xK3ZPuCn+%7!onV<-{dcmB(M= z#QafR6v&5fKU+tOamwE29H-Tax7DSqw;HA4aECKgqt~^Yz4(abq%jrg7#BT!S@S8|rHu;;-K*GI+Ee>-rJq1!+GBN!}x{bNTH13O|-}~1y zkJmDw#{qQKHn5uO$(t z_1cd|K)w5q2a)>`MZx#QP%x+BLLnBpfKI$=dS?oQ9kq!D1152IH6a~x%4o-Md7X5L zXo5q|smva6@Ez8MA4`$!vkS81gJIgOIVU}HQ|DN={`+8eEM~Y&_U=I0^N@L;g&^9Rn`KJHD%iZe zP-|hjx)gGo<89=sVi|N%y!f?x+lIvNrVT3JWM5 zR)bX=%fFFCC`&u&H3&v-2a{uOB&d8iL=zx;57)Je_h>&As(w!P9YxD<@~z!+=F02h7> zQ&iX@2aafO7*XOl$aUXQXb^u)_3^PO)i!29P=b$JCP0*A%_cdTZBsW4TY4sn>wnSd z-+=DXZc=;vqNU$Nv+6gxw!fNYZ9u$~&7>>nl2xa}&wl%!GDKnVM$I-R>MVhq&bC*` zN4iT~je84Q4$A@U|K+*7wvR)$HFQZNb=ta}esz}a(R`%eT!mhflS1gy9WE|ZXWqgb zy2s*;7B+h?fa!@hWkg=iG+*`3))#1JWnjHB5l-LpCa+v4Y|&yM4#_6o&NA8+C_r0r zSmfZlk()3PsG-+q^=ueCRD2rQSa=z)m@r)dg<=zjPBUB3nTo!2*`T^=Pt;R!$SKal;^&K$f>2)@y)8b}D{&s!sdpZ7@?5MvcaV=mTo`iozSvsorj`JL41?PsXl)#7{7^)n8y zCSQ!!d+e;|9kAY<^r4C>8QNW4);3{vny!f<8l~O9g&pFK0;{UpRjzt^7z@4seB)B=T;oaDF}F z>3wzc%A{9g6S^zD#XFkTk{#rTF@5C`T+eh8bTYhH{ctEgVD6DCZB7w$Z%P13VKkta zMBgWlzI&u#k*pl(f3ZhRx7X*1$Va23XXK(fPSXOJ>+TmLYoUIQueLr9!p&-r@kJPd zmzRF}6Am%!H-z}d-bLMtmoOpw;3`Fl=TxyZpr)UkHL{j2I(SKzi4%B7XSJb6#{hP_ zaD8=`1ohT43KmwdxZ{6?4#ykL0C})6;9&45L5@DwlH}vzlC~kgNbH1&QRCDX`3%h~ z$AWw~c2`Ka4mB7Yps=4#qv#<;~Z{7k->9G)jy;c|Q?S^xbe? zvrN2))@FUhMr2SSTf)-$@G1DX2P=4sag+*w$PQ#l|!rEWXZRX*@}{M(z#=*>Le@s-~ddR_`F%ZMb)J*=HOk0r%MLIxOr^Mz2~Cd}{r zHy8O;X_N9pyR32q_~As3qFd*MWm1n@6`fhW+2o0rv>{sV=C&(o4_4J(TqY7iv>3GB zjw$iSY-oCb50VBoINcWTy-qU~d-Jkv1crf9>SsbPRHSk>6$^zNdYtAQvjPTGn3nMwV_QghsMW<_Lo*r3)pTB$H%U;H=t z<&)a0Ux-}evU8m&Fh}9xefTm~)LF$~!fx=c$If3BoKiRcX6-rhoJY@TcW>21S~-0N z!AO`Q=G!7HR|W3G}A}J zNc=|PAPdEEtPZwt_oypuYj*+4oI6U_`&mt;j}Y1Rff*)DOxbIO8v5YOJOF%|*e<~6 zO40UCoU(n&&R0pH9|!-%IruGetJbNX&w5@?e);@q1ocIEm0Hyf)v)z6#UjENHMhLFVm?M3bC2++MA@fkf-bIhmAIExpiX^6#FUBmng)X@ zOhycerQHE4*y7Pgf)I2Q$Hwe_<>NgAqv-6TNf715iAwR0Xzkh76E0k*mAjv8Qw(6H zRLr(=-enS1-5~8&*|Tb|Tz*Bk<%&}?d2c28R%pRKS4_;rrO8o}*NOg9=j56%GAxnW zqc~FQT8l16kES>ccd$`#&CV~eJM7mEyPw-;(DDi;<*6$*@za6Ma^lS#R5_zjK#h{( z>p|b3mnkcBLr59JN9pCB{Rb_=7l9TL`{01QOY5Fy%yhFR+@bMkT)YenI^izueA0!Y zv7`w`#}4CrCmyw&$w{3LuQ$uAUS>Eo!@sFzqU*0#9WJxEWP6;y#Xd*+DfCc8EYO+f zzu>+4#OW7tc94G6U=t~K%kO+N-99f*H`Ti~<-u<`c|L8G{KnoKc7YU@RE}L>%5IA% zMv!d-kxe|F;>XE!`M#ovyf>vqjdPQGz6$pBW1ZAA0%*Udk-OJM7Uc<>qsp|>2)D^2Zg^} z)IP)+GV73|MqlfMR+6fa*STotz#r}#U+yPFKUb0{U7AC+aJdd-0tqXl#UYx6iYMp_ z>>C)#8xMtaUhfDgleqC2aRyG|FDf9>Fd{!lUa`t*4dJ^O@iL)yNMe4W!>zp!84-Um zoCj8>8+bLDCi*uhia!>F@_}v^+L%nUbwxlT1F<(oh@o5xKMz8!uijuq;f*TbbtO+_ zz9utx-Nxrf-Msvi(W!#*`3T8Q^%ie4IW{#E?$o_{Ubs4Sfi00VG=H4ybSd4*xY~&$ z%E){N7(IN^LCg#_sD8|cmb=hodI5-naLz=v!S|{U7NvJKOYBSDL#VrlDItRX1BHhv zHTgs*h{@0U>gMV~dCrEl6D?piV{Hn<$>Re{|6@zJg!L89%7=H4yRDxDPHmBtczDzy zF#MIv9rL;*ma6SEZ3DnhA&ichGP*j-Equ`~1+`DchV{2-)$C#e{|J&=(K*kob9VVIGXhv@^8VrHyvy8*NU72S%=*Y} z2}ecvvB|7|3NeomakK01ktkz$2-AwT35Ub^Ym3Qo)H2mjc$?Vm35V~L>Xk?(GHalr z?L7#gx!edS1-fc~6p#%Dl_B5Bhz0$!*y%{PGb(DwG;F3gZKHkQb0acdycvuePS$qQ z;J_GRJJi^;=oGDJ!if7LPm&54R#lYPGKNp}ej`3SQHl)r$oigOZMM*?hRS zY*geSb@98-w{@{cd(=`?Y&BRpxiTDDqe~q4oN&>kVDKikWB}!%!*qRb+fDDyPM%JA z%ZF?W@bUdq1pzk}KM_7QPnfmK0H}8$unAPgMxY|`q3F~GKwRQ~m<7~~W_Si0T!|_| znDvHki-&=ts#SP~w}kxn+5OAgh1)*wx3H3^%NZKxE6r2h@{hS)64rbHccwP^CzMBF=1SHnCP}_Po1=zq?TM1; z7CYeU_g8N}h%y?H{gA!j$RX3}O`=5lfcbIBwpWqx^2WRGIOkMAp+hROE{Zkd^O>D3 z*h1X_CQ`J0~NYbkcyW#uVPa{RG1gVElag8>+wk@v_y2~`13yk4nkaFmwmQ<#-!#< zD*MjXi=@y_AkW{nvEtuQfGHOEyv%QE3CI4WOnvd}9~1)8om^tYd9vsLO-DaGfy$!q z8z@F6Jryh^`6L~ocgazq)fI;#7WgEoT~>}eQ|M@xD|sh%qI+eGyq`uCe~!k)*2-Jl zms!nX3&ZfmP_YKuk?YFO@X_)ICK$(ZjWfsrWNO|MVWcbTp`pejaff_4GZ4GYC0Mx*Wm%uv}3kYm4p85?wD|btMiJc;3vXv%D?JDbbBN z!oXkPuZ|4u6$3{19Y>|@BO6!vkB3DsOgP+Q-wKGRpZ-6Ly#-WMQTskhNeGe(A~7IJ z2-1=>qzXz(cS=cjm!uMd(hVZrE#XiS4ieJcFfeq(3~>+Y_xpeM-rrs8uEk=pU^r)= zz2CFpK;QC}%{W_p?C+yJw&`h2^LeA$+io}S z(L($l+lKwfNy_`$5mF@miz^S-$GTsDf<;B4n_EgD(qIL9t8bsi+-&!32qR}DwWT7xu}PJJ(6cn2tFQg##_N zmac&L_8l6tzafCh-oQ1-Ai<=!^7d z^o+d+a`SGOhxO5($HZ$d<8a}5Ujt3Bh1`XK;$EM$!QJ%LmZ!qN)lR`vmU7}Jd)Gk zmh-h#0EOHgs7^;$21}%Y5&ceVS3nWv6YqaZWNwPz1)mrEf4+sAdn_M>@UD0Y`7@9? zEg&tlV6Ju-jLg^6&uPRSOuRQutyArBCN9_(K5ypFSO_;&BpL-Ba(EkZ1J^4SgkB_X zqGjh*od*aNEv$j)EDy|4_YnCA(+Z1VG-Q>|2s^|hUyJDuoK~3gSdJszj3AMw~5(< z8FP2SlI6^b1fzwIjTK=I^c=!KZ7j#)e;qB4dm7(8TxW)(Xt3VffuDvzX@5Aks&;=) zZg)pP{RS4zW&Kr}_2;4k{@-LCpu%)TRN4j%k3?3V1Z|t3W~Zy@?Z`zoc8`(86yom$ z{lH{Ip?li-r+{VThjZZ)cOLZ<36ToO#T-Y9&Qt~A|Jc;{-bQkr7B+Cpe=XUfXmt4* z_Y2Vd03~6iyqa03Mh>YNa4&J}e@DelnQT2R_^KD>9M5U_s3O#;vN9H%U{82i{AwTS zetibL{w9qPZK@!TAPq17fRIqFjMq7|2`PRv0j43VrQ{wS>zT>I0BWHS29)90X#gTG z9sgp5MZ9oo@l7)Le)yr!9X7jgt>pH_dqvM83($YveMoO)12N$Pcr2|8?;NDr1p>Ow zOyuB+Ef=driPmpFN~9I5uFog=(hiS(%-^WAUh{nZ=8!~FhpUYn&)@b6#`*B*|v()iLXd-C8? z-P{@>d{=taJmd63LytG`CLfG6AbqIox(RmWp8}GE@g>Jxz*A-hp8>;|l)MbTzfTkW zANepF@Sdu^)f2lPIPrSTs7v6BM}$0exM{fDX-f?(O1|T*U?1OyJk=0Sw|0%`9(n8i zZ%z!rzu;k6*IHpc0O#iF4TrXBB)@Bsn|rQqpXyj)lNR9F)!_2<*+ALK(DpC>zOH8- zfVfzUR@YhpumcGUm;;lAClYnZILtHur3wh#lvaBKPg_dt2{<0^FtB0eTKpbMeh3%{ z?Tg9Q_g9lNY3UwDzS%G^&zPOe)k(1e2pC~ERWm02>t0m!!bu;$7P74KX?#F3y(KH& zj9Sy2mO9kQ4Mv0c|6uyqO{N2Zu(LHY1n{0haUA$YY2J-X_=M_L%l&1*u>-HR&x@dj zxH2KuC*msRUKv)I5;Nd|!!1>l4Bz#1d+Q8D^3hYCVHnOVj1UN8{elJsF02Q%$0{pb zGFawb&mBL%;k31@n%a4utt0}_h7>10NBsi2&^aX8?Ij`<0!%==m;(wxWpYgkLr`TUT)(OsbibZ?@F6XD6Ur1E(i->`We(GSMSAH{{R$&|-&0iI8yt~?L7 z2DnFz@)*f7p*JLp`*F6*!2!6^Ece7V01D&bAX|Q8Y8iahs!oj#^ROgm7}gJ-=Cgih zoTm`1CyoO&J6R0`_;b)1fE}<&3=4*7nhx=F){KaqQ?R|NLkyh{`o?1j!vuS;%DX$q z?+gU4_6IK0OeX69O|#xlQ(x*T6|~Q=zP+Iw`asW*0h747BIPG_EbI^mP#e=IRmr># zUGuyS50Q^knr;RJF4Mw%b>OXiRvtvQb+1>?kQD@I!m*E@Cwa75PpTA>(ec^0m|2u4a zH_@<~wJ<-5HXN%DrVJMyBnY@G^laFVv;!DE^gfYps)g*=`3BFEWh!giJf0_s-4#dLuw40ykM_-+|F5lLG^0TD;A=X&I zVP4wOTsq*fw>`8QF);5q-7cv92*Cu(Pa7Do9{167bwS? zza;?f5Jf&nQ;oeJrHJJYaHs*(t(!1qsL)7dUNBa0wQe`)HnFIpQtTq~YvT-S86bKH4jL-&g|2slsRQ zFy@XO&5DT$$^$G6)?{0qk>Tys6zk88K6*?3`dzpq$785hM+d}CJ>OXM#zq{~Ec$ew zkA~Ro55J^NexW_&Iz{0$znQBK_dOkTdO&?nWb_Q~f9uHWZYu3#7Ogm!r7+{R<5Ti!)*T$i$=--`JOuLt1 zm$2(=c^D~J+5BnX^YJV2>CCXqkDj2^1Uhz^UxQE^)GGnc&s{@G4s&a34xpPpd^<8UE5eOR#B-Qap|(v>+s%ItuE;~W+@FDKU@ z1?(~q0uN6t#(-Ksuy?90d%XIvU9j`9>lR(|FI65rV!p518PcLuxIIgrH5NDN4^AkS2wdf-V2(CK@0cc*3h(dqFzP{?>Et|MPX+0jHw4S+pOJ3 z$kF0>uu9xMtw?*7mUpd;_=ceeae7U$XF|5VC56+7wD8v&vSDfAkz4~;k;#lg-fY-? z!k%g|`9gO2TF_P#yudag45o_bD+SqBP2gSh{KY&yOs@)9C`k%`wY|tI2gHh_)F*+i zN1D^!s1Q_=!SOSV@=IfgZ=fP7+e#JkcEdhh5&i=u-O|C6&9SK}){ckzDPW6gtvhn; zxjX*WH*ij^TkSNr5GDF`mPXJ{ZCT`NRPFl7>$9tLgsC1DT5#YSu7$}RU51_c>(Ly+ ziT?LMMq@#9Un?Ha)4PpHC#Cg)FEuRjDqf1xny$q+|XZ^LAz_vz&_r%&2=l;?D%kEV3Z%QeGia3n;3|a%N zMZ`oag_(ld89Bs&zAJ~wN0K{K^Zt*K$%s)a<$TY0Gv(k?NDL+o>N$u_$<9^xF2nR! zRo~y>ZHADixN1hy=|uhN8i(t6#3;B3?pGdINe)Ml;wV{FmW}Fd|3Q)(#Qo~16aB*y z8MttG0|s@okfAi?mMEeS`P(O5@vH#GZ%fs#hsjbUWw?lkqCs^#M`QY!7>v^MiU-M;Tf#sAq-hT8O6{7CPH|jUjomlXNaSu1c~An*J>KT9v}h? zaLy`xN+D9MEmGnVR=0I3OggD__VS8lkIi3CDo3}`*;Nr;Xyr8~Stz$1R;u7m5~WBr zt;8Q12ivB)s6?}QEXhO|{mlC0YO6{|gEGjMZs1!ejx8^i#^~~^S-gi-%hVc|0Rai7 zpN_do_z&fd5>Z|99k8QHx>Uh$^m|iTjbt^4LD+A(=i6f1n&5VfyXYaxm!5vUE~H{D zJlfx7uBN!`!_S`yYIG%$=)RNaQ0LFnqs}1$nl-5X()WQDk4NO}Ae;E}*B~dXF+H@c z>qD(J$xtGd6rYED$8yx0c!Yh$%}Cj(Sa|*cAY~<8$I~oQJ*aew{*HQ{pdZx5=+f?f zhHo%vIBtjnZQ3hRcR!L5kO_5ueJO?U%a&PKgdxZD?%^lB*3faXeucAEr+(M|bUn27 zr$b+>r%Vkcen2v0%wux;4(UQ4DJG*`#Wyyl`5LJZuO8E9gk0Z+Ray3|G6F^H<|?r1 zh@Nk1^k(A~BacWBl}xLAz6)>~8@>Re0McPiO$`+mR0tLJXSD@+e<3lVtosh18IJ;P z8H`Zlc4reKnMwAtiL1WIKY0OCF%1wX2$J_0v`66xPpza8O!KFQiMal1LaL?iag7-w zHT-C?ZOhLm^rRqN@ypo z$7t9q#I@`=sf-h`lFQ7J@EqGuW81E#FRaVA^L;19+UtybOB0tvhtBcR?y55eX)C55 z@x_@!hU!FWZA&1>xi&*G@O{1GA^S1Ls7f{Sm^XCUei^DH)1inO>al7F@>4!^N+~{@ z9vNoOk(0?oS7JK#mG3BaJE;nylE7#tdKL^G*x>Tb8OY91rWaxB5Quq`%3(phIw}Zf z$i1^N$$UiUnmtfMGh8n63E^2FeQ8AJlhr&nT%QCPi+}B?Fh&1f(?gwWdG+hei6wgGvoxUwJ=_RBSawNBs}PdI#VnHSBKnpqqW#eI0g1vb}LX zHr{_OSxN5$cI8x+>lOaLJ$bKh&pQ8sI`T#az>e9>V7c<1J#DbP*;k7ZCI4-~oVJR8 zK>ezlHv>BsU@nRgxY7K#56;Amzi)C5w7e+AKsndYO4vVu#%V!#xUzw+`M~fmo@*dW zLc)xi!jhFgcFe4e>Rs-OZ~mlBo_Tur3E~2CM^9+I^Re^9Q($EVvIg7_0~=nW2XngJo`DxL zBzx_8xZc@2stJaLY<2A`I27HPq9N2OHR`b8HuP(_^$6ocT>0c zKIl!g2WaC03TV-Q4GkH9Tw&qHI*GAzSAeLZz2yoGQscs%D{nq&Gu7Ve`XIqn`&w6% zDq6%v!T_5p-q`mSC0t8U*tQqE$=d6bSLhX2tswu>SEE6TzOF!eI{P9MhMtx!3bG}u zxEM`rap1JfCWcqisXPt31JP{Y&Kx>Ny3>Qnd@m?kgoMW_CVDFgbdMt3)JYCXEE?*J zsaI2MOm^Ngc_2SkmGUYyvPGQUCdOGF?9EDBjT=@&2W0W2)l4pWbOlQj1S)g2zv42!uypBr{L*q}ntcyZk)OErrg00cd}> zyJWBfFEIpVzj+bh5HFu)d@nXLAQ3;?MkhT09=+#7f3aq{#wtL>Sg{gira)$Ms7$H& zKABf5-{zl}!9z)a3i*zLP}&3hqbzZ%FNbL%aj!PA%433d1~uc}Feem=|5A-c$e&8C z3hP($gprJp<&E6Si_3vc2q}m9s?*i{Y#b4Gu@vo#edhWDxh|a)I%6dsx7>hynQ?ii z_Z0LI%Arj)_3nUXxvNgT+`xAy&0vf%SMiKyN*aQ0+kgEtcy)_qnn}HBgsv_pvM%3t ztg;lD@epcV1(WFQJ|F=6rE?yPub#d=qxX31<9}<<7)zS0^)^WJ{2Tn1ZX;HYmrZpz zoz|?0?x>7siQVXEalfxbB?+P5ae8^RdsEBB1y#{IWGhk($ru(S@XcOp+WA>Ed7SuE z2C9(6WUHLN5U$)m`h5_pOoBA^%8H#fFrwhC>2sR8#W&JnNMAGHoM)3dRH&;Q11$}1 zxdCcOBdCC|T@8htF~z|;A8}b|*V_)>Xb|d^K}9k$zb>CH`qp%@yu5g?n&ROZ^Q#+i z7(a=4E7tr=$AQby;_E{?f%2VsY-pw~nT&Tu&Mwb<76q3N#UAiR%)=jb#h4xq$@%NX zf1>tukpK2B%B#W*;2_RMaCTa;Vk3D7n@iG5i(^Y@oky-q zA>C+xvBpTLU$B^R=r%(H?}R!{QBalaB>k~R?vb^3U3SJ^ny=z9;c8rV=3u#Bw-3p7 z!F3N}J!?Qd)g@G5f-~WX_U`(BLj$5^ZzVy;1nb!DvT|*wjUXS!J<0&}9V*<;3c>LknA>U3_g)AigFY zJ6B<-=lW8#|M2MHb(^Vbhj_6rY;*za{V|85|+j^OPlh*#Gi$rOcV$1X>Jh4u!W z5>~&ag~_&DBCo3vUgux6;inYY?ussipO7!EI;mPTUS$uIbkKHY%RBTp5DME+ONy+v zS+~wyqS7<3XNC3yP2y4*&_4Lq*q`*jZC($T<7m>(9Dt(#-YtDSkEz#0pffPjApl9y!NL!^uCUT9( zC)k&EX5d%cYEcX4^a+#ACme&TeI{Qz5ul>oV*vVKvA5nI+ffqMCK=4WP7b zH@_DU@yO*P@Ak@Tl~Xeluf>q6k-1;Yo;&ETWy+x5!c3Hly_G!P>L;g`C$70CSygvd z+nrG_eT`ctiP_9zpc`*m)Sz`a^mWkV^n;?H19>*-YlnW3uN>pNece+zQBG>-%AjtU zRkonJD61f^3C(y@kao9UFk(xE={2km)$Ia4xqP!1v z`Fgh!(yLaFgdWGECKK3BLaRAfFsZlgOT=u7FZ2CJvbW!K*QE?`ePtza&5Go;>AtE; zv(*+?{|L;&gG``amIcV-xv2-{7qnm?^a0jcu#Nn)07@0t``xD;KXjX{u$TwqF*H5% z=WY*;UYFK1IV`p)HX_km1ks%tGtHjP?yK;7-3ru9>)WiMp5viCABlwUfr zYX9{qHR8a6aYenDa*G41vbl?Y9FqSQLxAs*62RsWKgM<`4rsCH>f&EDY@ij;82+c% zr8@4Uu+dMM74uh9_EKj8f9y_}9ijoKiHP}TgaZICnE)G#zi{l|_bdRbvEM<++_d3k zn+?<7Unk@E7{YPPD!<$yxlSuHVVsLvL*mE1|Ee-CT2FH;Wv8P7*VQuqwEvNl-S{sC zk^!$A2(wBdjU2$c`Cy-a!0{=NRLom#QQrg-mLdlfC)0*#1^oHEzv;++pvO08$*KPH zc$uLj(Bh-WQ=#-~b4XmJ{!thJ5#OKg2jR zoKx>?fX+Z43fnfOx@s-YrA4y);04Ldp-JQ%#gQx*GU6_F&u_`F`s_4VJTWBJvrn(? z5zdF1$ZPqPwaMPHrB+iHu6RsYF>?dpPB(&-Tsc{8(`S|r3H0B<>nEB=Mv^6oxImvc4u>)Z@P%9U^(Jg zwxeo~mUr*oY9;n+p_gs!=WNBEC21mJ+itI~t|IGU@a}_{oGUe&vFh)2lF1p?8LoSL zt`e{^P@zao@9%P68)-v>%l@EW8XL=*XPrNV756a1F*$tN@R(>>y)P)P->jPYk7$&T z6lhYf%fm>nl@6xkIaT2anQ1NWZkFsfQ&Pt+GTHdRd->ij;O1V6)f zJK2xTUm0EBiv)6h=s@cjhhuVl+OB(|=?{_Sy1lJI zR9{)LL zE>C6CjgkBT+qx@YSG;%jL`nvzpLE67^0h+75DV##H&1KudCz03pglZQnl%Fu5u86)g_eQ=b0&6Rxjp1Gjg`%UN9)MUZ=K3bo zN}keni(;B*)bGdJ0(SzovY#j{Nnp})0JL`R^b+S|7rmAB1wsX@Z3uy?6vXcc=0X}x z!(bndF5f85qHH@`#6`V!@WT&fBcYyC`!r6&bKq5Gd(;I#*~4CqF-^`0JFaxD{pt0! z2rBj)G-jn67jpUA8JWk~!$d+o8s_ZVxngRT9Szhg$H1$TGQ11I)Q7aTlc8Q7iqsj^ zyV;5v(!?SusNCahu+0!BV3H@UOhPBC?KXJWw(O~oL9A_?S|!u;gs>_5I!0BT7)C4h z=rgtJ*Z!ZRjp~LTikVX09QLL(A}L4J8CTg+QziyzsyYI+JlzzoSGzMZ!?_6a+irCd z&883_N`fvk*XMxITh(X~xxNt0VaF7VWqm%iYj}N0QdEwR+yNHxx|Z+sCp{*ja3%kJ zkGtzP+o|79esocg`ZFC6*G{GHr8g*|&Y1C{HQPIP|K79do6NeVZ@R+t%vhUqO|HU< z_P|}U!PCUdYpg1?@3y#@-;04#0#*wHv)>@#2!(W;4qGA{C2a+^Al|-Zy?Utv;#xxC zv}&=sP7Gdf5BZiu%;QaG6=arz9mM1T5{I339dwvPbrkP4;x-{O@l`*57>qP#iW}Z$ z0c^^DIfI1yJN$riGhFS$Ton*Cl5Tr+yMq0`wjf?BzMVmAfss2WHKhVE-5w5{PBunz z+tnFfnINOf>FNTGu^+*SR)1|W`*9WQnk%n&r@Ehvw=jXP?bJb1v2Bk^1 z0VSq8xW(@hmDXim3)>QBDl4;}AiNT%zn)J=chbDuGN;8YbA3rlq@2Nqm6vExWbLXE zCP8pObm0+g6oVqw+LOkHXPm7Vm!BjjRO``9Ta>~Pd)OnKcwJ11`c#)wFS`wTlkH9V zBw`Lyc)5wpgbbAj0^Uq_9;DHf1R2^+RqLn5IhQNY^tjQvgMS9g^hB;+1auv8kGeGg zC{7sR>HYRbHQsqhTR22?5xE_i)2qTU2wjOZ9EL4KOA3a$)=a&WyCg^j-DvfEmxVPg z+3;wx?d}LMfW|aG%ADo+4dUf(jpN(BO&zR6gz?(W{LnG$0Bbw=Rb(JaEIjq$4FL^5 z&Ig}OC``Vgj9Jvv@VsD++a-HC4s&QuUW*iUb=q-ytYbT}YL#ijSiJkYu}&X(mhlpl zy!)m5X2I@asc2xJ4HOjH7du~xT^_FM{MecT%()+h3<|edCx*zH82N-G0)iMYxNt=k zBr&iUdNyO9V5Dp-lcW~NWH_Zo<5S-E;0`dNQ^D2g;XBKto&ExGalZAb?l<0qxvwRS z2%xyVXR4JSW_wn$R<|uZyQTTzO1VB7f-Urmus`aqb)Efd>YjFsy{ugh`*%RSBuH3d zzJ^mq={2t3VrPSra6e1><^mbIqFq3?33#4|o!~_Qj?vUq7VEQgXNO4VxA6oQ!KD*u zQJF+Dx6u~tyv{`QYVafCNYYHJ8)Wt7r7C<6PaCY6ToGLd1 zPf8XKrDACG$Nq(Eg>BympT&%uWZ#XVmO3LwGwej5kU6c5F>GG&jVgyiU+>d*Kv7&~ zCoZ&N9{yq0Ddp7ycl7ShxVof2`M%Z|8~|06QyjwvG8VM9e*Uo*F9v7yNelIY%y}`& zoij0O;0rPd54f3sNof z&)*&vz1msXRUt5`;BRCHzggQ zeZL}F2gk4D{BmPHJDvxs5aX?G_@uNhy?3}%_H13z{r59xrY!q~hI4cOznHd827u7p zQRlQ?&EFVk2aniT2gI*0cADldcXpUS=RKcT=v~+U+nEVqw!Aj_Bq?;I03o?Jq`T<# z(!V$0Il?$CN|%WNl=kf>DgTxB7r+42?&ov-xrakZ9c(Ih`zqacYftkv&y&L^hxcni zP$0qTb)7SRJ;Rue^7w;(7Y3MiqgqJ9PRQ!^;gBhKn3v&Ye>n(Eq%Q=e6A^THU zC`d7BHuTwFb$&-`bCan>!1e#UCk;5})WHZ5r3SUEeiS(ytmvIrTeM&9>P4VWPas0R zd(CaH2yHmCvfm!4rrA*tf9zFe)^n(L=qjR4Wm5&|P0mBILiyMDrkQeyrYm+vcfmb2 z@nTmW4Aat2P|t8KZG(qF{_hJ@yIIulwvl^bW=surd6@&$Jl-@EVj_^q1ip&yY#DY^}3^M zD7TW|$ThKJeDvCpm4`|o+qC8VR!(56-$VZYO37XtBoSARvzJ3uHeg=I@6@4jbwJUw zI&Gta#1H-4y&%>}o>3{irdQ;v4OFeSHhMcb)JaHbbX$`E>KbPZN>TxN4kjk;#szZL z4aW&+bsaXsiaFt7RwWQ$0yO5du{WyY?s27CLB2uHkFC%~M@91yXq=Nymygg6kKu%v zylLHt#gtJ~qgVxJ4JgCf-{fQxH1YM4`-OhV)5{TlX1q)lkrA=CQrEu+k`z(0(>&B> za>98lG7$L<_7$xzwM~;_V8c=YDlkP~){Dj4`9g<76W(Yh-W1u}_<-fD;=0t}Sy}Jy z&pk-NTy#gOcHJ$!#a?=GFGCT0L|?2RZ^mKQPv`Gs2QNEQsm(n4X&79C5iuQ6diHBQ z#ZeXXu1`p2YvlZs-Wd*t`nB#z4&XrrFGr%1L`-1CTqQEp+k;$4+4NYd%QerE-56uY z>N9l#WA8L+jZ5QXWY%>>hgY2>_1iaPeqa0J<$mEJrD-@+#idf&65e5ZqGV~n`Dqz~ z$C8(UCGcSol5jiZAltW&1+kYVKcT2P^_*rRoA_&tw6NKFVx0{2rj=&zL@2KUqDc3! z@Z>1gZx}CQn0}zcD??h`weWfmb9YzzlKmb<+;7lvr4pcRnYVCE*Xmwm0Q=JxPfNqj z1Rnc3vWo7g?t>?`>u=LHk?pSmPi^P$O?&?(l{LlOFOTY#K0cZJDPwxCK}xRCSH2ax z?!!cv@O{WgzMFQw*9PH=meTc4`Bk=@!m(=GqFu}UgCe~1q?RJS$2q_$d|wPs2o8{8 zQxZT5G!ki^aST^DeiLn0q&lsv^ecL-5`qpqtn)PjsS;%=9S@7aowjm(Et$Y9RC(`$ z%w&JwIggWnZ7|I`K1el%kIwV4WLlHfqD1CEq6Ie#`QoLxri-qpu7EA`TtgXzDm{~J z)^+t8^Clsmf01bsdPwb(Zm28>$g=KEDS<)E+)n~8k7!5d5+aQ=kwBL9B8y{ew-LmW zcarwy&Z$VZU(Ee#z8Bi6^QvNw_T^*ObATlN`geMQ%Yd}z)`Hk!nP0cdm&oP#q5(ST z3w$+_tyd(|2|L)Q-xJNrPoxLr5URU8zWyOLreZNKknZ?X%rcp9J}4;B>8ks}@2pMp z^cbq?-EkhYMP+#LAhrC-v9FbSM?+G7$x>KyM7FJrLKX`qE<`!U6W8n8r@5Bv;!*2s zSEu;UKvj519IgFOAu0~0CVZ^SwNk@X=!Sn^Mf|;VYMHOaURxGkBjD;5z%aj>wR3rU zxq)Z%3)HqJKJ86E?+P_h)jVqi-6HrSgz>8j==HB47zzdbw{f6 zG--+1(2=0KyJ-K*Q*rzkMb43sd6}Ld%z42|feRi!|E-T%GdETN!a%a9x3VTr9t*X( z`HMM%e7TPT%C)Reu7>9@{G8z$eg<`Lx%~La-|ANtb9V0)D z$p*X0qjPFl$*j%umF`iZ7{e_thYm^aG*Cg17{q}XZIk2bgCf)DaQv|r3Fi`SIYAG7 z?lvEVA$Ij9%U1lbZ0Zl$k>|#=Ve=HxkeC_7$HE}+K!do-sZJ62#C!=ngZ_D$B0re{ z9P{TYs|`ZtfGXo)DkS~t(W^RnoXP@cF7&H31;&|*UGrLK#)0NztV_^{T0W78T8S1>`b6 zDoJci(tZNgkNb8*E@_DKn2iFJ#nEw66LHehJ*E88b$s%Ut#Uppycu;5IV`eXTnrtR zY&n?2Lm`sF{M;bj&$JEiKmGraBfTVWcud3orE(kh@~KwG6v2Y{iix;T-It5a7DLXd zSwgC-&F7iB)ht4k-cE;WeY1d(9j%~QWLAC7TZ#AhSl{xfRtv}vZjQ`gkWN$R3^rZ* zYtqS}h;dzj_;fl~gykR`S$of{2>pJWeoc~%cwc*UC?+5?nwet3Oor(RSj<#n2AO{1K^+U(f{~K}P?hXA{NQK?z;ljNQ zW~s8jncVv~sntJcy*Q96k}JwEWf@vWnU942eR$yHLIAqr+@~S|80Kfdvd0>R{b3KSG`UoU@8Gi3AWVs`~<`u+t-XK_9L z4Z>~Zs|G}dSfPn$nSPB-s`9{xq0m@zkq7c48nMq%ffs2ck#g^BYCyCy3aZ=fS6A2D z>5%eAuQWpK<(8kmye4d>Zhc36*Y_}L_;DU|B0{ac7|{+Wnrk`VyiPCO8QM4eeg@S>>x^k;T#sL0Yzx1VzuL(3e`8+0rnjVJ zFW`T@Gf-@Mkj93H>hG;73KD-*L`=t-a|pw_BH_em;QnyakXR9=#ZG*Nb}DJ5PTfZg z#zvUAC%Qs9+^jA$m%|Mj2E8t;qNV1;YRo9t^Q5(JQmcsq3LAi&qb2QDHu|l2ZJqEy zwylo=;i{&+o{QGoKx)A`YldP7?+V^lPgT?pd%9Vg)UTHQx}qZV}i?$r758zS{k zOKWr)PqjWraa~XOX3@E2kzfM5txs9Sre)PJO~3zjeM@r<7m8dwD&2r`(93kOWxG;uBMj)g z>*Ha-R0Ykt?bmp*HEi#Hnyk)~RuB zeySu;*=%cSDNfw9HOnxXqSG&MeGVz ztKrtj(mig~N+p`$#rbq>k(%8Pm=!(sEJ{oS%d`o^^*w3pA3HR9+36aa*v_diChAlU z!}Y;&Yw=+JA7#$*hp)5ijlQL61d02ia^!^5izA0zJZdLSh->djglUr7A_mz%th(W$ z-MsbY{OB6f^-m5crgukG(QF+(%4W4XQ!bXPBbRUJDoc8kstl(nNT?@GkF5O^A zLBi4e4qxu3IuX6DH1OEkt`}{W7^}gFp_SLqa`YnqIVp51sc?5E%*KQo?MOqLV5#iBH*?6ZSPMR=gurR#@}3ogmM#OlAJ z)jzT#5{>WXm*v##H*{7|zc98;z5g*bIbKSAn`3&XigMa6bvhUI`lK>CiDeGulMLG%6!!0+BlG#qw0NC5PFsWl7(O^x(19F)i}9IVH#Mz+1-hy^*~w zILo{9v*jP&R)1R6=Zbp1te>r&knSGu+T--*OE%|I_ zu~fSd)<6>RL50I?+`7`t*qUe4xje>vguN~A=@ZH`Qy-m}S4N)dnzm6UA}H7E<|ifK z2-VI$ZAXH}GhV{gW8vnh9f5?c5p%TW^gVYva(I7rW}&I!W|OcPftvr&!d0B_PDg3) zOK^(8lTE)VXm_K$yVxR(fa6#%YYy!h-)THw&0p>wz6Vb5c;Cu|MfsYtY^o@$JAH{0Gm$!Ts z+=sWnbZ$&|&G^N;qgS16(AypC3kNj5uWaIF?joO*Cx$fH&MG?A$;L-@R&S$%%{9id z)$Qnt=3T#mkU`t=nro+p^*_5@zwK73P9?!ck$Y*5Ex4Fk@faAOkXO$o)n-Uqet%eI zN^OXqP#WcNyI6Y%@;g;pU>(T4gs#+iovj@G?&yF8+SXp0mqvMy*lDoc%cb}R>dwqX zcQOL=ASON$%ihY*YsiyeTF+q9Y8Jrd@jDu|S+1me6qBeQ)brYdit&IE_?!d=7HI(R zz%lX|WEn(v-Dh#mCdyOEDF6J@K@2e0xBkgWdmUpH6Hiom!o$&VmC-@r+@_+owjBI~Gsk@U~s1!RnVB8JwC zelPF?eas&xgp@NXgkGi~&A5!_KXniTA8HjN;D>-tCUw1PDY0y1w0mU-iT|gi7=az6 z62Tzzg7M)u8X4n!lr=biuDhdn9e;fP`gwGv0Ts}of&IZ-Q^%i+Js2rk!gQVXy8X-= z!8VVWJ zkN7WpB@)RoYRlBaq;VaKFa0{?RI#v@fnn};%(?p~f+UR8alXVn4=;abX-R}rghRTh z&he=KRX~`un10e4Z^+-4Tc>8??>m-ECq*C1vf;Z>NCdm{wLeUj@R5DgBvvAtv_=d8 zFDA<|jO&hHsKIO>agrs?Ui1}DlM~{vkVyn1Dt}P?yW2CIFBQPu%(X1>aX5jyQQduR z_aY!nQq1cA+>M4;oNVcGg2Z@gfJuXNojCx1*F5+IZ{V4-tedZvJ9i(Qmq$BaqC{DJ z_95RClfb4a8TIH>*$@daAR@$6!BT%iRO1E1M|lFrA7@3OVO_Lw7!NP9uv^~NH=HAe z!>l+}|6QW;P*tk=?sCJ^>9YDt`TA*79T+aqqt7DS+oniCSa_Q#o7oU6PMv=rFFfQ+ zknx#=D!lzHs^bwP!3W%ukH+cW7&bj3eZeB-lPE2pFCc+I1`Cv&(xqrvL_k^Pos-)s zG8%B4zMJ(a1)p_%d&}dyCrgAi3-rNkWItu2M3Vt;Bo*(z_qWG*^Jl$B-q!b{7a8*Q zN(KZyIQ7#ug2> z+F9uM+rYkO;yDGW#nF1?o^#P-^I#{B6e$ccu@HJQ8M1Ie)Ei<}mlqg$nzGD~Tb;>a z#qE2|QoL-&iW$F8KLuNDoqlc0=ElJVUS5)b5Vn7#zKipP0rHu29{p{o) z#lV}4A~$Xn;Lk4=*f#g= zo5S|YO7hNuh`ar7{BzeVO5E+gJUe;nUbBZAXbyymxxmVQ=2udD*%FPr-hajr-2U8iV>{zm~`Lf%nkq3m{g@ z_h+8lFWvE`xHBigWSk-@`)^pR(=y-1PCu4xdiG|s4iSBKj$u#{n49{;^!_thdy$8m zxLHdzTTt-?Njv~vhzGA}j~};2HEZ6D)}Ut zYQhGX0)4zq>&_{=X^z%Jt3MOB^1CxE5De&HHO$pQLHNUZcwWwFb==hS%nfX1eYsUQhM8JlKYZqJ)*P6^l&r!Y`Ru# zKI8{~>-;wLeXOp$R^N0D&#X=wc}?Ep zEEn$pbt%%tKAWCD3nCC!3?C%!Hd^0ZdNupw4vrTv8=k%lF{Z?{gK0kkU9=trzIaKL zL46nG(|QQ}XwwUpV}vEZN^O*#BjEAx#2q3?pB%CSB%py;o0KKrRuiS*gc@!u?HIq}Kd_v<0E%wAUd04bp)3 z%=jw&F?jQ^&mn9t5OE~Twqs7L1+kPa0Sy z!Szdw6#qa$pe|`R*6{la%3~EgoP>u!D1W>N++1Bt5kKSZGy6{*BhJ|v?Rd)k=8DSe zi&)&57i>3y4%P*=-Km=woVX+4TdNRiwKLfIcRr#s_UjUxlVa#bIsI>OKu8weenu(f zlWnK69SCf$Nx)}vuIZ^(VxIqJMG+mkXpScpCm)`f46kPc?xni^#_evPhbrA_fRrYV zkyprD6)Z5zV$&0%0rp3+4Xozi!o2xB10i@?Ak21dj|2xOz2~hqOu^PCi9He(nhq7OSALFUI6WgC)|NSg5B{ zQ65Y;0Gj4lUPZq=q}m)<`TKOaOK1^-{cRV6>1u$aOFtSBp%<%7&5QK;E*;7eeO-DY z*yR|S^VXuk;k-;HaO%kA3%VhGGCi|t0!-fl&Yk!{;NL&Y$GF0uJ__fsd;jSM@;X4K zXKY(92FJ6KOh8!`Mk7DvK@xTljAHRg@>gmU0sKiYR#HfliID1ulKiH{TwikTE#~gx zEb}|uX)xmHv>PKa=(Pw=Hck+>8PLQ+M*^M#r$jiiKcVzljz+&k4mZr$nDq}eW)6n*KvEYndN=#!c(CnWB5sFPXoy@GCUV~%FXuVT42yyt zdvDcctTl6HvCG0PjeiNq%!>U0WG0poCvc9;B=e%&^kF;{`7~^HhI}i-v7d_I;}-fO zNypmuOUH;ZG2T}5aKR%W5lzoS?XATRgL~;WeP4( z#iBpe81Q5dFmZp;!@<~jL3WRGi(BhUzT80S_Ci-P&XFhz?*6`Pe zLD3Hg@l9J(fi$$Q-0DH@$onZF*pslo8Kov{?#~PVt(1tX{`)|u@-OXukH}_siqn67 zY_I+-ZcfN!>{OG+s&~X{5tk73$(k{fj6%CtMI(0qM^KELcGL ze$yep#KfIadJakpdvu5&mdCsFhV&3*ne=R<>t!rRTVqP58tL%&99FDzoko7VFq;|{ zzL-kMQrssy{^CWQ0S9YoN^WEWvBOCr~> zJG;n0h7QwDa|iJ9Sm;ht4D`Zzy&s`>fC`-2$EL;4$o`$jv*1F+*aVQI{JuYSmKVOX zk~;?&VzA4u2c!c$kWgWrz_qX8SaZDLnR|zA?=i=DTO>nrIv2=wUY^&n3Dl1bs?BO| zn0gqIk4xToM=!+OlV81Y_}APQP3V}YnAdz?49*Olt>=$iP+a#Gv3@q+x)y}$d^q}e zoHc1QZP`5V?){Pi^$l6F?^@aioVrt(Z;7uoL`l7`$9w|<)oc}3LT98|QIkKl*Wx>A z>V58PHX|HofR-{!afIUuN{8(j3*4-tCJS^e#6wuDcIC+224h|*d}}?WhV8=k(|!8$ z9cI>#@`<3RhfqsS=2w+0C)Pdq=2G>k5}}mmhvFXTb6FnwfYJ;F$__Y+7^P~*hyCm+ z@Zw2mxkfC$b5Gk=e3*_NaNa4M zLuZDtuly3rUWePvwWMro4O!{=2wtIG*EZ~3unn29d1aS!2%_wIlH4aM1e7lOchCBm z;&sqBsUEj850zbc#X;+KSnqn=(0L67oe7424Ogkyw9zod+I z_w`#f(m!Upax7xsd&s?56`!)Cv?Ry!ePG^SQtDY@gtDsBP2%O}w0WFk6JKdYM%wUukXc*Y@17;BhU<&77iepE8 z6&s*zCI#j+lJwnoKdTnEp~9Qo6A$ zN9?K`JuguT&eSh6UJquSsYnSb5%+wDXkRuPHTOk_P|rnQ36#tOUju1cd!CSMNn@;% zxvy@4*-oTJnQ|6tjf@rs9|Z$$%;E7v|9IwaTZ45B2A4~+1ikv6U=pe^_a7wW(j6W|L(Ri}!ASnu zv~l@)POsu(cD`1sVHiBS-rX^NFju z#g#j!Jl4769J*HL#ye~$j8T@UH6JdJjf3!Lp@}=BfoE=;Oi}$Ddb*ymYEVOn_0rr@ z!Ix;?tf>_9+wR zKpCXMZM(ZKn5&ST*YnU&#!`>l+u;|St7j*!-$MlAujr{{rD(TjJx_FwX;c0o`7M6Q zWI~MGF+K@46dJ3*2j|X*t47}EA{J+bpI-sUAW%>c9Ed_>1metdY2@ka^OeJEq z>(D!Eqp=h40pEv}U**<~Or57WREw!*TXo4P|xoL6r)& zwM=Zpdl;llpjX($k@JP&#CSYncwoRmGX(>q?reUI@@ou}zuB^#8@bzEoeeGAMPjrO zcQoR0-&Wc$LBG2}kRMtjy!~W`nr&+X18Bg#oT)X)7@}J%jyf>`Zr|IOywXfwWjL|Ihc%5Oa z6wQ$$vZK&IW~^3PlikI&5fq58ijkzJ+{KFIxAP^*4a!lZ*uXixLShDQ*6gKY941lk z^GDf15bN2IfJ;6*UPP){A__gz%U2E?`Ic4Dn>eL1wiyrKCT|GapBYTaJD{D|-Q}*O1 zZZJ@j_>Yj8^golj4WCx|uMMVpo^6KN6^p?jbeV^G-ZjLVh>Y7NB*hYxi9y^MJ1zw> z0twmB%M>f4l}N9l(N)R*Rp!`cvxY|Y8!L7KqK2*HLY=K}@aC6dS^jcA&dN491~~dd zQP`A9aZSbYHu>rbkLNdzd2l>Hl1a71JbHbwd+M5E@MalY={Bm)Q z(M0K%?k0YRxx1%mSEr-yKvq}hHG;m#iBrcQn#Ke6?o!(gY7gDTis0^^fwQof3oFvK z*@ef!#txQAjpy5FHEkd4ofg{2ha-ro5V|c1BK9vC*n-O+-`|1LnpEfTD4af+jdLV6 z0KB0lHS{I@x_i~Flk@%vJ~F4_6V;lTXi8cxTi>2F?zrG4KPNOI0ig_J zCxo~}8))TKhmC4=hz+}OeQ2ntX!H{iPN=(B-L%ZMxCCHbR0iXR8K?Bjxs6QCv9WYqTDY9HtuRM z#6L=KYY!@*s_`}o3yEnb>1p)r{`Ga~?f3CNoHfA4@M+?G6d(hgXE~z)BpsK2r7h1X+KW8-> zz)!*l@SG;pmL+7jHcsN6L+d=8EIiEki77Q54t0j98A~z&@e{ENXy^H0;^^gN`hE&S zf>sEOH(p&*#>?D+cS+F8-7XK);bQi!<_)08Dvpxo<6>B~CQ`;Z!TkXjsKG9pWl7TJ z7!;u6@W$v2>?x39(@k0YUpeOsF{K|J9~)#T5RrMI&K06c(O(Q?jeUg`^S%iryF^2c z5a~c^nHWa8ouZp0p`tK{vt=9{q+0L@nNHE^Z{_;8mr-q^aC70Xvv9^!N_rD$lx~yv z$9wtRE7$dO=PdfE$$S^$iPtxiQ?zodF0bVRDU=U903d4PLARyxS%v$L-)tCRd1(MS z_`iP)U-S@vv+w%v;Tw0%0T28Zl_Ky9)cI%J9>B%#F}nI+Hcu|_TQQ|kec#-KiVkCY zeCzgdh*q65!JzFT<&bZY_e@w(cX@IjzwzjaK)u205C|9GDP35Ekwwb9oCFV
6`NiUQX0d>>f^^7s0 z0A!kdG*o5(NjOd!zs9?7kxaDHu2eU`ul5?Qy|U7BvS4vwo>?YAYIRG2VgY@GHc105o#>e^Wslh9m9s^g*wqCgIhQkC%aB&5w%;8;`Q3QVb?M5G z3cxkLb5gxAfV}cQ&O4ibG3U})MaNc)bmR@lh%l~m5xZYrUwAyO|epc2E_L4Zu3hQ z`%P0~%KL_#G9EDdR?{v|Zgc78C`aV;%M%ssUtd0ZmrSnw24t@9*5*POfG2cchJnFAlOR2=3z* zhv@w1Hn_4LuQ*MPhu7Mz=Jps#AsUj89MBi=bIKKfAgC8Bdip@F)W4uF!Y6eG`G~d9 zUIgB|sR~TX<2LbT;4mJ*$V@tcjMyTZ0d4%;L P;G=)#+U0zmJ5T=uDNvMn literal 0 HcmV?d00001 diff --git a/documentation/doxygen/images/geometry004.png b/documentation/doxygen/images/geometry004.png new file mode 100644 index 0000000000000000000000000000000000000000..27f81d205c3538fe231e9889208d8b69948c29ac GIT binary patch literal 61273 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