30 #ifndef GRALE_MASSDISKLENS_H
32 #define GRALE_MASSDISKLENS_H
34 #include "graleconfig.h"
36 #include "constants.h"
41 class GRALE_IMPORTEXPORT MassDiskLensParams :
public GravitationalLensParams
44 MassDiskLensParams() { m_density = 0; m_angularRadius = 0; }
45 MassDiskLensParams(
double density,
double angularRadius) { m_density = density; m_angularRadius = angularRadius; }
46 MassDiskLensParams(
double Dd,
double Ds,
double Dds,
double angularRadius) { m_density = (SPEED_C*SPEED_C/(4.0*CONST_PI*CONST_G*Dd))*(Ds/Dds); m_angularRadius = angularRadius; }
47 double getDensity()
const {
return m_density; }
48 double getAngularRadius()
const {
return m_angularRadius; }
49 GravitationalLensParams *createCopy()
const;
50 bool write(serut::SerializationInterface &si)
const;
51 bool read(serut::SerializationInterface &si);
53 double m_density, m_angularRadius;
56 class GRALE_IMPORTEXPORT MassDiskLens :
public GravitationalLens
62 bool getAlphaVector(Vector2D<double> theta, Vector2D<double> *pAlpha)
const;
63 double getSurfaceMassDensity(Vector2D<double> theta)
const;
64 bool getAlphaVectorDerivatives(Vector2D<double> theta,
double &axx,
double &ayy,
double &axy)
const;
66 bool getProjectedPotential(
double D_s,
double D_ds, Vector2D<double> theta,
67 double *pPotentialValue)
const;
69 bool processParameters(
const GravitationalLensParams *pLensParams);
74 double m_angularRadius;
75 double m_angularRadiusSquared;
81 #endif // GRALE_MASSDISKLENS_H