Logo ROOT   6.10/09
Reference Guide
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
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.
void setCallWarning(Int_t threshold=2000)
Definition: RooNumConvPdf.h:46
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual TObject * clone(const char *newname) const
Definition: RooNumConvPdf.h:36
const TH2 * profileData() const
void clearConvolutionWindow()
Definition: RooNumConvPdf.h:43
RooAbsReal & model() const
Definition: RooNumConvPdf.h:54
#define ClassDef(name, id)
Definition: Rtypes.h:297
Numeric 1-dimensional convolution operator PDF.
void initialize() const
do not persist
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...
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:36
virtual Double_t evaluate() const
Calculate and return value of p.d.f.
Service class for 2-Dim histogram classes.
Definition: TH2.h:30
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, Double_t widthScaleFactor=1)
Definition: RooNumConvPdf.h:44
bool verbose
RooAbsReal & pdf() const
Definition: RooNumConvPdf.h:53
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.
RooNumIntConfig & convIntConfig()
Definition: RooNumConvPdf.h:42
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:29
const Bool_t kFALSE
Definition: RtypesCore.h:92
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
Mother of all ROOT objects.
Definition: TObject.h:37
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
RooRealVar & var() const
Definition: RooNumConvPdf.h:52
RooNumConvolution & conv() const
Definition: RooNumConvPdf.h:63
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
Definition: RooRealProxy.h:23
const RooAbsReal & arg() const
Definition: RooRealProxy.h:43
Numeric 1-dimensional convolution operator PDF.
Definition: RooNumConvPdf.h:26
RooNumConvolution * _conv
Definition: RooNumConvPdf.h:67