Logo ROOT  
Reference Guide
RooResolutionModel.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooResolutionModel.h,v 1.26 2007/05/14 18:37:46 wouter 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_RESOLUTION_MODEL
17#define ROO_RESOLUTION_MODEL
18
19#include "RooAbsPdf.h"
20#include "RooTemplateProxy.h"
21#include "RooRealVar.h"
22#include "RooFormulaVar.h"
23
25
27public:
28
29 // Constructors, assignment etc
30 inline RooResolutionModel() : _basis(0) { }
31 RooResolutionModel(const char *name, const char *title, RooAbsRealLValue& x) ;
32 RooResolutionModel(const RooResolutionModel& other, const char* name=0);
33 TObject* clone(const char* newname) const override = 0 ;
34 ~RooResolutionModel() override;
35
37 const RooDataSet*, const RooArgSet*,
38 bool) const { return 0; }
39
40 double getValV(const RooArgSet* nset=0) const override ;
41
42 // If used as regular PDF, it also has to be normalized. If this resolution
43 // model is used in a convolution, return unnormalized value regardless of
44 // specified normalization set.
45 bool selfNormalized() const override { return isConvolved() ; }
46
48 /// Return the convolution variable of the resolution model.
49 RooAbsRealLValue& convVar() const {return *x;}
50 const RooRealVar& basisConvVar() const ;
51
52 inline bool isBasisSupported(const char* name) const { return basisCode(name)?true:false ; }
53 virtual Int_t basisCode(const char* name) const = 0 ;
54
55 virtual void normLeafServerList(RooArgSet& list) const ;
56 double getNorm(const RooArgSet* nset=0) const override ;
57
58 inline const RooFormulaVar& basis() const { return _basis?*_basis:*identity() ; }
59 bool isConvolved() const { return _basis ? true : false ; }
60
61 void printMultiline(std::ostream& os, Int_t content, bool verbose=false, TString indent="") const override ;
62
63 static RooFormulaVar* identity() ;
64
65 virtual void changeBasis(RooFormulaVar* basis) ;
66
67protected:
68
69 friend class RooConvGenContext ;
70 friend class RooAddModel ;
71 RooTemplateProxy<RooAbsRealLValue> x; ///< Dependent/convolution variable
72
73 bool redirectServersHook(const RooAbsCollection& newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override ;
74
75 friend class RooAbsAnaConvPdf ;
76
77 Int_t _basisCode ; ///< Identifier code for selected basis function
78 RooFormulaVar* _basis ; ///< Basis function convolved with this resolution model
79 bool _ownBasis ; ///< Flag indicating ownership of _basis
80
81 ClassDefOverride(RooResolutionModel, 2) // Abstract Resolution Model
82};
83
84#endif
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition: TGX11.cxx:110
RooAbsAnaConvPdf is the base class for PDFs that represent a physics model that can be analytically c...
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:72
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
RooAddModel is an efficient implementation of a sum of PDFs of the form.
Definition: RooAddModel.h:26
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:55
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
Definition: RooFormulaVar.h:30
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:40
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
~RooResolutionModel() override
Destructor.
TObject * clone(const char *newname) const override=0
virtual void changeBasis(RooFormulaVar *basis)
Change the basis function we convolute with.
virtual Int_t basisCode(const char *name) const =0
virtual RooResolutionModel * convolution(RooFormulaVar *basis, RooAbsArg *owner) const
Instantiate a clone of this resolution model representing a convolution with given basis function.
double getValV(const RooArgSet *nset=0) const override
Modified version of RooAbsPdf::getValF().
static RooFormulaVar * identity()
Return identity formula pointer.
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override
Forward redirectServers call to our basis function, which is not connected to either resolution model...
const RooRealVar & basisConvVar() const
Return the convolution variable of the selection basis function.
bool _ownBasis
Flag indicating ownership of _basis.
double getNorm(const RooArgSet *nset=0) const override
Return the integral of this PDF over all elements of 'nset'.
bool isBasisSupported(const char *name) const
bool selfNormalized() const override
Shows if a PDF is self-normalized, which means that no attempt is made to add a normalization term.
virtual void normLeafServerList(RooArgSet &list) const
Floating point error checking and tracing for given float value.
virtual RooAbsGenContext * modelGenContext(const RooAbsAnaConvPdf &, const RooArgSet &, const RooDataSet *, const RooArgSet *, bool) const
void printMultiline(std::ostream &os, Int_t content, bool verbose=false, TString indent="") const override
Print info about this object to the specified stream.
bool isConvolved() const
Int_t _basisCode
Identifier code for selected basis function.
RooAbsRealLValue & convVar() const
Return the convolution variable of the resolution model.
RooFormulaVar * _basis
Basis function convolved with this resolution model.
const RooFormulaVar & basis() const
RooTemplateProxy< RooAbsRealLValue > x
Dependent/convolution variable.
Mother of all ROOT objects.
Definition: TObject.h:37
Basic string class.
Definition: TString.h:136