Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // >> 26 // $Id: G4NuclearLevelData.cc 86536 2014-11-13 19:05:21Z vnivanch $ 26 // 27 // 27 // ------------------------------------------- 28 // ------------------------------------------------------------------- 28 // 29 // 29 // GEANT4 source file 30 // GEANT4 source file 30 // 31 // 31 // File name: G4NuclearLevelData 32 // File name: G4NuclearLevelData 32 // 33 // 33 // Author: V.Ivanchenko 34 // Author: V.Ivanchenko 34 // 35 // 35 // Creation date: 10 February 2015 36 // Creation date: 10 February 2015 36 // 37 // 37 // Modifications: 38 // Modifications: 38 // 39 // 39 // ------------------------------------------- 40 // ------------------------------------------------------------------- 40 41 41 #include "G4NuclearLevelData.hh" 42 #include "G4NuclearLevelData.hh" 42 #include "G4LevelReader.hh" 43 #include "G4LevelReader.hh" 43 #include "G4LevelManager.hh" 44 #include "G4LevelManager.hh" 44 #include "G4Element.hh" 45 #include "G4Element.hh" 45 #include "G4ElementTable.hh" 46 #include "G4ElementTable.hh" 46 #include "G4DeexPrecoParameters.hh" << 47 #include "G4PairingCorrection.hh" << 48 #include "G4ShellCorrection.hh" << 49 #include "G4SystemOfUnits.hh" << 50 #include "G4AutoLock.hh" << 51 #include "G4Pow.hh" << 52 #include <iomanip> << 53 47 54 G4NuclearLevelData* G4NuclearLevelData::theIns << 48 G4NuclearLevelData* G4NuclearLevelData::theInstance = 0; 55 49 56 const G4int G4NuclearLevelData::AMIN[] = {1, << 50 const G4int G4NuclearLevelData::AMIN[] = {0, 57 1,3,4,5,7,8,10,12,14,16, // << 51 1,3,6,7,8,10,12,14,17,18, // Z= 1-10 58 20,19,21,22,25,27,29,31,35,35, // << 52 21,22,23,26,27,28,32,32,36,36, // Z= 11-20 59 39,39,42,42,44,45,50,48,53,54, // << 53 41,42,45,45,48,49,53,54,57,59, // Z= 21-30 60 60,60,63,64,69,69,73,73,76,78, // << 54 61,62,66,68,70,72,74,76,78,80, // Z= 31-40 61 81,83,85,88,90,91,93,96,98,100, // << 55 82,84,86,88,92,93,95,98,101,101, // Z= 41-50 62 104,105,108,109,112,114,117,121,121,125, // << 56 105,105,109,110,114,118,121,122,125,128, // Z= 51-60 63 128,129,130,134,135,139,140,143,144,149, // << 57 131,130,137,138,140,140,141,144,145,151, // Z= 61-70 64 150,153,155,158,159,161,164,166,170,171, // << 58 151,154,159,160,161,162,168,168,172,172, // Z= 71-80 65 176,178,184,186,191,193,199,201,206,208, // << 59 181,180,187,189,196,196,206,206,212,214, // Z= 81-90 66 212,217,225,228,230,233,234,237,241,241, // << 60 229,230,233,236,241,240,240,245,243,249, // Z= 91-100 67 245,248,252,253,255,258,260,263,266,269, // << 61 251,251}; 68 272,277,282,0,289,0,293}; // << 62 const G4int G4NuclearLevelData::AMAX[] = {0, 69 const G4int G4NuclearLevelData::AMAX[] = {1, << 63 3,8,9,12,13,16,21,22,27,32, // Z= 1-10 70 6,10,11,14,17,22,24,26,30,30, // << 64 32,36,35,42,43,46,45,48,50,53, // Z= 11-20 71 37,40,42,44,46,48,51,53,56,58, // << 65 56,58,60,64,64,68,68,76,73,78, // Z= 21-30 72 61,63,66,68,71,74,76,79,82,85, // << 66 81,84,84,88,88,96,96,102,102,108, // Z= 31-40 73 87,90,92,95,98,101,103,107,109,112, // << 67 105,110,111,114,115,121,120,130,130,134, // Z= 41-50 74 114,117,120,124,126,128,129,133,135,138, // << 68 135,139,139,144,145,148,149,152,151,156, // Z= 51-60 75 140,143,145,148,151,152,153,155,155,161, // << 69 155,160,159,164,166,170,169,172,175,178, // Z= 61-70 76 163,165,167,169,171,173,175,177,179,181, // << 70 180,184,190,190,190,198,198,204,201,208, // Z= 71-80, 77 184,189,192,194,198,202,204,205,210,216, // << 71 210,212,215,218,217,222,227,232,232,234, // Z= 81-90, 78 217,220,224,227,229,229,233,234,235,238, // << 72 236,240,242,246,246,249,251,253,254,256, // Z= 91-100 79 239,242,244,247,248,252,253,256,257,259, // << 73 251,254}; 80 260,262,266,265,270,269,274,277,278,277, // << 74 81 282,281,286,0,290,0,294}; // << 75 #ifdef G4MULTITHREADED 82 const G4int G4NuclearLevelData::LEVELIDX[] = { << 76 G4Mutex G4NuclearLevelData::nuclearLevelDataMutex = G4MUTEX_INITIALIZER; 83 0, 6, 14, 22, 32, 43 << 77 #endif 84 120, 138, 160, 182, 205, 227 << 85 341, 364, 389, 414, 441, 469 << 86 620, 648, 679, 709, 741, 771 << 87 939, 973, 1008, 1044, 1081, 1118 << 88 1308, 1345, 1384, 1422, 1462, 1502 << 89 1685, 1721, 1758, 1796, 1832, 1869 << 90 2044, 2079, 2116, 2154, 2191, 2231 << 91 2441, 2483, 2526, 2567, 2609, 2648 << 92 2815, 2843, 2869, 2889, 2909, 2928 << 93 3024, 3040, 3055, 3070, 3083, 3099 << 94 3163, 3174, 3179, 3184, 3184, 3186 << 95 << 96 // obtained from PhotonEvaporation5.2 << 97 static const G4float LEVELMAX[3188] = {0.0f, << 98 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 99 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 100 0.0f, 0.0f, 0.0f,0.42908f, 27.494f, << 101 0.0f, 0.0f, 2.32f, 17.076f, 8.895f, << 102 0.0f, 0.0f, 0.0f, 0.0f, 3.3537f, << 103 4.142f, 0.0f, 0.0f, 0.0f, 0.0f, << 104 15.3f, 11.05f, 13.39f,0.39727f, 5.772f, << 105 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 106 6.555f, 3.073f, 6.936f, 0.0f, 0.0f, << 107 11.193f, 7.584f, 10.411f, 6.6475f, 4.584f, << 108 1.281f, 0.0f, 0.0f, 0.0f, 0.0f, << 109 11.533f, 4.4361f, 8.393f, 4.07f, 3.6913f, << 110 4.4679f, 9.813f, 12.592f, 6.578f, 4.289f, << 111 1.162f, 0.569f, 1.117f, 0.0f, 0.0f, << 112 6.2542f, 9.596f, 15.15f, 13.332f, 12.479f, << 113 5.203f, 1.2424f, 2.12f, 0.67f, 0.66f, << 114 0.0f, 0.55f, 0.4258f, 7.97f, 6.695f, << 115 3.202f, 4.7304f, 0.657f, 1.02f, 0.0f, << 116 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 117 6.5874f, 6.705f, 4.931f, 6.0233f, 2.1682f, << 118 0.0f, 0.77f, 0.0f, 0.0f, 0.0f, << 119 13.879f, 7.9356f, 7.9666f, 7.9201f, 6.2205f, << 120 1.56f, 0.0f, 0.184f, 0.0f, 0.0f, << 121 10.146f, 12.048f, 10.779f, 16.649f, 6.9861f, << 122 0.904f, 0.89f, 0.94f, 3.257f, 0.0f, << 123 0.0f, 5.0463f, 5.5484f, 8.3055f, 12.572f, << 124 2.451f, 3.0304f, 1.829f, 0.475f, 1.616f, << 125 0.0f, 0.0f, 1.867f, 3.819f, 5.542f, << 126 10.857f, 4.271f, 4.6339f, 4.2469f, 5.3515f, << 127 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 128 9.7407f, 5.978f, 3.7142f, 2.5743f, 4.5691f, << 129 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 130 7.75f, 22.06f, 7.146f, 10.45f, 6.2237f, << 131 5.6802f, 6.8692f, 3.53f, 2.5631f, 2.2f, << 132 0.0f, 0.0f, 6.148f, 6.2534f, 7.3549f, << 133 15.662f, 1.8478f, 6.184f, 4.2657f, 3.382f, << 134 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 135 13.169f, 8.0051f, 9.977f, 8.8816f, 10.939f, << 136 4.2098f, 0.0f, 2.881f, 0.0f, 0.0f, << 137 0.0f, 7.1595f, 13.631f, 15.258f, 13.282f, << 138 2.2979f, 2.1528f, 0.0f, 2.4756f, 0.114f, << 139 0.081f, 0.0f, 0.0f, 0.0f, 0.0f, << 140 10.7f, 17.958f, 9.2616f, 12.795f, 11.291f, << 141 0.503f, 4.6814f, 1.027f, 1.175f, 0.0f, << 142 0.0f, 0.0f, 0.0f, 0.0f, 6.2931f, << 143 4.9981f, 10.559f, 7.4078f, 4.7103f, 9.8311f, << 144 0.188f, 0.0f, 0.0f, 0.0f, 0.0f, << 145 0.0f, 0.0f, 0.153f, 6.9944f, 12.65f, << 146 8.323f, 12.813f, 4.9852f, 17.956f, 0.861f, << 147 0.387f, 1.389f, 0.0f, 0.0f, 0.0f, << 148 0.0f, 4.1151f, 10.507f, 14.882f, 18.6f, << 149 2.3097f, 4.1671f, 1.561f, 3.2712f, 0.642f, << 150 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 151 1.4534f, 6.4574f, 4.4831f, 22.459f, 8.3457f, << 152 4.461f, 8.24f, 4.0111f, 6.5798f, 2.155f, << 153 0.0f, 1.763f, 0.0f, 2.42f, 0.0f, << 154 0.0f, 2.398f, 22.747f, 31.964f, 8.1327f, << 155 5.0772f, 3.4636f, 0.9563f, 3.828f, 1.9801f, << 156 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 157 0.0f, 3.378f, 3.3862f, 33.899f, 32.617f, << 158 4.684f, 18.016f, 2.378f, 6.1158f, 2.377f, << 159 4.6053f, 3.106f, 3.304f, 1.492f, 0.0f, << 160 2.903f, 6.8423f, 14.465f, 5.6291f, 15.981f, << 161 4.1652f,0.74133f, 2.9895f, 1.0857f, 4.1479f, << 162 1.6216f, 0.0f, 0.0f, 0.0f, 0.0f, << 163 0.0f, 9.2999f, 8.1524f, 18.08f, 4.848f, << 164 2.3614f, 8.3611f, 6.5056f, 6.0652f, 6.0714f, << 165 1.9415f, 1.6704f, 2.3482f, 0.527f, 0.0f, << 166 0.0f, 9.7929f, 7.7913f, 8.4997f, 18.181f, << 167 9.399f, 1.0645f, 4.4563f, 2.024f, 1.9648f, << 168 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 169 0.929f, 0.0f, 21.201f, 13.363f, 20.245f, << 170 5.4325f, 7.4197f, 5.7838f, 3.6768f, 7.8185f, << 171 3.302f, 0.0f, 0.0f, 0.0f, 0.0f, << 172 0.0f, 21.412f, 14.959f, 18.968f, 25.968f, << 173 8.8115f, 4.4501f, 3.7987f, 2.2433f, 5.635f, << 174 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 175 0.0f, 0.0f, 0.0f, 23.62f, 23.237f, << 176 11.822f, 11.484f, 5.7594f, 6.0117f, 6.3734f, << 177 4.7073f, 5.7301f, 4.4529f, 5.0788f, 3.1999f, << 178 0.0f, 0.0f, 0.0f, 0.0f, 21.612f, << 179 13.176f, 10.027f, 6.0137f, 9.342f, 7.3827f, << 180 3.8813f, 6.2389f, 4.7881f, 6.7256f, 3.9442f, << 181 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 182 8.1749f, 21.818f, 24.46f, 18.674f, 19.803f, << 183 7.9844f, 5.8279f, 5.742f, 7.363f, 6.7074f, << 184 2.3208f, 3.3456f, 1.3629f, 0.126f, 0.0f, << 185 0.0f, 0.787f, 5.702f, 12.46f, 17.67f, << 186 7.0166f, 9.6184f, 11.991f, 4.8351f, 6.8961f, << 187 3.5226f, 1.897f, 3.3895f, 1.7f, 2.6959f, << 188 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 189 11.141f, 20.532f, 10.092f, 11.2f, 9.6011f, << 190 6.5618f, 6.8213f, 7.2959f, 6.5436f, 6.567f, << 191 0.0f, 0.607f, 0.0f, 0.5216f, 0.0f, << 192 1.723f, 9.093f, 15.145f, 20.786f, 18.374f, << 193 10.955f, 6.496f, 8.6952f, 1.6147f, 2.2475f, << 194 3.6071f, 0.5143f, 1.0456f, 0.0f, 0.0f, << 195 0.0f, 0.0f, 0.0f, 4.2764f, 5.5996f, << 196 10.749f, 11.215f, 9.67f, 11.588f, 10.509f, << 197 5.031f, 6.2005f, 6.308f, 7.2832f, 6.0757f, << 198 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 199 4.9129f, 20.291f, 11.246f, 20.862f, 7.8331f, << 200 3.1294f, 4.1779f, 4.3581f, 4.231f,0.35986f, << 201 2.359f, 4.2009f, 3.6771f, 3.9519f, 0.35f, << 202 0.0f, 0.0f, 0.0f, 3.4808f, 6.2392f, << 203 12.161f, 11.601f, 17.292f, 17.237f, 19.254f, << 204 3.6412f, 4.4457f, 3.7652f, 5.1544f, 2.7331f, << 205 0.0617f, 2.1664f, 0.0f, 1.4156f, 0.0f, << 206 0.0f, 7.0196f, 9.744f, 6.9245f, 10.426f, << 207 14.519f, 17.234f, 15.978f, 7.9989f, 4.4759f, << 208 1.7662f, 4.2482f, 2.7694f, 4.006f, 2.0203f, << 209 0.1572f, 0.0f, 0.271f, 0.0f, 0.0f, << 210 7.7002f, 10.418f, 7.04f, 7.523f, 10.863f, << 211 12.707f, 16.909f, 5.895f, 10.676f, 6.8279f, << 212 5.2557f, 4.0712f, 7.8188f, 3.886f, 3.3024f, << 213 1.3f, 0.0f, 2.1097f, 0.0f, 2.151f, << 214 4.4757f, 7.7702f, 8.699f, 10.706f, 6.1075f, << 215 4.3106f, 5.4145f, 2.6661f, 2.3527f, 1.8189f,0 << 216 0.72042f, 0.326f, 0.8058f, 0.0f, 0.0f, << 217 0.0f, 0.0f, 0.0f, 0.0f, 2.4275f, << 218 18.243f, 10.851f, 15.863f, 11.852f, 20.979f, << 219 4.6052f, 3.8328f, 4.9689f, 4.5389f, 4.367f, << 220 3.6636f, 3.6065f, 3.151f, 3.2399f, 1.429f, << 221 0.0f, 0.0f, 2.721f, 6.0742f, 9.0586f, << 222 8.7931f, 6.3857f, 12.745f, 13.503f, 8.328f, << 223 0.2f, 4.0259f, 0.0f, 3.89f, 0.0f, << 224 1.1729f, 4.5789f, 5.3908f, 0.0f, 0.0f, << 225 1.969f, 1.7846f, 9.998f, 10.288f, 19.932f, << 226 12.965f, 18.22f, 17.871f, 9.0696f, 9.3219f, << 227 4.2838f, 3.306f, 8.4335f, 2.6235f, 4.9902f, << 228 7.2441f, 2.0046f, 2.5089f, 0.0f, 1.295f, << 229 14.217f, 7.2145f, 25.458f, 27.548f, 23.013f, << 230 8.1846f, 2.9184f, 6.1139f, 2.8847f, 3.9728f,0 << 231 5.3543f, 0.833f, 3.2807f, 2.9831f, 3.5687f, << 232 0.0f, 0.0f, 0.0f, 0.0f, 0.15f, << 233 9.9578f, 28.646f, 8.7643f, 32.926f, 14.783f, << 234 8.5832f, 6.9141f, 8.0304f, 5.7514f, 3.5642f, << 235 5.1722f, 4.8903f, 6.1635f, 7.7224f, 6.6692f, << 236 0.0f, 0.0f, 0.0f, 0.0f, 4.6208f, << 237 19.449f, 11.403f, 21.128f, 2.8059f, 11.823f, << 238 3.8679f, 1.1022f, 3.3503f, 4.1498f, 3.408f, << 239 5.8492f, 4.0745f, 3.8528f, 0.0f, 3.3323f, << 240 0.0f, 0.0f, 1.8897f, 0.0f, 4.4691f, << 241 15.399f, 20.542f, 12.15f, 13.651f, 13.473f, << 242 5.5734f, 3.8291f, 6.9713f, 3.1859f, 4.1884f, << 243 5.814f, 5.0965f, 5.5036f, 3.3657f, 4.5112f, << 244 0.0f, 2.1434f, 8.29f, 6.1544f, 0.0f, << 245 12.184f, 7.873f, 11.233f, 6.127f, 11.31f, << 246 5.7351f, 5.6965f, 2.8342f, 2.2537f, 1.6329f, << 247 4.3457f, 4.0013f, 3.1181f, 1.426f, 1.5108f, << 248 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 249 13.551f, 25.371f, 11.179f, 16.895f, 13.477f, << 250 8.052f, 5.2309f, 5.8502f, 4.1374f, 4.7644f, << 251 3.9443f, 5.0276f, 4.623f, 4.0718f, 2.3652f, << 252 0.0f, 0.0f, 0.0f, 0.0f, 7.718f, << 253 21.268f, 9.255f, 16.478f, 9.7134f, 17.252f, << 254 5.9853f, 1.7885f, 8.5821f, 3.0101f, 2.7443f, << 255 3.677f, 2.226f, 0.8939f, 0.0f, 0.0f, << 256 11.735f, 15.066f, 16.603f, 9.8191f, 17.839f, << 257 17.039f, 8.0346f, 8.6258f, 7.6612f, 8.8731f, << 258 3.9736f, 4.5905f, 4.69f, 3.47f, 5.3112f, << 259 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 260 7.858f, 12.411f, 12.757f, 15.734f, 16.356f, << 261 4.8626f, 4.718f, 8.8805f, 1.1757f, 1.3974f,0 << 262 3.1859f, 0.897f, 2.5919f, 3.0022f, 0.0f, << 263 2.6538f, 15.765f, 13.081f, 16.107f, 21.847f, << 264 21.439f, 6.508f, 26.69f, 9.3653f, 12.159f, << 265 3.8609f, 1.1665f, 3.2796f, 3.2208f, 4.001f, << 266 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 267 7.4389f, 6.8243f, 12.955f, 6.2838f, 6.8641f, << 268 8.5958f, 7.2168f, 6.8764f, 7.9774f, 0.8006f, << 269 1.69f, 2.7706f, 0.6187f, 0.0f, 0.0f, << 270 0.0f, 0.122f, 0.0f, 4.245f, 7.0015f, << 271 11.115f, 8.1008f, 11.238f, 23.37f, 12.248f, << 272 5.802f, 9.7369f, 4.574f, 4.7496f, 3.4675f, << 273 3.142f, 2.2584f, 0.0f, 0.0f, 0.0f, << 274 0.0f, 0.0f, 0.0f, 0.0f, 4.645f, << 275 26.393f, 18.711f, 11.234f, 3.4709f, 21.43f, << 276 4.9286f, 0.952f, 2.1987f,0.51329f, 1.4631f, << 277 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 278 10.498f, 6.4229f, 13.32f, 14.58f, 14.532f, << 279 35.996f, 23.397f, 24.919f, 18.722f, 7.0352f, << 280 1.5209f, 3.55f, 1.49f, 2.8571f, 0.0f, << 281 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 282 5.3799f, 14.119f, 2.1568f, 14.344f, 14.091f, << 283 7.45f, 17.07f, 15.907f, 6.5819f, 0.3884f, << 284 0.0f, 0.0f, 1.0155f, 0.0f, 0.0f, << 285 0.0f, 3.2412f, 8.4975f, 4.6021f, 2.7442f, << 286 21.825f, 34.66f, 21.565f, 22.435f, 18.45f, << 287 5.799f, 7.276f, 5.0034f, 4.2123f, 3.9791f, << 288 0.0f, 0.0f, 0.0f, 0.0f, 4.0846f, << 289 8.6613f, 3.7894f, 5.0987f, 10.753f, 9.9587f, << 290 15.876f, 13.422f, 5.331f, 5.77f, 5.949f, << 291 1.919f,0.63041f, 1.5782f, 0.0f, 0.0f, << 292 0.33f, 0.0f, 0.0f, 5.008f, 9.5907f, << 293 16.03f, 17.086f, 16.583f, 19.505f, 24.115f, << 294 11.549f, 1.6218f, 3.498f, 3.7561f, 3.921f, << 295 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 296 0.6713f, 6.9085f, 2.555f, 9.1688f, 6.1412f, << 297 8.635f, 11.582f, 15.865f, 14.882f, 5.8891f, << 298 3.8641f, 1.4006f,0.79742f, 1.2129f, 0.7729f, << 299 0.0f, 0.0f, 2.448f, 2.7445f, 2.5782f, << 300 11.971f, 15.403f, 15.709f, 12.392f, 6.081f, << 301 10.961f, 5.0848f, 4.8797f, 3.863f, 2.018f, << 302 0.0f, 0.0f, 0.0f, 0.0f, 3.9984f, << 303 8.5435f, 0.0f, 6.4758f, 5.1397f, 15.943f, << 304 16.821f, 6.293f, 6.9628f, 8.3751f, 10.907f, << 305 2.4978f, 0.3908f, 1.5862f, 0.9816f, 0.0f, << 306 0.0f, 5.0193f, 6.4994f, 9.1066f, 7.0098f, << 307 9.9276f, 16.006f, 11.941f, 19.176f, 15.295f, << 308 26.178f, 4.8635f, 5.0647f, 5.3886f, 4.2047f, << 309 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 310 0.0f, 6.764f, 0.0f, 7.2134f, 3.3507f, << 311 4.9183f, 9.817f, 4.7857f, 4.7272f, 7.5245f, << 312 4.1868f, 6.4177f, 6.0629f, 1.7843f, 0.6172f, << 313 0.175f, 0.0f, 0.0f, 0.0f, 0.0f, << 314 7.4704f, 10.076f, 9.662f, 11.128f, 7.224f, << 315 4.0387f, 6.9217f, 7.2047f, 13.394f, 6.7925f, << 316 3.2769f, 6.417f, 3.3438f, 1.5382f, 0.0f, << 317 0.0f, 0.0f, 4.4008f, 0.0f, 0.0f, << 318 4.7279f, 0.3701f, 7.3785f, 0.9063f, 7.566f, << 319 5.408f, 4.8181f, 7.5907f, 5.858f, 2.3926f, << 320 0.4824f, 0.3197f, 0.0f, 0.267f, 0.0f, << 321 0.0f, 2.1895f, 0.0f, 2.8393f, 2.6094f, << 322 6.2602f, 8.6901f, 7.541f, 10.545f, 7.0075f, << 323 12.741f, 13.482f, 4.1802f, 10.671f, 7.3585f, << 324 2.64f, 4.1138f, 1.4595f, 2.541f, 1.4647f, << 325 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 326 0.1684f, 6.254f, 0.0f, 6.076f, 7.14f, << 327 3.8694f, 6.987f, 3.1382f, 5.0544f, 4.7856f, << 328 6.1981f, 2.404f,0.54259f,0.94375f,0.52237f, << 329 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 330 4.085f, 3.449f, 4.231f, 6.8786f, 4.6838f, << 331 5.2578f, 7.7332f, 4.9136f, 7.4078f, 5.5103f, << 332 3.1292f, 4.5298f, 2.5926f, 3.4243f,0.74782f, << 333 0.0f, 3.153f, 0.0f, 0.0f, 0.0f, << 334 6.1583f, 0.0f, 7.1722f, 0.0f, 5.7177f, << 335 7.22f, 5.3252f, 9.5804f, 5.3789f, 10.935f, << 336 1.242f, 1.5604f, 1.7705f,0.46871f, 1.76f, << 337 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 338 1.7955f, 5.5345f, 5.2669f, 5.8034f, 2.9527f, << 339 4.8702f, 7.9412f, 6.8197f, 10.031f, 8.7932f, << 340 4.0612f, 5.2842f, 3.0684f, 6.1621f, 1.1878f, << 341 0.0f, 1.2969f, 0.0f, 1.366f, 0.0f, << 342 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 343 0.9716f, 5.608f, 0.8768f, 6.3331f, 1.8545f, << 344 3.6298f, 3.9657f, 4.0664f, 2.6432f, 2.5481f, << 345 2.6431f, 4.418f, 1.728f, 0.8683f, 0.2536f, << 346 0.0f, 0.0f, 0.0f, 0.0f, 2.138f, << 347 3.3139f, 1.723f, 4.1665f, 3.1024f, 5.3303f, << 348 13.516f, 10.406f, 12.699f, 10.66f, 8.6305f, << 349 8.7056f, 7.306f, 13.675f, 4.142f, 4.133f, << 350 1.459f, 0.0f, 0.0f, 0.0f, 0.0f, << 351 2.973f, 0.273f, 1.7366f, 0.0f, 3.401f, << 352 4.2969f, 3.5777f, 5.2835f, 7.2753f, 5.8247f, << 353 7.632f, 5.996f, 6.191f, 0.4945f, 0.7589f,0 << 354 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 355 3.0402f, 1.671f, 2.2946f, 1.1297f, 3.3265f, << 356 5.2269f, 3.7108f, 5.5289f, 4.3583f, 5.9111f, << 357 10.084f, 4.911f, 2.922f, 1.3282f, 3.2624f, << 358 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 359 0.0f, 0.0f, 1.636f, 0.1579f, 0.324f, << 360 2.7011f, 2.3462f, 4.546f, 2.9023f, 2.1495f, << 361 2.926f, 0.7284f, 0.517f, 0.4793f, 0.8919f, << 362 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 363 0.0f, 0.0f, 2.3838f, 0.0f, 2.7762f, << 364 4.1298f, 3.013f, 5.9306f, 7.3077f, 12.026f, << 365 4.2997f, 0.6189f, 5.1678f, 0.7328f, 3.9615f, << 366 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 367 0.0f, 0.531f, 1.8852f, 0.827f, 0.0f, << 368 3.4623f, 1.973f, 3.0023f, 3.0451f, 0.778f, << 369 1.7498f, 0.0f,0.95506f, 0.0f, 0.0f, << 370 0.0f, 0.0f, 0.0f, 0.0f, 2.0101f, << 371 3.9294f, 1.77f, 7.87f, 6.2832f, 6.2661f, << 372 3.2877f, 1.0289f, 2.3687f, 0.7241f, 2.382f, << 373 1.05f, 0.0f, 0.0f, 0.0f, 0.0f, << 374 1.884f, 0.0918f, 2.438f, 0.322f, 2.013f, << 375 0.1675f, 0.452f,0.25704f, 0.0f, 0.8747f,0 << 376 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 377 1.4213f, 3.6814f, 0.6738f, 2.104f, 2.322f, << 378 2.4944f, 3.0971f, 2.1663f, 3.2834f,0.77929f, << 379 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 380 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 381 0.0f, 0.8408f, 0.0f, 2.14f, 0.0f, << 382 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 383 0.0f, 1.847f, 0.0f, 0.0f, 0.0f, << 384 4.0407f, 5.077f, 4.835f, 5.513f, 3.107f, << 385 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 386 4.6146f,0.64676f, 1.1971f, 0.2998f, 0.0f, << 387 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 388 6.0963f, 1.3577f, 4.172f, 5.0342f, 6.123f, << 389 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 390 2.2f, 0.5324f, 0.8789f, 1.1856f,0.29937f, << 391 0.0f, 0.0f, 0.0f, 0.0f, 0.038f, << 392 4.0332f, 0.5817f, 5.6807f, 4.7135f, 0.0f, << 393 0.0f, 0.0f, 0.0f, 0.24f, 0.0f, << 394 0.4894f, 0.59f, 1.2275f, 0.471f, 0.9784f, << 395 0.0f, 0.0f, 0.0f, 0.315f, 0.0f, << 396 1.6952f, 1.25f, 0.9698f, 0.417f, 0.0f, << 397 0.0f, 0.2532f, 0.0f, 0.0f, 0.0f, << 398 0.4692f, 0.0f, 0.0f, 0.0f, 0.0f, << 399 0.0f, 2.372f, 0.669f, 0.0f,0.55843f, << 400 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 401 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 402 0.0f, 0.0f, 1.6997f, 2.8792f, 3.465f, << 403 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 404 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 405 0.0f, 0.656f, 2.868f, 1.157f, 0.0f, << 406 0.0f, 0.0f, 0.0f, 0.0f, 0.6f, << 407 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 408 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 409 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 410 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 411 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 412 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 413 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 414 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 415 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 416 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, << 417 << 418 namespace << 419 { << 420 G4Mutex nuclearLevelDataMutex = G4MUTEX_INIT << 421 } << 422 78 423 G4NuclearLevelData* G4NuclearLevelData::GetIns 79 G4NuclearLevelData* G4NuclearLevelData::GetInstance() 424 { 80 { 425 if (nullptr == theInstance) { << 81 if (!theInstance) { 426 G4AutoLock l(&nuclearLevelDataMutex); << 82 static G4NuclearLevelData theData; 427 if (nullptr == theInstance) { << 83 theInstance = &theData; 428 static G4NuclearLevelData theData; << 429 theInstance = &theData; << 430 } << 431 l.unlock(); << 432 } 84 } 433 return theInstance; 85 return theInstance; 434 } 86 } 435 87 436 G4NuclearLevelData::G4NuclearLevelData() 88 G4NuclearLevelData::G4NuclearLevelData() 437 { 89 { 438 fDeexPrecoParameters = new G4DeexPrecoParame << 90 fLevelReader = new G4LevelReader(); 439 fLevelReader = new G4LevelReader(this); << 440 for(G4int Z=0; Z<ZMAX; ++Z) { 91 for(G4int Z=0; Z<ZMAX; ++Z) { 441 (fLevelManagers[Z]).resize(AMAX[Z]-AMIN[Z] 92 (fLevelManagers[Z]).resize(AMAX[Z]-AMIN[Z]+1,nullptr); 442 (fLevelManagerFlags[Z]).resize(AMAX[Z]-AMI 93 (fLevelManagerFlags[Z]).resize(AMAX[Z]-AMIN[Z]+1,false); 443 } 94 } 444 fShellCorrection = new G4ShellCorrection(); << 445 fPairingCorrection = new G4PairingCorrection << 446 fG4calc = G4Pow::GetInstance(); << 447 } 95 } 448 96 449 G4NuclearLevelData::~G4NuclearLevelData() 97 G4NuclearLevelData::~G4NuclearLevelData() 450 { 98 { 451 delete fLevelReader; 99 delete fLevelReader; 452 delete fDeexPrecoParameters; << 453 delete fShellCorrection; << 454 delete fPairingCorrection; << 455 for(G4int Z=1; Z<ZMAX; ++Z) { 100 for(G4int Z=1; Z<ZMAX; ++Z) { 456 size_t nn = (fLevelManagers[Z]).size(); 101 size_t nn = (fLevelManagers[Z]).size(); 457 for(size_t j=0; j<nn; ++j) { 102 for(size_t j=0; j<nn; ++j) { >> 103 //G4cout << " G4NuclearLevelData delete Z= " << Z >> 104 // << " A= " << AMIN[Z]+j << G4endl; 458 delete (fLevelManagers[Z])[j]; 105 delete (fLevelManagers[Z])[j]; 459 } 106 } 460 } 107 } 461 } 108 } 462 109 463 const G4LevelManager* 110 const G4LevelManager* 464 G4NuclearLevelData::GetLevelManager(G4int Z, G 111 G4NuclearLevelData::GetLevelManager(G4int Z, G4int A) 465 { 112 { 466 if(Z < 1 || Z >= ZMAX || A < AMIN[Z] || A > << 113 const G4LevelManager* man = nullptr; 467 const G4int idx = A - AMIN[Z]; << 114 //G4cout << "G4NuclearLevelData: Z= " << Z << " A= " << A << G4endl; 468 if( !(fLevelManagerFlags[Z])[idx] ) { << 115 if(0 < Z && Z < ZMAX && A >= AMIN[Z] && A <= AMAX[Z]) { 469 G4AutoLock l(&nuclearLevelDataMutex); << 116 if(!(fLevelManagerFlags[Z])[A - AMIN[Z]]) { 470 if( !(fLevelManagerFlags[Z])[idx] ) { << 117 InitialiseForIsotope(Z, A); 471 (fLevelManagers[Z])[idx] = fLevelReader- << 472 (fLevelManagerFlags[Z])[idx] = true; << 473 } 118 } 474 l.unlock(); << 119 man = (fLevelManagers[Z])[A - AMIN[Z]]; 475 } 120 } 476 return (fLevelManagers[Z])[idx]; << 121 //G4cout << man << G4endl; >> 122 return man; 477 } 123 } 478 124 479 G4bool << 125 G4bool 480 G4NuclearLevelData::AddPrivateData(G4int Z, G4 << 126 G4NuclearLevelData::AddPrivateData(G4int Z, G4int A, const G4String& filename) 481 { 127 { 482 G4bool res = false; 128 G4bool res = false; 483 if(Z > 0 && Z < ZMAX && A >= AMIN[Z] && A <= << 129 if(A >= AMIN[Z] && A <= AMAX[Z]) { 484 G4AutoLock l(&nuclearLevelDataMutex); << 130 const G4LevelManager* newman = 485 const G4LevelManager* newman = fLevelReade << 131 fLevelReader->MakeLevelManager(Z, A, filename); 486 // if file is corrupted G4LevelReader shou << 132 if(newman) { 487 if(newman != nullptr) { << 133 delete (fLevelManagers[Z])[A - AMIN[Z]]; >> 134 (fLevelManagers[Z])[A - AMIN[Z]] = newman; >> 135 (fLevelManagerFlags[Z])[A - AMIN[Z]] = true; 488 res = true; 136 res = true; 489 if(0 < fDeexPrecoParameters->GetVerbose( << 490 G4cout << "G4NuclearLevelData::AddPrivateDat << 491 << " A= " << A << " from <" << fname << 492 << "> is done" << G4endl; << 493 } << 494 const G4int idx = A - AMIN[Z]; << 495 delete (fLevelManagers[Z])[idx]; << 496 (fLevelManagers[Z])[idx] = newman; << 497 (fLevelManagerFlags[Z])[idx] = true; << 498 } 137 } 499 l.unlock(); << 500 } else { << 501 G4ExceptionDescription ed; << 502 ed << "private nuclear level data for Z= " << 503 << " outside allowed limits "; << 504 G4Exception("G4NuclearLevelData::AddPrivat << 505 ed,"Stop execution"); << 506 } 138 } 507 return res; 139 return res; 508 } 140 } 509 141 510 G4int G4NuclearLevelData::GetMinA(G4int Z) con << 142 void G4NuclearLevelData::InitialiseForIsotope(G4int Z, G4int A) 511 { << 512 return (Z >= 0 && Z < ZMAX) ? AMIN[Z] : 0; << 513 } << 514 << 515 G4int G4NuclearLevelData::GetMaxA(G4int Z) con << 516 { << 517 return (Z >= 0 && Z < ZMAX) ? AMAX[Z] : 0; << 518 } << 519 << 520 void G4NuclearLevelData::UploadNuclearLevelDat << 521 { << 522 if(fInitialized) return; << 523 G4AutoLock l(&nuclearLevelDataMutex); << 524 if(!fInitialized) { << 525 fInitialized = true; << 526 G4int mZ = Zlim + 1; << 527 if(mZ > ZMAX) { mZ = ZMAX; } << 528 for(G4int Z=1; Z<mZ; ++Z) { << 529 for(G4int A=AMIN[Z]; A<=AMAX[Z]; ++A) { << 530 G4int idx = A - AMIN[Z]; << 531 if( !(fLevelManagerFlags[Z])[idx] ) { << 532 (fLevelManagers[Z])[idx] = fLevelReader->C << 533 (fLevelManagerFlags[Z])[idx] = true; << 534 } << 535 } << 536 } << 537 } << 538 l.unlock(); << 539 } << 540 << 541 G4double G4NuclearLevelData::GetMaxLevelEnergy << 542 { << 543 return (0 < Z && Z < ZMAX && A >= AMIN[Z] && << 544 (G4double)(LEVELMAX[LEVELIDX[Z] + A - AMIN << 545 } << 546 << 547 G4float G4NuclearLevelData::MaxLevelEnergy(G4i << 548 { << 549 return (0 < Z && Z < ZMAX && A >= AMIN[Z] && << 550 (LEVELMAX[LEVELIDX[Z] + A - AMIN[Z]]) : 0. << 551 } << 552 << 553 G4double G4NuclearLevelData::GetLevelEnergy(G4 << 554 { << 555 G4double e = energy; << 556 if(e <= GetMaxLevelEnergy(Z, A)) { << 557 const G4LevelManager* man = GetLevelManage << 558 if(man != nullptr) { << 559 e = (G4double)man->NearestLevelEnergy(e, << 560 } << 561 } << 562 return e; << 563 } << 564 << 565 G4double << 566 G4NuclearLevelData::GetLowEdgeLevelEnergy(G4in << 567 { 143 { 568 G4double e = GetMaxLevelEnergy(Z, A); << 144 #ifdef G4MULTITHREADED 569 if(energy < e) { << 145 G4MUTEXLOCK(&G4NuclearLevelData::nuclearLevelDataMutex); 570 const G4LevelManager* man = GetLevelManage << 146 #endif 571 if(man != nullptr) { << 147 if(!(fLevelManagerFlags[Z])[A - AMIN[Z]]) { 572 e = (G4double)man->NearestLowEdgeLevelEn << 148 (fLevelManagers[Z])[A - AMIN[Z]] = 573 } << 149 fLevelReader->CreateLevelManager(Z, A); 574 } << 150 (fLevelManagerFlags[Z])[A - AMIN[Z]] = true; 575 return e; << 151 } 576 } << 152 #ifdef G4MULTITHREADED 577 << 153 G4MUTEXUNLOCK(&G4NuclearLevelData::nuclearLevelDataMutex); 578 G4double << 154 #endif 579 G4NuclearLevelData::FindLevel(G4int Z, G4int A << 580 G4double Mass, G << 581 { << 582 G4double T = ekin; << 583 G4double E2 = (Mass - partMass)*(Mass - part << 584 G4double Eex = std::sqrt(E2 - 2.0*Mass*T) - << 585 if(Eex <= GetMaxLevelEnergy(Z, A)) { << 586 if(Eex <= 0.0) { << 587 Eex = 0.0; << 588 T = (E2 - resMass*resMass)*0.5/Mass; << 589 } else { << 590 const G4LevelManager* man = GetLevelMana << 591 if(man != nullptr) { << 592 size_t idx = man->NearestLevelIndex(Ee << 593 for(;;) { << 594 Eex = (G4double)man->LevelEnergy(idx << 595 T = (E2 - (resMass+Eex)*(resMass+Eex << 596 if(T >= 0.0 || 0 == idx) { break; } << 597 --idx; << 598 } << 599 } << 600 } << 601 T = std::max(T, 0.0); << 602 } << 603 return T; << 604 } << 605 << 606 G4DeexPrecoParameters* G4NuclearLevelData::Get << 607 { << 608 return fDeexPrecoParameters; << 609 } << 610 << 611 G4PairingCorrection* G4NuclearLevelData::GetPa << 612 { << 613 return fPairingCorrection; << 614 } << 615 << 616 G4ShellCorrection* G4NuclearLevelData::GetShel << 617 { << 618 return fShellCorrection; << 619 } << 620 << 621 G4double G4NuclearLevelData::GetLevelDensity(G << 622 { << 623 if (fDeexPrecoParameters->GetLevelDensityFla << 624 return A*fDeexPrecoParameters->GetLevelDen << 625 } << 626 const G4LevelManager* man = GetLevelManager( << 627 return (nullptr != man) ? man->LevelDensity( << 628 : 0.058025*A*(1.0 + 5.9059/fG4calc->Z13(A) << 629 } << 630 << 631 G4double G4NuclearLevelData::GetPairingCorrect << 632 { << 633 return fPairingCorrection->GetPairingCorrect << 634 } << 635 << 636 void G4NuclearLevelData::StreamLevels(std::ost << 637 G4int Z, << 638 { << 639 const G4LevelManager* man = GetLevelManager( << 640 if (man) { << 641 os << "Level data for Z= " << Z << " A= " << 642 << man->NumberOfTransitions() + 1 << " << 643 man->StreamInfo(os); << 644 } << 645 } 155 } 646 156