13 mFunc =
new TFormula();
71 if (prevBin>=0 && nextBin>=0)
79 cor = quadraticInterpolation(fX[
i],xMiddle,xValue);
99 std::stringstream sserr;
100 sserr<<
"wrong bin: "<<fBin<<
": only "<<
mParameters->
size()<<
" available!";
101 handleError(
"SimpleJetCorrector",sserr.str());
103 unsigned N = fY.size();
106 std::stringstream sserr;
107 sserr<<
"two many variables: "<<N<<
" maximum is 4";
108 handleError(
"SimpleJetCorrector",sserr.str());
112 for(
unsigned int i=2*N;
i<par.size();
i++)
113 mFunc->SetParameter(
i-2*N,par[
i]);
115 std::vector<float>
tmp;
116 for(
unsigned i=0;i<
N;i++)
118 x[
i] = (fY[
i] < par[2*
i]) ? par[2*i] : (fY[i] > par[2*i+1]) ? par[2*i+1] : fY[
i];
124 result =
mFunc->Eval(x[0],x[1],x[2],x[3]);
134 for(
unsigned i=0;
i<vv.size();
i++)
140 if (result >= vv.size())
141 handleError(
"SimpleJetCorrector",
"Response inversion is required but JetPt is not specified as parameter");
150 unsigned N = fX.size();
151 float precision = 0.0001;
154 float x[4] = {0.0,0.0,0.0,0.0};
155 for(
unsigned i=0;
i<
N;
i++)
158 while(e > precision && nLoop < nMax)
160 rsp =
mFunc->Eval(x[0],x[1],x[2],x[3]);
float correctionBin(unsigned fBin, const std::vector< float > &fY) const
std::vector< float > parameters() const
const Definitions & definitions() const
float invert(std::vector< float > fX) const
const Record & record(unsigned fBin) const
std::vector< std::string > parVar() const
int binIndex(const std::vector< float > &fX) const
float xMiddle(unsigned fVar) const
JetCorrectorParameters * mParameters
std::vector< std::vector< double > > tmp
float correction(const std::vector< float > &fX, const std::vector< float > &fY) const
int neighbourBin(unsigned fIndex, unsigned fVar, bool fNext) const