Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
setSystemOfUnits.cc
Go to the documentation of this file.
1// -*- C++ -*-
2// ----------------------------------------------------------------------
3
5
6namespace 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("um", micro_ * m);
267 setVariable("nanometer", nano_ * m);
268 setVariable("nm", nano_ * m);
269
270 const double parsec = 3.0856775807e+16 * m;
271 setVariable("parsec", parsec);
272 setVariable("pc", parsec);
273
274 // --- honors Anders Jonas Angstrom (1814-1874) of Sweden
275 setVariable("angstrom", 1.e-10 * m);
276
277 // --- honors Enrico Fermi (1901-1954) of Italy
278 setVariable("fermi", 1.e-15 * m);
279
280 // Length^2
281
282 setVariable("m2", m*m);
283 setVariable("mm2", mm*mm);
284 setVariable("cm2", cm*cm);
285 setVariable("km2", km*km);
286
287 const double barn = 1.e-28 * m*m;
288 setVariable("barn", barn);
289 setVariable("millibarn", milli_ * barn);
290 setVariable("mbarn", milli_ * barn);
291 setVariable("microbarn", micro_ * barn);
292 setVariable("nanobarn", nano_ * barn);
293 setVariable("picobarn", pico_ * barn);
294
295 // LengthL^3
296
297 setVariable("m3", m*m*m);
298 setVariable("mm3", mm*mm*mm);
299 setVariable("cm3", cm*cm*cm);
300 setVariable("cc", cm*cm*cm);
301 setVariable("km3", km*km*km);
302
303 const double L = 1.e-3*m*m*m;
304 setVariable("liter", L);
305 setVariable("litre", L);
306 setVariable("L", L);
307 setVariable("centiliter", centi_ * L);
308 setVariable("cL", centi_ * L);
309 setVariable("milliliter", milli_ * L);
310 setVariable("mL", milli_ * L);
311
312 // Length^-1
313
314 const double dpt = 1./m;
315 setVariable("diopter", dpt);
316 setVariable("dioptre", dpt);
317 setVariable("dpt", dpt);
318
319 // Mass
320
321 const double g = 0.001*kg;
322 setVariable("gram", g);
323 setVariable("g", g);
324 setVariable("milligram", milli_ * g);
325 setVariable("mg", milli_ * g);
326
327 // Time
328
329 setVariable("millisecond", milli_ * s);
330 setVariable("ms", milli_ * s);
331 setVariable("microsecond", micro_ * s);
332 setVariable("us", micro_ * s);
333 setVariable("nanosecond", nano_ * s);
334 setVariable("ns", nano_ * s);
335 setVariable("picosecond", pico_ * s);
336 setVariable("ps", pico_ * s);
337
338 const double minute = 60*s;
339 setVariable("minute", minute);
340 const double hour = 60*minute;
341 setVariable("hour", hour);
342 const double day = 24*hour;
343 setVariable("day", day);
344 const double year = 365*day;
345 setVariable("year", year);
346
347 // Current
348
349 setVariable("milliampere", milli_ * A);
350 setVariable("mA", milli_ * A);
351 setVariable("microampere", micro_ * A);
352 setVariable("nanoampere", nano_ * A);
353
354 // Frequency
355
356 setVariable("kilohertz", kilo_ * Hz);
357 setVariable("kHz", kilo_ * Hz);
358 setVariable("megahertz", mega_ * Hz);
359 setVariable("MHz", mega_ * Hz);
360
361 // Force
362 setVariable("kilonewton", kilo_ * N);
363 setVariable("kN", kilo_ * N);
364
365 // Pressure
366 setVariable("kilobar", kilo_ * bar);
367 setVariable("kbar", kilo_ * bar);
368 setVariable("millibar", milli_ * bar);
369 setVariable("mbar", milli_ * bar);
370
371 // Energy
372 setVariable("kilojoule", kilo_ * J);
373 setVariable("kJ", kilo_ * J);
374 setVariable("megajoule", mega_ * J);
375 setVariable("MJ", mega_ * J);
376 setVariable("gigajoule", giga_ * J);
377 setVariable("GJ", giga_ * J);
378
379 const double e_SI = 1.602176634e-19; // positron charge in coulomb
380 const double ePlus = e_SI * C; // positron charge
381 const double eV = ePlus * V;
382 setVariable("electronvolt", eV);
383 setVariable("eV", eV);
384 setVariable("millielectronvolt", milli_ * eV);
385 setVariable("kiloelectronvolt", kilo_ * eV);
386 setVariable("keV", kilo_ * eV);
387 setVariable("megaelectronvolt", mega_ * eV);
388 setVariable("MeV", mega_ * eV);
389 setVariable("gigaelectronvolt", giga_ * eV);
390 setVariable("GeV", giga_ * eV);
391 setVariable("teraelectronvolt", tera_ * eV);
392 setVariable("TeV", tera_ * eV);
393 setVariable("petaelectronvolt", peta_ * eV);
394 setVariable("PeV", peta_ * eV);
395
396 // Power
397 setVariable("kilowatt", kilo_ * W);
398 setVariable("kW", kilo_ * W);
399 setVariable("megawatt", mega_ * W);
400 setVariable("MW", mega_ * W);
401 setVariable("gigawatt", giga_ * W);
402 setVariable("GW", giga_ * W);
403
404 // Electric potential
405 setVariable("kilovolt", kilo_ * V);
406 setVariable("kV", kilo_ * V);
407 setVariable("megavolt", mega_ * V);
408 setVariable("MV", mega_ * V);
409
410 // Electric capacitance
411 setVariable("millifarad", milli_ * F);
412 setVariable("mF", milli_ * F);
413 setVariable("microfarad", micro_ * F);
414 setVariable("uF", micro_ * F);
415 setVariable("nanofarad", nano_ * F);
416 setVariable("nF", nano_ * F);
417 setVariable("picofarad", pico_ * F);
418 setVariable("pF", pico_ * F);
419
420 // Magnetic flux density
421 setVariable("kilogauss", kilo_ * Gs);
422 setVariable("kGs", kilo_ * Gs);
423}
424
425} // namespace HepTool
G4double S(G4double temp)
const G4double A[17]
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:692
#define N
Definition: crc32.c:56
#define W
Definition: crc32.c:84