ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
setSystemOfUnits.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file setSystemOfUnits.cc
1 // -*- C++ -*-
2 // ----------------------------------------------------------------------
3 
5 
6 namespace HepTool {
7 
9  double kilogram,
10  double second,
11  double ampere,
12  double kelvin,
13  double mole,
14  double candela)
15 {
16  const double kilo_ = 1.e+03; // chilioi (Greek) "thousand"
17  const double mega_ = 1.e+06; // megas (Greek) "large"
18  const double giga_ = 1.e+09; // gigas (Greek) "giant"
19  const double tera_ = 1.e+12; // teras (Greek) "monster"
20  const double peta_ = 1.e+15; // pente (Greek) "five"
21 
22  const double deci_ = 1.e-01; // decimus (Latin) "tenth"
23  const double centi_ = 1.e-02; // centum (Latin) "hundred"
24  const double milli_ = 1.e-03; // mille (Latin) "thousand"
25  const double micro_ = 1.e-06; // micro (Latin) or mikros (Greek) "small"
26  const double nano_ = 1.e-09; // nanus (Latin) or nanos (Greek) "dwarf"
27  const double pico_ = 1.e-12; // pico (Spanish) "bit"
28 
29  // ======================================================================
30  //
31  // Base (default) SI units
32  // for the basic measurable quantities (dimensions):
33  //
34  // ======================================================================
35 
36  // Length
37  // metrum (Latin) and metron (Greek) "measure"
38  const double m = meter;
39  setVariable("meter", m);
40  setVariable("metre", m);
41  setVariable("m", m);
42 
43  // Mass
44  const double kg = kilogram;
45  setVariable("kilogram", kg);
46  setVariable("kg", kg);
47 
48  // Time
49  // minuta secundam (Latin) "second small one"
50  const double s = second;
51  setVariable("second", s);
52  setVariable("s", s);
53 
54  // Current
55  // --- honors Andre-Marie Ampere (1775-1836) of France
56  const double A = ampere;
57  setVariable("ampere", A);
58  setVariable("amp", A);
59  setVariable("A", A);
60 
61  // Temperature
62  // --- honors William Thomson, 1st Baron Lord Kelvin (1824-1907) of England
63  const double K = kelvin;
64  setVariable("kelvin", K);
65  setVariable("K", K);
66 
67  // Amount of substance
68  const double mol = mole;
69  setVariable("mole", mol);
70  setVariable("mol", mol);
71 
72  // Luminous intensity
73  const double cd = candela;
74  setVariable("candela", cd);
75  setVariable("cd", cd);
76 
77  // ======================================================================
78  //
79  // Supplementary SI units having special symbols:
80  //
81  // ======================================================================
82 
83  // Plane angle
84  const double rad = 1.;
85  setVariable("radian", rad);
86  setVariable("rad", rad);
87  setVariable("milliradian", milli_ * rad);
88  setVariable("mrad", milli_ * rad);
89 
90  const double pi = 3.14159265358979323846;
91  const double deg = rad*pi/180.;
92  setVariable("degree", deg);
93  setVariable("deg", deg);
94 
95  // Solid angle
96  const double sr = 1.;
97  setVariable("steradian", sr);
98  setVariable("sr", sr);
99 
100  // ======================================================================
101  //
102  // Derived SI units having special symbols:
103  //
104  // ======================================================================
105 
106  // Frequency
107  // --- honors Heinrich Rudolf Hertz (1857-1894) of Germany
108  const double Hz = 1./s;
109  setVariable("hertz", Hz);
110  setVariable("Hz", Hz);
111 
112  // Force
113  // --- honors Sir Isaac Newton (1642-1727) of England
114  const double N = m * kg / (s*s);
115  setVariable("newton", N);
116  setVariable("N", N);
117 
118  // Pressure
119  // --- honors Blaise Pascal (1623-1662) of France
120  const double Pa = N / (m*m);
121  setVariable("pascal", Pa);
122  setVariable("Pa", Pa);
123 
124  const double atm = 101325. * Pa;
125  setVariable("atmosphere", atm);
126  setVariable("atm", atm);
127 
128  const double bar = 100000*Pa;
129  setVariable("bar", bar);
130 
131  // Energy
132  // --- honors James Prescott Joule (1818-1889) of England
133  const double J = N * m;
134  setVariable("joule", J);
135  setVariable("J", J);
136 
137  // Power
138  // --- honors James Watt (1736-1819) of Scotland
139  const double W = J / s;
140  setVariable("watt", W);
141  setVariable("W", W);
142 
143  // Electric charge
144  // --- honors Charles-Augustin de Coulomb (1736-1806) of France
145  const double C = A * s;
146  setVariable("coulomb", C);
147  setVariable("C", C);
148 
149  // Electric potential
150  // --- honors Count Alessandro Volta (1745-1827) of Italy
151  const double V = J / C;
152  setVariable("volt", V);
153  setVariable("V", V);
154 
155  // Electric resistance
156  // --- honors Georg Simon Ohm (1787-1854) of Germany
157  const double ohm = V / A;
158  setVariable("ohm", ohm);
159 
160  // Electric conductance
161  // --- honors Ernst Werner von Siemens (1816-1892) or
162  // his brother Sir William (Karl Wilhelm von) Siemens (1823-1883)
163  // of Germany (England)
164  const double S = 1./ ohm;
165  setVariable("siemens", S);
166  setVariable("S", S);
167 
168  // Electric capacitance
169  // --- honors Michael Faraday (1791-1867) of England
170  const double F = C / V;
171  setVariable("farad", F);
172  setVariable("F", F);
173 
174  // Magnetic flux density
175  // --- honors Nikola Tesla (1856-1943) of Croatia (United States)
176  const double T = V * s / (m*m);
177  setVariable("tesla", T);
178  setVariable("T", T);
179 
180  // --- honors Karl Friedrich Gauss (1777-1855) of Germany
181  const double Gs = 1.e-4*T;
182  setVariable("gauss", Gs);
183  setVariable("Gs", Gs);
184 
185  // Magnetic flux
186  // --- honors Wilhelm Eduard Weber (1804-1891) of Germany
187  const double Wb = V * s;
188  setVariable("weber", Wb);
189  setVariable("Wb", Wb);
190 
191  // Inductance
192  // --- honors Joseph Henry (1797-1878) of the United States
193  const double H = Wb / A;
194  setVariable("henry", H);
195  setVariable("H", H);
196 
197  // Luminous flux
198  const double lm = cd * sr;
199  setVariable("lumen", lm);
200  setVariable("lm", lm);
201 
202  // Illuminace
203  const double lx = lm / (m*m);
204  setVariable("lux", lx);
205  setVariable("lx", lx);
206 
207  // Radioactivity
208  // --- honors Antoine-Henri Becquerel (1852-1908) of France
209  const double Bq = 1./s;
210  setVariable("becquerel", Bq);
211  setVariable("Bq", Bq);
212  setVariable("kilobecquerel", kilo_ * Bq);
213  setVariable("kBq", kilo_ * Bq);
214  setVariable("megabecquerel", mega_ * Bq);
215  setVariable("MBq", mega_ * Bq);
216  setVariable("gigabecquerel", giga_ * Bq);
217  setVariable("GBq", giga_ * Bq);
218 
219  // --- honors Pierre Curie (1859-1906) of France
220  // and Marie Sklodowska Curie (1867-1934) of Poland
221  setVariable("curie", 3.7e+10 * Bq);
222  setVariable("Ci", 3.7e+10 * Bq);
223  setVariable("millicurie", milli_ * 3.7e+10 * Bq);
224  setVariable("mCi", milli_ * 3.7e+10 * Bq);
225  setVariable("microcurie", micro_ * 3.7e+10 * Bq);
226  setVariable("uCi", micro_ * 3.7e+10 * Bq);
227 
228  // Specific energy
229  // --- honors Louis Harold Gray, F.R.S. (1905-1965) of England
230  const double Gy = J / kg;
231  setVariable("gray", Gy);
232  setVariable("Gy", Gy);
233  setVariable("kilogray", kilo_ * Gy);
234  setVariable("milligray", milli_ * Gy);
235  setVariable("microgray", micro_ * Gy);
236 
237  // Dose equivalent
238  const double Sv = J / kg;
239  setVariable("sievert", Sv);
240  setVariable("Sv", Sv);
241 
242  // ======================================================================
243  //
244  // Selected units:
245  //
246  // ======================================================================
247 
248  // Length
249 
250  const double mm = milli_ * m;
251  setVariable("millimeter", mm);
252  setVariable("mm", mm);
253 
254  const double cm = centi_ * m;
255  setVariable("centimeter", cm);
256  setVariable("cm", cm);
257 
258  setVariable("decimeter", deci_ * m);
259 
260  const double km = kilo_ * m;
261  setVariable("kilometer", km);
262  setVariable("km", km);
263 
264  setVariable("micrometer", micro_ * m);
265  setVariable("micron", micro_ * m);
266  setVariable("nanometer", nano_ * m);
267 
268  // --- honors Anders Jonas Angstrom (1814-1874) of Sweden
269  setVariable("angstrom", 1.e-10 * m);
270 
271  // --- honors Enrico Fermi (1901-1954) of Italy
272  setVariable("fermi", 1.e-15 * m);
273 
274  // Length^2
275 
276  setVariable("m2", m*m);
277  setVariable("mm2", mm*mm);
278  setVariable("cm2", cm*cm);
279  setVariable("km2", km*km);
280 
281  const double barn = 1.e-28 * m*m;
282  setVariable("barn", barn);
283  setVariable("millibarn", milli_ * barn);
284  setVariable("mbarn", milli_ * barn);
285  setVariable("microbarn", micro_ * barn);
286  setVariable("nanobarn", nano_ * barn);
287  setVariable("picobarn", pico_ * barn);
288 
289  // LengthL^3
290 
291  setVariable("m3", m*m*m);
292  setVariable("mm3", mm*mm*mm);
293  setVariable("cm3", cm*cm*cm);
294  setVariable("cc", cm*cm*cm);
295  setVariable("km3", km*km*km);
296 
297  const double L = 1.e-3*m*m*m;
298  setVariable("liter", L);
299  setVariable("litre", L);
300  setVariable("L", L);
301  setVariable("centiliter", centi_ * L);
302  setVariable("cL", centi_ * L);
303  setVariable("milliliter", milli_ * L);
304  setVariable("mL", milli_ * L);
305 
306  // Length^-1
307 
308  const double dpt = 1./m;
309  setVariable("diopter", dpt);
310  setVariable("dioptre", dpt);
311  setVariable("dpt", dpt);
312 
313  // Mass
314 
315  const double g = 0.001*kg;
316  setVariable("gram", g);
317  setVariable("g", g);
318  setVariable("milligram", milli_ * g);
319  setVariable("mg", milli_ * g);
320 
321  // Time
322 
323  setVariable("millisecond", milli_ * s);
324  setVariable("ms", milli_ * s);
325  setVariable("microsecond", micro_ * s);
326  setVariable("us", micro_ * s);
327  setVariable("nanosecond", nano_ * s);
328  setVariable("ns", nano_ * s);
329  setVariable("picosecond", pico_ * s);
330  setVariable("ps", pico_ * s);
331 
332  // Current
333 
334  setVariable("milliampere", milli_ * A);
335  setVariable("mA", milli_ * A);
336  setVariable("microampere", micro_ * A);
337  setVariable("nanoampere", nano_ * A);
338 
339  // Frequency
340 
341  setVariable("kilohertz", kilo_ * Hz);
342  setVariable("kHz", kilo_ * Hz);
343  setVariable("megahertz", mega_ * Hz);
344  setVariable("MHz", mega_ * Hz);
345 
346  // Force
347  setVariable("kilonewton", kilo_ * N);
348  setVariable("kN", kilo_ * N);
349 
350  // Pressure
351  setVariable("kilobar", kilo_ * bar);
352  setVariable("kbar", kilo_ * bar);
353  setVariable("millibar", milli_ * bar);
354  setVariable("mbar", milli_ * bar);
355 
356  // Energy
357  setVariable("kilojoule", kilo_ * J);
358  setVariable("kJ", kilo_ * J);
359  setVariable("megajoule", mega_ * J);
360  setVariable("MJ", mega_ * J);
361  setVariable("gigajoule", giga_ * J);
362  setVariable("GJ", giga_ * J);
363 
364  const double e_SI = 1.60217733e-19; // positron charge in coulomb
365  const double ePlus = e_SI * C; // positron charge
366  const double eV = ePlus * V;
367  setVariable("electronvolt", eV);
368  setVariable("eV", eV);
369  setVariable("kiloelectronvolt", kilo_ * eV);
370  setVariable("keV", kilo_ * eV);
371  setVariable("megaelectronvolt", mega_ * eV);
372  setVariable("MeV", mega_ * eV);
373  setVariable("gigaelectronvolt", giga_ * eV);
374  setVariable("GeV", giga_ * eV);
375  setVariable("teraelectronvolt", tera_ * eV);
376  setVariable("TeV", tera_ * eV);
377  setVariable("petaelectronvolt", peta_ * eV);
378  setVariable("PeV", peta_ * eV);
379 
380  // Power
381  setVariable("kilowatt", kilo_ * W);
382  setVariable("kW", kilo_ * W);
383  setVariable("megawatt", mega_ * W);
384  setVariable("MW", mega_ * W);
385  setVariable("gigawatt", giga_ * W);
386  setVariable("GW", giga_ * W);
387 
388  // Electric potential
389  setVariable("kilovolt", kilo_ * V);
390  setVariable("kV", kilo_ * V);
391  setVariable("megavolt", mega_ * V);
392  setVariable("MV", mega_ * V);
393 
394  // Electric capacitance
395  setVariable("millifarad", milli_ * F);
396  setVariable("mF", milli_ * F);
397  setVariable("microfarad", micro_ * F);
398  setVariable("uF", micro_ * F);
399  setVariable("nanofarad", nano_ * F);
400  setVariable("nF", nano_ * F);
401  setVariable("picofarad", pico_ * F);
402  setVariable("pF", pico_ * F);
403 
404  // Magnetic flux density
405  setVariable("kilogauss", kilo_ * Gs);
406  setVariable("kGs", kilo_ * Gs);
407 }
408 
409 } // namespace HepTool