149{
150
151
152
155
156
157
158
159
170
171
172
175 G4cout <<
"########################################"
176 <<"########################################"
179 G4cout <<
"Initial projectile A=" <<AP
180 <<", Z=" <<ZP
182 G4cout <<
"Initial target A=" <<AT
183 <<", Z=" <<ZT
185 G4cout <<
"Projectile momentum and Energy/nuc = " <<pP <<
" ," <<E <<
G4endl;
186 }
187
188
189
190
196
197
198
199
200
201
204 GetCrossSectionForProjectile(AP, ZP, AT, ZT, b, bmin);
206 GetCrossSectionForTarget(AP, ZP, AT, ZT, b, bmin);
207
208 G4double totCrossSectionP = (*crossSectionP)[0]+(*crossSectionP)[1];
209 G4double totCrossSectionT = (*crossSectionT)[0]+(*crossSectionT)[1];
210
211
212
213
216 totCrossSectionP / (totCrossSectionP + totCrossSectionT)) {
217
218
219
220
221
222
223
224 secID = secID_projectileDissociation;
225 mass = MP;
227 GetWilsonProbabilityForProtonDissociation (AP, ZP))
228 {
230 G4cout <<
"Projectile underwent EM dissociation producing a proton"
235 }
236 else
237 {
239 G4cout <<
"Projectile underwent EM dissociation producing a neutron"
244 }
246 {
250 }
251 else
252 {
256 }
257
258
259
260
261
262 pP.
setE( std::sqrt( pP.
vect().
mag2() + (mass + Eg)*(mass + Eg) ) );
264 }
265 else
266 {
267
268
269
270
271
272 secID = secID_targetDissociation;
275 GetWilsonProbabilityForProtonDissociation (AT, ZT))
276 {
278 G4cout <<
"Target underwent EM dissociation producing a proton"
283 }
284 else
285 {
287 G4cout <<
"Target underwent EM dissociation producing a neutron"
292 }
294 {
298 }
299 else
300 {
304 }
305
306
307
308
309
315 {
318 }
319 }
320
321
322
323
324
325
326
330 G4double pp = (e+mass1+mass2)*(e+mass1-mass2)*
331 (e-mass1+mass2)*(e-mass1-mass2)/(4.0*e*e);
332 if (pp < 0.0) {
334
335
336
337
338
339
340
341
342
343 }
344 else
347 G4double sintheta = std::sqrt((1.0 - costheta)*(1.0 + costheta));
349 G4ThreeVector direction(sintheta*std::cos(phi),sintheta*std::sin(phi),costheta);
356
357
358
359
364 }
365
370
372 G4cout <<
"Dynamic properties of the prefragment:" <<
G4endl;
375 G4cout <<
"Nuclear properties of the prefragment:" <<
G4endl;
377 }
378
380 theExcitationHandler->
BreakItUp(*theFragment);
381 delete theFragment;
382 theFragment = NULL;
383
385 G4ReactionProductVector::iterator iter;
386 for (iter = products->begin(); iter != products->end(); ++iter) {
388 (*iter)->GetTotalEnergy(), (*iter)->GetMomentum());
390 }
391 delete products;
392
393 delete crossSectionP;
394 delete crossSectionT;
395
397 G4cout <<
"########################################"
398 <<"########################################"
400
402}
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(const std::size_t index) const
static G4Proton * ProtonDefinition()