30 #ifndef GRALE_POLYNOMIALMASSPROFILELENS_H
32 #define GRALE_POLYNOMIALMASSPROFILELENS_H
34 #include "graleconfig.h"
44 class GRALE_IMPORTEXPORT PolynomialPart
48 PolynomialPart(
double xOffset,
double yOffset,
double xScale,
double yScale,
double xEnd,
const std::vector<double> &coefficients);
49 PolynomialPart(
const PolynomialPart &polynomialPart);
51 double getXOffset()
const {
return m_xOffset; }
52 double getYOffset()
const {
return m_yOffset; }
53 double getXScale()
const {
return m_xScale; }
54 double getYScale()
const {
return m_yScale; }
55 double getEndPosition()
const {
return m_xEnd; }
56 const std::vector<double> &getCoefficients()
const {
return m_coefficients; }
57 const std::vector<double> &getOffsetCoefficients()
const {
return m_offsetCoefficients; }
59 PolynomialPart &operator=(
const PolynomialPart &p);
61 void calculateOffsetCoefficients();
68 std::vector<double> m_coefficients;
69 std::vector<double> m_offsetCoefficients;
72 class GRALE_IMPORTEXPORT PolynomialMassProfileLensParams :
public GravitationalLensParams
75 PolynomialMassProfileLensParams();
76 ~PolynomialMassProfileLensParams();
77 void addPolynomialPart(
const PolynomialPart &p);
78 const std::list<PolynomialPart> &getPolynomialParts()
const {
return m_polynomialParts; }
80 bool write(serut::SerializationInterface &si)
const;
81 bool read(serut::SerializationInterface &si);
82 GravitationalLensParams *createCopy()
const;
84 std::list<PolynomialPart> m_polynomialParts;
87 class GRALE_IMPORTEXPORT PolynomialZeroMassLensParams :
public PolynomialMassProfileLensParams
90 PolynomialZeroMassLensParams(
double D_d,
double densityScale,
double angularRadius,
double zeroPoint);
91 ~PolynomialZeroMassLensParams();
94 class GRALE_IMPORTEXPORT PolynomialTimeDelayLensParams :
public PolynomialMassProfileLensParams
97 PolynomialTimeDelayLensParams(
double theta1,
double theta2,
double timeDiff,
double zLens);
98 ~PolynomialTimeDelayLensParams();
134 double *pPotentialValue)
const;
137 double getMassInside(
double thetaLength)
const;
138 double getProfileSurfaceMassDensity(
double thetaLength)
const;
140 std::vector<PolynomialPart> m_polynomialParts;
141 std::vector<double> m_potentialOffsets;
143 double m_totalPotential;
144 double m_endPosition;
149 #endif // GRALE_POLYNOMIALMASSPROFILELENS_H