Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4BEChargedChannel Class Referenceabstract

#include <G4BEChargedChannel.hh>

+ Inheritance diagram for G4BEChargedChannel:

Public Member Functions

 G4BEChargedChannel ()
 
virtual ~G4BEChargedChannel ()
 
virtual void calculateProbability ()
 
virtual G4DynamicParticleemit ()=0
 
virtual G4double coulombFactor ()=0
 
G4double coulombFactorForProton ()
 
G4double qmFactorForProton ()
 
G4double qmFactorForAlpha ()
 
G4double sampleKineticEnergy ()
 
- Public Member Functions inherited from G4BertiniEvaporationChannel
 G4BertiniEvaporationChannel ()
 
virtual ~G4BertiniEvaporationChannel ()
 
void setVerboseLevel (G4int verbose)
 
void setNucleusA (G4int inputA)
 
void setNucleusZ (G4int inputZ)
 
G4int getParticleA ()
 
G4int getParticleZ ()
 
void setExcitationEnergy (G4double inputE)
 
void setQ (G4double inputQ)
 
void setPairingCorrection (G4int isCorrection)
 
G4double getLevelDensityParameter ()
 
G4String getName ()
 
virtual G4double getProbability ()
 
virtual void setProbability (G4double newProb)
 
virtual void calculateProbability ()=0
 
virtual G4double qmFactor ()
 
virtual G4double getQ ()
 
virtual G4double getCoulomb ()
 
virtual G4double getThresh ()
 
virtual G4DynamicParticleemit ()=0
 

Protected Attributes

G4double A
 
G4double spin
 
- Protected Attributes inherited from G4BertiniEvaporationChannel
G4String name
 
G4int verboseLevel
 
G4int nucleusA
 
G4int nucleusZ
 
G4int particleA
 
G4int particleZ
 
G4double exmass
 
G4double emissionProbability
 
G4double rho
 
G4double correction
 
G4double excitationEnergy
 
G4int spin
 

Additional Inherited Members

- Protected Member Functions inherited from G4BertiniEvaporationChannel
G4double Q (G4double a, G4double z)
 
G4double pairingEnergyProtons (G4int A)
 
G4double pairingEnergyNeutrons (G4int N)
 
G4double cameron (G4double a, G4double z)
 
G4double cameronShellCorrectionP (G4int Z)
 
G4double cameronShellCorrectionN (G4int N)
 
void isotropicCosines (G4double &, G4double &, G4double &)
 

Detailed Description

Definition at line 38 of file G4BEChargedChannel.hh.

Constructor & Destructor Documentation

◆ G4BEChargedChannel()

G4BEChargedChannel::G4BEChargedChannel ( )

Definition at line 35 of file G4BEChargedChannel.cc.

◆ ~G4BEChargedChannel()

G4BEChargedChannel::~G4BEChargedChannel ( )
virtual

Definition at line 41 of file G4BEChargedChannel.cc.

42{
43}

Member Function Documentation

◆ calculateProbability()

void G4BEChargedChannel::calculateProbability ( )
virtual

Implements G4BertiniEvaporationChannel.

Definition at line 46 of file G4BEChargedChannel.cc.

47{
48 G4int residualZ = nucleusZ - particleZ;
49 G4int residualA = nucleusA - particleA;
50
51// Check if nucleus is too small, if this evaporation channel
52// leads to an impossible residual nucleus or if there is no enough
53// energy.
54 if ( nucleusA < 2.0 * particleA ||
55 nucleusZ < 2.0 * particleZ ||
56 residualA <= residualZ ||
58 {
59 if ( verboseLevel >= 6 )
60 G4cout << "G4BEChargedChannel : calculateProbability for " << getName() << " = 0 " << G4endl;
62 return;
63 }
64
65 // In HETC88 s-s0 was used in std::exp( s ), in which s0 was either 50 or
66 // max(s_i), where i goes over all channels.
67
69 G4double slevel = 2 * std::sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
70 G4double constant = A / 2 * ( 2 * spin + 1 ) * ( 1 + coulombFactor() );
71 G4double eye1 = ( slevel*slevel - 3 * slevel + 3 ) / ( 4 * levelParam*levelParam ) * std::exp( slevel );
72
73 emissionProbability = constant * std::pow( G4double(residualA), 0.6666666 ) * eye1;
74
75 if ( verboseLevel >= 6 )
76 G4cout << "G4BEChargedChannel : calculateProbability for " << getName() << G4endl
77 << " res A = " << residualA << G4endl
78 << " res Z = " << residualZ << G4endl
79 << " c*(c_i+1) = "<< constant << G4endl
80 << " qmfactor = "<< qmFactor() << G4endl
81 << " coulombfactor = "<< coulombFactor() << G4endl
82 << " E = " << excitationEnergy << G4endl
83 << " correction = " << correction << G4endl
84 << " eye1 = " << eye1 << G4endl
85 << " levelParam = " << levelParam << G4endl
86 << " thresh = " << getThresh() << G4endl
87 << " s = " << s << G4endl
88 << " probability = " << emissionProbability << G4endl;
89
90 return;
91}
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
virtual G4double coulombFactor()=0

◆ coulombFactor()

virtual G4double G4BEChargedChannel::coulombFactor ( )
pure virtual

◆ coulombFactorForProton()

G4double G4BEChargedChannel::coulombFactorForProton ( )

Definition at line 128 of file G4BEChargedChannel.cc.

129{
130 // Coefficient c_p:s for empirical cross section formula are
131 // defined with the proton constant. See Dostrovsky, Phys. Rev.,
132 // vol. 116, 1959.
133 G4double t[7] = { 0.08 , 0 , -0.06 , -0.1 , -0.1 , -0.1 , -0.1 };
135
136 if ( Z >= 70.0 ) return t[6];
137 if ( Z <= 10.0 ) return t[0];
138
139 // Linear interpolation
140 G4int n = G4int( 0.1 * Z + 1.0 );
141 G4float x = ( 10 * n - Z ) * 0.1;
142 G4double ret_val = x * t[n - 2] + ( 1.0 - x ) * t[n-1];
143
144 return ret_val;
145}
float G4float
Definition: G4Types.hh:65

Referenced by G4BEDeuteronChannel::coulombFactor(), G4BEProtonChannel::coulombFactor(), and G4BETritonChannel::coulombFactor().

◆ emit()

virtual G4DynamicParticle * G4BEChargedChannel::emit ( )
pure virtual

◆ qmFactorForAlpha()

G4double G4BEChargedChannel::qmFactorForAlpha ( )

Definition at line 166 of file G4BEChargedChannel.cc.

167{
168// Coefficient k_alpha for empirical cross section formula presented
169// in Dostrovsky, Phys. Rev., vol. 116, 1959
170
171 G4double t[7] = { 0.77, 0.81, 0.85, 0.89, 0.93, 0.97, 1.00 };
173
174 if ( Z >= 70.0 ) return t[6];
175 if ( Z <= 10.0 ) return t[0];
176
177 // Linear interpolation
178 G4int n = G4int( 0.1 * Z + 1.0 );
179 G4float x = ( 10 * n - Z ) * 0.1;
180 return x * t[n - 2] + ( 1.0 - x ) * t[n-1];
181}

Referenced by G4BEHe3Channel::qmFactor(), and G4BEHe4Channel::qmFactor().

◆ qmFactorForProton()

G4double G4BEChargedChannel::qmFactorForProton ( )

Definition at line 148 of file G4BEChargedChannel.cc.

149{
150 // Coefficient k_p for empirical cross section formula are defined
151 // with the proton constant. See Dostrovsky, Phys. Rev., vol. 116,
152 // 1959
153 G4double t[7] = { 0.36, 0.51, 0.60, 0.66, 0.68, 0.69, 0.69 };
155
156 if ( Z >= 70.0 ) return t[6];
157 if ( Z <= 10.0 ) return t[0];
158
159 // Linear interpolation
160 G4int n = G4int( 0.1 * Z + 1.0 );
161 G4float x = ( 10 * n - Z ) * 0.1;
162 return x * t[n - 2] + ( 1.0 - x ) * t[n-1];
163}

Referenced by G4BEDeuteronChannel::qmFactor(), G4BEProtonChannel::qmFactor(), and G4BETritonChannel::qmFactor().

◆ sampleKineticEnergy()

G4double G4BEChargedChannel::sampleKineticEnergy ( )

Definition at line 94 of file G4BEChargedChannel.cc.

95{
96 G4double levelParam;
97 levelParam = getLevelDensityParameter();
98
99 const G4double xMax = excitationEnergy - getThresh() - correction; // maximum number
100 const G4double xProb = ( - 1 + std::sqrt ( 1 + 4 * levelParam * xMax ) ) / ( 2 * levelParam ); // most probable value
101 const G4double maxProb = xProb * std::exp ( 2 * std::sqrt ( levelParam * ( xMax - xProb ) ) ); // maximum value of P(x)
102
103 // Sample x according to density function P(x) with rejection method
104 G4double r1;
105 G4double r2;
106 G4int koe=0;
107 do
108 {
109 r1 = G4UniformRand() * xMax;
110 r2 = G4UniformRand() * maxProb;
111 koe++;
112 }
113 while ( r1 * std::exp ( 2 * std::sqrt ( levelParam * ( xMax - r1 ) ) ) < r2 );
114
115// G4cout << "Q ch " << koe << G4endl;
116 G4double kineticEnergy = r1 + getCoulomb(); // add coulomb potential;
117
118 if ( verboseLevel >= 10 )
119 G4cout << " G4BENeutronChannel : sampleKineticEnergy() " << G4endl
120 << " kinetic n e = " << kineticEnergy << G4endl
121 << " levelParam = " << levelParam << G4endl
122 << " thresh= " << getThresh() << G4endl;
123
124 return kineticEnergy;
125}
#define G4UniformRand()
Definition: Randomize.hh:53

Referenced by G4BEDeuteronChannel::emit(), G4BEHe3Channel::emit(), G4BEHe4Channel::emit(), G4BEProtonChannel::emit(), and G4BETritonChannel::emit().

Member Data Documentation

◆ A

◆ spin


The documentation for this class was generated from the following files: