105{
106
109 if (thePreFragment == nullptr)
110 {
111 G4cout <<
"G4PreCompoundEmission::PerformEmission : "
112 << "I couldn't choose a fragment\n"
113 << "while trying to de-excite\n"
116 }
117
118
119
120
121
123 kinEnergy = std::max(kinEnergy, 0.0);
124
125
126 if(fUseAngularGenerator) {
127 AngularDistribution(thePreFragment,aFragment,kinEnergy);
128 } else {
130 std::sqrt(kinEnergy*(kinEnergy + 2.0*thePreFragment->
GetNuclearMass()));
132 }
133
134
136
137
138 G4LorentzVector Emitted4Momentum(theFinalMomentum,EmittedMass + kinEnergy);
139
140
143
144
146
147
148
149
150 Rest4Momentum -= Emitted4Momentum;
151
152
153
154
155
158
159
161 thePreFragment->
GetA());
162
164 thePreFragment->
GetZ());
165
166
167
169
170
172
173
176
177 return MyRP;
178}
G4ThreeVector G4RandomDirection()
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
G4int GetNumberOfParticles() const
void SetZandA_asInt(G4int Znew, G4int Anew, G4int Lnew=0)
void SetNumberOfCharged(G4int value)
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
void SetMomentum(const G4LorentzVector &value)
void SetNumberOfParticles(G4int value)
G4int GetNumberOfCharged() const
G4VPreCompoundFragment * ChooseFragment()
void SetCreatorModelID(const G4int mod)
G4double GetNuclearMass() const
void SetMomentum(const G4LorentzVector &lv)
virtual G4double SampleKineticEnergy(const G4Fragment &)=0
G4ReactionProduct * GetReactionProduct() const