46 ClassImp(RooRecursiveFraction);
53 RooRecursiveFraction::RooRecursiveFraction()
55 _listIter = _list.createIterator() ;
63 RooRecursiveFraction::RooRecursiveFraction(
const char* name,
const char* title,
const RooArgList& fracList) :
64 RooAbsReal(name, title),
65 _list(
"list",
"First set of components",this)
67 _listIter = _list.createIterator() ;
69 for (Int_t ifrac=fracList.getSize()-1 ; ifrac>=0 ; ifrac--) {
70 RooAbsArg* comp = fracList.at(ifrac) ;
71 if (!dynamic_cast<RooAbsReal*>(comp)) {
72 coutE(InputArguments) <<
"RooRecursiveFraction::ctor(" << GetName() <<
") ERROR: component " << comp->GetName()
73 <<
" is not of type RooAbsReal" << endl ;
74 RooErrorHandler::softAbort() ;
85 RooRecursiveFraction::RooRecursiveFraction(
const RooRecursiveFraction& other,
const char* name) :
86 RooAbsReal(other, name),
87 _list(
"list",this,other._list)
89 _listIter = _list.createIterator() ;
97 RooRecursiveFraction::~RooRecursiveFraction()
99 if (_listIter)
delete _listIter ;
107 Double_t RooRecursiveFraction::evaluate()
const
110 const RooArgSet* nset = _list.nset() ;
113 comp=(RooAbsReal*)_listIter->Next() ;
114 Double_t prod = comp->getVal(nset) ;
116 while((comp=(RooAbsReal*)_listIter->Next())) {
117 prod *= (1-comp->getVal(nset)) ;