ROOT  6.06/09
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 
24 class RooAbsAnaConvPdf;
25 
26 class RooResolutionModel : public RooAbsPdf {
27 public:
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() ; }
52  Bool_t isConvolved() { return _basis ? kTRUE : kFALSE ; }
53 
54  virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
55 
56  static void cleanup() ;
57 
58  static RooFormulaVar* identity() ;
59 
60  virtual void changeBasis(RooFormulaVar* basis) ;
61 
62 protected:
63 
64  static RooFormulaVar* _identity ; // Identity basis function pointe
65 
66 
67  friend class RooConvGenContext ;
68  friend class RooAddModel ;
69  RooRealProxy x ; // Dependent/convolution variable
70 
71  virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
73 
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_t _ownBasis ; // Flag indicating ownership of _basis
80 
81  ClassDef(RooResolutionModel,1) // Abstract Resolution Model
82 };
83 
84 #endif
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.
virtual ~RooResolutionModel()
Destructor.
const RooRealVar & basisConvVar() const
Return the convolution variable of the selection basis function.
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
Double_t getValV(const RooArgSet *nset=0) const
Modified version of RooAbsPdf::getValF().
Bool_t traceEvalHook(Double_t value) const
Floating point error checking and tracing for given float value.
#define ClassDef(name, id)
Definition: Rtypes.h:254
static void cleanup()
Cleanup hook for RooSentinel atexit handler.
Double_t getNorm(const RooArgSet *nset=0) const
Return the integral of this PDF over all elements of 'nset'.
RooFormulaVar * _basis
virtual void changeBasis(RooFormulaVar *basis)
Change the basis function we convolute with.
virtual void normLeafServerList(RooArgSet &list) const
Return the list of servers used by our normalization integral.
RooRealVar & convVar() const
Return the convolution variable of the resolution model.
bool verbose
virtual RooResolutionModel * convolution(RooFormulaVar *basis, RooAbsArg *owner) const
Instantiate a clone of this resolution model representing a convolution with given basis function...
static RooFormulaVar * identity()
Return identity formula pointer.
static void indent(ostringstream &buf, int indent_level)
double Double_t
Definition: RtypesCore.h:55
const RooFormulaVar & basis() const
Bool_t isBasisSupported(const char *name) const
#define name(a, b)
Definition: linkTestLib0.cpp:5
Mother of all ROOT objects.
Definition: TObject.h:58
static RooFormulaVar * _identity
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
virtual TObject * clone(const char *newname) const =0
virtual RooAbsGenContext * modelGenContext(const RooAbsAnaConvPdf &, const RooArgSet &, const RooDataSet *, const RooArgSet *, Bool_t) const
virtual Int_t basisCode(const char *name) const =0
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:66
const Bool_t kTRUE
Definition: Rtypes.h:91
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...
float value
Definition: math.cpp:443