Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4GEMProbability.hh
이 파일의 문서화 페이지로 가기
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: G4GEMProbability.hh 103162 2017-03-20 09:40:58Z gcosmo $
27 //
28 //---------------------------------------------------------------------
29 //
30 // Geant4 header G4GEMProbability
31 //
32 //
33 // Hadronic Process: Nuclear De-excitations
34 // by V. Lara (Sept 2001)
35 //
36 // 18.05.2010 V.Ivanchenko trying to speedup the most slow method
37 // by usage of G4Pow, integer Z and A; moved constructor,
38 // destructor and virtual functions to source
39 //
40 
41 #ifndef G4GEMProbability_h
42 #define G4GEMProbability_h 1
43 
45 
49 #include "G4VCoulombBarrier.hh"
50 #include "G4PairingCorrection.hh"
51 #include "G4Pow.hh"
52 #include "G4Exp.hh"
53 
55 {
56 public:
57 
58  G4GEMProbability(G4int anA, G4int aZ, G4double aSpin);
59 
60  virtual ~G4GEMProbability();
61 
62  // not used for evaporation
63  virtual G4double EmissionProbability(const G4Fragment& fragment,
64  G4double maxKineticEnergy);
65 
66  void Dump() const;
67 
68  inline G4double GetSpin(void) const;
69 
70  inline void SetCoulomBarrier(const G4VCoulombBarrier * aCoulombBarrierStrategy);
71 
72  inline G4double GetCoulombBarrier(const G4Fragment& fragment) const;
73 
74  inline G4double CalcAlphaParam(const G4Fragment & ) const;
75 
76  inline G4double CalcBetaParam(const G4Fragment & ) const;
77 
78 private:
79 
80  G4double CalcProbability(const G4Fragment & fragment,
81  G4double MaximalKineticEnergy,
82  G4double V);
83 
84  inline G4double CCoeficient(G4int) const;
85 
86  inline G4double I0(G4double t);
87  inline G4double I1(G4double t, G4double tx);
88  inline G4double I2(G4double s0, G4double sx);
89  G4double I3(G4double s0, G4double sx);
90 
91  // Copy constructor
94  const G4GEMProbability & operator=(const G4GEMProbability &right);
95  G4bool operator==(const G4GEMProbability &right) const;
96  G4bool operator!=(const G4GEMProbability &right) const;
97 
98  // Data Members
101 
103 
104  // Spin is fragment spin
106 
107  // Coulomb Barrier
109 
110 protected:
111 
113 
114  // Resonances Energy
115  std::vector<G4double> ExcitEnergies;
116 
117  // Resonances Spin
118  std::vector<G4double> ExcitSpins;
119 
120  // Resonances half lifetime
121  std::vector<G4double> ExcitLifetimes;
122 
123 };
124 
126 {
127  return Spin;
128 }
129 
130 inline void
132 {
133  theCoulombBarrierPtr = aCoulombBarrierStrategy;
134 }
135 
136 inline G4double
138 {
139  G4double res = 0.0;
140  if (theCoulombBarrierPtr) {
141  G4int Acomp = fragment.GetA_asInt();
142  G4int Zcomp = fragment.GetZ_asInt();
143  res = theCoulombBarrierPtr->GetCoulombBarrier(Acomp-theA, Zcomp-theZ,
144  fragment.GetExcitationEnergy() -
145  fPairCorr->GetPairingCorrection(Acomp,Zcomp));
146  }
147  return res;
148 }
149 
151 {
152  //JMQ 190709 C's values from Furihata's paper
153  //(notes added on proof in Dostrovskii's paper)
154  //data = {{20, 0.}, {30, -0.06}, {40, -0.10}, {50, -0.10}};
155  G4double C = 0.0;
156  if (aZ >= 50){
157  C=-0.10/G4double(theA);
158  } else if (aZ > 20) {
159  C=(0.123482-0.00534691*aZ-0.0000610624*aZ*aZ+5.93719*1e-7*aZ*aZ*aZ+
160  1.95687*1e-8*aZ*aZ*aZ*aZ)/G4double(theA);
161  }
162  return C;
163 }
164 
165 
167 {
168  //JMQ 190709 values according to Furihata's paper (based on notes added
169  //on proof in Dostrovskii's paper)
170  G4double res;
171  if(theZ == 0) {
172  res = 0.76+1.93/fG4pow->Z13(fragment.GetA_asInt()-theA);
173  } else {
174  res = 1.0 + CCoeficient(fragment.GetZ_asInt()-theZ);
175  }
176  return res;
177 }
178 
179 inline G4double
181 {
182  //JMQ 190709 values according to Furihata's paper (based on notes added
183  //on proof in Dostrovskii's paper)
184  G4double res;
185  if(theZ == 0) {
186  res = (1.66/fG4pow->Z23(fragment.GetA_asInt()-theA)-0.05)*CLHEP::MeV/
187  CalcAlphaParam(fragment);
188  } else {
189  res = -GetCoulombBarrier(fragment);
190  }
191  return res;
192 }
193 
195 {
196  return G4Exp(t) - 1.0;
197 }
198 
200 {
201  return (t - tx + 1.0)*G4Exp(tx) - t - 1.0;
202 }
203 
204 
206 {
207  G4double S = 1.0/std::sqrt(s0);
208  G4double Sx = 1.0/std::sqrt(sx);
209 
210  G4double p1 = S*S*S*( 1.0 + S*S*( 1.5 + 3.75*S*S) );
211  G4double p2 = Sx*Sx*Sx*( 1.0 + Sx*Sx*( 1.5 + 3.75*Sx*Sx) )*G4Exp(sx-s0);
212 
213  return p1-p2;
214 }
215 
216 
217 #endif
G4bool operator==(const G4GEMProbability &right) const
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
std::vector< G4double > ExcitSpins
G4double Z13(G4int Z) const
Definition: G4Pow.hh:132
std::vector< G4double > ExcitEnergies
G4double CCoeficient(G4int) const
G4double I2(G4double s0, G4double sx)
G4int GetA_asInt() const
Definition: G4Fragment.hh:259
G4double CalcProbability(const G4Fragment &fragment, G4double MaximalKineticEnergy, G4double V)
G4PairingCorrection * fPairCorr
virtual ~G4GEMProbability()
G4double I0(G4double t)
void Dump() const
G4double CalcBetaParam(const G4Fragment &) const
double S(double temp)
G4VLevelDensityParameter * theEvapLDPptr
G4double I3(G4double s0, G4double sx)
std::vector< G4double > ExcitLifetimes
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
G4double CalcAlphaParam(const G4Fragment &) const
virtual G4double EmissionProbability(const G4Fragment &fragment, G4double maxKineticEnergy)
const G4GEMProbability & operator=(const G4GEMProbability &right)
G4bool operator!=(const G4GEMProbability &right) const
G4double GetCoulombBarrier(const G4Fragment &fragment) const
static constexpr double MeV
G4int GetZ_asInt() const
Definition: G4Fragment.hh:264
G4double GetSpin(void) const
virtual G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U) const =0
int G4int
Definition: G4Types.hh:78
double C(double temp)
Definition: G4Pow.hh:56
G4double I1(G4double t, G4double tx)
G4double GetPairingCorrection(G4int A, G4int Z) const
void SetCoulomBarrier(const G4VCoulombBarrier *aCoulombBarrierStrategy)
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:276
const G4VCoulombBarrier * theCoulombBarrierPtr
G4double Z23(G4int Z) const
Definition: G4Pow.hh:137