359    G4cout<<
"Directly produced particles number "<<theSecondaries->size()<<
G4endl;
   367    G4int numberOfEx = 0;
   368    G4int numberOfCh = 0;
   369    G4int numberOfHoles = 0;
   377    while(theCurrentNucleon)   
   392    G4cout<<
"Residual Target A Z E* 4mom "<<anA<<
" "<<aZ<<
" "<<exEnergy<<
" "   393          <<Target4Momentum<<
G4endl;
   398    G4bool ProjectileIsAntiNucleus=
   405    G4int numberOfExB = 0;
   406    G4int numberOfChB = 0;
   407    G4int numberOfHolesB = 0;
   415    while(theCurrentNucleon)    
   421          if(!ProjectileIsAntiNucleus) {
   429          Projectile4Momentum -=theCurrentNucleon->
Get4Momentum();
   435          0.3* 
G4double (numberOfHoles + anA);
   437          0.3*
G4double (numberOfHolesB + anAb);
   440    G4cout<<
"Projectile residual A Z E* 4mom "<<anAb<<
" "<<aZb<<
" "<<exEnergyB<<
" "   441          <<Projectile4Momentum<<
G4endl;
   442    G4cout<<
" ExistTargetRemnant ExistProjectileRemnant "   443          <<ExistTargetRemnant<<
" "<< ExistProjectileRemnant<<
G4endl;
   450       G4cout<<
"Secondary stable particles number "<<theSecondaries->size()<<
G4endl;
   459    G4KineticTrackVector::iterator iter;
   460    for(iter=theSecondaries->begin(); iter !=theSecondaries->end(); ++iter)
   466             (part != 
ANTIproton  && ProjectileIsAntiNucleus) &&
   472          theTotalResult->push_back(theNew);
   475          secondary4Momemtum += (*iter)->Get4Momentum();
   476          G4cout<<
"Secondary  "<<SecondrNum<<
" "   485       G4bool CanBeCapturedByTarget = 
false;
   488          CanBeCapturedByTarget = ExistTargetRemnant    &&
   490               (aTrack4Momentum       + Target4Momentum).mag() -
   491                aTrack4Momentum.
mag() - Target4Momentum.mag())   &&
   492                    ((*iter)->GetPosition().mag() < R);
   495       G4LorentzVector Position((*iter)->GetPosition(), (*iter)->GetFormationTime());
   498       G4bool CanBeCapturedByProjectile = 
false;
   500       if( !ProjectileIsAntiNucleus &&
   503          CanBeCapturedByProjectile = ExistProjectileRemnant &&
   505               (aTrack4Momentum       + Projectile4Momentum).mag() -
   506                aTrack4Momentum.
mag() - Projectile4Momentum.mag())    &&
   507                    (Position.vect().mag() < Rb);
   510       if( ProjectileIsAntiNucleus &&
   513          CanBeCapturedByProjectile = ExistProjectileRemnant &&
   515               (aTrack4Momentum       + Projectile4Momentum).mag() -
   516                aTrack4Momentum.
mag() - Projectile4Momentum.mag())    &&
   517                    (Position.vect().mag() < Rb);
   520       if(CanBeCapturedByTarget && CanBeCapturedByProjectile)
   523          { CanBeCapturedByTarget = 
true; CanBeCapturedByProjectile = 
false;}
   525          { CanBeCapturedByTarget = 
false; CanBeCapturedByProjectile = 
true;}
   528       if(CanBeCapturedByTarget)
   535                <<aTrack4Momentum<<
" "<<aTrack4Momentum.
mag()<<
G4endl;
   542          Target4Momentum +=aTrack4Momentum;
   544       } 
else if(CanBeCapturedByProjectile)
   551                <<aTrack4Momentum<<
" "<<aTrack4Momentum.
mag()<<
G4endl;
   556          if( ProjectileIsAntiNucleus ) Z=-
Z;
   559          Projectile4Momentum +=aTrack4Momentum;
   566          theTotalResult->push_back(theNew);
   570          secondary4Momemtum += (*iter)->Get4Momentum();
   581    delete theSecondaries;
   585       G4cout<<
"Final target residual A Z E* 4mom "<<anA<<
" "<<aZ<<
" "   586            <<exEnergy<<
" "<<Target4Momentum<<
G4endl;
   594       {Target4Momentum.setE(fMass);}
   596       G4double RemnMass=Target4Momentum.mag();
   600          RemnMass=fMass + exEnergy;
   601          Target4Momentum.setE(std::sqrt(Target4Momentum.vect().mag2() +
   604       { exEnergy=RemnMass-fMass;}
   606       if( exEnergy < 0.) exEnergy=0.;
   609       G4Fragment anInitialState(anA, aZ, Target4Momentum);
   610       anInitialState.SetNumberOfParticles(numberOfEx-numberOfHoles);
   611       anInitialState.SetNumberOfCharged(numberOfCh);
   612       anInitialState.SetNumberOfHoles(numberOfHoles);
   618          G4cout<<
"Target fragment number "<<aPrecoResult->size()<<
G4endl;
   622       for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
   624          theTotalResult->push_back(aPrecoResult->operator[](ll));
   626             G4cout<<
"Target fragment "<<ll<<
" "   627                   <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" "   628                   <<aPrecoResult->operator[](ll)->GetMomentum()<<
" "   629                   <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" "   630                   <<aPrecoResult->operator[](ll)->GetMass()<<
G4endl;
   637    if((anAb == theProjectileNucleus->
GetMassNumber())&& (exEnergyB <= 0.))
   641       G4cout<<
"Final projectile residual A Z E* Pmom Pmag2 "<<anAb<<
" "<<aZb<<
" "   642             <<exEnergyB<<
" "<<Projectile4Momentum<<
" "   643                             <<Projectile4Momentum.mag2()<<
G4endl;
   652       G4double RemnMass=Projectile4Momentum.mag();
   656          RemnMass=fMass + exEnergyB;
   657          Projectile4Momentum.setE(std::sqrt(Projectile4Momentum.vect().mag2() + 
   660       { exEnergyB=RemnMass-fMass;}
   662       if( exEnergyB < 0.) exEnergyB=0.;
   665       Projectile4Momentum.boost(bstToCM);                               
   668       G4Fragment anInitialState(anAb, aZb, Projectile4Momentum);
   669       anInitialState.SetNumberOfParticles(numberOfExB-numberOfHolesB);
   670       anInitialState.SetNumberOfCharged(numberOfChB);
   671       anInitialState.SetNumberOfHoles(numberOfHolesB);
   677          G4cout<<
"Projectile fragment number "<<aPrecoResult->size()<<
G4endl;
   681       for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
   684                                              aPrecoResult->operator[](ll)->GetTotalEnergy());
   686          aPrecoResult->operator[](ll)->SetMomentum(tmp.
vect());                              
   687          aPrecoResult->operator[](ll)->SetTotalEnergy(tmp.
e());                              
   689          if(ProjectileIsAntiNucleus)
   701             aPrecoResult->operator[](ll)->SetDefinitionAndUpdateE(LastFragment);
   705             G4cout<<
"Projectile fragment "<<ll<<
" "   706                   <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" "   707                   <<aPrecoResult->operator[](ll)->GetMomentum()<<
" "   708                   <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" "   709                   <<aPrecoResult->operator[](ll)->GetMass()<<
G4endl;
   712          theTotalResult->push_back(aPrecoResult->operator[](ll));
   718    return theTotalResult;
 static G4AntiTriton * AntiTritonDefinition()
 
const G4ParticleDefinition * proton
 
static G4double GetNuclearMass(const G4double A, const G4double Z)
 
G4int GetBaryonNumber() const
 
virtual G4int GetCharge()=0
 
const G4ParticleDefinition * He3
 
const G4ParticleDefinition * deuteron
 
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0
 
virtual G4double GetNuclearRadius()=0
 
virtual G4bool StartLoop()=0
 
const G4ParticleDefinition * He4
 
const G4LorentzVector & Get4Momentum() const
 
void SetMomentum(const G4double x, const G4double y, const G4double z)
 
virtual G4int GetMassNumber()=0
 
const G4ParticleDefinition * neutron
 
static G4AntiDeuteron * AntiDeuteronDefinition()
 
const G4ParticleDefinition * triton
 
static G4AntiProton * AntiProtonDefinition()
 
const G4HadProjectile * GetPrimaryProjectile() const
 
static G4AntiNeutron * AntiNeutronDefinition()
 
virtual const G4LorentzVector & Get4Momentum() const
 
std::vector< G4ReactionProduct * > G4ReactionProductVector
 
const G4String & GetParticleName() const
 
G4GLOB_DLL std::ostream G4cout
 
virtual const G4ParticleDefinition * GetDefinition() const
 
ParticleList decay(Cluster *const c)
Carries out a cluster decay. 
 
HepLorentzVector & boost(double, double, double)
 
void SetTotalEnergy(const G4double en)
 
static G4AntiHe3 * AntiHe3Definition()
 
G4double G4Log(G4double x)
 
const G4ParticleDefinition * GetDefinition() const
 
G4double GetBindingEnergy() const
 
Hep3Vector boostVector() const
 
const G4ParticleDefinition * GetDefinition() const
 
G4double GetTotalEnergy() const
 
G4VPreCompoundModel * theDeExcitation
 
static G4AntiAlpha * AntiAlphaDefinition()
 
virtual G4Nucleon * GetNextNucleon()=0
 
const G4ParticleDefinition * ANTIneutron
 
static const double eplus
 
const G4ParticleDefinition * ANTIproton
 
G4double GetPDGCharge() const
 
G4double CaptureThreshold
 
G4ThreeVector GetMomentum() const
 
CLHEP::HepLorentzVector G4LorentzVector