00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_ADDITION
00017 #define ROO_ADDITION
00018
00019 #include "RooAbsReal.h"
00020 #include "RooListProxy.h"
00021 #include "RooObjCacheManager.h"
00022
00023 class RooRealVar;
00024 class RooArgList ;
00025
00026 class RooAddition : public RooAbsReal {
00027 public:
00028
00029 RooAddition() ;
00030 RooAddition(const char *name, const char *title, const RooArgSet& sumSet, Bool_t takeOwnerShip=kFALSE) ;
00031 RooAddition(const char *name, const char *title, const RooArgList& sumSet1, const RooArgList& sumSet2, Bool_t takeOwnerShip=kFALSE) ;
00032 virtual ~RooAddition() ;
00033
00034 RooAddition(const RooAddition& other, const char* name = 0);
00035 virtual TObject* clone(const char* newname) const { return new RooAddition(*this, newname); }
00036
00037 virtual Double_t defaultErrorLevel() const ;
00038
00039 void printMetaArgs(ostream& os) const ;
00040
00041 const RooArgList& list1() const { return _set ; }
00042 const RooArgList& list() const { return _set ; }
00043
00044 virtual Bool_t forceAnalyticalInt(const RooAbsArg& ) const {
00045
00046 return kTRUE ;
00047 }
00048 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& numVars, const char* rangeName=0) const;
00049 Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
00050
00051
00052
00053
00054
00055 protected:
00056
00057 RooArgList _ownedList ;
00058 RooListProxy _set ;
00059 mutable TIterator* _setIter ;
00060
00061 class CacheElem : public RooAbsCacheElement {
00062 public:
00063 virtual ~CacheElem();
00064
00065 RooArgList _I ;
00066 virtual RooArgList containedArgs(Action) ;
00067 };
00068 mutable RooObjCacheManager _cacheMgr ;
00069
00070 Double_t evaluate() const;
00071
00072 ClassDef(RooAddition,2)
00073 };
00074
00075 #endif