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