00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_RESOLUTION_MODEL
00017 #define ROO_RESOLUTION_MODEL
00018
00019 #include "RooAbsPdf.h"
00020 #include "RooRealProxy.h"
00021 #include "RooRealVar.h"
00022 #include "RooFormulaVar.h"
00023
00024 class RooResolutionModel : public RooAbsPdf {
00025 public:
00026
00027
00028 inline RooResolutionModel() : _basis(0) { }
00029 RooResolutionModel(const char *name, const char *title, RooRealVar& x) ;
00030 RooResolutionModel(const RooResolutionModel& other, const char* name=0);
00031 virtual TObject* clone(const char* newname) const = 0 ;
00032 virtual ~RooResolutionModel();
00033
00034 Double_t getVal(const RooArgSet* nset=0) const ;
00035 virtual RooResolutionModel* convolution(RooFormulaVar* basis, RooAbsArg* owner) const ;
00036 RooRealVar& convVar() const ;
00037 const RooRealVar& basisConvVar() const ;
00038
00039 inline Bool_t isBasisSupported(const char* name) const { return basisCode(name)?kTRUE:kFALSE ; }
00040 virtual Int_t basisCode(const char* name) const = 0 ;
00041
00042 virtual void normLeafServerList(RooArgSet& list) const ;
00043 Double_t getNorm(const RooArgSet* nset=0) const ;
00044
00045 inline const RooFormulaVar& basis() const { return _basis?*_basis:*identity() ; }
00046 Bool_t isConvolved() { return _basis ? kTRUE : kFALSE ; }
00047
00048 virtual void printMultiline(ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const ;
00049
00050 static void cleanup() ;
00051
00052 static RooFormulaVar* identity() ;
00053
00054 protected:
00055
00056 static RooFormulaVar* _identity ;
00057
00058
00059 friend class RooConvGenContext ;
00060 friend class RooAddModel ;
00061 RooRealProxy x ;
00062
00063 virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
00064 virtual void changeBasis(RooFormulaVar* basis) ;
00065 Bool_t traceEvalHook(Double_t value) const ;
00066
00067
00068 friend class RooAbsAnaConvPdf ;
00069
00070 Int_t _basisCode ;
00071 RooFormulaVar* _basis ;
00072 Bool_t _ownBasis ;
00073
00074 ClassDef(RooResolutionModel,1)
00075 };
00076
00077 #endif