Logo ROOT  
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
57namespace 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 {
332 kTGeant4Units = 1<<1
333 };
334
335 /// Access the currently set units type
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 */
#define pascal
static constexpr double millicurie
static constexpr double atmosphere
static constexpr double picosecond
static constexpr double centimeter3
static constexpr double lux
static constexpr double mCi
static constexpr double milligray
static constexpr double megahertz
static constexpr double um
static constexpr double weber
static constexpr double e_SI
static constexpr double cm3
UnitType unitType()
Access the currently set units type.
Definition: TGeoUnit.cxx:46
static constexpr double megabecquerel
static constexpr double bar
static constexpr double teraelectronvolt
static constexpr double rad
static constexpr double millimeter2
static constexpr double gigabecquerel
static constexpr double coulomb
static constexpr double barn
static constexpr double GeV
static constexpr double ampere
static constexpr double kilohertz
static constexpr double millifarad
static constexpr double volt
static constexpr double halfpi
static constexpr double electronvolt
static constexpr double sr
static constexpr double meter2
static constexpr double picobarn
static constexpr double henry
static constexpr double deg
static constexpr double GBq
static constexpr double dL
static constexpr double gram
static constexpr double millimeter
static constexpr double nanosecond
static constexpr double cm2
static constexpr double mole
static constexpr double radian
static constexpr double becquerel
static constexpr double farad
static constexpr double picofarad
static constexpr double kilometer
static constexpr double nm
static constexpr double centimeter2
static constexpr double mL
static constexpr double perCent
static constexpr double millimeter3
static constexpr double TeV
static constexpr double kiloelectronvolt
static constexpr double petaelectronvolt
static constexpr double us
static constexpr double nanofarad
static constexpr double meter3
static constexpr double kelvin
static constexpr double newton
static constexpr double milliampere
static constexpr double s
static constexpr double km3
static constexpr double mm3
static constexpr double pi
static constexpr double mm
static constexpr double watt
static constexpr double hep_pascal
static constexpr double pi2
UnitType
System of units flavor. Must be kept in sync with TGeoUnits::UnitType.
static constexpr double centimeter
static constexpr double microcurie
static constexpr double curie
static constexpr double g
static constexpr double tesla
static constexpr double millisecond
static constexpr double cL
static constexpr double steradian
static constexpr double MBq
static constexpr double gigaelectronvolt
static constexpr double microsecond
static constexpr double megaelectronvolt
static constexpr double km
static constexpr double microampere
static constexpr double kilometer2
static constexpr double keV
static constexpr double kilogray
static constexpr double gray
static constexpr double uCi
static constexpr double angstrom
static constexpr double ns
static constexpr double pc
static constexpr double perMillion
static constexpr double kilobecquerel
static constexpr double milligram
static constexpr double degree
static constexpr double km2
static constexpr double second
static constexpr double m
static constexpr double cm
static constexpr double nanoampere
static constexpr double gauss
static constexpr double joule
static constexpr double ms
static constexpr double kBq
static constexpr double m3
static constexpr double PeV
static constexpr double candela
static constexpr double kilogram
static constexpr double Ci
static constexpr double parsec
static constexpr double kilogauss
static constexpr double twopi
static constexpr double liter
static constexpr double mm2
static constexpr double L
static constexpr double megavolt
static constexpr double ohm
static constexpr double nanometer
static constexpr double meter
static constexpr double kilometer3
static constexpr double perThousand
static constexpr double fermi
static constexpr double ps
static constexpr double microbarn
static constexpr double kg
static constexpr double mg
static constexpr double eplus
static constexpr double hertz
static constexpr double lumen
UnitType setUnitType(UnitType new_type)
Set the currently used unit type (Only ONCE possible)
Definition: TGeoUnit.cxx:50
static constexpr double milliradian
static constexpr double kilovolt
static constexpr double eV
static constexpr double m2
static constexpr double Bq
static constexpr double millibarn
static constexpr double microgray
static constexpr double micrometer
static constexpr double mrad
static constexpr double MeV
static constexpr double nanobarn
static constexpr double microfarad