161 G4double bmax_0 = std::sqrt( xs_0 / pi );
168 std::vector< G4QMDNucleus* > nucleuses;
177 G4double e1 = std::sqrt( p1*p1 + m1*m1 );
183 G4double beta_nncm = ( - boostLABtoCM.
beta() + boostLABtoNN.
beta() ) / ( 1 - boostLABtoCM.
beta() * boostLABtoNN.
beta() ) ;
191 boostToReac = boostLABtoNN;
192 boostBackToLAB = -boostLABtoNN;
197 G4int icounter_max = 1024;
201 if ( icounter > icounter_max ) {
202 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
208 G4double bmax = envelopF*(bmax_0/fermi);
220 calcOffSetOfCollision( b , proj_pd , targ_pd , plab , elab , bmax , boostCMtoNN );
270 , p0.
z() * coulomb_collision_gamma_targ + coulomb_collision_pz_targ );
274 , r0.
z() / coulomb_collision_gamma_targ + coulomb_collision_rz_targ );
300 , p0.
z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj );
304 , r0.
z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj );
328 , p0.
z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj );
332 , r0.
z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj );
351 for (
G4int i = 0 ; i < maxTime ; i++ )
358 if ( i / 10 * 10 == i )
383 if ( numberOfSecondary == 2 )
386 G4bool elasticLike_system =
false;
387 if ( nucleuses.size() == 2 )
390 sec_a_Z = nucleuses[0]->GetAtomicNumber();
391 sec_a_A = nucleuses[0]->GetMassNumber();
392 sec_b_Z = nucleuses[1]->GetAtomicNumber();
393 sec_b_A = nucleuses[1]->GetMassNumber();
395 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_Z == targ_Z && sec_b_A == targ_A )
396 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_Z == proj_Z && sec_b_A == proj_A ) )
398 elasticLike_system =
true;
402 else if ( nucleuses.size() == 1 )
405 sec_a_Z = nucleuses[0]->GetAtomicNumber();
406 sec_a_A = nucleuses[0]->GetMassNumber();
409 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_pd == targ_pd )
410 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_pd == proj_pd ) )
412 elasticLike_system =
true;
422 if ( ( sec_a_pd == proj_pd && sec_b_pd == targ_pd )
423 || ( sec_a_pd == targ_pd && sec_b_pd == proj_pd ) )
425 elasticLike_system =
true;
430 if ( elasticLike_system ==
true )
433 G4bool elasticLike_energy =
true;
435 for (
G4int i = 0 ; i < int ( nucleuses.size() ) ; i++ )
443 if ( nucleuses[i]->GetExcitationEnergy()*GeV > 1.0*MeV ) elasticLike_energy =
false;
448 G4bool withCollision =
true;
460 if ( elasticLike_energy ==
false ) elastic =
false;
462 if ( elasticLike_energy ==
false && withCollision ==
true ) elastic =
false;
479 if ( elastic ==
true )
482 for ( std::vector< G4QMDNucleus* >::iterator
483 it = nucleuses.begin() ; it != nucleuses.end() ; it++ )
495 for ( std::vector< G4QMDNucleus* >::iterator it
496 = nucleuses.begin() ; it != nucleuses.end() ; it++ )
517 if ( (*it)->GetAtomicNumber() == 0
518 || (*it)->GetAtomicNumber() == (*it)->GetMassNumber() )
521 for (
G4int i = 0 ; i < (*it)->GetTotalNumberOfParticipant() ; i++ )
523 G4QMDParticipant* aP =
new G4QMDParticipant( ( (*it)->GetParticipant( i ) )->GetDefinition() , ( (*it)->GetParticipant( i ) )->GetMomentum() , ( (*it)->GetParticipant( i ) )->GetPosition() );
530 G4LorentzVector nucleus_p4CM ( (*it)->Get4Momentum().vect() , nucleus_e );
534 G4int ia = (*it)->GetMassNumber();
535 G4int iz = (*it)->GetAtomicNumber();
542 rv = excitationHandler->
BreakItUp( *aFragment );
544 for ( G4ReactionProductVector::iterator itt
545 = rv->begin() ; itt != rv->end() ; itt++ )
552 G4LorentzVector p4 ( (*itt)->GetMomentum()/GeV , (*itt)->GetTotalEnergy()/GeV );
569 randomized_direction = randomized_direction.
unit();
618 if ( notBreak ==
true )
630 for ( G4ReactionProductVector::iterator itt
631 = rv->begin() ; itt != rv->end() ; itt++ )
663 for ( std::vector< G4QMDNucleus* >::iterator it
664 = nucleuses.begin() ; it != nucleuses.end() ; it++ )