Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // INCL++ intra-nuclear cascade model 27 // Alain Boudard, CEA-Saclay, France 28 // Joseph Cugnon, University of Liege, Belgium 29 // Jean-Christophe David, CEA-Saclay, France 30 // Pekka Kaitaniemi, CEA-Saclay, France, and H 31 // Sylvie Leray, CEA-Saclay, France 32 // Davide Mancusi, CEA-Saclay, France 33 // 34 #define INCLXX_IN_GEANT4_MODE 1 35 36 #include "globals.hh" 37 38 #ifndef G4INCLParticleTable_hh 39 #define G4INCLParticleTable_hh 1 40 41 #include <string> 42 #include <vector> 43 // #include <cassert> 44 45 #include "G4INCLParticleType.hh" 46 #include "G4INCLParticleSpecies.hh" 47 #include "G4INCLLogger.hh" 48 #include "G4INCLConfig.hh" 49 #include "G4INCLHFB.hh" 50 51 #ifdef INCLXX_IN_GEANT4_MODE 52 #include "G4IonTable.hh" 53 #include "G4ParticleTable.hh" 54 #endif 55 #include "G4INCLGlobals.hh" 56 #include "G4INCLNaturalIsotopicDistributions.h 57 58 namespace G4INCL { 59 60 namespace ParticleTable { 61 62 const G4int maxClusterMass = 12; 63 const G4int maxClusterCharge = 8; 64 65 const G4int clusterTableZSize = maxCluster 66 const G4int clusterTableASize = maxCluster 67 const G4int clusterTableSSize = 4; 68 69 const G4double effectiveNucleonMass = 938. 70 const G4double effectiveNucleonMass2 = 8.8 71 const G4double effectiveDeltaMass = 1232.0 72 const G4double effectiveDeltaWidth = 130.0 73 const G4double effectivePionMass = 138.0; 74 const G4double effectiveLambdaMass = 1115. 75 const G4double effectiveSigmaMass = 1197.4 76 const G4double effectiveXiMass = 1321.71; 77 const G4double effectiveKaonMass = 497.614 78 const G4double effectiveAntiKaonMass = 497 79 const G4double effectiveEtaMass = 547.862; 80 const G4double effectiveOmegaMass = 782.65 81 const G4double effectiveEtaPrimeMass = 957 82 const G4double effectivePhotonMass = 0.0; 83 extern G4ThreadLocal G4double minDeltaMass 84 extern G4ThreadLocal G4double minDeltaMass 85 extern G4ThreadLocal G4double minDeltaMass 86 87 /// \brief Initialize the particle table 88 void initialize(Config const * const theCo 89 90 /// \brief Get the isospin of a particle 91 G4int getIsospin(const ParticleType t); 92 93 /// \brief Get the native INCL name of the 94 std::string getName(const ParticleType t); 95 96 /// \brief Get the short INCL name of the 97 std::string getShortName(const ParticleTyp 98 99 /// \brief Get the native INCL name of the 100 std::string getName(const ParticleSpecies 101 102 /// \brief Get the short INCL name of the 103 std::string getShortName(const ParticleSpe 104 105 /// \brief Get the native INCL name of the 106 std::string getName(const G4int A, const G 107 108 /// \brief Get the native INCL name of the 109 std::string getName(const G4int A, const G 110 111 /// \brief Get the short INCL name of the 112 std::string getShortName(const G4int A, co 113 114 /// \brief Get INCL nuclear mass (in MeV/c 115 G4double getINCLMass(const G4int A, const 116 117 /// \brief Get INCL particle mass (in MeV/ 118 G4double getINCLMass(const ParticleType t) 119 120 #ifndef INCLXX_IN_GEANT4_MODE 121 /// \brief Do we have this particle mass? 122 G4double hasMassTable(const unsigned int A 123 124 /** \brief Weizsaecker mass formula 125 * 126 * Return the nuclear mass, as calculated 127 * Adapted from the Geant4 source. 128 * 129 * \param A the mass number 130 * \param Z the charge number 131 * \return the nuclear mass [MeV/c^2] 132 */ 133 G4double getWeizsaeckerMass(const G4int A, 134 #endif 135 136 ///\brief Get particle mass (in MeV/c^2) 137 G4double getRealMass(const G4INCL::Particl 138 ///\brief Get nuclear mass (in MeV/c^2) 139 G4double getRealMass(const G4int A, const 140 141 /**\brief Get Q-value (in MeV/c^2) 142 * 143 * Uses the getTableMass function to compu 144 * following reaction: 145 * \f[ (A_1,Z_1) + (A_2, Z_2) --> (A_1+A_2 146 */ 147 G4double getTableQValue(const G4int A1, co 148 149 /**\brief Get Q-value (in MeV/c^2) 150 * 151 * Uses the getTableMass function to compu 152 * following reaction: 153 * \f[ (A_1,Z_1) + (A_2, Z_2) --> (A_3,Z_3 154 */ 155 G4double getTableQValue(const G4int A1, co 156 157 G4double getTableSpeciesMass(const Particl 158 159 /// \brief Get mass number from particle t 160 G4int getMassNumber(const ParticleType t); 161 162 /// \brief Get charge number from particle 163 G4int getChargeNumber(const ParticleType t 164 165 /// \brief Get strangeness number from par 166 G4int getStrangenessNumber(const ParticleT 167 168 G4double getNuclearRadius(const ParticleTy 169 G4double getLargestNuclearRadius(const G4i 170 G4double getRadiusParameter(const Particle 171 G4double getMaximumNuclearRadius(const Par 172 G4double getSurfaceDiffuseness(const Parti 173 174 /// \brief Return the RMS of the momentum 175 G4double getMomentumRMS(const G4int A, con 176 177 /// \brief Return INCL's default separatio 178 G4double getSeparationEnergyINCL(const Par 179 180 /// \brief Return the real separation ener 181 G4double getSeparationEnergyReal(const Par 182 183 /// \brief Return the real separation ener 184 G4double getSeparationEnergyRealForLight(c 185 186 /// \brief Getter for protonSeparationEner 187 G4double getProtonSeparationEnergy(); 188 189 /// \brief Getter for neutronSeparationEne 190 G4double getNeutronSeparationEnergy(); 191 192 /// \brief Setter for protonSeparationEner 193 void setProtonSeparationEnergy(const G4dou 194 195 /// \brief Setter for protonSeparationEner 196 void setNeutronSeparationEnergy(const G4do 197 198 /// \brief Get the name of the element fro 199 std::string getElementName(const G4int Z); 200 201 /// \brief Get the name of an unnamed elem 202 std::string getIUPACElementName(const G4in 203 204 /// \brief Get the name of the element fro 205 G4int parseElement(std::string pS); 206 207 /** \brief Parse a IUPAC element name 208 * 209 * Note: this function is UGLY. Look at it 210 * 211 * \param pS a normalised string (lowercas 212 * \return the charge number of the nuclid 213 */ 214 G4int parseIUPACElement(std::string const 215 216 IsotopicDistribution const &getNaturalIsot 217 218 G4int drawRandomNaturalIsotope(const G4int 219 220 // Typedefs and pointers for transparent h 221 //typedef G4double (*NuclearMassFn)(const 222 typedef G4double (*NuclearMassFn)(const G4 223 typedef G4double (*ParticleMassFn)(const P 224 /// \brief Static pointer to the mass func 225 extern G4ThreadLocal NuclearMassFn getTabl 226 /// \brief Static pointer to the mass func 227 extern G4ThreadLocal ParticleMassFn getTab 228 229 // Typedefs and pointers for transparent h 230 typedef G4double (*SeparationEnergyFn)(con 231 /// \brief Static pointer to the separatio 232 extern G4ThreadLocal SeparationEnergyFn ge 233 234 // Typedefs and pointers for transparent h 235 typedef G4double (*FermiMomentumFn)(const 236 extern G4ThreadLocal FermiMomentumFn getFe 237 238 /// \brief Return the constant value of th 239 G4double getFermiMomentumConstant(const G4 240 241 /** \brief Return the constant value of th 242 * 243 * This function should always return Phys 244 * nuclei, and values from the momentumRMS 245 * 246 * \param A mass number 247 * \param Z charge number 248 */ 249 G4double getFermiMomentumConstantLight(con 250 251 /** \brief Return the value Fermi momentum 252 * 253 * This function returns a fitted Fermi mo 254 * et al., Phys. Rev. Lett. 26 (1971) 445. 255 * \f[ 256 * p_F(A)=\alpha-\beta\cdot e^{(-A\cdot\ga 257 * \f] 258 * with \f$\alpha=259.416\f$ MeV/\f$c\f$, 259 * and \f$\gamma=9.5157\cdot10^{-2}\f$. 260 * 261 * \param A mass number 262 */ 263 G4double getFermiMomentumMassDependent(con 264 265 /** \brief Get the value of the r-p correl 266 * 267 * \param t the type of the particle (Prot 268 * \return the value of the r-p correlatio 269 */ 270 G4double getRPCorrelationCoefficient(const 271 272 /// \brief Get the thickness of the neutro 273 G4double getNeutronSkin(); 274 275 /// \brief Get the size of the neutron hal 276 G4double getNeutronHalo(); 277 278 /// \brief Get the type of pion 279 ParticleType getPionType(const G4int isosp 280 281 /// \brief Get the type of nucleon 282 ParticleType getNucleonType(const G4int is 283 284 /// \brief Get the type of delta 285 ParticleType getDeltaType(const G4int isos 286 287 /// \brief Get the type of sigma 288 ParticleType getSigmaType(const G4int isos 289 290 /// \brief Get the type of kaon 291 ParticleType getKaonType(const G4int isosp 292 293 /// \brief Get the type of antikaon 294 ParticleType getAntiKaonType(const G4int i 295 296 /// \brief Get the type of xi 297 ParticleType getXiType(const G4int isosp); 298 299 /// \brief Get the type of antinucleon 300 ParticleType getAntiNucleonType(const G4in 301 302 /// \brief Get the type of antidelta 303 ParticleType getAntiXiType(const G4int iso 304 305 /// \brief Get the type of antisigma 306 ParticleType getAntiSigmaType(const G4int 307 308 /// \brief Get particle width (in s) 309 G4double getWidth(const ParticleType t); 310 } 311 } 312 313 #endif 314 315