#include <G4HyperNucleiProperties.hh>
Public Member Functions | |
~G4HyperNucleiProperties () | |
G4HyperNucleiProperties () | |
Static Public Member Functions | |
static G4double | GetAtomicMass (G4int A, G4int Z, G4int L) |
static G4double | GetNuclearMass (G4int A, G4int Z, G4int L) |
Definition at line 45 of file G4HyperNucleiProperties.hh.
G4HyperNucleiProperties::~G4HyperNucleiProperties | ( | ) | [inline] |
G4HyperNucleiProperties::G4HyperNucleiProperties | ( | ) | [inline] |
Definition at line 102 of file G4HyperNucleiProperties.cc.
References G4cout, G4endl, GetNuclearMass(), and G4ParticleTable::GetParticleTable().
00103 { 00104 if (A < 1 || Z < 0 || Z > A-L || L > A || L <0 ) { 00105 #ifdef G4VERBOSE 00106 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { 00107 G4cout << "G4HyperNucleiProperties::GetAtomicMass: " 00108 << " Wrong values for A = " << A 00109 << " Z = " << Z 00110 << " L = " << L << G4endl; 00111 } 00112 #endif 00113 return 0.0; 00114 00115 } else { 00116 G4double nuclearMass = GetNuclearMass(A, Z, L); 00117 return nuclearMass + Z*electron_mass_c2 00118 - 1.433e-5*MeV*std::pow(G4double(Z),2.39); 00119 } 00120 }
Definition at line 42 of file G4HyperNucleiProperties.cc.
References G4ParticleTable::FindParticle(), G4cout, G4endl, G4NucleiProperties::GetNuclearMass(), G4ParticleTable::GetParticleTable(), G4ParticleTable::GetVerboseLevel(), and G4InuclParticleNames::lambda.
Referenced by GetAtomicMass(), and G4IonTable::GetNucleusMass().
00043 { 00044 if (L==0) return G4NucleiProperties::GetNuclearMass(A, Z); 00045 00046 G4ParticleTable* pTable = G4ParticleTable::GetParticleTable(); 00047 if (A < 2 || Z < 0 || Z > A-L || L>A ) { 00048 #ifdef G4VERBOSE 00049 if (pTable->GetVerboseLevel()>0) { 00050 G4cout << "G4HyperNucleiProperties::GetNuclearMass: " 00051 << " Wrong values for A = " << A 00052 << " Z = " << Z 00053 << " L = " << L 00054 << G4endl; 00055 } 00056 #endif 00057 return 0.0; 00058 } else if( A==2 ) { 00059 #ifdef G4VERBOSE 00060 if (pTable->GetVerboseLevel()>0) { 00061 G4cout << "G4HyperNucleiProperties::GetNuclearMass: " 00062 << " No boud state for A = " << A 00063 << " Z = " << Z 00064 << " L = " << L 00065 << G4endl; 00066 } 00067 #endif 00068 return 0.0; 00069 } 00070 00071 00072 G4ParticleDefinition* lambda = pTable->FindParticle("lambda"); 00073 if (lambda ==0) { 00074 #ifdef G4VERBOSE 00075 if (pTable->GetVerboseLevel()>0) { 00076 G4cout << "G4HyperNucleiProperties::GetNuclearMass: " 00077 << " Lambda is not defined " << G4endl; 00078 } 00079 #endif 00080 return 0.0; 00081 } 00082 const G4double mL= lambda->GetPDGMass(); // mLambda 00083 00084 static const G4double b7=25.*MeV; 00085 static const G4double b8=10.5; // Slope 00086 static const G4double a2=0.13*MeV; // BindingEnergy for d+Lambda(MeV) 00087 static const G4double a3=2.2*MeV; // BindingEnergy for (t/He3)+Lamb(MeV) 00088 static const G4double eps =0.0001*MeV; // security value (MeV) 00089 00090 G4double mass = G4NucleiProperties::GetNuclearMass(A-L, Z); 00091 // A non-"strange" nucleus 00092 G4double bs=0.; 00093 if (A-L ==2) bs=a2; // for nnL,npL,ppL 00094 else if(A-L ==3) bs=a3; // for 3nL,2npL,n2pL,3pL 00095 else if(A-L >3) bs=b7*std::exp(-b8/(A-L+1.)); 00096 mass += L*(mL-bs) + eps; 00097 00098 return mass; 00099 }