CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

GenericFunctions/SphericalHarmonicFit.hh
Go to the documentation of this file.
1 // -*- C++ -*-
2 // $Id:
3 //---------------------SphericalHarmonicFit------------------------------------------//
4 // //
5 // Class SphericalHarmonicFit. This is a fitting function consisting of a super //
6 // position of N legendre polynomials. Cascading fractions and phases are //
7 // the input parameters. Function is normalized to one (on [-1,1]) //
8 // Joe Boudreau, Petar Maksimovic, January 2000 //
9 // //
10 //--------------------------------------------------------------------------//
11 #ifndef SphericalHarmonicFit_h
12 #define SphericalHarmonicFit_h
16 namespace Genfun {
17 
22  class SphericalHarmonicFit : public AbsFunction {
23 
25 
26  public:
27 
28  // Constructor. Builds all the
29  SphericalHarmonicFit(unsigned int LMAX);
30 
31  // Copy constructor
33 
34  // Destructor
36 
37  // Dimensionality=2. They are; cosTheta (not theta) and phi
38  virtual unsigned int dimensionality() const {return 2;}
39 
40  // Retreive function value
41  virtual double operator ()(double argument) const; // Gives an error.
42  virtual double operator ()(const Argument & a) const; // Must use this one
43 
44  // Total number of parameters
45  unsigned int numComponents() const;
46 
47  // Max L ("angular momentum")
48  unsigned int lMax() const;
49 
50  // MINUIT-SAFE PARAMETERIZATION: Fractions vary on the range 0,1,
51  // Phases need not be bounded:
52 
53  // The fraction of amplitude sq which is L OR HIGHER:
54  Parameter *getFractionLOrHigher(unsigned int L);
55  const Parameter *getFractionLOrHigher(unsigned int L) const;
56 
57  // The phase of coefficient L, M=0;
58  Parameter *getPhaseLM0(unsigned int L);
59  const Parameter *getPhaseLM0(unsigned int L) const;
60 
61  // The fraction of amplitude sq which is L which is +- M OR HIGHER
62  Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M);
63  const Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M) const;
64 
65  // The fraction of amplitude sq which is +- M, which is positive
66  Parameter *getFractionMPositive(unsigned int L, unsigned int M);
67  const Parameter *getFractionMPositive(unsigned int L, unsigned int M) const;
68 
69  // The phase of the positive M coefficient
70  Parameter *getPhaseMPlus(unsigned int L, unsigned int M);
71  const Parameter *getPhaseMPlus(unsigned int L, unsigned int M) const;
72 
73  // The phase of the negative M coefficient
74  Parameter *getPhaseMMinus(unsigned int L, unsigned int M);
75  const Parameter *getPhaseMMinus(unsigned int L, unsigned int M) const;
76 
77  // Gets the coefficients the coefficients of the function which is
78  // Squared to obtain a probability distribution (amplitude)
80 
81  // Gets the coefficients the coefficients of the function which is
82  // Squared to obtain a probability distribution:
84 
85  // Recompute coefficients from the parameters:
86  void recomputeCoefficients() const;
87 
88  private:
89 
90  // It is illegal to assign an adjustable constant
91  const SphericalHarmonicFit & operator=(const SphericalHarmonicFit &right);
92 
93 
94  class Clockwork;
95  Clockwork *c;
96 
97  };
98 } // namespace Genfun
99 
100 
101 
102 #include "CLHEP/GenericFunctions/SphericalHarmonicFit.icc"
103 #endif
#define FUNCTION_OBJECT_DEF(classname)
const Parameter * getPhaseMMinus(unsigned int L, unsigned int M) const
Parameter * getPhaseMMinus(unsigned int L, unsigned int M)
const Parameter * getFractionLOrHigher(unsigned int L) const
Parameter * getFractionAbsMOrHigher(unsigned int L, unsigned int M)
Parameter * getPhaseMPlus(unsigned int L, unsigned int M)
Parameter * getFractionLOrHigher(unsigned int L)
unsigned int numComponents() const
Parameter * getFractionMPositive(unsigned int L, unsigned int M)
unsigned int lMax() const
SphericalHarmonicFit(unsigned int LMAX)
SphericalHarmonicFit(const SphericalHarmonicFit &right)
void recomputeCoefficients() const
const Parameter * getPhaseLM0(unsigned int L) const
const SphericalHarmonicCoefficientSet & coefficientsA() const
const SphericalHarmonicCoefficientSet & coefficientsASq() const
const Parameter * getFractionAbsMOrHigher(unsigned int L, unsigned int M) const
virtual double operator()(double argument) const
const Parameter * getPhaseMPlus(unsigned int L, unsigned int M) const
Parameter * getPhaseLM0(unsigned int L)
const Parameter * getFractionMPositive(unsigned int L, unsigned int M) const
@ a