31 #ifndef G4NeutronHPVector_h
32 #define G4NeutronHPVector_h 1
240 Init(aDataFile, total, ux, uy);
270 G4int s_tmp = 0, n=0, m_tmp=0;
287 if ( !( xa == 0 ) && std::abs(std::abs(xp-xa)/xa)<0.001 ) p++;
350 if(std::abs((y2-y1)/y2)<0.0000001)
355 result =
theLin.
Lin(rand, x1, x2, y1, y2);
385 if (std::abs(x1-x0) > std::abs(x1*0.0000001) )
399 if(!_finite(integ)){integ=0;}
400 #elif defined __IBMCPP__
401 if(isinf(integ)||isnan(integ)){integ=0;}
403 if(std::isinf(integ)||std::isnan(integ)){integ=0;}
437 sum+= 0.5*(y2+y1)*(x2-x1);
442 G4double b = (y2-y1)/(std::log(x2)-std::log(x1));
443 sum+= (a-b)*(x2-x1) + b*(x2*std::log(x2)-x1*std::log(x1));
448 G4double b = (std::log(y2)-std::log(y1))/(x2-x1);
449 sum += (std::exp(a)/b)*(std::exp(b*x2)-std::exp(b*x1));
458 G4double b = (std::log(y2)-std::log(y1))/(std::log(x2)-std::log(x1));
459 sum += (std::exp(a)/(b+1))*(std::pow(x2,b+1)-std::pow(x1,b+1));
463 throw G4HadronicException(__FILE__, __LINE__,
"Unknown interpolation scheme in G4NeutronHPVector::Integrate");
516 result = weighted / running;
G4double the50percentBorderCash
void SetEnergy(G4int i, G4double e)
G4double GetEnergy(G4int i) const
void SetLabel(G4double aLabel)
G4double Get50percentBorder()
G4double GetY(G4double x)
G4int GetVectorLength() const
G4double the15percentBorderCash
void SetInterpolationManager(const G4InterpolationManager &aManager)
void SetPoint(G4int i, const G4NeutronHPDataPoint &it)
void Init(G4int aScheme, G4int aRange)
void ThinOut(G4double precision)
void SetData(G4double e, G4double x)
void Merge(G4NeutronHPVector *active, G4NeutronHPVector *passive)
void Init(std::istream &aDataFile, G4int total, G4double ux=1., G4double uy=1.)
std::vector< G4double > theBlocked
void Times(G4double factor)
G4double GetX(G4int i) const
void SetData(G4int i, G4double x, G4double y)
G4NeutronHPInterpolator theInt
G4double Interpolate(G4InterpolationScheme aScheme, G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
void InitInterpolation(std::istream &aDataFile)
G4bool IsBlocked(G4double aX)
void SetVerbose(G4int ff)
G4InterpolationScheme GetScheme(G4int anIndex)
void SetData(G4int index, G4double x, G4double y)
void AppendScheme(G4int aPoint, const G4InterpolationScheme &aScheme)
void SetY(G4int i, G4double x)
G4double GetWeightedBinIntegral(const G4InterpolationScheme &aScheme, const G4double x1, const G4double x2, const G4double y1, const G4double y2)
G4double Get15percentBorder()
const G4InterpolationManager & GetInterpolationManager() const
G4InterpolationScheme GetScheme(G4int index) const
G4double GetBinIntegral(const G4InterpolationScheme &aScheme, const G4double x1, const G4double x2, const G4double y1, const G4double y2)
G4double GetXsec(G4double e, G4int min)
friend G4NeutronHPVector & operator+(G4NeutronHPVector &left, G4NeutronHPVector &right)
void SetX(G4int i, G4double e)
G4InterpolationManager theManager
std::vector< G4double > GetBlocked()
void SetXsec(G4int i, G4double x)
void SetScheme(G4int aPoint, const G4InterpolationScheme &aScheme)
G4double GetY(G4int i) const
std::vector< G4double > GetBuffered()
G4double total(Particle const *const p1, Particle const *const p2)
G4double GetXsec(G4int i)
const G4NeutronHPDataPoint & GetPoint(G4int i) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
void IntegrateAndNormalise()
G4NeutronHPInterpolator theLin
G4double Lin(G4double x, G4double x1, G4double x2, G4double y1, G4double y2)
std::vector< G4double > theBuffered
G4NeutronHPVector & operator=(const G4NeutronHPVector &right)
void Init(std::istream &aDataFile, G4double ux=1., G4double uy=1.)
G4NeutronHPDataPoint * theData
void SetInterpolationManager(G4InterpolationManager &aMan)