LSSTApplications  16.0-10-g0ee56ad+5,16.0-11-ga33d1f2+5,16.0-12-g3ef5c14+3,16.0-12-g71e5ef5+18,16.0-12-gbdf3636+3,16.0-13-g118c103+3,16.0-13-g8f68b0a+3,16.0-15-gbf5c1cb+4,16.0-16-gfd17674+3,16.0-17-g7c01f5c+3,16.0-18-g0a50484+1,16.0-20-ga20f992+8,16.0-21-g0e05fd4+6,16.0-21-g15e2d33+4,16.0-22-g62d8060+4,16.0-22-g847a80f+4,16.0-25-gf00d9b8+1,16.0-28-g3990c221+4,16.0-3-gf928089+3,16.0-32-g88a4f23+5,16.0-34-gd7987ad+3,16.0-37-gc7333cb+2,16.0-4-g10fc685+2,16.0-4-g18f3627+26,16.0-4-g5f3a788+26,16.0-5-gaf5c3d7+4,16.0-5-gcc1f4bb+1,16.0-6-g3b92700+4,16.0-6-g4412fcd+3,16.0-6-g7235603+4,16.0-69-g2562ce1b+2,16.0-8-g14ebd58+4,16.0-8-g2df868b+1,16.0-8-g4cec79c+6,16.0-8-gadf6c7a+1,16.0-8-gfc7ad86,16.0-82-g59ec2a54a+1,16.0-9-g5400cdc+2,16.0-9-ge6233d7+5,master-g2880f2d8cf+3,v17.0.rc1
LSSTDataManagementBasePackage
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
lsst::afw::image::Filter Class Referencefinal

Holds an integer identifier for an LSST filter. More...

#include <Filter.h>

Public Member Functions

 Filter (std::string const &name, bool const force=false)
 Creates a Filter with the given name. More...
 
 Filter (int id=UNKNOWN)
 Creates a Filter with the given identifier. More...
 
 Filter (std::shared_ptr< lsst::daf::base::PropertySet const > metadata, bool const force=false)
 Create a Filter from a PropertySet (e.g. More...
 
 Filter (Filter const &)=default
 
 Filter (Filter &&) noexcept=default
 
Filteroperator= (Filter const &)=default
 
Filteroperator= (Filter &&) noexcept=default
 
 ~Filter () noexcept=default
 
bool operator== (Filter const &rhs) const noexcept
 Are two filters identical? More...
 
bool operator!= (Filter const &rhs) const noexcept
 
std::size_t hash_value () const noexcept
 Return a hash of this object. More...
 
int getId () const noexcept
 Return a Filter's integral id. More...
 
std::string const & getName () const noexcept
 Return a Filter's name. More...
 
std::string const & getCanonicalName () const
 Return a filter's canonical name. More...
 
std::vector< std::stringgetAliases () const
 Return all aliases by which this filter is known. More...
 
FilterProperty const & getFilterProperty () const
 Return a Filter's FilterProperty. More...
 

Static Public Member Functions

static void reset ()
 Clear all definitions. More...
 
static int define (FilterProperty const &filterProperty, int id=AUTO, bool force=false)
 Define a filter name to have the specified id. More...
 
static int defineAlias (std::string const &oldName, std::string const &newName, bool force=false)
 Define an alias for a filter. More...
 
static std::vector< std::stringgetNames ()
 Return a list of known filters. More...
 

Static Public Attributes

static int const AUTO = -1
 
static int const UNKNOWN = -1
 

Detailed Description

Holds an integer identifier for an LSST filter.

Definition at line 141 of file Filter.h.

Constructor & Destructor Documentation

◆ Filter() [1/5]

lsst::afw::image::Filter::Filter ( std::string const &  name,
bool const  force = false 
)
inlineexplicit

Creates a Filter with the given name.

Parameters
nameName of filter
forceAllow us to construct an unknown Filter

Definition at line 149 of file Filter.h.

152  : _id(_lookup(name, force)), _name(name) {}

◆ Filter() [2/5]

lsst::afw::image::Filter::Filter ( int  id = UNKNOWN)
inlineexplicit

Creates a Filter with the given identifier.

Parameters
idId number of desired filter

Definition at line 156 of file Filter.h.

158  : _id(id), _name(_lookup(id)) {}

◆ Filter() [3/5]

lsst::afw::image::Filter::Filter ( std::shared_ptr< lsst::daf::base::PropertySet const >  metadata,
bool const  force = false 
)
explicit

Create a Filter from a PropertySet (e.g.

a FITS header)

Parameters
metadataMetadata to process (e.g. a IFITS header)
forceAllow us to construct an unknown Filter

Definition at line 117 of file Filter.cc.

117  {
118  std::string const key = "FILTER";
119  if (metadata->exists(key)) {
120  std::string filterName = boost::algorithm::trim_right_copy(metadata->getAsString(key));
121  _id = _lookup(filterName, force);
122  _name = filterName;
123  }
124 }
STL class.
Key< U > key
Definition: Schema.cc:281

◆ Filter() [4/5]

lsst::afw::image::Filter::Filter ( Filter const &  )
default

◆ Filter() [5/5]

lsst::afw::image::Filter::Filter ( Filter &&  )
defaultnoexcept

◆ ~Filter()

lsst::afw::image::Filter::~Filter ( )
defaultnoexcept

Member Function Documentation

◆ define()

int lsst::afw::image::Filter::define ( FilterProperty const &  filterProperty,
int  id = AUTO,
bool  force = false 
)
static

Define a filter name to have the specified id.

If id == Filter::AUTO a value will be chosen for you.

It is an error to attempt to change a name's id (unless you specify force)

Definition at line 195 of file Filter.cc.

195  {
196  if (!_nameMap) {
197  _initRegistry();
198  }
199 
200  std::string const& name = fp.getName();
201  NameMap::iterator keyVal = _nameMap->find(name);
202 
203  if (keyVal != _nameMap->end()) {
204  int oid = keyVal->second;
205 
206  if (id == oid || id == AUTO) {
207  return oid; // OK, same value as before
208  }
209 
210  if (!force) {
211  throw LSST_EXCEPT(pexEx::RuntimeError, "Filter " + name + " is already defined");
212  }
213  _nameMap->erase(keyVal);
214  _idMap->erase(oid);
215  }
216 
217  if (id == AUTO) {
218  id = _id0;
219  ++_id0;
220  }
221 
222  _nameMap->insert(std::make_pair(name, id));
223  _idMap->insert(std::make_pair(id, name));
224 
225  return id;
226 }
T end(T... args)
table::Key< int > id
Definition: Detector.cc:163
STL class.
static int const AUTO
Definition: Filter.h:143
T erase(T... args)
T make_pair(T... args)
T insert(T... args)
T find(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
Reports errors that are due to events beyond the control of the program.
Definition: Runtime.h:104

◆ defineAlias()

int lsst::afw::image::Filter::defineAlias ( std::string const &  oldName,
std::string const &  newName,
bool  force = false 
)
static

Define an alias for a filter.

Parameters
oldNameold name for Filter
newNamenew name for Filter
forceforce an alias even if newName is already in use

Definition at line 228 of file Filter.cc.

228  {
229  if (!_nameMap) {
230  _initRegistry();
231  }
232 
233  // Lookup oldName
234  NameMap::iterator keyVal = _nameMap->find(oldName);
235  if (keyVal == _nameMap->end()) {
236  throw LSST_EXCEPT(pexEx::NotFoundError, "Unable to find filter " + oldName);
237  }
238  int const id = keyVal->second;
239 
240  // Lookup oldName in aliasMap
241  AliasMap::iterator aliasKeyVal = _aliasMap->find(newName);
242  if (aliasKeyVal != _aliasMap->end()) {
243  if (aliasKeyVal->second == oldName) {
244  return id; // OK, same value as before
245  }
246 
247  if (!force) {
248  throw LSST_EXCEPT(pexEx::NotFoundError, "Filter " + newName + " is already defined");
249  }
250  _aliasMap->erase(aliasKeyVal);
251  }
252 
253  _aliasMap->insert(std::make_pair(newName, oldName));
254 
255  return id;
256 }
T end(T... args)
table::Key< int > id
Definition: Detector.cc:163
Reports attempts to access elements using an invalid key.
Definition: Runtime.h:151
T erase(T... args)
T make_pair(T... args)
T insert(T... args)
T find(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ getAliases()

std::vector< std::string > lsst::afw::image::Filter::getAliases ( ) const

Return all aliases by which this filter is known.

The list excludes the canonical name

Definition at line 141 of file Filter.cc.

141  {
142  std::vector<std::string> aliases;
143 
144  std::string const& canonicalName = getCanonicalName();
145  for (AliasMap::iterator ptr = _aliasMap->begin(), end = _aliasMap->end(); ptr != end; ++ptr) {
146  if (ptr->second == canonicalName) {
147  aliases.push_back(ptr->first);
148  }
149  }
150 
151  return aliases;
152 }
std::string const & getCanonicalName() const
Return a filter&#39;s canonical name.
Definition: Filter.h:195
uint64_t * ptr
Definition: RangeSet.cc:88
T end(T... args)
STL class.
T push_back(T... args)
T begin(T... args)
int end

◆ getCanonicalName()

std::string const& lsst::afw::image::Filter::getCanonicalName ( ) const
inline

Return a filter's canonical name.

I.e. if this filter's an alias, return the name of the aliased Filter

Definition at line 195 of file Filter.h.

195 { return _lookup(_id); }

◆ getFilterProperty()

FilterProperty const & lsst::afw::image::Filter::getFilterProperty ( ) const

Return a Filter's FilterProperty.

Definition at line 294 of file Filter.cc.

294  {
295  //
296  // Map name to its ID and back to resolve aliases
297  //
298  int const id = _lookup(_name, true);
299  std::string const& name = (id == UNKNOWN) ? _name : _lookup(id);
300 
301  return FilterProperty::lookup(name);
302 }
static int const UNKNOWN
Definition: Filter.h:144
STL class.
static FilterProperty const & lookup(std::string const &name)
Lookup the properties of a filter "name".
Definition: Filter.cc:96

◆ getId()

int lsst::afw::image::Filter::getId ( ) const
inlinenoexcept

Return a Filter's integral id.

Definition at line 185 of file Filter.h.

185 { return _id; }

◆ getName()

std::string const& lsst::afw::image::Filter::getName ( ) const
inlinenoexcept

Return a Filter's name.

Definition at line 189 of file Filter.h.

189 { return _name; }

◆ getNames()

std::vector< std::string > lsst::afw::image::Filter::getNames ( )
static

Return a list of known filters.

Definition at line 154 of file Filter.cc.

154  {
155  if (!_nameMap) {
156  _initRegistry();
157  }
158 
160 
161  for (NameMap::const_iterator ptr = _nameMap->begin(), end = _nameMap->end(); ptr != end; ++ptr) {
162  if (ptr->first != unknownFilter) {
163  names.push_back(ptr->first);
164  }
165  }
166  std::sort(names.begin(), names.end());
167 
168  return names;
169 }
uint64_t * ptr
Definition: RangeSet.cc:88
T end(T... args)
T push_back(T... args)
T begin(T... args)
T sort(T... args)
int end

◆ hash_value()

std::size_t lsst::afw::image::Filter::hash_value ( ) const
noexcept

Return a hash of this object.

Definition at line 173 of file Filter.cc.

173 { return std::hash<int>()(_id); }

◆ operator!=()

bool lsst::afw::image::Filter::operator!= ( Filter const &  rhs) const
inlinenoexcept

Definition at line 177 of file Filter.h.

177 { return !(*this == rhs); }

◆ operator=() [1/2]

Filter& lsst::afw::image::Filter::operator= ( Filter const &  )
default

◆ operator=() [2/2]

Filter& lsst::afw::image::Filter::operator= ( Filter &&  )
defaultnoexcept

◆ operator==()

bool lsst::afw::image::Filter::operator== ( Filter const &  rhs) const
noexcept

Are two filters identical?

Definition at line 171 of file Filter.cc.

171 { return _id != UNKNOWN && _id == rhs._id; }
static int const UNKNOWN
Definition: Filter.h:144

◆ reset()

static void lsst::afw::image::Filter::reset ( )
inlinestatic

Clear all definitions.

Definition at line 210 of file Filter.h.

210 { _initRegistry(); }

Member Data Documentation

◆ AUTO

int const lsst::afw::image::Filter::AUTO = -1
static

Definition at line 143 of file Filter.h.

◆ UNKNOWN

int const lsst::afw::image::Filter::UNKNOWN = -1
static

Definition at line 144 of file Filter.h.


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