Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 C(G4double temp)
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:57
#define W
Definition crc32.c:85