LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
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...
 
lsst::geom::Box2I getRawBBox () const
 Bounding box of the untrimmed amplifier in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawDataBBox () const
 Bounding box of amplifier data pixels in the image to which it is attached, which is assumed to be untrimmed. More...
 
bool getRawFlipX () const
 Is this amplifier (and the image to which it is attached) flipped in the X direction, relative to the physical orientation used for assembled (but still untrimmed) raws? More...
 
bool getRawFlipY () const
 Is this amplifier (and the image to which it is attached) flipped in the Y direction, relative to the physical orientation used for assembled (but still untrimmed) raws? More...
 
lsst::geom::Extent2I getRawXYOffset () const
 Offset in transformation from this amplifier (and the image to which it is attached) to trimmed, assembled post-ISR image: final xy0 - current xy0. More...
 
lsst::geom::Box2I getRawHorizontalOverscanBBox () const
 The bounding box of horizontal overscan pixels in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawVerticalOverscanBBox () const
 The bounding box of vertical overscan pixels in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawPrescanBBox () const
 The bounding box of (horizontal) prescan pixels in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawSerialOverscanBBox () const
 The bounding box of serial overscan pixels (equivalent to horizontal overscan pixels) in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawParallelOverscanBBox () const
 The bounding box of parallel overscan pixels (equivalent to vertical overscan pixels) in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawSerialPrescanBBox () const
 The bounding box of horizontal/serial prescan pixels in the image to which it is attached, which is assumed to be untrimmed. More...
 
lsst::geom::Box2I getRawHorizontalPrescanBBox () const
 The bounding box of horizontal/serial prescan pixels in the image to which it is attached, which is assumed to be untrimmed. 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.

◆ 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:272

◆ 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.

◆ 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.

◆ getLinearityType()

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

Name of linearity parameterization.

Definition at line 145 of file Amplifier.h.

◆ 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.

◆ 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; }

◆ getRawBBox()

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

Bounding box of the untrimmed amplifier in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image.

Definition at line 168 of file Amplifier.h.

168 { return getFields().rawBBox; }

◆ getRawDataBBox()

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

Bounding box of amplifier data pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image.

Definition at line 177 of file Amplifier.h.

177 { return getFields().rawDataBBox; }

◆ getRawFlipX()

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

Is this amplifier (and the image to which it is attached) flipped in the X direction, relative to the physical orientation used for assembled (but still untrimmed) raws?

Definition at line 184 of file Amplifier.h.

◆ getRawFlipY()

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

Is this amplifier (and the image to which it is attached) flipped in the Y direction, relative to the physical orientation used for assembled (but still untrimmed) raws?

Definition at line 191 of file Amplifier.h.

◆ getRawHorizontalOverscanBBox()

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

The bounding box of horizontal overscan pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image.

Definition at line 207 of file Amplifier.h.

lsst::geom::Box2I rawHorizontalOverscanBBox
Definition: Amplifier.h:282

◆ getRawHorizontalPrescanBBox()

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

The bounding box of horizontal/serial prescan pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image. This duplicates the getRawPrescanBBox method for legacy reasons.

Definition at line 260 of file Amplifier.h.

260 { return getFields().rawPrescanBBox; }

◆ 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 image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image. This duplicates the getRawVerticalOverscanBBox method for legacy reasons.

Definition at line 247 of file Amplifier.h.

◆ getRawPrescanBBox()

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

The bounding box of (horizontal) prescan pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image.

Definition at line 225 of file Amplifier.h.

225 { return getFields().rawPrescanBBox; }

◆ 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 image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image. This duplicates the getRawHorizontalOverscanBBox method for legacy reasons.

Definition at line 236 of file Amplifier.h.

◆ getRawSerialPrescanBBox()

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

The bounding box of horizontal/serial prescan pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image. This duplicates the getRawPrescanBBox method for legacy reasons.

Definition at line 257 of file Amplifier.h.

257 { return getFields().rawPrescanBBox; }

◆ getRawVerticalOverscanBBox()

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

The bounding box of vertical overscan pixels in the image to which it is attached, which is assumed to be untrimmed.

This attribute should never be accessed on an amplifier attached to a trimmed image.

Definition at line 216 of file Amplifier.h.

◆ getRawXYOffset()

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

Offset in transformation from this amplifier (and the image to which it is attached) to trimmed, assembled post-ISR image: final xy0 - current xy0.

Definition at line 198 of file Amplifier.h.

198 { return getFields().rawXYOffset; }

◆ getReadNoise()

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

Amplifier read noise, in e-.

Definition at line 121 of file Amplifier.h.

◆ 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; }

◆ 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.

◆ 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.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

Amplifier& lsst::afw::cameraGeom::Amplifier::operator= ( Amplifier const &  )
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 = [&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 }

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