60{
62
64
65
66 for (
G4int i = 0 ; i <
n ; i++ )
67 {
70
71 }
72
73
74
75
76 for (
G4int i = 0 ; i <
n ; i++ )
77 {
78
79
80
82 {
83
85
89
91
93
96
97 G4bool isThisEnergyOK =
false;
98
99 for (
G4int ii = 0 ; ii < 4 ; ii++ )
100 {
101
102
104
105 p400 *= GeV;
106
108
110 secs = kt.Decay();
113 if ( secs )
114 {
115 for ( G4KineticTrackVector::iterator it
116 = secs->begin() ; it != secs->end() ; it++ )
117 {
118
119
120
121
122
123
124
125 if ( id == 0 )
126 {
130
131 et += (*it)->Get4Momentum().e()/GeV;
132 }
133 if ( id > 0 )
134 {
135
137 et += (*it)->Get4Momentum().e()/GeV;
138 if ( id > 1 )
139 {
140
141
142 }
143 }
144 id++;
145
146 delete *it;
147 }
148
150 i0 = id-1;
151
152 delete secs;
153 }
154
155
156
158
159
160
161 if ( std::abs ( eini - efin ) < epse*10 )
162 {
163
164 isThisEnergyOK = true;
165 break;
166 }
167 else
168 {
169
173
174 for (
G4int i0i = 0 ; i0i <
id-1 ; i0i++ )
175 {
176
177
179 }
180
182 }
183
184 }
185
186
187
188 if ( isThisEnergyOK == true )
189 {
191 {
192
194 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
195 {
197 {
198 allOK = false;
199 break;
200 }
201 }
202
203 if ( allOK )
204 {
205 decayed = true;
206 }
207 }
208
209 }
210
211
212 if ( decayed )
213 {
214
215
217 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
218 {
220 }
221
222 }
223 else
224 {
225
226
227
228 if ( isThisEnergyOK == true )
229 {
230
234
235 for (
G4int i0i = 0 ; i0i < i0 ; i0i++ )
236 {
237
238
240 }
241
243 }
244
245 }
246
247 }
248 }
249
250
251
253
254
255
257 {
258
259
261
266
268
269
270 for (
G4int j = 0 ; j < i ; j++ )
271 {
272
273
274
275
276
277
278
279
280
281
282
285
286
287
288
290 {
292 }
294 {
296 }
297
298
303
305
307
308
309 if ( rr2 > deltar*deltar ) continue;
310
311
312
313
314 G4double srt = std::sqrt( (p4i+p4j)*(p4i+p4j) );
315
318
319
320
321 if ( rmi < 0.94 && rmj < 0.94 )
322 {
323
324 cutoff = rmi + rmj + 0.02;
325 bcmax = bcmax0;
326
327
328 }
329 else
330 {
331 cutoff = rmi + rmj;
332 bcmax = bcmax1;
333
334
335 }
336
337
338 if ( srt < cutoff ) continue;
339
342
346
347 G4double aij = 1.0 - ( rmi*rmj /pij ) * ( rmi*rmj /pij );
348 G4double bij = pidr / rmi - pjdr*rmi/pij;
349 G4double cij = rsq + ( pidr / rmi ) * ( pidr / rmi );
350 G4double brel = std::sqrt ( std::abs ( cij - bij*bij/aij ) );
351
352 if ( brel > bcmax ) continue;
353
354
355 G4double bji = -pjdr/rmj + pidr * rmj /pij;
356
357 G4double ti = ( pidr/rmi - bij / aij ) * p4i.
e() / rmi;
358 G4double tj = (-pjdr/rmj - bji / aij ) * p4j.e() / rmj;
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375 if ( std::abs ( ti + tj ) > deltaT ) continue;
376
377
379
383
385
386 if ( prcm <= 0.00001 ) continue;
387
388
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417 if ( energetically_forbidden == true )
418 {
419
420
421
422
423
427
431
434
435 }
436 else
437 {
438
439
440 G4bool absorption =
false;
442 if ( absorption )
443 {
444
445 i = i-1;
447 }
448
449
450
451
454
457
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486 }
487
488 }
489
490 }
491
492
493}
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()