48 if (
whatToFit.find(
"Model") == std::string::npos) {
49 LOGLS_WARN(
_log,
"assignIndices was called and Model is *not* in whatToFit");
54 _fittingChips = (
whatToFit.find(
"ModelChip") != std::string::npos);
55 _fittingVisits = (
whatToFit.find(
"ModelVisit") != std::string::npos);
57 if ((!_fittingChips) && (!_fittingVisits)) {
58 _fittingChips = _fittingVisits =
true;
65 if (mapping->isFixed())
continue;
66 mapping->setIndex(index);
67 index += mapping->getNpar();
73 mapping->setIndex(index);
74 index += mapping->getNpar();
78 idMapping.second->setWhatToFit(_fittingChips, _fittingVisits);
88 if (mapping->isFixed())
continue;
89 mapping->offsetParams(
delta.segment(mapping->getIndex(), mapping->getNpar()));
95 mapping->offsetParams(
delta.segment(mapping->getIndex(), mapping->getNpar()));
102 idMapping.second->freezeErrorTransform();
105 idMapping.second->freezeErrorTransform();
111 mapping->getMappingIndices(indices);
135 auto coeffs =
transform->getCoefficients();
139 Eigen::VectorXd::Index k = 0;
141 for (ndarray::Size
j = 0;
j <=
order; ++
j) {
143 for (ndarray::Size
i = 0;
i <=
iMax; ++
i, ++k) {
172 "ConstrainedPhotometryModel cannot find CcdImage " +
ccdImage.getName());
176template <
class ChipTransform,
class VisitTransform,
class ChipVisitMapping>
184 for (
auto const &
ccdImage : ccdImageList) {
214 for (
auto const &
ccdImage : ccdImageList) {
236 assert(mapping !=
nullptr);
239 mapping->getVisitMapping()->getTransform());
245 mapping->getVisitMapping()->getTransform()));
251 double chipConstant = mapping->getChipMapping()->getParameters()[0];
257 for (
auto const &point : pixToFocal->applyForward(
geom::Box2D(
ccdBBox).getCorners())) {
262 return {chipConstant, visitTransform, pixToFocal, visitMean};
296 double mean =
prep.chipConstant *
prep.visitMean;
304 out <<
"ConstrainedFluxModel:" <<
std::endl;
335 ast::MathMap(1, 1, {
"y=pow(10.0,x/-2.5)"s}, {
"x=-2.5*log10(y)"s}));
table::Key< int > detector
#define LSST_EXCEPT(type,...)
#define LOGLS_WARN(logger, message)
#define LOGLS_INFO(logger, message)
#define LOGLS_DEBUG(logger, message)
T bucket_count(T... args)
Handler of an actual image from a single CCD.
A two-level photometric transform: one for the ccd and one for the visit.
std::shared_ptr< afw::image::PhotoCalib > toPhotoCalib(CcdImage const &ccdImage) const override
Return the mapping of ccdImage represented as a PhotoCalib.
double computeResidual(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Compute the residual between the model applied to a star and its associated fittedStar.
double transformError(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
double transform(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Return the on-sky transformed flux for measuredStar on ccdImage.
void print(std::ostream &out) const override
Print a string representation of the contents of this mapping, for debugging.
double computeResidual(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Compute the residual between the model applied to a star and its associated fittedStar.
void print(std::ostream &out) const override
Print a string representation of the contents of this mapping, for debugging.
double transformError(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
double transform(CcdImage const &ccdImage, MeasuredStar const &measuredStar) const override
Return the on-sky transformed flux for measuredStar on ccdImage.
std::shared_ptr< afw::image::PhotoCalib > toPhotoCalib(CcdImage const &ccdImage) const override
Return the mapping of ccdImage represented as a PhotoCalib.
PrepPhotoCalib prepPhotoCalib(CcdImage const &ccdImage) const
Helper for preparing toPhotoCalib()
void initialize(CcdImageList const &ccdImageList, geom::Box2D const &focalPlaneBBox, int visitOrder)
Initialize the chip, visit, and chipVisit mappings by creating appropriate transforms and mappings.
PhotometryMappingBase * findMapping(CcdImage const &ccdImage) const override
Return a pointer to the mapping associated with this ccdImage.
void freezeErrorTransform() override
Once this routine has been called, the error transform is not modified by offsetParams().
void offsetParams(Eigen::VectorXd const &delta) override
Offset the parameters by the provided amounts (by -delta).
void print(std::ostream &out) const override
Print a string representation of the contents of this mapping, for debugging.
std::size_t getTotalParameters() const override
Return the total number of parameters in this model.
Eigen::Index assignIndices(std::string const &whatToFit, Eigen::Index firstIndex) override
Assign indices in the full matrix to the parameters being fit in the mappings, starting at firstIndex...
void getMappingIndices(CcdImage const &ccdImage, IndexVector &indices) const override
Get how this set of parameters (of length Npar()) map into the "grand" fit.
void computeParameterDerivatives(MeasuredStar const &measuredStar, CcdImage const &ccdImage, Eigen::VectorXd &derivatives) const override
Compute the parametric derivatives of this model.
virtual double initialChipCalibration(std::shared_ptr< afw::image::PhotoCalib const > photoCalib)=0
Return the initial calibration to use from this photoCalib.
Sources measured on images.
Relates transform(s) to their position in the fitting matrix and allows interaction with the transfor...
LOG_LOGGER _log
lsst.logging instance, to be created by a subclass so that messages have consistent name.
double tweakFluxError(jointcal::MeasuredStar const &measuredStar) const
Add a fraction of the instrumental flux to the instrumental flux error, in quadrature.
CameraSys const FOCAL_PLANE
CameraSysPrefix const PIXELS
To hold the return of prepPhotoCalib.