CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
VerticalInterpPdf.h
Go to the documentation of this file.
1 #ifndef ROO_REAL_SUM_PDF_SAFE
2 #define ROO_REAL_SUM_PDF_SAFE
3 
7 #include "RooAbsPdf.h"
8 #include "RooListProxy.h"
9 #include "RooAICRegistry.h"
10 #include "RooObjCacheManager.h"
11 
12 class VerticalInterpPdf : public RooAbsPdf {
13 public:
14 
16  VerticalInterpPdf(const char *name, const char *title, const RooArgList& funcList, const RooArgList& coefList, Double_t quadraticRegion=0., Int_t quadraticAlgo=0) ;
17  VerticalInterpPdf(const VerticalInterpPdf& other, const char* name=0) ;
18  virtual TObject* clone(const char* newname) const { return new VerticalInterpPdf(*this,newname) ; }
19  virtual ~VerticalInterpPdf() ;
20 
21  Double_t evaluate() const ;
22  virtual Bool_t checkObservables(const RooArgSet* nset) const ;
23 
24  virtual Bool_t forceAnalyticalInt(const RooAbsArg&) const { return kTRUE ; }
25  Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& numVars, const RooArgSet* normSet, const char* rangeName=0) const ;
26  Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
27 
28  const RooArgList& funcList() const { return _funcList ; }
29  const RooArgList& coefList() const { return _coefList ; }
30 
31 protected:
32 
33  class CacheElem : public RooAbsCacheElement {
34  public:
35  CacheElem() {} ;
36  virtual ~CacheElem() {} ;
37  virtual RooArgList containedArgs(Action) { RooArgList ret(_funcIntList) ; ret.add(_funcNormList) ; return ret ; }
38  RooArgList _funcIntList ;
39  RooArgList _funcNormList ;
40  } ;
41  mutable RooObjCacheManager _normIntMgr ; // The integration cache manager
42 
43  RooListProxy _funcList ; // List of component FUNCs
44  RooListProxy _coefList ; // List of coefficients
45  Double_t _quadraticRegion;
47  TIterator* _funcIter ;
48  TIterator* _coefIter ;
49 
50  Double_t interpolate(Double_t coeff, Double_t central, RooAbsReal *fUp, RooAbsReal *fDown) const ;
51 
52 private:
53 
54  ClassDef(VerticalInterpPdf,2) // PDF constructed from a sum of (non-pdf) functions
55 };
56 
57 #endif
virtual Bool_t forceAnalyticalInt(const RooAbsArg &) const
const RooArgList & funcList() const
Double_t interpolate(Double_t coeff, Double_t central, RooAbsReal *fUp, RooAbsReal *fDown) const
Iterator over coefficient list.
virtual RooArgList containedArgs(Action)
RooListProxy _funcList
RooListProxy _coefList
virtual TObject * clone(const char *newname) const
RooObjCacheManager _normIntMgr
TIterator * _coefIter
Iterator over FUNC list.
virtual Bool_t checkObservables(const RooArgSet *nset) const
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &numVars, const RooArgSet *normSet, const char *rangeName=0) const
Double_t evaluate() const
const RooArgList & coefList() const