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 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 /// Return the convolution variable of the resolution model.
43 RooAbsRealLValue& convVar() const {return *x;}
44 const RooRealVar& basisConvVar() const ;
45
46 inline Bool_t isBasisSupported(const char* name) const { return basisCode(name)?kTRUE:kFALSE ; }
47 virtual Int_t basisCode(const char* name) const = 0 ;
48
49 virtual void normLeafServerList(RooArgSet& list) const ;
50 Double_t getNorm(const RooArgSet* nset=0) const ;
51
52 inline const RooFormulaVar& basis() const { return _basis?*_basis:*identity() ; }
54
55 virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
56
57 static RooFormulaVar* identity() ;
58
59 virtual void changeBasis(RooFormulaVar* basis) ;
60
61protected:
62
63 friend class RooConvGenContext ;
64 friend class RooAddModel ;
65 RooTemplateProxy<RooAbsRealLValue> x; // Dependent/convolution variable
66
67 virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
68// Bool_t traceEvalHook(Double_t value) const ;
69
70
71 friend class RooAbsAnaConvPdf ;
72
73 Int_t _basisCode ; // Identifier code for selected basis function
74 RooFormulaVar* _basis ; // Basis function convolved with this resolution model
75 Bool_t _ownBasis ; // Flag indicating ownership of _basis
76
77 ClassDef(RooResolutionModel, 2) // Abstract Resolution Model
78};
79
80#endif
const Bool_t kFALSE
Definition: RtypesCore.h:90
double Double_t
Definition: RtypesCore.h:57
const Bool_t kTRUE
Definition: RtypesCore.h:89
#define ClassDef(name, id)
Definition: Rtypes.h:322
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:73
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...
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:33
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.
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'.
RooAbsRealLValue & convVar() const
Return the convolution variable of the resolution model.
RooFormulaVar * _basis
const RooFormulaVar & basis() const
RooTemplateProxy< RooAbsRealLValue > x
Mother of all ROOT objects.
Definition: TObject.h:37
Basic string class.
Definition: TString.h:131