1 // -*- C++ -*- 2 // $Id: 3 //---------------------GammaDistribution------------------------------------// 4 // // 5 // Class Gamma, x^a * e(-x/b) / (b^(a+1) Gamma(Alpha+1)); // 6 // Joe Boudreau, Jan 2007 // 7 // // 8 //--------------------------------------------------------------------------// 9 #ifndef GammaDistribution_h 10 #define GammaDistribution_h 1 11 #include "CLHEP/GenericFunctions/AbsFunction.hh" 12 #include "CLHEP/GenericFunctions/Parameter.hh" 13 #include "CLHEP/GenericFunctions/LogGamma.hh" 14 #define _GAMMADISTRIBUTION_REVISED_ 1 15 namespace Genfun { 16 17 /** 18 * @author 19 * @ingroup genfun 20 */ 21 class GammaDistribution : public AbsFunction { 22 23 FUNCTION_OBJECT_DEF(GammaDistribution) 24 25 public: 26 27 // Constructor 28 GammaDistribution(); 29 30 // Copy constructor 31 GammaDistribution(const GammaDistribution &right); 32 33 // Destructor 34 virtual ~GammaDistribution(); 35 36 // Retreive function value 37 virtual double operator ()(double argument) const override; operator ()(const Argument & a) const38 virtual double operator ()(const Argument & a) const override {return operator() (a[0]);} 39 40 // Get the paramter alpha 41 Parameter & alpha(); 42 43 // Get the paramter alpha 44 Parameter & beta(); 45 46 private: 47 48 // It is illegal to assign an adjustable constant 49 const GammaDistribution & operator=(const GammaDistribution &right); 50 51 // Here are the two parameters alpha and beta: 52 53 Parameter _alpha; 54 Parameter _beta; 55 56 57 // This function has a LogGamma Function; 58 LogGamma _logGamma; 59 60 61 }; 62 } // namespace Genfun 63 #endif 64