Logo ROOT   master
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 
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, 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  const RooAbsRealLValue& convVar() const {return *x;}
44  /// Return the convolution variable of the resolution model.
45  RooAbsRealLValue& convVar() {return *x;}
46  const RooRealVar& basisConvVar() const ;
47 
48  inline Bool_t isBasisSupported(const char* name) const { return basisCode(name)?kTRUE:kFALSE ; }
49  virtual Int_t basisCode(const char* name) const = 0 ;
50 
51  virtual void normLeafServerList(RooArgSet& list) const ;
52  Double_t getNorm(const RooArgSet* nset=0) const ;
53 
54  inline const RooFormulaVar& basis() const { return _basis?*_basis:*identity() ; }
55  Bool_t isConvolved() { return _basis ? kTRUE : kFALSE ; }
56 
57  virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
58 
59  static RooFormulaVar* identity() ;
60 
61  virtual void changeBasis(RooFormulaVar* basis) ;
62 
63 protected:
64 
65  friend class RooConvGenContext ;
66  friend class RooAddModel ;
67  RooTemplateProxy<RooAbsRealLValue> x; // Dependent/convolution variable
68 
69  virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
70 // Bool_t traceEvalHook(Double_t value) const ;
71 
72 
73  friend class RooAbsAnaConvPdf ;
74 
75  Int_t _basisCode ; // Identifier code for selected basis function
76  RooFormulaVar* _basis ; // Basis function convolved with this resolution model
77  Bool_t _ownBasis ; // Flag indicating ownership of _basis
78 
79  ClassDef(RooResolutionModel, 2) // Abstract Resolution Model
80 };
81 
82 #endif
RooAddModel is an efficient implementation of a sum of PDFs of the form or The first form is for ex...
Definition: RooAddModel.h:28
virtual ~RooResolutionModel()
Destructor.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
virtual RooAbsGenContext * modelGenContext(const RooAbsAnaConvPdf &, const RooArgSet &, const RooDataSet *, const RooArgSet *, Bool_t) const
const RooRealVar & basisConvVar() const
Return the convolution variable of the selection basis function.
Basic string class.
Definition: TString.h:131
virtual RooResolutionModel * convolution(RooFormulaVar *basis, RooAbsArg *owner) const
Instantiate a clone of this resolution model representing a convolution with given basis function...
Double_t getValV(const RooArgSet *nset=0) const
Modified version of RooAbsPdf::getValF().
const RooFormulaVar & basis() const
#define ClassDef(name, id)
Definition: Rtypes.h:322
Bool_t isBasisSupported(const char *name) const
RooConvGenContext is an efficient implementation of the generator context specific for RooAbsAnaConvP...
RooTemplateProxy< RooAbsRealLValue > x
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
const RooAbsRealLValue & convVar() const
Return the convolution variable of the resolution model.
RooFormulaVar * _basis
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:35
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.
RooAbsRealLValue & convVar()
Return the convolution variable of the resolution model.
virtual void changeBasis(RooFormulaVar *basis)
Change the basis function we convolute with.
static RooFormulaVar * identity()
Return identity formula pointer.
static void indent(ostringstream &buf, int indent_level)
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:33
Double_t getNorm(const RooArgSet *nset=0) const
Return the integral of this PDF over all elements of &#39;nset&#39;.
const Bool_t kFALSE
Definition: RtypesCore.h:90
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
Definition: RooFormulaVar.h:29
Mother of all ROOT objects.
Definition: TObject.h:37
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects...
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
RooAbsPdf, the base class of all PDFs
Definition: RooAbsPdf.h:40
RooAbsAnaConvPdf is the base class for PDFs that represent a physics model that can be analytically c...
virtual TObject * clone(const char *newname) const =0
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
virtual void normLeafServerList(RooArgSet &list) const
Floating point error checking and tracing for given float value.
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:73
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...
const Bool_t kTRUE
Definition: RtypesCore.h:89
char name[80]
Definition: TGX11.cxx:109