LSSTApplications  18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
lsst::afw::cameraGeom::Amplifier Class Referenceabstract

Geometry and electronic information about raw amplifier images. More...

#include <Amplifier.h>

Inheritance diagram for lsst::afw::cameraGeom::Amplifier:
lsst::afw::cameraGeom::Amplifier::Builder

Classes

class  Builder
 A mutable Amplifier subclass class that can be used to incrementally construct or modify Amplifiers. More...
 
struct  Fields
 

Public Member Functions

virtual ~Amplifier () noexcept=default
 
void toRecord (table::BaseRecord &record) const
 Copy the Amplifier's fields into the given record. More...
 
Builder rebuild () const
 Return a Builder object initialized with the fields of this. More...
 
std::string getName () const
 Name of the amplifier. More...
 
lsst::geom::Box2I getBBox () const
 Bounding box of amplifier pixels in the trimmed, assembled image. More...
 
double getGain () const
 Amplifier gain in e-/ADU. More...
 
double getReadNoise () const
 Amplifier read noise, in e-. More...
 
double getSaturation () const
 Level in ADU above which pixels are considered saturated; use nan if no such level applies. More...
 
double getSuspectLevel () const
 Level in ADU above which pixels are considered suspicious, meaning they may be affected by unknown systematics; for example if non-linearity corrections above a certain level are unstable then that would be a useful value for suspectLevel. More...
 
ReadoutCorner getReadoutCorner () const
 Readout corner in the trimmed, assembled image. More...
 
ndarray::Array< double const, 1, 1 > getLinearityCoeffs () const
 Vector of linearity coefficients. More...
 
std::string getLinearityType () const
 Name of linearity parameterization. More...
 
double getLinearityThreshold () const
 Level in ADU above which linearity should be applied. More...
 
double getLinearityMaximum () const
 Level in ADU above which the linearity relation is poorly defined. More...
 
std::string getLinearityUnits () const
 Units for the input to the linearity relation (DN). More...
 
bool getHasRawInfo () const
 Does this table have raw amplifier information? More...
 
lsst::geom::Box2I getRawBBox () const
 Bounding box of all amplifier pixels on untrimmed, assembled raw image. More...
 
lsst::geom::Box2I getRawDataBBox () const
 Bounding box of amplifier image pixels on untrimmed, assembled raw image. More...
 
bool getRawFlipX () const
 Flip row order in transformation from untrimmed, assembled raw image to trimmed, assembled post-ISR image? More...
 
bool getRawFlipY () const
 Flip column order in transformation from untrimmed, assembled raw image to trimmed, assembled post-ISR image? More...
 
lsst::geom::Extent2I getRawXYOffset () const
 Offset in transformation from pre-raw, unassembled image to trimmed, assembled post-ISR image: final xy0 - pre-raw xy0. More...
 
lsst::geom::Box2I getRawHorizontalOverscanBBox () const
 The bounding box of horizontal overscan pixels in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawVerticalOverscanBBox () const
 The bounding box of vertical overscan pixels in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawPrescanBBox () const
 The bounding box of (horizontal) prescan pixels in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawSerialOverscanBBox () const
 The bounding box of serial overscan pixels (equivalent to horizontal overscan pixels) in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawParallelOverscanBBox () const
 The bounding box of parallel overscan pixels (equivalent to vertical overscan pixels) in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawSerialPrescanBBox () const
 The bounding box of horizontal/serial prescan pixels in the assembled, untrimmed raw image. More...
 
lsst::geom::Box2I getRawHorizontalPrescanBBox () const
 The bounding box of horizontal/serial prescan pixels in the assembled, untrimmed raw image. More...
 

Static Public Member Functions

static table::Schema getRecordSchema ()
 Return the schema used in the afw.table representation of amplifiers. More...
 

Protected Member Functions

 Amplifier ()=default
 
 Amplifier (Amplifier const &)=default
 
 Amplifier (Amplifier &&)=default
 
Amplifieroperator= (Amplifier const &)=default
 
Amplifieroperator= (Amplifier &&)=default
 
virtual Fields const & getFields () const =0
 

Detailed Description

Geometry and electronic information about raw amplifier images.

The Amplifier class itself is an abstract base class that provides no mutation or copy interfaces. Typically Amplifiers are constructed via the Builder subclass, which can produce a shared_ptr to an immutable Amplifier instance.

Here is a pictorial example showing the meaning of flipX and flipY:

    CCD with 4 amps        Desired assembled output      Use these parameters

    --x         x--            y
   |  amp1    amp2 |           |                               flipX       flipY
   y               y           |                       amp1    False       True
                               | CCD image             amp2    True        True
   y               y           |                       amp3    False       False
   |  amp3    amp4 |           |                       amp4    True        False
    --x         x--             ----------- x
Note
  • All bounding boxes are parent boxes with respect to the raw image.
  • The overscan and prescan bounding boxes represent the full regions; unusable regions are set via ISR configuration parameters.
  • xyOffset is not used for instrument signature removal (ISR); it is intended for use by display utilities. It supports construction of a raw CCD image in the case that raw data is provided as individual amplifier images (which is uncommon):
    • Use 0,0 for cameras that supply raw data as a raw CCD image (most cameras)
    • Use nonzero for cameras that supply raw data as separate amplifier images with xy0=0,0 (LSST)
  • This design assumes assembled X is always +/- raw X, which we require for CCDs (so that bleed trails are always along the Y axis).

Definition at line 86 of file Amplifier.h.

Constructor & Destructor Documentation

◆ ~Amplifier()

virtual lsst::afw::cameraGeom::Amplifier::~Amplifier ( )
virtualdefaultnoexcept

◆ Amplifier() [1/3]

lsst::afw::cameraGeom::Amplifier::Amplifier ( )
protecteddefault

◆ Amplifier() [2/3]

lsst::afw::cameraGeom::Amplifier::Amplifier ( Amplifier const &  )
protecteddefault

◆ Amplifier() [3/3]

lsst::afw::cameraGeom::Amplifier::Amplifier ( Amplifier &&  )
protecteddefault

Member Function Documentation

◆ getBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getBBox ( ) const
inline

Bounding box of amplifier pixels in the trimmed, assembled image.

Definition at line 115 of file Amplifier.h.

115 { return getFields().bbox; }
virtual Fields const & getFields() const =0

◆ getFields()

virtual Fields const& lsst::afw::cameraGeom::Amplifier::getFields ( ) const
protectedpure virtual

◆ getGain()

double lsst::afw::cameraGeom::Amplifier::getGain ( ) const
inline

Amplifier gain in e-/ADU.

Definition at line 118 of file Amplifier.h.

118 { return getFields().gain; }
virtual Fields const & getFields() const =0

◆ getHasRawInfo()

bool lsst::afw::cameraGeom::Amplifier::getHasRawInfo ( ) const
inline

Does this table have raw amplifier information?

Definition at line 163 of file Amplifier.h.

163 { return true; }

◆ getLinearityCoeffs()

ndarray::Array<double const, 1, 1> lsst::afw::cameraGeom::Amplifier::getLinearityCoeffs ( ) const
inline

Vector of linearity coefficients.

Definition at line 142 of file Amplifier.h.

142 { return getFields().linearityCoeffs; }
ndarray::Array< double const, 1, 1 > linearityCoeffs
Definition: Amplifier.h:247
virtual Fields const & getFields() const =0

◆ getLinearityMaximum()

double lsst::afw::cameraGeom::Amplifier::getLinearityMaximum ( ) const
inline

Level in ADU above which the linearity relation is poorly defined.

Should be set to the saturation level if no other value is known.

Definition at line 156 of file Amplifier.h.

156 { return getFields().linearityMaximum; }
virtual Fields const & getFields() const =0

◆ getLinearityThreshold()

double lsst::afw::cameraGeom::Amplifier::getLinearityThreshold ( ) const
inline

Level in ADU above which linearity should be applied.

This should be set to 0.0 if no other value is known.

Definition at line 150 of file Amplifier.h.

150 { return getFields().linearityThreshold; }
virtual Fields const & getFields() const =0

◆ getLinearityType()

std::string lsst::afw::cameraGeom::Amplifier::getLinearityType ( ) const
inline

Name of linearity parameterization.

Definition at line 145 of file Amplifier.h.

145 { return getFields().linearityType; }
virtual Fields const & getFields() const =0

◆ getLinearityUnits()

std::string lsst::afw::cameraGeom::Amplifier::getLinearityUnits ( ) const
inline

Units for the input to the linearity relation (DN).

Definition at line 159 of file Amplifier.h.

159 { return getFields().linearityUnits; }
virtual Fields const & getFields() const =0

◆ getName()

std::string lsst::afw::cameraGeom::Amplifier::getName ( ) const
inline

Name of the amplifier.

Definition at line 112 of file Amplifier.h.

112 { return getFields().name; }
virtual Fields const & getFields() const =0

◆ getRawBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawBBox ( ) const
inline

Bounding box of all amplifier pixels on untrimmed, assembled raw image.

Definition at line 169 of file Amplifier.h.

169 { return getFields().rawBBox; }
virtual Fields const & getFields() const =0

◆ getRawDataBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawDataBBox ( ) const
inline

Bounding box of amplifier image pixels on untrimmed, assembled raw image.

Definition at line 175 of file Amplifier.h.

175 { return getFields().rawDataBBox; }
virtual Fields const & getFields() const =0

◆ getRawFlipX()

bool lsst::afw::cameraGeom::Amplifier::getRawFlipX ( ) const
inline

Flip row order in transformation from untrimmed, assembled raw image to trimmed, assembled post-ISR image?

Definition at line 181 of file Amplifier.h.

181 { return getFields().rawFlipX; }
virtual Fields const & getFields() const =0

◆ getRawFlipY()

bool lsst::afw::cameraGeom::Amplifier::getRawFlipY ( ) const
inline

Flip column order in transformation from untrimmed, assembled raw image to trimmed, assembled post-ISR image?

Definition at line 187 of file Amplifier.h.

187 { return getFields().rawFlipY; }
virtual Fields const & getFields() const =0

◆ getRawHorizontalOverscanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawHorizontalOverscanBBox ( ) const
inline

The bounding box of horizontal overscan pixels in the assembled, untrimmed raw image.

Definition at line 199 of file Amplifier.h.

virtual Fields const & getFields() const =0
lsst::geom::Box2I rawHorizontalOverscanBBox
Definition: Amplifier.h:257

◆ getRawHorizontalPrescanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawHorizontalPrescanBBox ( ) const
inline

The bounding box of horizontal/serial prescan pixels in the assembled, untrimmed raw image.

This duplicates the getRawPrescanBBox method for legacy reasons.

Definition at line 235 of file Amplifier.h.

235 { return getFields().rawPrescanBBox; }
virtual Fields const & getFields() const =0

◆ getRawParallelOverscanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawParallelOverscanBBox ( ) const
inline

The bounding box of parallel overscan pixels (equivalent to vertical overscan pixels) in the assembled, untrimmed raw image.

This duplicates the getRawVerticalOverscanBBox method for legacy reasons.

Definition at line 225 of file Amplifier.h.

virtual Fields const & getFields() const =0

◆ getRawPrescanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawPrescanBBox ( ) const
inline

The bounding box of (horizontal) prescan pixels in the assembled, untrimmed raw image.

Definition at line 211 of file Amplifier.h.

211 { return getFields().rawPrescanBBox; }
virtual Fields const & getFields() const =0

◆ getRawSerialOverscanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawSerialOverscanBBox ( ) const
inline

The bounding box of serial overscan pixels (equivalent to horizontal overscan pixels) in the assembled, untrimmed raw image.

This duplicates the getRawHorizontalOverscanBBox method for legacy reasons.

Definition at line 218 of file Amplifier.h.

virtual Fields const & getFields() const =0
lsst::geom::Box2I rawHorizontalOverscanBBox
Definition: Amplifier.h:257

◆ getRawSerialPrescanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawSerialPrescanBBox ( ) const
inline

The bounding box of horizontal/serial prescan pixels in the assembled, untrimmed raw image.

This duplicates the getRawPrescanBBox method for legacy reasons.

Definition at line 232 of file Amplifier.h.

232 { return getFields().rawPrescanBBox; }
virtual Fields const & getFields() const =0

◆ getRawVerticalOverscanBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Amplifier::getRawVerticalOverscanBBox ( ) const
inline

The bounding box of vertical overscan pixels in the assembled, untrimmed raw image.

Definition at line 205 of file Amplifier.h.

virtual Fields const & getFields() const =0

◆ getRawXYOffset()

lsst::geom::Extent2I lsst::afw::cameraGeom::Amplifier::getRawXYOffset ( ) const
inline

Offset in transformation from pre-raw, unassembled image to trimmed, assembled post-ISR image: final xy0 - pre-raw xy0.

Definition at line 193 of file Amplifier.h.

193 { return getFields().rawXYOffset; }
virtual Fields const & getFields() const =0

◆ getReadNoise()

double lsst::afw::cameraGeom::Amplifier::getReadNoise ( ) const
inline

Amplifier read noise, in e-.

Definition at line 121 of file Amplifier.h.

121 { return getFields().readNoise; }
virtual Fields const & getFields() const =0

◆ getReadoutCorner()

ReadoutCorner lsst::afw::cameraGeom::Amplifier::getReadoutCorner ( ) const
inline

Readout corner in the trimmed, assembled image.

Definition at line 139 of file Amplifier.h.

139 { return getFields().readoutCorner; }
virtual Fields const & getFields() const =0

◆ getRecordSchema()

table::Schema lsst::afw::cameraGeom::Amplifier::getRecordSchema ( )
static

Return the schema used in the afw.table representation of amplifiers.

Definition at line 267 of file Amplifier.cc.

267  {
268  return RecordSchemaHelper::getMinimal().schema;
269 }

◆ getSaturation()

double lsst::afw::cameraGeom::Amplifier::getSaturation ( ) const
inline

Level in ADU above which pixels are considered saturated; use nan if no such level applies.

Definition at line 127 of file Amplifier.h.

127 { return getFields().saturation; }
virtual Fields const & getFields() const =0

◆ getSuspectLevel()

double lsst::afw::cameraGeom::Amplifier::getSuspectLevel ( ) const
inline

Level in ADU above which pixels are considered suspicious, meaning they may be affected by unknown systematics; for example if non-linearity corrections above a certain level are unstable then that would be a useful value for suspectLevel.

Use nan if no such level applies.

Definition at line 136 of file Amplifier.h.

136 { return getFields().suspectLevel; }
virtual Fields const & getFields() const =0

◆ operator=() [1/2]

Amplifier& lsst::afw::cameraGeom::Amplifier::operator= ( Amplifier const &  )
protecteddefault

◆ operator=() [2/2]

Amplifier& lsst::afw::cameraGeom::Amplifier::operator= ( Amplifier &&  )
protecteddefault

◆ rebuild()

Amplifier::Builder lsst::afw::cameraGeom::Amplifier::rebuild ( ) const

Return a Builder object initialized with the fields of this.

This is simply a shortcut for Amplifier::Builder(*this).

Definition at line 271 of file Amplifier.cc.

271 { return Builder(*this); }

◆ toRecord()

void lsst::afw::cameraGeom::Amplifier::toRecord ( table::BaseRecord record) const

Copy the Amplifier's fields into the given record.

Parameters
[out]recordRecord to modify. record.getSchema().contains(this->getRecordSchema()) must be true.

Definition at line 322 of file Amplifier.cc.

322  {
323  auto const helper = RecordSchemaHelper(record.getSchema());
324  auto const & fields = getFields();
325  record.set(helper.name, fields.name);
326  record.set(helper.bbox, fields.bbox);
327  record.set(helper.gain, fields.gain);
328  record.set(helper.readNoise, fields.readNoise);
329  record.set(helper.saturation, fields.saturation);
330  record.set(helper.suspectLevel, fields.suspectLevel);
331  record.set(helper.readoutCorner, static_cast<int>(fields.readoutCorner));
332  ndarray::Array<double, 1, 1> coeffs = ndarray::copy(fields.linearityCoeffs);
333  record.set(helper.linearityCoeffs, coeffs);
334  record.set(helper.linearityType, fields.linearityType);
335  record.set(helper.rawBBox, fields.rawBBox);
336  record.set(helper.rawDataBBox, fields.rawDataBBox);
337  record.set(helper.rawFlipX, fields.rawFlipX);
338  record.set(helper.rawFlipY, fields.rawFlipY);
339  record.set(helper.rawXYOffset, lsst::geom::Point2I(fields.rawXYOffset));
340  record.set(helper.rawHorizontalOverscanBBox, fields.rawHorizontalOverscanBBox);
341  record.set(helper.rawVerticalOverscanBBox, fields.rawVerticalOverscanBBox);
342  record.set(helper.rawPrescanBBox, fields.rawPrescanBBox);
343  // Set not-always-present fields only when present.
344  auto setIfValid = [this, &record](auto value, auto & key) {
345  if (key.isValid()) {
346  record.set(key, value);
347  }
348  };
349  setIfValid(fields.linearityThreshold, helper.linearityThreshold);
350  setIfValid(fields.linearityMaximum, helper.linearityMaximum);
351  setIfValid(fields.linearityUnits, helper.linearityUnits);
352 }
Key< U > key
Definition: Schema.cc:281
virtual Fields const & getFields() const =0

The documentation for this class was generated from the following files: