40 ClassImp(RooConvIntegrandBinding);
46 RooConvIntegrandBinding::RooConvIntegrandBinding(
const RooAbsReal& func,
const RooAbsReal& model,
47 RooAbsReal& xprime, RooAbsReal& x,
48 const RooArgSet* nset, Bool_t clipInvalid) :
50 RooAbsFunc(2), _func(&func), _model(&model), _vars(0), _nset(nset), _clipInvalid(clipInvalid)
71 _vars=
new RooAbsRealLValue*[2];
78 _vars[0]=
dynamic_cast<RooAbsRealLValue*
>(&xprime);
80 oocoutE(&func,InputArguments) <<
"RooConvIntegrandBinding: cannot bind to ";
85 _vars[1]=
dynamic_cast<RooAbsRealLValue*
>(&x);
87 oocoutE(&func,InputArguments) <<
"RooConvIntegrandBinding: cannot bind to ";
100 RooConvIntegrandBinding::~RooConvIntegrandBinding()
102 if(0 != _vars)
delete[] _vars;
109 void RooConvIntegrandBinding::loadValues(
const Double_t xvector[], Bool_t clipInvalid)
const
112 for(UInt_t index= 0; index < _dimension; index++) {
113 if (clipInvalid && !_vars[index]->isValidReal(xvector[index])) {
114 _xvecValid = kFALSE ;
117 _vars[index]->setVal(xvector[index]);
126 Double_t RooConvIntegrandBinding::operator()(
const Double_t xvector[])
const
133 if (!_xvecValid)
return 0 ;
135 Double_t f_xp = _func->getVal(_nset) ;
138 const Double_t xvec_tmp[2] = { xvector[1]-xvector[0] , xvector[1] } ;
139 loadValues(xvec_tmp,kTRUE);
140 if (!_xvecValid)
return 0 ;
141 Double_t g_xmxp = _model->getVal(_nset) ;
156 Double_t RooConvIntegrandBinding::getMinLimit(UInt_t index)
const
159 return _vars[index]->getMin();
166 Double_t RooConvIntegrandBinding::getMaxLimit(UInt_t index)
const
169 return _vars[index]->getMax();