119{
121
123
124
125 for (
G4int i = 0 ; i <
n ; i++ )
126 {
129
130 }
131
132
133
134
135 for (
G4int i = 0 ; i <
n ; i++ )
136 {
137
138
139
141 {
142
144
148
150
152
155
156 G4bool isThisEnergyOK =
false;
157
158 G4int maximumNumberOfTrial=4;
159 for (
G4int ii = 0 ; ii < maximumNumberOfTrial ; ii++ )
160 {
161
162
164
165 p400 *= GeV;
166
168
170 secs = kt.Decay();
173 if ( secs )
174 {
175 for ( G4KineticTrackVector::iterator it
176 = secs->begin() ; it != secs->end() ; it++ )
177 {
178
179
180
181
182
183
184
185 if ( id == 0 )
186 {
190
191 et += (*it)->Get4Momentum().e()/GeV;
192 }
193 if ( id > 0 )
194 {
195
197 et += (*it)->Get4Momentum().e()/GeV;
198 if ( id > 1 )
199 {
200
201
202 }
203 }
204 id++;
205
206 delete *it;
207 }
208
210 i0 = id-1;
211
212 delete secs;
213 }
214
215
216
218
219
220
221 if ( std::abs ( eini - efin ) < fepse*10 )
222 {
223
224 isThisEnergyOK = true;
225 break;
226 }
227 else
228 {
229
233
234
235
236 for (
G4int i0i =
id-2 ; 0 <= i0i ; i0i-- ) {
237
238
240 }
241
243 }
244
245 }
246
247
248
249 if ( isThisEnergyOK == true )
250 {
252 {
253
255 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
256 {
258 {
259 allOK = false;
260 break;
261 }
262 }
263
264 if ( allOK )
265 {
266 decayed = true;
267 }
268 }
269
270 }
271
272
273 if ( decayed )
274 {
275
276
278 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
279 {
281 }
282
283 }
284 else
285 {
286
287
288
289 if ( isThisEnergyOK == true )
290 {
291
295
296 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
297 {
298
299
300
302 }
303
305 }
306
307 }
308
309 }
310 }
311
312
313
315
316
317
319 {
320
321
323
328
330
331
332 for (
G4int j = 0 ; j < i ; j++ )
333 {
334
335
336
337
338
339
340
341
342
343
344
347
348
349
350
352 {
354 }
356 {
358 }
359
360
365
367
369
370
371 if ( rr2 > fdeltar*fdeltar ) continue;
372
373
374
375
376 G4double srt = std::sqrt( (p4i+p4j)*(p4i+p4j) );
377
380
381
382
383 if ( rmi < 0.94 && rmj < 0.94 )
384 {
385
386 cutoff = rmi + rmj + 0.02;
387 fbcmax = fbcmax0;
388
389
390 }
391 else
392 {
393 cutoff = rmi + rmj;
394 fbcmax = fbcmax1;
395
396
397 }
398
399
400 if ( srt < cutoff ) continue;
401
404
408
409 G4double aij = 1.0 - ( rmi*rmj /pij ) * ( rmi*rmj /pij );
410 G4double bij = pidr / rmi - pjdr*rmi/pij;
411 G4double cij = rsq + ( pidr / rmi ) * ( pidr / rmi );
412 G4double brel = std::sqrt ( std::abs ( cij - bij*bij/aij ) );
413
414 if ( brel > fbcmax ) continue;
415
416
417 G4double bji = -pjdr/rmj + pidr * rmj /pij;
418
419 G4double ti = ( pidr/rmi - bij / aij ) * p4i.
e() / rmi;
420 G4double tj = (-pjdr/rmj - bji / aij ) * p4j.e() / rmj;
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437 if ( std::abs ( ti + tj ) > deltaT ) continue;
438
439
441
445
447
448 if ( prcm <= 0.00001 ) continue;
449
450
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479 if ( energetically_forbidden == true )
480 {
481
482
483
484
485
489
493
496
497 }
498 else
499 {
500
501
502 G4bool absorption =
false;
504 if ( absorption )
505 {
506
507 i = i-1;
509 }
510
511
512
513
516
519
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548 }
549
550 }
551
552 }
553
554
555}
HepLorentzVector & boost(double, double, double)
Hep3Vector findBoostToCM() const
G4bool IsShortLived() const
G4double GetPDGMass() const
G4bool CalFinalStateOfTheBinaryCollision(G4int, G4int)
G4double GetRR2(G4int i, G4int j)
void SetPosition(G4ThreeVector r)
G4ThreeVector GetMomentum()
G4bool IsThisProjectile()
G4int GetTotalNumberOfParticipant()
void DeleteParticipant(G4int i)
void SetParticipant(G4QMDParticipant *particle)
void IncrementCollisionCounter()