Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
setSystemOfUnits.cc
Go to the documentation of this file.
1// -*- C++ -*-
2// $Id:$
3// ----------------------------------------------------------------------
4
6
7namespace 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
void setSystemOfUnits(double meter=1.0, double kilogram=1.0, double second=1.0, double ampere=1.0, double kelvin=1.0, double mole=1.0, double candela=1.0)
void setVariable(const char *name, double value)
Definition: Evaluator.cc:687