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

Last change on this file since 962 was 819, checked in by garnier, 16 years ago

import all except CVS

File size: 5.5 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//
27//
28// Hadronic Process: Nuclear De-excitations
29// by V. Lara (Sept 2001)
30//
31
32
33
34#ifndef G4GEMProbability_h
35#define G4GEMProbability_h 1
36
37
38#include "G4VEmissionProbability.hh"
39#include "G4VLevelDensityParameter.hh"
40#include "G4EvaporationLevelDensityParameter.hh"
41#include "G4VCoulombBarrier.hh"
42#include "G4PairingCorrection.hh"
43
44class G4GEMProbability : public G4VEmissionProbability
45{
46public:
47    // Only available constructor
48    G4GEMProbability(const G4int anA, const G4int aZ, const G4double aSpin) : 
49        theA(anA), theZ(aZ), Spin(aSpin), theCoulombBarrierPtr(0),
50        ExcitationEnergies(0), ExcitationSpins(0), ExcitationLifetimes(0), Normalization(1.0)
51        {
52            theEvapLDPptr = new G4EvaporationLevelDensityParameter;
53        }
54   
55    ~G4GEMProbability()
56        {
57            if (theEvapLDPptr != 0) delete theEvapLDPptr;
58        }
59
60
61       
62    G4double GetZ(void) const { return theZ; }
63       
64    G4double GetA(void) const { return theA;}
65
66    G4double GetSpin(void) const { return Spin; }
67
68    G4double GetNormalization(void) const { return Normalization; }
69   
70    void SetCoulomBarrier(const G4VCoulombBarrier * aCoulombBarrierStrategy)
71        {
72            theCoulombBarrierPtr = aCoulombBarrierStrategy;
73        }
74
75    G4double GetCoulombBarrier(const G4Fragment& fragment) const 
76        {
77            if (theCoulombBarrierPtr) 
78              {
79                G4int Acompound = static_cast<G4int>(fragment.GetA());
80                G4int Zcompound = static_cast<G4int>(fragment.GetZ());
81                return theCoulombBarrierPtr->GetCoulombBarrier(Acompound-theA, Zcompound-theZ,
82                                                               fragment.GetExcitationEnergy()-
83                                                               G4PairingCorrection::GetInstance()->
84                                                               GetPairingCorrection(Acompound,Zcompound));
85              }
86            else 
87              {
88                return 0.0;
89              }
90        }
91   
92
93    virtual G4double CalcAlphaParam(const G4Fragment & ) const {return 1.0;}
94    virtual G4double CalcBetaParam(const G4Fragment & ) const {return 1.0;}
95   
96protected:
97 
98    void SetExcitationEnergiesPtr(std::vector<G4double> * anExcitationEnergiesPtr) 
99        {
100            ExcitationEnergies = anExcitationEnergiesPtr;
101        }
102 
103    void SetExcitationSpinsPtr(std::vector<G4double> * anExcitationSpinsPtr)
104        {
105            ExcitationSpins = anExcitationSpinsPtr;
106        }
107
108    void SetExcitationLifetimesPtr(std::vector<G4double> * anExcitationLifetimesPtr)
109        {
110            ExcitationLifetimes = anExcitationLifetimesPtr;
111        }
112
113    void SetCoulombBarrierStrategy(G4VCoulombBarrier * aCoulombBarrier)
114        {
115            theCoulombBarrierPtr = aCoulombBarrier;
116        }
117
118 
119    // Default constructor
120    G4GEMProbability() {}
121private:
122    // Copy constructor
123    G4GEMProbability(const G4GEMProbability &right);
124   
125    const G4GEMProbability & operator=(const G4GEMProbability &right);
126    G4bool operator==(const G4GEMProbability &right) const;
127    G4bool operator!=(const G4GEMProbability &right) const;
128   
129public:
130    G4double EmissionProbability(const G4Fragment & fragment, const G4double anEnergy);
131 
132private:
133
134    G4double CalcProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy,
135                             const G4double V);
136    virtual G4double CCoeficient(const G4double ) const {return 0.0;};
137
138   
139    G4double I0(const G4double t);
140    G4double I1(const G4double t, const G4double tx);
141    G4double I2(const G4double s, const G4double sx);
142    G4double I3(const G4double s, const G4double sx);
143   
144    // Data Members
145   
146    G4VLevelDensityParameter * theEvapLDPptr;
147       
148    G4int theA;
149    G4int theZ;
150   
151    // Spin is fragment spin
152    G4double Spin;
153
154    // Coulomb Barrier
155    const G4VCoulombBarrier * theCoulombBarrierPtr;
156
157   
158    // Resonances Energy
159    std::vector<G4double> * ExcitationEnergies;
160   
161    // Resonances Spin
162    std::vector<G4double> * ExcitationSpins;
163
164    // Resonances half lifetime
165    std::vector<G4double> * ExcitationLifetimes;
166
167
168    // Normalization
169    G4double Normalization;
170   
171};
172
173
174#endif
Note: See TracBrowser for help on using the repository browser.