Logo ROOT   6.12/07
Reference Guide
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 <string>
25 #include <map>
26 
27 using namespace std;
28 
29 class RooChangeTracker;
30 
31 class RooMomentMorphND : public RooAbsPdf {
32 
33 public:
34  class Grid {
35  public:
36  Grid(){};
37  Grid(const Grid &other);
38  Grid(const RooAbsBinning &binning_x) { _grid.push_back(binning_x.clone()); };
39  Grid(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y)
40  {
41  _grid.push_back(binning_x.clone());
42  _grid.push_back(binning_y.clone());
43  };
44  Grid(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y, const RooAbsBinning &binning_z)
45  {
46  _grid.push_back(binning_x.clone());
47  _grid.push_back(binning_y.clone());
48  _grid.push_back(binning_z.clone());
49  };
50  Grid(const vector<RooAbsBinning *> binnings)
51  {
52  for (unsigned int i = 0; i < binnings.size(); i++) {
53  _grid.push_back(binnings[i]->clone());
54  }
55  };
56 
57  ~Grid();
58 
59  void addPdf(const RooAbsPdf &pdf, int bin_x);
60  void addPdf(const RooAbsPdf &pdf, int bin_x, int bin_y);
61  void addPdf(const RooAbsPdf &pdf, int bin_x, int bin_y, int bin_z);
62  void addPdf(const RooAbsPdf &pdf, vector<int> bins);
63  void addBinning(const RooAbsBinning &binning) { _grid.push_back(binning.clone()); };
64 
65  mutable vector<RooAbsBinning *> _grid;
67  mutable map<vector<int>, int> _pdfMap;
68 
69  mutable vector<vector<double>> _nref;
70  mutable vector<int> _nnuis;
71  };
72 
73 protected:
74  class CacheElem : public RooAbsCacheElement {
75  public:
76  CacheElem(RooAbsPdf &sumPdf, RooChangeTracker &tracker, const RooArgList &flist)
77  : _sumPdf(&sumPdf), _tracker(&tracker)
78  {
79  _frac.add(flist);
80  };
82  virtual ~CacheElem();
83  virtual RooArgList containedArgs(Action);
87 
88  RooRealVar *frac(int i);
89  const RooRealVar *frac(int i) const;
90  void calculateFractions(const RooMomentMorphND &self, Bool_t verbose = kTRUE) const;
91  };
92 
93 public:
94  enum Setting { Linear, SineLinear, NonLinear, NonLinearPosFractions, NonLinearLinFractions };
95 
97  RooMomentMorphND(const char *name, const char *title, RooAbsReal &_m, const RooArgList &varList,
98  const RooArgList &pdfList, const RooArgList &mrefList, Setting setting);
99  RooMomentMorphND(const char *name, const char *title, const RooArgList &parList, const RooArgList &obsList,
100  const Grid &referenceGrid, const Setting &setting);
101  RooMomentMorphND(const RooMomentMorphND &other, const char *name = 0);
102  RooMomentMorphND(const char *name, const char *title, RooAbsReal &_m, const RooArgList &varList,
103  const RooArgList &pdfList, const TVectorD &mrefpoints, Setting setting);
104  virtual ~RooMomentMorphND();
105  virtual TObject *clone(const char *newname) const { return new RooMomentMorphND(*this, newname); }
106 
107  void setMode(const Setting &setting) { _setting = setting; }
108  virtual Bool_t selfNormalized() const { return kTRUE; }
109  Bool_t setBinIntegrator(RooArgSet &allVars);
110  void useHorizontalMorphing(Bool_t val) { _useHorizMorph = val; }
111 
112  Double_t evaluate() const;
113  virtual Double_t getVal(const RooArgSet *set = 0) const;
114 
115 protected:
116  void initialize();
117  void initializeParameters(const RooArgList &parList);
118  void initializeObservables(const RooArgList &obsList);
119 
120  RooAbsPdf *sumPdf(const RooArgSet *nset);
121  CacheElem *getCache(const RooArgSet *nset) const;
122 
123  void findShape(const vector<double> &x) const;
124 
125  friend class CacheElem;
126  friend class Grid;
127 
130 
133  // RooListProxy _pdfList ;
134  TIterator *_parItr; //! Do not persist
135  TIterator *_obsItr; //! Do not persist
138 
139  mutable TMatrixD *_M;
140  mutable TMatrixD *_MSqr;
141  mutable vector<vector<double>> _squareVec;
142  mutable vector<int> _squareIdx;
143 
146 
147  inline int sij(const int &i, const int &j) const { return (i * _obsList.getSize() + j); }
148 
150 };
151 
152 #endif
virtual Bool_t selfNormalized() const
vector< vector< double > > _squareVec
vector< int > _squareIdx
Grid(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y, const RooAbsBinning &binning_z)
TIterator * _obsItr
Do not persist.
Grid(const RooAbsBinning &binning_x, const RooAbsBinning &binning_y)
RooSetProxy _obsList
bool Bool_t
Definition: RtypesCore.h:59
void useHorizontalMorphing(Bool_t val)
void addBinning(const RooAbsBinning &binning)
STL namespace.
RooListProxy _pdfList
virtual RooAbsBinning * clone(const char *name=0) const =0
Iterator abstract base class.
Definition: TIterator.h:30
void evaluate(typename Architecture_t::Matrix_t &A, EActivationFunction f)
Apply the given activation function to each value in the given matrix A.
Definition: Functions.h:85
TMatrixT.
Definition: TMatrixDfwd.h:22
void operModeHook(RooAbsArg::OperMode)
Interface for operation mode change calls.
Double_t x[n]
Definition: legend1.C:17
CacheElem(RooAbsPdf &sumPdf, RooChangeTracker &tracker, const RooArgList &flist)
#define ClassDef(name, id)
Definition: Rtypes.h:320
RooListProxy _parList
RooArgSet * _curNormSet
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:36
void setMode(const Setting &setting)
Grid(const RooAbsBinning &binning_x)
Int_t getSize() const
Grid _referenceGrid
Do not persist.
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
RooListProxy is the concrete proxy for RooArgList objects.
Definition: RooListProxy.h:25
RooChangeTracker * _tracker
RooObjCacheManager _cacheMgr
RooAbsBinning is the abstract base class for RooRealVar binning definitions This class defines the in...
Definition: RooAbsBinning.h:26
double Double_t
Definition: RtypesCore.h:55
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
vector< vector< double > > _nref
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
int sij(const int &i, const int &j) const
RooChangeTracker is a meta object that tracks value changes in a given set of RooAbsArgs by registeri...
virtual TObject * clone(const char *newname) const
Mother of all ROOT objects.
Definition: TObject.h:37
static std::shared_ptr< std::function< double(double)> > Linear
Definition: NeuralNet.icc:59
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
RooSetProxy is the concrete proxy for RooArgSet objects.
Definition: RooSetProxy.h:24
Grid(const vector< RooAbsBinning *> binnings)
map< vector< int >, int > _pdfMap
const Bool_t kTRUE
Definition: RtypesCore.h:87
void initialize(typename Architecture_t::Matrix_t &A, EInitialization m)
Definition: Functions.h:249
char name[80]
Definition: TGX11.cxx:109