StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SystemOfUnits.h
1 /***************************************************************************
2  *
3  * Description: This file is based on the SystemOfUnits provided
4  * in the CLHEP library v1.2: The units remain the same.
5  * It is just the naming conventions that are different:
6  *
7  * 1) No single letter unit:
8  * : m --> meter
9  * : s --> second
10  * : g --> gram
11  *
12  * 2) All prefixes are spelled out explicitly (except electron Volt):
13  * : ns --> nanosecond
14  * : mm --> millimeter
15  *
16  * 3) All units with proper names follow the international standard
17  * of being lower case:
18  * : farad --> farad
19  * : volt --> volt
20  *
21  * The basic units are :
22  * centimeter (centimeter)
23  * second (second)
24  * Giga electron Volt (GeV)
25  * positron charge (eplus)
26  * degree Kelvin (kelvin)
27  * the amount of substance (mole)
28  * radian (radian)
29  * steradian (steradian)
30  ***************************************************************************/
31 
32 #ifdef _VANILLA_ROOT_
33 
34 #ifndef HEP_SYSTEM_OF_UNITS_H
35 #define HEP_SYSTEM_OF_UNITS_H
36 
38 #include <math.h>
39 
40 namespace units {
41  // new macro for CLHEP SystemOfUnits: at end of file
42  // ST_ADD_OLD_CLHEP_SYSTEM_OF_UNITS
43  //
44  // Length [L]
45  //
46  static const double millimeter = 0.1;
47  static const double millimeter2 = millimeter*millimeter;
48  static const double millimeter3 = millimeter*millimeter*millimeter;
49 
50  static const double centimeter = 10*millimeter;
51  static const double centimeter2 = centimeter*centimeter;
52  static const double centimeter3 = centimeter*centimeter*centimeter;
53 
54  static const double meter = 100.*centimeter;
55  static const double meter2 = meter*meter;
56  static const double meter3 = meter*meter*meter;
57 
58  static const double kilometer = 1000.*meter;
59  static const double kilometer2 = kilometer*kilometer;
60  static const double kilometer3 = kilometer*kilometer*kilometer;
61 
62  static const double micrometer = 1.e-6*meter;
63  static const double nanometer = 1.e-9*meter;
64  static const double femtometer = 1.e-15*meter;
65  static const double fermi = 1*femtometer;
66 
67  static const double barn = 1.e-28*meter2;
68  static const double millibarn = 1.e-3*barn;
69  static const double microbarn = 1.e-6*barn;
70  static const double nanobarn = 1.e-9*barn;
71  static const double inch = 2.54*centimeter;
72 
73  //
74  // Angle
75  //
76  static const double radian = 1.;
77  static const double milliradian = 1.e-3*radian;
78 #ifndef __CINT__
79  static const double degree = (M_PI/180.0)*radian;
80 #endif
81  static const double steradian = 1.;
82 
83  //
84  // Time [T]
85  //
86  static const double second = 1;
87  static const double millisecond = 1.e-3*second;
88  static const double microsecond = 1.e-3*millisecond;
89  static const double nanosecond = 1.e-3*microsecond;
90 
91  static const double hertz = 1./second;
92  static const double kilohertz = 1.e+3*hertz;
93  static const double Megahertz = 1.e+6*hertz;
94 
95  // but these are also unambiguous and unlikely to be used as variable!
96  static const double Hz = 1*hertz;
97  static const double kHz = 1*kilohertz;
98  static const double MHz = 1*Megahertz;
99 
100  //
101  // Electric charge [Q]
102  //
103  static const double eplus = 1. ; // positron charge
104  static const double e_SI = 1.60217733e-19; // positron charge in coulomb
105  static const double coulomb = eplus/e_SI;
106 
107  //
108  // Energy [E]
109  //
110  static const double Gigaelectronvolt = 1.;
111  static const double Megaelectronvolt = 1.e-3*Gigaelectronvolt;
112  static const double electronvolt = 1.e-6*Megaelectronvolt;
113  static const double kiloelectronvolt = 1.e+3*electronvolt;
114  static const double Teraelectronvolt = 1.e+3*Gigaelectronvolt;
115 
116  // but these are also unambiguous and unlikely to be used as variables
117  static const double MeV = Megaelectronvolt;
118  static const double eV = electronvolt;
119  static const double keV = kiloelectronvolt;
120  static const double GeV = Gigaelectronvolt;
121  static const double TeV = Teraelectronvolt;
122  static const double amu = 931.49406121 * MeV;// unified Atomic mass unit
123  static const double joule = electronvolt/e_SI;
124 
125  //
126  // Mass [E][T^2][L^-2]
127  //
128  static const double kilogram = joule*second*second/(meter*meter);
129  static const double gram = 1.e-3*kilogram;
130  static const double milligram = 1.e-3*gram;
131 
132  //
133  // Power [E][T^-1]
134  //
135  static const double watt = joule/second;
136 
137  //
138  // Force [E][L^-1]
139  //
140  static const double newton = joule/meter;
141 
142  //
143  // Pressure [E][L^-3]
144  //
145 #ifndef __CINT__
146 #define pascal hep_pascal // a trick to avoid warnings
147  static const double hep_pascal = newton/meter2;
148 #else
149  static const double pascal = newton/meter2;
150 #endif
151  static const double bar = 100000*pascal;
152  static const double atmosphere = 101325*pascal;
153 
154  //
155  // Electric current [Q][T^-1]
156  //
157  static const double ampere = coulomb/second;
158 
159  //
160  // Electric potential [E][Q^-1]
161  //
162  static const double Megavolt = MeV/eplus;
163  static const double kilovolt = 1.e-3*Megavolt;
164  static const double volt = 1.e-6*Megavolt;
165  static const double millivolt = 1.e-3*volt;
166 
167  //
168  // Electric resistance [E][T][Q^-2]
169  //
170  static const double ohm = volt/ampere;
171 
172  //
173  // Electric capacitance [Q^2][E^-1]
174  //
175  static const double farad = coulomb/volt;
176  static const double millifarad = 1.e-3*farad;
177  static const double microfarad = 1.e-6*farad;
178  static const double nanofarad = 1.e-9*farad;
179  static const double picofarad = 1.e-12*farad;
180 
181  //
182  // Magnetic Flux [T][E][Q^-1]
183  //
184  static const double weber = volt*second;
185 
186  //
187  // Magnetic Field [T][E][Q^-1][L^-2]
188  //
189  static const double tesla = volt*second/meter2;
190 
191  static const double gauss = 1.e-4*tesla;
192  static const double kilogauss = 1.e-1*tesla;
193 
194  //
195  // Inductance [T^2][E][Q^-2]
196  //
197  static const double henry = weber/ampere;
198 
199  //
200  // Temperature
201  //
202  static const double kelvin = 1.;
203 
204  //
205  // Amount of substance
206  //
207  static const double mole = 1.;
208 
209  //
210  // Activity [T^-1]
211  //
212  static const double becquerel = 1./second;
213  static const double curie = 3.7e+10 * becquerel;
214 
215  //
216  // Absorbed dose [L^2][T^-2]
217  //
218  static const double gray = joule/kilogram ;
219 
220  //
221  // Miscellaneous
222  //
223  static const double perCent = 0.01 ;
224  static const double perThousand = 0.001;
225  static const double perMillion = 0.000001;
226 
227 #ifdef ST_ADD_OLD_CLHEP_SYSTEM_OF_UNITS
228 
229  static const double mm = 0.1; // millimeter
230  static const double mm2 = mm*mm;
231  static const double mm3 = mm*mm*mm;
232 
233  static const double cm = 10.*mm; // centimeter
234  static const double cm2 = cm*cm;
235  static const double cm3 = cm*cm*cm;
236 
237  static const double m = 1000.*mm; // meter
238  static const double m2 = m*m;
239  static const double m3 = m*m*m;
240 
241  static const double km = 1000.*m; // kilometer
242  static const double km2 = km*km;
243  static const double km3 = km*km*km;
244 
245  static const double microm = 1.e-6*m; // micro meter
246  static const double nanom = 1.e-9*m;
247  //static const double fermi = 1.e-15*m;
248 
249  //
250  // Angle
251  //
252  static const double rad = 1.; // radian
253  static const double mrad = 1.e-3*rad; // milliradian
254  static const double deg = (M_PI/180.0)*rad;
255 
256  static const double st = 1.; // steradian
257 
258  //
259  // Time [T]
260  //
261  static const double s = 1; // second
262  static const double ns = 1.e-9*s; // nano second
263  static const double ms = 1.e-3*s; // milli second
264 
265  // Mass [E][T^2][L^-2]
266  //
267  static const double kg = joule*second*second/(meter*meter); // kg = 6.24150 e+24 * MeV*ns*ns/(mm*mm)
268  static const double g = 1.e-3*kg;
269  static const double mg = 1.e-3*g;
270 
271 #endif
272 
273 }
274 using namespace units;
275 #endif /* HEP_SYSTEM_OF_UNITS_H */
276 
277 #endif //#ifdef _VANILLA_ROOT_