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 "RooRealProxy.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, RooRealVar& x) ;
32 RooResolutionModel(const RooResolutionModel& other, const char* name=0);
33 virtual TObject* clone(const char* newname) const = 0 ;
34 virtual ~RooResolutionModel();
35
37 const RooDataSet*, const RooArgSet*,
38 Bool_t) const { return 0; }
39
40 Double_t getValV(const RooArgSet* nset=0) const ;
42 RooRealVar& convVar() const ;
43 const RooRealVar& basisConvVar() const ;
44
45 inline Bool_t isBasisSupported(const char* name) const { return basisCode(name)?kTRUE:kFALSE ; }
46 virtual Int_t basisCode(const char* name) const = 0 ;
47
48 virtual void normLeafServerList(RooArgSet& list) const ;
49 Double_t getNorm(const RooArgSet* nset=0) const ;
50
51 inline const RooFormulaVar& basis() const { return _basis?*_basis:*identity() ; }
53
54 virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
55
56 static RooFormulaVar* identity() ;
57
58 virtual void changeBasis(RooFormulaVar* basis) ;
59
60protected:
61
62 friend class RooConvGenContext ;
63 friend class RooAddModel ;
64 RooRealProxy x ; // Dependent/convolution variable
65
66 virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
67// Bool_t traceEvalHook(Double_t value) const ;
68
69
70 friend class RooAbsAnaConvPdf ;
71
72 Int_t _basisCode ; // Identifier code for selected basis function
73 RooFormulaVar* _basis ; // Basis function convolved with this resolution model
74 Bool_t _ownBasis ; // Flag indicating ownership of _basis
75
76 ClassDef(RooResolutionModel,1) // Abstract Resolution Model
77};
78
79#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
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:326
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition: TGX11.cxx:109
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 (of arbitrary type) an...
Definition: RooAbsArg.h:71
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
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
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
Definition: RooFormulaVar.h:29
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:35
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
virtual TObject * clone(const char *newname) const =0
virtual void changeBasis(RooFormulaVar *basis)
Change the basis function we convolute with.
Double_t getValV(const RooArgSet *nset=0) const
Modified version of RooAbsPdf::getValF().
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.
virtual RooAbsGenContext * modelGenContext(const RooAbsAnaConvPdf &, const RooArgSet &, const RooDataSet *, const RooArgSet *, Bool_t) const
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const
Print info about this object to the specified stream.
static RooFormulaVar * identity()
Return identity formula pointer.
const RooRealVar & basisConvVar() const
Return the convolution variable of the selection basis function.
virtual Bool_t redirectServersHook(const RooAbsCollection &newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive)
Forward redirectServers call to our basis function, which is not connected to either resolution model...
virtual ~RooResolutionModel()
Destructor.
RooRealVar & convVar() const
Return the convolution variable of the resolution model.
Bool_t isBasisSupported(const char *name) const
virtual void normLeafServerList(RooArgSet &list) const
Floating point error checking and tracing for given float value.
Double_t getNorm(const RooArgSet *nset=0) const
Return the integral of this PDF over all elements of 'nset'.
RooFormulaVar * _basis
const RooFormulaVar & basis() const
Mother of all ROOT objects.
Definition: TObject.h:37
Basic string class.
Definition: TString.h:131