casa
$Rev:20696$
|
class ROScalarColumn<Double>; There doesn't seem to be a way to forward declare a template. More...
#include <FluxCalc_SS_JPL_Butler.h>
Public Member Functions | |
FluxCalc_SS_JPL_Butler () | |
Default constructor; provided mainly so an array of these can be made more easily. | |
FluxCalc_SS_JPL_Butler (const String &objname, const MEpoch &time) | |
The more useful constructor. | |
~FluxCalc_SS_JPL_Butler () | |
Bool | setObj (const String &objname) |
Chooses an object, and returns whether was successful. | |
void | setTime (const MEpoch &time) |
Bool | getName (String &output) const |
void setFreq(const MFrequency& freq); | |
Bool | getTime (MEpoch &output) const |
MDirection | getDirection () |
Bool getFreq(MFrequency& output) const;. | |
ComponentType::Shape | getShape (Double &angdiam) |
Sets angdiam to the source's angular diameter in radians and returns the object's component type (i.e. | |
Double | getHeliocentricDist () |
Returns the distance from the object to the Sun in AU, or -1 if unknown. | |
uInt | n_known () const |
returns the number of objects supported by this class. | |
ComponentType::Shape | compute (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, Double &angdiam, const Vector< MFrequency > &mfreqs, const Bool report=True) |
Compute the flux densities, their uncertainties, and the angular diameter of the calibration source for a set of frequencies. | |
ComponentType::Shape | compute (Vector< Vector< Flux< Double > > > &values, Vector< Vector< Flux< Double > > > &errors, Double &angdiam, const Vector< Vector< MFrequency > > &mfreqs) |
Same as the above, but for a set of sets of frequencies, i.e. | |
Private Types | |
enum | KnownObjects { Mercury, Venus, Mars, Jupiter, Io, Ganymede, Europa, Callisto, Titan, Uranus, Neptune, Triton, Pluto, Ceres, Pallas, Vesta, Juno, Victoria, Davida, N_KNOWN } |
Private Member Functions | |
Bool | setObjNum () |
Tries to set objnum_p to the KnownObject matching name_p. | |
Bool | readEphem () |
Reads a JPL-Horizons ephemeris table to get temperature_p, r_p (heliocentric distance), delta_p (geocentric distance), and phang_p (phase angle). | |
void | compute_BB (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
Compute the flux densities assuming a uniform disk blackbody, and their uncertainties. | |
void | compute_GB (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs, const Vector< Double > &temps) |
Like compute_BB(), except it uses a graybody model where each frequency has a corresponding temperature. | |
void | compute_venus (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
void | compute_jupiter (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
void | compute_uranus (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
void | compute_neptune (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
void | compute_pluto (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs) |
Bool | compute_constant_temperature (Vector< Flux< Double > > &values, Vector< Flux< Double > > &errors, const Double angdiam, const Vector< MFrequency > &mfreqs, const Bool report=True) |
Uses objnum_p to look up a mean temperature, and uses that. | |
Bool | get_row_numbers (uInt &rowbef, uInt &rowclosest, uInt &rowaft, const ROScalarColumn< Double > &mjd) |
Find the row in mjd closest to time_p, and the rows just before and after it, taking boundaries into account. | |
Static Private Member Functions | |
static Bool | get_interpolated_value (Double &val, const String &colname, const Table &tab, const uInt rowbef, const uInt rowclosest, const uInt rowaft, const Double f, const Double dt, const Double tp1mt0, const Double t0mtm1, const Bool verbose=True) |
Put a quadratic, linear, or nearest neighbor interpolation of colname into val. | |
Private Attributes | |
String | name_p |
Data members which are initialized in the c'tor's initialization list: | |
Bool | hasName_p |
MEpoch | time_p |
Bool | hasTime_p |
Bool | hasEphemInfo_p |
MFrequency freq_p; Bool hasFreq_p;. | |
Unit | hertz_p |
Bool | has_ra_p |
Bool | has_dec_p |
Bool | has_illu_p |
FluxCalc_SS_JPL_Butler::KnownObjects | objnum_p |
These are also initialized by the c'tor, but not in the initialization list: | |
Bool | hasObjNum_p |
Double | temperature_p |
Data members that are not initialized by the c'tor: | |
Double | mean_rad_p |
Double | r_p |
Double | delta_p |
Double | phang_p |
Bool | has_r_p |
Double | illu_p |
Double | ra_p |
Double | dec_p |
class ROScalarColumn<Double>; There doesn't seem to be a way to forward declare a template.
FluxCalc_SS_JPL_Butler: Compute flux densities and get angular diameters for standard Solar System reference sources.
Public interface
From "flux density", "Solar System", "JPL" (ephemeris provides position and angular diameter), and (Bryan) "Butler" (provides model to convert the above to a flux density).
This class organizes a set of functions to compute expected flux densities and angular diameters for several Solar System sources commonly used for flux calibration in (sub)mm astronomy.
Make available and encapsulate the Butler Solar System flux density models.
Definition at line 88 of file FluxCalc_SS_JPL_Butler.h.
enum casa::FluxCalc_SS_JPL_Butler::KnownObjects [private] |
Definition at line 153 of file FluxCalc_SS_JPL_Butler.h.
Default constructor; provided mainly so an array of these can be made more easily.
(Not that there appears to be an immediate need for that.)
casa::FluxCalc_SS_JPL_Butler::FluxCalc_SS_JPL_Butler | ( | const String & | objname, |
const MEpoch & | time | ||
) |
The more useful constructor.
ComponentType::Shape casa::FluxCalc_SS_JPL_Butler::compute | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
Double & | angdiam, | ||
const Vector< MFrequency > & | mfreqs, | ||
const Bool | report = True |
||
) |
Compute the flux densities, their uncertainties, and the angular diameter of the calibration source for a set of frequencies.
It will try to read the right table in data/ephemerides/JPL-Horizons/.
Return value: the model's shape, or UNKNOWN_SHAPE on failure. Inputs: must be already set, or it returns UNKNOWN_SHAPE. report: If False, suppress logger messages like e.g. references for the temperature. Intended for use in a loop, i.e. print the messages for the 1st spw but do not repeat them for the others. Output args: value: the calculated flux. error: the estimated uncertainty of value. angdiam: angular diameter in radians
ComponentType::Shape casa::FluxCalc_SS_JPL_Butler::compute | ( | Vector< Vector< Flux< Double > > > & | values, |
Vector< Vector< Flux< Double > > > & | errors, | ||
Double & | angdiam, | ||
const Vector< Vector< MFrequency > > & | mfreqs | ||
) |
Same as the above, but for a set of sets of frequencies, i.e.
mfreqs[spw] is a set of frequencies for channels in spectral window spw.
void casa::FluxCalc_SS_JPL_Butler::compute_BB | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
Compute the flux densities assuming a uniform disk blackbody, and their uncertainties.
It does not check whether everything is setup, since it assumes compute() already took care of it!
Bool casa::FluxCalc_SS_JPL_Butler::compute_constant_temperature | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs, | ||
const Bool | report = True |
||
) | [private] |
Uses objnum_p to look up a mean temperature, and uses that.
report: If False, suppress logger messages like references for the temperature. Intended for use in a loop, i.e. print the messages for the 1st spw but do not repeat them for the others. Returns whether or not it was successful.
void casa::FluxCalc_SS_JPL_Butler::compute_GB | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs, | ||
const Vector< Double > & | temps | ||
) | [private] |
Like compute_BB(), except it uses a graybody model where each frequency has a corresponding temperature.
void casa::FluxCalc_SS_JPL_Butler::compute_jupiter | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
void casa::FluxCalc_SS_JPL_Butler::compute_neptune | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
void casa::FluxCalc_SS_JPL_Butler::compute_pluto | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
void casa::FluxCalc_SS_JPL_Butler::compute_uranus | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
void casa::FluxCalc_SS_JPL_Butler::compute_venus | ( | Vector< Flux< Double > > & | values, |
Vector< Flux< Double > > & | errors, | ||
const Double | angdiam, | ||
const Vector< MFrequency > & | mfreqs | ||
) | [private] |
static Bool casa::FluxCalc_SS_JPL_Butler::get_interpolated_value | ( | Double & | val, |
const String & | colname, | ||
const Table & | tab, | ||
const uInt | rowbef, | ||
const uInt | rowclosest, | ||
const uInt | rowaft, | ||
const Double | f, | ||
const Double | dt, | ||
const Double | tp1mt0, | ||
const Double | t0mtm1, | ||
const Bool | verbose = True |
||
) | [static, private] |
Put a quadratic, linear, or nearest neighbor interpolation of colname into val.
Returns whether or not it did it. verbose: Send a message to the logger if nearest neighbor is used.
Bool casa::FluxCalc_SS_JPL_Butler::get_row_numbers | ( | uInt & | rowbef, |
uInt & | rowclosest, | ||
uInt & | rowaft, | ||
const ROScalarColumn< Double > & | mjd | ||
) | [private] |
Find the row in mjd closest to time_p, and the rows just before and after it, taking boundaries into account.
Bool getFreq(MFrequency& output) const;.
Returns the default direction (N. Pole) on failure.
Returns the distance from the object to the Sun in AU, or -1 if unknown.
Bool casa::FluxCalc_SS_JPL_Butler::getName | ( | String & | output | ) | const |
void setFreq(const MFrequency& freq);
These return whether or not the item has been set, and if has, copy their item to the arg.
Sets angdiam to the source's angular diameter in radians and returns the object's component type (i.e.
DISK), or UNKNOWN_SHAPE on failure.
Bool casa::FluxCalc_SS_JPL_Butler::getTime | ( | MEpoch & | output | ) | const |
uInt casa::FluxCalc_SS_JPL_Butler::n_known | ( | ) | const |
returns the number of objects supported by this class.
Bool casa::FluxCalc_SS_JPL_Butler::readEphem | ( | ) | [private] |
Reads a JPL-Horizons ephemeris table to get temperature_p, r_p (heliocentric distance), delta_p (geocentric distance), and phang_p (phase angle).
Returns whether or not it was able to get the info.
Bool casa::FluxCalc_SS_JPL_Butler::setObj | ( | const String & | objname | ) |
Chooses an object, and returns whether was successful.
It ignores the case of objname.
Bool casa::FluxCalc_SS_JPL_Butler::setObjNum | ( | ) | [private] |
Tries to set objnum_p to the KnownObject matching name_p.
Returns whether or not it found a match.
void casa::FluxCalc_SS_JPL_Butler::setTime | ( | const MEpoch & | time | ) |
Double casa::FluxCalc_SS_JPL_Butler::dec_p [private] |
Definition at line 272 of file FluxCalc_SS_JPL_Butler.h.
Double casa::FluxCalc_SS_JPL_Butler::delta_p [private] |
Definition at line 267 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::has_dec_p [private] |
Definition at line 255 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::has_illu_p [private] |
Definition at line 256 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::has_r_p [private] |
Definition at line 269 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::has_ra_p [private] |
Definition at line 254 of file FluxCalc_SS_JPL_Butler.h.
MFrequency freq_p; Bool hasFreq_p;.
Definition at line 252 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::hasName_p [private] |
Definition at line 247 of file FluxCalc_SS_JPL_Butler.h.
Definition at line 261 of file FluxCalc_SS_JPL_Butler.h.
Bool casa::FluxCalc_SS_JPL_Butler::hasTime_p [private] |
Definition at line 249 of file FluxCalc_SS_JPL_Butler.h.
Unit casa::FluxCalc_SS_JPL_Butler::hertz_p [private] |
Definition at line 253 of file FluxCalc_SS_JPL_Butler.h.
Double casa::FluxCalc_SS_JPL_Butler::illu_p [private] |
Definition at line 270 of file FluxCalc_SS_JPL_Butler.h.
Definition at line 265 of file FluxCalc_SS_JPL_Butler.h.
String casa::FluxCalc_SS_JPL_Butler::name_p [private] |
Data members which are initialized in the c'tor's initialization list:
Definition at line 246 of file FluxCalc_SS_JPL_Butler.h.
These are also initialized by the c'tor, but not in the initialization list:
Definition at line 260 of file FluxCalc_SS_JPL_Butler.h.
Double casa::FluxCalc_SS_JPL_Butler::phang_p [private] |
Definition at line 268 of file FluxCalc_SS_JPL_Butler.h.
Double casa::FluxCalc_SS_JPL_Butler::r_p [private] |
Definition at line 266 of file FluxCalc_SS_JPL_Butler.h.
Double casa::FluxCalc_SS_JPL_Butler::ra_p [private] |
Definition at line 271 of file FluxCalc_SS_JPL_Butler.h.
Data members that are not initialized by the c'tor:
Definition at line 264 of file FluxCalc_SS_JPL_Butler.h.
MEpoch casa::FluxCalc_SS_JPL_Butler::time_p [private] |
Definition at line 248 of file FluxCalc_SS_JPL_Butler.h.