Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooMomentMorphND.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * *
4 * This code was autogenerated by RooClassFactory *
5 *****************************************************************************/
6
7#ifndef ROOMOMENTMORPHND
8#define ROOMOMENTMORPHND
9
10#include "RooAbsPdf.h"
11#include "RooRealProxy.h"
12#include "RooCategoryProxy.h"
13#include "RooAbsReal.h"
14#include "RooAbsCategory.h"
15#include "RooSetProxy.h"
16#include "RooListProxy.h"
17#include "RooArgList.h"
18#include "RooBinning.h"
19
20#include "TMatrixD.h"
21#include "TMap.h"
22
23#include <vector>
24#include <map>
25
27class RooAddPdf;
28
30
31public:
34
35 class Grid2 {
36 public:
37 Grid2(){};
38 Grid2(const Grid2 &other);
39 Grid2(const RooAbsBinning &binning_x) { _grid.push_back(binning_x.clone()); };
40 Grid2(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y)
41 {
42 _grid.push_back(binning_x.clone());
43 _grid.push_back(binning_y.clone());
44 };
45 Grid2(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y, const RooAbsBinning &binning_z)
46 {
47 _grid.push_back(binning_x.clone());
48 _grid.push_back(binning_y.clone());
49 _grid.push_back(binning_z.clone());
50 };
51 Grid2(std::vector<RooAbsBinning *> const &binnings)
52 {
53 for (unsigned int i = 0; i < binnings.size(); i++) {
54 _grid.push_back(binnings[i]->clone());
55 }
56 };
57
58 virtual ~Grid2();
59
60 void addPdf(const RooAbsPdf &pdf, int bin_x);
61 void addPdf(const RooAbsPdf &pdf, int bin_x, int bin_y);
62 void addPdf(const RooAbsPdf &pdf, int bin_x, int bin_y, int bin_z);
63 void addPdf(const RooAbsPdf &pdf, std::vector<int> bins);
64 void addBinning(const RooAbsBinning &binning) { _grid.push_back(binning.clone()); };
65
66 mutable std::vector<RooAbsBinning *> _grid;
68 mutable std::map<std::vector<int>, int> _pdfMap;
69
70 mutable std::vector<std::vector<double>> _nref;
71 mutable std::vector<int> _nnuis;
72 };
73
74 using Grid = Grid2;
75
76protected:
78 public:
80 : _sum(&sumPdf), _tracker(&tracker)
81 {
82 _frac.add(flist);
83 };
84 ~CacheElem() override;
89
90 RooRealVar *frac(int i);
91 const RooRealVar *frac(int i) const;
92 void calculateFractions(const RooMomentMorphND &self, bool verbose = true) const;
93 };
94
95public:
97
99 RooMomentMorphND(const char *name, const char *title, RooAbsReal &_m, const RooArgList &varList,
100 const RooArgList &pdfList, const RooArgList &mrefList, Setting setting);
101 RooMomentMorphND(const char *name, const char *title, const RooArgList &parList, const RooArgList &obsList,
102 const Grid2 &referenceGrid, const Setting &setting);
103 RooMomentMorphND(const RooMomentMorphND &other, const char *name = nullptr);
104 RooMomentMorphND(const char *name, const char *title, RooAbsReal &_m, const RooArgList &varList,
105 const RooArgList &pdfList, const TVectorD &mrefpoints, Setting setting);
106 ~RooMomentMorphND() override;
107 TObject *clone(const char *newname) const override { return new RooMomentMorphND(*this, newname); }
108
109 void setMode(const Setting &setting) { _setting = setting; }
110 bool selfNormalized() const override { return true; }
111 bool setBinIntegrator(RooArgSet &allVars);
112 void useHorizontalMorphing(bool val) { _useHorizMorph = val; }
113
114 double evaluate() const override;
115 virtual double getVal(const RooArgSet *set = nullptr) const;
116
117protected:
118 void initialize();
119 void initializeParameters(const RooArgList &parList);
120 void initializeObservables(const RooArgList &obsList);
121
122 RooAbsPdf *sumPdf(const RooArgSet *nset);
123 CacheElem *getCache(const RooArgSet *nset) const;
124
125 void findShape(const std::vector<double> &x) const;
126
127 friend class CacheElem;
128 friend class Grid2;
129
130 mutable RooObjCacheManager _cacheMgr; ///<! Transient cache manager
131 mutable RooArgSet *_curNormSet = nullptr; ///<! Transient cache manager
132
137
138 mutable std::unique_ptr<TMatrixD> _M;
139 mutable std::unique_ptr<TMatrixD> _MSqr;
140 mutable std::vector<std::vector<double>> _squareVec;
141 mutable std::vector<int> _squareIdx;
142
145
146 inline int sij(const int &i, const int &j) const { return (i * _obsList.getSize() + j); }
147
149};
150
151#endif
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
char name[80]
Definition TGX11.cxx:110
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
virtual RooAbsBinning * clone(const char *name=nullptr) const =0
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
Int_t getSize() const
Return the number of elements in the collection.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsPdf()
Default constructor.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:62
friend class RooAddPdf
Definition RooAbsReal.h:494
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:34
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
RooChangeTracker is a meta object that tracks value changes in a given set of RooAbsArgs by registeri...
CacheElem(RooAbsPdf &sumPdf, RooChangeTracker &tracker, const RooArgList &flist)
void calculateFractions(const RooMomentMorphND &self, bool verbose=true) const
RooArgList containedArgs(Action) override
Grid2(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y, const RooAbsBinning &binning_z)
Grid2(std::vector< RooAbsBinning * > const &binnings)
std::map< std::vector< int >, int > _pdfMap
Grid2(const RooAbsBinning &binning_x)
void addBinning(const RooAbsBinning &binning)
std::vector< RooAbsBinning * > _grid
Grid2(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y)
std::vector< int > _nnuis
void addPdf(const RooAbsPdf &pdf, int bin_x)
std::vector< std::vector< double > > _nref
void useHorizontalMorphing(bool val)
std::vector< int > _squareIdx
CacheElem * getCache(const RooArgSet *nset) const
bool setBinIntegrator(RooArgSet &allVars)
RooObjCacheManager _cacheMgr
! Transient cache manager
RooArgSet * _curNormSet
! Transient cache manager
std::unique_ptr< TMatrixD > _M
std::vector< std::vector< double > > _squareVec
void initializeObservables(const RooArgList &obsList)
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
bool selfNormalized() const override
Shows if a PDF is self-normalized, which means that no attempt is made to add a normalization term.
void setMode(const Setting &setting)
int sij(const int &i, const int &j) const
virtual double getVal(const RooArgSet *set=nullptr) const
void findShape(const std::vector< double > &x) const
RooAbsPdf * sumPdf(const RooArgSet *nset)
void initializeParameters(const RooArgList &parList)
TObject * clone(const char *newname) const override
std::unique_ptr< TMatrixD > _MSqr
RooListProxy _parList
RooListProxy _pdfList
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:40
Mother of all ROOT objects.
Definition TObject.h:41
Double_t x[n]
Definition legend1.C:17