43using std::string, std::vector;
 
   57     _parList(
"parList", 
"List of morph parameters", 
this),
 
   58     _obsList(
"obsList", 
"List of observables", 
this),
 
   60     _pdfList(
"pdfList", 
"List of pdfs", 
this),
 
 
   83     _parList(
"parList", 
"List of morph parameters", 
this),
 
   84     _obsList(
"obsList", 
"List of observables", 
this),
 
   85     _pdfList(
"pdfList", 
"List of pdfs", 
this),
 
   93   for (
int i = 0; i < 
mrefpoints.GetNrows(); ++i) {
 
   94      for (
int j = 0; 
j < 
grid.numBoundaries(); ++
j) {
 
 
  123     _parList(
"parList", 
"List of morph parameters", 
this),
 
  124     _obsList(
"obsList", 
"List of observables", 
this),
 
  125     _pdfList(
"pdfList", 
"List of pdfs", 
this),
 
  134         coutE(InputArguments) << 
"RooMomentMorphFuncND::ctor(" << 
GetName() << 
") ERROR: mref " << 
mref->GetName()
 
  135                               << 
" is not of type RooAbsReal" << std::endl;
 
  136         throw string(
"RooMomentMorphFuncND::ctor() ERROR mref is not of type RooAbsReal");
 
  139         coutW(InputArguments) << 
"RooMomentMorphFuncND::ctor(" << 
GetName() << 
") WARNING mref point " << i
 
  140                               << 
" is not a constant, taking a snapshot of its value" << std::endl;
 
  149      for (
int j = 0; 
j < 
grid.numBoundaries(); ++
j) {
 
 
  177     _parList(
"parList", 
this, 
other._parList),
 
  178     _obsList(
"obsList", 
this, 
other._obsList),
 
  179     _referenceGrid(
other._referenceGrid),
 
  180     _pdfList(
"pdfList", 
this, 
other._pdfList),
 
  181     _setting(
other._setting),
 
  182     _useHorizMorph(
other._useHorizMorph),
 
  183     _isPdfMode{
other._isPdfMode}
 
 
  209   int depth = std::pow(2, nPar);
 
  212      coutE(InputArguments) << 
"RooMomentMorphFuncND::initialize(" << 
GetName() << 
") ERROR: nPar != nDim" 
  213                            << 
": " << nPar << 
" !=" << 
nDim << std::endl;
 
  218      coutE(InputArguments) << 
"RooMomentMorphFuncND::initialize(" << 
GetName() << 
") ERROR: nPdf != nRef" 
  219                            << 
": " << 
nPdf << 
" !=" << 
nRef << std::endl;
 
  230      for (
int k = 0; k < 
nPdf; ++k) {
 
  234            dm2.push_back(delta);
 
  253      for (
int k = 0; k < 
nPdf; ++k) {
 
  255         for (
int i = 0; i < 
nCombs; i++) {
 
  257            for (
int ix = 0; ix < nPar; ix++) {
 
  258               double delta = dm[k][ix];
 
  259               tmpDm *= std::pow(delta, 
static_cast<double>(
output[i][ix]));
 
 
  279   for (
unsigned int i = 0; i < 
other._grid.size(); i++) {
 
 
  338   int nBins = bins.size();
 
  340   for (
int i = 0; i < nBins; i++) {
 
 
  377   for (
int i = 0; i < 3 * 
nPdf; ++i) {
 
  385      } 
else if (i < 2 * 
nPdf) {
 
  393   std::unique_ptr<RooAbsReal> 
theSum;
 
  400      for (
int i = 0; i < 
nPdf; ++i) {
 
  401         for (
int j = 0; 
j < nObs; ++
j) {
 
  405            mom->setLocalNoDirtyInhibit(
true);
 
  406            mom->mean()->setLocalNoDirtyInhibit(
true);
 
  416      for (
int j = 0; 
j < nObs; ++
j) {
 
  419         for (
int i = 0; i < 
nPdf; ++i) {
 
  453                                                   *offsets[
sij(i, 
j)]);
 
 
  524   if (cache->
_tracker->hasChanged(
true)) {
 
  527   return cache->
_sum.get();
 
 
  535   if (cache->
_tracker->hasChanged(
true)) {
 
 
  547   return static_cast<RooRealVar *
>(_frac.at(i));
 
 
  553   return static_cast<RooRealVar *
>(_frac.at(i));
 
 
  560   int nPar = 
self._parList.size();
 
  570         dm2.push_back(delta);
 
  577         for (
int ix = 0; ix < 
self._referenceGrid._nnuis[
idim]; ix++) {
 
  590      for (
int i = 0; i < 
nCombs; i++) {
 
  592         for (
int ix = 0; ix < nPar; ix++) {
 
  593            double delta = 
dm2[ix];
 
  594            tmpDm *= std::pow(delta, 
static_cast<double>(
output[i][ix]));
 
  601      for (
int i = 0; i < 
nPdf; ++i) {
 
  604         for (
int j = 0; 
j < 
nPdf; ++
j) {
 
  622            std::cout << 
"NonLinear fraction " << 
ffrac << std::endl;
 
  624            frac(
nPdf + i)->Print();
 
  625            frac(2 * 
nPdf + i)->Print();
 
  630         for (
int i = 0; i < 
nPdf; ++i) {
 
  631            if (frac(i)->
getVal() < 0)
 
  632               const_cast<RooRealVar *
>(frac(i))->setVal(0.);
 
  641      for (
int i = 0; i < 
nPdf; ++i) {
 
  648      std::vector<double> 
mtmp;
 
  652         mtmp.push_back(
m->getVal());
 
  657      int depth = std::pow(2, nPar);
 
  664      for (
int ix = 0; ix < nPar; ix++) {
 
  681      for (
int i = 0; i < 
depth; ++i) {
 
  694               frac(
nPdf + 
self._squareIdx[i])->getVal(); 
 
  700            std::cout << 
"Linear fraction " << 
ffrac << std::endl;
 
  701            frac(
self._squareIdx[i])->Print();
 
  702            frac(
nPdf + 
self._squareIdx[i])->Print();
 
  703            frac(2 * 
nPdf + 
self._squareIdx[i])->Print();
 
 
  726   int depth = std::pow(2, nPar);
 
  733      boundaries[
idim].push_back(lo);
 
  734      boundaries[
idim].push_back(
hi);
 
  766   for (
int ix = 0; ix < nPar; ix++) {
 
  770   for (
int k = 0; k < 
depth; ++k) {
 
  789   (*_MSqr) = M.Invert();
 
 
  795   if (allVars.
size() == 1) {
 
  802      std::cout << 
"Currently BinIntegrator only knows how to deal with 1-d " << std::endl;
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
const_iterator begin() const
 
const_iterator end() const
 
Abstract base class for RooRealVar binning definitions.
 
Abstract container object that can hold multiple RooAbsArg objects.
 
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
 
Storage_t::size_type size() const
 
RooAbsArg * first() const
 
bool addTyped(const RooAbsCollection &list, bool silent=false)
Adds elements of a given RooAbsCollection to the container if they match the specified type.
 
const RooArgSet * nset() const
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
 
virtual double getValV(const RooArgSet *normalisationSet=nullptr) const
Return value of object.
 
RooNumIntConfig * specialIntegratorConfig() const
Returns the specialized integrator configuration for this RooAbsReal.
 
Calculates the sum of a set of RooAbsReal terms, or when constructed with two sets,...
 
RooArgList is a container object that can hold multiple RooAbsArg objects.
 
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
Implements a RooAbsBinning in terms of an array of boundary values, posing no constraints on the choi...
 
Int_t setObj(const RooArgSet *nset, T *obj, const TNamed *isetRangeName=nullptr)
Setter function without integration set.
 
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=nullptr, const TNamed *isetRangeName=nullptr)
Getter function without integration set.
 
bool setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
 
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
 
Represents a constant real-valued object.
 
RooCustomizer is a factory class to produce clones of a prototype composite PDF object with the same ...
 
RooLinearVar is the most general form of a derived real-valued object that can be used by RooRealInte...
 
void calculateFractions(const RooMomentMorphFuncND &self, bool verbose=true) const
 
std::unique_ptr< RooChangeTracker > _tracker
 
std::unique_ptr< RooAbsReal > _sum
 
RooArgList containedArgs(Action) override
 
CacheElem(std::unique_ptr< RooAbsReal > &&sumFunc, std::unique_ptr< RooChangeTracker > &&tracker, const RooArgList &flist)
 
std::vector< int > _nnuis
 
void addBinning(const RooAbsBinning &binning)
 
std::vector< RooAbsBinning * > _grid
 
std::vector< std::vector< double > > _nref
 
void addPdf(const RooAbsReal &func, int bin_x)
 
RooObjCacheManager _cacheMgr
! Transient cache manager
 
std::unique_ptr< TMatrixD > _MSqr
 
void findShape(const std::vector< double > &x) const
 
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
 
RooAbsReal * sumFunc(const RooArgSet *nset)
 
CacheElem * getCache(const RooArgSet *nset) const
 
std::unique_ptr< TMatrixD > _M
 
RooArgSet * _curNormSet
! Transient cache manager
 
bool setBinIntegrator(RooArgSet &allVars)
 
double getValV(const RooArgSet *set=nullptr) const override
Return value of object.
 
std::vector< std::vector< double > > _squareVec
 
int sij(const int &i, const int &j) const
 
~RooMomentMorphFuncND() override
 
std::vector< int > _squareIdx
 
const RooArgSet & getConfigSection(const char *name) const
Retrieve configuration information specific to integrator with given name.
 
Variable that can be changed from the outside.
 
const char * GetName() const override
Returns name of object.
 
void cartesianProduct(std::vector< std::vector< T > > &out, std::vector< std::vector< T > > &in)
 
bool nextCombination(const Iterator first, Iterator k, const Iterator last)