DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DD4hepUnits.h
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation for LCD
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : M.Frank
11 //
12 //==========================================================================
13 
14 //
15 // System of Units for DD4hep - similar to Geant3 and TGeo/ROOT
16 //
17 // Taken from CLHEP with the following basic translations:
18 //
19 // Geant4 DD4hep
20 // ----------------------------------------------------------------
21 // millimeter mm=1,cm=10 centimeter mm=0.1,cm=1
22 // nanosecond s=1e9 second ns=1e-9,s=1
23 // Mega electron Volt GeV=1e3 GeV GeV=1
24 // radian rad=1 rad = 1 //NB: different from TGeo
25 //
26 //
27 #ifndef DD4HEP_TGEOUNITS_H
28 #define DD4HEP_TGEOUNITS_H
29 
31 namespace dd4hep {
32 
33  //
34  // Length [L]
35  //
36  static const double millimeter = 0.1;
37  static const double millimeter2 = millimeter * millimeter;
38  static const double millimeter3 = millimeter * millimeter * millimeter;
39 
40  static const double centimeter = 10. * millimeter;
41  static const double centimeter2 = centimeter * centimeter;
42  static const double centimeter3 = centimeter * centimeter * centimeter;
43 
44  static const double meter = 1000. * millimeter;
45  static const double meter2 = meter * meter;
46  static const double meter3 = meter * meter * meter;
47 
48  static const double kilometer = 1000. * meter;
49  static const double kilometer2 = kilometer * kilometer;
50  static const double kilometer3 = kilometer * kilometer * kilometer;
51 
52  static const double parsec = 3.0856775807e+16 * meter;
53 
54  static const double micrometer = 1.e-6 * meter;
55  static const double nanometer = 1.e-9 * meter;
56  static const double angstrom = 1.e-10 * meter;
57  static const double fermi = 1.e-15 * meter;
58 
59  static const double barn = 1.e-28 * meter2;
60  static const double millibarn = 1.e-3 * barn;
61  static const double microbarn = 1.e-6 * barn;
62  static const double nanobarn = 1.e-9 * barn;
63  static const double picobarn = 1.e-12 * barn;
64 
65  // symbols
66  static const double nm = nanometer;
67  static const double um = micrometer;
68 
69  static const double mm = millimeter;
70  static const double mm2 = millimeter2;
71  static const double mm3 = millimeter3;
72 
73  static const double cm = centimeter;
74  static const double cm2 = centimeter2;
75  static const double cm3 = centimeter3;
76 
77  static const double m = meter;
78  static const double m2 = meter2;
79  static const double m3 = meter3;
80 
81  static const double km = kilometer;
82  static const double km2 = kilometer2;
83  static const double km3 = kilometer3;
84 
85  static const double pc = parsec;
86 
87  //
88  // Angle
89  //
90  // static const double radian = 180. / 3.14159265358979323846; // => degree=1
91  // static const double milliradian = 1.e-3 * radian;
92  // static const double degree = 1.; //= (3.14159265358979323846/180.0)*radian;
93 
94  //fg: use radians as default unit as this is needed for all math functions
95  // and everywhere else, except in TGeo shapes -> this is taken care of in shape Handles ....
96  static const double radian = 1. ;
97  static const double milliradian = 1.e-3 * radian;
98  static const double degree = (3.14159265358979323846/180.0)*radian;
99 
100  static const double steradian = 1.;
101 
102  // symbols
103  static const double rad = radian;
104  static const double mrad = milliradian;
105  static const double sr = steradian;
106  static const double deg = degree;
107 
108  //
109  // Time [T]
110  //
111  static const double nanosecond = 1.e-9;
112  static const double second = 1.e+9 * nanosecond;
113  static const double millisecond = 1.e-3 * second;
114  static const double microsecond = 1.e-6 * second;
115  static const double picosecond = 1.e-12 * second;
116 
117  static const double hertz = 1. / second;
118  static const double kilohertz = 1.e+3 * hertz;
119  static const double megahertz = 1.e+6 * hertz;
120 
121  // symbols
122  static const double ns = nanosecond;
123  static const double s = second;
124  static const double ms = millisecond;
125 
126  //
127  // Electric charge [Q]
128  //
129  static const double eplus = 1.; // positron charge
130  static const double e_SI = 1.602176487e-19; // positron charge in coulomb
131  static const double coulomb = eplus / e_SI; // coulomb = 6.24150 e+18 * eplus
132 
133  //
134  // Energy [E]
135  //
136  static const double megaelectronvolt = 1.e-3;
137  static const double electronvolt = 1.e-6 * megaelectronvolt;
138  static const double kiloelectronvolt = 1.e-3 * megaelectronvolt;
139  static const double gigaelectronvolt = 1.e+3 * megaelectronvolt;
140  static const double teraelectronvolt = 1.e+6 * megaelectronvolt;
141  static const double petaelectronvolt = 1.e+9 * megaelectronvolt;
142 
143  static const double joule = electronvolt / e_SI; // joule = 6.24150 e+12 * MeV
144 
145  // symbols
146  static const double MeV = megaelectronvolt;
147  static const double eV = electronvolt;
148  static const double keV = kiloelectronvolt;
149  static const double GeV = gigaelectronvolt;
150  static const double TeV = teraelectronvolt;
151  static const double PeV = petaelectronvolt;
152 
153  //
154  // Mass [E][T^2][L^-2]
155  //
156  static const double kilogram = joule * second * second / (meter * meter);
157  static const double gram = 1.e-3 * kilogram;
158  static const double milligram = 1.e-3 * gram;
159 
160  // symbols
161  static const double kg = kilogram;
162  static const double g = gram;
163  static const double mg = milligram;
164 
165  //
166  // Power [E][T^-1]
167  //
168  static const double watt = joule / second; // watt = 6.24150 e+3 * MeV/ns
169 
170  //
171  // Force [E][L^-1]
172  //
173  static const double newton = joule / meter; // newton = 6.24150 e+9 * MeV/mm
174 
175  //
176  // Pressure [E][L^-3]
177  //
178 #define pascal hep_pascal // a trick to avoid warnings
179  static const double hep_pascal = newton / m2; // pascal = 6.24150 e+3 * MeV/mm3
180  static const double bar = 100000 * pascal; // bar = 6.24150 e+8 * MeV/mm3
181  static const double atmosphere = 101325 * pascal; // atm = 6.32420 e+8 * MeV/mm3
182 
183  //
184  // Electric current [Q][T^-1]
185  //
186  static const double ampere = coulomb / second; // ampere = 6.24150 e+9 * eplus/ns
187  static const double milliampere = 1.e-3 * ampere;
188  static const double microampere = 1.e-6 * ampere;
189  static const double nanoampere = 1.e-9 * ampere;
190 
191  //
192  // Electric potential [E][Q^-1]
193  //
194  static const double megavolt = megaelectronvolt / eplus;
195  static const double kilovolt = 1.e-3 * megavolt;
196  static const double volt = 1.e-6 * megavolt;
197 
198  //
199  // Electric resistance [E][T][Q^-2]
200  //
201  static const double ohm = volt / ampere; // ohm = 1.60217e-16*(MeV/eplus)/(eplus/ns)
202 
203  //
204  // Electric capacitance [Q^2][E^-1]
205  //
206  static const double farad = coulomb / volt; // farad = 6.24150e+24 * eplus/Megavolt
207  static const double millifarad = 1.e-3 * farad;
208  static const double microfarad = 1.e-6 * farad;
209  static const double nanofarad = 1.e-9 * farad;
210  static const double picofarad = 1.e-12 * farad;
211 
212  //
213  // Magnetic Flux [T][E][Q^-1]
214  //
215  static const double weber = volt * second; // weber = 1000*megavolt*ns
216 
217  //
218  // Magnetic Field [T][E][Q^-1][L^-2]
219  //
220  static const double tesla = volt * second / meter2; // tesla =0.001*megavolt*ns/mm2
221 
222  static const double gauss = 1.e-4 * tesla;
223  static const double kilogauss = 1.e-1 * tesla;
224 
225  //
226  // Inductance [T^2][E][Q^-2]
227  //
228  static const double henry = weber / ampere; // henry = 1.60217e-7*MeV*(ns/eplus)**2
229 
230  //
231  // Temperature
232  //
233  static const double kelvin = 1.;
234 
235  //
236  // Amount of substance
237  //
238  static const double mole = 1.;
239 
240  //
241  // Activity [T^-1]
242  //
243  static const double becquerel = 1. / second;
244  static const double curie = 3.7e+10 * becquerel;
245 
246  //
247  // Absorbed dose [L^2][T^-2]
248  //
249  static const double gray = joule / kilogram;
250  static const double kilogray = 1.e+3 * gray;
251  static const double milligray = 1.e-3 * gray;
252  static const double microgray = 1.e-6 * gray;
253 
254  //
255  // Luminous intensity [I]
256  //
257  static const double candela = 1.;
258 
259  //
260  // Luminous flux [I]
261  //
262  static const double lumen = candela * steradian;
263 
264  //
265  // Illuminance [I][L^-2]
266  //
267  static const double lux = lumen / meter2;
268 
269  //
270  // Miscellaneous
271  //
272  static const double perCent = 0.01;
273  static const double perThousand = 0.001;
274  static const double perMillion = 0.000001;
275 
276  // -*- C++ -*-
277  // $Id: $
278  // ----------------------------------------------------------------------
279  // HEP coherent Physical Constants
280  //
281  // This file has been provided by Geant4 (simulation toolkit for HEP).
282  //
283  // The basic units are :
284  // millimeter
285  // nanosecond
286  // Mega electron Volt
287  // positon charge
288  // degree Kelvin
289  // amount of substance (mole)
290  // luminous intensity (candela)
291  // radian
292  // steradian
293  //
294  // Below is a non exhaustive list of Physical CONSTANTS,
295  // computed in the Internal HEP System Of Units.
296  //
297  // Most of them are extracted from the Particle Data Book :
298  // Phys. Rev. D volume 50 3-1 (1994) page 1233
299  //
300  // ...with a meaningful (?) name ...
301  //
302  // You can add your own constants.
303  //
304  // Author: M.Maire
305  //
306  // History:
307  //
308  // 23.02.96 Created
309  // 26.03.96 Added constants for standard conditions of temperature
310  // and pressure; also added Gas threshold.
311  // 29.04.08 use PDG 2006 values
312  // 03.11.08 use PDG 2008 values
313 
314  static const double pi = 3.14159265358979323846;
315  static const double twopi = 2 * pi;
316  static const double halfpi = pi / 2;
317  static const double pi2 = pi * pi;
318 
319  //
320  //
321  //
322  static const double Avogadro = 6.02214179e+23 / mole;
323 
324  //
325  // c = 299.792458 mm/ns
326  // c^2 = 898.7404 (mm/ns)^2
327  //
328  static const double c_light = 2.99792458e+8 * m / s;
329  static const double c_squared = c_light * c_light;
330 
331  //
332  // h = 4.13566e-12 MeV*ns
333  // hbar = 6.58212e-13 MeV*ns
334  // hbarc = 197.32705e-12 MeV*mm
335  //
336  static const double h_Planck = 6.62606896e-34 * joule * s;
337  static const double hbar_Planck = h_Planck / twopi;
338  static const double hbarc = hbar_Planck * c_light;
339  static const double hbarc_squared = hbarc * hbarc;
340 
341  //
342  //
343  //
344  static const double electron_charge = -eplus; // see SystemOfUnits.h
345  static const double e_squared = eplus * eplus;
346 
347  //
348  // amu_c2 - atomic equivalent mass unit
349  // - AKA, unified atomic mass unit (u)
350  // amu - atomic mass unit
351  //
352  static const double electron_mass_c2 = 0.510998910 * MeV;
353  static const double proton_mass_c2 = 938.272013 * MeV;
354  static const double neutron_mass_c2 = 939.56536 * MeV;
355  static const double amu_c2 = 931.494028 * MeV;
356  static const double amu = amu_c2 / c_squared;
357 
358  //
359  // permeability of free space mu0 = 2.01334e-16 Mev*(ns*eplus)^2/mm
360  // permittivity of free space epsil0 = 5.52636e+10 eplus^2/(MeV*mm)
361  //
362  static const double mu0 = 4 * pi * 1.e-7 * henry / m;
363  static const double epsilon0 = 1. / (c_squared * mu0);
364 
365  //
366  // electromagnetic coupling = 1.43996e-12 MeV*mm/(eplus^2)
367  //
368  static const double elm_coupling = e_squared / (4 * pi * epsilon0);
369  static const double fine_structure_const = elm_coupling / hbarc;
373 
375 
377  //
378  //
379  //
380  static const double k_Boltzmann = 8.617343e-11 * MeV / kelvin;
381 
382  //
383  //
384  //
385  static const double STP_Temperature = 273.15 * kelvin;
386  static const double STP_Pressure = 1. * atmosphere;
387  static const double kGasThreshold = 10. * mg / cm3;
388 
389  //
390  //
391  //
392  static const double universe_mean_density = 1.e-25 * g / cm3;
393 
394 }
395 #endif /* DD4HEP_TGEOUNITS_H */
static const double hertz
Definition: DD4hepUnits.h:117
static const double STP_Temperature
Definition: DD4hepUnits.h:385
static const double microgray
Definition: DD4hepUnits.h:252
static const double millimeter2
Definition: DD4hepUnits.h:37
static const double nanoampere
Definition: DD4hepUnits.h:189
static const double MeV
Definition: DD4hepUnits.h:146
static const double PeV
Definition: DD4hepUnits.h:151
static const double millimeter
Definition: DD4hepUnits.h:36
static const double ohm
Definition: DD4hepUnits.h:201
static const double centimeter
Definition: DD4hepUnits.h:40
static const double lux
Definition: DD4hepUnits.h:267
static const double parsec
Definition: DD4hepUnits.h:52
static const double degree
Definition: DD4hepUnits.h:98
static const double kilovolt
Definition: DD4hepUnits.h:195
static const double twopi
Definition: DD4hepUnits.h:315
static const double c_squared
Definition: DD4hepUnits.h:329
static const double millimeter3
Definition: DD4hepUnits.h:38
static const double fine_structure_const
Definition: DD4hepUnits.h:369
static const double sr
Definition: DD4hepUnits.h:105
static const double keV
Definition: DD4hepUnits.h:148
static const double kilometer
Definition: DD4hepUnits.h:48
static const double perThousand
Definition: DD4hepUnits.h:273
static const double m3
Definition: DD4hepUnits.h:79
static const double kilohertz
Definition: DD4hepUnits.h:118
static const double petaelectronvolt
Definition: DD4hepUnits.h:141
static const double universe_mean_density
Definition: DD4hepUnits.h:392
static const double farad
Definition: DD4hepUnits.h:206
static const double eplus
Definition: DD4hepUnits.h:129
static const double deg
Definition: DD4hepUnits.h:106
static const double e_SI
Definition: DD4hepUnits.h:130
static const double kilometer2
Definition: DD4hepUnits.h:49
static const double microsecond
Definition: DD4hepUnits.h:114
static const double joule
Definition: DD4hepUnits.h:143
static const double pi
Definition: DD4hepUnits.h:314
static const double microbarn
Definition: DD4hepUnits.h:61
static const double hep_pascal
Definition: DD4hepUnits.h:179
static const double kilogauss
Definition: DD4hepUnits.h:223
static const double kilogray
Definition: DD4hepUnits.h:250
static const double picobarn
Definition: DD4hepUnits.h:63
static const double m2
Definition: DD4hepUnits.h:78
static const double mu0
Definition: DD4hepUnits.h:362
static const double milligray
Definition: DD4hepUnits.h:251
static const double classic_electr_radius
Definition: DD4hepUnits.h:370
static const double nanofarad
Definition: DD4hepUnits.h:209
static const double meter3
Definition: DD4hepUnits.h:46
static const double meter2
Definition: DD4hepUnits.h:45
static const double millisecond
Definition: DD4hepUnits.h:113
static const double atmosphere
Definition: DD4hepUnits.h:181
static const double electron_charge
Definition: DD4hepUnits.h:344
static const double teraelectronvolt
Definition: DD4hepUnits.h:140
static const double gray
Definition: DD4hepUnits.h:249
static const double proton_mass_c2
Definition: DD4hepUnits.h:353
static const double nanosecond
Definition: DD4hepUnits.h:111
static const double megavolt
Definition: DD4hepUnits.h:194
static const double kg
Definition: DD4hepUnits.h:161
static const double hbarc_squared
Definition: DD4hepUnits.h:339
static const double henry
Definition: DD4hepUnits.h:228
static const double pi2
Definition: DD4hepUnits.h:317
static const double nm
Definition: DD4hepUnits.h:66
static const double microfarad
Definition: DD4hepUnits.h:208
static const double eV
Definition: DD4hepUnits.h:147
static const double radian
Definition: DD4hepUnits.h:96
static const double milligram
Definition: DD4hepUnits.h:158
static const double km3
Definition: DD4hepUnits.h:83
static const double TeV
Definition: DD4hepUnits.h:150
static const double kilometer3
Definition: DD4hepUnits.h:50
static const double curie
Definition: DD4hepUnits.h:244
static const double tesla
Definition: DD4hepUnits.h:220
static const double k_Boltzmann
Definition: DD4hepUnits.h:380
static const double um
Definition: DD4hepUnits.h:67
static const double Avogadro
Definition: DD4hepUnits.h:322
static const double hbar_Planck
Definition: DD4hepUnits.h:337
static const double cm3
Definition: DD4hepUnits.h:75
static const double megaelectronvolt
Definition: DD4hepUnits.h:136
static const double Bohr_radius
Definition: DD4hepUnits.h:372
static const double gigaelectronvolt
Definition: DD4hepUnits.h:139
static const double s
Definition: DD4hepUnits.h:123
static const double milliampere
Definition: DD4hepUnits.h:187
static const double meter
Definition: DD4hepUnits.h:44
static const double watt
Definition: DD4hepUnits.h:168
static const double electron_Compton_length
Definition: DD4hepUnits.h:371
static const double GeV
Definition: DD4hepUnits.h:149
static const double angstrom
Definition: DD4hepUnits.h:56
static const double electron_mass_c2
Definition: DD4hepUnits.h:352
static const double hbarc
Definition: DD4hepUnits.h:338
static const double neutron_mass_c2
Definition: DD4hepUnits.h:354
static const double candela
Definition: DD4hepUnits.h:257
static const double gram
Definition: DD4hepUnits.h:157
static const double mole
Definition: DD4hepUnits.h:238
static const double weber
Definition: DD4hepUnits.h:215
static const double nanometer
Definition: DD4hepUnits.h:55
static const double amu_c2
Definition: DD4hepUnits.h:355
static const double mm3
Definition: DD4hepUnits.h:71
static const double g
Definition: DD4hepUnits.h:162
static const double electronvolt
Definition: DD4hepUnits.h:137
static const double cm
Definition: DD4hepUnits.h:73
#define pascal
Definition: DD4hepUnits.h:178
static const double e_squared
Definition: DD4hepUnits.h:345
static const double elm_coupling
Definition: DD4hepUnits.h:368
static const double millibarn
Definition: DD4hepUnits.h:60
static const double barn
Definition: DD4hepUnits.h:59
static const double twopi_mc2_rcl2
Definition: DD4hepUnits.h:376
static const double coulomb
Definition: DD4hepUnits.h:131
static const double bar
Definition: DD4hepUnits.h:180
static const double pc
Definition: DD4hepUnits.h:85
static const double c_light
Definition: DD4hepUnits.h:328
static const double amu
Definition: DD4hepUnits.h:356
static const double perMillion
Definition: DD4hepUnits.h:274
static const double km
Definition: DD4hepUnits.h:81
static const double fermi
Definition: DD4hepUnits.h:57
static const double rad
Definition: DD4hepUnits.h:103
static const double kelvin
Definition: DD4hepUnits.h:233
static const double centimeter3
Definition: DD4hepUnits.h:42
static const double microampere
Definition: DD4hepUnits.h:188
static const double picosecond
Definition: DD4hepUnits.h:115
static const double gauss
Definition: DD4hepUnits.h:222
static const double second
Definition: DD4hepUnits.h:112
static const double lumen
Definition: DD4hepUnits.h:262
static const double mg
Definition: DD4hepUnits.h:163
static const double kGasThreshold
Definition: DD4hepUnits.h:387
static const double cm2
Definition: DD4hepUnits.h:74
static const double volt
Definition: DD4hepUnits.h:196
static const double becquerel
Definition: DD4hepUnits.h:243
static const double steradian
Definition: DD4hepUnits.h:100
static const double milliradian
Definition: DD4hepUnits.h:97
static const double nanobarn
Definition: DD4hepUnits.h:62
static const double newton
Definition: DD4hepUnits.h:173
static const double alpha_rcl2
Definition: DD4hepUnits.h:374
static const double epsilon0
Definition: DD4hepUnits.h:363
static const double millifarad
Definition: DD4hepUnits.h:207
static const double mm
Definition: DD4hepUnits.h:69
static const double km2
Definition: DD4hepUnits.h:82
static const double micrometer
Definition: DD4hepUnits.h:54
static const double mm2
Definition: DD4hepUnits.h:70
static const double ampere
Definition: DD4hepUnits.h:186
static const double kiloelectronvolt
Definition: DD4hepUnits.h:138
static const double mrad
Definition: DD4hepUnits.h:104
static const double perCent
Definition: DD4hepUnits.h:272
static const double STP_Pressure
Definition: DD4hepUnits.h:386
static const double halfpi
Definition: DD4hepUnits.h:316
static const double m
Definition: DD4hepUnits.h:77
static const double ns
Definition: DD4hepUnits.h:122
static const double picofarad
Definition: DD4hepUnits.h:210
static const double megahertz
Definition: DD4hepUnits.h:119
static const double h_Planck
Definition: DD4hepUnits.h:336
static const double centimeter2
Definition: DD4hepUnits.h:41
static const double ms
Definition: DD4hepUnits.h:124
static const double kilogram
Definition: DD4hepUnits.h:156