casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes
casa::FluxCalc_SS_JPL_Butler Class Reference

class ROScalarColumn<Double>; There doesn't seem to be a way to forward declare a template. More...

#include <FluxCalc_SS_JPL_Butler.h>

List of all members.

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

Detailed Description

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.

Intended use:

Public interface

Prerequisite

Etymology

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

Synopsis

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.

Example

Motivation

Make available and encapsulate the Butler Solar System flux density models.

To Do

Definition at line 88 of file FluxCalc_SS_JPL_Butler.h.


Member Enumeration Documentation

Enumerator:
Mercury 
Venus 
Mars 

Earth, // Too highly resolved.

Jupiter 
Io 
Ganymede 
Europa 
Callisto 
Titan 

Saturn, // Modeling the rings is too complicated.

Uranus 
Neptune 
Triton 
Pluto 
Ceres 
Pallas 
Vesta 
Juno 
Victoria 
Davida 
N_KNOWN 

Definition at line 153 of file FluxCalc_SS_JPL_Butler.h.


Constructor & Destructor Documentation

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.


Member Function Documentation

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.

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.

returns the number of objects supported by this class.

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.

Chooses an object, and returns whether was successful.

It ignores the case of objname.

Tries to set objnum_p to the KnownObject matching name_p.

Returns whether or not it found a match.


Member Data Documentation

Definition at line 272 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 267 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 255 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 256 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 269 of file FluxCalc_SS_JPL_Butler.h.

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.

Definition at line 247 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 261 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 249 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 253 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 270 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 265 of file FluxCalc_SS_JPL_Butler.h.

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.

Definition at line 268 of file FluxCalc_SS_JPL_Butler.h.

Definition at line 266 of file FluxCalc_SS_JPL_Butler.h.

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.

Definition at line 248 of file FluxCalc_SS_JPL_Butler.h.


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