Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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
const Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
#define ClassDef(name, id)
Definition Rtypes.h:325
char name[80]
Definition TGX11.cxx:110
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:64
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:35
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:36
Numeric 1-dimensional convolution operator PDF.
RooNumIntConfig & convIntConfig()
virtual TObject * clone(const char *newname) const
void setCallProfiling(Bool_t flag, Int_t nbinX=40, Int_t nbinCall=40, Int_t nCallHigh=1000)
virtual ~RooNumConvPdf()
Destructor.
RooRealProxy _origPdf
RooNumConvolution * _conv
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()
RooRealProxy _origModel
RooRealVar & var() const
RooRealProxy _origVar
Actual convolution calculation.
void setCallWarning(Int_t threshold=2000)
RooAbsReal & pdf() const
virtual Double_t evaluate() const
Calculate and return value of p.d.f.
RooAbsReal & model() const
RooNumConvolution & conv() const
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, Double_t widthScaleFactor=1)
const TH2 * profileData() const
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...
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:39
const T & arg() const
Return reference to object held in proxy.
Service class for 2-D histogram classes.
Definition TH2.h:30
Mother of all ROOT objects.
Definition TObject.h:41