Logo ROOT   6.19/01
Reference Guide
TGeant4SystemOfUnits.h
Go to the documentation of this file.
1 /*************************************************************************
2  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
3  * All rights reserved. *
4  * *
5  * For the licensing terms see $ROOTSYS/LICENSE. *
6  * For the list of contributors see $ROOTSYS/README/CREDITS. *
7  *************************************************************************/
8 
9 // ----------------------------------------------------------------------
10 // HEP coherent system of Units
11 //
12 // This file has been provided to CLHEP by Geant4 (simulation toolkit for HEP).
13 // Adapted to TGeo units base by Marko Petric
14 //
15 // The basic units are :
16 // millimeter (millimeter)
17 // nanosecond (nanosecond)
18 // Mega electron Volt (MeV)
19 // positron charge (eplus)
20 // degree Kelvin (kelvin)
21 // the amount of substance (mole)
22 // luminous intensity (candela)
23 // radian (radian)
24 // steradian (steradian)
25 //
26 // Below is a non exhaustive list of derived and pratical units
27 // (i.e. mostly the SI units).
28 // You can add your own units.
29 //
30 // The SI numerical value of the positron charge is defined here,
31 // as it is needed for conversion factor : positron charge = e_SI (coulomb)
32 //
33 // The others physical constants are defined in the header file :
34 // PhysicalConstants.h
35 //
36 // Authors: M.Maire, S.Giani
37 //
38 // History:
39 //
40 // 06.02.96 Created.
41 // 28.03.96 Added miscellaneous constants.
42 // 05.12.97 E.Tcherniaev: Redefined pascal (to avoid warnings on WinNT)
43 // 20.05.98 names: meter, second, gram, radian, degree
44 // (from Brian.Lasiuk@yale.edu (STAR)). Added luminous units.
45 // 05.08.98 angstrom, picobarn, microsecond, picosecond, petaelectronvolt
46 // 01.03.01 parsec
47 // 31.01.06 kilogray, milligray, microgray
48 // 29.04.08 use PDG 2006 value of e_SI
49 // 03.11.08 use PDG 2008 value of e_SI
50 // 19.08.15 added liter and its sub units (mma)
51 // 12.01.16 added symbols for microsecond (us) and picosecond (ps) (mma)
52 // 02.10.17 addopted units from CLHEP 2.3.4.3 and converted to TGeo unit base
53 
54 #ifndef TGEANT4_SYSTEM_OF_UNITS_H
55 #define TGEANT4_SYSTEM_OF_UNITS_H
56 
57 namespace TGeant4Unit {
58 
59  //
60  // TGeo follows Geant3 convention as specified in manual
61  // "Unless otherwise specified, the following units are used throughout the program:
62  // centimeter, second, degree, GeV"
63 
64  //
65  //
66  //
67  static constexpr double pi = 3.14159265358979323846;
68  static constexpr double twopi = 2 * pi;
69  static constexpr double halfpi = pi / 2;
70  static constexpr double pi2 = pi * pi;
71 
72  //
73  // Length [L]
74  //
75  static constexpr double millimeter = 1.0;
76  static constexpr double millimeter2 = millimeter * millimeter;
77  static constexpr double millimeter3 = millimeter * millimeter * millimeter;
78 
79  static constexpr double centimeter = 10. * millimeter; // Base unit
80  static constexpr double centimeter2 = centimeter * centimeter;
81  static constexpr double centimeter3 = centimeter * centimeter * centimeter;
82 
83  static constexpr double meter = 1000. * millimeter;
84  static constexpr double meter2 = meter * meter;
85  static constexpr double meter3 = meter * meter * meter;
86 
87  static constexpr double kilometer = 1000. * meter;
88  static constexpr double kilometer2 = kilometer * kilometer;
89  static constexpr double kilometer3 = kilometer * kilometer * kilometer;
90 
91  static constexpr double parsec = 3.0856775807e+16 * meter;
92 
93  static constexpr double micrometer = 1.e-6 * meter;
94  static constexpr double nanometer = 1.e-9 * meter;
95  static constexpr double angstrom = 1.e-10 * meter;
96  static constexpr double fermi = 1.e-15 * meter;
97 
98  static constexpr double barn = 1.e-28 * meter2;
99  static constexpr double millibarn = 1.e-3 * barn;
100  static constexpr double microbarn = 1.e-6 * barn;
101  static constexpr double nanobarn = 1.e-9 * barn;
102  static constexpr double picobarn = 1.e-12 * barn;
103 
104  // symbols
105  static constexpr double nm = nanometer;
106  static constexpr double um = micrometer;
107 
108  static constexpr double mm = millimeter;
109  static constexpr double mm2 = millimeter2;
110  static constexpr double mm3 = millimeter3;
111 
112  static constexpr double cm = centimeter;
113  static constexpr double cm2 = centimeter2;
114  static constexpr double cm3 = centimeter3;
115 
116  static constexpr double liter = 1.e+3 * cm3;
117  static constexpr double L = liter;
118  static constexpr double dL = 1.e-1 * liter;
119  static constexpr double cL = 1.e-2 * liter;
120  static constexpr double mL = 1.e-3 * liter;
121 
122  static constexpr double m = meter;
123  static constexpr double m2 = meter2;
124  static constexpr double m3 = meter3;
125 
126  static constexpr double km = kilometer;
127  static constexpr double km2 = kilometer2;
128  static constexpr double km3 = kilometer3;
129 
130  static constexpr double pc = parsec;
131 
132  //
133  // Angle
134  //
135  static constexpr double degree = 1.0; // Base unit
136  static constexpr double radian = (180.0 / pi) * degree;
137  static constexpr double milliradian = 1.e-3 * radian;
138 
139  static constexpr double steradian = 1.;
140 
141  // symbols
142  static constexpr double rad = radian;
143  static constexpr double mrad = milliradian;
144  static constexpr double sr = steradian;
145  static constexpr double deg = degree;
146 
147  //
148  // Time [T]
149  //
150  static constexpr double nanosecond = 1.0;
151  static constexpr double second = 1.e+9 * nanosecond; // Base unit
152  static constexpr double millisecond = 1.e-3 * second;
153  static constexpr double microsecond = 1.e-6 * second;
154  static constexpr double picosecond = 1.e-12 * second;
155 
156  static constexpr double hertz = 1. / second;
157  static constexpr double kilohertz = 1.e+3 * hertz;
158  static constexpr double megahertz = 1.e+6 * hertz;
159 
160  // symbols
161  static constexpr double ns = nanosecond;
162  static constexpr double s = second;
163  static constexpr double ms = millisecond;
164  static constexpr double us = microsecond;
165  static constexpr double ps = picosecond;
166 
167  //
168  // Electric charge [Q]
169  //
170  static constexpr double eplus = 1.; // positron charge
171  static constexpr double e_SI = 1.602176487e-19; // positron charge in coulomb
172  static constexpr double coulomb = eplus / e_SI; // coulomb = 6.24150 e+18 * eplus
173 
174  //
175  // Energy [E]
176  //
177  static constexpr double megaelectronvolt = 1.0;
178  static constexpr double electronvolt = 1.e-6 * megaelectronvolt;
179  static constexpr double kiloelectronvolt = 1.e-3 * megaelectronvolt;
180  static constexpr double gigaelectronvolt = 1.e+3 * megaelectronvolt; // Base unit
181  static constexpr double teraelectronvolt = 1.e+6 * megaelectronvolt;
182  static constexpr double petaelectronvolt = 1.e+9 * megaelectronvolt;
183 
184  static constexpr double joule = electronvolt / e_SI; // joule = 6.24150 e+12 * MeV
185 
186  // symbols
187  static constexpr double MeV = megaelectronvolt;
188  static constexpr double eV = electronvolt;
189  static constexpr double keV = kiloelectronvolt;
190  static constexpr double GeV = gigaelectronvolt;
191  static constexpr double TeV = teraelectronvolt;
192  static constexpr double PeV = petaelectronvolt;
193 
194  //
195  // Mass [E][T^2][L^-2]
196  //
197  static constexpr double kilogram = joule * second * second / (meter * meter);
198  static constexpr double gram = 1.e-3 * kilogram;
199  static constexpr double milligram = 1.e-3 * gram;
200 
201  // symbols
202  static constexpr double kg = kilogram;
203  static constexpr double g = gram;
204  static constexpr double mg = milligram;
205 
206  //
207  // Power [E][T^-1]
208  //
209  static constexpr double watt = joule / second; // watt = 6.24150 e+3 * MeV/ns
210 
211  //
212  // Force [E][L^-1]
213  //
214  static constexpr double newton = joule / meter; // newton = 6.24150 e+9 * MeV/mm
215 
216  //
217  // Pressure [E][L^-3]
218  //
219 #define pascal hep_pascal // a trick to avoid warnings
220  static constexpr double hep_pascal = newton / m2; // pascal = 6.24150 e+3 * MeV/mm3
221  static constexpr double bar = 100000 * pascal; // bar = 6.24150 e+8 * MeV/mm3
222  static constexpr double atmosphere = 101325 * pascal; // atm = 6.32420 e+8 * MeV/mm3
223 
224  //
225  // Electric current [Q][T^-1]
226  //
227  static constexpr double ampere = coulomb / second; // ampere = 6.24150 e+9 * eplus/ns
228  static constexpr double milliampere = 1.e-3 * ampere;
229  static constexpr double microampere = 1.e-6 * ampere;
230  static constexpr double nanoampere = 1.e-9 * ampere;
231 
232  //
233  // Electric potential [E][Q^-1]
234  //
235  static constexpr double megavolt = megaelectronvolt / eplus;
236  static constexpr double kilovolt = 1.e-3 * megavolt;
237  static constexpr double volt = 1.e-6 * megavolt;
238 
239  //
240  // Electric resistance [E][T][Q^-2]
241  //
242  static constexpr double ohm = volt / ampere; // ohm = 1.60217e-16*(MeV/eplus)/(eplus/ns)
243 
244  //
245  // Electric capacitance [Q^2][E^-1]
246  //
247  static constexpr double farad = coulomb / volt; // farad = 6.24150e+24 * eplus/Megavolt
248  static constexpr double millifarad = 1.e-3 * farad;
249  static constexpr double microfarad = 1.e-6 * farad;
250  static constexpr double nanofarad = 1.e-9 * farad;
251  static constexpr double picofarad = 1.e-12 * farad;
252 
253  //
254  // Magnetic Flux [T][E][Q^-1]
255  //
256  static constexpr double weber = volt * second; // weber = 1000*megavolt*ns
257 
258  //
259  // Magnetic Field [T][E][Q^-1][L^-2]
260  //
261  static constexpr double tesla = volt * second / meter2; // tesla =0.001*megavolt*ns/mm2
262 
263  static constexpr double gauss = 1.e-4 * tesla;
264  static constexpr double kilogauss = 1.e-1 * tesla;
265 
266  //
267  // Inductance [T^2][E][Q^-2]
268  //
269  static constexpr double henry = weber / ampere; // henry = 1.60217e-7*MeV*(ns/eplus)**2
270 
271  //
272  // Temperature
273  //
274  static constexpr double kelvin = 1.;
275 
276  //
277  // Amount of substance
278  //
279  static constexpr double mole = 1.;
280 
281  //
282  // Activity [T^-1]
283  //
284  static constexpr double becquerel = 1. / second;
285  static constexpr double curie = 3.7e+10 * becquerel;
286  static constexpr double kilobecquerel = 1.e+3 * becquerel;
287  static constexpr double megabecquerel = 1.e+6 * becquerel;
288  static constexpr double gigabecquerel = 1.e+9 * becquerel;
289  static constexpr double millicurie = 1.e-3 * curie;
290  static constexpr double microcurie = 1.e-6 * curie;
291  static constexpr double Bq = becquerel;
292  static constexpr double kBq = kilobecquerel;
293  static constexpr double MBq = megabecquerel;
294  static constexpr double GBq = gigabecquerel;
295  static constexpr double Ci = curie;
296  static constexpr double mCi = millicurie;
297  static constexpr double uCi = microcurie;
298 
299  //
300  // Absorbed dose [L^2][T^-2]
301  //
302  static constexpr double gray = joule / kilogram;
303  static constexpr double kilogray = 1.e+3 * gray;
304  static constexpr double milligray = 1.e-3 * gray;
305  static constexpr double microgray = 1.e-6 * gray;
306 
307  //
308  // Luminous intensity [I]
309  //
310  static constexpr double candela = 1.;
311 
312  //
313  // Luminous flux [I]
314  //
315  static constexpr double lumen = candela * steradian;
316 
317  //
318  // Illuminance [I][L^-2]
319  //
320  static constexpr double lux = lumen / meter2;
321 
322  //
323  // Miscellaneous
324  //
325  static constexpr double perCent = 0.01;
326  static constexpr double perThousand = 0.001;
327  static constexpr double perMillion = 0.000001;
328 
329  /// System of units flavor. Must be kept in sync with TGeoUnits::UnitType
330  enum UnitType {
331  kTGeoUnits = 1<<0,
333  };
334 
335  /// Access the currently set units type
336  UnitType unitType();
337  /// Set the currently used unit type (Only ONCE possible)
338  UnitType setUnitType(UnitType new_type);
339 
340 } // namespace TGeoUnit
341 
342 #endif /* TGEANT4_SYSTEM_OF_UNITS_H */
static constexpr double us
static constexpr double microfarad
static constexpr double MBq
static constexpr double cm
static constexpr double sr
static constexpr double nanoampere
static constexpr double radian
static constexpr double e_SI
static constexpr double mm
static constexpr double gray
static constexpr double kilogram
static constexpr double kilohertz
static constexpr double picobarn
static constexpr double Ci
static constexpr double rad
static constexpr double megahertz
UnitType
System of units flavor. Must be kept in sync with TGeoUnits::UnitType.
static constexpr double kiloelectronvolt
static constexpr double kilobecquerel
static constexpr double cm3
static constexpr double ps
static constexpr double microcurie
static constexpr double centimeter3
static constexpr double Bq
static constexpr double m3
static constexpr double gigaelectronvolt
static constexpr double kilometer2
static constexpr double mm3
static constexpr double gauss
static constexpr double mrad
static constexpr double km
static constexpr double perCent
static constexpr double millisecond
static constexpr double kelvin
static constexpr double fermi
static constexpr double mole
static constexpr double milligray
static constexpr double picofarad
static constexpr double kilogauss
static constexpr double mL
static constexpr double kilovolt
#define pascal
static constexpr double meter
static constexpr double twopi
static constexpr double watt
static constexpr double steradian
static constexpr double hep_pascal
static constexpr double electronvolt
static constexpr double millimeter3
static constexpr double angstrom
static constexpr double petaelectronvolt
static constexpr double s
static constexpr double cm2
static constexpr double halfpi
static constexpr double degree
static constexpr double mm2
static constexpr double micrometer
UnitType setUnitType(UnitType new_type)
Set the currently used unit type (Only ONCE possible)
Definition: TGeoUnit.cxx:50
static constexpr double meter3
static constexpr double teraelectronvolt
static constexpr double microbarn
static constexpr double pi2
static constexpr double m2
static constexpr double kilogray
static constexpr double MeV
static constexpr double pc
static constexpr double millibarn
static constexpr double milliradian
static constexpr double barn
static constexpr double ms
static constexpr double g
static constexpr double mg
static constexpr double candela
static constexpr double hertz
static constexpr double becquerel
static constexpr double perThousand
static constexpr double keV
static constexpr double megaelectronvolt
static constexpr double farad
static constexpr double henry
static constexpr double kg
static constexpr double volt
static constexpr double gigabecquerel
static constexpr double centimeter2
static constexpr double microsecond
static constexpr double L
static constexpr double kBq
static constexpr double coulomb
static constexpr double millicurie
UnitType unitType()
Access the currently set units type.
Definition: TGeoUnit.cxx:46
static constexpr double ampere
static constexpr double picosecond
static constexpr double km3
static constexpr double dL
static constexpr double mCi
static constexpr double nm
static constexpr double centimeter
static constexpr double uCi
static constexpr double GBq
static constexpr double um
static constexpr double joule
static constexpr double microgray
static constexpr double bar
static constexpr double milliampere
static constexpr double nanofarad
static constexpr double millimeter2
static constexpr double eplus
static constexpr double lumen
static constexpr double kilometer
static constexpr double pi
static constexpr double atmosphere
static constexpr double milligram
static constexpr double eV
static constexpr double ns
static constexpr double curie
static constexpr double lux
static constexpr double megavolt
static constexpr double liter
static constexpr double meter2
static constexpr double TeV
static constexpr double perMillion
static constexpr double microampere
static constexpr double millifarad
static constexpr double kilometer3
static constexpr double nanosecond
static constexpr double ohm
static constexpr double tesla
static constexpr double newton
static constexpr double weber
static constexpr double PeV
static constexpr double megabecquerel
static constexpr double deg
static constexpr double GeV
static constexpr double nanometer
static constexpr double parsec
static constexpr double nanobarn
static constexpr double gram
static constexpr double cL
static constexpr double km2
static constexpr double m
static constexpr double millimeter
static constexpr double second