source: trunk/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMProbability.hh @ 1340

Last change on this file since 1340 was 1340, checked in by garnier, 14 years ago

update ti head

File size: 6.0 KB
Line 
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,v 1.4 2010/05/19 10:21:16 vnivanch Exp $
27// GEANT4 tag $Name: geant4-09-03-ref-09 $
28//
29//---------------------------------------------------------------------
30//
31// Geant4 header G4GEMProbability
32//
33//
34// Hadronic Process: Nuclear De-excitations
35// by V. Lara (Sept 2001)
36//
37// 18.05.2010 V.Ivanchenko trying to speedup the most slow method
38//            by usage of G4Pow, integer Z and A; moved constructor,
39//            destructor and virtual functions to source
40//
41
42#ifndef G4GEMProbability_h
43#define G4GEMProbability_h 1
44
45
46#include "G4VEmissionProbability.hh"
47#include "G4VLevelDensityParameter.hh"
48#include "G4EvaporationLevelDensityParameter.hh"
49#include "G4VCoulombBarrier.hh"
50#include "G4PairingCorrection.hh"
51
52class G4Pow;
53
54class G4GEMProbability : public G4VEmissionProbability
55{
56public:
57
58  // Default constructor - should not be used
59  G4GEMProbability();
60
61  // Only available constructor
62  G4GEMProbability(const G4int anA, const G4int aZ, const G4double aSpin);
63   
64  virtual ~G4GEMProbability();
65
66  inline G4int GetZ_asInt(void) const { return theZ; }
67       
68  inline G4int GetA_asInt(void) const { return theA;}
69       
70  inline G4double GetZ(void) const { return theZ; }
71       
72  inline G4double GetA(void) const { return theA;}
73
74  inline G4double GetSpin(void) const { return Spin; }
75
76  inline G4double GetNormalization(void) const { return Normalization; }
77   
78  inline void SetCoulomBarrier(const G4VCoulombBarrier * aCoulombBarrierStrategy)
79  {
80    theCoulombBarrierPtr = aCoulombBarrierStrategy;
81  }
82
83  inline G4double GetCoulombBarrier(const G4Fragment& fragment) const 
84  {
85    G4double res = 0.0;
86    if (theCoulombBarrierPtr) 
87      {
88        G4int Acomp = fragment.GetA_asInt();
89        G4int Zcomp = fragment.GetZ_asInt();
90        res = theCoulombBarrierPtr->GetCoulombBarrier(Acomp-theA, Zcomp-theZ,
91          fragment.GetExcitationEnergy()-fPairCorr->GetPairingCorrection(Acomp,Zcomp));
92      }
93    return res;
94  }
95   
96  virtual G4double CalcAlphaParam(const G4Fragment & ) const;
97  virtual G4double CalcBetaParam(const G4Fragment & ) const;
98   
99protected:
100 
101  inline void SetExcitationEnergiesPtr(std::vector<G4double> * anExcitationEnergiesPtr) 
102  {
103    ExcitationEnergies = anExcitationEnergiesPtr;
104  }
105 
106  inline void SetExcitationSpinsPtr(std::vector<G4double> * anExcitationSpinsPtr)
107  {
108    ExcitationSpins = anExcitationSpinsPtr;
109  }
110
111  inline void SetExcitationLifetimesPtr(std::vector<G4double> * anExcitationLifetimesPtr)
112  {
113    ExcitationLifetimes = anExcitationLifetimesPtr;
114  }
115
116  inline void SetCoulombBarrierStrategy(G4VCoulombBarrier * aCoulombBarrier)
117  {
118    theCoulombBarrierPtr = aCoulombBarrier;
119  }
120
121private:
122
123  // Copy constructor
124  G4GEMProbability(const G4GEMProbability &right);
125   
126  const G4GEMProbability & operator=(const G4GEMProbability &right);
127  G4bool operator==(const G4GEMProbability &right) const;
128  G4bool operator!=(const G4GEMProbability &right) const;
129   
130public:
131
132  G4double EmissionProbability(const G4Fragment & fragment, const G4double anEnergy);
133 
134private:
135
136  G4double CalcProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy,
137                           const G4double V);
138
139  virtual G4double CCoeficient(const G4double ) const;
140
141  inline G4double I0(const G4double t);
142  inline G4double I1(const G4double t, const G4double tx);
143  inline G4double I2(const G4double s, const G4double sx);
144  G4double I3(const G4double s, const G4double sx);
145   
146  // Data Members
147
148  G4Pow*   fG4pow;
149  G4PairingCorrection* fPairCorr;
150   
151  G4VLevelDensityParameter * theEvapLDPptr;
152       
153  G4int theA;
154  G4int theZ;
155   
156  // Spin is fragment spin
157  G4double Spin;
158
159  // Coulomb Barrier
160  const G4VCoulombBarrier * theCoulombBarrierPtr;
161 
162  // Resonances Energy
163  std::vector<G4double> * ExcitationEnergies;
164   
165  // Resonances Spin
166  std::vector<G4double> * ExcitationSpins;
167
168  // Resonances half lifetime
169  std::vector<G4double> * ExcitationLifetimes;
170
171  // Normalization
172  G4double Normalization;
173   
174};
175
176inline G4double G4GEMProbability::I0(const G4double t)
177{
178  return std::exp(t) - 1.0;
179}
180
181inline G4double G4GEMProbability::I1(const G4double t, const G4double tx)
182{
183  return (t - tx + 1.0)*std::exp(tx) - t - 1.0;
184}
185
186
187inline G4double G4GEMProbability::I2(const G4double s, const G4double sx)
188{
189  G4double S = 1.0/std::sqrt(s);
190  G4double Sx = 1.0/std::sqrt(sx);
191 
192  G4double p1 = S*S*S*( 1.0 + S*S*( 1.5 + 3.75*S*S) );
193  G4double p2 = Sx*Sx*Sx*( 1.0 + Sx*Sx*( 1.5 + 3.75*Sx*Sx) )*std::exp(sx-s);
194 
195  return p1-p2;
196}
197
198
199#endif
Note: See TracBrowser for help on using the repository browser.