LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | List of all members
lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3 Struct Reference

Public Member Functions

 ESImpl3 (const BVec &b0, int order, bool isFixedCen, bool isFixedGamma, bool isFixedMu)
 
void calculateF (const DVector &x, DVector &f) const
 
void calculateJ (const DVector &x, const DVector &f, DMatrix &J) const
 
void doF3 (const DVector &x, DVector &f) const
 
void doJ3 (const DVector &x, const DVector &f, DMatrix &J) const
 
void doF2 (const DVector &x, DVector &f) const
 
void doJ2 (const DVector &x, const DVector &f, DMatrix &J) const
 
void doF1 (const DVector &x, DVector &f) const
 
void doJ1 (const DVector &x, const DVector &f, DMatrix &J) const
 

Public Attributes

int b0order
 
int bxorder
 
int bxorderp2
 
int b0size
 
int bxsize
 
int bxsizep2
 
BVec b0
 
DVector bx
 
DVector bxsave
 
DMatrix Daug
 
DMatrix Saug
 
DMatrix Taug
 
DMatrixView D
 
DMatrixView S
 
DMatrixView T
 
DVector dbdE
 
DVector Db0
 
DVector SDb0
 
DVector GDb0
 
DVector GthDb0
 
bool fixcen
 
bool fixgam
 
bool fixmu
 
bool numeric_j
 
bool zerob11
 
DMatrix U
 
DVector xinit
 
DVector xx
 
DVector ff
 
DMatrix jj
 
DVector x_short
 
DVector f_short
 
double fixuc
 
double fixvc
 
double fixg1
 
double fixg2
 
double fixm
 
DMatrix Gx
 
DMatrix Gy
 
DMatrix Gg1
 
DMatrix Gg2
 
DMatrix Gth
 
DMatrix Gmu
 

Detailed Description

Definition at line 45 of file EllipseSolver.cc.

Constructor & Destructor Documentation

lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::ESImpl3 ( const BVec b0,
int  order,
bool  isFixedCen,
bool  isFixedGamma,
bool  isFixedMu 
)

Definition at line 120 of file EllipseSolver.cc.

122  :
123  b0order(_b0.getOrder()), bxorder(_order), bxorderp2(bxorder+2),
124  b0size(_b0.size()), bxsize((bxorder+1)*(bxorder+2)/2),
125  bxsizep2((bxorderp2+1)*(bxorderp2+2)/2),
126  b0(_b0), bx(bxsize), bxsave(bxsize),
132  fixcen(_fixcen), fixgam(_fixgam), fixmu(_fixmu),
133  numeric_j(false), zerob11(true),
134  U((fixcen?0:2)+(fixgam?0:2)+(fixmu?0:1),5),
135  xinit(5), xx(5), ff(5), jj(5,5),
136  x_short(U.TMV_colsize()), f_short(U.TMV_colsize()),
140  {
141  //xdbg<<"EllipseSolver3: \n";
142  //xdbg<<"b0 = "<<b0.vec()<<std::endl;
143  //xdbg<<"b0.order, sigma = "<<b0.getOrder()<<" "<<b0.getSigma()<<std::endl;
144  //xdbg<<"order = "<<_order<<std::endl;
145  //xdbg<<"fixcen,gam,mu = "<<fixcen<<" "<<fixgam<<" "<<fixmu<<std::endl;
146  //xdbg<<"bxorder = "<<bxorder<<" "<<bxsize<<std::endl;
147  //xdbg<<"bxorderp2 = "<<bxorderp2<<" "<<bxsizep2<<std::endl;
148  U.setZero();
149  xinit.setZero();
150 
151  int k=0;
152  if (!fixcen) { U(k++,0) = 1.; U(k++,1) = 1.; }
153  if (!fixgam) { U(k++,2) = 1.; U(k++,3) = 1.; }
154  if (!fixmu) { U(k,4) = 1.; }
155 
156  Daug.setZero();
157  Saug.setZero();
158  Taug.setZero();
159 
166 
167  if (fixcen) {
168  T.TMV_diag().TMV_setAllTo(1.);
169  }
170  if (fixgam) {
171  S.TMV_diag().TMV_setAllTo(1.);
172  }
173  if (fixmu) {
174  D.TMV_diag().TMV_setAllTo(1.);
175  }
176  }
void setupGg1(DMatrix &Gg1, int order1, int order2)
Definition: PsiHelper.cc:449
void setupGth(DMatrix &Gth, int order1, int order2)
Definition: PsiHelper.cc:579
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
void setupGx(DMatrix &Gx, int order1, int order2)
Definition: PsiHelper.cc:370
void setupGy(DMatrix &Gy, int order1, int order2)
Definition: PsiHelper.cc:409
void setupGg2(DMatrix &Gg2, int order1, int order2)
Definition: PsiHelper.cc:500
void setupGmu(DMatrix &Gmu, int order1, int order2)
Definition: PsiHelper.cc:551

Member Function Documentation

void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::calculateF ( const DVector x,
DVector f 
) const

Definition at line 847 of file EllipseSolver.cc.

848  {
849  Assert(x.size() == U.TMV_colsize());
850  Assert(f.size() == U.TMV_colsize());
851 
852  Assert(xx.size() == U.TMV_rowsize());
854  if (fixcen) { xx[0] = fixuc; xx[1] = fixvc; }
855  if (fixgam) { xx[2] = fixg1; xx[3] = fixg2; }
856  if (fixmu) { xx[4] = fixm; }
857 
858  if (!fixgam || fixg1 != 0. || fixg2 != 0.)
859  doF3(xx,ff);
860  else if (!fixmu || fixm != 0.)
861  doF2(xx,ff);
862  else
863  doF1(xx,ff);
864 
865  f = U*ff;
866  }
void doF1(const DVector &x, DVector &f) const
void doF2(const DVector &x, DVector &f) const
int x
#define EIGEN_Transpose(m)
Definition: MyMatrix.h:211
#define Assert(x)
Definition: dbg.h:73
void doF3(const DVector &x, DVector &f) const
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::calculateJ ( const DVector x,
const DVector f,
DMatrix J 
) const

Definition at line 868 of file EllipseSolver.cc.

870  {
871  Assert(x.size() == U.TMV_colsize());
872  Assert(f.size() == U.TMV_colsize());
873  Assert(j.TMV_rowsize() == U.TMV_colsize());
874  Assert(j.TMV_colsize() == U.TMV_colsize());
875 
877  if (fixcen) { xx[0] = fixuc; xx[1] = fixvc; }
878  if (fixgam) { xx[2] = fixg1; xx[3] = fixg2; }
879  if (fixmu) { xx[4] = fixm; }
880 
881  if (!fixgam || fixg1 != 0. || fixg2 != 0.)
882  doJ3(xx,ff,jj);
883  else if (!fixmu || fixm != 0.)
884  doJ2(xx,ff,jj);
885  else
886  doJ1(xx,ff,jj);
887 
888  j = U*jj*U.transpose();
889  }
int x
void doJ1(const DVector &x, const DVector &f, DMatrix &J) const
void doJ2(const DVector &x, const DVector &f, DMatrix &J) const
#define EIGEN_Transpose(m)
Definition: MyMatrix.h:211
#define Assert(x)
Definition: dbg.h:73
void doJ3(const DVector &x, const DVector &f, DMatrix &J) const
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doF1 ( const DVector x,
DVector f 
) const

Definition at line 350 of file EllipseSolver.cc.

351  {
352  Assert(x.size() == 5);
353  Assert(f.size() == 5);
354 
355  //xdbg<<"Start doF3\n";
356  //xdbg<<"x = "<<x<<std::endl;
357 
358 #ifdef MAX_X_DEV
359  if ((x-xinit).TMV_normInf() > MAX_X_DEV) {
360  dbg<<"bad x-xinit: "<<(x-xinit)<<std::endl;
361  xdbg<<"x = "<<x<<std::endl;
362  f = 2.* bx.TMV_subVector(1,6) / bx(0);
363  return;
364  }
365 #endif
366 
367  std::complex<double> zc(x[0],x[1]);
368 
369  bxsave = bx;
370 
371  //xdbg<<"Start with b0 = "<<b0.vec()<<std::endl;
372  //xdbg<<"bx = "<<bx<<std::endl;
373  if (!fixcen) {
374  //xdbg<<"calc Z:\n";
376  //xdbg<<"after calc Z\n";
377  bx = TMV_colRange(T,0,b0size) * b0.vec();
378  //xdbg<<"zc = "<<zc<<" bx => "<<bx<<std::endl;
379  } else if (fixuc != 0. || fixvc != 0.) {
380  bx = TMV_colRange(T,0,b0size) * b0.vec();
381  }
382 
383  if (bx(0) <= 0.) {
384  dbg<<"bad bx(0): "<<bx(0)<<std::endl;
385  xdbg<<"x = "<<x<<std::endl;
386  xdbg<<"bx = "<<x<<std::endl;
387  f = 2.* bxsave.TMV_subVector(1,6) / bxsave(0);
388  bx = bxsave;
389  return;
390  }
391 
392  f = bx.TMV_subVector(1,6) / bx(0);
393 
394  if (!zerob11) f(4) = 0.;
395  }
#define MAX_X_DEV
void calculateZTransform(std::complex< double > z, int order1, int order2, DMatrix &T)
Definition: BVec.cc:84
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
int x
#define xdbg
Definition: dbg.h:70
#define dbg
Definition: dbg.h:69
#define Assert(x)
Definition: dbg.h:73
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doF2 ( const DVector x,
DVector f 
) const

Definition at line 278 of file EllipseSolver.cc.

279  {
280  Assert(x.size() == 5);
281  Assert(f.size() == 5);
282 
283  //xdbg<<"Start doF3\n";
284  //xdbg<<"x = "<<x<<std::endl;
285 
286 #ifdef MAX_X_DEV
287  if ((x-xinit).TMV_normInf() > MAX_X_DEV) {
288  dbg<<"bad x-xinit: "<<(x-xinit)<<std::endl;
289  xdbg<<"x = "<<x<<std::endl;
290  f = 2.* bx.TMV_subVector(1,6) / bx(0);
291  return;
292  }
293 #endif
294 
295  std::complex<double> zc(x[0],x[1]);
296  double mu = x[4];
297 
298  bxsave = bx;
299  bool bxset = false;
300 
301  //xdbg<<"Start with b0 = "<<b0.vec()<<std::endl;
302  //xdbg<<"bx = "<<bx<<std::endl;
303  if (!fixmu) {
304  //xdbg<<"calc Mu:\n";
306  bx = TMV_colRange(D,0,b0size) * b0.vec();
307  bxset = true;
308  //xdbg<<"mu = "<<mu<<" bx => "<<bx<<std::endl;
309  } else if (fixm != 0.) {
310  bx = TMV_colRange(D,0,b0size) * b0.vec();
311  bxset = true;
312  }
313  if (!fixcen) {
314  //xdbg<<"calc Z:\n";
316  //xdbg<<"after calc Z\n";
317  if (bxset) {
318  //xdbg<<"T = "<<T<<std::endl;
319  bx = T * bx;
320  } else {
321  //xdbg<<"T = "<<TMV_colRange(T,0,b0size)<<std::endl;
322  bx = TMV_colRange(T,0,b0size) * b0.vec();
323  bxset = true;
324  }
325  //xdbg<<"zc = "<<zc<<" bx => "<<bx<<std::endl;
326  } else if (fixuc != 0. || fixvc != 0.) {
327  if (bxset) {
328  bx = T * bx;
329  } else {
330  bx = TMV_colRange(T,0,b0size) * b0.vec();
331  bxset = true;
332  }
333  }
334 
335  if (bx(0) <= 0.) {
336  dbg<<"bad bx(0): "<<bx(0)<<std::endl;
337  xdbg<<"x = "<<x<<std::endl;
338  xdbg<<"bx = "<<x<<std::endl;
339  f = 2.* bxsave.TMV_subVector(1,6) / bxsave(0);
340  bx = bxsave;
341  return;
342  }
343 
344  //xdbg<<"Done: bx = "<<bx<<std::endl;
345  f = bx.TMV_subVector(1,6) / bx(0);
346 
347  if (!zerob11) f(4) = 0.;
348  }
#define MAX_X_DEV
void calculateZTransform(std::complex< double > z, int order1, int order2, DMatrix &T)
Definition: BVec.cc:84
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
int x
#define xdbg
Definition: dbg.h:70
#define dbg
Definition: dbg.h:69
#define Assert(x)
Definition: dbg.h:73
void calculateMuTransform(double mu, int order1, int order2, DMatrix &D)
Definition: BVec.cc:227
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doF3 ( const DVector x,
DVector f 
) const

Definition at line 178 of file EllipseSolver.cc.

179  {
180  Assert(x.size() == 5);
181  Assert(f.size() == 5);
182 
183  //xdbg<<"Start doF3\n";
184  //xdbg<<"x = "<<x<<std::endl;
185 
186 #ifdef MAX_X_DEV
187  if ((x-xinit).TMV_normInf() > MAX_X_DEV) {
188  dbg<<"bad x-xinit: "<<(x-xinit)<<std::endl;
189  xdbg<<"x = "<<x<<std::endl;
190  f = 2.* bx.TMV_subVector(1,6) / bx(0);
191  return;
192  }
193 #endif
194 
195  std::complex<double> zc(x[0],x[1]);
196  std::complex<double> g(x[2],x[3]);
197  double mu = x[4];
198 
199  if (norm(g) > 0.99) {
200  dbg<<"bad gsq = "<<norm(g)<<std::endl;
201  xdbg<<"x = "<<x<<std::endl;
202  f = 2.* bx.TMV_subVector(1,6) / bx(0);
203  return;
204  }
205 
206  bxsave = bx;
207  bool bxset = false;
208 
209  //xdbg<<"Start with b0 = "<<b0.vec()<<std::endl;
210  //xdbg<<"bx = "<<bx<<std::endl;
211  //TODO: Switch to doing calculate??Transform calls for only the portion
212  // of the matrix that I acutally use.
213  // This has implications for doJ though...
214  if (!fixmu) {
215  //xdbg<<"calc Mu:\n";
217  bx = TMV_colRange(D,0,b0size) * b0.vec();
218  bxset = true;
219  //xdbg<<"mu = "<<mu<<" bx => "<<bx<<std::endl;
220  } else if (fixm != 0.) {
221  bx = TMV_colRange(D,0,b0size) * b0.vec();
222  bxset = true;
223  }
224  if (!fixgam) {
225  //xdbg<<"calc G:\n";
227  if (bxset) {
228  bx = S * bx;
229  } else {
230  bx = TMV_colRange(S,0,b0size) * b0.vec();
231  bxset = true;
232  }
233  //xdbg<<"g = "<<g<<" bx => "<<bx<<std::endl;
234  } else if (fixg1 != 0. || fixg2 != 0.) {
235  if (bxset) {
236  bx = S * bx;
237  } else {
238  bx = TMV_colRange(S,0,b0size) * b0.vec();
239  bxset = true;
240  }
241  }
242  if (!fixcen) {
243  //xdbg<<"calc Z:\n";
245  //xdbg<<"after calc Z\n";
246  if (bxset) {
247  //xdbg<<"T = "<<T<<std::endl;
248  bx = T * bx;
249  } else {
250  //xdbg<<"T = "<<TMV_colRange(T,0,b0size)<<std::endl;
251  bx = TMV_colRange(T,0,b0size) * b0.vec();
252  bxset = true;
253  }
254  //xdbg<<"zc = "<<zc<<" bx => "<<bx<<std::endl;
255  } else if (fixuc != 0. || fixvc != 0.) {
256  if (bxset) {
257  bx = T * bx;
258  } else {
259  bx = TMV_colRange(T,0,b0size) * b0.vec();
260  bxset = true;
261  }
262  }
263 
264  if (bx(0) <= 0.) {
265  dbg<<"bad bx(0): "<<bx(0)<<std::endl;
266  xdbg<<"x = "<<x<<std::endl;
267  xdbg<<"bx = "<<bx<<std::endl;
268  f = 2.* bxsave.TMV_subVector(1,6) / bxsave(0);
269  bx = bxsave;
270  return;
271  }
272 
273  f = bx.TMV_subVector(1,6) / bx(0);
274 
275  if (!zerob11) f(4) = 0.;
276  }
#define MAX_X_DEV
T norm(const T &x)
Definition: Integrate.h:191
void calculateGTransform(std::complex< double > g, int order1, int order2, DMatrix &S)
Definition: BVec.cc:468
void calculateZTransform(std::complex< double > z, int order1, int order2, DMatrix &T)
Definition: BVec.cc:84
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
int x
#define xdbg
Definition: dbg.h:70
#define dbg
Definition: dbg.h:69
#define Assert(x)
Definition: dbg.h:73
void calculateMuTransform(double mu, int order1, int order2, DMatrix &D)
Definition: BVec.cc:227
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doJ1 ( const DVector x,
const DVector f,
DMatrix J 
) const

Definition at line 815 of file EllipseSolver.cc.

817  {
818  //xdbg<<"Start doJ1\n";
819  //xdbg<<"x = "<<x<<std::endl;
820  //xdbg<<"f = "<<f<<std::endl;
821 
822  Assert(x.size() == 5);
823  Assert(J.TMV_rowsize() == 5);
824  Assert(J.TMV_colsize() == 5);
825 
826  std::complex<double> zc(x[0],x[1]);
827 
828  J.setZero();
829 
831  GDb0 = TMV_colRange(Gx,0,b0size) * b0.vec();
832  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
833  //dbg<<"dbdE = "<<dbdE<<std::endl;
834  J.col(0) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
835  //dbg<<"J(0) = "<<J.col(0)<<std::endl;
836  GDb0 = TMV_colRange(Gy,0,b0size) * b0.vec();
837  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
838  //dbg<<"dbdE = "<<dbdE<<std::endl;
839  J.col(1) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
840  //dbg<<"J(1) = "<<J.col(1)<<std::endl;
841 
842  J /= bx(0);
843  if (!zerob11) J.row(4).setZero();
844  //xdbg<<"J = "<<J<<std::endl;
845  }
void augmentZTransformCols(std::complex< double > z, int order, DMatrix &T)
Definition: BVec.cc:156
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
int x
#define TMV_rowRange(m, i1, i2)
Definition: MyMatrix.h:204
#define Assert(x)
Definition: dbg.h:73
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doJ2 ( const DVector x,
const DVector f,
DMatrix J 
) const

Definition at line 759 of file EllipseSolver.cc.

761  {
762  //xdbg<<"Start doJ2\n";
763  //xdbg<<"x = "<<x<<std::endl;
764  //xdbg<<"f = "<<f<<std::endl;
765 
766  Assert(x.size() == 5);
767  Assert(J.TMV_rowsize() == 5);
768  Assert(J.TMV_colsize() == 5);
769 
770  std::complex<double> zc(x[0],x[1]);
771  double mu = x[4];
772 
773  J.setZero();
774  if (!fixcen) {
776  Db0 = TMV_colRange(D,0,b0size) * b0.vec();
777  //dbg<<"Db0 = "<<Db0<<std::endl;
778  GDb0 = Gx * Db0;
779  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
780  //dbg<<"dbdE = "<<dbdE<<std::endl;
781  J.col(0) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
782  //dbg<<"J(0) = "<<J.col(0)<<std::endl;
783  GDb0 = Gy * Db0;
784  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
785  //dbg<<"dbdE = "<<dbdE<<std::endl;
786  J.col(1) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
787  //dbg<<"J(1) = "<<J.col(1)<<std::endl;
788  } else {
789  //dbg<<"J(0) = "<<J.col(0)<<std::endl;
790  //dbg<<"J(1) = "<<J.col(1)<<std::endl;
791  }
792 
793  if (!fixmu) {
794  // dD/dmu = D Gmu
796  GDb0 = TMV_colRange(Gmu,0,b0size) * b0.vec();
797  //dbg<<"GDb0 = "<<GDb0<<std::endl;
798  Db0 = Daug * GDb0;
799  //dbg<<"Db0 = "<<Db0<<std::endl;
800  SDb0 = S * Db0;
801  //dbg<<"SDb0 = "<<SDb0<<std::endl;
802  dbdE = TMV_rowRange(T,0,6) * SDb0;
803  //dbg<<"dbdE = "<<dbdE<<std::endl;
804  J.col(4) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
805  //dbg<<"J(4) = "<<J.col(4)<<std::endl;
806  } else {
807  //dbg<<"J(4) = "<<J.col(4)<<std::endl;
808  }
809  //xdbg<<"bx(0) = "<<bx(0)<<std::endl;
810  J /= bx(0);
811  if (!zerob11) J.row(4).setZero();
812  //xdbg<<"J = "<<J<<std::endl;
813  }
void augmentMuTransformCols(double mu, int order, DMatrix &D)
Definition: BVec.cc:316
void augmentZTransformCols(std::complex< double > z, int order, DMatrix &T)
Definition: BVec.cc:156
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
int x
#define TMV_rowRange(m, i1, i2)
Definition: MyMatrix.h:204
#define Assert(x)
Definition: dbg.h:73
void lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::doJ3 ( const DVector x,
const DVector f,
DMatrix J 
) const

Definition at line 397 of file EllipseSolver.cc.

399  {
400  // bx = T S D b0
401  //
402  // dbx/dzc = (dT/dzc) S D b0
403  // dbx/dg = T (dS/dg) D b0
404  // dbx/dmu = T S (dD/dmu) b0
405  //
406  // f = bx(1:6) / bx(0)
407  // df/dE = dbx/dE(1:6) / bx(0) - (1/bx(0)^2) (dbx(0)/dE) bx(1:6)
408  // = ( dbx/dE(1:6) - dbx/dE(0) f ) / bx(0)
409 
410  //xdbg<<"Start doJ3\n";
411  //xdbg<<"x = "<<x<<std::endl;
412  //xdbg<<"f = "<<f<<std::endl;
413 
414  Assert(x.size() == 5);
415  Assert(J.TMV_rowsize() == 5);
416  Assert(J.TMV_colsize() == 5);
417 
418  std::complex<double> zc(x[0],x[1]);
419  std::complex<double> g(x[2],x[3]);
420  double mu = x[4];
421  double fact = 1./(1.-norm(g));
422 
423  if (!fixcen || !fixgam) {
424  // Both cen and gam use this:
425  Db0 = TMV_colRange(D,0,b0size) * b0.vec();
426  }
427 
428  // Leave off one factor of bx(0) for now.
429  // We apply it at the end to the whole matrix.
430  if (!fixcen) {
431  // dT/dx = T Gx;
432  // dT/dy = T Gy;
433  // db/dx = T Gx S D b0
434  // db/dy = T Gy S D b0
436  SDb0 = S * Db0;
437  GDb0 = Gx * SDb0;
438  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
439  //dbg<<"dbdE = "<<dbdE<<std::endl;
440  J.col(0) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
441  //dbg<<"J(0) = "<<J.col(0)<<std::endl;
442  GDb0 = Gy * SDb0;
443  dbdE = TMV_rowRange(Taug,0,6) * GDb0;
444  //dbg<<"dbdE = "<<dbdE<<std::endl;
445  J.col(1) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
446  //dbg<<"J(1) = "<<J.col(1)<<std::endl;
447  } else {
448  J.col(0).setZero();
449  //dbg<<"J(0) = "<<J.col(0)<<std::endl;
450  J.col(1).setZero();
451  //dbg<<"J(1) = "<<J.col(1)<<std::endl;
452  }
453 
454  if (!fixgam) {
455  // dS/dg1 = fact * S * (Gg1 + g2 * Gth);
456  // dS/dg2 = fact * S * (Gg2 - g1 * Gth);
458  double g1 = real(g);
459  double g2 = imag(g);
460  GDb0 = Gg1 * Db0;
461  GthDb0 = Gth * Db0;
462  GDb0 += g2*GthDb0;
463  SDb0 = fact * Saug * GDb0;
464  dbdE = TMV_rowRange(T,0,6) * SDb0;
465  //dbg<<"dbdE = "<<dbdE<<std::endl;
466  J.col(2) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
467  //dbg<<"J(2) = "<<J.col(2)<<std::endl;
468  GDb0 = Gg2 * Db0;
469  GDb0 -= g1*GthDb0;
470  SDb0 = fact * Saug * GDb0;
471  dbdE = TMV_rowRange(T,0,6) * SDb0;
472  //dbg<<"dbdE = "<<dbdE<<std::endl;
473  J.col(3) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
474  //dbg<<"J(3) = "<<J.col(3)<<std::endl;
475  } else {
476  J.col(2).setZero();
477  //dbg<<"J(2) = "<<J.col(2)<<std::endl;
478  J.col(3).setZero();
479  //dbg<<"J(3) = "<<J.col(3)<<std::endl;
480  }
481 
482  if (!fixmu) {
483  // dD/dmu = D Gmu
485  GDb0 = TMV_colRange(Gmu,0,b0size) * b0.vec();
486  Db0 = Daug * GDb0;
487  SDb0 = S * Db0;
488  dbdE = TMV_rowRange(T,0,6) * SDb0;
489  //dbg<<"dbdE = "<<dbdE<<std::endl;
490  J.col(4) = dbdE.TMV_subVector(1,6) - dbdE(0) * f;
491  //dbg<<"J(4) = "<<J.col(4)<<std::endl;
492  } else {
493  J.col(4).setZero();
494  //dbg<<"J(4) = "<<J.col(4)<<std::endl;
495  }
496  J /= bx(0);
497  if (!zerob11) J.row(4).setZero();
498  //xdbg<<"J = "<<J<<std::endl;
499 
500 #ifdef JTEST
501  double dE = 1.e-6;
502  dbg<<"dE = "<<dE<<std::endl;
503  testout = dbgout;
504 
505  // This section was only used for debugging purposes, but
506  // I'm leaving it in, since the derivations of Gx[i] are
507  // helpful in understanding some of the code following this section.
508 
509  //
510  // dD/dmu:
511  //
512  DMatrix Dbig(bxsizep2,bxsizep2,0.);
513  DMatrix D0(bxsize,bxsize,0.);
514  DMatrix D1(bxsize,bxsize,0.);
515  DMatrix D2(bxsize,bxsize,0.);
518  calculateMuTransform(mu-dE,bxorder,D1);
519  calculateMuTransform(mu+dE,bxorder,D2);
520  DMatrix Gmubig(bxsizep2,bxsize,0.);
521  setupGmu(Gmubig,bxorderp2,bxorder);
522 
523  DMatrix dDdmu_num = (D2-D1)/(2.*dE);
524  DMatrix d2D_num = (D2+D1-2.*D0)/(dE*dE);
525  DMatrix dDdmu = TMV_rowRange(Dbig,0,bxsize) * Gmubig;
526  dbg<<"Gmu = "<<Gmubig.TMV_subMatrix(0,6,0,6)<<std::endl;
527  dbg<<"D = "<<Dbig.TMV_subMatrix(0,6,0,6)<<std::endl;
528  dbg<<"dDdmu = "<<dDdmu.TMV_subMatrix(0,6,0,6)<<std::endl;
529  dbg<<"dDdmu_num = "<<dDdmu_num.TMV_subMatrix(0,6,0,6)<<std::endl;
530  dbg<<"Norm(dD/dmu - numeric dD/dmu) = "<<Norm(dDdmu-dDdmu_num)<<std::endl;
531  dbg<<"dE*Norm(d2D_num) = "<<dE*Norm(d2D_num)<<std::endl;
532  test(Norm(dDdmu-dDdmu_num) < 30.*dE*Norm(d2D_num),"dDdmu");
533 
534  //
535  // dS/dg1
536  //
537  DMatrix Sbig(bxsizep2,bxsizep2,0.);
538  DMatrix S0(bxsize,bxsize,0.);
539  DMatrix S1(bxsize,bxsize,0.);
540  DMatrix S2(bxsize,bxsize,0.);
543  calculateGTransform(g-std::complex<double>(dE,0),bxorder,S1);
544  calculateGTransform(g+std::complex<double>(dE,0),bxorder,S2);
545  DMatrix Gg1big(bxsizep2,bxsize,0.);
546  DMatrix Gthbig(bxsizep2,bxsize,0.);
547  setupGg1(Gg1big,bxorderp2,bxorder);
548  setupGth(Gthbig,bxorderp2,bxorder);
549 
550  DMatrix dSdg1_num = (S2-S1)/(2.*dE);
551  DMatrix d2S_num = (S2+S1-2.*S0)/(dE*dE);
552  DMatrix dSdg1 = fact * TMV_rowRange(Sbig,0,bxsize) * (Gg1big + imag(g) * Gthbig);
553  dbg<<"Gg1 = "<<Gg1big.TMV_subMatrix(0,6,0,6)<<std::endl;
554  dbg<<"Gth = "<<Gthbig.TMV_subMatrix(0,6,0,6)<<std::endl;
555  dbg<<"S = "<<Sbig.TMV_subMatrix(0,6,0,6)<<std::endl;
556  dbg<<"dSdg1 = "<<dSdg1.TMV_subMatrix(0,6,0,6)<<std::endl;
557  dbg<<"dSdg1_num = "<<dSdg1_num.TMV_subMatrix(0,6,0,6)<<std::endl;
558  dbg<<"Norm(dS/dg1 - numeric dS/dg1) = "<<Norm(dSdg1-dSdg1_num)<<std::endl;
559  dbg<<"dE*Norm(d2S_num) = "<<dE*Norm(d2S_num)<<std::endl;
560  test(Norm(dSdg1-dSdg1_num) < 30.*dE*Norm(d2S_num),"dSdg1");
561 
562  //
563  // dS/dg2
564  //
565  calculateGTransform(g-std::complex<double>(0,dE),bxorder,S1);
566  calculateGTransform(g+std::complex<double>(0,dE),bxorder,S2);
567  DMatrix Gg2big(bxsizep2,bxsize,0.);
568  setupGg2(Gg2big,bxorderp2,bxorder);
569 
570  DMatrix dSdg2_num = (S2-S1)/(2.*dE);
571  d2S_num = (S2+S1-2.*S0)/(dE*dE);
572  DMatrix dSdg2 = fact * TMV_rowRange(Sbig,0,bxsize) * (Gg2big - real(g) * Gthbig);
573  dbg<<"Gg2 = "<<Gg2big.TMV_subMatrix(0,6,0,6)<<std::endl;
574  dbg<<"Gth = "<<Gthbig.TMV_subMatrix(0,6,0,6)<<std::endl;
575  dbg<<"S = "<<Sbig.TMV_subMatrix(0,6,0,6)<<std::endl;
576  dbg<<"dSdg2 = "<<dSdg2.TMV_subMatrix(0,6,0,6)<<std::endl;
577  dbg<<"dSdg2_num = "<<dSdg2_num.TMV_subMatrix(0,6,0,6)<<std::endl;
578  dbg<<"Norm(dS/dg2 - numeric dS/dg2) = "<<Norm(dSdg2-dSdg2_num)<<std::endl;
579  dbg<<"dE*Norm(d2S_num) = "<<dE*Norm(d2S_num)<<std::endl;
580  test(Norm(dSdg2-dSdg2_num) < 30.*dE*Norm(d2S_num),"dSdg2");
581 
582  //
583  // dT/dx
584  //
585  DMatrix Tbig(bxsizep2,bxsizep2,0.);
586  DMatrix T0(bxsize,bxsize,0.);
587  DMatrix T1(bxsize,bxsize,0.);
588  DMatrix T2(bxsize,bxsize,0.);
591  calculateZTransform(zc-std::complex<double>(dE,0),bxorder,T1);
592  calculateZTransform(zc+std::complex<double>(dE,0),bxorder,T2);
593  DMatrix Gxbig(bxsizep2,bxsize,0.);
594  setupGx(Gxbig,bxorderp2,bxorder);
595 
596  DMatrix dTdx_num = (T2-T1)/(2.*dE);
597  DMatrix d2T_num = (T2+T1-2.*T0)/(dE*dE);
598  DMatrix dTdx = TMV_rowRange(Tbig,0,bxsize) * Gxbig;
599  dbg<<"Gx = "<<Gxbig.TMV_subMatrix(0,6,0,6)<<std::endl;
600  dbg<<"T = "<<Tbig.TMV_subMatrix(0,6,0,6)<<std::endl;
601  dbg<<"dTdx = "<<dTdx.TMV_subMatrix(0,6,0,6)<<std::endl;
602  dbg<<"dTdx_num = "<<dTdx_num.TMV_subMatrix(0,6,0,6)<<std::endl;
603  dbg<<"Norm(dT/dx - numeric dT/dx) = "<<Norm(dTdx-dTdx_num)<<std::endl;
604  dbg<<"dE*Norm(d2T_num) = "<<dE*Norm(d2T_num)<<std::endl;
605  test(Norm(dTdx-dTdx_num) < 30.*dE*Norm(d2T_num),"dTdx");
606 
607  //
608  // dT/dy
609  //
610  calculateZTransform(zc-std::complex<double>(0,dE),bxorder,T1);
611  calculateZTransform(zc+std::complex<double>(0,dE),bxorder,T2);
612  DMatrix Gybig(bxsizep2,bxsize,0.);
613  setupGy(Gybig,bxorderp2,bxorder,0.);
614 
615  DMatrix dTdy_num = (T2-T1)/(2.*dE);
616  d2T_num = (T2+T1-2.*T0)/(dE*dE);
617  DMatrix dTdy = TMV_rowRange(Tbig,0,bxsize) * Gybig;
618  dbg<<"Gy = "<<Gybig.TMV_subMatrix(0,6,0,6)<<std::endl;
619  dbg<<"T = "<<Tbig.TMV_subMatrix(0,6,0,6)<<std::endl;
620  dbg<<"dTdy = "<<dTdy.TMV_subMatrix(0,6,0,6)<<std::endl;
621  dbg<<"dTdy_num = "<<dTdy_num.TMV_subMatrix(0,6,0,6)<<std::endl;
622  dbg<<"Norm(dT/dy - numeric dT/dy) = "<<Norm(dTdy-dTdy_num)<<std::endl;
623  dbg<<"dE*Norm(d2T_num) = "<<dE*Norm(d2T_num)<<std::endl;
624  test(Norm(dTdy-dTdy_num) < 30.*dE*Norm(d2T_num),"dTdy");
625 
626  //
627  // J
628  //
629 
630  DMatrix J_num(5,5,0.);
631  DVector x0 = x;
632  DVector f0(5);
633  doF3(x0,f0);
634  DVector bx0 = bx.TMV_subVector(0,6);
635  dbg<<"x0 = "<<x0<<std::endl;
636  dbg<<"b0 = "<<bx0<<std::endl;
637  dbg<<"f0 = "<<f0<<std::endl;
638 
639  for(int k=0;k<5;k++) {
640  dbg<<"k = "<<k<<std::endl;
641 
642  DVector f1(5);
643  DVector x1 = x; x1(k) -= dE;
644  doF3(x1,f1);
645  DVector b1 = bx.TMV_subVector(0,6);
646  dbg<<"x1 = "<<x1<<std::endl;
647  dbg<<"b1 = "<<b1<<std::endl;
648  dbg<<"f1 = "<<f1<<std::endl;
649 
650  DVector f2(5);
651  DVector x2 = x; x2(k) += dE;
652  doF3(x2,f2);
653  DVector b2 = bx.TMV_subVector(0,6);
654  dbg<<"x2 = "<<x2<<std::endl;
655  dbg<<"b2 = "<<b2<<std::endl;
656  dbg<<"f2 = "<<f2<<std::endl;
657 
658  DVector dbdE_num = (b2-b1)/(2.*dE);
659  dbg<<"dbdE_num = "<<dbdE_num<<std::endl;
660  DVector d2bdE = (b2+b1-2.*bx0)/(dE*dE);
661  dbg<<"d2bdE = "<<d2bdE<<std::endl;
662 
663  DVector dbdE(6);
664  double g1 = real(g);
665  double g2 = imag(g);
666  Db0 = TMV_colRange(D,0,b0size) * b0.vec();
667  dbg<<"Db0 = "<<Db0<<std::endl;
668  switch (k) {
669  case 0: SDb0 = S * Db0;
670  dbg<<"SDb0 = "<<SDb0<<std::endl;
671  GDb0 = Gx * SDb0;
672  dbg<<"GDb0 = "<<GDb0<<std::endl;
673  dbdE = TMV_rowRange(Tbig,0,6) * GDb0;
674  dbg<<"dbdx = "<<dbdE<<std::endl;
675  dbg<<"dbdx = dTdx S D b0 = "<<
676  TMV_rowRange(dTdx,0,6) * S * Db0<<std::endl;
677  break;
678  case 1: SDb0 = S * Db0;
679  dbg<<"SDb0 = "<<SDb0<<std::endl;
680  GDb0 = Gy * SDb0;
681  dbg<<"GDb0 = "<<GDb0<<std::endl;
682  dbdE = TMV_rowRange(Tbig,0,6) * GDb0;
683  dbg<<"dbdy = "<<dbdE<<std::endl;
684  dbg<<"dbdy = dTdy S D b0 = "<<
685  TMV_rowRange(dTdy,0,6) * S * Db0<<std::endl;
686  break;
687  case 2: GDb0 = Gg1 * Db0;
688  dbg<<"GDb0 = "<<GDb0<<std::endl;
689  GthDb0 = Gth * Db0;
690  dbg<<"GthDb0 = "<<GthDb0<<std::endl;
691  GDb0 += g2*GthDb0;
692  dbg<<"GDb0 = "<<GDb0<<std::endl;
693  SDb0 = fact * TMV_rowRange(Sbig,0,bxsize) * GDb0;
694  dbg<<"SDb0 = "<<SDb0<<std::endl;
695  dbdE = TMV_rowRange(T,0,6) * SDb0;
696  dbg<<"dbdg1 = "<<dbdE<<std::endl;
697  dbg<<"dbdg1 = T dSdg1 D b0 = "<<
698  TMV_rowRange(T,0,6) * dSdg1 * Db0<<std::endl;
699  break;
700  case 3: GDb0 = Gg2 * Db0;
701  dbg<<"GDb0 = "<<GDb0<<std::endl;
702  GthDb0 = Gth * Db0;
703  dbg<<"GthDb0 = "<<GthDb0<<std::endl;
704  GDb0 -= g1*GthDb0;
705  dbg<<"GDb0 = "<<GDb0<<std::endl;
706  SDb0 = fact * TMV_rowRange(Sbig,0,bxsize) * GDb0;
707  dbg<<"SDb0 = "<<SDb0<<std::endl;
708  dbdE = TMV_rowRange(T,0,6) * SDb0;
709  dbg<<"dbdg2 = "<<dbdE<<std::endl;
710  dbg<<"dbdg2 = T dSdg2 D b0 = "<<
711  TMV_rowRange(T,0,6) * dSdg2 * Db0<<std::endl;
712  break;
713  case 4: GDb0 = TMV_colRange(Gmu,0,b0size) * b0.vec();
714  dbg<<"GDb0 = "<<GDb0<<std::endl;
715  Db0 = TMV_rowRange(Dbig,0,bxsize) * GDb0;
716  dbg<<"Db0 = "<<Db0<<std::endl;
717  SDb0 = S * Db0;
718  dbg<<"SDb0 = "<<SDb0<<std::endl;
719  dbdE = TMV_rowRange(T,0,6) * SDb0;
720  dbg<<"dbdmu = "<<dbdE<<std::endl;
721  dbg<<"dbdmu = T S dDdmu b0 = "<<
722  TMV_rowRange(T,0,6) * S * TMV_colRange(dDdmu,0,b0size) * b0.vec()
723  <<std::endl;
724  break;
725  }
726  dbg<<"dbdE = "<<dbdE<<std::endl;
727  dbg<<"Norm(dbdE-dbdE_num) = "<<Norm(dbdE-dbdE_num)<<std::endl;
728  dbg<<"dE*Norm(d2bdE) = "<<dE*Norm(d2bdE)<<std::endl;
729  test(Norm(dbdE-dbdE_num) < 30.*dE*Norm(d2bdE),"dbdE");
730 
731  DVector dfdE = dbdE.TMV_subVector(1,6) - dbdE(0) * f0;
732  dfdE /= bx(0);
733  dbg<<"dfdE from dbdE = "<<dfdE<<std::endl;
734  dbg<<"dfdE from dbdE_num = "<<
735  (dbdE_num.TMV_subVector(1,6) - dbdE_num(0) * f0)/bx(0)<<std::endl;;
736  dbg<<"dfdE in J = "<<J.col(k)<<std::endl;
737  J_num.col(k) = (f2-f1)/(2.*dE);
738  dbg<<"dfdE_num = "<<J_num.col(k)<<std::endl;
739  DVector d2f_num = (f2+f1-2.*f0)/(dE*dE);
740  dbg<<"d2f_num = "<<d2f_num<<std::endl;
741  dbg<<"Norm(dfdE_num-dfdE) ="<<Norm(J_num.col(k)-dfdE)<<std::endl;
742  dbg<<"dE*Norm(d2f_num) ="<<dE*Norm(d2f_num)<<std::endl;
743  test(Norm(J_num.col(k)-dfdE) < 30.*dE*Norm(d2f_num),"dfdE");
744  }
745 
746  dbg<<"J_num = "<<J_num<<std::endl;
747  dbg<<"analytic: "<<J<<std::endl;
748  if (fixcen) TMV_colRange(J_num,0,2).setZero();
749  if (fixgam) TMV_colRange(J_num,2,4).setZero();
750  if (fixmu) J_num.col(4).setZero();
751  dbg<<"J_num => "<<J_num<<std::endl;
752  dbg<<"Norm(diff) = "<<Norm(J-J_num)<<std::endl;
753  dbg<<"dE*Norm(J) = "<<dE*Norm(J_num)<<std::endl;
754  test(Norm(J_num-J) < dE*Norm(J_num),"dfdE");
755  doF3(x,f0); // return everything to original values
756 #endif
757  }
void augmentMuTransformCols(double mu, int order, DMatrix &D)
Definition: BVec.cc:316
void setupGg1(DMatrix &Gg1, int order1, int order2)
Definition: PsiHelper.cc:449
void setupGth(DMatrix &Gth, int order1, int order2)
Definition: PsiHelper.cc:579
T norm(const T &x)
Definition: Integrate.h:191
void calculateGTransform(std::complex< double > g, int order1, int order2, DMatrix &S)
Definition: BVec.cc:468
int const x0
Definition: saturated.cc:45
void augmentZTransformCols(std::complex< double > z, int order, DMatrix &T)
Definition: BVec.cc:156
void calculateZTransform(std::complex< double > z, int order1, int order2, DMatrix &T)
Definition: BVec.cc:84
#define TMV_colRange(m, j1, j2)
Definition: MyMatrix.h:203
void setupGx(DMatrix &Gx, int order1, int order2)
Definition: PsiHelper.cc:370
void setupGy(DMatrix &Gy, int order1, int order2)
Definition: PsiHelper.cc:409
void augmentGTransformCols(std::complex< double > g, int order, DMatrix &S)
Definition: BVec.cc:577
int x
void setupGg2(DMatrix &Gg2, int order1, int order2)
Definition: PsiHelper.cc:500
#define TMV_rowRange(m, i1, i2)
Definition: MyMatrix.h:204
#define dbg
Definition: dbg.h:69
T real(const T &x)
Definition: Integrate.h:193
std::ostream *const dbgout
Definition: dbg.h:64
#define Assert(x)
Definition: dbg.h:73
void doF3(const DVector &x, DVector &f) const
void calculateMuTransform(double mu, int order1, int order2, DMatrix &D)
Definition: BVec.cc:227
void setupGmu(DMatrix &Gmu, int order1, int order2)
Definition: PsiHelper.cc:551

Member Data Documentation

BVec lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::b0
mutable

Definition at line 66 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::b0order

Definition at line 64 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::b0size

Definition at line 65 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bx
mutable

Definition at line 67 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bxorder

Definition at line 64 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bxorderp2

Definition at line 64 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bxsave
mutable

Definition at line 68 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bxsize

Definition at line 65 of file EllipseSolver.cc.

int lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::bxsizep2

Definition at line 65 of file EllipseSolver.cc.

DMatrixView lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::D
mutable

Definition at line 72 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Daug
mutable

Definition at line 69 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Db0
mutable

Definition at line 76 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::dbdE
mutable

Definition at line 75 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::f_short
mutable

Definition at line 87 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::ff
mutable

Definition at line 84 of file EllipseSolver.cc.

bool lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixcen

Definition at line 80 of file EllipseSolver.cc.

double lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixg1
mutable

Definition at line 88 of file EllipseSolver.cc.

double lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixg2
mutable

Definition at line 88 of file EllipseSolver.cc.

bool lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixgam

Definition at line 80 of file EllipseSolver.cc.

double lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixm
mutable

Definition at line 88 of file EllipseSolver.cc.

bool lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixmu

Definition at line 80 of file EllipseSolver.cc.

double lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixuc
mutable

Definition at line 88 of file EllipseSolver.cc.

double lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::fixvc
mutable

Definition at line 88 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::GDb0
mutable

Definition at line 78 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gg1

Definition at line 91 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gg2

Definition at line 92 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gmu

Definition at line 94 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gth

Definition at line 93 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::GthDb0
mutable

Definition at line 79 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gx

Definition at line 89 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Gy

Definition at line 90 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::jj
mutable

Definition at line 85 of file EllipseSolver.cc.

bool lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::numeric_j

Definition at line 80 of file EllipseSolver.cc.

DMatrixView lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::S
mutable

Definition at line 73 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Saug
mutable

Definition at line 70 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::SDb0
mutable

Definition at line 77 of file EllipseSolver.cc.

DMatrixView lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::T
mutable

Definition at line 74 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::Taug
mutable

Definition at line 71 of file EllipseSolver.cc.

DMatrix lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::U

Definition at line 81 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::x_short
mutable

Definition at line 86 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::xinit
mutable

Definition at line 82 of file EllipseSolver.cc.

DVector lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::xx
mutable

Definition at line 83 of file EllipseSolver.cc.

bool lsst::meas::algorithms::shapelet::EllipseSolver3::ESImpl3::zerob11

Definition at line 80 of file EllipseSolver.cc.


The documentation for this struct was generated from the following file: