ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RooNumConvPdf.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooNumConvPdf.h,v 1.2 2007/05/11 10:42:36 verkerke Exp $
5  * Authors: *
6  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * *
9  * Copyright (c) 2000-2005, Regents of the University of California *
10  * and Stanford University. All rights reserved. *
11  * *
12  * Redistribution and use in source and binary forms, *
13  * with or without modification, are permitted according to the terms *
14  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15  *****************************************************************************/
16 #ifndef ROO_NUM_CONV_PDF
17 #define ROO_NUM_CONV_PDF
18 
19 #include "RooAbsPdf.h"
20 #include "RooNumConvolution.h"
21 
22 class TH2 ;
23 class RooArgSet ;
24 class RooDataSet ;
25 
26 class RooNumConvPdf : public RooAbsPdf {
27 public:
28 
29  RooNumConvPdf() ;
30 
31  RooNumConvPdf(const char *name, const char *title,
32  RooRealVar& convVar, RooAbsPdf& pdf, RooAbsPdf& resmodel) ;
33 
34  RooNumConvPdf(const RooNumConvPdf& other, const char* name=0) ;
35 
36  virtual TObject* clone(const char* newname) const { return new RooNumConvPdf(*this,newname) ; }
37  virtual ~RooNumConvPdf() ;
38 
39  virtual Double_t evaluate() const ;
40 
41  // Calls forwarded to RooNumConvolution
42  inline RooNumIntConfig& convIntConfig() { return conv().convIntConfig() ; }
44  inline void setConvolutionWindow(RooAbsReal& centerParam, RooAbsReal& widthParam, Double_t widthScaleFactor=1)
45  { conv().setConvolutionWindow(centerParam,widthParam,widthScaleFactor) ; }
46  inline void setCallWarning(Int_t threshold=2000) { conv().setCallWarning(threshold) ; }
47  inline void setCallProfiling(Bool_t flag, Int_t nbinX = 40, Int_t nbinCall = 40, Int_t nCallHigh=1000)
48  { conv().setCallProfiling(flag,nbinX,nbinCall,nCallHigh) ; }
49  inline const TH2* profileData() const { return conv().profileData() ; }
50 
51  // Access components
52  RooRealVar& var() const { return (RooRealVar&)(const_cast<RooAbsReal&>(_origVar.arg())) ; }
53  RooAbsReal& pdf() const { return const_cast<RooAbsReal&>(_origPdf.arg()) ; }
54  RooAbsReal& model() const { return const_cast<RooAbsReal&>(_origModel.arg()) ; }
55 
56  void printMetaArgs(std::ostream& os) const ;
57 
58 protected:
59 
60  // WVE Store all properties of RooNumConvolution here so that can be take
61  // along in the copy ctor.
62 
63  RooNumConvolution& conv() const { if (!_init) initialize() ; return *_conv ; }
64 
65  mutable Bool_t _init ; //! do not persist
66  void initialize() const ;
67  mutable RooNumConvolution* _conv ; //! Actual convolution calculation
68 
69  RooRealProxy _origVar ; // Original convolution variable
70  RooRealProxy _origPdf ; // Original input PDF
71  RooRealProxy _origModel ; // Original resolution model
72 
73  virtual RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=0,
74  const RooArgSet* auxProto=0, Bool_t verbose= kFALSE) const ;
75 
76  friend class RooConvGenContext ;
77 
78  ClassDef(RooNumConvPdf,1) // Operator PDF implementing numeric convolution of 2 input PDFs
79 };
80 
81 #endif
void initialize() const
do not persist
RooNumIntConfig & convIntConfig()
void setCallProfiling(Bool_t flag, Int_t nbinX=40, Int_t nbinCall=40, Int_t nCallHigh=1000)
Activate call profile if flag is set to true.
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
const TH2 * profileData() const
Definition: RooNumConvPdf.h:49
virtual ~RooNumConvPdf()
Destructor.
RooAbsReal & model() const
Definition: RooNumConvPdf.h:54
void setCallWarning(Int_t threshold=2000)
Definition: RooNumConvPdf.h:46
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
const RooAbsReal & arg() const
Definition: RooRealProxy.h:43
virtual Double_t evaluate() const
Calculate and return value of p.d.f.
void clearConvolutionWindow()
Definition: RooNumConvPdf.h:43
#define ClassDef(name, id)
Definition: Rtypes.h:254
Numeric 1-dimensional convolution operator PDF.
void setCallWarning(Int_t threshold=2000)
Activate warning messages if number of function calls needed for evaluation of convolution integral e...
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
virtual RooAbsGenContext * genContext(const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t verbose=kFALSE) const
Return appropriate generator context for this convolved p.d.f.
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooNumConvPdf to more intuitively reflect the contents of the p...
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:37
const TH2 * profileData() const
Service class for 2-Dim histogram classes.
Definition: TH2.h:36
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, Double_t widthScaleFactor=1)
Definition: RooNumConvPdf.h:44
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
bool verbose
RooNumIntConfig & convIntConfig()
Definition: RooNumConvPdf.h:42
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:29
RooNumConvolution & conv() const
Definition: RooNumConvPdf.h:63
RooRealVar & var() const
Definition: RooNumConvPdf.h:52
void setCallProfiling(Bool_t flag, Int_t nbinX=40, Int_t nbinCall=40, Int_t nCallHigh=1000)
Definition: RooNumConvPdf.h:47
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
RooRealProxy _origPdf
Definition: RooNumConvPdf.h:70
#define name(a, b)
Definition: linkTestLib0.cpp:5
Mother of all ROOT objects.
Definition: TObject.h:58
RooRealProxy _origVar
Actual convolution calculation.
Definition: RooNumConvPdf.h:69
void clearConvolutionWindow()
Removes previously defined convolution window, reverting to convolution from -inf to +inf...
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, Double_t widthScaleFactor=1)
Restrict convolution integral to finite range [ x - C - S*W, x - C + S*W ] where x is current value o...
RooRealProxy _origModel
Definition: RooNumConvPdf.h:71
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
Definition: RooRealProxy.h:23
virtual TObject * clone(const char *newname) const
Definition: RooNumConvPdf.h:36
RooAbsReal & pdf() const
Definition: RooNumConvPdf.h:53
Numeric 1-dimensional convolution operator PDF.
Definition: RooNumConvPdf.h:26
RooNumConvolution * _conv
Definition: RooNumConvPdf.h:67