diff --git a/roofit/roofit/inc/RooLagrangianMorphFunc.h b/roofit/roofit/inc/RooLagrangianMorphFunc.h index d48870385e8b3..8886d4ba7f22f 100644 --- a/roofit/roofit/inc/RooLagrangianMorphFunc.h +++ b/roofit/roofit/inc/RooLagrangianMorphFunc.h @@ -52,7 +52,7 @@ #ifndef ROO_LAGRANGIAN_MORPH #define ROO_LAGRANGIAN_MORPH -#include "Floats.h" +#include "RooFit/Floats.h" #include "RooAbsArg.h" #include "RooAbsReal.h" #include "RooArgList.h" @@ -212,7 +212,7 @@ class RooLagrangianMorphFunc : public RooAbsReal { public: /// length of floating point digits precision supported by implementation. - static constexpr double implementedPrecision = SuperFloatPrecision::digits10; + static constexpr double implementedPrecision = RooFit::SuperFloatPrecision::digits10; void importToWorkspace(RooWorkspace *ws, const RooAbsReal *object); void importToWorkspace(RooWorkspace *ws, RooAbsData *object); diff --git a/roofit/roofit/src/RooLagrangianMorphFunc.cxx b/roofit/roofit/src/RooLagrangianMorphFunc.cxx index 11ea37dc97725..acbcc72070081 100644 --- a/roofit/roofit/src/RooLagrangianMorphFunc.cxx +++ b/roofit/roofit/src/RooLagrangianMorphFunc.cxx @@ -118,7 +118,7 @@ void writeMatrixToStreamT(const MatrixT &matrix, std::ostream &stream) { for (size_t i = 0; i < size(matrix); ++i) { for (size_t j = 0; j < size(matrix); ++j) { #ifdef USE_UBLAS - stream << std::setprecision(SuperFloatPrecision::digits10) << matrix(i, j) + stream << std::setprecision(RooFit::SuperFloatPrecision::digits10) << matrix(i, j) << "\t"; #else stream << matrix(i, j) << "\t"; @@ -157,7 +157,7 @@ inline void writeMatrixToFileT(const MatrixT &matrix, const char *fname) { #pragma GCC diagnostic pop -typedef boost::numeric::ublas::matrix Matrix; +typedef boost::numeric::ublas::matrix Matrix; //////////////////////////////////////////////////////////////////////////////// /// write a matrix @@ -165,7 +165,7 @@ typedef boost::numeric::ublas::matrix Matrix; inline void printMatrix(const Matrix &mat) { for (size_t i = 0; i < mat.size1(); ++i) { for (size_t j = 0; j < mat.size2(); ++j) { - // std::cout << std::setprecision(SuperFloatPrecision::digits10) << + // std::cout << std::setprecision(RooFit::SuperFloatPrecision::digits10) << // mat(i,j) << " ,\t"; } std::cout << std::endl; @@ -183,7 +183,7 @@ template <> inline size_t size(const Matrix &matrix) { /// create a new diagonal matrix of size n inline Matrix diagMatrix(size_t n) { - return boost::numeric::ublas::identity_matrix(n); + return boost::numeric::ublas::identity_matrix(n); } //////////////////////////////////////////////////////////////////////////////// @@ -222,9 +222,9 @@ inline Matrix operator*(const Matrix &m, const Matrix &otherM) { //////////////////////////////////////////////////////////////////////////////// /// calculate the inverse of a matrix, returning the condition -inline SuperFloat invertMatrix(const Matrix &matrix, Matrix &inverse) { +inline RooFit::SuperFloat invertMatrix(const Matrix &matrix, Matrix &inverse) { boost::numeric::ublas::permutation_matrix pm(size(matrix)); - SuperFloat mnorm = norm_inf(matrix); + RooFit::SuperFloat mnorm = norm_inf(matrix); Matrix lu(matrix); try { int res = lu_factorize(lu, pm); @@ -239,8 +239,8 @@ inline SuperFloat invertMatrix(const Matrix &matrix, Matrix &inverse) { // coutE(Eval) << "boost::numberic::ublas error: matrix is not invertible!" // << std::endl; } - SuperFloat inorm = norm_inf(inverse); - SuperFloat condition = mnorm * inorm; + RooFit::SuperFloat inorm = norm_inf(inverse); + RooFit::SuperFloat condition = mnorm * inorm; return condition; } @@ -359,15 +359,15 @@ template inline void assignElement(A &a, const B &b) { template inline MatrixT readMatrixFromStreamT(std::istream &stream) { - std::vector> matrix; - std::vector line; + std::vector> matrix; + std::vector line; while (!stream.eof()) { if (stream.peek() == '\n') { stream.get(); stream.peek(); continue; } - SuperFloat val; + RooFit::SuperFloat val; stream >> val; line.push_back(val); while (stream.peek() == ' ' || stream.peek() == '\t') { @@ -1358,7 +1358,7 @@ buildSampleWeights(T1 &weights, const char *fname, // build the formula with the correct normalization RooLinearCombination *sampleformula = new RooLinearCombination(name_full.Data()); for (auto const &formulait : formulas) { - const SuperFloat val(inverse(formulaidx, sampleidx)); + const RooFit::SuperFloat val(inverse(formulaidx, sampleidx)); sampleformula->add(val, formulait.second.get()); formulaidx++; } @@ -1854,7 +1854,7 @@ inline void RooLagrangianMorphFunc::updateSampleWeights() { cxcoutP(ObjectHandling) << "updating formula for sample '" << sample << "'" << std::endl; for (size_t formulaidx = 0; formulaidx < n; ++formulaidx) { - const SuperFloat val(cache->_inverse(formulaidx, sampleidx)); + const RooFit::SuperFloat val(cache->_inverse(formulaidx, sampleidx)); #ifdef USE_UBLAS if (val != val) { #else diff --git a/roofit/roofitcore/CMakeLists.txt b/roofit/roofitcore/CMakeLists.txt index 39502f0f93a98..708bfb6b4d2a8 100644 --- a/roofit/roofitcore/CMakeLists.txt +++ b/roofit/roofitcore/CMakeLists.txt @@ -15,7 +15,7 @@ endif() ROOT_STANDARD_LIBRARY_PACKAGE(RooFitCore HEADERS - Floats.h + RooFit/Floats.h Roo1DTable.h RooAbsAnaConvPdf.h RooAbsArg.h @@ -237,19 +237,19 @@ 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 - TestStatistics/MinuitFcnGrad.h - TestStatistics/RooAbsL.h - TestStatistics/RooBinnedL.h - TestStatistics/RooSubsidiaryL.h - TestStatistics/RooSumL.h - TestStatistics/RooRealL.h - TestStatistics/RooUnbinnedL.h - TestStatistics/optional_parameter_types.h - TestStatistics/buildLikelihood.h + RooFit/TestStatistics/ConstantTermsOptimizer.h + RooFit/TestStatistics/LikelihoodGradientWrapper.h + RooFit/TestStatistics/LikelihoodWrapper.h + RooFit/TestStatistics/LikelihoodSerial.h + RooFit/TestStatistics/MinuitFcnGrad.h + RooFit/TestStatistics/RooAbsL.h + RooFit/TestStatistics/RooBinnedL.h + RooFit/TestStatistics/RooSubsidiaryL.h + RooFit/TestStatistics/RooSumL.h + RooFit/TestStatistics/RooRealL.h + RooFit/TestStatistics/RooUnbinnedL.h + RooFit/TestStatistics/optional_parameter_types.h + RooFit/TestStatistics/buildLikelihood.h SOURCES src/BidirMMapPipe.cxx src/BidirMMapPipe.h diff --git a/roofit/roofitcore/inc/Floats.h b/roofit/roofitcore/inc/Floats.h deleted file mode 100644 index 8d3f4b8dc0c23..0000000000000 --- a/roofit/roofitcore/inc/Floats.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- mode: c++ -*- ********************************************************* - * Project: RooFit * - * * - * authors: * - * Lydia Brenner (lbrenner@cern.ch), Carsten Burgard (cburgard@cern.ch) * - * Katharina Ecker (kecker@cern.ch), Adam Kaluza (akaluza@cern.ch) * - *****************************************************************************/ - -#ifndef ROO_LAGRANGIAN_MORPH_FLOAT -#define ROO_LAGRANGIAN_MORPH_FLOAT - -#ifdef USE_UBLAS -#include -#endif - -#include -#ifdef USE_UBLAS -typedef boost::multiprecision::number> - SuperFloat; -typedef std::numeric_limits SuperFloatPrecision; -#else -typedef double SuperFloat; -typedef std::numeric_limits SuperFloatPrecision; -#endif - -#endif diff --git a/roofit/roofitcore/inc/RooAddPdf.h b/roofit/roofitcore/inc/RooAddPdf.h index b13c11c9e161a..64a686669698d 100644 --- a/roofit/roofitcore/inc/RooAddPdf.h +++ b/roofit/roofitcore/inc/RooAddPdf.h @@ -145,7 +145,7 @@ class RooAddPdf : public RooAbsPdf { private: std::pair getNormAndCache(const RooArgSet* defaultNorm = nullptr) const; - mutable UniqueId::Value_t _idOfLastUsedNormSet = UniqueId::nullval; //! + mutable RooFit::UniqueId::Value_t _idOfLastUsedNormSet = RooFit::UniqueId::nullval; //! mutable std::unique_ptr _copyOfLastNormSet = nullptr; //! void finalizeConstruction(); diff --git a/roofit/roofitcore/inc/RooArgSet.h b/roofit/roofitcore/inc/RooArgSet.h index f967a3e28d90c..f4b42a62f0050 100644 --- a/roofit/roofitcore/inc/RooArgSet.h +++ b/roofit/roofitcore/inc/RooArgSet.h @@ -18,7 +18,7 @@ #include "RooAbsCollection.h" #include "RooAbsArg.h" -#include "UniqueId.h" +#include "RooFit/UniqueId.h" class RooArgList ; @@ -164,7 +164,7 @@ class RooArgSet : public RooAbsCollection { /// This ID can be used to check whether two RooAbsData are the same object, /// which is safer than memory address comparisons that might result in false /// positives when memory is recycled. - UniqueId const& uniqueId() const { return _uniqueId; } + RooFit::UniqueId const& uniqueId() const { return _uniqueId; } protected: Bool_t checkForDup(const RooAbsArg& arg, Bool_t silent) const ; @@ -203,7 +203,7 @@ class RooArgSet : public RooAbsCollection { //to leak depending if RooArgSets are still alive. This depends on the order of destructions. static MemPool* memPool(); #endif - const UniqueId _uniqueId; //! + const RooFit::UniqueId _uniqueId; //! ClassDefOverride(RooArgSet,1) // Set of RooAbsArg objects }; diff --git a/roofit/roofitcore/inc/RooFit/Floats.h b/roofit/roofitcore/inc/RooFit/Floats.h new file mode 100644 index 0000000000000..31b6d707c7a84 --- /dev/null +++ b/roofit/roofitcore/inc/RooFit/Floats.h @@ -0,0 +1,35 @@ +/* + * Project: RooFit + * Authors: + * Lydia Brenner (lbrenner@cern.ch), Carsten Burgard (cburgard@cern.ch) + * Katharina Ecker (kecker@cern.ch), Adam Kaluza (akaluza@cern.ch) + * + * Copyright (c) 2021, CERN + * + * 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 roofit_roofitcore_RooFit_Floats_h +#define roofit_roofitcore_RooFit_Floats_h + +#ifdef USE_UBLAS +#include +#endif + +#include + +namespace RooFit { + +#ifdef USE_UBLAS +typedef boost::multiprecision::number> SuperFloat; +typedef std::numeric_limits SuperFloatPrecision; +#else +typedef double SuperFloat; +typedef std::numeric_limits SuperFloatPrecision; +#endif + +} // namespace RooFit + +#endif diff --git a/roofit/roofitcore/inc/TestStatistics/ConstantTermsOptimizer.h b/roofit/roofitcore/inc/RooFit/TestStatistics/ConstantTermsOptimizer.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/ConstantTermsOptimizer.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/ConstantTermsOptimizer.h diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h b/roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodGradientWrapper.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/LikelihoodGradientWrapper.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodGradientWrapper.h diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h b/roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodSerial.h similarity index 95% rename from roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodSerial.h index 104abc972f2d2..63ed2a266c696 100644 --- a/roofit/roofitcore/inc/TestStatistics/LikelihoodSerial.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodSerial.h @@ -14,7 +14,7 @@ #ifndef ROOT_ROOFIT_LikelihoodSerial #define ROOT_ROOFIT_LikelihoodSerial -#include +#include #include "RooArgList.h" #include "Math/MinimizerOptions.h" diff --git a/roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h b/roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodWrapper.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/LikelihoodWrapper.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/LikelihoodWrapper.h diff --git a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h b/roofit/roofitcore/inc/RooFit/TestStatistics/MinuitFcnGrad.h similarity index 96% rename from roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/MinuitFcnGrad.h index f54ca06cfa112..a6a5ec645a396 100644 --- a/roofit/roofitcore/inc/TestStatistics/MinuitFcnGrad.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/MinuitFcnGrad.h @@ -15,9 +15,9 @@ #include "RooArgList.h" #include "RooRealVar.h" -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/LikelihoodWrapper.h" -#include "TestStatistics/LikelihoodGradientWrapper.h" +#include +#include +#include #include "RooAbsMinimizerFcn.h" #include diff --git a/roofit/roofitcore/inc/TestStatistics/RooAbsL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooAbsL.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/RooAbsL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooAbsL.h diff --git a/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooBinnedL.h similarity index 95% rename from roofit/roofitcore/inc/TestStatistics/RooBinnedL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooBinnedL.h index 1ff7e6d982435..aec81da003440 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooBinnedL.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/RooBinnedL.h @@ -13,7 +13,7 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooBinnedL #define ROOT_ROOFIT_TESTSTATISTICS_RooBinnedL -#include +#include #include "RooAbsReal.h" #include diff --git a/roofit/roofitcore/inc/TestStatistics/RooRealL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooRealL.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/RooRealL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooRealL.h diff --git a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooSubsidiaryL.h similarity index 97% rename from roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooSubsidiaryL.h index ef387019c03e0..b315995c13882 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSubsidiaryL.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/RooSubsidiaryL.h @@ -13,7 +13,7 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL #define ROOT_ROOFIT_TESTSTATISTICS_RooSubsidiaryL -#include "TestStatistics/RooAbsL.h" +#include #include "RooArgList.h" #include "RooArgSet.h" diff --git a/roofit/roofitcore/inc/TestStatistics/RooSumL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooSumL.h similarity index 93% rename from roofit/roofitcore/inc/TestStatistics/RooSumL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooSumL.h index 280a8795622cb..b3911ba20e913 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooSumL.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/RooSumL.h @@ -13,8 +13,8 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooSumL #define ROOT_ROOFIT_TESTSTATISTICS_RooSumL -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/optional_parameter_types.h" +#include +#include #include "Math/Util.h" // KahanSum diff --git a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h b/roofit/roofitcore/inc/RooFit/TestStatistics/RooUnbinnedL.h similarity index 97% rename from roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/RooUnbinnedL.h index 32b43cc26dff2..64f0cd6e0d7fc 100644 --- a/roofit/roofitcore/inc/TestStatistics/RooUnbinnedL.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/RooUnbinnedL.h @@ -13,7 +13,7 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_RooUnbinnedL #define ROOT_ROOFIT_TESTSTATISTICS_RooUnbinnedL -#include +#include // forward declarations class RooAbsPdf; diff --git a/roofit/roofitcore/inc/TestStatistics/buildLikelihood.h b/roofit/roofitcore/inc/RooFit/TestStatistics/buildLikelihood.h similarity index 94% rename from roofit/roofitcore/inc/TestStatistics/buildLikelihood.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/buildLikelihood.h index 2ba6c47b78fae..99adcbc519cc0 100644 --- a/roofit/roofitcore/inc/TestStatistics/buildLikelihood.h +++ b/roofit/roofitcore/inc/RooFit/TestStatistics/buildLikelihood.h @@ -13,8 +13,8 @@ #ifndef ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders #define ROOT_ROOFIT_TESTSTATISTICS_likelihood_builders -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/optional_parameter_types.h" +#include +#include #include diff --git a/roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h b/roofit/roofitcore/inc/RooFit/TestStatistics/optional_parameter_types.h similarity index 100% rename from roofit/roofitcore/inc/TestStatistics/optional_parameter_types.h rename to roofit/roofitcore/inc/RooFit/TestStatistics/optional_parameter_types.h diff --git a/roofit/roofitcore/inc/RooFit/UniqueId.h b/roofit/roofitcore/inc/RooFit/UniqueId.h new file mode 100644 index 0000000000000..8b7ab867a6b60 --- /dev/null +++ b/roofit/roofitcore/inc/RooFit/UniqueId.h @@ -0,0 +1,90 @@ +/* + * Project: RooFit + * Authors: + * Jonas Rembser, CERN, Jun 2021 + * + * Copyright (c) 2021, CERN + * + * 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 roofit_roofitcore_RooFit_UniqueId_h +#define roofit_roofitcore_RooFit_UniqueId_h + +#include + +namespace RooFit { + +/// A UniqueId can be added as a class member to enhance any class with a +/// unique identifier for each instantiated object. +/// +/// Example: +/// ~~~{.cpp} +/// class MyClass { +/// +/// public: +/// /// Return unique ID by reference. +/// /// Please always use the name `uniqueId` for the getter. +/// UniqueId const& uniqueId() const { return _uniqueId; } +/// +/// private: +/// const UniqueId _uniqueId; //! should be non-persistent +/// +/// }; +/// ~~~ + +template +struct UniqueId { +public: + using Value_t = unsigned long; + + /// Create a new UniqueId with the next value from the static counter. + UniqueId() : _val{++counter} {} + + // Disable all sorts of copying and moving to ensure uniqueness. + UniqueId(const UniqueId &) = delete; + UniqueId &operator=(const UniqueId &) = delete; + UniqueId(UniqueId &&) = delete; + UniqueId &operator=(UniqueId &&) = delete; + + operator Value_t() const { return _val; } + + /// Return numerical value of ID. + /// Use only if necessary, as the UniqueId type information is lost and + /// copying/moving is not prohibited for the value type. + /// Please don't turn this into a cast operator, as a function with an + /// explicit name is easier to track in the codebase. + constexpr Value_t value() const { return _val; } + + bool operator==(UniqueId const &other) const { return _val == other._val; } + bool operator<(UniqueId const &other) const { return _val < other._val; } + + static const UniqueId nullid; /// An ID that is less than the ID of any object (similar to nullptr). + static constexpr Value_t nullval = 0UL; /// The value of the nullid. + +private: + Value_t _val; /// Numerical value of the ID. + + static std::atomic counter; /// The static object counter to get the next ID value. +}; + +template +std::atomic::Value_t> UniqueId::counter{UniqueId::nullval}; + +template +const UniqueId UniqueId::nullid{UniqueId::nullval}; + +/// A helper function to replace pointer comparisons with UniqueId comparisons. +/// With pointer comparisons, we can also have `nullptr`. In the UniqueId case, +/// this translates to the `nullid`. +template +UniqueId getUniqueId(Class const *ptr) +{ + return ptr ? ptr->uniqueId() : UniqueId::nullid; +} + +} // namespace RooFit + +#endif diff --git a/roofit/roofitcore/inc/RooLinearCombination.h b/roofit/roofitcore/inc/RooLinearCombination.h index 1e483ffe9c8ae..4711f0e488f4b 100644 --- a/roofit/roofitcore/inc/RooLinearCombination.h +++ b/roofit/roofitcore/inc/RooLinearCombination.h @@ -17,7 +17,7 @@ #ifndef ROO_LINEAR_COMB #define ROO_LINEAR_COMB -#include "Floats.h" +#include "RooFit/Floats.h" #include #include @@ -29,7 +29,7 @@ class RooLinearCombination : public RooAbsReal { RooListProxy _actualVars; - std::vector _coefficients; + std::vector _coefficients; mutable RooArgSet *_nset; //! public: @@ -39,9 +39,9 @@ class RooLinearCombination : public RooAbsReal { virtual void printArgs(std::ostream &os) const override; ~RooLinearCombination(); virtual TObject *clone(const char *newname) const override; - void add(SuperFloat c, RooAbsReal *t); - void setCoefficient(size_t idx, SuperFloat c); - SuperFloat getCoefficient(size_t idx); + void add(RooFit::SuperFloat c, RooAbsReal *t); + void setCoefficient(size_t idx, RooFit::SuperFloat c); + RooFit::SuperFloat getCoefficient(size_t idx); virtual Double_t evaluate() const override; virtual std::list *binBoundaries(RooAbsRealLValue &obs, Double_t xlo, diff --git a/roofit/roofitcore/inc/RooMinimizer.h b/roofit/roofitcore/inc/RooMinimizer.h index 2cdd0a8467601..9e1db06c598e7 100644 --- a/roofit/roofitcore/inc/RooMinimizer.h +++ b/roofit/roofitcore/inc/RooMinimizer.h @@ -29,8 +29,8 @@ #include "RooArgList.h" // cannot just use forward decl due to default argument in lastMinuitFit -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/MinuitFcnGrad.h" +#include +#include #include "RooSentinel.h" #include "RooMsgService.h" diff --git a/roofit/roofitcore/inc/UniqueId.h b/roofit/roofitcore/inc/UniqueId.h deleted file mode 100644 index e3ed73ed4eeaa..0000000000000 --- a/roofit/roofitcore/inc/UniqueId.h +++ /dev/null @@ -1,75 +0,0 @@ -// Author: Jonas Rembser, CERN, Jun 2021 - -/// A UniqueId can be added as a class member to enhance any class with a -/// unique identifier for each instantiated object. -/// -/// Example: -/// ~~~{.cpp} -/// class MyClass { -/// -/// public: -/// /// Return unique ID by reference. -/// /// Please always use the name `uniqueId` for the getter. -/// UniqueId const& uniqueId() const { return _uniqueId; } -/// -/// private: -/// const UniqueId _uniqueId; //! should be non-persistent -/// -/// }; -/// ~~~ - -#ifndef roofit_roofitcore_UniqueId_h -#define roofit_roofitcore_UniqueId_h - -#include - -template -struct UniqueId { -public: - using Value_t = unsigned long; - - /// Create a new UniqueId with the next value from the static counter. - UniqueId() : _val{++counter} {} - - // Disable all sorts of copying and moving to ensure uniqueness. - UniqueId(const UniqueId &) = delete; - UniqueId &operator=(const UniqueId &) = delete; - UniqueId(UniqueId &&) = delete; - UniqueId &operator=(UniqueId &&) = delete; - - operator Value_t() const { return _val; } - - /// Return numerical value of ID. - /// Use only if necessary, as the UniqueId type information is lost and - /// copying/moving is not prohibited for the value type. - /// Please don't turn this into a cast operator, as a function with an - /// explicit name is easier to track in the codebase. - constexpr Value_t value() const { return _val; } - - bool operator==(UniqueId const &other) const { return _val == other._val; } - bool operator<(UniqueId const &other) const { return _val < other._val; } - - static const UniqueId nullid; /// An ID that is less than the ID of any object (similar to nullptr). - static constexpr Value_t nullval = 0UL; /// The value of the nullid. - -private: - Value_t _val; /// Numerical value of the ID. - - static std::atomic counter; /// The static object counter to get the next ID value. -}; - -template -std::atomic::Value_t> UniqueId::counter{UniqueId::nullval}; - -template -const UniqueId UniqueId::nullid{UniqueId::nullval}; - -/// A helper function to replace pointer comparisons with UniqueId comparisons. -/// With pointer comparisons, we can also have `nullptr`. In the UniqueId case, -/// this translates to the `nullid`. -template -UniqueId getUniqueId(Class const *ptr) { - return ptr ? ptr->uniqueId() : UniqueId::nullid; -} - -#endif diff --git a/roofit/roofitcore/res/TestStatistics/LikelihoodGradientJob.h b/roofit/roofitcore/res/TestStatistics/LikelihoodGradientJob.h index 1b7590a322f13..14f915eabf6ba 100644 --- a/roofit/roofitcore/res/TestStatistics/LikelihoodGradientJob.h +++ b/roofit/roofitcore/res/TestStatistics/LikelihoodGradientJob.h @@ -14,7 +14,7 @@ #define ROOT_ROOFIT_TESTSTATISTICS_LikelihoodGradientJob #include "RooFit/MultiProcess/Job.h" -#include "TestStatistics/LikelihoodGradientWrapper.h" +#include "RooFit/TestStatistics/LikelihoodGradientWrapper.h" #include "Math/MinimizerOptions.h" #include "Minuit2/NumericalDerivator.h" diff --git a/roofit/roofitcore/res/TestStatistics/LikelihoodJob.h b/roofit/roofitcore/res/TestStatistics/LikelihoodJob.h index 64848fe0268b0..c9ecb0cffdd5b 100644 --- a/roofit/roofitcore/res/TestStatistics/LikelihoodJob.h +++ b/roofit/roofitcore/res/TestStatistics/LikelihoodJob.h @@ -15,7 +15,7 @@ #include "RooFit/MultiProcess/Job.h" #include "RooFit/MultiProcess/types.h" -#include "TestStatistics/LikelihoodWrapper.h" +#include "RooFit/TestStatistics/LikelihoodWrapper.h" #include "RooArgList.h" #include "Math/MinimizerOptions.h" diff --git a/roofit/roofitcore/src/RooLinearCombination.cxx b/roofit/roofitcore/src/RooLinearCombination.cxx index 7ac081243d477..513beba3c6f5f 100644 --- a/roofit/roofitcore/src/RooLinearCombination.cxx +++ b/roofit/roofitcore/src/RooLinearCombination.cxx @@ -20,14 +20,13 @@ /// #include "RooLinearCombination.h" -#include "Floats.h" #include "Math/Util.h" ClassImp(RooLinearCombination); namespace { - template inline void assign(SuperFloat &var, const T &val) { + template inline void assign(RooFit::SuperFloat &var, const T &val) { #ifdef USE_UBLAS var.assign(val); #else @@ -88,18 +87,18 @@ TObject *RooLinearCombination::clone(const char *newname) const { return retval; } -void RooLinearCombination::add(SuperFloat c, RooAbsReal *t) { +void RooLinearCombination::add(RooFit::SuperFloat c, RooAbsReal *t) { // add a new term _actualVars.add(*t); _coefficients.push_back(c); } -void RooLinearCombination::setCoefficient(size_t idx, SuperFloat c) { +void RooLinearCombination::setCoefficient(size_t idx, RooFit::SuperFloat c) { // set the coefficient with the given index this->_coefficients[idx] = c; } -SuperFloat RooLinearCombination::getCoefficient(size_t idx) { +RooFit::SuperFloat RooLinearCombination::getCoefficient(size_t idx) { // get the coefficient with the given index return this->_coefficients[idx]; } @@ -107,11 +106,11 @@ SuperFloat RooLinearCombination::getCoefficient(size_t idx) { Double_t RooLinearCombination::evaluate() const { // call the evaluation #ifdef USE_UBLAS - SuperFloat result; + RooFit::SuperFloat result; result.assign(0.0); const std::size_t n(this->_actualVars.getSize()); for (std::size_t i = 0; i < n; ++i) { - SuperFloat tmp; + RooFit::SuperFloat tmp; tmp.assign(static_cast(this->_actualVars.at(i))->getVal()); result += this->_coefficients[i] * tmp; } diff --git a/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx index 12a0de35e90ef..bcbf9c45a867c 100644 --- a/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx +++ b/roofit/roofitcore/src/TestStatistics/ConstantTermsOptimizer.cxx @@ -10,7 +10,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include #include #include // complete type for dynamic cast diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx index 0ea8834801ee9..9602931b21c9e 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodGradientWrapper.cxx @@ -10,7 +10,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include "TestStatistics/LikelihoodGradientWrapper.h" +#include "RooFit/TestStatistics/LikelihoodGradientWrapper.h" #include "RooMinimizer.h" namespace RooFit { diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx index fca634e701c0f..b668c0a24e922 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx @@ -17,11 +17,11 @@ #include "RooFit/MultiProcess/Queue.h" #include "RooFit/MultiProcess/Job.h" #include "RooFit/MultiProcess/types.h" -#include "TestStatistics/RooAbsL.h" -#include "TestStatistics/RooUnbinnedL.h" -#include "TestStatistics/RooBinnedL.h" -#include "TestStatistics/RooSubsidiaryL.h" -#include "TestStatistics/RooSumL.h" +#include "RooFit/TestStatistics/RooAbsL.h" +#include "RooFit/TestStatistics/RooUnbinnedL.h" +#include "RooFit/TestStatistics/RooBinnedL.h" +#include "RooFit/TestStatistics/RooSubsidiaryL.h" +#include "RooFit/TestStatistics/RooSumL.h" #include "RooRealVar.h" namespace RooFit { diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx index 7c941219dc3c7..120224baa3ade 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodSerial.cxx @@ -10,12 +10,12 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include "RooRealVar.h" namespace RooFit { diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx index 4a933ec1f7490..be179b4af9b9b 100644 --- a/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx +++ b/roofit/roofitcore/src/TestStatistics/LikelihoodWrapper.cxx @@ -10,12 +10,12 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include -#include // need complete type for likelihood->... -#include -#include -#include // need complete type for dynamic cast +#include // need complete type for likelihood->... +#include +#include +#include // need complete type for dynamic cast #include "RooMsgService.h" diff --git a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx index b9dcb31285b05..aa3d7a1d1f07a 100644 --- a/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx +++ b/roofit/roofitcore/src/TestStatistics/MinuitFcnGrad.cxx @@ -10,8 +10,8 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include "TestStatistics/MinuitFcnGrad.h" -#include "TestStatistics/LikelihoodSerial.h" +#include "RooFit/TestStatistics/MinuitFcnGrad.h" +#include "RooFit/TestStatistics/LikelihoodSerial.h" #ifdef BUILD_WITH_ROOFIT_MULTIPROCESS #include "TestStatistics/LikelihoodJob.h" #include "TestStatistics/LikelihoodGradientJob.h" diff --git a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx index 21e1dd6e67a90..12cbcddca799b 100644 --- a/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooAbsL.cxx @@ -10,8 +10,8 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include -#include +#include +#include #include "RooAbsPdf.h" #include "RooAbsData.h" diff --git a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx index 52f7d752e6018..ffba050648310 100644 --- a/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooBinnedL.cxx @@ -24,7 +24,7 @@ In extended mode, a \f$ N_\mathrm{expect} - N_\mathrm{observed}*log(N_\mathrm{expect}) \f$ term is added. **/ -#include +#include #include "RooAbsData.h" #include "RooAbsPdf.h" diff --git a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx index c9fa83792972a..353219016608f 100644 --- a/roofit/roofitcore/src/TestStatistics/RooRealL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooRealL.cxx @@ -10,8 +10,8 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include -#include +#include +#include namespace RooFit { namespace TestStatistics { diff --git a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx index 19343793a67da..582a07ff91083 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSubsidiaryL.cxx @@ -31,7 +31,7 @@ change the derivative of the log likelihood (which is what matters in fitting th value of the (log-)likelihood itself. **/ -#include +#include #include // for dynamic cast #include diff --git a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx index 5640c4c55360d..afbd92d1d9091 100644 --- a/roofit/roofitcore/src/TestStatistics/RooSumL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooSumL.cxx @@ -10,9 +10,9 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include #include -#include +#include #include // min, max diff --git a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx index cf294a9ce5784..86ddd9b94c6e7 100644 --- a/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx +++ b/roofit/roofitcore/src/TestStatistics/RooUnbinnedL.cxx @@ -24,7 +24,7 @@ In extended mode, a \f$ N_\mathrm{expect} - N_\mathrm{observed}*log(N_\mathrm{expect}) \f$ term is added. **/ -#include +#include #include "RooAbsData.h" #include "RooAbsPdf.h" diff --git a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx index c10aeba55e9d3..7fb61da1d983f 100644 --- a/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx +++ b/roofit/roofitcore/src/TestStatistics/buildLikelihood.cxx @@ -10,14 +10,14 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include #include -#include -#include +#include +#include #include // necessary to complete RooUnbinnedL -#include -#include +#include +#include #include #include #include diff --git a/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx b/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx index 402c04754e35e..7e3dc0a362012 100644 --- a/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx +++ b/roofit/roofitcore/src/TestStatistics/optional_parameter_types.cxx @@ -10,7 +10,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include namespace RooFit { namespace TestStatistics { diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp index 7ed63d9b99406..37ad0c2aa3c8f 100644 --- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp @@ -12,8 +12,8 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include "TestStatistics/RooRealL.h" -#include "TestStatistics/RooUnbinnedL.h" +#include +#include #include // necessary to complete RooUnbinnedL #include diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp index 1001ddd9a6a22..630e957603659 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp @@ -21,9 +21,9 @@ #include "RooMinimizer.h" #include "RooGradMinimizerFcn.h" #include "RooFitResult.h" -#include "TestStatistics/LikelihoodSerial.h" -#include "TestStatistics/RooUnbinnedL.h" -#include "TestStatistics/buildLikelihood.h" +#include "RooFit/TestStatistics/LikelihoodSerial.h" +#include "RooFit/TestStatistics/RooUnbinnedL.h" +#include "RooFit/TestStatistics/buildLikelihood.h" #include "RooFit/MultiProcess/JobManager.h" #include "RooFit/MultiProcess/ProcessManager.h" // need to complete type for debugging #include "RooStats/ModelConfig.h" diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx index 2bc062b0577a5..a84ffa55ed32f 100644 --- a/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx +++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodSerial.cxx @@ -10,7 +10,7 @@ * listed in LICENSE (http://roofit.sourceforge.net/license.txt) */ -#include +#include #include #include @@ -19,11 +19,11 @@ #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 +#include +#include #include "Math/Util.h" // KahanSum