180 G4double bmax_0 = std::sqrt( xs_0 / pi );
187 std::vector< G4LightIonQMDNucleus* > nucleuses;
196 G4double e1 = std::sqrt( p1*p1 + m1*m1 );
202 G4double beta_nncm = ( - boostLABtoCM.
beta() + boostLABtoNN.
beta() ) / ( 1 - boostLABtoCM.
beta() * boostLABtoNN.
beta() ) ;
210 boostToReac = boostLABtoNN;
211 boostBackToLAB = -boostLABtoNN;
215 G4int icounter_max = 1024;
219 if ( icounter > icounter_max ) {
220 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
226 G4double bmax = envelopF*(bmax_0/fermi);
238 calcOffSetOfCollision( b , proj_pd , targ_pd , plab , elab , bmax , boostCMtoNN );
291 , p0.
z() * coulomb_collision_gamma_targ + coulomb_collision_pz_targ );
295 , r0.
z() / coulomb_collision_gamma_targ + coulomb_collision_rz_targ );
321 , p0.
z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj );
325 , r0.
z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj );
349 , p0.
z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj );
353 , r0.
z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj );
372 for (
G4int i = 0 ; i < maxTime ; i++ )
404 if ( numberOfSecondary == 2 )
407 G4bool elasticLike_system =
false;
408 if ( nucleuses.size() == 2 )
411 sec_a_Z = nucleuses[0]->GetAtomicNumber();
412 sec_a_A = nucleuses[0]->GetMassNumber();
413 sec_b_Z = nucleuses[1]->GetAtomicNumber();
414 sec_b_A = nucleuses[1]->GetMassNumber();
416 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_Z == targ_Z && sec_b_A == targ_A )
417 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_Z == proj_Z && sec_b_A == proj_A ) )
419 elasticLike_system =
true;
423 else if ( nucleuses.size() == 1 )
426 sec_a_Z = nucleuses[0]->GetAtomicNumber();
427 sec_a_A = nucleuses[0]->GetMassNumber();
430 if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_pd == targ_pd )
431 || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_pd == proj_pd ) )
433 elasticLike_system =
true;
443 if ( ( sec_a_pd == proj_pd && sec_b_pd == targ_pd )
444 || ( sec_a_pd == targ_pd && sec_b_pd == proj_pd ) )
446 elasticLike_system =
true;
454 elasticLike_system =
false;
456 if ( system->
GetNOCollision() == 1 || icounter+900 > icounter_max) elastic =
false;
461 if ( elasticLike_system ==
true )
464 G4bool elasticLike_energy =
true;
466 for (
G4int i = 0 ; i < int ( nucleuses.size() ) ; i++ )
474 if ( nucleuses[i]->GetExcitationEnergy()*GeV > 1.0*MeV ) elasticLike_energy =
false;
479 G4bool withCollision =
true;
491 if ( elasticLike_energy ==
false ) elastic =
false;
493 if ( elasticLike_energy ==
false && withCollision ==
true ) elastic =
false;
510 if ( elastic ==
true )
513 for ( std::vector< G4LightIonQMDNucleus* >::iterator
514 it = nucleuses.begin() ; it != nucleuses.end() ; it++ )
528 for ( std::vector< G4LightIonQMDNucleus* >::iterator it
529 = nucleuses.begin() ; it != nucleuses.end() ; it++ )
550 if ( (*it)->GetAtomicNumber() == 0
551 || (*it)->GetAtomicNumber() == (*it)->GetMassNumber() )
554 for (
G4int i = 0 ; i < (*it)->GetTotalNumberOfParticipant() ; i++ )
556 G4QMDParticipant* aP =
new G4QMDParticipant( ( (*it)->GetParticipant( i ) )->GetDefinition() , ( (*it)->GetParticipant( i ) )->GetMomentum() , ( (*it)->GetParticipant( i ) )->GetPosition() );
563 G4LorentzVector nucleus_p4CM ( (*it)->Get4Momentum().vect() , nucleus_e );
567 G4int ia = (*it)->GetMassNumber();
568 G4int iz = (*it)->GetAtomicNumber();
575 rv = excitationHandler->
BreakItUp( *aFragment );
577 for ( G4ReactionProductVector::iterator itt
578 = rv->begin() ; itt != rv->end() ; itt++ )
585 G4LorentzVector p4 ( (*itt)->GetMomentum()/GeV , (*itt)->GetTotalEnergy()/GeV );
602 randomized_direction = randomized_direction.
unit();
651 if ( notBreak ==
true )
663 for ( G4ReactionProductVector::iterator itt
664 = rv->begin() ; itt != rv->end() ; itt++ )
696 for ( std::vector< G4LightIonQMDNucleus* >::iterator it
697 = nucleuses.begin() ; it != nucleuses.end() ; it++ )