00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_REAL_PROXY
00017 #define ROO_REAL_PROXY
00018
00019 #include "RooAbsReal.h"
00020 #include "RooArgProxy.h"
00021 #include "RooAbsRealLValue.h"
00022
00023 class RooRealProxy : public RooArgProxy {
00024 public:
00025
00026
00027 RooRealProxy() {} ;
00028 RooRealProxy(const char* name, const char* desc, RooAbsArg* owner,
00029 Bool_t valueServer=kTRUE, Bool_t shapeServer=kFALSE, Bool_t proxyOwnsArg=kFALSE) ;
00030 RooRealProxy(const char* name, const char* desc, RooAbsArg* owner, RooAbsReal& ref,
00031 Bool_t valueServer=kTRUE, Bool_t shapeServer=kFALSE, Bool_t proxyOwnsArg=kFALSE) ;
00032 RooRealProxy(const char* name, RooAbsArg* owner, const RooRealProxy& other) ;
00033 virtual TObject* Clone(const char* newName=0) const { return new RooRealProxy(newName,_owner,*this); }
00034 virtual ~RooRealProxy();
00035
00036
00037 inline operator Double_t() const { return _isFund?((RooAbsReal*)_arg)->_value:((RooAbsReal*)_arg)->getVal(_nset) ; }
00038 inline const RooAbsReal& arg() const { return (RooAbsReal&)*_arg ; }
00039
00040
00041 virtual Bool_t setArg(RooAbsReal& newRef) ;
00042
00043 protected:
00044
00045 RooAbsRealLValue* lvptr() const ;
00046
00047 public:
00048
00049
00050 RooRealProxy& operator=(const Double_t& value) { lvptr()->setVal(value) ; return *this ; }
00051 Double_t min(const char* rname=0) const { return lvptr()->getMin(rname) ; }
00052 Double_t max(const char* rname=0) const { return lvptr()->getMax(rname) ; }
00053 Bool_t hasMin(const char* rname=0) const { return lvptr()->hasMin(rname) ; }
00054 Bool_t hasMax(const char* rname=0) const { return lvptr()->hasMax(rname) ; }
00055
00056
00057 ClassDef(RooRealProxy,1)
00058 };
00059
00060 #endif