GeomConverter/src/org/lcsim/units
diff -N Constants.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Constants.java 26 Aug 2009 23:32:42 -0000 1.1
@@ -0,0 +1,51 @@
+package org.lcsim.units;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+public class Constants
+{
+ Map<String, Double> constantsMap = new HashMap<String, Double>();
+
+ private static Constants instance = new Constants();
+
+ public double get(String key)
+ {
+ return constantsMap.get(key);
+ }
+
+ public Set<Entry<String,Double>> entrySet()
+ {
+ return constantsMap.entrySet();
+ }
+
+ public static Constants getInstance()
+ {
+ return instance;
+ }
+
+ private Constants()
+ {
+ setupSystemOfUnits();
+ }
+
+ private void setupSystemOfUnits()
+ {
+ SystemOfUnits units = new SystemOfUnits();
+ Class<SystemOfUnits> klass = SystemOfUnits.class;
+ Field[] fields = klass.getFields();
+ for (Field f : fields)
+ {
+ try {
+ constantsMap.put(f.getName(), f.getDouble(units));
+ }
+ catch ( IllegalAccessException x )
+ {
+ throw new RuntimeException(x);
+ }
+ }
+ }
+}
GeomConverter/src/org/lcsim/units
diff -N SystemOfUnits.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SystemOfUnits.java 26 Aug 2009 23:32:42 -0000 1.1
@@ -0,0 +1,124 @@
+package org.lcsim.units;
+
+// TODO: Add energy constants. Need to use GeV=1 (instead of MeV=1 in CLHEP).
+public final class SystemOfUnits
+{
+ //
+ // Length [L]
+ //
+ public static final double millimeter = 1.;
+ public static final double millimeter2 = millimeter*millimeter;
+ public static final double millimeter3 = millimeter*millimeter*millimeter;
+
+ public static final double centimeter = 10.*millimeter;
+ public static final double centimeter2 = centimeter*centimeter;
+ public static final double centimeter3 = centimeter*centimeter*centimeter;
+
+ public static final double meter = 1000.*millimeter;
+ public static final double meter2 = meter*meter;
+ public static final double meter3 = meter*meter*meter;
+
+ public static final double kilometer = 1000.*meter;
+ public static final double kilometer2 = kilometer*kilometer;
+ public static final double kilometer3 = kilometer*kilometer*kilometer;
+
+ public static final double parsec = 3.0856775807e+16*meter;
+
+ public static final double micrometer = 1.e-6 *meter;
+ public static final double nanometer = 1.e-9 *meter;
+ public static final double angstrom = 1.e-10*meter;
+ public static final double fermi = 1.e-15*meter;
+
+ public static final double barn = 1.e-28*meter2;
+ public static final double millibarn = 1.e-3 *barn;
+ public static final double microbarn = 1.e-6 *barn;
+ public static final double nanobarn = 1.e-9 *barn;
+ public static final double picobarn = 1.e-12*barn;
+
+ // symbols
+ public static final double nm = nanometer;
+ public static final double um = micrometer;
+
+ public static final double mm = millimeter;
+ public static final double mm2 = millimeter2;
+ public static final double mm3 = millimeter3;
+
+ public static final double cm = centimeter;
+ public static final double cm2 = centimeter2;
+ public static final double cm3 = centimeter3;
+
+ public static final double m = meter;
+ public static final double m2 = meter2;
+ public static final double m3 = meter3;
+
+ public static final double km = kilometer;
+ public static final double km2 = kilometer2;
+ public static final double km3 = kilometer3;
+
+ public static final double pc = parsec;
+
+ //
+ // Angle
+ //
+ public static final double radian = 1.;
+ public static final double milliradian = 1.e-3*radian;
+ public static final double degree = (3.14159265358979323846/180.0)*radian;
+
+ public static final double steradian = 1.;
+
+ // symbols
+ public static final double rad = radian;
+ public static final double mrad = milliradian;
+ public static final double sr = steradian;
+ public static final double deg = degree;
+
+ //
+ // Time [T]
+ //
+ public static final double nanosecond = 1.;
+ public static final double second = 1.e+9 *nanosecond;
+ public static final double millisecond = 1.e-3 *second;
+ public static final double microsecond = 1.e-6 *second;
+ public static final double picosecond = 1.e-12*second;
+
+ public static final double hertz = 1./second;
+ public static final double kilohertz = 1.e+3*hertz;
+ public static final double megahertz = 1.e+6*hertz;
+
+ // symbols
+ public static final double ns = nanosecond;
+ public static final double s = second;
+ public static final double ms = millisecond;
+
+ //
+ // Electric charge [Q]
+ //
+ public static final double eplus = 1. ;// positron charge
+ public static final double e_SI = 1.60217733e-19;// positron charge in coulomb
+ public static final double coulomb = eplus/e_SI;// coulomb = 6.24150 e+18 * eplus
+
+ //
+ // Electric current [Q][T^-1]
+ //
+ public static final double ampere = coulomb/second; // ampere = 6.24150 e+9 * eplus/ns
+ public static final double milliampere = 1.e-3*ampere;
+ public static final double microampere = 1.e-6*ampere;
+ public static final double nanoampere = 1.e-9*ampere;
+
+ //
+ // Temperature
+ //
+ public static final double kelvin = 1.;
+
+ //
+ // Amount of substance
+ //
+ public static final double mole = 1.;
+ public static final double mol = mole;
+
+ //
+ // Activity [T^-1]
+ //
+ public static final double becquerel = 1./second ;
+ public static final double curie = 3.7e+10 * becquerel;
+}