lsst.jointcal  16.0-16-g925333c+3
FitterBase.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 #ifndef LSST_JOINTCAL_FITTER_BASE_H
3 #define LSST_JOINTCAL_FITTER_BASE_H
4 
5 #include "lsst/log/Log.h"
8 #include "lsst/jointcal/Chi2.h"
12 
13 namespace lsst {
14 namespace jointcal {
15 
17 enum class MinimizeResult {
18  Converged, // fit has converged - no more outliers
19  Chi2Increased, // still some ouliers but chi2 increases
20  Failed, // factorization failed
21  NonFinite // non-finite chi2 statistic
22 };
23 
30 class FitterBase {
31 public:
33  : _associations(associations), _whatToFit(""), _lastNTrip(0), _nParTot(0), _nMeasuredStars(0) {}
34 
36  FitterBase(FitterBase const &) = delete;
37  FitterBase(FitterBase &&) = delete;
38  FitterBase &operator=(FitterBase const &) = delete;
39  FitterBase &operator=(FitterBase &&) = delete;
40 
82  MinimizeResult minimize(std::string const &whatToFit, double const nSigmaCut = 0,
83  bool const doRankUpdate = true, bool const doLineSearch = false,
84  std::string const &dumpMatrixFile = "");
85 
89  Chi2Statistic computeChi2() const;
90 
100  void leastSquareDerivatives(TripletList &tripletList, Eigen::VectorXd &grad) const;
101 
110  virtual void offsetParams(Eigen::VectorXd const &delta) = 0;
111 
117  virtual void assignIndices(std::string const &whatToFit) = 0;
118 
127  virtual void saveChi2Contributions(std::string const &baseName) const;
128 
130  virtual void saveChi2MeasContributions(std::string const &baseName) const = 0;
131 
133  virtual void saveChi2RefContributions(std::string const &baseName) const = 0;
134 
135 protected:
138 
139  int _lastNTrip; // last triplet count, used to speed up allocation
140  unsigned int _nParTot;
141  unsigned _nMeasuredStars;
142 
143  // lsst.logging instance, to be created by subclass so that messages have consistent name while fitting.
144  LOG_LOGGER _log;
145 
162  unsigned findOutliers(double nSigmaCut, MeasuredStarList &msOutliers, FittedStarList &fsOutliers) const;
163 
168  void outliersContributions(MeasuredStarList &msOutliers, FittedStarList &fsOutliers,
169  TripletList &tripletList, Eigen::VectorXd &grad);
170 
172  void removeMeasOutliers(MeasuredStarList &outliers);
173 
175  void removeRefOutliers(FittedStarList &outliers);
176 
178  virtual void getIndicesOfMeasuredStar(MeasuredStar const &measuredStar,
179  std::vector<unsigned> &indices) const = 0;
180 
182  virtual void accumulateStatImageList(CcdImageList const &ccdImageList, Chi2Accumulator &accum) const = 0;
183 
185  virtual void accumulateStatRefStars(Chi2Accumulator &accum) const = 0;
186 
192  virtual void leastSquareDerivativesMeasurement(
193  CcdImage const &ccdImage, TripletList &tripletList, Eigen::VectorXd &grad,
194  MeasuredStarList const *measuredStarList = nullptr) const = 0;
195 
197  virtual void leastSquareDerivativesReference(FittedStarList const &fittedStarList,
198  TripletList &tripletList, Eigen::VectorXd &grad) const = 0;
199 
200 private:
211  double _lineSearch(Eigen::VectorXd const &delta);
212 };
213 } // namespace jointcal
214 } // namespace lsst
215 #endif // LSST_JOINTCAL_FITTER_BASE_H
Simple structure to accumulate chi2 and ndof.
Definition: Chi2.h:29
Base class for fitters.
Definition: FitterBase.h:30
Base class for Chi2Statistic and Chi2List, to allow addEntry inside Fitter for either class...
Definition: Chi2.h:21
FitResults minimize(lsst::afw::math::Function1< ReturnT > const &function, std::vector< double > const &initialParameterList, std::vector< double > const &stepSizeList, std::vector< double > const &measurementList, std::vector< double > const &varianceList, std::vector< double > const &xPositionList, double errorDef)
A list of MeasuredStar. They are usually filled in Associations::createCcdImage.
Definition: MeasuredStar.h:118
MinimizeResult
Return value of minimize()
Definition: FitterBase.h:17
FitterBase(std::shared_ptr< Associations > associations)
Definition: FitterBase.h:32
STL class.
Class for a simple mapping implementing a generic Gtransfo.
double computeChi2(const StarMatchList &L, const Gtransfo &gtransfo)
the actual chi2
Definition: StarMatch.cc:219
A list of FittedStar s. Such a list is typically constructed by Associations.
Definition: FittedStar.h:99
objects measured on actual images.
Definition: MeasuredStar.h:19
std::shared_ptr< Associations > _associations
Definition: FitterBase.h:136
Handler of an actual image from a single CCD.
Definition: CcdImage.h:41