136{
137
138
139
142
143
144
145
146
157
158
159
162 G4cout <<
"########################################"
163 <<"########################################"
166 G4cout <<
"Initial projectile A=" <<AP
167 <<", Z=" <<ZP
169 G4cout <<
"Initial target A=" <<AT
170 <<", Z=" <<ZT
172 G4cout <<
"Projectile momentum and Energy/nuc = " <<pP <<
" ," <<E <<
G4endl;
173 }
174
175
176
177
183
184
185
186
187
188
191 GetCrossSectionForProjectile(AP, ZP, AT, ZT, b, bmin);
193 GetCrossSectionForTarget(AP, ZP, AT, ZT, b, bmin);
194
195 G4double totCrossSectionP = (*crossSectionP)[0]+(*crossSectionP)[1];
196 G4double totCrossSectionT = (*crossSectionT)[0]+(*crossSectionT)[1];
197
198
199
200
202 totCrossSectionP / (totCrossSectionP + totCrossSectionT)) {
203
204
205
206
207
208
209
210 mass = MP;
212 GetWilsonProbabilityForProtonDissociation (AP, ZP))
213 {
215 G4cout <<
"Projectile underwent EM dissociation producing a proton"
220 }
221 else
222 {
224 G4cout <<
"Projectile underwent EM dissociation producing a neutron"
229 }
231 {
235 }
236 else
237 {
241 }
242
243
244
245
246
247 pP.
setE( std::sqrt( pP.
vect().
mag2() + (mass + Eg)*(mass + Eg) ) );
249 }
250 else
251 {
252
253
254
255
256
259 GetWilsonProbabilityForProtonDissociation (AT, ZT))
260 {
262 G4cout <<
"Target underwent EM dissociation producing a proton"
267 }
268 else
269 {
271 G4cout <<
"Target underwent EM dissociation producing a neutron"
276 }
278 {
282 }
283 else
284 {
288 }
289
290
291
292
293
299 {
302 }
303 }
304
305
306
307
308
309
310
314 G4double pp = (e+mass1+mass2)*(e+mass1-mass2)*
315 (e-mass1+mass2)*(e-mass1-mass2)/(4.0*e*e);
316 if (pp < 0.0) {
318
319
320
321
322
323
324
325
326
327 }
328 else
331 G4double sintheta = std::sqrt((1.0 - costheta)*(1.0 + costheta));
333 G4ThreeVector direction(sintheta*std::cos(phi),sintheta*std::sin(phi),costheta);
340
341
342
343
348 }
349
353
355 G4cout <<
"Dynamic properties of the prefragment:" <<
G4endl;
358 G4cout <<
"Nuclear properties of the prefragment:" <<
G4endl;
360 }
361
363 theExcitationHandler->
BreakItUp(*theFragment);
364 delete theFragment;
365 theFragment = NULL;
366
368 G4ReactionProductVector::iterator iter;
369 for (iter = products->begin(); iter != products->end(); ++iter) {
371 (*iter)->GetTotalEnergy(), (*iter)->GetMomentum());
373 }
374 delete products;
375
376 delete crossSectionP;
377 delete crossSectionT;
378
380 G4cout <<
"########################################"
381 <<"########################################"
383
385}
std::vector< G4ReactionProduct * > G4ReactionProductVector
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
HepLorentzVector & boost(double, double, double)
Hep3Vector findBoostToCM() const
void DumpInfo(G4int mode=0) const
G4LorentzVector Get4Momentum() const
void Set4Momentum(const G4LorentzVector &momentum)
G4double GetClosestApproach(const G4double, const G4double, G4double, G4double, G4double)
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4HadFinalState theParticleChange
static G4IonTable * GetIonTable()
static G4Neutron * NeutronDefinition()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetPDGMass() const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const
G4double GetLowEdgeEnergy(std::size_t binNumber) const
static G4Proton * ProtonDefinition()