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=nullptr) ;
35
36 TObject* clone(const char* newname) const override { return new RooNumConvPdf(*this,newname) ; }
37 ~RooNumConvPdf() override ;
38
39 double evaluate() const override ;
40
41 // Calls forwarded to RooNumConvolution
44 inline void setConvolutionWindow(RooAbsReal& centerParam, RooAbsReal& widthParam, double widthScaleFactor=1)
45 { conv().setConvolutionWindow(centerParam,widthParam,widthScaleFactor) ; }
46 inline void setCallWarning(Int_t threshold=2000) { conv().setCallWarning(threshold) ; }
47 inline void setCallProfiling(bool 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 override ;
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 _init = false; ///<! do not persist
66 void initialize() const ;
67 mutable std::unique_ptr<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 RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=nullptr,
74 const RooArgSet* auxProto=nullptr, bool verbose= false) const override ;
75
76 friend class RooConvGenContext ;
77
78 ClassDefOverride(RooNumConvPdf,1) // Operator PDF implementing numeric convolution of 2 input PDFs
79};
80
81#endif
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
char name[80]
Definition TGX11.cxx:110
Abstract base class for generator contexts of RooAbsPdf objects.
Abstract interface for all probability density functions.
Definition RooAbsPdf.h:40
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:59
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:57
Numeric 1-dimensional convolution operator PDF.
RooNumIntConfig & convIntConfig()
RooAbsGenContext * genContext(const RooArgSet &vars, const RooDataSet *prototype=nullptr, const RooArgSet *auxProto=nullptr, bool verbose=false) const override
Return appropriate generator context for this convolved p.d.f.
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, double widthScaleFactor=1)
RooRealProxy _origPdf
Original input PDF.
~RooNumConvPdf() override
Destructor.
void clearConvolutionWindow()
std::unique_ptr< RooNumConvolution > _conv
! Actual convolution calculation
RooRealProxy _origModel
Original resolution model.
void setCallProfiling(bool flag, Int_t nbinX=40, Int_t nbinCall=40, Int_t nCallHigh=1000)
RooRealVar & var() const
double evaluate() const override
Calculate and return value of p.d.f.
RooRealProxy _origVar
Original convolution variable.
TObject * clone(const char *newname) const override
void setCallWarning(Int_t threshold=2000)
RooAbsReal & pdf() const
RooAbsReal & model() const
RooNumConvolution & conv() const
const TH2 * profileData() const
bool _init
! do not persist
void printMetaArgs(std::ostream &os) const override
Customized printing of arguments of a RooNumConvPdf to more intuitively reflect the contents of the p...
void initialize() const
One-time initialization of object.
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 setCallProfiling(bool 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...
void setConvolutionWindow(RooAbsReal &centerParam, RooAbsReal &widthParam, double widthScaleFactor=1)
Restrict convolution integral to finite range [ x - C - S*W, x - C + S*W ] where x is current value o...
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:37
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