casacore
|
#include <UnitMap.h>
Public Member Functions | |
UnitMap () | |
Default constructor of maps. More... | |
~UnitMap () | |
Destructor. More... | |
Static Public Member Functions | |
static Bool | getPref (const String &s, UnitName &name, UMaps *maps=0) |
Check if a unit name is known, and return its value if True More... | |
static Bool | getUnit (const String &s, UnitName &name, UMaps *maps=0) |
Get a standard unit definition (search order: User, Customary, SI) More... | |
static Bool | getCache (const String &s, UnitVal &val) |
Get a cached definition. More... | |
static void | putCache (const String &s, const UnitVal &val) |
Save a definition of a full unit name in the cache (the cache will be cleared if getting too large (200 entries) More... | |
static void | putUser (const String &s, const UnitVal &val) |
Define a user defined standard unit. More... | |
static void | putUser (const String &s, const UnitVal &val, const String &name) |
static void | putUser (const UnitName &name) |
static void | removeUser (const String &name) |
Remove a user unit. More... | |
static void | removeUser (const UnitName &name) |
static void | clearCache () |
Clear out the cache. More... | |
static void | addFITS () |
Define FITS related unit names. More... | |
static void | clearFITS () |
Clear FITS related units from user list. More... | |
static Unit | fromFITS (const Unit &un) |
Translate a FITS unit to the proper units. More... | |
static Unit | toFITS (const Unit &un) |
Translate to a FITS unit. More... | |
static void | list (ostream &os) |
List some part of the standard unit lists on cout or stream More... | |
static void | list () |
static void | listCache (ostream &os) |
List all units in cache. More... | |
static void | listCache () |
static void | listPref (ostream &os) |
List all prefixes. More... | |
static void | listPref () |
static void | listDef (ostream &os) |
List all defining units. More... | |
static void | listDef () |
static void | listSI (ostream &os) |
List all SI units. More... | |
static void | listSI () |
static void | listCust (ostream &os) |
List all customary units. More... | |
static void | listCust () |
static void | listUser (ostream &os) |
List all user defined units. More... | |
static void | listUser () |
static const map< String, UnitName > & | givePref () |
Return the different maps. More... | |
static const map< String, UnitName > & | giveDef () |
static const map< String, UnitName > & | giveSI () |
static const map< String, UnitName > & | giveCust () |
static const map< String, UnitName > & | giveUser () |
static const map< String, UnitVal > & | giveCache () |
Private Member Functions | |
UnitMap (const UnitMap &other) | |
Copy constructor (not implemented) More... | |
UnitMap & | operator= (const UnitMap &other) |
Copy assignment (not implemented) More... | |
Static Private Member Functions | |
static UMaps & | getMaps () |
Get the static UMaps struct. More... | |
static map< String, UnitVal > & | getMapCache () |
Get the static mapCache object. More... | |
static Bool | getNameFITS (const UnitName *&name, uInt which) |
Get the name of a FITS unit. More... | |
static const String & | getStringFITS (uInt which) |
Get the belonging unit to a FITS unit. More... | |
static void | initUM () |
static void | initUMPrefix (UMaps &) |
Bits and pieces of initUM() to get compilation speed improved. More... | |
static void | initUMSI1 (UMaps &) |
static void | initUMSI2 (UMaps &) |
static void | initUMCust1 (UMaps &) |
static void | initUMCust2 (UMaps &) |
static void | initUMCust3 (UMaps &) |
Static Private Attributes | |
static std::mutex | fitsMutex |
Friends | |
class | UMaps |
contains all simple known physical units
Public interface
Based on Units and the Casacore container classes called 'Map'
Physical units are strings consisting of one or more names of known basic units, separated by '.' or ' ' (for multiplication) or '/' (for division). Each name can optionally be preceded by a standard decimal prefix, and/or followed by an (optionally signed) exponent. Example: km/s/(Mpc.s)2 is identical to km.s-1.Mpc-2.s-2
See the Unit class for more details.
The UnitMap class contains the known standard basic units, and any other basic unit defined by the user of the Unit related classes. The known units are divided into 5 different groups:
The full list of known units can be viewed by running the tUnit test program.
Caution: There is a difference between units without a dimension (non-dimensioned I will call them), and undimensioned units; Non-dimensioned examples are "", "%"; undimensioned examples: "beam", "pixel";
Information about the contents of the unit maps can be obtained by the Bool functions (False if not present):
The standard units can be viewed by the following commands, which output to cout:
Units can be defined in the user list by:
Tip: The cache will be cleared if a user defined unit is overwritten, to make sure no old value will be used;
Caution: If using an explicit Unit variable (e;g; Unit a("5Bolton/beam")
), the check on the legality of the given string, and the conversion to the cached canonical value in the variable 'a', is only done at creation time; This means that if the user changes the value of a unit involved by the putUser() method, the unit using it should be re-created ( a = Unit("5Bolton/beam");
);
A special set of 'units' used in FITS datasets can be added by the command
This set can be cleared from the user table by:
Note that Unitmap keeps track of the inclusion of the FITS inclusion, making multiple calls inexpensive. The list of current FITS units can be viewed by running the tUnit program, or looking at the FITSunit table.
Once the UnitMap::addFITS() has been run, the FITS units can be used as any other unit. In addition, a FITS unit can be translated to standard SI units by a call to Unit UnitMap::fromFITS(const Unit). Any unit that is defined as a standard FITS unit will be translated. Unknown ones will not be translated, making the way clear for having standard units in a FITS units string. A comparable toFITS() translates in the same way in the reversed direction.
The cache can be cleared by:
Define a value for the unit 'beam':
List current cache:
Standard list available to try to enhance use of SI and related units
casacore::UnitMap::UnitMap | ( | ) |
Default constructor of maps.
casacore::UnitMap::~UnitMap | ( | ) |
Destructor.
|
private |
Copy constructor (not implemented)
|
static |
Define FITS related unit names.
|
static |
Clear out the cache.
|
static |
Clear FITS related units from user list.
Get a cached definition.
Get the name of a FITS unit.
Get the belonging unit to a FITS unit.
|
static |
Get a standard unit definition (search order: User, Customary, SI)
Return the different maps.
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
staticprivate |
Bits and pieces of initUM() to get compilation speed improved.
|
staticprivate |
|
staticprivate |
|
static |
|
static |
|
static |
|
static |
List all units in cache.
|
static |
|
static |
List all customary units.
|
static |
|
static |
List all defining units.
|
static |
|
static |
List all prefixes.
|
static |
|
static |
List all SI units.
|
static |
|
static |
List all user defined units.
Copy assignment (not implemented)
Save a definition of a full unit name in the cache (the cache will be cleared if getting too large (200 entries)
Define a user defined standard unit.
If the unit is being redefined, and it has already been used in a user's Unit
variable, the value cached in that variable will not change.
|
static |
|
static |
|
static |
Remove a user unit.
|
static |