AugerUnits.h
Go to the documentation of this file.
1 // Auger system of units
2 
3 #ifndef _utl_AugerUnits_h_
4 #define _utl_AugerUnits_h_
5 
6 #include <utl/SymbolTable.h>
7 
8 
9 namespace utl {
10 
58  // Prefixes
59  constexpr double yocto = 1e-24;
60  constexpr double zepto = 1e-21;
61  constexpr double atto = 1e-18;
62  constexpr double femto = 1e-15;
63  constexpr double pico = 1e-12;
64  constexpr double nano = 1e-9;
65  constexpr double micro = 1e-6;
66  constexpr double milli = 1e-3;
67  constexpr double centi = 1e-2;
68  constexpr double deci = 1e-1;
69  constexpr double deka = 1e+1;
70  constexpr double hecto = 1e+2;
71  constexpr double kilo = 1e+3;
72  constexpr double mega = 1e+6;
73  constexpr double giga = 1e+9;
74  constexpr double tera = 1e+12;
75  constexpr double peta = 1e+15;
76  constexpr double exa = 1e+18;
77  constexpr double zetta = 1e+21;
78  constexpr double yotta = 1e+24;
79 
80  // Length [L]
81  constexpr double meter = 1;
82  constexpr double meter2 = meter*meter;
83  constexpr double meter3 = meter*meter*meter;
84 
85  constexpr double millimeter = milli*meter;
86  constexpr double millimeter2 = millimeter*millimeter;
88 
89  constexpr double centimeter = centi*meter;
90  constexpr double centimeter2 = centimeter*centimeter;
92 
93  constexpr double kilometer = kilo*meter;
94  constexpr double kilometer2 = kilometer*kilometer;
96 
97  constexpr double parsec = 3.0856775807e+16 * meter;
98  constexpr double kiloParsec = kilo * parsec;
99  constexpr double megaParsec = mega * parsec;
100 
101  constexpr double micrometer = micro*meter;
102  constexpr double nanometer = nano*meter;
103  constexpr double angstrom = 1e-10*meter;
104  constexpr double fermi = femto*meter;
105 
106  constexpr double barn = 1e-28*meter2;
107  constexpr double millibarn = milli*barn;
108  constexpr double microbarn = micro*barn;
109  constexpr double nanobarn = nano*barn;
110  constexpr double picobarn = pico*barn;
111 
112  // symbols
113  constexpr double mm = millimeter;
114  constexpr double mm2 = millimeter2;
115  constexpr double mm3 = millimeter3;
116 
117  constexpr double cm = centimeter;
118  constexpr double cm2 = centimeter2;
119  constexpr double cm3 = centimeter3;
120 
121  constexpr double m = meter;
122  constexpr double m2 = meter2;
123  constexpr double m3 = meter3;
124 
125  constexpr double km = kilometer;
126  constexpr double km2 = kilometer2;
127  constexpr double km3 = kilometer3;
128 
129  // Angle
130  constexpr double radian = 1;
131  constexpr double milliradian = milli*radian;
132  constexpr double degree = (3.14159265358979323846/180)*radian;
133 
134  constexpr double steradian = 1;
135 
136  // symbols
137  constexpr double rad = radian;
138  constexpr double mrad = milliradian;
139  constexpr double sr = steradian;
140  constexpr double deg = degree;
141 
142  // Time [T]
143  constexpr double nanosecond = 1;
144  constexpr double nanosecond2 = nanosecond*nanosecond;
145  constexpr double second = giga*nanosecond;
146  constexpr double millisecond = milli*second;
147  constexpr double microsecond = micro*second;
148  constexpr double picosecond = pico*second;
149  constexpr double minute = 60*second;
150  constexpr double hour = 60*minute;
151  constexpr double day = 24*hour;
152 
153  constexpr double hertz = 1/second;
154  constexpr double kilohertz = kilo*hertz;
155  constexpr double megahertz = mega*hertz;
156 
157  constexpr double Hz = hertz;
158  constexpr double kHz = kilohertz;
159  constexpr double MHz = megahertz;
160 
161  // symbols
162  constexpr double ns = nanosecond;
163  constexpr double s = second;
164  constexpr double ms = millisecond;
165 
166  // Electric charge [Q]
167  constexpr double eplus = 1; // positron charge
168  constexpr double eSI = 1.602176462e-19; // positron charge in coulomb
169  constexpr double coulomb = eplus/eSI; // coulomb = 6.24150 e+18*eplus
170 
171  // Energy [E]
172  constexpr double electronvolt = 1;
173  constexpr double megaelectronvolt = mega*electronvolt;
174  constexpr double kiloelectronvolt = kilo*electronvolt;
175  constexpr double gigaelectronvolt = giga*electronvolt;
176  constexpr double teraelectronvolt = tera*electronvolt;
177  constexpr double petaelectronvolt = peta*electronvolt;
178  constexpr double exaelectronvolt = exa*electronvolt;
180 
181  constexpr double joule = electronvolt/eSI; // joule = 6.24150 e+12 * MeV
182 
183  // symbols
184  constexpr double MeV = megaelectronvolt;
185  constexpr double eV = electronvolt;
186  constexpr double keV = kiloelectronvolt;
187  constexpr double GeV = gigaelectronvolt;
188  constexpr double TeV = teraelectronvolt;
189  constexpr double PeV = petaelectronvolt;
190  constexpr double EeV = exaelectronvolt;
191  constexpr double ZeV = zettaelectronvolt;
192 
193  // Mass [E][T^2][L^-2]
194  constexpr double kilogram = joule*second*second/(meter*meter);
195  constexpr double gram = milli*kilogram;
196  constexpr double milligram = milli*gram;
197 
198  // symbols
199  constexpr double kg = kilogram;
200  constexpr double g = gram;
201  constexpr double mg = milligram;
202 
203  // Power [E][T^-1]
204  constexpr double watt = joule/second; // watt = 6.24150 e+3 * MeV/ns
205 
206  // Force [E][L^-1]
207  constexpr double newton = joule/meter; // newton = 6.24150 e+9 * MeV/mm
208 
209  // Pressure [E][L^-3]
210  //constexpr double hep_pascal = newton/m2; // pascal = 6.24150 e+3 * MeV/mm3
211  //constexpr double pascal = hep_pascal; // pascal = 6.24150 e+3 * MeV/mm3
212  constexpr double pascal = newton/m2; // pascal = 6.24150 e+3 * MeV/mm3
213  constexpr double bar = 100000*pascal; // bar = 6.24150 e+8 * MeV/mm3
214  constexpr double millibar = milli*bar;
215  constexpr double atmosphere = 101325*pascal; // atm = 6.32420 e+8 * MeV/mm3
216 
217  // symbols
218  constexpr double hPa = hecto*pascal;
219 
220  // Electric current [Q][T^-1]
221  constexpr double ampere = coulomb/second; // ampere = 6.24150 e+9 * eplus/ns
222  constexpr double milliampere = milli*ampere;
223  constexpr double microampere = micro*ampere;
224  constexpr double nanoampere = nano*ampere;
225 
226  // Electric potential [E][Q^-1]
227  constexpr double megavolt = megaelectronvolt/eplus;
228  constexpr double kilovolt = milli*megavolt;
229  constexpr double volt = micro*megavolt;
230  constexpr double millivolt = milli*volt;
231  constexpr double microvolt = micro*volt;
232 
233  constexpr double V = volt;
234 
235  // Electric resistance [E][T][Q^-2]
236  constexpr double ohm = volt/ampere; // ohm = 1.60217e-16*(MeV/eplus)/(eplus/ns)
237 
238  // Electric capacitance [Q^2][E^-1]
239  constexpr double farad = coulomb/volt; // farad = 6.24150e+24 * eplus/Megavolt
240  constexpr double millifarad = milli*farad;
241  constexpr double microfarad = micro*farad;
242  constexpr double nanofarad = nano*farad;
243  constexpr double picofarad = pico*farad;
244 
245  // Magnetic Flux [T][E][Q^-1]
246  constexpr double weber = volt*second; // weber = 1000*megavolt*ns
247 
248  // Magnetic Field [T][E][Q^-1][L^-2]
249  constexpr double tesla = volt*second/meter2; // tesla =0.001*megavolt*ns/mm2
250  constexpr double microtesla = micro*tesla;
251 
252  constexpr double gauss = 1e-4*tesla;
253  constexpr double kilogauss = deci*tesla;
254 
255  // Inductance [T^2][E][Q^-2]
256  constexpr double henry = weber/ampere; // henry = 1.60217e-7*MeV*(ns/eplus)**2
257 
258  // Temperature
259  constexpr double kelvin = 1;
260 
261  // Amount of substance
262  constexpr double mole = 1;
263 
264  // Activity [T^-1]
265  constexpr double becquerel = 1/second;
266  constexpr double curie = 3.7e+10 * becquerel;
267 
268  // Absorbed dose [L^2][T^-2]
269  constexpr double gray = joule/kilogram;
270 
271  // Luminous intensity [I]
272  constexpr double candela = 1;
273 
274  // Luminous flux [I]
275  constexpr double lumen = candela*steradian;
276 
277  // Illuminance [I][L^-2]
278  constexpr double lux = lumen/meter2;
279 
280  // Miscellaneous
281  constexpr double fraction = 1;
282  constexpr double perCent = 0.01;
283  constexpr double percent = perCent;
284  constexpr double perThousand = 0.001;
285  constexpr double permil = perThousand;
286  constexpr double perMillion = 0.000001;
287 
288  // System of unit settings for the CLHEP
289  // expression Evaluator. This puts the Evaluator
290  // into the same units system defined in this file.
291  // (note Evaluator is in SI by default)
292 
293 
294  namespace Evaluator {
295  constexpr double kLength = meter;
296  constexpr double kMass = kilogram;
297  constexpr double kTime = second;
298  constexpr double kCurrent = ampere;
299  constexpr double kTemperature = kelvin;
300  constexpr double kAmount = mole;
301  constexpr double kLuminousIntensity = candela;
302  }
303 
304 
305  class AugerUnits {
306 
307  public:
309 
310  static const SymbolTable& GetSymbolMap() { FillMap(); return fgUnitMap; }
311 
312  private:
313  static void FillMap();
314 
316  };
317 
318 }
319 
320 
321 #endif
constexpr double milliradian
Definition: AugerUnits.h:131
constexpr double millisecond
Definition: AugerUnits.h:146
constexpr double kTemperature
Definition: AugerUnits.h:299
constexpr double second
Definition: AugerUnits.h:145
constexpr double mm2
Definition: AugerUnits.h:114
constexpr double kilo
Definition: AugerUnits.h:71
constexpr double centimeter
Definition: AugerUnits.h:89
constexpr double kilometer2
Definition: AugerUnits.h:94
constexpr double eV
Definition: AugerUnits.h:185
constexpr double milli
Definition: AugerUnits.h:66
constexpr double mm
Definition: AugerUnits.h:113
constexpr double perCent
Definition: AugerUnits.h:282
constexpr double milligram
Definition: AugerUnits.h:196
constexpr double V
Definition: AugerUnits.h:233
constexpr double hecto
Definition: AugerUnits.h:70
constexpr double EeV
Definition: AugerUnits.h:190
constexpr double atmosphere
Definition: AugerUnits.h:215
constexpr double petaelectronvolt
Definition: AugerUnits.h:177
constexpr double cm3
Definition: AugerUnits.h:119
constexpr double km
Definition: AugerUnits.h:125
constexpr double lux
Definition: AugerUnits.h:278
constexpr double MHz
Definition: AugerUnits.h:159
constexpr double PeV
Definition: AugerUnits.h:189
constexpr double kilogram
Definition: AugerUnits.h:194
constexpr double centi
Definition: AugerUnits.h:67
constexpr double femto
Definition: AugerUnits.h:62
constexpr double kilometer3
Definition: AugerUnits.h:95
constexpr double weber
Definition: AugerUnits.h:246
constexpr double millifarad
Definition: AugerUnits.h:240
constexpr double radian
Definition: AugerUnits.h:130
constexpr double rad
Definition: AugerUnits.h:137
constexpr double curie
Definition: AugerUnits.h:266
constexpr double kTime
Definition: AugerUnits.h:297
constexpr double Hz
Definition: AugerUnits.h:157
constexpr double percent
Definition: AugerUnits.h:283
constexpr double kLength
Definition: AugerUnits.h:295
constexpr double gigaelectronvolt
Definition: AugerUnits.h:175
constexpr double m2
Definition: AugerUnits.h:122
constexpr double picofarad
Definition: AugerUnits.h:243
constexpr double km2
Definition: AugerUnits.h:126
constexpr double giga
Definition: AugerUnits.h:73
constexpr double megaelectronvolt
Definition: AugerUnits.h:173
constexpr double exaelectronvolt
Definition: AugerUnits.h:178
constexpr double tera
Definition: AugerUnits.h:74
constexpr double kCurrent
Definition: AugerUnits.h:298
constexpr double centimeter3
Definition: AugerUnits.h:91
constexpr double kiloParsec
Definition: AugerUnits.h:98
constexpr double nanometer
Definition: AugerUnits.h:102
constexpr double deg
Definition: AugerUnits.h:140
constexpr double MeV
Definition: AugerUnits.h:184
constexpr double kLuminousIntensity
Definition: AugerUnits.h:301
constexpr double gray
Definition: AugerUnits.h:269
constexpr double ms
Definition: AugerUnits.h:164
constexpr double micrometer
Definition: AugerUnits.h:101
constexpr double lumen
Definition: AugerUnits.h:275
constexpr double mole
Definition: AugerUnits.h:262
constexpr double s
Definition: AugerUnits.h:163
constexpr double exa
Definition: AugerUnits.h:76
constexpr double microfarad
Definition: AugerUnits.h:241
constexpr double permil
Definition: AugerUnits.h:285
constexpr double pascal
Definition: AugerUnits.h:212
constexpr double pico
Definition: AugerUnits.h:63
constexpr double nanobarn
Definition: AugerUnits.h:109
constexpr double zettaelectronvolt
Definition: AugerUnits.h:179
constexpr double nanoampere
Definition: AugerUnits.h:224
constexpr double millimeter
Definition: AugerUnits.h:85
constexpr double nanofarad
Definition: AugerUnits.h:242
constexpr double mrad
Definition: AugerUnits.h:138
constexpr double nanosecond
Definition: AugerUnits.h:143
constexpr double kAmount
Definition: AugerUnits.h:300
constexpr double tesla
Definition: AugerUnits.h:249
constexpr double fraction
Definition: AugerUnits.h:281
constexpr double m3
Definition: AugerUnits.h:123
constexpr double ohm
Definition: AugerUnits.h:236
constexpr double meter
Definition: AugerUnits.h:81
constexpr double deka
Definition: AugerUnits.h:69
constexpr double picobarn
Definition: AugerUnits.h:110
constexpr double candela
Definition: AugerUnits.h:272
constexpr double peta
Definition: AugerUnits.h:75
constexpr double kMass
Definition: AugerUnits.h:296
constexpr double degree
constexpr double megahertz
Definition: AugerUnits.h:155
constexpr double kHz
Definition: AugerUnits.h:158
constexpr double g
Definition: AugerUnits.h:200
constexpr double km3
Definition: AugerUnits.h:127
constexpr double kilogauss
Definition: AugerUnits.h:253
constexpr double barn
Definition: AugerUnits.h:106
constexpr double fermi
Definition: AugerUnits.h:104
constexpr double yocto
Definition: AugerUnits.h:59
std::map< std::string, double > SymbolTable
Definition: SymbolTable.h:10
constexpr double watt
Definition: AugerUnits.h:204
constexpr double microtesla
Definition: AugerUnits.h:250
constexpr double mg
Definition: AugerUnits.h:201
static void FillMap()
Definition: AugerUnits.cc:14
constexpr double hertz
Definition: AugerUnits.h:153
constexpr double minute
Definition: AugerUnits.h:149
constexpr double hour
Definition: AugerUnits.h:150
constexpr double kilovolt
Definition: AugerUnits.h:228
constexpr double kelvin
Definition: AugerUnits.h:259
constexpr double microvolt
Definition: AugerUnits.h:231
constexpr double nanosecond2
Definition: AugerUnits.h:144
constexpr double picosecond
Definition: AugerUnits.h:148
constexpr double joule
Definition: AugerUnits.h:181
constexpr double ZeV
Definition: AugerUnits.h:191
constexpr double millivolt
Definition: AugerUnits.h:230
constexpr double perThousand
Definition: AugerUnits.h:284
constexpr double microbarn
Definition: AugerUnits.h:108
constexpr double hPa
Definition: AugerUnits.h:218
constexpr double TeV
Definition: AugerUnits.h:188
constexpr double megaParsec
Definition: AugerUnits.h:99
constexpr double GeV
Definition: AugerUnits.h:187
constexpr double mm3
Definition: AugerUnits.h:115
constexpr double gauss
Definition: AugerUnits.h:252
constexpr double farad
Definition: AugerUnits.h:239
constexpr double millibarn
Definition: AugerUnits.h:107
constexpr double deci
Definition: AugerUnits.h:68
constexpr double volt
Definition: AugerUnits.h:229
constexpr double teraelectronvolt
Definition: AugerUnits.h:176
constexpr double steradian
Definition: AugerUnits.h:134
constexpr double cm
Definition: AugerUnits.h:117
constexpr double kilometer
Definition: AugerUnits.h:93
constexpr double sr
Definition: AugerUnits.h:139
constexpr double meter2
Definition: AugerUnits.h:82
constexpr double kiloelectronvolt
Definition: AugerUnits.h:174
constexpr double ampere
Definition: AugerUnits.h:221
constexpr double micro
Definition: AugerUnits.h:65
constexpr double centimeter2
Definition: AugerUnits.h:90
constexpr double ns
Definition: AugerUnits.h:162
constexpr double keV
Definition: AugerUnits.h:186
constexpr double microampere
Definition: AugerUnits.h:223
constexpr double kilohertz
Definition: AugerUnits.h:154
constexpr double becquerel
Definition: AugerUnits.h:265
constexpr double eplus
Definition: AugerUnits.h:167
static const SymbolTable & GetSymbolMap()
Definition: AugerUnits.h:310
constexpr double atto
Definition: AugerUnits.h:61
constexpr double megavolt
Definition: AugerUnits.h:227
constexpr double zetta
Definition: AugerUnits.h:77
constexpr double milliampere
Definition: AugerUnits.h:222
constexpr double eSI
Definition: AugerUnits.h:168
constexpr double nano
Definition: AugerUnits.h:64
constexpr double parsec
Definition: AugerUnits.h:97
constexpr double coulomb
Definition: AugerUnits.h:169
constexpr double m
Definition: AugerUnits.h:121
constexpr double microsecond
Definition: AugerUnits.h:147
constexpr double gram
Definition: AugerUnits.h:195
constexpr double henry
Definition: AugerUnits.h:256
constexpr double zepto
Definition: AugerUnits.h:60
constexpr double perMillion
Definition: AugerUnits.h:286
constexpr double bar
Definition: AugerUnits.h:213
constexpr double millibar
Definition: AugerUnits.h:214
constexpr double millimeter3
Definition: AugerUnits.h:87
constexpr double day
Definition: AugerUnits.h:151
static SymbolTable fgUnitMap
Definition: AugerUnits.h:315
constexpr double yotta
Definition: AugerUnits.h:78
constexpr double millimeter2
Definition: AugerUnits.h:86
constexpr double meter3
Definition: AugerUnits.h:83
constexpr double angstrom
Definition: AugerUnits.h:103
constexpr double mega
Definition: AugerUnits.h:72
constexpr double kg
Definition: AugerUnits.h:199
constexpr double newton
Definition: AugerUnits.h:207
constexpr double electronvolt
Definition: AugerUnits.h:172
constexpr double cm2
Definition: AugerUnits.h:118

, generated on Tue Sep 26 2023.