Logo ROOT   6.16/01
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
22class TH2 ;
23class RooArgSet ;
24class RooDataSet ;
25
26class RooNumConvPdf : public RooAbsPdf {
27public:
28
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
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
58protected:
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
int Int_t
Definition: RtypesCore.h:41
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
#define ClassDef(name, id)
Definition: Rtypes.h:324
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:31
Numeric 1-dimensional convolution operator PDF.
Definition: RooNumConvPdf.h:26
RooNumIntConfig & convIntConfig()
Definition: RooNumConvPdf.h:42
virtual TObject * clone(const char *newname) const
Definition: RooNumConvPdf.h:36
void setCallProfiling(Bool_t flag, Int_t nbinX=40, Int_t nbinCall=40, Int_t nCallHigh=1000)
Definition: RooNumConvPdf.h:47
virtual ~RooNumConvPdf()
Destructor.
RooRealProxy _origPdf
Definition: RooNumConvPdf.h:70
RooNumConvolution * _conv
Definition: RooNumConvPdf.h:67
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.
void clearConvolutionWindow()
Definition: RooNumConvPdf.h:43
RooRealProxy _origModel
Definition: RooNumConvPdf.h:71
RooRealVar & var() const
Definition: RooNumConvPdf.h:52
RooRealProxy _origVar
Actual convolution calculation.
Definition: RooNumConvPdf.h:69
void setCallWarning(Int_t threshold=2000)
Definition: RooNumConvPdf.h:46
RooAbsReal & pdf() const
Definition: RooNumConvPdf.h:53
virtual Double_t evaluate() const
Calculate and return value of p.d.f.
RooAbsReal & model() const
Definition: RooNumConvPdf.h:54
RooNumConvolution & conv() const
Definition: RooNumConvPdf.h:63
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, Double_t widthScaleFactor=1)
Definition: RooNumConvPdf.h:44
const TH2 * profileData() const
Definition: RooNumConvPdf.h:49
void initialize() const
do not persist
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooNumConvPdf to more intuitively reflect the contents of the p...
Numeric 1-dimensional convolution operator PDF.
void clearConvolutionWindow()
Removes previously defined convolution window, reverting to convolution from -inf to +inf.
const TH2 * profileData() const
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...
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 & convIntConfig()
void setCallWarning(Int_t threshold=2000)
Activate warning messages if number of function calls needed for evaluation of convolution integral e...
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
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
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:36
Service class for 2-Dim histogram classes.
Definition: TH2.h:30
Mother of all ROOT objects.
Definition: TObject.h:37