Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:58:45

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 // G4NucleiPropertiesTableAME12
0027 //
0028 // Class description:
0029 //
0030 // Data updated to AME2012
0031 //   "The Ame2012 atomic mass evaluation (I)"
0032 //    by G.Audi, M.Wang, A.H.Wapstra, F.G.Kondev,
0033 //       M.MacCormick, X.Xu, and B.Pfeiffer
0034 //    Chinese Physics C36 p. 1287-1602, December 2012.
0035 //   "The Ame2012 atomic mass evaluation (II)"
0036 //    by M.Wang, G.Audi, A.H.Wapstra, F.G.Kondev,
0037 //       M.MacCormick, X.Xu, and B.Pfeiffer
0038 //    Chinese Physics C36 p. 1603-2014, December 2012.
0039 
0040 // Author: Tatsumi Koi, SLAC - August 2016
0041 // --------------------------------------------------------------------
0042 #ifndef G4NucleiPropertiesTableAME12_hh
0043 #define G4NucleiPropertiesTableAME12_hh 1
0044 
0045 #include "globals.hh"
0046 
0047 #include <cmath>
0048 
0049 class G4NucleiProperties;
0050 
0051 class G4NucleiPropertiesTableAME12
0052 {
0053   public:
0054     // Destructor
0055     ~G4NucleiPropertiesTableAME12() = default;
0056 
0057     enum
0058     {
0059       nEntries = 3353,
0060       MaxA = 295,
0061       ZMax = 120
0062     };
0063     // Values migrated to AME12
0064 
0065     friend class G4NucleiProperties;
0066     // All methods are private and can be used only by G4NucleiProperties
0067 
0068   private:
0069     // Default constructor - this class should only be created once!
0070     G4NucleiPropertiesTableAME12() = default;
0071 
0072     // Values imported from The Ame2003 atomic mass evaluation (II)
0073     static G4double GetMassExcess(G4int Z, G4int A);
0074 
0075     // GetAtomicMass .. in Geant4 Energy units!
0076     // Atomic_Mass = MassExcess + A*amu_c2
0077     static G4double GetAtomicMass(G4int Z, G4int A);
0078 
0079     // Nuclear_Mass = Atomic_Mass - electronMass
0080     static G4double GetNuclearMass(G4int Z, G4int A);
0081 
0082     static G4double GetBindingEnergy(G4int Z, G4int A);
0083 
0084     static G4double GetBetaDecayEnergy(G4int Z, G4int A);
0085 
0086     // Is the nucleus (A,Z) in table?
0087     static G4bool IsInTable(G4int Z, G4int A);
0088 
0089     static G4int MaxZ(G4int A);
0090     static G4int MinZ(G4int A);
0091 
0092     static G4int GetIndex(G4int Z, G4int A);
0093 
0094     // Data Members for Class Attributes
0095     //----------------------------------
0096 
0097     // The following arrays are static to allow initialization.
0098     // Initialization is done in source file
0099 
0100     // Mass Excess
0101     static const G4double MassExcess[nEntries];
0102 
0103     // Beta Decay Energy
0104     static const G4double BetaEnergy[nEntries];
0105 
0106     // Table of Z (number of protons) and A (number of nucleons)
0107     //   indexArray[0][ ] --> Z
0108     //   indexArray[1][ ] --> A
0109     static const G4int indexArray[2][nEntries];
0110 
0111     // Reduced Table of A for shorter index search.
0112     //   The index in this table coincide with A-1
0113     //   For each A value shortTable[A-1] has the index of the 1st occurrence
0114     //   in the indexArray[][]
0115     static const G4int shortTable[MaxA + 1];
0116 
0117     // Electrom mass
0118     static G4ThreadLocal G4double electronMass[ZMax];
0119 
0120     static G4ThreadLocal G4bool isIntialized;
0121 };
0122 
0123 #endif