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