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

#include <G4BENeutronChannel.hh>

+ Inheritance diagram for G4BENeutronChannel:

Public Member Functions

 G4BENeutronChannel ()
 
virtual ~G4BENeutronChannel ()
 
virtual void calculateProbability ()
 
G4DynamicParticleemit ()
 
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
 

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 &)
 
- 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
 

Detailed Description

Definition at line 37 of file G4BENeutronChannel.hh.

Constructor & Destructor Documentation

◆ G4BENeutronChannel()

G4BENeutronChannel::G4BENeutronChannel ( )

◆ ~G4BENeutronChannel()

G4BENeutronChannel::~G4BENeutronChannel ( )
virtual

Definition at line 57 of file G4BENeutronChannel.cc.

58{
59}

Member Function Documentation

◆ calculateProbability()

void G4BENeutronChannel::calculateProbability ( )
virtual

Implements G4BertiniEvaporationChannel.

Definition at line 62 of file G4BENeutronChannel.cc.

63{
64 const G4int residualZ = nucleusZ - particleZ;
65 const G4int residualA = nucleusA - particleA;
66
67 if ( nucleusA < 2.0 * particleA ||
68 nucleusZ < 2.0 * particleZ ||
69 residualA <= residualZ ||
71 {
72 if ( verboseLevel >= 6 )
73 G4cout << "G4BENeutronChannel : calculateProbability = 0 " << G4endl;
75 return;
76 }
77
78 // In HETC88 s-s0 was used in std::exp( s ), in which s0 was either 50 or
79 // max(s_i), where i goes over all channels.
80
81 const G4double levelParam = getLevelDensityParameter();
82
83 const G4double slevel = 2 * std::sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
84 const G4double eye0 = std::exp( slevel ) * ( slevel - 1 ) / ( 2 * levelParam );
85 const G4double eye1 = ( slevel*slevel - 3*slevel +3 ) * std::exp( slevel ) / ( 4 * levelParam*levelParam ) ;
86
87 emissionProbability = std::pow( G4double(residualA), 0.666666 ) * alpha() * ( eye1 + beta() * eye0 );
88
89 if ( verboseLevel >= 6 )
90 G4cout << "G4BENeutronChannel : calculateProbability " << G4endl
91 << " res A = " << residualA << G4endl
92 << " res Z = " << residualZ << G4endl
93 << " alpha = " << alpha() << G4endl
94 << " beta = " << beta() << G4endl
95 << " E = " << excitationEnergy << G4endl
96 << " correction = " << correction << G4endl
97 << " eye1 = " << eye1 << G4endl
98 << " eye0 = " << eye0 << G4endl
99 << " levelParam = " << levelParam << G4endl
100 << " thresh = " << getThresh() << G4endl
101 << " s = " << s << G4endl
102 << " probability = " << emissionProbability << G4endl;
103
104 return;
105}
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout

◆ emit()

G4DynamicParticle * G4BENeutronChannel::emit ( )
virtual

Implements G4BertiniEvaporationChannel.

Definition at line 150 of file G4BENeutronChannel.cc.

151{
152 G4double u;
153 G4double v;
154 G4double w;
155 G4DynamicParticle * pParticle = new G4DynamicParticle;
156
157 pParticle -> SetDefinition( G4Neutron::Neutron() );
158 pParticle -> SetKineticEnergy( sampleKineticEnergy() );
159 isotropicCosines( u, v, w );
160 pParticle -> SetMomentumDirection( u , v , w );
161
162 return pParticle;
163}
void isotropicCosines(G4double &, G4double &, G4double &)
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104

◆ sampleKineticEnergy()

G4double G4BENeutronChannel::sampleKineticEnergy ( )

Definition at line 108 of file G4BENeutronChannel.cc.

109{
110 ////////////////
111 // A random number is sampled from the density function
112 // P(x) = x * std::exp ( 2 std::sqrt ( a ( xMax - x ) ) ) [not normalized],
113 // x belongs to [ 0, xMax ]
114 // with the 'Hit or Miss' -method
115 // Kinetic energy is this energy scaled properly
116
117 G4double levelParam;
118 levelParam = getLevelDensityParameter();
119
120 const G4double xMax = excitationEnergy - getThresh() - correction + beta(); // maximum number
121 const G4double xProb = ( - 1 + std::sqrt ( 1 + 4 * levelParam * xMax ) ) / ( 2 * levelParam ); // most probable value
122 const G4double maxProb = xProb * std::exp ( 2 * std::sqrt ( levelParam * ( xMax - xProb ) ) ); // maximum value of P(x)
123
124 // Sample x according to density function P(x) with rejection method
125 G4double r1;
126 G4double r2;
127 G4int koe=0;
128 do
129 {
130 r1 = beta() + G4UniformRand() * ( xMax - beta() );
131 r2 = G4UniformRand() * maxProb;
132 koe++;
133 }
134 while ( r1 * std::exp ( 2 * std::sqrt ( levelParam * ( xMax - r1 ) ) ) < r2 );
135
136// G4cout << koe << G4endl;
137 G4double kineticEnergy = r1 - beta();
138
139 if ( verboseLevel >= 10 )
140 G4cout << " G4BENeutronChannel : sampleKineticEnergy() " << G4endl
141 << " kinetic n e = " << kineticEnergy << G4endl
142 << " levelParam = " << levelParam << G4endl
143 << " thresh= " << getThresh() << G4endl
144 << " beta= " << beta() << G4endl;
145
146 return kineticEnergy;
147}
#define G4UniformRand()
Definition: Randomize.hh:53

Referenced by emit().


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