LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
AmpInfo.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 /*
3  * LSST Data Management System
4  * Copyright 2008, 2009, 2010, 2011 LSST Corporation.
5  *
6  * This product includes software developed by the
7  * LSST Project (http://www.lsst.org/).
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the LSST License Statement and
20  * the GNU General Public License along with this program. If not,
21  * see <http://www.lsstcorp.org/LegalNotices/>.
22  */
23 #ifndef AFW_TABLE_AmpInfo_h_INCLUDED
24 #define AFW_TABLE_AmpInfo_h_INCLUDED
25 
28 #include "lsst/afw/table/Catalog.h"
30 
31 namespace lsst { namespace afw { namespace table {
32 
37  LL,
38  LR,
39  UR,
40  UL,
41 };
42 
43 
44 class AmpInfoRecord;
45 class AmpInfoTable;
46 
76 class AmpInfoRecord : public BaseRecord {
77 public:
78 
83 
85  return boost::static_pointer_cast<AmpInfoTable const>(BaseRecord::getTable());
86  }
87 
89  std::string getName() const;
91  void setName(std::string const &name);
92 
93  geom::Box2I getBBox() const;
94  void setBBox(geom::Box2I const &bbox);
95 
96  double getGain() const;
97  void setGain(double gain);
98 
99  double getReadNoise() const;
100  void setReadNoise(double readNoise);
101 
102  int getSaturation() const;
103  void setSaturation(int saturation);
104 
107 
108  std::vector<double> getLinearityCoeffs() const;
109  void setLinearityCoeffs(std::vector<double> const &coeffs);
110 
111  std::string getLinearityType() const;
112  void setLinearityType(std::string const &type);
113 
114  bool getHasRawInfo() const;
115  void setHasRawInfo(bool hasRawInfo);
116 
117  geom::Box2I getRawBBox() const;
118  void setRawBBox(geom::Box2I const &bbox);
119 
120  geom::Box2I getRawDataBBox() const;
121  void setRawDataBBox(geom::Box2I const &bbox);
122 
123  bool getRawFlipX() const;
124  void setRawFlipX(bool rawFlipX);
125 
126  bool getRawFlipY() const;
127  void setRawFlipY(bool rawFlipY);
128 
130  void setRawXYOffset(geom::Extent2I const &xy);
131 
133  void setRawHorizontalOverscanBBox(geom::Box2I const &bbox);
134 
136  void setRawVerticalOverscanBBox(geom::Box2I const &bbox);
137 
139  void setRawPrescanBBox(geom::Box2I const &bbox);
140 
142 
143 protected:
144 
146 
147 };
148 
154 class AmpInfoTable : public BaseTable {
155 public:
156 
161  static int const MAX_NAME_LENGTH = 64; // max length for amplifier name
162  static int const MAX_LINEARITY_COEFFS = 4; // max number of linearity coefficients
163  static int const MAX_LINEARITY_TYPE_LENGTH = 64; // max length for linearity type
164 
170  static PTR(AmpInfoTable) make(Schema const & schema);
171 
181  r.disconnectAliases();
182  return r;
183  }
184 
191  static bool checkSchema(Schema const & other) {
192  return other.contains(getMinimalSchema().schema);
193  }
194 
196 
225 
227  PTR(AmpInfoTable) clone() const { return boost::static_pointer_cast<AmpInfoTable>(_clone()); }
228 
230  PTR(AmpInfoRecord) makeRecord() { return boost::static_pointer_cast<AmpInfoRecord>(_makeRecord()); }
231 
234  return boost::static_pointer_cast<AmpInfoRecord>(BaseTable::copyRecord(other));
235  }
236 
238  PTR(AmpInfoRecord) copyRecord(BaseRecord const & other, SchemaMapper const & mapper) {
239  return boost::static_pointer_cast<AmpInfoRecord>(BaseTable::copyRecord(other, mapper));
240  }
241 
242 protected:
243 
244  AmpInfoTable(Schema const & schema);
245 
246  AmpInfoTable(AmpInfoTable const & other);
247 
248 private:
249 
250  // Struct that holds the minimal schema and the special keys we've added to it.
251  struct MinimalSchema {
276  MinimalSchema();
277  };
278 
279  // Return the singleton minimal schema.
280  static MinimalSchema & getMinimalSchema();
281 
282  friend class io::FitsWriter;
283 
284  // Return a writer object that knows how to save in FITS format. See also FitsWriter.
285  virtual PTR(io::FitsWriter) makeFitsWriter(fits::Fits * fitsfile, int flags) const;
286 };
287 
288 }}} // namespace lsst::afw::table
289 
290 #endif // !AFW_TABLE_AmpInfo_h_INCLUDED
Defines the fields and offsets for a table.
Definition: Schema.h:46
void setRawFlipY(bool rawFlipY)
flip column order to make an assembled image?
boost::shared_ptr< BaseRecord > copyRecord(BaseRecord const &input)
Deep-copy a record, requiring that it have the same schema as this table.
static int const MAX_NAME_LENGTH
Definition: AmpInfo.h:161
CatalogT< AmpInfoRecord > Catalog
Definition: AmpInfo.h:81
std::string getLinearityType() const
Convenience accessors for the keys in the minimal reference schema.
std::string getName() const
Convenience accessors for the keys in the minimal reference schema.
void setRawXYOffset(geom::Extent2I const &xy)
offset for assembling a raw CCD image: desired xy0 - raw xy0
static Key< Point< int > > getRawDataBBoxMinKey()
Definition: AmpInfo.h:213
Writer subclass for FITS binary tables.
Definition: FitsWriter.h:20
static Key< Flag > getRawFlipXKey()
Definition: AmpInfo.h:215
#define PTR(...)
Definition: base.h:41
bool getHasRawInfo() const
Convenience accessors for the keys in the minimal reference schema.
double getGain() const
Convenience accessors for the keys in the minimal reference schema.
geom::Box2I getRawHorizontalOverscanBBox() const
Convenience accessors for the keys in the minimal reference schema.
geom::Extent2I getRawXYOffset() const
Convenience accessors for the keys in the minimal reference schema.
Geometry and electronic information about raw amplifier images.
Definition: AmpInfo.h:76
virtual boost::shared_ptr< io::FitsWriter > makeFitsWriter(fits::Fits *fitsfile, int flags) const
Key< Array< double > > linearityCoeffs
Definition: AmpInfo.h:260
boost::shared_ptr< AmpInfoRecord > copyRecord(BaseRecord const &other)
Deep-copy a record, requiring that it have the same schema as this table.
Definition: AmpInfo.h:233
static Key< Point< int > > getBBoxExtentKey()
Definition: AmpInfo.h:203
void setReadNoise(double readNoise)
amplifier read noise, in e-
A custom container class for records, based on std::vector.
Definition: Catalog.h:94
A mapping between the keys of two Schemas, used to copy data between them.
Definition: SchemaMapper.h:19
void setLinearityCoeffs(std::vector< double > const &coeffs)
vector of linearity coefficients
CatalogT< Record > Catalog
Definition: AmpInfo.h:159
void setRawPrescanBBox(geom::Box2I const &bbox)
bounding box of usable (horizontal) prescan pixels on raw image
void setRawFlipX(bool rawFlipX)
flip row order to make assembled image?
void setName(std::string const &name)
name of amplifier location in camera
void disconnectAliases()
Sever the connection between this schema and any others with which it shares aliases.
Key< Point< int > > rawHorizontalOverscanBBoxMin
Definition: AmpInfo.h:270
void setRawDataBBox(geom::Box2I const &bbox)
bounding box of amplifier image pixels on raw image
static Schema makeMinimalSchema()
Return a minimal schema for AmpInfo tables and records.
Definition: AmpInfo.h:179
static Key< std::string > getLinearityTypeKey()
Definition: AmpInfo.h:209
Key< Point< int > > rawHorizontalOverscanBBoxExtent
Definition: AmpInfo.h:271
void setRawBBox(geom::Box2I const &bbox)
bounding box of all amplifier pixels on raw image
static Key< Point< int > > getRawBBoxExtentKey()
Definition: AmpInfo.h:212
std::vector< double > getLinearityCoeffs() const
Convenience accessors for the keys in the minimal reference schema.
CatalogT< AmpInfoRecord const > ConstCatalog
Definition: AmpInfo.h:82
static Key< Point< int > > getRawBBoxMinKey()
Definition: AmpInfo.h:211
boost::shared_ptr< AmpInfoRecord > makeRecord()
Default-construct an associated record.
Definition: AmpInfo.h:230
void setRawVerticalOverscanBBox(geom::Box2I const &bbox)
bounding box of usable vertical overscan pixels
geom::Box2I getBBox() const
Convenience accessors for the keys in the minimal reference schema.
boost::shared_ptr< AmpInfoTable const > getTable() const
Definition: AmpInfo.h:84
static bool checkSchema(Schema const &other)
Return true if the given schema is a valid AmpInfoTable schema.
Definition: AmpInfo.h:191
void setHasRawInfo(bool hasRawInfo)
does this table have raw amplifier information?
static Key< Point< int > > getRawVerticalOverscanBBoxExtentKey()
Definition: AmpInfo.h:221
Key< Point< int > > rawVerticalOverscanBBoxExtent
Definition: AmpInfo.h:273
An integer coordinate rectangle.
Definition: Box.h:53
static Key< Point< int > > getRawHorizontalOverscanBBoxExtentKey()
Definition: AmpInfo.h:219
std::map< Citizen const *, CitizenInfo > table
Definition: Citizen.h:93
int getSaturation() const
Convenience accessors for the keys in the minimal reference schema.
void setGain(double gain)
amplifier gain in e-/ADU
boost::shared_ptr< BaseTable const > getTable() const
Return the table this record is associated with.
Definition: BaseRecord.h:51
geom::Box2I getRawVerticalOverscanBBox() const
Convenience accessors for the keys in the minimal reference schema.
tbl::Schema schema
Definition: CoaddPsf.cc:324
AmpInfoTable(Schema const &schema)
static Key< Array< double > > getLinearityCoeffsKey()
Definition: AmpInfo.h:208
static Key< int > getSaturationKey()
Definition: AmpInfo.h:206
static int const MAX_LINEARITY_COEFFS
Definition: AmpInfo.h:162
geom::Box2I getRawBBox() const
Convenience accessors for the keys in the minimal reference schema.
boost::shared_ptr< AmpInfoTable > clone() const
Return a polymorphic deep copy of the table.
Definition: AmpInfo.h:227
double getReadNoise() const
Convenience accessors for the keys in the minimal reference schema.
ReadoutCorner getReadoutCorner() const
Convenience accessors for the keys in the minimal reference schema.
static Key< Point< int > > getRawHorizontalOverscanBBoxMinKey()
Definition: AmpInfo.h:218
geom::Box2I getRawPrescanBBox() const
Convenience accessors for the keys in the minimal reference schema.
ColumnViewT< AmpInfoRecord > ColumnView
Definition: AmpInfo.h:80
#define CONST_PTR(...)
Definition: base.h:47
static Key< Flag > getRawFlipYKey()
Definition: AmpInfo.h:216
ColumnViewT< AmpInfoRecord > ColumnView
Definition: AmpInfo.h:158
void setRawHorizontalOverscanBBox(geom::Box2I const &bbox)
bounding box of usable horizontal overscan pixels
static Key< Point< int > > getRawVerticalOverscanBBoxMinKey()
Definition: AmpInfo.h:220
bool getRawFlipX() const
Convenience accessors for the keys in the minimal reference schema.
static Key< Point< int > > getRawDataBBoxExtentKey()
Definition: AmpInfo.h:214
Key< Point< int > > rawVerticalOverscanBBoxMin
Definition: AmpInfo.h:272
AmpInfoRecord(boost::shared_ptr< AmpInfoTable > const &table)
geom::Box2I getRawDataBBox() const
Convenience accessors for the keys in the minimal reference schema.
static Key< Flag > getHasRawInfoKey()
Definition: AmpInfo.h:210
Base class for all records.
Definition: BaseRecord.h:27
int contains(Schema const &other, int flags=EQUAL_KEYS) const
Test whether the given schema is a subset of this.
static Key< Point< int > > getRawXYOffsetKey()
Definition: AmpInfo.h:217
virtual boost::shared_ptr< BaseTable > _clone() const =0
Clone implementation with noncovariant return types.
static boost::shared_ptr< AmpInfoTable > make(Schema const &schema)
Construct a new table.
Key specialization for Flag.
Definition: Flag.h:82
virtual boost::shared_ptr< BaseRecord > _makeRecord()=0
Default-construct an associated record (protected implementation).
CatalogT< Record const > ConstCatalog
Definition: AmpInfo.h:160
void setSaturation(int saturation)
saturation value, in ADU
bool getRawFlipY() const
Convenience accessors for the keys in the minimal reference schema.
static Key< double > getReadNoiseKey()
Definition: AmpInfo.h:205
static Key< Point< int > > getRawPrescanBBoxExtentKey()
Definition: AmpInfo.h:223
void setReadoutCorner(ReadoutCorner val)
set readout corner
static MinimalSchema & getMinimalSchema()
static int const MAX_LINEARITY_TYPE_LENGTH
Definition: AmpInfo.h:163
static Key< Point< int > > getBBoxMinKey()
Definition: AmpInfo.h:202
void setBBox(geom::Box2I const &bbox)
bounding box of amplifier pixels in assembled image
static Key< int > getReadoutCornerKey()
Definition: AmpInfo.h:207
void setLinearityType(std::string const &type)
name of linearity parameterization
ImageT val
Definition: CR.cc:154
static Key< std::string > getNameKey()
Definition: AmpInfo.h:201
static Key< Point< int > > getRawPrescanBBoxMinKey()
Definition: AmpInfo.h:222
Table of amplifier information (AmpInfoRecord records)
Definition: AmpInfo.h:154
Base class for all tables.
Definition: BaseTable.h:44
static Key< double > getGainKey()
Definition: AmpInfo.h:204