Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:00:36

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 // -*- C++ -*-
0012 // ----------------------------------------------------------------------
0013 // HEP coherent system of Units
0014 //
0015 // This file has been provided to CLHEP by Geant4 (simulation toolkit for HEP).
0016 //
0017 // The basic units are :
0018 //          millimeter              (millimeter)
0019 //      nanosecond              (nanosecond)
0020 //      Mega electron Volt      (MeV)
0021 //      positron charge         (eplus)
0022 //      degree Kelvin           (kelvin)
0023 //              the amount of substance (mole)
0024 //              luminous intensity      (candela)
0025 //      radian                  (radian)
0026 //              steradian               (steradian)
0027 //
0028 // Below is a non exhaustive list of derived and pratical units
0029 // (i.e. mostly the SI units).
0030 // You can add your own units.
0031 //
0032 // The SI numerical value of the positron charge is defined here,
0033 // as it is needed for conversion factor : positron charge = e_SI (coulomb)
0034 //
0035 // The others physical constants are defined in the header file :
0036 //          PhysicalConstants.h
0037 //
0038 // Authors: M.Maire, S.Giani
0039 //
0040 // History:
0041 //
0042 // 06.02.96   Created.
0043 // 28.03.96   Added miscellaneous constants.
0044 // 05.12.97   E.Tcherniaev: Redefined pascal (to avoid warnings on WinNT)
0045 // 20.05.98   names: meter, second, gram, radian, degree
0046 //            (from Brian.Lasiuk@yale.edu (STAR)). Added luminous units.
0047 // 05.08.98   angstrom, picobarn, microsecond, picosecond, petaelectronvolt
0048 // 01.03.01   parsec
0049 // 28.04.06   import from CLHEP to GaudiKernel -- HD
0050 // 11.05.06   Rename pascal to Pa to avoid warnings on Windows - MC
0051 
0052 #ifndef GAUDI_SYSTEM_OF_UNITS_H
0053 #define GAUDI_SYSTEM_OF_UNITS_H
0054 
0055 namespace Gaudi {
0056   namespace Units {
0057 
0058     //
0059     // Length [L]
0060     //
0061     constexpr double millimeter  = 1.;
0062     constexpr double millimeter2 = millimeter * millimeter;
0063     constexpr double millimeter3 = millimeter * millimeter * millimeter;
0064 
0065     constexpr double centimeter  = 10. * millimeter;
0066     constexpr double centimeter2 = centimeter * centimeter;
0067     constexpr double centimeter3 = centimeter * centimeter * centimeter;
0068 
0069     constexpr double meter  = 1000. * millimeter;
0070     constexpr double meter2 = meter * meter;
0071     constexpr double meter3 = meter * meter * meter;
0072 
0073     constexpr double kilometer  = 1000. * meter;
0074     constexpr double kilometer2 = kilometer * kilometer;
0075     constexpr double kilometer3 = kilometer * kilometer * kilometer;
0076 
0077     constexpr double parsec = 3.0856775807e+16 * meter;
0078 
0079     constexpr double micrometer = 1.e-6 * meter;
0080     constexpr double nanometer  = 1.e-9 * meter;
0081     constexpr double angstrom   = 1.e-10 * meter;
0082     constexpr double fermi      = 1.e-15 * meter;
0083 
0084     constexpr double barn      = 1.e-28 * meter2;
0085     constexpr double millibarn = 1.e-3 * barn;
0086     constexpr double microbarn = 1.e-6 * barn;
0087     constexpr double nanobarn  = 1.e-9 * barn;
0088     constexpr double picobarn  = 1.e-12 * barn;
0089 
0090     // volume
0091     constexpr double liter = 1.e+3 * centimeter3;
0092     constexpr double dL    = 1.e-1 * liter;
0093     constexpr double cL    = 1.e-2 * liter;
0094     constexpr double mL    = 1.e-3 * liter;
0095 
0096     // symbols
0097     constexpr double nm = nanometer;
0098     constexpr double um = micrometer;
0099 
0100     constexpr double mm  = millimeter;
0101     constexpr double mm2 = millimeter2;
0102     constexpr double mm3 = millimeter3;
0103 
0104     constexpr double cm  = centimeter;
0105     constexpr double cm2 = centimeter2;
0106     constexpr double cm3 = centimeter3;
0107 
0108     constexpr double m  = meter;
0109     constexpr double m2 = meter2;
0110     constexpr double m3 = meter3;
0111 
0112     constexpr double km  = kilometer;
0113     constexpr double km2 = kilometer2;
0114     constexpr double km3 = kilometer3;
0115 
0116     constexpr double pc = parsec;
0117 
0118     constexpr double L = liter;
0119 
0120     //
0121     // Angle
0122     //
0123     constexpr double radian      = 1.;
0124     constexpr double milliradian = 1.e-3 * radian;
0125     constexpr double degree      = ( 3.14159265358979323846 / 180.0 ) * radian;
0126 
0127     constexpr double steradian = 1.;
0128 
0129     // symbols
0130     constexpr double rad  = radian;
0131     constexpr double mrad = milliradian;
0132     constexpr double sr   = steradian;
0133     constexpr double deg  = degree;
0134 
0135     //
0136     // Time [T]
0137     //
0138     constexpr double nanosecond  = 1.;
0139     constexpr double second      = 1.e+9 * nanosecond;
0140     constexpr double millisecond = 1.e-3 * second;
0141     constexpr double microsecond = 1.e-6 * second;
0142     constexpr double us          = microsecond;
0143     constexpr double picosecond  = 1.e-12 * second;
0144     constexpr double ps          = picosecond;
0145     constexpr double femtosecond = 1.e-15 * second;
0146 
0147     constexpr double hertz     = 1. / second;
0148     constexpr double kilohertz = 1.e+3 * hertz;
0149     constexpr double megahertz = 1.e+6 * hertz;
0150 
0151     // symbols
0152     constexpr double ns = nanosecond;
0153     constexpr double s  = second;
0154     constexpr double ms = millisecond;
0155 
0156     //
0157     // Electric charge [Q]
0158     //
0159     constexpr double eplus   = 1.;              // positron charge
0160     constexpr double e_SI    = 1.602176487e-19; // positron charge in coulomb
0161     constexpr double coulomb = eplus / e_SI;    // coulomb = 6.24150 e+18 * eplus
0162 
0163     //
0164     // Energy [E]
0165     //
0166     constexpr double megaelectronvolt = 1.;
0167     constexpr double electronvolt     = 1.e-6 * megaelectronvolt;
0168     constexpr double kiloelectronvolt = 1.e-3 * megaelectronvolt;
0169     constexpr double gigaelectronvolt = 1.e+3 * megaelectronvolt;
0170     constexpr double teraelectronvolt = 1.e+6 * megaelectronvolt;
0171     constexpr double petaelectronvolt = 1.e+9 * megaelectronvolt;
0172 
0173     constexpr double joule = electronvolt / e_SI; // joule = 6.24150 e+12 * MeV
0174 
0175     // symbols
0176     constexpr double MeV = megaelectronvolt;
0177     constexpr double eV  = electronvolt;
0178     constexpr double keV = kiloelectronvolt;
0179     constexpr double GeV = gigaelectronvolt;
0180     constexpr double TeV = teraelectronvolt;
0181     constexpr double PeV = petaelectronvolt;
0182 
0183     //
0184     // Mass [E][T^2][L^-2]
0185     //
0186     constexpr double kilogram  = joule * second * second / ( meter * meter );
0187     constexpr double gram      = 1.e-3 * kilogram;
0188     constexpr double milligram = 1.e-3 * gram;
0189 
0190     // symbols
0191     constexpr double kg = kilogram;
0192     constexpr double g  = gram;
0193     constexpr double mg = milligram;
0194 
0195     //
0196     // Power [E][T^-1]
0197     //
0198     constexpr double watt = joule / second; // watt = 6.24150 e+3 * MeV/ns
0199 
0200     //
0201     // Force [E][L^-1]
0202     //
0203     constexpr double newton = joule / meter; // newton = 6.24150 e+9 * MeV/mm
0204 
0205     //
0206     // Pressure [E][L^-3]
0207     //
0208     constexpr double Pa         = newton / m2; // pascal = 6.24150 e+3 * MeV/mm3
0209     constexpr double hep_pascal = Pa;          // to match CLHEP
0210     constexpr double bar        = 100000 * Pa; // bar    = 6.24150 e+8 * MeV/mm3
0211     constexpr double atmosphere = 101325 * Pa; // atm    = 6.32420 e+8 * MeV/mm3
0212 
0213     //
0214     // Electric current [Q][T^-1]
0215     //
0216     constexpr double ampere      = coulomb / second; // ampere = 6.24150 e+9 * eplus/ns
0217     constexpr double milliampere = 1.e-3 * ampere;
0218     constexpr double microampere = 1.e-6 * ampere;
0219     constexpr double nanoampere  = 1.e-9 * ampere;
0220 
0221     //
0222     // Electric potential [E][Q^-1]
0223     //
0224     constexpr double megavolt = megaelectronvolt / eplus;
0225     constexpr double kilovolt = 1.e-3 * megavolt;
0226     constexpr double volt     = 1.e-6 * megavolt;
0227 
0228     //
0229     // Electric resistance [E][T][Q^-2]
0230     //
0231     constexpr double ohm = volt / ampere; // ohm = 1.60217e-16*(MeV/eplus)/(eplus/ns)
0232 
0233     //
0234     // Electric capacitance [Q^2][E^-1]
0235     //
0236     constexpr double farad      = coulomb / volt; // farad = 6.24150e+24 * eplus/Megavolt
0237     constexpr double millifarad = 1.e-3 * farad;
0238     constexpr double microfarad = 1.e-6 * farad;
0239     constexpr double nanofarad  = 1.e-9 * farad;
0240     constexpr double picofarad  = 1.e-12 * farad;
0241 
0242     //
0243     // Magnetic Flux [T][E][Q^-1]
0244     //
0245     constexpr double weber = volt * second; // weber = 1000*megavolt*ns
0246 
0247     //
0248     // Magnetic Field [T][E][Q^-1][L^-2]
0249     //
0250     constexpr double tesla = volt * second / meter2; // tesla =0.001*megavolt*ns/mm2
0251 
0252     constexpr double gauss     = 1.e-4 * tesla;
0253     constexpr double kilogauss = 1.e-1 * tesla;
0254 
0255     //
0256     // Inductance [T^2][E][Q^-2]
0257     //
0258     constexpr double henry = weber / ampere; // henry = 1.60217e-7*MeV*(ns/eplus)**2
0259 
0260     //
0261     // Temperature
0262     //
0263     constexpr double kelvin = 1.;
0264 
0265     //
0266     // Amount of substance
0267     //
0268     constexpr double mole = 1.;
0269 
0270     //
0271     // Activity [T^-1]
0272     //
0273     constexpr double becquerel     = 1. / second;
0274     constexpr double curie         = 3.7e+10 * becquerel;
0275     constexpr double kilobecquerel = 1.e+3 * becquerel;
0276     constexpr double megabecquerel = 1.e+6 * becquerel;
0277     constexpr double gigabecquerel = 1.e+9 * becquerel;
0278     constexpr double millicurie    = 1.e-3 * curie;
0279     constexpr double microcurie    = 1.e-6 * curie;
0280     constexpr double Bq            = becquerel;
0281     constexpr double kBq           = kilobecquerel;
0282     constexpr double MBq           = megabecquerel;
0283     constexpr double GBq           = gigabecquerel;
0284     constexpr double Ci            = curie;
0285     constexpr double mCi           = millicurie;
0286     constexpr double uCi           = microcurie;
0287 
0288     //
0289     // Absorbed dose [L^2][T^-2]
0290     //
0291     constexpr double gray      = joule / kilogram;
0292     constexpr double kilogray  = 1.e+3 * gray;
0293     constexpr double milligray = 1.e-3 * gray;
0294     constexpr double microgray = 1.e-6 * gray;
0295 
0296     //
0297     // Luminous intensity [I]
0298     //
0299     constexpr double candela = 1.;
0300 
0301     //
0302     // Luminous flux [I]
0303     //
0304     constexpr double lumen = candela * steradian;
0305 
0306     //
0307     // Illuminance [I][L^-2]
0308     //
0309     constexpr double lux = lumen / meter2;
0310 
0311     //
0312     // Miscellaneous
0313     //
0314     constexpr double perCent     = 0.01;
0315     constexpr double perThousand = 0.001;
0316     constexpr double perMillion  = 0.000001;
0317 
0318   } // namespace Units
0319 } // namespace Gaudi
0320 
0321 #endif /* GAUDI_SYSTEM_OF_UNITS_H */