3 #include "CLHEP/Units/GlobalSystemOfUnits.h" 14 :
Name(name), SymbolName(symbol),
Value(value) {
71 for (
size_t j = 0;
j < units.size();
j++) {
72 name = units[
j]->GetName();
73 symbol = units[
j]->GetSymbol();
74 if (stri == name || stri == symbol)
75 return units[
j]->GetValue();
78 std::cout <<
"Warning from ALIUnitDefinition::GetValueOf(" << stri <<
")." 79 <<
" The unit " << stri <<
" does not exist in UnitsTable." 80 <<
" Return Value = 0." << std::endl;
92 for (
size_t j = 0;
j < units.size();
j++) {
93 name = units[
j]->GetName();
94 symbol = units[
j]->GetSymbol();
95 if (stri == name || stri == symbol)
99 std::cout <<
"Warning from ALIUnitDefinition::GetCategory(" << stri <<
")." 100 <<
" The unit " << stri <<
" does not exist in UnitsTable." 101 <<
" Return category = None" << std::endl;
118 std::make_shared<ALIUnitDefinition>(
"kilometer",
"km",
"Length", kilometer);
119 std::make_shared<ALIUnitDefinition>(
"meter",
"m",
"Length", meter);
120 std::make_shared<ALIUnitDefinition>(
"centimeter",
"cm",
"Length", centimeter);
121 std::make_shared<ALIUnitDefinition>(
"millimeter",
"mm",
"Length", millimeter);
122 std::make_shared<ALIUnitDefinition>(
"micrometer",
"mum",
"Length", micrometer);
123 std::make_shared<ALIUnitDefinition>(
"nanometer",
"nm",
"Length", nanometer);
124 std::make_shared<ALIUnitDefinition>(
"angstrom",
"Ang",
"Length", angstrom);
125 std::make_shared<ALIUnitDefinition>(
"fermi",
"fm",
"Length",
fermi);
128 std::make_shared<ALIUnitDefinition>(
"kilometer2",
"km2",
"Surface", kilometer2);
129 std::make_shared<ALIUnitDefinition>(
"meter2",
"m2",
"Surface", meter2);
130 std::make_shared<ALIUnitDefinition>(
"centimeter2",
"cm2",
"Surface", centimeter2);
131 std::make_shared<ALIUnitDefinition>(
"millimeter2",
"mm2",
"Surface", millimeter2);
132 std::make_shared<ALIUnitDefinition>(
"barn",
"barn",
"Surface", barn);
133 std::make_shared<ALIUnitDefinition>(
"millibarn",
"mbarn",
"Surface", millibarn);
134 std::make_shared<ALIUnitDefinition>(
"microbarn",
"mubarn",
"Surface", microbarn);
135 std::make_shared<ALIUnitDefinition>(
"nanobarn",
"nbarn",
"Surface", nanobarn);
136 std::make_shared<ALIUnitDefinition>(
"picobarn",
"pbarn",
"Surface", picobarn);
139 std::make_shared<ALIUnitDefinition>(
"kilometer3",
"km3",
"Volume", kilometer3);
140 std::make_shared<ALIUnitDefinition>(
"meter3",
"m3",
"Volume", meter3);
141 std::make_shared<ALIUnitDefinition>(
"centimeter3",
"cm3",
"Volume", centimeter3);
142 std::make_shared<ALIUnitDefinition>(
"millimeter3",
"mm3",
"Volume", millimeter3);
145 std::make_shared<ALIUnitDefinition>(
"radian",
"rad",
"Angle", radian);
146 std::make_shared<ALIUnitDefinition>(
"milliradian",
"mrad",
"Angle", milliradian);
147 std::make_shared<ALIUnitDefinition>(
"milliradian",
"murad",
"Angle", 0.001 * milliradian);
148 std::make_shared<ALIUnitDefinition>(
"steradian",
"sr",
"Angle", steradian);
149 std::make_shared<ALIUnitDefinition>(
"degree",
"deg",
"Angle", degree);
152 std::make_shared<ALIUnitDefinition>(
"second",
"s",
"Time",
second);
153 std::make_shared<ALIUnitDefinition>(
"millisecond",
"ms",
"Time", millisecond);
154 std::make_shared<ALIUnitDefinition>(
"microsecond",
"mus",
"Time", microsecond);
155 std::make_shared<ALIUnitDefinition>(
"nanosecond",
"ns",
"Time", nanosecond);
156 std::make_shared<ALIUnitDefinition>(
"picosecond",
"ps",
"Time", picosecond);
159 std::make_shared<ALIUnitDefinition>(
"hertz",
"Hz",
"Frequency", hertz);
160 std::make_shared<ALIUnitDefinition>(
"kilohertz",
"kHz",
"Frequency", kilohertz);
161 std::make_shared<ALIUnitDefinition>(
"megahertz",
"MHz",
"Frequency", megahertz);
164 std::make_shared<ALIUnitDefinition>(
"eplus",
"e+",
"Electric charge", eplus);
165 std::make_shared<ALIUnitDefinition>(
"coulomb",
"C",
"Electric charge", coulomb);
168 std::make_shared<ALIUnitDefinition>(
"electronvolt",
"eV",
"Energy", electronvolt);
169 std::make_shared<ALIUnitDefinition>(
"kiloelectronvolt",
"keV",
"Energy", kiloelectronvolt);
170 std::make_shared<ALIUnitDefinition>(
"megaelectronvolt",
"MeV",
"Energy", megaelectronvolt);
171 std::make_shared<ALIUnitDefinition>(
"gigaelectronvolt",
"GeV",
"Energy", gigaelectronvolt);
172 std::make_shared<ALIUnitDefinition>(
"teraelectronvolt",
"TeV",
"Energy", teraelectronvolt);
173 std::make_shared<ALIUnitDefinition>(
"petaelectronvolt",
"PeV",
"Energy", petaelectronvolt);
174 std::make_shared<ALIUnitDefinition>(
"joule",
"J",
"Energy",
joule);
177 std::make_shared<ALIUnitDefinition>(
"milligram",
"mg",
"Mass", milligram);
178 std::make_shared<ALIUnitDefinition>(
"gram",
"g",
"Mass", gram);
179 std::make_shared<ALIUnitDefinition>(
"kilogram",
"kg",
"Mass", kilogram);
182 std::make_shared<ALIUnitDefinition>(
"g/cm3",
"g/cm3",
"Volumic Mass",
g / cm3);
183 std::make_shared<ALIUnitDefinition>(
"mg/cm3",
"mg/cm3",
"Volumic Mass", mg / cm3);
184 std::make_shared<ALIUnitDefinition>(
"kg/m3",
"kg/m3",
"Volumic Mass", kg / m3);
187 std::make_shared<ALIUnitDefinition>(
"watt",
"W",
"Power", watt);
190 std::make_shared<ALIUnitDefinition>(
"newton",
"N",
"Force", newton);
193 std::make_shared<ALIUnitDefinition>(
"pascal",
"Pa",
"Pressure", pascal);
194 std::make_shared<ALIUnitDefinition>(
"bar",
"bar",
"Pressure", bar);
195 std::make_shared<ALIUnitDefinition>(
"atmosphere",
"atm",
"Pressure", atmosphere);
198 std::make_shared<ALIUnitDefinition>(
"ampere",
"A",
"Electric current", ampere);
199 std::make_shared<ALIUnitDefinition>(
"milliampere",
"mA",
"Electric current", milliampere);
200 std::make_shared<ALIUnitDefinition>(
"microampere",
"muA",
"Electric current", microampere);
201 std::make_shared<ALIUnitDefinition>(
"nanoampere",
"nA",
"Electric current", nanoampere);
204 std::make_shared<ALIUnitDefinition>(
"volt",
"V",
"Electric potential", volt);
205 std::make_shared<ALIUnitDefinition>(
"kilovolt",
"kV",
"Electric potential", kilovolt);
206 std::make_shared<ALIUnitDefinition>(
"megavolt",
"MV",
"Electric potential", megavolt);
209 std::make_shared<ALIUnitDefinition>(
"weber",
"Wb",
"Magnetic flux", weber);
212 std::make_shared<ALIUnitDefinition>(
"tesla",
"T",
"Magnetic flux density", tesla);
213 std::make_shared<ALIUnitDefinition>(
"kilogauss",
"kG",
"Magnetic flux density", kilogauss);
214 std::make_shared<ALIUnitDefinition>(
"gauss",
"G",
"Magnetic flux density", gauss);
217 std::make_shared<ALIUnitDefinition>(
"kelvin",
"K",
"Temperature", kelvin);
220 std::make_shared<ALIUnitDefinition>(
"mole",
"mol",
"Amount of substance", mole);
223 std::make_shared<ALIUnitDefinition>(
"becquerel",
"Bq",
"Activity", becquerel);
224 std::make_shared<ALIUnitDefinition>(
"curie",
"Ci",
"Activity", curie);
227 std::make_shared<ALIUnitDefinition>(
"gray",
"Gy",
"Dose", gray);
233 std::cout <<
"\n ----- The Table of Units ----- \n";
255 if (
this != &right) {
285 size_t nbCat = theUnitsTable.size();
287 while ((i < nbCat) && (theUnitsTable[i]->
GetName() != category))
290 std::cout <<
" ALIBestUnit: the category " << category <<
" does not exist !!" << std::endl;
291 std::cerr <<
"Missing unit category !" << std::endl;
307 size_t nbCat = theUnitsTable.size();
309 while ((i < nbCat) && (theUnitsTable[i]->
GetName() != category))
312 std::cerr <<
" ALIBestUnit: the category " << category <<
" does not exist." << std::endl;
313 std::cerr <<
"Unit category not existing !" << std::endl;
319 Value[0] = value.x();
320 Value[1] = value.y();
321 Value[2] = value.z();
334 ALIint ksup(-1), kinf(-1);
341 for (
size_t k = 0;
k < List.size();
k++) {
343 if (value == 1.E12) {
348 }
else if (value <= -1.E12) {
357 if ((ratio >= 1.) && (ratio < rsup)) {
361 if ((ratio < 1.) && (ratio > rinf)) {
375 flux << a.
Value[
j] / (List[
index]->GetValue()) <<
" ";
378 #ifdef ALIUSE_STD_NAMESPACE 379 std::ios::fmtflags oldform =
std::cout.flags();
384 flux.setf(std::ios::left, std::ios::adjustfield);
385 flux << std::setw(len) << List[
index]->GetSymbol();
ALIstring GetName() const
ALIint operator==(const ALIUnitDefinition &) const
std::ostream & operator<<(std::ostream &flux, ALIBestUnit a)
std::vector< ALIUnitsCategory * > ALIUnitsTable
ALIUnitDefinition & operator=(const ALIUnitDefinition &)
ALIint operator!=(const ALIUnitDefinition &) const
ALIBestUnit(ALIdouble internalValue, ALIstring category)
ALIUnitDefinition(ALIstring name, ALIstring symbol, ALIstring category, ALIdouble value)
static ALIstring GetCategory(ALIstring)
ALIUnitsContainer UnitsList
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
U second(std::pair< T, U > const &p)
ALIint operator==(const ALIUnitsCategory &) const
ALIUnitsCategory & operator=(const ALIUnitsCategory &)
static void PrintUnitsTable()
Abs< T >::type abs(const T &t)
ALIUnitsCategory(ALIstring name)
reco::JetExtendedAssociation::JetExtendedData Value
static void BuildUnitsTable()
ALIint operator!=(const ALIUnitsCategory &) const
std::vector< std::shared_ptr< ALIUnitDefinition >> ALIUnitsContainer
ALIstring GetName() const
static ALIdouble GetValueOf(ALIstring)
TString units(TString variable, Char_t axis)
static ALIUnitsTable theUnitsTable
static ALIUnitsTable & GetUnitsTable()
constexpr long double joule(6.24150e+12)
Basic3DVector unit() const