lsst.jointcal  master-ge1f85bc4d5+2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 
7 #include "lsst/jointcal/Chi2.h"
11 
12 namespace lsst {
13 namespace jointcal {
14 
16 enum class MinimizeResult {
17  Converged, // fit has converged - no more outliers
18  Chi2Increased, // still some ouliers but chi2 increases
19  Failed // factorization failed
20 };
21 
28 class FitterBase {
29 public:
30  explicit FitterBase(std::shared_ptr<Associations> associations)
31  : _associations(associations), _whatToFit(""), _lastNTrip(0), _nParTot(0), _nMeasuredStars(0) {}
32 
34  FitterBase(FitterBase const &) = delete;
35  FitterBase(FitterBase &&) = delete;
36  FitterBase &operator=(FitterBase const &) = delete;
37  FitterBase &operator=(FitterBase &&) = delete;
38 
61  MinimizeResult minimize(std::string const &whatToFit, double nSigmaCut = 0);
62 
66  Chi2Statistic computeChi2() const;
67 
77  void leastSquareDerivatives(TripletList &tripletList, Eigen::VectorXd &grad) const;
78 
87  virtual void offsetParams(Eigen::VectorXd const &delta) = 0;
88 
94  virtual void assignIndices(std::string const &whatToFit) = 0;
95 
104  virtual void saveResultTuples(std::string const &tupleName) const = 0;
105 
106 protected:
107  std::shared_ptr<Associations> _associations;
108  std::string _whatToFit;
109 
110  int _lastNTrip; // last triplet count, used to speed up allocation
111  unsigned int _nParTot;
112  unsigned _nMeasuredStars;
113 
130  unsigned findOutliers(double nSigmaCut, MeasuredStarList &msOutliers, FittedStarList &fsOutliers) const;
131 
136  void outliersContributions(MeasuredStarList &msOutliers, FittedStarList &fsOutliers,
137  TripletList &tripletList, Eigen::VectorXd &grad);
138 
140  void removeMeasOutliers(MeasuredStarList &outliers);
141 
143  void removeRefOutliers(FittedStarList &outliers);
144 
146  virtual void getIndicesOfMeasuredStar(MeasuredStar const &measuredStar,
147  std::vector<unsigned> &indices) const = 0;
148 
150  virtual void accumulateStatImageList(CcdImageList const &ccdImageList, Chi2Accumulator &accum) const = 0;
151 
153  virtual void accumulateStatRefStars(Chi2Accumulator &accum) const = 0;
154 
161  CcdImage const &ccdImage, TripletList &tripletList, Eigen::VectorXd &grad,
162  MeasuredStarList const *measuredStarList = nullptr) const = 0;
163 
165  virtual void leastSquareDerivativesReference(FittedStarList const &fittedStarList,
166  TripletList &tripletList, Eigen::VectorXd &grad) const = 0;
167 };
168 } // namespace jointcal
169 } // namespace lsst
170 #endif // LSST_JOINTCAL_FITTER_BASE_H
virtual void accumulateStatRefStars(Chi2Accumulator &accum) const =0
Compute the chi2 (per star or total, depending on which Chi2Accumulator is used) for RefStars...
virtual void leastSquareDerivativesReference(FittedStarList const &fittedStarList, TripletList &tripletList, Eigen::VectorXd &grad) const =0
Compute the derivatives of the reference terms.
Simple structure to accumulate chi2 and ndof.
Definition: Chi2.h:29
Base class for fitters.
Definition: FitterBase.h:28
Base class for Chi2Statistic and Chi2List, to allow addEntry inside Fitter for either class...
Definition: Chi2.h:21
virtual void accumulateStatImageList(CcdImageList const &ccdImageList, Chi2Accumulator &accum) const =0
Compute the chi2 (per star or total, depending on which Chi2Accumulator is used) for measurements...
virtual void getIndicesOfMeasuredStar(MeasuredStar const &measuredStar, std::vector< unsigned > &indices) const =0
Set the indices of a measured star from the full matrix, for outlier removal.
virtual void saveResultTuples(std::string const &tupleName) const =0
Save the full chi2 term per star that was used in the minimization, for debugging.
MinimizeResult minimize(std::string const &whatToFit, double nSigmaCut=0)
Does a 1 step minimization, assuming a linear model.
Definition: FitterBase.cc:113
unsigned findOutliers(double nSigmaCut, MeasuredStarList &msOutliers, FittedStarList &fsOutliers) const
Find Measurements and references contributing more than a cut, computed as The outliers are NOT remo...
Definition: FitterBase.cc:31
void removeMeasOutliers(MeasuredStarList &outliers)
Remove measuredStar outliers from the fit. No Refit done.
Definition: FitterBase.cc:202
void leastSquareDerivatives(TripletList &tripletList, Eigen::VectorXd &grad) const
Evaluates the chI^2 derivatives (Jacobian and gradient) for the current whatToFit setting...
Definition: FitterBase.cc:216
A list of MeasuredStar. They are usually filled in Associations::AddImage.
Definition: MeasuredStar.h:95
MinimizeResult
Return value of minimize()
Definition: FitterBase.h:16
FitterBase(std::shared_ptr< Associations > associations)
Definition: FitterBase.h:30
A list of FittedStar s. Such a list is typically constructed by Associations.
Definition: FittedStar.h:121
void removeRefOutliers(FittedStarList &outliers)
Remove refStar outliers from the fit. No Refit done.
Definition: FitterBase.cc:210
objects measured on actual images.
Definition: MeasuredStar.h:18
std::shared_ptr< Associations > _associations
Definition: FitterBase.h:107
virtual void assignIndices(std::string const &whatToFit)=0
Set parameters to fit and assign indices in the big matrix.
Chi2Statistic computeChi2() const
Returns the chi2 for the current state.
Definition: FitterBase.cc:21
FitterBase & operator=(FitterBase const &)=delete
std::list< std::shared_ptr< CcdImage > > CcdImageList
Definition: CcdImage.h:22
Handler of an actual image from a single CCD.
Definition: CcdImage.h:31
virtual void offsetParams(Eigen::VectorXd const &delta)=0
Offset the parameters by the requested quantities.
void outliersContributions(MeasuredStarList &msOutliers, FittedStarList &fsOutliers, TripletList &tripletList, Eigen::VectorXd &grad)
Contributions to derivatives from (presumably) outlier terms.
Definition: FitterBase.cc:191
virtual void leastSquareDerivativesMeasurement(CcdImage const &ccdImage, TripletList &tripletList, Eigen::VectorXd &grad, MeasuredStarList const *measuredStarList=nullptr) const =0
Compute the derivatives of the measured stars and model for one CcdImage.