33 #define INCLXX_IN_GEANT4_MODE 1
60 nodes.push_back(firstNode);
61 G4int skippedNodes = 0;
62 for(
unsigned i = 1; i < nNodes; i++) {
72 nodes.push_back(node);
89 for(
unsigned i = 0; i < x.size(); ++i)
97 for(
unsigned i = 0; i <
nodes.size()-1; i++) {
98 if((
nodes.at(i+1).getX() -
nodes.at(i).getX()) == 0.0)
99 nodes[i].setYPrime(0.0);
120 std::vector<InterpolationNode>::const_iterator iter =
121 std::lower_bound(
nodes.begin(),
nodes.end(), xNode);
123 if(iter==
nodes.begin())
124 return nodes.front().getY();
126 if(iter==
nodes.end())
127 return nodes.back().getY();
129 std::vector<InterpolationNode>::const_iterator previousIter = iter - 1;
130 const G4double dx = x - previousIter->getX();
131 return previousIter->getY() + previousIter->getYPrime()*dx;
136 for(std::vector<InterpolationNode>::const_iterator
n=
nodes.begin(), e=
nodes.end();
n!=e; ++
n)
137 message +=
n->print();
Simple interpolation table for the inverse of a IFunction1D functor.
InverseInterpolationTable(IFunction1D const &f, const unsigned int nNodes=30)
G4double operator()(const G4double x) const
Compute the value of the function.
void setFunctionDomain()
Set the function domain.
G4double xMin
Minimum value of the independent variable.
std::string print() const
std::vector< InterpolationNode > nodes
Interpolating nodes.
G4double xMax
Maximum value of the independent variable.
void initDerivatives()
Initialise the values of the node derivatives.
virtual G4double getXMinimum() const
Return the minimum allowed value of the independent variable.
virtual G4double getXMaximum() const
Return the maximum allowed value of the independent variable.