36 {
"Undefined", kUndef_type, 0. },
37 {
"eV", kEnergy, 1e-3 },
38 {
"keV", kEnergy, 1. },
39 {
"MeV", kEnergy, 1e3 },
40 {
"GeV", kEnergy, 1e6 },
41 {
"TeV", kEnergy, 1e9 },
42 {
"as", kTime, 1e-18 },
43 {
"fs", kTime, 1e-15 },
44 {
"ps", kTime, 1e-12 },
51 {
"d", kTime, 86400. },
52 {
"y", kTime, 31556926. },
53 {
"am", kLenght, 1e-18 },
54 {
"fm", kLenght, 1e-15 },
55 {
"pm", kLenght, 1e-12 },
56 {
"nm", kLenght, 1e-9 },
57 {
"um", kLenght, 1e-6 },
58 {
"mm", kLenght, 1e-3 },
59 {
"cm", kLenght, 1e-2 },
61 {
"K", kNoConvUnits, 1. },
62 {
"C", kNoConvUnits, 1. },
63 {
"F", kNoConvUnits, 1. },
64 {
"u", kNoConvUnits, 1. },
65 {
"", kNoConvUnits, 1. },
66 {
"%", kNoConvUnits, 1. },
79 g_unit_manager =
this;
84 if ( g_unit_manager ==
nullptr ) {
88 return g_unit_manager;
93 fFactor(gunits->get_factor(fUnit_key)),
94 fValue(_value/fFactor)
111 fFactor = gunits->get_factor(fUnit_key);
112 fValue = _val*fFactor;
116 return set_unit(gunits->get_key(_unit));
120 if(_unit == gunits->Undef_unit)
return false;
126 if((gunits->get_type(fUnit_key) == gunits->kUndef_type) || (gunits->get_type(_unit) == gunits->get_type(fUnit_key))) {
128 fFactor = gunits->get_factor(fUnit_key);
132 if( ((gunits->get_type(fUnit_key) == gunits->kEnergy) && (gunits->get_type(_unit) == gunits->kTime)) ||
133 ((gunits->get_type(fUnit_key) == gunits->kTime) && (gunits->get_type(_unit) == gunits->kEnergy))) {
142 fValue = (1.054571818e-34*6.2415091e+15)*log(2) / fValue;
143 fFactor = gunits->get_factor(fUnit_key);
146 glog <<
warning_o <<
" sorry, unit conversion from " << gunits->get_name(fUnit_key) <<
" to " << gunits->get_name(_unit) <<
" not handle by TkN for the moment" <<
do_endl;
std::string with usefull tricks from TString (ROOT) and KVString (KaliVeda) and more....
Manages the different units.
units_keys
units identifiers
static std::vector< std::tuple< tkstring, units_type, double > > funits_properties
static tkunit_manager * the_unit_manager()
db_manager is a singleton
A measured value associated to its unit.
void set_value(const double &_val, const tkstring &_unit="")
set the value and unit from string, if _unit not defined, let in the current unit
bool set_unit(const tkstring &_unit)
set the unit from a string
tklog & warning_o(tklog &log)
tklog & do_endl(tklog &log)