CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: 00003 //---------------------SphericalHarmonicExpansion---------------------------// 00004 // // 00005 // Class LegendreExpansion This is an expansion in terms of a super // 00006 // position of N legendre polynomials. // 00007 //--------------------------------------------------------------------------// 00008 #ifndef LegendreExpansion_h 00009 #define LegendreExpansion_h 00010 #include "CLHEP/GenericFunctions/AbsFunction.hh" 00011 #include "CLHEP/GenericFunctions/Parameter.hh" 00012 #include "CLHEP/GenericFunctions/LegendreCoefficientSet.hh" 00013 namespace Genfun { 00014 00019 class LegendreExpansion : public AbsFunction { 00020 00021 FUNCTION_OBJECT_DEF(LegendreExpansion) 00022 00023 public: 00024 00025 enum Type {REAL,IMAG,MAG, MAGSQ}; 00026 00027 // Constructor. Builds all the 00028 LegendreExpansion(Type type, const LegendreCoefficientSet & coefficients); 00029 00030 // Copy constructor 00031 LegendreExpansion(const LegendreExpansion &right); 00032 00033 // Destructor 00034 virtual ~LegendreExpansion(); 00035 00036 // Retreive function value 00037 virtual double operator ()(double argument) const; 00038 virtual double operator ()(const Argument & a) const {return operator() (a[0]);} 00039 // Get the expansion coefficients: 00040 const LegendreCoefficientSet & coefficientSet() const; 00041 00042 private: 00043 00044 // It is illegal to assign an adjustable constant 00045 const LegendreExpansion & operator=(const LegendreExpansion &right); 00046 00047 00048 class Clockwork; 00049 Clockwork *c; 00050 00051 }; 00052 } // namespace Genfun 00053 00054 00055 00056 #include "CLHEP/GenericFunctions/LegendreExpansion.icc" 00057 #endif