ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RooProjectedPdf.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * *
4  * Copyright (c) 2000-2005, Regents of the University of California *
5  * and Stanford University. All rights reserved. *
6  * *
7  * Redistribution and use in source and binary forms, *
8  * with or without modification, are permitted according to the terms *
9  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
10  *****************************************************************************/
11 
12 #ifndef ROOPROJECTEDPDF
13 #define ROOPROJECTEDPDF
14 
15 #include "RooAbsPdf.h"
16 #include "RooRealProxy.h"
17 #include "RooAbsReal.h"
18 #include "RooObjCacheManager.h"
19 #include "RooSetProxy.h"
20 
21 class RooProjectedPdf : public RooAbsPdf {
22 public:
23 
24  RooProjectedPdf() ;
25  RooProjectedPdf(const char *name, const char *title, RooAbsReal& _intpdf, const RooArgSet& intObs);
26  RooProjectedPdf(const RooProjectedPdf& other, const char* name=0) ;
27  virtual TObject* clone(const char* newname) const { return new RooProjectedPdf(*this,newname); }
28  inline virtual ~RooProjectedPdf() { }
29 
30  // Analytical integration support
31  virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName=0) const ;
32  virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
33  virtual Bool_t forceAnalyticalInt(const RooAbsArg& dep) const ;
34 
35  virtual Double_t getValV(const RooArgSet* set=0) const ;
36 
37  Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
38  void initGenerator(Int_t /*code*/) {} ; // optional pre-generation initialization
39  void generateEvent(Int_t code);
40 
41  virtual Bool_t selfNormalized() const { return kTRUE ; }
42 
43  // Handle projection of projection explicitly
44  virtual RooAbsPdf* createProjection(const RooArgSet& iset) ;
45 
46  void printMetaArgs(std::ostream& os) const ;
47 
48 
49 protected:
50 
51  RooRealProxy intpdf ; // p.d.f that is integrated
52  RooSetProxy intobs ; // observables that p.d.f is integrated over
53  RooSetProxy deps ; // dependents of this p.d.f
54 
55  class CacheElem : public RooAbsCacheElement {
56  public:
57  virtual ~CacheElem() { delete _projection ; } ;
58  // Payload
60  // Cache management functions
61  virtual RooArgList containedArgs(Action) ;
62  virtual void printCompactTreeHook(std::ostream&, const char *, Int_t, Int_t) ;
63  } ;
64  mutable RooObjCacheManager _cacheMgr ; //! The cache manager
65 
66  Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t /*mustReplaceAll*/, Bool_t /*nameChange*/, Bool_t /*isRecursive*/) ;
67 
68  mutable RooArgSet* _curNormSet ; //!
69 
70  const RooAbsReal* getProjection(const RooArgSet* iset, const RooArgSet* nset, const char* rangeName, int& code) const ;
71  Double_t evaluate() const ;
72 
73 private:
74 
75  ClassDef(RooProjectedPdf,1) // Operator p.d.f calculating projection of another p.d.f
76 };
77 
78 #endif
RooSetProxy deps
virtual RooAbsPdf * createProjection(const RooArgSet &iset)
Special version of RooAbsReal::createProjection that deals with projections of projections.
virtual Bool_t selfNormalized() const
RooRealProxy intpdf
Class RooProjectedPdf is a RooAbsPdf implementation that represent a projection of a given input p...
virtual TObject * clone(const char *newname) const
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
Int_t getGenerator(const RooArgSet &directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const
No internal generator is implemented.
Bool_t redirectServersHook(const RooAbsCollection &newServerList, Bool_t, Bool_t, Bool_t)
The cache manager.
#define ClassDef(name, id)
Definition: Rtypes.h:254
virtual RooArgList containedArgs(Action)
Return RooAbsArg elements contained in projection cache element.
RooObjCacheManager _cacheMgr
RooSetProxy intobs
Double_t evaluate() const
Evaluate projected p.d.f.
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Return analytical integral represent by appropriate element of projection cache.
void initGenerator(Int_t)
Interface for one-time initialization to setup the generator for the specified code.
RooArgSet * _curNormSet
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
const RooAbsReal * getProjection(const RooArgSet *iset, const RooArgSet *nset, const char *rangeName, int &code) const
Retrieve object representing projection integral of input p.d.f over observables iset, while normalizing over observables nset.
virtual Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Mark all requested variables as internally integrated.
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
virtual ~RooProjectedPdf()
RooProjectedPdf()
Default constructor.
virtual void printCompactTreeHook(std::ostream &, const char *, Int_t, Int_t)
Print contents of cache when printing self as part of object tree.
#define name(a, b)
Definition: linkTestLib0.cpp:5
Mother of all ROOT objects.
Definition: TObject.h:58
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects...
void generateEvent(Int_t code)
No internal generator is implemented.
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
virtual Bool_t forceAnalyticalInt(const RooAbsArg &dep) const
Force RooRealIntegral to relegate integration of all observables to internal logic.
RooSetProxy is the concrete proxy for RooArgSet objects.
Definition: RooSetProxy.h:25
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
Definition: RooRealProxy.h:23
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooRealIntegral to more intuitively reflect the contents of the...
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:66
const Bool_t kTRUE
Definition: Rtypes.h:91
virtual Double_t getValV(const RooArgSet *set=0) const
Special version of getVal() overrides RooAbsReal::getValF() to save value of current normalization se...