Logo ROOT   master
Reference Guide
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  Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
36  void initGenerator(Int_t /*code*/) {} ; // optional pre-generation initialization
37  void generateEvent(Int_t code);
38 
39  virtual Bool_t selfNormalized() const { return kTRUE ; }
40 
41  // Handle projection of projection explicitly
42  virtual RooAbsPdf* createProjection(const RooArgSet& iset) ;
43 
44  void printMetaArgs(std::ostream& os) const ;
45 
46 
47 protected:
48 
49  RooRealProxy intpdf ; // p.d.f that is integrated
50  RooSetProxy intobs ; // observables that p.d.f is integrated over
51  RooSetProxy deps ; // dependents of this p.d.f
52 
53  class CacheElem : public RooAbsCacheElement {
54  public:
55  virtual ~CacheElem() { delete _projection ; } ;
56  // Payload
58  // Cache management functions
59  virtual RooArgList containedArgs(Action) ;
60  virtual void printCompactTreeHook(std::ostream&, const char *, Int_t, Int_t) ;
61  } ;
62  mutable RooObjCacheManager _cacheMgr ; //! The cache manager
63 
64  Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t /*mustReplaceAll*/, Bool_t /*nameChange*/, Bool_t /*isRecursive*/) ;
65 
66  const RooAbsReal* getProjection(const RooArgSet* iset, const RooArgSet* nset, const char* rangeName, int& code) const ;
67  Double_t evaluate() const ;
68 
69 private:
70 
71  ClassDef(RooProjectedPdf,1) // Operator p.d.f calculating projection of another p.d.f
72 };
73 
74 #endif
RooSetProxy deps
virtual RooAbsPdf * createProjection(const RooArgSet &iset)
Special version of RooAbsReal::createProjection that deals with projections of projections.
RooRealProxy intpdf
Class RooProjectedPdf is a RooAbsPdf implementation that represent a projection of a given input p...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
virtual TObject * clone(const char *newname) const
Bool_t redirectServersHook(const RooAbsCollection &newServerList, Bool_t, Bool_t, Bool_t)
The cache manager.
virtual Bool_t forceAnalyticalInt(const RooAbsArg &dep) const
Force RooRealIntegral to relegate integration of all observables to internal logic.
#define ClassDef(name, id)
Definition: Rtypes.h:322
virtual RooArgList containedArgs(Action)
Return RooAbsArg elements contained in projection cache element.
RooObjCacheManager _cacheMgr
RooSetProxy intobs
virtual Bool_t selfNormalized() const
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
virtual Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Mark all requested variables as internally integrated.
Double_t evaluate() const
Evaluate projected p.d.f.
Int_t getGenerator(const RooArgSet &directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const
No internal generator is implemented.
void initGenerator(Int_t)
Interface for one-time initialization to setup the generator for the specified code.
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.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:60
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
virtual ~RooProjectedPdf()
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.
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.
Mother of all ROOT objects.
Definition: TObject.h:37
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects...
void generateEvent(Int_t code)
No internal generator is implemented.
RooAbsPdf, the base class of all PDFs
Definition: RooAbsPdf.h:40
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooRealIntegral to more intuitively reflect the contents of the...
RooSetProxy is the concrete proxy for RooArgSet objects.
Definition: RooSetProxy.h:24
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:21
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:73
const Bool_t kTRUE
Definition: RtypesCore.h:89
char name[80]
Definition: TGX11.cxx:109