| 1 |
* |
| 2 |
* $Id: dblprc.inc,v 1.1.1.1 1995/10/24 10:20:38 cernlib Exp $ |
| 3 |
* |
| 4 |
* $Log: dblprc.inc,v $ |
| 5 |
* Revision 1.1.1.1 1995/10/24 10:20:38 cernlib |
| 6 |
* Geant |
| 7 |
* |
| 8 |
* |
| 9 |
#ifndef CERNLIB_GEANT321_DBLPRC_INC |
| 10 |
#define CERNLIB_GEANT321_DBLPRC_INC |
| 11 |
* |
| 12 |
* |
| 13 |
* dblprc.inc |
| 14 |
* |
| 15 |
#if !defined(GPAMELA_SINGLE) |
| 16 |
* * |
| 17 |
*=== dblprc ==========================================================* |
| 18 |
* * |
| 19 |
*---------------------------------------------------------------------* |
| 20 |
* * |
| 21 |
* Dblprc: included in any routine * |
| 22 |
* * |
| 23 |
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * |
| 24 |
* !!!! O N M A C H I N E S W H E R E T H E D O U B L E !!!! * |
| 25 |
* !!!! P R E C I S I O N I S N O T R E Q U I R E D R E -!!!! * |
| 26 |
* !!!! M O V E T H E D O U B L E P R E C I S I O N !!!! * |
| 27 |
* !!!! S T A T E M E N T, S E T K A L G N M = 1 A N D !!!! * |
| 28 |
* !!!! C H A N G E A L L N U M E R I C A L C O N S - !!!! * |
| 29 |
* !!!! T A N T S T O S I N G L E P R E C I S I O N !!!! * |
| 30 |
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * |
| 31 |
* * |
| 32 |
* Kalgnm = real address alignment, 2 for double precision, * |
| 33 |
* 1 for single precision * |
| 34 |
* Anglgb = this parameter should be set equal to the machine * |
| 35 |
* "zero" with respect to unit * |
| 36 |
* Anglsq = this parameter should be set equal to the square * |
| 37 |
* of Anglgb * |
| 38 |
* Axcssv = this parameter should be set equal to the number * |
| 39 |
* for which unity is negligible for the machine * |
| 40 |
* accuracy * |
| 41 |
* Andrfl = "underflow" of the machine for floating point * |
| 42 |
* operation * |
| 43 |
* Avrflw = "overflow" of the machine for floating point * |
| 44 |
* operation * |
| 45 |
* Ainfnt = code "infinite" * |
| 46 |
* Azrzrz = code "zero" * |
| 47 |
* Einfnt = natural logarithm of the code "infinite" * |
| 48 |
* Ezrzrz = natural logarithm of the code "zero" * |
| 49 |
* Onemns = 1- of the machine, it is 1 - 2 x Anglgb * |
| 50 |
* Onepls = 1+ of the machine, it is 1 + 2 x Anglgb * |
| 51 |
* Csnnrm = maximum tolerable error on cosine normalization, * |
| 52 |
* u**2+v**2+w**2: assuming a typical anglgb relative * |
| 53 |
* error on each component we would get 2xanglgb: use * |
| 54 |
* 4xanglgb to avoid too many normalizations * |
| 55 |
* Dmxtrn = "infinite" distance for transport (cm) * |
| 56 |
* * |
| 57 |
*---------------------------------------------------------------------* |
| 58 |
* * |
| 59 |
IMPLICIT DOUBLE PRECISION (A-H,O-Z) |
| 60 |
PARAMETER ( KALGNM = 2 ) |
| 61 |
PARAMETER ( ANGLGB = 5.0D-16 ) |
| 62 |
PARAMETER ( ANGLSQ = 2.5D-31 ) |
| 63 |
PARAMETER ( AXCSSV = 0.2D+16 ) |
| 64 |
PARAMETER ( ANDRFL = 1.0D-38 ) |
| 65 |
PARAMETER ( AVRFLW = 1.0D+38 ) |
| 66 |
PARAMETER ( AINFNT = 1.0D+30 ) |
| 67 |
PARAMETER ( AZRZRZ = 1.0D-30 ) |
| 68 |
PARAMETER ( EINFNT = +69.07755278982137 D+00 ) |
| 69 |
PARAMETER ( EZRZRZ = -69.07755278982137 D+00 ) |
| 70 |
PARAMETER ( ONEMNS = 0.999999999999999 D+00 ) |
| 71 |
PARAMETER ( ONEPLS = 1.000000000000001 D+00 ) |
| 72 |
PARAMETER ( CSNNRM = 2.0D-15 ) |
| 73 |
PARAMETER ( DMXTRN = 1.0D+08 ) |
| 74 |
* |
| 75 |
*======================================================================* |
| 76 |
*======================================================================* |
| 77 |
*========= ==========* |
| 78 |
*========= M A T H E M A T I C A L C O N S T A N T S ==========* |
| 79 |
*========= ==========* |
| 80 |
*======================================================================* |
| 81 |
*======================================================================* |
| 82 |
* * |
| 83 |
* Numerical constants: * |
| 84 |
* * |
| 85 |
* Zerzer = 0 * |
| 86 |
* Oneone = 1 * |
| 87 |
* Twotwo = 2 * |
| 88 |
* Thrthr = 3 * |
| 89 |
* Foufou = 4 * |
| 90 |
* Fivfiv = 5 * |
| 91 |
* Sixsix = 6 * |
| 92 |
* Sevsev = 7 * |
| 93 |
* Eigeig = 8 * |
| 94 |
* Aninen = 9 * |
| 95 |
* Tenten = 10 * |
| 96 |
* Hlfhlf = 1/2 * |
| 97 |
* Onethi = 1/3 * |
| 98 |
* Twothi = 2/3 * |
| 99 |
* Pipipi = Circumference / diameter * |
| 100 |
* Eneper = "e", base of natural logarithm * |
| 101 |
* Sqrent = square root of "e" * |
| 102 |
* * |
| 103 |
*----------------------------------------------------------------------* |
| 104 |
* |
| 105 |
PARAMETER ( ZERZER = 0.D+00 ) |
| 106 |
PARAMETER ( ONEONE = 1.D+00 ) |
| 107 |
PARAMETER ( TWOTWO = 2.D+00 ) |
| 108 |
PARAMETER ( THRTHR = 3.D+00 ) |
| 109 |
PARAMETER ( FOUFOU = 4.D+00 ) |
| 110 |
PARAMETER ( FIVFIV = 5.D+00 ) |
| 111 |
PARAMETER ( SIXSIX = 6.D+00 ) |
| 112 |
PARAMETER ( SEVSEV = 7.D+00 ) |
| 113 |
PARAMETER ( EIGEIG = 8.D+00 ) |
| 114 |
PARAMETER ( ANINEN = 9.D+00 ) |
| 115 |
PARAMETER ( TENTEN = 10.D+00 ) |
| 116 |
PARAMETER ( HLFHLF = 0.5D+00 ) |
| 117 |
PARAMETER ( ONETHI = ONEONE / THRTHR ) |
| 118 |
PARAMETER ( TWOTHI = TWOTWO / THRTHR ) |
| 119 |
PARAMETER ( PIPIPI = 3.1415926535897932270 D+00 ) |
| 120 |
PARAMETER ( ENEPER = 2.7182818284590452354 D+00 ) |
| 121 |
PARAMETER ( SQRENT = 1.6487212707001281468 D+00 ) |
| 122 |
* |
| 123 |
*======================================================================* |
| 124 |
*======================================================================* |
| 125 |
*========= ==========* |
| 126 |
*========= P H Y S I C A L C O N S T A N T S ==========* |
| 127 |
*========= ==========* |
| 128 |
*======================================================================* |
| 129 |
*======================================================================* |
| 130 |
* * |
| 131 |
* Primary constants: * |
| 132 |
* * |
| 133 |
* Clight = speed of light in cm s-1 * |
| 134 |
* Avogad = Avogadro number * |
| 135 |
* Amelgr = electron mass (g) * |
| 136 |
* Plckbr = reduced Planck constant (erg s) * |
| 137 |
* Elccgs = elementary charge (CGS unit) * |
| 138 |
* Elcmks = elementary charge (MKS unit) * |
| 139 |
* Amugrm = Atomic mass unit (g) * |
| 140 |
* Ammumu = Muon mass (amu) * |
| 141 |
* * |
| 142 |
* Derived constants: * |
| 143 |
* * |
| 144 |
* Alpfsc = Fine structure constant = e^2/(hbar c) * |
| 145 |
* Amelct = Electron mass (GeV) = 10^-16Amelgr Clight^2 / Elcmks* |
| 146 |
* Amugev = Atomic mass unit (GeV) = 10^-16Amelgr Clight^2 * |
| 147 |
* / Elcmks * |
| 148 |
* Ammuon = Muon mass (GeV) = Ammumu * Amugev * |
| 149 |
* Fscto2 = (Fine structure constant)^2 * |
| 150 |
* Fscto3 = (Fine structure constant)^3 * |
| 151 |
* Fscto4 = (Fine structure constant)^4 * |
| 152 |
* Plabrc = Reduced Planck constant times the light velocity * |
| 153 |
* expressed in GeV fm * |
| 154 |
* Rclsel = Classical electron radius (cm) = e^2 / (m_e c^2) * |
| 155 |
* Conversion constants: * |
| 156 |
* GeVMeV = from GeV to MeV * |
| 157 |
* eMVGeV = from MeV to GeV * |
| 158 |
* Raddeg = from radians to degrees * |
| 159 |
* Degrad = from degrees to radians * |
| 160 |
* * |
| 161 |
*----------------------------------------------------------------------* |
| 162 |
* |
| 163 |
PARAMETER ( CLIGHT = 2.99792458 D+10 ) |
| 164 |
PARAMETER ( AVOGAD = 6.0221367 D+23 ) |
| 165 |
PARAMETER ( AMELGR = 9.1093897 D-28 ) |
| 166 |
PARAMETER ( PLCKBR = 1.05457266 D-27 ) |
| 167 |
PARAMETER ( ELCCGS = 4.8032068 D-10 ) |
| 168 |
PARAMETER ( ELCMKS = 1.60217733 D-19 ) |
| 169 |
PARAMETER ( AMUGRM = 1.6605402 D-24 ) |
| 170 |
PARAMETER ( AMMUMU = 0.113428913 D+00 ) |
| 171 |
* PARAMETER ( ALPFSC = 1.D+00 / 137.035989561D+00 ) |
| 172 |
* PARAMETER ( FSCTO2 = ALPFSC * ALPFSC ) |
| 173 |
* PARAMETER ( FSCTO3 = FSCTO2 * ALPFSC ) |
| 174 |
* PARAMETER ( FSCTO4 = FSCTO3 * ALPFSC ) |
| 175 |
* It is important to set the electron mass exactly with the same |
| 176 |
* rounding as in the mass tables, so use the explicit expression |
| 177 |
* PARAMETER ( AMELCT = 1.D-16 * AMELGR * CLIGHT * CLIGHT / ELCMKS ) |
| 178 |
* It is important to set the amu mass exactly with the same |
| 179 |
* rounding as in the mass tables, so use the explicit expression |
| 180 |
* PARAMETER ( AMUGEV = 1.D-16 * AMUGRM * CLIGHT * CLIGHT / ELCMKS ) |
| 181 |
* It is important to set the muon mass exactly with the same |
| 182 |
* rounding as in the mass tables, so use the explicit expression |
| 183 |
* PARAMETER ( AMMUON = AMMUMU * AMUGEV ELCMKS ) |
| 184 |
* PARAMETER ( RCLSEL = ELCCGS * ELCCGS / CLIGHT / CLIGHT / AMELGR ) |
| 185 |
PARAMETER ( ALPFSC = 7.2973530791728595 D-03 ) |
| 186 |
PARAMETER ( FSCTO2 = 5.3251361962113614 D-05 ) |
| 187 |
PARAMETER ( FSCTO3 = 3.8859399018437826 D-07 ) |
| 188 |
PARAMETER ( FSCTO4 = 2.8357075508200407 D-09 ) |
| 189 |
PARAMETER ( PLABRC = 0.197327053 D+00 ) |
| 190 |
PARAMETER ( AMELCT = 0.51099906 D-03 ) |
| 191 |
PARAMETER ( AMUGEV = 0.93149432 D+00 ) |
| 192 |
PARAMETER ( AMMUON = 0.105658389 D+00 ) |
| 193 |
PARAMETER ( RCLSEL = 2.8179409183694872 D-13 ) |
| 194 |
PARAMETER ( GEVMEV = 1.0 D+03 ) |
| 195 |
PARAMETER ( EMVGEV = 1.0 D-03 ) |
| 196 |
PARAMETER ( RADDEG = 180.D+00 / PIPIPI ) |
| 197 |
PARAMETER ( DEGRAD = PIPIPI / 180.D+00 ) |
| 198 |
|
| 199 |
#endif |
| 200 |
#if defined(GPAMELA_SINGLE) |
| 201 |
IMPLICIT REAL (A-H,O-Z) |
| 202 |
PARAMETER ( KALGNM = 1 ) |
| 203 |
PARAMETER ( ANGLGB = 5.0e-16 ) |
| 204 |
PARAMETER ( ANGLSQ = 2.5e-31 ) |
| 205 |
PARAMETER ( AXCSSV = 0.2e+16 ) |
| 206 |
PARAMETER ( ANDRFL = 1.0e-38 ) |
| 207 |
PARAMETER ( AVRFLW = 1.0e+38 ) |
| 208 |
PARAMETER ( AINFNT = 1.0e+30 ) |
| 209 |
PARAMETER ( AZRZRZ = 1.0e-30 ) |
| 210 |
PARAMETER ( EINFNT = +69.07755278982137 e+00 ) |
| 211 |
PARAMETER ( EZRZRZ = -69.07755278982137 e+00 ) |
| 212 |
PARAMETER ( ONEMNS = 0.999999999999999 e+00 ) |
| 213 |
PARAMETER ( ONEPLS = 1.000000000000001 e+00 ) |
| 214 |
PARAMETER ( CSNNRM = 2.0e-15 ) |
| 215 |
PARAMETER ( DMXTRN = 1.0e+08 ) |
| 216 |
* |
| 217 |
PARAMETER ( ZERZER = 0.e+00 ) |
| 218 |
PARAMETER ( ONEONE = 1.e+00 ) |
| 219 |
PARAMETER ( TWOTWO = 2.e+00 ) |
| 220 |
PARAMETER ( THRTHR = 3.e+00 ) |
| 221 |
PARAMETER ( FOUFOU = 4.e+00 ) |
| 222 |
PARAMETER ( FIVFIV = 5.e+00 ) |
| 223 |
PARAMETER ( SIXSIX = 6.e+00 ) |
| 224 |
PARAMETER ( SEVSEV = 7.e+00 ) |
| 225 |
PARAMETER ( EIGEIG = 8.e+00 ) |
| 226 |
PARAMETER ( ANINEN = 9.e+00 ) |
| 227 |
PARAMETER ( TENTEN = 10.e+00 ) |
| 228 |
PARAMETER ( HLFHLF = 0.5e+00 ) |
| 229 |
PARAMETER ( ONETHI = ONEONE / THRTHR ) |
| 230 |
PARAMETER ( TWOTHI = TWOTWO / THRTHR ) |
| 231 |
PARAMETER ( PIPIPI = 3.1415926535897932270 e+00 ) |
| 232 |
PARAMETER ( ENEPER = 2.7182818284590452354 e+00 ) |
| 233 |
PARAMETER ( SQRENT = 1.6487212707001281468 e+00 ) |
| 234 |
* |
| 235 |
PARAMETER ( CLIGHT = 2.99792458 e+10 ) |
| 236 |
PARAMETER ( AVOGAD = 6.0221367 e+23 ) |
| 237 |
PARAMETER ( AMELGR = 9.1093897 e-28 ) |
| 238 |
PARAMETER ( PLCKBR = 1.05457266 e-27 ) |
| 239 |
PARAMETER ( ELCCGS = 4.8032068 e-10 ) |
| 240 |
PARAMETER ( ELCMKS = 1.60217733 e-19 ) |
| 241 |
PARAMETER ( AMUGRM = 1.6605402 e-24 ) |
| 242 |
PARAMETER ( AMMUMU = 0.113428913 e+00 ) |
| 243 |
* PARAMETER ( ALPFSC = 1.e+00 / 137.035989561e+00 ) |
| 244 |
* PARAMETER ( FSCTO2 = ALPFSC * ALPFSC ) |
| 245 |
* PARAMETER ( FSCTO3 = FSCTO2 * ALPFSC ) |
| 246 |
* PARAMETER ( FSCTO4 = FSCTO3 * ALPFSC ) |
| 247 |
* It is important to set the electron mass exactly with the same |
| 248 |
* rounding as in the mass tables, so use the explicit expression |
| 249 |
* PARAMETER ( AMELCT = 1.e-16 * AMELGR * CLIGHT * CLIGHT / ELCMKS ) |
| 250 |
* It is important to set the amu mass exactly with the same |
| 251 |
* rounding as in the mass tables, so use the explicit expression |
| 252 |
* PARAMETER ( AMUGEV = 1.e-16 * AMUGRM * CLIGHT * CLIGHT / ELCMKS ) |
| 253 |
* It is important to set the muon mass exactly with the same |
| 254 |
* rounding as in the mass tables, so use the explicit expression |
| 255 |
* PARAMETER ( AMMUON = AMMUMU * AMUGEV ELCMKS ) |
| 256 |
* PARAMETER ( RCLSEL = ELCCGS * ELCCGS / CLIGHT / CLIGHT / AMELGR ) |
| 257 |
PARAMETER ( ALPFSC = 7.2973530791728595 e-03 ) |
| 258 |
PARAMETER ( FSCTO2 = 5.3251361962113614 e-05 ) |
| 259 |
PARAMETER ( FSCTO3 = 3.8859399018437826 e-07 ) |
| 260 |
PARAMETER ( FSCTO4 = 2.8357075508200407 e-09 ) |
| 261 |
PARAMETER ( PLABRC = 0.197327053 e+00 ) |
| 262 |
PARAMETER ( AMELCT = 0.51099906 e-03 ) |
| 263 |
PARAMETER ( AMUGEV = 0.93149432 e+00 ) |
| 264 |
PARAMETER ( AMMUON = 0.105658389 e+00 ) |
| 265 |
PARAMETER ( RCLSEL = 2.8179409183694872 e-13 ) |
| 266 |
PARAMETER ( GEVMEV = 1.0 e+03 ) |
| 267 |
PARAMETER ( EMVGEV = 1.0 e-03 ) |
| 268 |
PARAMETER ( RADDEG = 180.e+00 / PIPIPI ) |
| 269 |
PARAMETER ( DEGRAD = PIPIPI / 180.e+00 ) |
| 270 |
|
| 271 |
#endif |
| 272 |
|
| 273 |
#endif |