CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: Gaussian.cc,v 1.8 2010/06/16 18:22:01 garren Exp $ 00003 #include "CLHEP/GenericFunctions/defs.h" 00004 #include "CLHEP/GenericFunctions/Gaussian.hh" 00005 #include "CLHEP/GenericFunctions/Variable.hh" 00006 #include <assert.h> 00007 #include <cmath> // for exp() 00008 00009 #if (defined __STRICT_ANSI__) || (defined _WIN32) 00010 #ifndef M_PI 00011 #define M_PI 3.14159265358979323846 00012 #endif // M_PI 00013 #endif // __STRICT_ANSI__ 00014 00015 namespace Genfun { 00016 FUNCTION_OBJECT_IMP(Gaussian) 00017 00018 Gaussian::Gaussian(): 00019 _mean("Mean", 0.0,-10,10), 00020 _sigma("Sigma",1.0,0, 10) 00021 {} 00022 00023 Gaussian::~Gaussian() { 00024 } 00025 00026 Gaussian::Gaussian(const Gaussian & right): 00027 AbsFunction(right), 00028 _mean(right._mean), 00029 _sigma(right._sigma) 00030 { 00031 } 00032 00033 double Gaussian::operator() (double x) const { 00034 double s = _sigma.getValue(); 00035 double x0 = _mean.getValue(); 00036 return (1.0/(sqrt(2*M_PI)*s))* 00037 exp(-(x-x0)*(x-x0)/(2.0*s*s)); 00038 } 00039 00040 Parameter & Gaussian::mean() { 00041 return _mean; 00042 } 00043 00044 Parameter & Gaussian::sigma() { 00045 return _sigma; 00046 } 00047 00048 const Parameter & Gaussian::mean() const { 00049 return _mean; 00050 } 00051 00052 const Parameter & Gaussian::sigma() const { 00053 return _sigma; 00054 } 00055 00056 00057 00058 Derivative Gaussian::partial(unsigned int index) const { 00059 assert(index==0); 00060 Variable x; 00061 const AbsFunction & fPrime = (*this)*(_mean-x)/_sigma/_sigma; 00062 return Derivative(&fPrime); 00063 } 00064 00065 } // namespace Genfun