Gyoto
|
Uniformly spaced spectrometers. More...
#include <GyotoUniformSpectrometer.h>
Public Member Functions | |
Uniform () | |
Default constructor. | |
Uniform (size_t nsamples, double band_min, double band_max, kind_t kind) | |
Constructor setting everything. | |
Uniform (const Uniform &) | |
Copy constructor. | |
Generic * | clone () const |
Cloner. | |
virtual | ~Uniform () |
Destructor. | |
void | setKind (kind_t) |
Set Generic::kind_. More... | |
void | setKind (std::string name) |
Set Generic::kind_ from a std::string. More... | |
void | setNSamples (size_t n) |
Set Generic::nsamples_. | |
void | setBand (double nu[2]) |
Set Uniform::band_. More... | |
void | setBand (double nu[2], std::string unit, std::string kind="") |
Set the spectral band boundaries in specified unit. More... | |
double const * | getBand () const |
Get Uniform::band_. | |
void | fillElement (FactoryMessenger *fmp) const |
Write out parameters to XML entities. More... | |
virtual void | setParameters (FactoryMessenger *fmp) |
Main loop in the (templated) subcontractor. More... | |
virtual int | setParameter (std::string name, std::string content, std::string unit) |
Set parameter by name. More... | |
virtual kind_t | getKind () const |
Get kind_. More... | |
virtual size_t | getNSamples () const |
Get Generic::nsamples_. | |
virtual size_t | getNBoundaries () const |
Get Generic::nboundaries_. | |
virtual double const * | getMidpoints () const |
Get Generic::midpoints_. | |
virtual void | getMidpoints (double data[], std::string unit) |
Copy Generic::midpoints_, converting to unit. More... | |
virtual void | getChannelBoundaries (double data[], std::string unit) |
Copy Generic::boundaries_, converting to unit. More... | |
virtual double const * | getChannelBoundaries () const |
Get Generic::boundaries_. | |
virtual size_t const * | getChannelIndices () const |
Get Generic::chanind_. | |
virtual double const * | getWidths () const |
Get Generic::widths_. | |
virtual void | getWidths (double data[], std::string unit) |
Copy Generic::widths_, converting to unit. More... | |
virtual void | hook (Listener *listener) |
Start listening. More... | |
virtual void | unhook (Listener *listener) |
Stop listening. More... | |
Public Attributes | |
size_t | nsamples_ |
Number of spectral elements. | |
size_t | nboundaries_ |
Size of the boundaries_ array. | |
double * | boundaries_ |
Frequency (in Hz) at the boundaries of the spectral channels. More... | |
size_t * | chanind_ |
Indices in boundaries_. More... | |
double * | midpoints_ |
Effective frequency (in Hz) of each spectral channel. More... | |
double * | widths_ |
Width of each channel. More... | |
Static Public Attributes | |
static kind_t const | WaveKind |
"wave" More... | |
static kind_t const | WaveLogKind |
"wavelog" More... | |
static kind_t const | FreqKind |
"freq" More... | |
static kind_t const | FreqLogKind |
"freqlog" More... | |
Protected Types | |
typedef Gyoto::SmartPointer < Gyoto::SmartPointee > | Subcontractor_t (Gyoto::FactoryMessenger *) |
A subcontractor builds an object upon order from the Factory. More... | |
Protected Member Functions | |
void | reset_ () |
Computes boundaries_, midpoints_ and widths_. | |
void | incRefCount () |
Increment the reference counter. Warning: Don't mess with the counter. | |
int | decRefCount () |
Decrement the reference counter and return current value. Warning: Don't mess with the counter. | |
int | getRefCount () |
Get the current number of references. | |
virtual void | tellListeners () |
Call tell() on each hooked Listener. More... | |
Protected Attributes | |
double | band_ [2] |
boundaries of the spectro. More... | |
kind_t | kind_ |
Spectrometer kind name. More... | |
Friends | |
class | Gyoto::SmartPointer< Gyoto::Spectrometer::Uniform > |
Uniformly spaced spectrometers.
Spectral channels are contiguous and uniformly spaced in either wavelength, frequency or log10 of either. Gyoto::Spectrometer::Uniform is registered four times in the factory: as kind="wave", "wavelog", "freq" and "freqlog". Example XML entity:
The content of the entity yields the band pass expressed in "unit" or in log10(unit).
|
inherited |
A subcontractor builds an object upon order from the Factory.
Various classes need to provide a subcontractor to be able to instanciate themselves upon order from the Factory. A subcontractor is a function (often a static member function) which accepts a pointer to a FactoryMessenger as unique parameter, communicates with the Factory using this messenger to read an XML description of the object to build, and returns this objet. SmartPointee::Subcontractor_t* is just generic enough a typedef to cast to and from other subcontractor types: Astrobj::Subcontractor_t, Metric::Subcontractor_t, Spectrum::Subcontractor_t. A subcontractor needs to be registered using the relevant Register() function: Astrobj::Register(), Metric::Register(), Spectrum::Register().
|
virtual |
Write out parameters to XML entities.
Spectrometers implementations should impement fillElement to save their parameters to XML and call the Spectrometer::fillElement(fmp) for the shared properties.
This is mainly used by the Yorick plug-in to print out any sort of GYOTO objects and to save them to XML files.
Reimplemented from Gyoto::Spectrometer::Generic.
|
virtualinherited |
Copy Generic::boundaries_, converting to unit.
data | an array of Generic::nboundaries_ doubles to fill with result |
unit | a string |
|
virtualinherited |
Get kind_.
You can check whether the Spectrometer sp is of a given kind MyKind with something like:
See Uniform::WaveKind, Uniform::WaveLogKind, Uniform::FreqKind, Uniform::FreqLogKind and Complex::Kind.
|
virtualinherited |
Copy Generic::midpoints_, converting to unit.
data | an array of Generic::nsamples_ doubles to fill with result |
unit | a string |
|
virtualinherited |
Copy Generic::widths_, converting to unit.
Think carefully before using: widths are often used to convert spectral flux density to flux. If flux density is per Herz, you don't need to convert widths.
data | an array of Generic::nboundaries_ doubles to fill with result |
unit | a string |
|
virtualinherited |
Start listening.
Use from a Hook::Listener object method:
where "this" is a Listener and "teller" is a Teller.
Use unhook() later to stop listening to a given Teller.
listener | pointer to the new listener |
void Gyoto::Spectrometer::Uniform::setBand | ( | double | nu[2] | ) |
Set Uniform::band_.
nu | 2-element vector, in Hz, m, log10(Hz) or log10(m) depending on Generic::kind_ |
void Gyoto::Spectrometer::Uniform::setBand | ( | double | nu[2], |
std::string | unit, | ||
std::string | kind = "" |
||
) |
Set the spectral band boundaries in specified unit.
If kind is not specified, member kind_ is used. Else kind_ is updated.
unit is actually the unit for 10^nu for freqlog and wavelog. Defaults:
|
virtual |
Set Generic::kind_.
This should rarely be used as the Generic::kind_ attribute usually is set in the constructor and doesn't change after that.
Always set to the adress of a static variable, not to a temporary. Usually your class should have a static member for that purpose:
Reimplemented from Gyoto::Spectrometer::Generic.
void Gyoto::Spectrometer::Uniform::setKind | ( | std::string | name | ) |
Set Generic::kind_ from a std::string.
Generic::kind_ will actually be set to one of Uniform::WaveKind, Uniform::WaveLogKind, Uniform::FreqKind or Uniform::FreqLogKind.
name | std::string, one of "wave", "wavelog", "freq" or "freqlog" |
|
virtual |
Set parameter by name.
Assume MyKind is a subclass of Spectrometer::Generic which has two members (a string StringMember and a double DoubleMember):
If MyKind is not a direct subclass of Generic, it should call the corresponding setParameter() implementation instead of Generic::setParameter().
name | XML name of the parameter |
content | string representation of the value |
unit | string representation of the unit |
Reimplemented from Gyoto::Spectrometer::Generic.
|
virtual |
Main loop in the (templated) subcontractor.
In the case of Spectrometer::Complex, the setParameter() API is not sufficient: setParameters() needs acces to the FactoryMessenger to instanciate childs for the SubSpectrometers.
Reimplemented from Gyoto::Spectrometer::Generic.
|
protectedvirtualinherited |
Call tell() on each hooked Listener.
Whenever a Teller mutates, it should warn any Listener hooked to it using tellListeners().
|
virtualinherited |
Stop listening.
Use from a Hook::Listener object method:
where "this" is a Listener, "teller" is a Teller, and "this" has called teller->hook(this) previously.
listener | pointer to the listener |
|
protected |
boundaries of the spectro.
Depending on the kind, band_ is stored in Hz, log10(Hz), m or log10(m).
|
inherited |
Frequency (in Hz) at the boundaries of the spectral channels.
Array of size nboundaries_
Spectral channel i extends from
to
. Channels may or may not be contiguous or ordered.
|
inherited |
Indices in boundaries_.
Array of size 2*nsamples_
|
static |
"freq"
Use this static member attribute to check whether a Spectrometer object spectro is of this kind:
|
static |
"freqlog"
Use this static member attribute to check whether a Spectrometer object spectro is of this kind:
|
protectedinherited |
Spectrometer kind name.
The content is not copied. kind_ should be set (as a parameter to the Generic() constructor or using setKind()) to the adress of a static variable holding the name. This allows checking the kind using pointer comparison rather than string comparison.
|
inherited |
Effective frequency (in Hz) of each spectral channel.
Array of size nsamples_
|
static |
"wave"
Use this static member attribute to check whether a Spectrometer object spectro is of this kind:
"wave"
|
static |
"wavelog"
Use this static member attribute to check whether a Spectrometer object spectro is of this kind:
|
inherited |
Width of each channel.
Array of size nsamples_ (in Hz)