28 class RooAddModel :
public RooResolutionModel {
32 RooAddModel(
const char *name,
const char *title,
const RooArgList& pdfList,
const RooArgList& coefList, Bool_t ownPdfList=kFALSE) ;
33 RooAddModel(
const RooAddModel& other,
const char* name=0) ;
34 virtual TObject* clone(
const char* newname)
const {
return new RooAddModel(*
this,newname) ; }
35 virtual RooResolutionModel* convolution(RooFormulaVar* basis, RooAbsArg* owner)
const ;
36 virtual ~RooAddModel() ;
38 Double_t evaluate()
const ;
39 virtual Bool_t checkObservables(
const RooArgSet* nset)
const ;
41 virtual Int_t basisCode(
const char* name)
const ;
43 virtual Bool_t forceAnalyticalInt(
const RooAbsArg& )
const {
47 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& numVars,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
48 Double_t analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
49 virtual Bool_t selfNormalized()
const {
51 return _basisCode==0 ? kTRUE : kFALSE ;
54 virtual ExtendMode extendMode()
const {
56 return (_haveLastCoef || _allExtendable) ? MustBeExtended : CanNotBeExtended;
58 virtual Double_t expectedEvents(
const RooArgSet* nset)
const ;
59 virtual Double_t expectedEvents(
const RooArgSet& nset)
const {
62 return expectedEvents(&nset) ;
65 const RooArgList& pdfList()
const {
69 const RooArgList& coefList()
const {
74 Bool_t isDirectGenSafe(
const RooAbsArg& arg)
const ;
76 Int_t getGenerator(
const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE)
const;
77 void generateEvent(Int_t code);
80 void fixCoefNormalization(
const RooArgSet& refCoefNorm) ;
81 void fixCoefRange(
const char* rangeName) ;
82 virtual void resetErrorCounters(Int_t resetValue=10) ;
84 void printMetaArgs(std::ostream& os)
const ;
88 friend class RooAddGenContext ;
89 virtual RooAbsGenContext* genContext(
const RooArgSet &vars,
const RooDataSet *prototype=0,
90 const RooArgSet* auxProto=0, Bool_t verbose= kFALSE)
const ;
92 virtual void selectNormalization(
const RooArgSet* depSet=0, Bool_t force=kFALSE) ;
93 virtual void selectNormalizationRange(
const char* rangeName=0, Bool_t force=kFALSE) ;
95 mutable RooSetProxy _refCoefNorm ;
96 mutable TNamed* _refCoefRangeName ;
98 Bool_t _projectCoefs ;
99 mutable Double_t* _coefCache ;
102 class CacheElem :
public RooAbsCacheElement {
104 virtual ~CacheElem() {} ;
106 RooArgList _suppNormList ;
108 RooArgList _projList ;
109 RooArgList _suppProjList ;
110 RooArgList _refRangeProjList ;
111 RooArgList _rangeProjList ;
113 virtual RooArgList containedArgs(Action) ;
116 mutable RooObjCacheManager _projCacheMgr ;
117 CacheElem* getProjCache(
const RooArgSet* nset,
const RooArgSet* iset=0,
const char* rangeName=0)
const ;
118 void updateCoefficients(CacheElem& cache,
const RooArgSet* nset)
const ;
120 typedef RooArgList* pRooArgList ;
121 void getCompIntList(
const RooArgSet* nset,
const RooArgSet* iset, pRooArgList& compIntList, Int_t& code,
const char* isetRangeName)
const ;
122 class IntCacheElem :
public RooAbsCacheElement {
124 virtual ~IntCacheElem() {} ;
125 RooArgList _intList ;
126 virtual RooArgList containedArgs(Action) ;
129 mutable RooObjCacheManager _intCacheMgr ;
131 mutable RooAICRegistry _codeReg ;
133 RooListProxy _pdfList ;
134 RooListProxy _coefList ;
135 mutable RooArgList* _snormList ;
136 TIterator* _pdfIter ;
137 TIterator* _coefIter ;
139 Bool_t _haveLastCoef ;
140 Bool_t _allExtendable ;
142 mutable Int_t _coefErrCount ;
144 mutable RooArgSet _ownedComps ;
148 ClassDef(RooAddModel,1)