51G4AdjointInterpolator::G4AdjointInterpolator()
65 G4double res = y1+ (x-x1)*(y2-y1)/(x2-x1);
75 G4double B=std::log(y2/y1)/std::log(x2/x1);
98 if (InterPolMethod ==
"Log" ){
101 else if (InterPolMethod ==
"Lin" ){
104 else if (InterPolMethod ==
"Exp" ){
121 size_t ndim = x_vec.size();
123 size_t ind2 = ndim - 1;
135 if (x_vec[0] < x_vec[1] ) {
137 size_t midBin = (ind1 + ind2)/2;
138 if (x < x_vec[midBin])
143 }
while (ind2 - ind1 > 1);
147 size_t midBin = (ind1 + ind2)/2;
148 if (x < x_vec[midBin])
153 }
while (ind2 - ind1 > 1);
194 return Interpolation( x,x_vec[i],x_vec[i+1],y_vec[i],y_vec[i+1],InterPolMethod);
203 if (x>x0) ind=int((x-x0)/dx);
204 if (ind >= index_vec.size()-1) ind= index_vec.size()-2;
205 size_t ind1 = index_vec[ind];
206 size_t ind2 = index_vec[ind+1];
214 return Interpolation( x,x_vec[ind],x_vec[ind+1],y_vec[ind],y_vec[ind+1],
"Lin");
double B(double temperature)
double A(double temperature)
G4double Interpolation(G4double &x, G4double &x1, G4double &x2, G4double &y1, G4double &y2, G4String InterPolMethod="Log")
G4double LinearInterpolation(G4double &x, G4double &x1, G4double &x2, G4double &y1, G4double &y2)
G4double ExponentialInterpolation(G4double &x, G4double &x1, G4double &x2, G4double &y1, G4double &y2)
G4double Interpolate(G4double &x, std::vector< G4double > &x_vec, std::vector< G4double > &y_vec, G4String InterPolMethod="Log")
static G4AdjointInterpolator * GetInstance()
size_t FindPosition(G4double &x, std::vector< G4double > &x_vec, size_t ind_min=0, size_t ind_max=0)
size_t FindPositionForLogVector(G4double &x, std::vector< G4double > &x_vec)
static G4AdjointInterpolator * GetAdjointInterpolator()
G4double InterpolateWithIndexVector(G4double &x, std::vector< G4double > &x_vec, std::vector< G4double > &y_vec, std::vector< size_t > &index_vec, G4double x0, G4double dx)
G4double LogarithmicInterpolation(G4double &x, G4double &x1, G4double &x2, G4double &y1, G4double &y2)
G4double InterpolateForLogVector(G4double &x, std::vector< G4double > &x_vec, std::vector< G4double > &y_vec)