File indexing completed on 2025-01-18 09:54:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef SphericalHarmonicFit_h
0012 #define SphericalHarmonicFit_h
0013 #include "CLHEP/GenericFunctions/AbsFunction.hh"
0014 #include "CLHEP/GenericFunctions/Parameter.hh"
0015 #include "CLHEP/GenericFunctions/SphericalHarmonicCoefficientSet.hh"
0016 namespace Genfun {
0017
0018
0019
0020
0021
0022 class SphericalHarmonicFit : public AbsFunction {
0023
0024 FUNCTION_OBJECT_DEF(SphericalHarmonicFit)
0025
0026 public:
0027
0028
0029 SphericalHarmonicFit(unsigned int LMAX);
0030
0031
0032 SphericalHarmonicFit(const SphericalHarmonicFit &right);
0033
0034
0035 virtual ~SphericalHarmonicFit();
0036
0037
0038 virtual unsigned int dimensionality() const override {return 2;}
0039
0040
0041 virtual double operator ()(double argument) const override;
0042 virtual double operator ()(const Argument & a) const override;
0043
0044
0045 unsigned int numComponents() const;
0046
0047
0048 unsigned int lMax() const;
0049
0050
0051
0052
0053
0054 Parameter *getFractionLOrHigher(unsigned int L);
0055 const Parameter *getFractionLOrHigher(unsigned int L) const;
0056
0057
0058 Parameter *getPhaseLM0(unsigned int L);
0059 const Parameter *getPhaseLM0(unsigned int L) const;
0060
0061
0062 Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M);
0063 const Parameter *getFractionAbsMOrHigher(unsigned int L, unsigned int M) const;
0064
0065
0066 Parameter *getFractionMPositive(unsigned int L, unsigned int M);
0067 const Parameter *getFractionMPositive(unsigned int L, unsigned int M) const;
0068
0069
0070 Parameter *getPhaseMPlus(unsigned int L, unsigned int M);
0071 const Parameter *getPhaseMPlus(unsigned int L, unsigned int M) const;
0072
0073
0074 Parameter *getPhaseMMinus(unsigned int L, unsigned int M);
0075 const Parameter *getPhaseMMinus(unsigned int L, unsigned int M) const;
0076
0077
0078
0079 const SphericalHarmonicCoefficientSet & coefficientsA() const;
0080
0081
0082
0083 const SphericalHarmonicCoefficientSet & coefficientsASq() const;
0084
0085
0086 void recomputeCoefficients() const;
0087
0088 private:
0089
0090
0091 const SphericalHarmonicFit & operator=(const SphericalHarmonicFit &right);
0092
0093
0094 class Clockwork;
0095 Clockwork *c;
0096
0097 };
0098 }
0099
0100
0101
0102 #include "CLHEP/GenericFunctions/SphericalHarmonicFit.icc"
0103 #endif