REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Data Structures | Enumerations | Functions | Variables
REST_Units Namespace Reference

This namespace defines the unit conversion for different units which are understood by REST. More...

Data Structures

class  TRestSystemOfUnits
 
struct  UnitsStruct
 

Enumerations

enum  Physical_Unit {
  Energy , Time , Length , Mass ,
  Voltage , MagneticField , Pressure , Angle ,
  NOT_A_UNIT = -1
}
 

Functions

double _AddUnit (string name, int type, double scale)
 Add a unit with given name, type and scale. More...
 
 AddUnit (arcmin, REST_Units::Angle, TMath::RadToDeg() *60.)
 
 AddUnit (arcsec, REST_Units::Angle, TMath::RadToDeg() *3600.)
 
 AddUnit (atm, REST_Units::Pressure, 1.013)
 
 AddUnit (bar, REST_Units::Pressure, 1.)
 
 AddUnit (cm, REST_Units::Length, 1e-1)
 
 AddUnit (day, REST_Units::Time, 1e-6/3600./24.)
 
 AddUnit (days, REST_Units::Time, 1e-6/3600./24.)
 
 AddUnit (deg, REST_Units::Angle, TMath::RadToDeg())
 
 AddUnit (degree, REST_Units::Angle, TMath::RadToDeg())
 
 AddUnit (degrees, REST_Units::Angle, TMath::RadToDeg())
 
 AddUnit (eV, REST_Units::Energy, 1e3)
 
 AddUnit (G, REST_Units::MagneticField, 1.e4)
 
 AddUnit (g, REST_Units::Mass, 1e3)
 
 AddUnit (GeV, REST_Units::Energy, 1e-6)
 
 AddUnit (gram, REST_Units::Mass, 1e3)
 
 AddUnit (hours, REST_Units::Time, 1e-6/3600.)
 
 AddUnit (hr, REST_Units::Time, 1e-6/3600.)
 
 AddUnit (Hz, REST_Units::Time, 1.e6)
 
 AddUnit (J, REST_Units::Energy, 1.60e-19)
 
 AddUnit (keV, REST_Units::Energy, 1)
 
 AddUnit (kg, REST_Units::Mass, 1.)
 
 AddUnit (kJ, REST_Units::Energy, 1.60e-22)
 
 AddUnit (kPa, REST_Units::Pressure, 101.325)
 
 AddUnit (kV, REST_Units::Voltage, 1.e-3)
 
 AddUnit (m, REST_Units::Length, 1e-3)
 
 AddUnit (mbar, REST_Units::Pressure, 1.e3)
 
 AddUnit (MeV, REST_Units::Energy, 1e-3)
 
 AddUnit (meV, REST_Units::Energy, 1e6)
 
 AddUnit (mg, REST_Units::Mass, 1e6)
 
 AddUnit (minu, REST_Units::Time, 1.e-6/60.)
 
 AddUnit (minutes, REST_Units::Time, 1.e-6/60.)
 
 AddUnit (mm, REST_Units::Length, 1.)
 
 AddUnit (mon, REST_Units::Time, 1e-6/3600./24./30)
 
 AddUnit (months, REST_Units::Time, 1e-6/3600./24./30)
 
 AddUnit (MPa, REST_Units::Pressure, 0.101325)
 
 AddUnit (mPa, REST_Units::Pressure, 10132500)
 
 AddUnit (ms, REST_Units::Time, 1.e-3)
 
 AddUnit (mT, REST_Units::MagneticField, 1.e3)
 
 AddUnit (mV, REST_Units::Voltage, 1.e3)
 
 AddUnit (nm, REST_Units::Length, 1e6)
 
 AddUnit (ns, REST_Units::Time, 1.e3)
 
 AddUnit (Pa, REST_Units::Pressure, 101325)
 
 AddUnit (rad, REST_Units::Angle, 1.)
 
 AddUnit (radian, REST_Units::Angle, 1.)
 
 AddUnit (radians, REST_Units::Angle, 1.)
 
 AddUnit (s, REST_Units::Time, 1.e-6)
 
 AddUnit (T, REST_Units::MagneticField, 1.)
 
 AddUnit (ton, REST_Units::Mass, 1e-3)
 
 AddUnit (torr, REST_Units::Pressure, 760)
 
 AddUnit (um, REST_Units::Length, 1e3)
 
 AddUnit (us, REST_Units::Time, 1.)
 
 AddUnit (V, REST_Units::Voltage, 1.)
 
 AddUnit (years, REST_Units::Time, 1e-6/3600./24./365.25)
 
 AddUnit (yr, REST_Units::Time, 1e-6/3600./24./365.25)
 
Double_t ConvertRESTUnitsValueToCustomUnits (Double_t value, string unitsStr)
 Convert value with REST units into the given custom units.
 
Double_t ConvertValueToRESTUnits (Double_t value, string unitsStr)
 Convert value into REST units. More...
 
std::string FindRESTUnitsInString (string s)
 Find and return the units definition in a string. More...
 
TVector2 Get2DVectorInRESTUnits (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
TVector2 Get2DVectorValueInString (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
TVector3 Get3DVectorInRESTUnits (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
TVector3 Get3DVectorValueInString (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
Double_t GetDblValueInRESTUnits (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
Double_t GetDblValueInString (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
double GetScaleToStandardUnit (string unitsdef)
 Get the scale to REST standard unit. scale (unitsdef) = 1 (standard unit) More...
 
std::string GetStandardUnitDefinition (string unitsdef)
 Get standard form of this unit definition. More...
 
Double_t GetValueInRESTUnits (string in)
 It scales a physics measurement with its units into a REST default units value. More...
 
bool IsBasicUnit (string unitsStr)
 Checks if the string is a REST basic unit.
 
bool IsUnit (string unitsStr)
 Checks if the string is a REST supported unit. More...
 
std::string RemoveUnitsFromString (string s)
 It should remove all units found inside the input string. More...
 

Variables

map< string, pair< int, double > > __ListOfRESTUnits
 

Detailed Description

This namespace defines the unit conversion for different units which are understood by REST.

Author
Javier Galan
Kaixiang Ni

Function Documentation

◆ _AddUnit()

double REST_Units::_AddUnit ( string  name,
int  type,
double  scale 
)

Add a unit with given name, type and scale.

Helper method, called during __static_initialization_and_destruction_0() to fill __ListOfRESTUnits

Definition at line 255 of file TRestSystemOfUnits.cxx.

◆ ConvertValueToRESTUnits()

Double_t REST_Units::ConvertValueToRESTUnits ( Double_t  value,
string  unitsStr 
)

Convert value into REST units.

For a given value with custom units, REST will first find its equivalent REST units and calculate the scaling factor. Then it will strip off the custom units by dividing the value with the scaling factor.

e.g. REST standard unit for dimension time*mass is kg*us. When we call: double a = ConvertValueToRESTUnits(8, "kg-yr"); // a = 2.5236593e+14 The returned value is in unit "kg-us".

The returned the value can be thought as "unitless". This means we don't need to care about it when saving it. When we are going to use it, we just add the unit back. For example: SetExposure(a*units("ton-day")); This explictily adds the unit "ton-day" to the "unitless" value a.

Definition at line 239 of file TRestSystemOfUnits.cxx.

◆ FindRESTUnitsInString()

std::string REST_Units::FindRESTUnitsInString ( string  s)

Find and return the units definition in a string.

We suppose the last of value before units must be "1234567890(),.-". Hence this prepority can be used to spilt the input string into value part and unit part e.g. value="(1,-13)mm" value="-3mm" can both be recognized

Definition at line 122 of file TRestSystemOfUnits.cxx.

◆ Get2DVectorInRESTUnits()

TVector2 REST_Units::Get2DVectorInRESTUnits ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "(0,5)MeV", return (0,5000) (keV)

Definition at line 201 of file TRestSystemOfUnits.cxx.

◆ Get2DVectorValueInString()

TVector2 REST_Units::Get2DVectorValueInString ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "(0,5)MeV", return (0,5000) (keV)

Definition at line 188 of file TRestSystemOfUnits.cxx.

◆ Get3DVectorInRESTUnits()

TVector3 REST_Units::Get3DVectorInRESTUnits ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "(0,5,6)cm", return (0,50,60) mm

Definition at line 222 of file TRestSystemOfUnits.cxx.

◆ Get3DVectorValueInString()

TVector3 REST_Units::Get3DVectorValueInString ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "(0,5,6)cm", return (0,50,60) mm

Definition at line 208 of file TRestSystemOfUnits.cxx.

◆ GetDblValueInRESTUnits()

Double_t REST_Units::GetDblValueInRESTUnits ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "35.V/cm", return 3.5 (V/mm)

Definition at line 181 of file TRestSystemOfUnits.cxx.

◆ GetDblValueInString()

Double_t REST_Units::GetDblValueInString ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "35.V/cm", return 3.5 (V/mm)

Definition at line 163 of file TRestSystemOfUnits.cxx.

◆ GetScaleToStandardUnit()

double REST_Units::GetScaleToStandardUnit ( string  unitsdef)

Get the scale to REST standard unit. scale (unitsdef) = 1 (standard unit)

e.g. 0.001(m) = 1(mm). Where "mm" is REST standard unit.

Definition at line 104 of file TRestSystemOfUnits.cxx.

◆ GetStandardUnitDefinition()

std::string REST_Units::GetStandardUnitDefinition ( string  unitsdef)

Get standard form of this unit definition.

e.g. m/s --> mm/us

Definition at line 110 of file TRestSystemOfUnits.cxx.

◆ GetValueInRESTUnits()

Double_t REST_Units::GetValueInRESTUnits ( string  in)

It scales a physics measurement with its units into a REST default units value.

For example, string in = "35.V/cm", return 3.5 (V/mm)

Definition at line 174 of file TRestSystemOfUnits.cxx.

◆ IsUnit()

bool REST_Units::IsUnit ( string  unitsStr)

Checks if the string is a REST supported unit.

REST supports several basic units and kinds of their combinations(multiply, divide) e.g. cm, ns, mV, kg, keV V/cm, kg-yr

Note: REST doesn't support units combination with numbers, e.g. m/s^2

Definition at line 93 of file TRestSystemOfUnits.cxx.

◆ RemoveUnitsFromString()

std::string REST_Units::RemoveUnitsFromString ( string  s)

It should remove all units found inside the input string.

We suppose the last of value before units must be "1234567890(),.-eE". Hence this prepority can be used to spilt the input string into value part and unit part e.g. value="(1,-13)mm" value="-3mm" value="6e-5mm" can both be recognized

Definition at line 143 of file TRestSystemOfUnits.cxx.