LSST Applications g0f08755f38+82efc23009,g12f32b3c4e+e7bdf1200e,g1653933729+a8ce1bb630,g1a0ca8cf93+50eff2b06f,g28da252d5a+52db39f6a5,g2bbee38e9b+37c5a29d61,g2bc492864f+37c5a29d61,g2cdde0e794+c05ff076ad,g3156d2b45e+41e33cbcdc,g347aa1857d+37c5a29d61,g35bb328faa+a8ce1bb630,g3a166c0a6a+37c5a29d61,g3e281a1b8c+fb992f5633,g414038480c+7f03dfc1b0,g41af890bb2+11b950c980,g5fbc88fb19+17cd334064,g6b1c1869cb+12dd639c9a,g781aacb6e4+a8ce1bb630,g80478fca09+72e9651da0,g82479be7b0+04c31367b4,g858d7b2824+82efc23009,g9125e01d80+a8ce1bb630,g9726552aa6+8047e3811d,ga5288a1d22+e532dc0a0b,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+37c5a29d61,gcf0d15dbbd+2acd6d4d48,gd7358e8bfb+778a810b6e,gda3e153d99+82efc23009,gda6a2b7d83+2acd6d4d48,gdaeeff99f8+1711a396fd,ge2409df99d+6b12de1076,ge79ae78c31+37c5a29d61,gf0baf85859+d0a5978c5a,gf3967379c6+4954f8c433,gfb92a5be7c+82efc23009,gfec2e1e490+2aaed99252,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
MeasuredStar.h
Go to the documentation of this file.
1// -*- LSST-C++ -*-
2/*
3 * This file is part of jointcal.
4 *
5 * Developed for the LSST Data Management System.
6 * This product includes software developed by the LSST Project
7 * (https://www.lsst.org).
8 * See the COPYRIGHT file at the top-level directory of this distribution
9 * for details of code ownership.
10 *
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23 */
24
25#ifndef LSST_JOINTCAL_MEASURED_STAR_H
26#define LSST_JOINTCAL_MEASURED_STAR_H
27
28#include <iostream>
29
30#include "lsst/afw/table/misc.h"
34
35namespace lsst {
36namespace jointcal {
37
38namespace {
39double instMagFromInstFlux(double instFlux) { return -2.5 * std::log10(instFlux); }
40} // namespace
41
42class CcdImage;
43
51class MeasuredStar : public BaseStar {
52public:
54 : BaseStar(),
55 _id(0),
56 _instFlux(0.),
57 _instFluxErr(0.),
58 _ccdImage(nullptr),
59 _valid(true),
60 _xFocal(0.0),
61 _yFocal(0.0),
62 _instMag(0.),
63 _instMagErr(0.) {}
64
65 MeasuredStar(BaseStar const &baseStar)
66 : BaseStar(baseStar),
67 _id(0),
68 _instFlux(0.),
69 _instFluxErr(0.),
70 _ccdImage(nullptr),
71 _valid(true),
72 _xFocal(0.0),
73 _yFocal(0.0),
74 _instMag(0.),
75 _instMagErr(0.) {}
76
79 MeasuredStar(MeasuredStar const &) = default;
83
85 if (fittedStar) fittedStar->getMeasurementCount()++;
86 _fittedStar = std::move(fittedStar);
87 }
88
89 void print(std::ostream &out) const {
90 BaseStar::print(out);
91 out << " instFlux: " << _instFlux << " instFluxErr: " << _instFluxErr << " id: " << _id
92 << " valid: " << _valid;
93 }
94
95 void setInstFluxAndErr(double instFlux, double instFluxErr) {
96 _instFlux = instFlux;
97 _instMag = instMagFromInstFlux(instFlux);
98 _instFluxErr = instFluxErr;
99 _instMagErr = magErrFromFluxErr(instFlux, instFluxErr);
100 }
101
102 double getInstFlux() const { return _instFlux; }
103 double getInstFluxErr() const { return _instFluxErr; }
104 double getInstMag() const { return _instMag; }
105 double getInstMagErr() const { return _instMagErr; }
106
107 void setId(afw::table::RecordId id) { _id = id; }
108 afw::table::RecordId getId() const { return _id; }
109
111 double getMagWeight() const { return (_instFlux * _instFlux / (_instFluxErr * _instFluxErr)); }
112
113 double getXFocal() const { return _xFocal; }
114 void setXFocal(double xFocal) { _xFocal = xFocal; }
115 double getYFocal() const { return _yFocal; }
116 void setYFocal(double yFocal) { _yFocal = yFocal; }
117
118 std::shared_ptr<FittedStar> getFittedStar() const { return _fittedStar; };
119
120 CcdImage const &getCcdImage() const { return *_ccdImage; };
121
122 void setCcdImage(const CcdImage *ccdImage) { _ccdImage = ccdImage; };
123
125 bool isValid() const { return _valid; }
127 void setValid(bool v) { _valid = v; }
128
129private:
130 afw::table::RecordId _id; // id in original catalog
131
132 // on-chip flux, in ADU
133 double _instFlux;
134 double _instFluxErr;
135
136 const CcdImage *_ccdImage;
137 // Note: _fittedStar is not const, but measuredStar won't modify it.
138 std::shared_ptr<FittedStar> _fittedStar;
139 bool _valid;
140
141 double _xFocal, _yFocal;
142
143 // on-sensor "magnitudes", used when fitting the MagnitudeModel.
144 double _instMag;
145 double _instMagErr;
146};
147
148/****** MeasuredStarList */
149
151class MeasuredStarList : public StarList<MeasuredStar> {
152public:
153 MeasuredStarList() = default;;
154
155 void setCcdImage(const CcdImage *_ccdImage);
156};
157
158using MeasuredStarCIterator = MeasuredStarList::const_iterator;
159using MeasuredStarIterator = MeasuredStarList::iterator;
160
165} // namespace jointcal
166} // namespace lsst
167
168#endif // LSST_JOINTCAL_MEASURED_STAR_H
table::Key< int > id
Definition Detector.cc:162
The base class for handling stars. Used by all matching routines.
Definition BaseStar.h:51
virtual void print(std::ostream &out) const
Definition BaseStar.h:83
Handler of an actual image from a single CCD.
Definition CcdImage.h:64
Sources measured on images.
void setFittedStar(std::shared_ptr< FittedStar > fittedStar)
MeasuredStar(MeasuredStar const &)=default
No move, allow copy constructor: we may copy the fitted StarLists when associating and matching catal...
void setValid(bool v)
Fits may use that to discard outliers.
bool isValid() const
Fits may use that to discard outliers.
void setXFocal(double xFocal)
void setCcdImage(const CcdImage *ccdImage)
void setInstFluxAndErr(double instFlux, double instFluxErr)
MeasuredStar(MeasuredStar &&)=delete
CcdImage const & getCcdImage() const
void setYFocal(double yFocal)
std::shared_ptr< FittedStar > getFittedStar() const
double getMagWeight() const
the inverse of the mag variance
MeasuredStar(BaseStar const &baseStar)
void print(std::ostream &out) const
MeasuredStar & operator=(MeasuredStar const &)=delete
MeasuredStar & operator=(MeasuredStar &&)=delete
void setId(afw::table::RecordId id)
afw::table::RecordId getId() const
A list of MeasuredStar. They are usually filled in Associations::createCcdImage.
void setCcdImage(const CcdImage *_ccdImage)
std::lists of Stars.
Definition StarList.h:58
T log10(T... args)
T move(T... args)
BaseStarList & Measured2Base(MeasuredStarList &This)
MeasuredStarList::iterator MeasuredStarIterator
MeasuredStarList::const_iterator MeasuredStarCIterator