File indexing completed on 2025-09-17 09:15:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef ROO_ADDITION
0017 #define ROO_ADDITION
0018
0019 #include "RooAbsReal.h"
0020 #include "RooListProxy.h"
0021 #include "RooObjCacheManager.h"
0022 #include <list>
0023
0024 class RooRealVar;
0025 class RooArgList ;
0026
0027 class RooAddition : public RooAbsReal {
0028 public:
0029
0030 RooAddition() : _cacheMgr(this,10) {}
0031 RooAddition(const char *name, const char *title, const RooArgList& sumSet);
0032 RooAddition(const char *name, const char *title, const RooArgList& sumSet1, const RooArgList& sumSet2);
0033
0034 RooAddition(const RooAddition& other, const char* name = nullptr);
0035 TObject* clone(const char* newname=nullptr) const override { return new RooAddition(*this, newname); }
0036
0037 double defaultErrorLevel() const override ;
0038
0039 void printMetaArgs(std::ostream& os) const override ;
0040
0041 const RooArgList& list1() const { return _set ; }
0042 const RooArgList& list() const { return _set ; }
0043
0044 bool forceAnalyticalInt(const RooAbsArg& ) const override {
0045
0046 return true ;
0047 }
0048 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& numVars, const char* rangeName=nullptr) const override;
0049 double analyticalIntegral(Int_t code, const char* rangeName=nullptr) const override ;
0050
0051 bool setData(RooAbsData& data, bool cloneData=true) override ;
0052
0053 std::list<double>* binBoundaries(RooAbsRealLValue& , double , double ) const override ;
0054 std::list<double>* plotSamplingHint(RooAbsRealLValue& , double , double ) const override ;
0055 bool isBinnedDistribution(const RooArgSet& obs) const override ;
0056
0057 void doEval(RooFit::EvalContext &) const override;
0058
0059 protected:
0060
0061 RooArgList _ownedList ;
0062 RooListProxy _set ;
0063
0064 class CacheElem : public RooAbsCacheElement {
0065 public:
0066
0067 RooArgList _I ;
0068 RooArgList containedArgs(Action) override { return _I; }
0069 };
0070 mutable RooObjCacheManager _cacheMgr ;
0071
0072 double evaluate() const override;
0073
0074 ClassDefOverride(RooAddition,3)
0075 };
0076
0077 #endif