00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef IncompleteGamma_h
00010 #define IncompleteGamma_h 1
00011 #include "CLHEP/GenericFunctions/AbsFunction.hh"
00012 #include "CLHEP/GenericFunctions/Parameter.hh"
00013 #include "CLHEP/GenericFunctions/LogGamma.hh"
00014 namespace Genfun {
00015
00020 class IncompleteGamma : public AbsFunction {
00021
00022 FUNCTION_OBJECT_DEF(IncompleteGamma)
00023
00024 public:
00025
00026
00027 IncompleteGamma();
00028
00029
00030 IncompleteGamma(const IncompleteGamma &right);
00031
00032
00033 virtual ~IncompleteGamma();
00034
00035
00036 virtual double operator ()(double argument) const;
00037 virtual double operator ()(const Argument & a) const {return operator() (a[0]);}
00038
00039
00040 Parameter & a();
00041
00042 private:
00043
00044
00045 const IncompleteGamma & operator=(const IncompleteGamma &right);
00046
00047
00048 Parameter _a;
00049
00050
00051 double _gamser(double a, double x, double logGamma) const;
00052
00053
00054 double _gammcf(double a, double x, double logGamma) const;
00055
00056
00057 LogGamma _logGamma;
00058
00059 static const int ITMAX;
00060 static const double EPS;
00061 static const double FPMIN;
00062
00063 };
00064 }
00065 #endif