Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // G4NucleiPropertiesTableAME12 27 // 28 // Class description: 29 // 30 // Data updated to AME2012 31 // "The Ame2012 atomic mass evaluation (I)" 32 // by G.Audi, M.Wang, A.H.Wapstra, F.G.Kondev, 33 // M.MacCormick, X.Xu, and B.Pfeiffer 34 // Chinese Physics C36 p. 1287-1602, December 2012. 35 // "The Ame2012 atomic mass evaluation (II)" 36 // by M.Wang, G.Audi, A.H.Wapstra, F.G.Kondev, 37 // M.MacCormick, X.Xu, and B.Pfeiffer 38 // Chinese Physics C36 p. 1603-2014, December 2012. 39 40 // Author: Tatsumi Koi, SLAC - August 2016 41 // -------------------------------------------------------------------- 42 #ifndef G4NucleiPropertiesTableAME12_hh 43 #define G4NucleiPropertiesTableAME12_hh 1 44 45 #include "globals.hh" 46 47 #include <cmath> 48 49 class G4NucleiProperties; 50 51 class G4NucleiPropertiesTableAME12 52 { 53 public: 54 // Destructor 55 ~G4NucleiPropertiesTableAME12() = default; 56 57 enum 58 { 59 nEntries = 3353, 60 MaxA = 295, 61 ZMax = 120 62 }; 63 // Values migrated to AME12 64 65 friend class G4NucleiProperties; 66 // All methods are private and can be used only by G4NucleiProperties 67 68 private: 69 // Default constructor - this class should only be created once! 70 G4NucleiPropertiesTableAME12() = default; 71 72 // Values imported from The Ame2003 atomic mass evaluation (II) 73 static G4double GetMassExcess(G4int Z, G4int A); 74 75 // GetAtomicMass .. in Geant4 Energy units! 76 // Atomic_Mass = MassExcess + A*amu_c2 77 static G4double GetAtomicMass(G4int Z, G4int A); 78 79 // Nuclear_Mass = Atomic_Mass - electronMass 80 static G4double GetNuclearMass(G4int Z, G4int A); 81 82 static G4double GetBindingEnergy(G4int Z, G4int A); 83 84 static G4double GetBetaDecayEnergy(G4int Z, G4int A); 85 86 // Is the nucleus (A,Z) in table? 87 static G4bool IsInTable(G4int Z, G4int A); 88 89 static G4int MaxZ(G4int A); 90 static G4int MinZ(G4int A); 91 92 static G4int GetIndex(G4int Z, G4int A); 93 94 // Data Members for Class Attributes 95 //---------------------------------- 96 97 // The following arrays are static to allow initialization. 98 // Initialization is done in source file 99 100 // Mass Excess 101 static const G4double MassExcess[nEntries]; 102 103 // Beta Decay Energy 104 static const G4double BetaEnergy[nEntries]; 105 106 // Table of Z (number of protons) and A (number of nucleons) 107 // indexArray[0][ ] --> Z 108 // indexArray[1][ ] --> A 109 static const G4int indexArray[2][nEntries]; 110 111 // Reduced Table of A for shorter index search. 112 // The index in this table coincide with A-1 113 // For each A value shortTable[A-1] has the index of the 1st occurrence 114 // in the indexArray[][] 115 static const G4int shortTable[MaxA + 1]; 116 117 // Electrom mass 118 static G4ThreadLocal G4double electronMass[ZMax]; 119 120 static G4ThreadLocal G4bool isIntialized; 121 }; 122 123 #endif 124