|
virtual double | generateWavelength () const =0 |
|
virtual double | integratedLuminosity (const Range &wavelengthRange) const =0 |
|
virtual Range | intrinsicWavelengthRange () const =0 |
|
Range | normalizationWavelengthRange () const |
|
template<class T > |
T * | find (bool setup=true) const |
|
template<class T > |
T * | interface (int levels=-999999, bool setup=true) const |
|
virtual string | itemName () const |
|
void | setup () |
|
string | typeAndName () const |
|
| Item (const Item &)=delete |
|
virtual | ~Item () |
|
void | addChild (Item *child) |
|
const vector< Item * > & | children () const |
|
virtual void | clearItemListProperty (const PropertyDef *property) |
|
void | destroyChild (Item *child) |
|
virtual bool | getBoolProperty (const PropertyDef *property) const |
|
virtual vector< double > | getDoubleListProperty (const PropertyDef *property) const |
|
virtual double | getDoubleProperty (const PropertyDef *property) const |
|
virtual string | getEnumProperty (const PropertyDef *property) const |
|
virtual int | getIntProperty (const PropertyDef *property) const |
|
virtual vector< Item * > | getItemListProperty (const PropertyDef *property) const |
|
virtual Item * | getItemProperty (const PropertyDef *property) const |
|
virtual string | getStringProperty (const PropertyDef *property) const |
|
int | getUtilityProperty (string name) const |
|
virtual void | insertIntoItemListProperty (const PropertyDef *property, int index, Item *item) |
|
Item & | operator= (const Item &)=delete |
|
Item * | parent () const |
|
virtual void | removeFromItemListProperty (const PropertyDef *property, int index) |
|
virtual void | setBoolProperty (const PropertyDef *property, bool value) |
|
virtual void | setDoubleListProperty (const PropertyDef *property, vector< double > value) |
|
virtual void | setDoubleProperty (const PropertyDef *property, double value) |
|
virtual void | setEnumProperty (const PropertyDef *property, string value) |
|
virtual void | setIntProperty (const PropertyDef *property, int value) |
|
virtual void | setItemProperty (const PropertyDef *property, Item *item) |
|
virtual void | setStringProperty (const PropertyDef *property, string value) |
|
void | setUtilityProperty (string name, int value) |
|
virtual string | type () const |
|
An instance of a SED subclass represents a spectral energy distribution \(L_\lambda\), i.e. power per unit of wavelength. This abstract base class just defines an interface that must be implemented by each subclass. The two key operations supported by all SEDs are drawing a random wavelength from the spectral energy distribution and calculating the integrated luminosity over a given wavelength range.
There are two important categories of emission spectra, each represented by an abstract SED subclass:
- ContSED: regular continuous spectra. These SEDs allow obtaining the specific luminosity at a given wavelength or for a sampled range of wavelengths. They support all operations of the code to the fullest degree possible.
- LineSED: line emission spectra, consisting of one or more discrete emission lines with zero width. Mathematically, the specific luminosity is infinite at the line wavelengths and zero everywhere else, while the integrated luminosity over one or more lines is finite. In practice, the specific luminosity is numerically undefined, imposing important restrictions. For example, luminosity normalization must use integration over a wavelength range and the mechanism for wavelength biasing does not work.
Each SED subclass, regardless of its category, must ensure that the implemented spectral energy distribution is normalized to unity over the normalization wavelength range, which is defined as the intersection of the source wavelength range (determined by the SourceSystem) and the intrinsic wavelength range of the implemented distribution (determined by the SED subclass). A convenience function offered by this abstract base class returns this normalization wavelength range.
Specifically, this means that the random wavelengths returned by the generateWavelength() function will always fall inside the normalization range. On the other hand, while the functions calculating specific and integrated luminosities use the same normalization, they operate across the full intrinsic wavelength range of the SED without being limited by the source wavelength range. This makes it possible for a user to configure a luminosity normalization at a wavelength (or over a wavelength range) outside of the wavelength range where the sources are actually emitting.