CLHEP 2.0.4.7 Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: Gaussian.cc,v 1.5.4.1.2.1 2009/11/10 20:43:12 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 _mean(right._mean), 00028 _sigma(right._sigma) 00029 { 00030 } 00031 00032 double Gaussian::operator() (double x) const { 00033 double s = _sigma.getValue(); 00034 double x0 = _mean.getValue(); 00035 return (1.0/(sqrt(2*M_PI)*s))* 00036 exp(-(x-x0)*(x-x0)/(2.0*s*s)); 00037 } 00038 00039 Parameter & Gaussian::mean() { 00040 return _mean; 00041 } 00042 00043 Parameter & Gaussian::sigma() { 00044 return _sigma; 00045 } 00046 00047 const Parameter & Gaussian::mean() const { 00048 return _mean; 00049 } 00050 00051 const Parameter & Gaussian::sigma() const { 00052 return _sigma; 00053 } 00054 00055 00056 00057 Derivative Gaussian::partial(unsigned int index) const { 00058 assert(index==0); 00059 Variable x; 00060 const AbsFunction & fPrime = (*this)*(_mean-x)/_sigma/_sigma; 00061 return Derivative(&fPrime); 00062 } 00063 00064 } // namespace Genfun