Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
particles
management
src
G4HyperNucleiProperties.cc
Go to the documentation of this file.
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
// $Id$
27
//
28
// ------------------------------------------------------------
29
// GEANT 4 class header file
30
//
31
// ------------------------------------------------------------
32
// Hyper Nuclei properties based on CHIPS model (Mikhail KOSOV)
33
// Migrate into particles category by H.Kurashige (Sep. 2007)
34
//
35
#include "
G4PhysicalConstants.hh
"
36
#include "
G4SystemOfUnits.hh
"
37
#include "
G4HyperNucleiProperties.hh
"
38
#include "
G4NucleiProperties.hh
"
39
#include "
G4ParticleTable.hh
"
40
41
42
G4double
G4HyperNucleiProperties::GetNuclearMass
(
G4int
A,
G4int
Z
,
G4int
L)
43
{
44
if
(L==0)
return
G4NucleiProperties::GetNuclearMass
(A, Z);
45
46
G4ParticleTable
* pTable =
G4ParticleTable::GetParticleTable
();
47
if
(A < 2 || Z < 0 || Z > A-L || L>A ) {
48
#ifdef G4VERBOSE
49
if
(pTable->
GetVerboseLevel
()>0) {
50
G4cout
<<
"G4HyperNucleiProperties::GetNuclearMass: "
51
<<
" Wrong values for A = "
<< A
52
<<
" Z = "
<< Z
53
<<
" L = "
<< L
54
<<
G4endl
;
55
}
56
#endif
57
return
0.0;
58
}
else
if
( A==2 ) {
59
#ifdef G4VERBOSE
60
if
(pTable->
GetVerboseLevel
()>0) {
61
G4cout
<<
"G4HyperNucleiProperties::GetNuclearMass: "
62
<<
" No boud state for A = "
<< A
63
<<
" Z = "
<< Z
64
<<
" L = "
<< L
65
<<
G4endl
;
66
}
67
#endif
68
return
0.0;
69
}
70
71
72
G4ParticleDefinition
*
lambda
= pTable->
FindParticle
(
"lambda"
);
73
if
(lambda ==0) {
74
#ifdef G4VERBOSE
75
if
(pTable->
GetVerboseLevel
()>0) {
76
G4cout
<<
"G4HyperNucleiProperties::GetNuclearMass: "
77
<<
" Lambda is not defined "
<<
G4endl
;
78
}
79
#endif
80
return
0.0;
81
}
82
const
G4double
mL= lambda->
GetPDGMass
();
// mLambda
83
84
static
const
G4double
b7=25.*
MeV
;
85
static
const
G4double
b8=10.5;
// Slope
86
static
const
G4double
a2=0.13*
MeV
;
// BindingEnergy for d+Lambda(MeV)
87
static
const
G4double
a3=2.2*
MeV
;
// BindingEnergy for (t/He3)+Lamb(MeV)
88
static
const
G4double
eps =0.0001*
MeV
;
// security value (MeV)
89
90
G4double
mass =
G4NucleiProperties::GetNuclearMass
(A-L, Z);
91
// A non-"strange" nucleus
92
G4double
bs=0.;
93
if
(A-L ==2) bs=a2;
// for nnL,npL,ppL
94
else
if
(A-L ==3) bs=a3;
// for 3nL,2npL,n2pL,3pL
95
else
if
(A-L >3) bs=b7*std::exp(-b8/(A-L+1.));
96
mass += L*(mL-bs) + eps;
97
98
return
mass;
99
}
100
101
102
G4double
G4HyperNucleiProperties::GetAtomicMass
(
G4int
A,
G4int
Z
,
G4int
L)
103
{
104
if
(A < 1 || Z < 0 || Z > A-L || L > A || L <0 ) {
105
#ifdef G4VERBOSE
106
if
(
G4ParticleTable::GetParticleTable
()->GetVerboseLevel()>0) {
107
G4cout
<<
"G4HyperNucleiProperties::GetAtomicMass: "
108
<<
" Wrong values for A = "
<< A
109
<<
" Z = "
<< Z
110
<<
" L = "
<< L <<
G4endl
;
111
}
112
#endif
113
return
0.0;
114
115
}
else
{
116
G4double
nuclearMass =
GetNuclearMass
(A, Z, L);
117
return
nuclearMass + Z*
electron_mass_c2
118
- 1.433e-5*
MeV
*std::pow(
G4double
(Z),2.39);
119
}
120
}
121
Generated on Sat May 25 2013 14:33:23 for Geant4 by
1.8.4