5 #include "CLHEP/Evaluator/Evaluator.h"
9 void Evaluator::setSystemOfUnits(
double meter,
17 const double kilo_ = 1.e+03;
18 const double mega_ = 1.e+06;
19 const double giga_ = 1.e+09;
20 const double tera_ = 1.e+12;
21 const double peta_ = 1.e+15;
23 const double deci_ = 1.e-01;
24 const double centi_ = 1.e-02;
25 const double milli_ = 1.e-03;
26 const double micro_ = 1.e-06;
27 const double nano_ = 1.e-09;
28 const double pico_ = 1.e-12;
40 setVariable(
"meter", m);
41 setVariable(
"metre", m);
46 setVariable(
"kilogram", kg);
47 setVariable(
"kg", kg);
52 setVariable(
"second", s);
58 setVariable(
"ampere", A);
59 setVariable(
"amp", A);
65 setVariable(
"kelvin", K);
69 const double mol =
mole;
70 setVariable(
"mole", mol);
71 setVariable(
"mol", mol);
75 setVariable(
"candela", cd);
76 setVariable(
"cd", cd);
85 const double rad = 1.;
86 setVariable(
"radian", rad);
87 setVariable(
"rad", rad);
88 setVariable(
"milliradian", milli_ * rad);
89 setVariable(
"mrad", milli_ * rad);
91 const double pi = 3.14159265358979323846;
92 const double deg = rad*pi/180.;
93 setVariable(
"degree", deg);
94 setVariable(
"deg", deg);
98 setVariable(
"steradian", sr);
99 setVariable(
"sr", sr);
109 const double Hz = 1./
s;
110 setVariable(
"hertz", Hz);
111 setVariable(
"Hz", Hz);
115 const double N = m * kg / (s*
s);
116 setVariable(
"newton", N);
121 const double Pa = N / (m*
m);
122 setVariable(
"pascal", Pa);
123 setVariable(
"Pa", Pa);
125 const double atm = 101325. * Pa;
126 setVariable(
"atmosphere", atm);
127 setVariable(
"atm", atm);
129 const double bar = 100000*Pa;
130 setVariable(
"bar", bar);
134 const double J = N *
m;
135 setVariable(
"joule", J);
140 const double W = J /
s;
141 setVariable(
"watt", W);
146 const double C = A *
s;
147 setVariable(
"coulomb", C);
152 const double V = J /
C;
153 setVariable(
"volt", V);
158 const double ohm = V /
A;
159 setVariable(
"ohm", ohm);
165 const double S = 1./
ohm;
166 setVariable(
"siemens", S);
171 const double F = C / V;
172 setVariable(
"farad", F);
177 const double T = V * s / (m*
m);
178 setVariable(
"tesla", T);
182 const double Gs = 1.e-4*T;
183 setVariable(
"gauss", Gs);
184 setVariable(
"Gs", Gs);
188 const double Wb = V *
s;
189 setVariable(
"weber", Wb);
190 setVariable(
"Wb", Wb);
194 const double H = Wb /
A;
195 setVariable(
"henry", H);
199 const double lm = cd *
sr;
200 setVariable(
"lumen", lm);
201 setVariable(
"lm", lm);
204 const double lx = lm / (m*
m);
205 setVariable(
"lux", lx);
206 setVariable(
"lx", lx);
210 const double Bq = 1./
s;
211 setVariable(
"becquerel", Bq);
212 setVariable(
"Bq", Bq);
213 setVariable(
"kilobecquerel", kilo_ * Bq);
214 setVariable(
"kBq", kilo_ * Bq);
215 setVariable(
"megabecquerel", mega_ * Bq);
216 setVariable(
"MBq", mega_ * Bq);
217 setVariable(
"gigabecquerel", giga_ * Bq);
218 setVariable(
"GBq", giga_ * Bq);
222 setVariable(
"curie", 3.7e+10 * Bq);
223 setVariable(
"Ci", 3.7e+10 * Bq);
224 setVariable(
"millicurie", milli_ * 3.7e+10 * Bq);
225 setVariable(
"mCi", milli_ * 3.7e+10 * Bq);
226 setVariable(
"microcurie", micro_ * 3.7e+10 * Bq);
227 setVariable(
"uCi", micro_ * 3.7e+10 * Bq);
231 const double Gy = J /
kg;
232 setVariable(
"gray", Gy);
233 setVariable(
"Gy", Gy);
234 setVariable(
"kilogray", kilo_ * Gy);
235 setVariable(
"milligray", milli_ * Gy);
236 setVariable(
"microgray", micro_ * Gy);
239 const double Sv = J /
kg;
240 setVariable(
"sievert", Sv);
241 setVariable(
"Sv", Sv);
251 const double mm = milli_ *
m;
252 setVariable(
"millimeter", mm);
253 setVariable(
"mm", mm);
255 const double cm = centi_ *
m;
256 setVariable(
"centimeter", cm);
257 setVariable(
"cm", cm);
259 setVariable(
"decimeter", deci_ * m);
261 const double km = kilo_ *
m;
262 setVariable(
"kilometer", km);
263 setVariable(
"km", km);
265 setVariable(
"micrometer", micro_ * m);
266 setVariable(
"micron", micro_ * m);
267 setVariable(
"nanometer", nano_ * m);
270 setVariable(
"angstrom", 1.e-10 * m);
273 setVariable(
"fermi", 1.e-15 * m);
277 setVariable(
"m2", m*m);
278 setVariable(
"mm2", mm*mm);
279 setVariable(
"cm2", cm*cm);
280 setVariable(
"km2", km*km);
282 const double barn = 1.e-28 * m*
m;
283 setVariable(
"barn", barn);
284 setVariable(
"millibarn", milli_ * barn);
285 setVariable(
"mbarn", milli_ * barn);
286 setVariable(
"microbarn", micro_ * barn);
287 setVariable(
"nanobarn", nano_ * barn);
288 setVariable(
"picobarn", pico_ * barn);
292 setVariable(
"m3", m*m*m);
293 setVariable(
"mm3", mm*mm*mm);
294 setVariable(
"cm3", cm*cm*cm);
295 setVariable(
"cc", cm*cm*cm);
296 setVariable(
"km3", km*km*km);
298 const double L = 1.e-3*m*m*
m;
299 setVariable(
"liter", L);
300 setVariable(
"litre", L);
302 setVariable(
"centiliter", centi_ * L);
303 setVariable(
"cL", centi_ * L);
304 setVariable(
"milliliter", milli_ * L);
305 setVariable(
"mL", milli_ * L);
309 const double dpt = 1./
m;
310 setVariable(
"diopter", dpt);
311 setVariable(
"dioptre", dpt);
312 setVariable(
"dpt", dpt);
316 const double g = 0.001*
kg;
317 setVariable(
"gram", g);
319 setVariable(
"milligram", milli_ * g);
320 setVariable(
"mg", milli_ * g);
324 setVariable(
"millisecond", milli_ * s);
325 setVariable(
"ms", milli_ * s);
326 setVariable(
"microsecond", micro_ * s);
327 setVariable(
"us", micro_ * s);
328 setVariable(
"nanosecond", nano_ * s);
329 setVariable(
"ns", nano_ * s);
330 setVariable(
"picosecond", pico_ * s);
331 setVariable(
"ps", pico_ * s);
335 setVariable(
"milliampere", milli_ * A);
336 setVariable(
"mA", milli_ * A);
337 setVariable(
"microampere", micro_ * A);
338 setVariable(
"nanoampere", nano_ * A);
342 setVariable(
"kilohertz", kilo_ * Hz);
343 setVariable(
"kHz", kilo_ * Hz);
344 setVariable(
"megahertz", mega_ * Hz);
345 setVariable(
"MHz", mega_ * Hz);
348 setVariable(
"kilonewton", kilo_ * N);
349 setVariable(
"kN", kilo_ * N);
352 setVariable(
"kilobar", kilo_ * bar);
353 setVariable(
"kbar", kilo_ * bar);
354 setVariable(
"millibar", milli_ * bar);
355 setVariable(
"mbar", milli_ * bar);
358 setVariable(
"kilojoule", kilo_ * J);
359 setVariable(
"kJ", kilo_ * J);
360 setVariable(
"megajoule", mega_ * J);
361 setVariable(
"MJ", mega_ * J);
362 setVariable(
"gigajoule", giga_ * J);
363 setVariable(
"GJ", giga_ * J);
365 const double e_SI = 1.60217733e-19;
366 const double ePlus = e_SI *
C;
367 const double eV = ePlus * V;
368 setVariable(
"electronvolt", eV);
369 setVariable(
"eV", eV);
370 setVariable(
"kiloelectronvolt", kilo_ * eV);
371 setVariable(
"keV", kilo_ * eV);
372 setVariable(
"megaelectronvolt", mega_ * eV);
373 setVariable(
"MeV", mega_ * eV);
374 setVariable(
"gigaelectronvolt", giga_ * eV);
375 setVariable(
"GeV", giga_ * eV);
376 setVariable(
"teraelectronvolt", tera_ * eV);
377 setVariable(
"TeV", tera_ * eV);
378 setVariable(
"petaelectronvolt", peta_ * eV);
379 setVariable(
"PeV", peta_ * eV);
382 setVariable(
"kilowatt", kilo_ * W);
383 setVariable(
"kW", kilo_ * W);
384 setVariable(
"megawatt", mega_ * W);
385 setVariable(
"MW", mega_ * W);
386 setVariable(
"gigawatt", giga_ * W);
387 setVariable(
"GW", giga_ * W);
390 setVariable(
"kilovolt", kilo_ * V);
391 setVariable(
"kV", kilo_ * V);
392 setVariable(
"megavolt", mega_ * V);
393 setVariable(
"MV", mega_ * V);
396 setVariable(
"millifarad", milli_ * F);
397 setVariable(
"mF", milli_ * F);
398 setVariable(
"microfarad", micro_ * F);
399 setVariable(
"uF", micro_ * F);
400 setVariable(
"nanofarad", nano_ * F);
401 setVariable(
"nF", nano_ * F);
402 setVariable(
"picofarad", pico_ * F);
403 setVariable(
"pF", pico_ * F);
406 setVariable(
"kilogauss", kilo_ * Gs);
407 setVariable(
"kGs", kilo_ * Gs);
static constexpr double candela
static constexpr double km
static constexpr double mm
static constexpr double s
static constexpr double Bq
static constexpr double e_SI
static constexpr double ampere
static constexpr double second
static constexpr double rad
static constexpr double g
static constexpr double meter
double A(double temperature)
static constexpr double m
static constexpr double cm
static constexpr double sr
static constexpr double eV
static constexpr double kg
static constexpr double kelvin
static constexpr double ohm
static constexpr double kilogram
static constexpr double pi
static constexpr double bar
static constexpr double deg
static constexpr double barn
static constexpr double L
static constexpr double mole