CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: 00003 //---------------------SphericalHarmonicFit------------------------------------------// 00004 // // 00005 // Class SphericalHarmonicFit. This is a fitting function consisting of a super // 00006 // position of N legendre polynomials. Cascading fractions and phases are // 00007 // the input parameters. Function is normalized to one (on [-1,1]) // 00008 // Joe Boudreau, Petar Maksimovic, January 2000 // 00009 // // 00010 //--------------------------------------------------------------------------// 00011 #ifndef SphericalHarmonicFit_h 00012 #define SphericalHarmonicFit_h 00013 #include "CLHEP/GenericFunctions/AbsFunction.hh" 00014 #include "CLHEP/GenericFunctions/Parameter.hh" 00015 namespace Genfun { 00016 00021 class SphericalHarmonicFit : public AbsFunction { 00022 00023 FUNCTION_OBJECT_DEF(SphericalHarmonicFit) 00024 00025 public: 00026 00027 // Constructor. Builds all the 00028 SphericalHarmonicFit(unsigned int LMAX); 00029 00030 // Copy constructor 00031 SphericalHarmonicFit(const SphericalHarmonicFit &right); 00032 00033 // Destructor 00034 virtual ~SphericalHarmonicFit(); 00035 00036 // Dimensionality=2. They are; cosTheta (not theta) and phi 00037 virtual unsigned int dimensionality() const {return 2;} 00038 00039 // Retreive function value 00040 virtual double operator ()(double argument) const; // Gives an error. 00041 virtual double operator ()(const Argument & a) const; // Must use this one 00042 00043 // Total number of parameters 00044 unsigned int numComponents() const; 00045 00046 // Max L ("angular momentum") 00047 unsigned int lMax() const; 00048 00049 // MINUIT-SAFE PARAMETERIZATION: Fractions vary on the range 0,1, 00050 // Phases need not be bounded: 00051 00052 // The fraction of amplitude sq which is L OR HIGHER: 00053 Parameter *getFractionLOrHigher(unsigned int L); 00054 const Parameter *getFractionLOrHigher(unsigned int L) const; 00055 00056 // The phase of coefficient L, M=0; 00057 Parameter *getPhaseLM0(unsigned int L); 00058 const Parameter *getPhaseLM0(unsigned int L) const; 00059 00060 // The fraction of amplitude sq which is L which is +- M OR HIGHER 00061 Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M); 00062 const Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M) const; 00063 00064 // The fraction of amplitude sq which is +- M, which is positive 00065 Parameter *getFractionMPositive(unsigned int L, unsigned int M); 00066 const Parameter *getFractionMPositive(unsigned int L, unsigned int M) const; 00067 00068 // The phase of the positive M coefficient 00069 Parameter *getPhaseMPlus(unsigned int L, unsigned int M); 00070 const Parameter *getPhaseMPlus(unsigned int L, unsigned int M) const; 00071 00072 // The phase of the negative M coefficient 00073 Parameter *getPhaseMMinus(unsigned int L, unsigned int M); 00074 const Parameter *getPhaseMMinus(unsigned int L, unsigned int M) const; 00075 00076 00077 00078 00079 00080 private: 00081 00082 // It is illegal to assign an adjustable constant 00083 const SphericalHarmonicFit & operator=(const SphericalHarmonicFit &right); 00084 00085 00086 class Clockwork; 00087 Clockwork *c; 00088 00089 }; 00090 } // namespace Genfun 00091 00092 00093 00094 #include "CLHEP/GenericFunctions/SphericalHarmonicFit.icc" 00095 #endif