142 G4cout<<
"Directly produced particles number "<<theSecondaries->size()<<
G4endl;
150 G4cout<<
"Final stable particles number "<<theSecondaries->size()<<
G4endl;
158 G4int numberOfEx = 0;
159 G4int numberOfCh = 0;
160 G4int numberOfHoles = 0;
169 G4KineticTrackVector::iterator iter;
170 for(iter=theSecondaries->begin(); iter !=theSecondaries->end(); ++iter)
173 G4double e = (*iter)->Get4Momentum().e();
174 G4double mass = (*iter)->Get4Momentum().mag();
176 if((part != proton && part != neutron) ||
177 ((*iter)->GetPosition().mag() > R)) {
184 theTotalResult->push_back(theNew);
185 Secondary4Momentum += (*iter)->Get4Momentum();
188 <<(*iter)->Get4Momentum().mag()<<
G4endl;
198 theTotalResult->push_back(theNew);
199 Secondary4Momentum += (*iter)->Get4Momentum();
202 <<(*iter)->Get4Momentum().mag()<<
G4endl;
212 captured4Momentum += (*iter)->Get4Momentum();
220 delete theSecondaries;
225 while(theCurrentNucleon)
242 G4cout<<
"Sec + Captured "<<Secondary4Momentum+captured4Momentum<<
G4endl;
245 <<Secondary4Momentum + captured4Momentum + Residual4Momentum <<
G4endl;
251 while(theCurrentNucleon)
267 {
G4cout<<
"Residual 4Mom = 0 means that there were not wounded and captured nucleons"<<
G4endl;}
271 if(anA == 0)
return theTotalResult;
281 exciton4Momentum = Residual4Momentum + captured4Momentum;
284 if(ActualMass <= fMass ) {
285 exciton4Momentum.
setE(std::sqrt(exciton4Momentum.
vect().
mag2()+
sqr(fMass)));
290 if(ActualMass <= fMass ) {exEnergy = 0.;}
291 else {exEnergy = ActualMass - fMass;}
292 G4cout<<
"Ground state residual Mass "<<fMass<<
" E* "<<exEnergy<<
G4endl;
311 G4cout<<
"ResidualMass, GroundStateMass and E* "<<ActualMass<<
" "<<fMass<<
" "
312 <<ActualMass - fMass<<
G4endl;
315 if(ActualMass - fMass < 0.)
318 exciton4Momentum.
setE(ResE);
320 G4cout<<
"ActualMass - fMass < 0. "<<ActualMass<<
" "<<fMass<<
" "<<ActualMass - fMass<<
G4endl;
326 G4Fragment anInitialState(anA, aZ, exciton4Momentum);
336 G4cout<<
"Target fragment number "<<aPrecoResult->size()<<
G4endl;
338 for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
340 theTotalResult->push_back(aPrecoResult->operator[](ll));
342 G4cout<<
"Fragment "<<ll<<
" "
343 <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" "
344 <<aPrecoResult->operator[](ll)->GetMomentum()<<
" "
345 <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" "
346 <<aPrecoResult->operator[](ll)->GetDefinition()->GetPDGMass()<<
G4endl;
352 return theTotalResult;
385 G4cout<<
"Projectile A and Z (and numberOfLambdas) "<<theProjectileNucleus->
GetMassNumber()<<
" "
386 <<theProjectileNucleus->
GetCharge()<<
" ("
391 G4cout<<
"Directly produced particles number "<<theSecondaries->size()<<
G4endl;
400 G4int numberOfEx = 0;
401 G4int numberOfCh = 0;
402 G4int numberOfHoles = 0;
410 while(theCurrentNucleon)
425 G4cout<<
"Residual Target A Z (numberOfLambdas) E* 4mom "<<anA<<
" "<<aZ<<
" (0"
426 <<
") "<<exEnergy<<
" "<<Target4Momentum<<
G4endl;
431 G4bool ProjectileIsAntiNucleus=
439 G4int numberOfExB = 0;
440 G4int numberOfChB = 0;
441 G4int numberOfHolesB = 0;
449 while(theCurrentNucleon)
455 if(!ProjectileIsAntiNucleus) {
465 Projectile4Momentum -=theCurrentNucleon->
Get4Momentum();
471 0.3*
G4double (numberOfHoles + anA);
473 0.3*
G4double (numberOfHolesB + anAb);
476 G4cout<<
"Projectile residual A Z (numberOfLambdas) E* 4mom "<<anAb<<
" "<<aZb<<
" ("<<aLb
477 <<
") "<<exEnergyB<<
" "<<Projectile4Momentum<<
G4endl;
478 G4cout<<
" ExistTargetRemnant ExistProjectileRemnant "
479 <<ExistTargetRemnant<<
" "<< ExistProjectileRemnant<<
G4endl;
489 G4cout<<
"Secondary stable particles number "<<theSecondaries->size()<<
G4endl;
505 G4KineticTrackVector::iterator iter;
506 for(iter=theSecondaries->begin(); iter !=theSecondaries->end(); ++iter)
511 if( part != proton && part != neutron &&
512 (part != ANTIproton && ProjectileIsAntiNucleus) &&
513 (part != ANTIneutron && ProjectileIsAntiNucleus) )
521 theTotalResult->push_back(theNew);
524 secondary4Momemtum += (*iter)->Get4Momentum();
525 G4cout<<
"Secondary "<<SecondrNum<<
" "
534 G4bool CanBeCapturedByTarget =
false;
535 if( part == proton || part == neutron)
537 CanBeCapturedByTarget = ExistTargetRemnant &&
539 (aTrack4Momentum + Target4Momentum).mag() -
540 aTrack4Momentum.
mag() - Target4Momentum.
mag()) &&
541 ((*iter)->GetPosition().mag() < R);
544 G4LorentzVector Position((*iter)->GetPosition(), (*iter)->GetFormationTime());
547 G4bool CanBeCapturedByProjectile =
false;
549 if( !ProjectileIsAntiNucleus &&
550 ( part == proton || part == neutron))
552 CanBeCapturedByProjectile = ExistProjectileRemnant &&
554 (aTrack4Momentum + Projectile4Momentum).mag() -
555 aTrack4Momentum.
mag() - Projectile4Momentum.
mag()) &&
556 (Position.vect().mag() < Rb);
559 if( ProjectileIsAntiNucleus &&
560 ( part == ANTIproton || part == ANTIneutron))
562 CanBeCapturedByProjectile = ExistProjectileRemnant &&
564 (aTrack4Momentum + Projectile4Momentum).mag() -
565 aTrack4Momentum.
mag() - Projectile4Momentum.
mag()) &&
566 (Position.vect().mag() < Rb);
569 if(CanBeCapturedByTarget && CanBeCapturedByProjectile)
572 { CanBeCapturedByTarget =
true; CanBeCapturedByProjectile =
false;}
574 { CanBeCapturedByTarget =
false; CanBeCapturedByProjectile =
true;}
577 if(CanBeCapturedByTarget)
584 <<aTrack4Momentum<<
" "<<aTrack4Momentum.
mag()<<
G4endl;
591 Target4Momentum +=aTrack4Momentum;
593 }
else if(CanBeCapturedByProjectile)
600 <<aTrack4Momentum<<
" "<<aTrack4Momentum.
mag()<<
G4endl;
605 if( ProjectileIsAntiNucleus ) Z=-Z;
608 Projectile4Momentum +=aTrack4Momentum;
618 theTotalResult->push_back(theNew);
622 secondary4Momemtum += (*iter)->Get4Momentum();
633 delete theSecondaries;
637 G4cout<<
"Final target residual A Z (numberOfLambdas) E* 4mom "<<anA<<
" "<<aZ<<
" (0"
638 <<
") "<<exEnergy<<
" "<<Target4Momentum<<
G4endl;
647 {Target4Momentum.
setE(fMass);}
653 RemnMass=fMass + exEnergy;
654 Target4Momentum.
setE(std::sqrt(Target4Momentum.
vect().
mag2() +
657 { exEnergy=RemnMass-fMass;}
659 if( exEnergy < 0.) exEnergy=0.;
662 G4Fragment anInitialState(anA, aZ, Target4Momentum);
672 G4cout<<
"Target fragment number "<<aPrecoResult->size()<<
G4endl;
676 for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
678 theTotalResult->push_back(aPrecoResult->operator[](ll));
680 G4cout<<
"Target fragment "<<ll<<
" "
681 <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" "
682 <<aPrecoResult->operator[](ll)->GetMomentum()<<
" "
683 <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" "
684 <<aPrecoResult->operator[](ll)->GetMass()<<
G4endl;
691 if((anAb == theProjectileNucleus->
GetMassNumber())&& (exEnergyB <= 0.))
695 G4cout<<
"Final projectile residual A Z (numberOfLambdas) E* Pmom Pmag2 "<<anAb<<
" "<<aZb<<
" ("
696 <<aLb<<
") "<<exEnergyB<<
" "<<Projectile4Momentum<<
" "
713 RemnMass=fMass + exEnergyB;
714 Projectile4Momentum.
setE(std::sqrt(Projectile4Momentum.
vect().
mag2() +
717 { exEnergyB=RemnMass-fMass;}
719 if( exEnergyB < 0.) exEnergyB=0.;
722 Projectile4Momentum.
boost(bstToCM);
725 G4Fragment anInitialState(anAb, aZb, aLb, Projectile4Momentum);
735 G4cout<<
"Projectile fragment number "<<aPrecoResult->size()<<
G4endl;
739 for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
742 aPrecoResult->operator[](ll)->GetTotalEnergy());
744 aPrecoResult->operator[](ll)->SetMomentum(tmp.
vect());
745 aPrecoResult->operator[](ll)->SetTotalEnergy(tmp.
e());
747 if(ProjectileIsAntiNucleus)
776 aPrecoResult->operator[](ll)->SetDefinitionAndUpdateE(LastFragment);
780 G4cout<<
"Projectile fragment "<<ll<<
" "
781 <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" "
782 <<aPrecoResult->operator[](ll)->GetMomentum()<<
" "
783 <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" "
784 <<aPrecoResult->operator[](ll)->GetMass()<<
G4endl;
787 theTotalResult->push_back(aPrecoResult->operator[](ll));
793 return theTotalResult;