2 #ifndef LSST_JOINTCAL_PHOTOMETRY_MAPPING_H 3 #define LSST_JOINTCAL_PHOTOMETRY_MAPPING_H 33 virtual unsigned getNpar()
const = 0;
73 Eigen::Ref<Eigen::VectorXd> derivatives)
const = 0;
81 virtual void offsetParams(Eigen::VectorXd
const &delta) = 0;
129 return _transfo->getNpar();
135 return _transfo->transform(measuredStar.
x, measuredStar.
y, instFlux);
140 return _transfoErrors->transform(measuredStar.
x, measuredStar.
y, instFluxErr);
150 Eigen::Ref<Eigen::VectorXd> derivatives)
const override {
154 _transfo->computeParameterDerivatives(measuredStar.
x, measuredStar.
y, instFlux, derivatives);
159 void offsetParams(Eigen::VectorXd
const &delta)
override { _transfo->offsetParams(delta); }
162 Eigen::VectorXd
getParameters()
override {
return _transfo->getParameters(); }
167 for (
unsigned k = 0; k <
getNpar(); ++k) {
168 indices[k] =
index + k;
174 stream <<
"index: " <<
index <<
" fixed: " <<
fixed <<
" transfo parameters: ";
175 _transfo->dump(stream);
197 _chipMapping(
std::
move(chipMapping)),
198 _visitMapping(
std::
move(visitMapping)) {}
201 unsigned getNpar()
const override {
return _chipMapping->getNpar() + _visitMapping->getNpar(); }
205 double tempFlux = _chipMapping->getTransfo()->transform(measuredStar.
x, measuredStar.
y, instFlux);
206 return _visitMapping->getTransfo()->transform(measuredStar.
getXFocal(), measuredStar.
getYFocal(),
212 double tempFluxErr = _chipMapping->transformError(measuredStar, instFluxErr);
213 return _visitMapping->getTransfoErrors()->transform(measuredStar.
getXFocal(),
219 _chipMapping->freezeErrorTransform();
220 _visitMapping->freezeErrorTransform();
225 Eigen::Ref<Eigen::VectorXd> derivatives)
const override;
229 _chipMapping->offsetParams(delta.segment(0, _chipMapping->getNpar()));
230 _visitMapping->offsetParams(delta.segment(_chipMapping->getNpar(), _visitMapping->getNpar()));
235 Eigen::VectorXd joined(
getNpar());
236 joined << _chipMapping->getParameters(), _visitMapping->getParameters();
245 stream <<
"index: " <<
index <<
" chipMapping: ";
246 _chipMapping->dump(stream);
247 stream <<
"visitMapping: ";
248 _visitMapping->dump(stream);
263 #endif // LSST_JOINTCAL_PHOTOMETRY_MAPPING_H virtual double transform(MeasuredStar const &measuredStar, double instFlux) const =0
Return the on-sky transformed flux for measuredStar on ccdImage.
virtual void freezeErrorTransform()=0
Once this routine has been called, the error transform is not modified by offsetParams().
std::shared_ptr< PhotometryTransfo > getTransfoErrors() const
PhotometryMapping(std::shared_ptr< PhotometryTransfo > transfo)
Value transform takes ownership of transfo, error transform aliases it.
void computeParameterDerivatives(MeasuredStar const &measuredStar, double instFlux, Eigen::Ref< Eigen::VectorXd > derivatives) const override
Compute the derivatives with respect to the parameters (i.e.
Relates transfo(s) to their position in the fitting matrix and allows interaction with the transfo(s)...
virtual Eigen::VectorXd getParameters()=0
double transformError(MeasuredStar const &measuredStar, double instFluxErr) const override
Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
std::shared_ptr< PhotometryMapping > getChipMapping() const
double transformError(MeasuredStar const &measuredStar, double instFluxErr) const override
Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
void dump(std::ostream &stream=std::cout) const override
Dump the contents of the transfos, for debugging.
void offsetParams(Eigen::VectorXd const &delta) override
Offset the transfo parameters by delta.
Eigen::VectorXd getParameters() override
double transform(MeasuredStar const &measuredStar, double instFlux) const override
Return the on-sky transformed flux for measuredStar on ccdImage.
void freezeErrorTransform() override
Once this routine has been called, the error transform is not modified by offsetParams().
std::shared_ptr< PhotometryMapping > getVisitMapping() const
void setIndex(unsigned i)
Set the index of this mapping in the grand fit.
void getMappingIndices(std::vector< unsigned > &indices) const override
Gets how this set of parameters (of length getNpar()) map into the "grand" fit.
Class for a simple mapping implementing a generic Gtransfo.
void dump(std::ostream &stream=std::cout) const override
Dump the contents of the transfos, for debugging.
void offsetParams(Eigen::VectorXd const &delta) override
Offset the transfo parameters by delta.
objects measured on actual images.
double transform(MeasuredStar const &measuredStar, double instFlux) const override
Return the on-sky transformed flux for measuredStar on ccdImage.
virtual ~PhotometryMappingBase()
ChipVisitPhotometryMapping(std::shared_ptr< PhotometryMapping > chipMapping, std::shared_ptr< PhotometryMapping > visitMapping)
unsigned getNpar() const override
Number of total parameters in this mapping.
PhotometryMappingBase & operator=(PhotometryMappingBase const &)=delete
virtual double transformError(MeasuredStar const &measuredStar, double instFluxErr) const =0
Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
void setFixed(bool _fixed)
Make this mapping's parameters fixed (i.e. not varied during fitting).
unsigned getIndex()
Get the index of this mapping in the grand fit.
std::shared_ptr< PhotometryTransfo > getTransfo() const
virtual void offsetParams(Eigen::VectorXd const &delta)=0
Offset the transfo parameters by delta.
A mapping containing a single photometryTransfo.
virtual void dump(std::ostream &stream=std::cout) const =0
Dump the contents of the transfos, for debugging.
virtual void computeParameterDerivatives(MeasuredStar const &measuredStar, double instFlux, Eigen::Ref< Eigen::VectorXd > derivatives) const =0
Compute the derivatives with respect to the parameters (i.e.
virtual unsigned getNpar() const =0
Number of total parameters in this mapping.
void freezeErrorTransform() override
Once this routine has been called, the error transform is not modified by offsetParams().
virtual void getMappingIndices(std::vector< unsigned > &indices) const =0
Gets how this set of parameters (of length getNpar()) map into the "grand" fit.
A two-level photometric transform: one for the ccd and one for the visit.
unsigned getNpar() const override
Number of total parameters in this mapping.
Eigen::VectorXd getParameters() override