Geant4-11
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("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
G4double C(G4double temp)
G4double S(G4double temp)
static const G4double cd
static constexpr double L
Definition: G4SIunits.hh:104
static constexpr double ohm
Definition: G4SIunits.hh:238
static constexpr double kelvin
Definition: G4SIunits.hh:274
static constexpr double kg
Definition: G4SIunits.hh:167
static constexpr double ampere
Definition: G4SIunits.hh:174
static constexpr double candela
Definition: G4SIunits.hh:310
static constexpr double kilogram
Definition: G4SIunits.hh:162
static constexpr double mole
Definition: G4SIunits.hh:279
static constexpr double m
Definition: G4SIunits.hh:109
static constexpr double e_SI
Definition: G4SIunits.hh:183
static constexpr double barn
Definition: G4SIunits.hh:85
static constexpr double meter
Definition: G4SIunits.hh:62
static constexpr double rad
Definition: G4SIunits.hh:129
static constexpr double s
Definition: G4SIunits.hh:154
static constexpr double mm
Definition: G4SIunits.hh:95
static constexpr double second
Definition: G4SIunits.hh:137
static constexpr double eV
Definition: G4SIunits.hh:201
static constexpr double km
Definition: G4SIunits.hh:113
static constexpr double g
Definition: G4SIunits.hh:168
static constexpr double Bq
Definition: G4SIunits.hh:291
static constexpr double sr
Definition: G4SIunits.hh:131
static constexpr double pi
Definition: G4SIunits.hh:55
static constexpr double bar
Definition: G4SIunits.hh:224
static constexpr double cm
Definition: G4SIunits.hh:99
static constexpr double deg
Definition: G4SIunits.hh:132
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:689