35 ClassImp(RooStats::HistFactory::LinInterpVar);
37 using namespace RooStats;
38 using namespace HistFactory;
43 LinInterpVar::LinInterpVar()
45 _paramIter = _paramList.createIterator() ;
52 LinInterpVar::LinInterpVar(
const char* name,
const char* title,
53 const RooArgList& paramList,
54 double nominal, vector<double> low, vector<double> high) :
55 RooAbsReal(name, title),
56 _paramList(
"paramList",
"List of paramficients",this),
57 _nominal(nominal), _low(low), _high(high)
59 _paramIter = _paramList.createIterator() ;
62 TIterator* paramIter = paramList.createIterator() ;
64 while((param = (RooAbsArg*)paramIter->Next())) {
65 if (!dynamic_cast<RooAbsReal*>(param)) {
66 coutE(InputArguments) <<
"LinInterpVar::ctor(" << GetName() <<
") ERROR: paramficient " << param->GetName()
67 <<
" is not of type RooAbsReal" << endl ;
70 _paramList.add(*param) ;
79 LinInterpVar::LinInterpVar(
const char* name,
const char* title) :
80 RooAbsReal(name, title),
81 _paramList(
"paramList",
"List of coefficients",this),
84 _paramIter = _paramList.createIterator() ;
89 LinInterpVar::LinInterpVar(
const LinInterpVar& other,
const char* name) :
90 RooAbsReal(other, name),
91 _paramList(
"paramList",this,other._paramList),
92 _nominal(other._nominal), _low(other._low), _high(other._high)
96 _paramIter = _paramList.createIterator() ;
104 LinInterpVar::~LinInterpVar()
115 Double_t LinInterpVar::evaluate()
const
117 Double_t sum(_nominal) ;
118 _paramIter->Reset() ;
124 while((param=(RooAbsReal*)_paramIter->Next())) {
127 if(param->getVal()>0)
128 sum += param->getVal()*(_high.at(i) - _nominal );
130 sum += param->getVal()*(_nominal - _low.at(i));