CLHEP/GenericFunctions/IncompleteGamma.hh

// -*- C++ -*-
// $Id: IncompleteGamma.hh,v 1.2 2001/06/18 13:53:12 evc Exp $
//---------------------IncompleteGamma--------------------------------------//
//                                                                          //
// Class IncompleteGamma, the incomplete Gamma function                     //
// Joe Boudreau, October 2000                                               //
//                                                                          //
//--------------------------------------------------------------------------//
#ifndef IncompleteGamma_h
#define IncompleteGamma_h 1
#include "CLHEP/GenericFunctions/AbsFunction.hh"
#include "CLHEP/GenericFunctions/Parameter.hh"
#include "CLHEP/GenericFunctions/LogGamma.hh"
HEP_BEGIN_NAMESPACE(Genfun)

  class IncompleteGamma : public AbsFunction  {
    
    FUNCTION_OBJECT_DEF(IncompleteGamma)
      
      public:
    
    // Constructor
    IncompleteGamma();
    
    // Copy constructor
    IncompleteGamma(const IncompleteGamma &right);
    
    // Destructor
    virtual ~IncompleteGamma();
    
    // Retreive function value
    virtual double operator ()(double argument) const;
    virtual double operator ()(const Argument & a) const {return operator() (a[0]);}
    
    // Get the paramter a
    Parameter & a(); 
    
  private:
    
    // It is illegal to assign an adjustable constant
    const IncompleteGamma & operator=(const IncompleteGamma &right);
    
    // Here is the parameter of the Incomplete Gamma Function
    Parameter _a;

    // Compute via series representation:
    double  _gamser(double a, double x, double logGamma) const;
    
    // Compute via continued fraction representation:
    double  _gammcf(double a, double x, double logGamma) const;

    // This function has a LogGamma Function;
    LogGamma _logGamma;

    static const unsigned int ITMAX;
    static const double       EPS;
    static const double       FPMIN;
    
  };
HEP_END_NAMESPACE(Genfun)
#endif

Generated by GNU enscript 1.6.1.