30 #ifndef GRALE_PROJECTEDIMAGESINTERFACE_H
32 #define GRALE_PROJECTEDIMAGESINTERFACE_H
34 #include "graleconfig.h"
36 #include "constants.h"
44 class ImagesDataExtended;
88 int getNumberOfImagePoints(
int sourceNumber,
int imageNumber)
const {
return m_numPoints[sourceNumber][imageNumber]; }
102 const float *
getOriginalIntensities(
int sourceNumber,
int imageNumber)
const {
return &(m_originalIntensities[sourceNumber][m_offsets[sourceNumber][imageNumber]]); }
108 const float *
getOriginalShearComponent1s(
int sourceNumber,
int imageNumber)
const {
return &(m_originalShearComponent1s[sourceNumber][m_offsets[sourceNumber][imageNumber]]); }
114 const float *
getOriginalShearComponent2s(
int sourceNumber,
int imageNumber)
const {
return &(m_originalShearComponent2s[sourceNumber][m_offsets[sourceNumber][imageNumber]]); }
122 void getOriginalTimeDelay(
int sourceNumber,
int index,
int *pImg,
int *pPoint,
float *pDelay)
const { *pImg = m_originalTimeDelayInfo[sourceNumber][index].getImageIndex(); *pPoint = m_originalTimeDelayInfo[sourceNumber][index].getPointIndex(); *pDelay = m_originalTimeDelayInfo[sourceNumber][index].getTimeDelay(); }
128 bool setDistanceFractions(
const std::vector<float> &fractions);
131 virtual double getAngularScale()
const = 0;
137 virtual const Vector2D<float> *getBetas(
int sourcenum,
int imagenum)
const = 0;
143 virtual const Vector2D<float> *getThetas(
int sourcenum,
int imagenum)
const = 0;
146 virtual const float *getDerivativesXX(
int sourceNumber)
const = 0;
149 virtual const float *getDerivativesXX(
int sourceNumber,
int imageNumber)
const = 0;
152 virtual const float *getDerivativesYY(
int sourceNumber)
const = 0;
155 virtual const float *getDerivativesYY(
int sourceNumber,
int imageNumber)
const = 0;
158 virtual const float *getDerivativesXY(
int sourceNumber)
const = 0;
161 virtual const float *getDerivativesXY(
int sourceNumber,
int imageNumber)
const = 0;
165 virtual const float *getInverseMagnifications(
int sourcenum)
const = 0;
169 virtual const float *getInverseMagnifications(
int sourcenum,
int imagenum)
const = 0;
172 virtual const float *getShearComponents1(
int sourceNumber)
const = 0;
175 virtual const float *getShearComponents1(
int sourceNumber,
int imageNumber)
const = 0;
178 virtual const float *getShearComponents2(
int sourceNumber)
const = 0;
181 virtual const float *getShearComponents2(
int sourceNumber,
int imageNumber)
const = 0;
184 virtual const float *getConvergence(
int sourceNumber)
const = 0;
187 virtual const float *getConvergence(
int sourceNumber,
int imageNumber)
const = 0;
191 virtual float getTimeDelay(
int sourceNumber,
int imageNumber,
int pointNumber,
Vector2D<float> beta)
const = 0;
193 void dump(
bool magnifyFlux)
const
195 int numSources = getNumberOfSources();
197 for (
int s = 0 ; s < numSources ; s++)
199 int numImages = getNumberOfImages(s);
201 for (
int i = 0 ; i < numImages ; i++)
203 int numPoints = getNumberOfImagePoints(s, i);
205 for (
int p = 0 ; p < numPoints ; p++)
209 double intens = getOriginalIntensities(s, i)[p];
212 intens *= getInverseMagnifications(s, i)[p];
214 beta2 *= getAngularScale();
215 intens *= getIntensityScale();
217 printf(
"%10.10g %10.10g %10.10g\n",(
double)(beta2.getX()/ANGLE_ARCSEC),(
double)(beta2.getY()/ANGLE_ARCSEC),intens);
223 void storeOriginalData(
const std::vector<ImagesDataExtended *> &images,
224 bool storeOriginalIntensities,
bool storeOriginalTimeDelays,
bool storeOriginalShearInfo);
229 TimeDelayPoint(
int imageIndex,
int pointIndex,
float timeDelay)
231 m_imageIndex = imageIndex;
232 m_pointIndex = pointIndex;
233 m_timeDelay = timeDelay;
236 int getImageIndex()
const {
return m_imageIndex; }
237 int getPointIndex()
const {
return m_pointIndex; }
238 float getTimeDelay()
const {
return m_timeDelay; }
245 std::vector<std::vector<int> > m_offsets;
246 std::vector<std::vector<int> > m_numPoints;
247 std::vector<int> m_numTotalPoints;
249 double m_intensityScale;
250 std::vector<float> m_distanceFractions;
251 std::vector<bool> m_originalIntensityFlags;
252 std::vector<bool> m_originalShearInfoFlags;
253 std::vector<std::vector<float> > m_originalIntensities;
254 std::vector<std::vector<float> > m_originalShearComponent1s;
255 std::vector<std::vector<float> > m_originalShearComponent2s;
256 std::vector<std::vector<TimeDelayPoint> > m_originalTimeDelayInfo;
261 #endif // GRALE_PROJECTEDIMAGESINTERFACE_H