80 : CaptureThreshold(70*
MeV)   
 
  118       G4cout<<
"Directly produced particles number "<<theSecondaries->size()<<
G4endl;
 
  126       G4cout<<
"Final stable particles number "<<theSecondaries->size()<<
G4endl;
 
  134    G4int numberOfEx = 0;
 
  135    G4int numberOfCh = 0;
 
  136    G4int numberOfHoles = 0;
 
  145    G4KineticTrackVector::iterator iter;
 
  146    for(iter=theSecondaries->begin(); iter !=theSecondaries->end(); ++iter)
 
  149       G4double e = (*iter)->Get4Momentum().e();
 
  150       G4double mass = (*iter)->Get4Momentum().mag();
 
  154             ((*iter)->GetPosition().mag() > R)) {
 
  158          theTotalResult->push_back(theNew);
 
  159          Secondary4Momentum += (*iter)->Get4Momentum();                 
 
  162                   <<(*iter)->Get4Momentum().mag()<<
G4endl;
 
  169             theTotalResult->push_back(theNew);
 
  170             Secondary4Momentum += (*iter)->Get4Momentum();              
 
  173                      <<(*iter)->Get4Momentum().mag()<<
G4endl;
 
  183             captured4Momentum += (*iter)->Get4Momentum();
 
  191    delete theSecondaries;
 
  196    while(theCurrentNucleon)    
 
  213       G4cout<<
"Sec + Captured "<<Secondary4Momentum+captured4Momentum<<
G4endl;
 
  216             <<Secondary4Momentum + captured4Momentum + Residual4Momentum <<
G4endl;
 
  222    while(theCurrentNucleon)   
 
  238         {
G4cout<<
"Residual  4Mom = 0 means that there were not wounded and captured nucleons"<<
G4endl;}
 
  242    if(anA == 0) 
return theTotalResult;
 
  252       exciton4Momentum = Residual4Momentum + captured4Momentum;
 
  254       G4double ActualMass = exciton4Momentum.mag();      
 
  255       if(ActualMass <= fMass ) {                             
 
  256         exciton4Momentum.setE(std::sqrt(exciton4Momentum.vect().mag2()+
sqr(fMass))); 
 
  261          if(ActualMass <= fMass ) {exEnergy = 0.;}                      
 
  262          else                     {exEnergy = ActualMass - fMass;}
 
  263          G4cout<<
"Ground state residual Mass "<<fMass<<
" E* "<<exEnergy<<
G4endl;
 
  276      G4double ActualMass = exciton4Momentum.mag();
 
  282         G4cout<<
"ResidualMass, GroundStateMass and E* "<<ActualMass<<
" "<<fMass<<
" " 
  283               <<ActualMass - fMass<<
G4endl;
 
  286      if(ActualMass - fMass < 0.)
 
  288       G4double ResE = std::sqrt(exciton4Momentum.vect().mag2() + 
sqr(fMass+10*
MeV));
 
  289       exciton4Momentum.setE(ResE);
 
  291          G4cout<<
"ActualMass - fMass < 0. "<<ActualMass<<
" "<<fMass<<
" "<<ActualMass - fMass<<
G4endl;
 
  297       G4Fragment anInitialState(anA, aZ, exciton4Momentum);
 
  306          G4cout<<
"Target fragment number "<<aPrecoResult->size()<<
G4endl;
 
  308       for(
unsigned int ll=0; ll<aPrecoResult->size(); ++ll)
 
  310          theTotalResult->push_back(aPrecoResult->operator[](ll));
 
  312             G4cout<<
"Fragment "<<ll<<
" " 
  313                   <<aPrecoResult->operator[](ll)->GetDefinition()->GetParticleName()<<
" " 
  314                   <<aPrecoResult->operator[](ll)->GetMomentum()<<
" " 
  315                   <<aPrecoResult->operator[](ll)->GetTotalEnergy()<<
" " 
  316                   <<aPrecoResult->operator[](ll)->GetDefinition()->GetPDGMass()<<
G4endl;
 
  322    return theTotalResult;
 
  328    G4cout << 
"G4GeneratorPrecompoundInterface: ApplyYourself interface called stand-allone." 
  330    G4cout << 
"This class is only a mediator between generator and precompound"<<
G4endl;
 
  331    G4cout << 
"Please remove from your physics list."<<
G4endl;
 
  332    throw G4HadronicException(__FILE__, __LINE__, 
"SEVERE: G4GeneratorPrecompoundInterface model interface called stand-allone.");
 
  337    outFile << 
"G4GeneratorPrecompoundInterface interfaces a high\n" 
  338          << 
"energy model through the wounded nucleus to precompound de-excition.\n" 
  339          << 
"Low energy protons and neutron present among secondaries produced by \n" 
  340          << 
"the high energy generator and within the nucleus are captured. The wounded\n" 
  341          << 
"nucleus and the captured particles form an excited nuclear fragment. This\n" 
  342          << 
"fragment is passed to the Geant4 pre-compound model for de-excitation.\n" 
  343          << 
"Nuclear de-excitation:\n";
 
  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);
 
  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);
 
  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 G4AntiHe3 * AntiHe3()
 
static G4double GetNuclearMass(const G4double A, const G4double Z)
 
G4GeneratorPrecompoundInterface(G4VPreCompoundModel *p=0)
 
virtual G4int GetCharge()=0
 
CLHEP::Hep3Vector G4ThreeVector
 
const G4ParticleDefinition * He3
 
const G4HadProjectile * GetPrimaryProjectile() const 
 
const G4ParticleDefinition * deuteron
 
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0
 
virtual G4double GetNuclearRadius()=0
 
virtual G4ReactionProductVector * Propagate(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus)
 
virtual G4bool StartLoop()=0
 
const G4ParticleDefinition * He4
 
static G4AntiDeuteron * AntiDeuteron()
 
void SetMomentum(const G4double x, const G4double y, const G4double z)
 
virtual G4int GetMassNumber()=0
 
virtual void PropagateModelDescription(std::ostream &) const 
 
const G4ParticleDefinition * ANTItriton
 
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
 
const G4ParticleDefinition * neutron
 
static G4AntiDeuteron * AntiDeuteronDefinition()
 
virtual const G4LorentzVector & Get4Momentum() const 
 
const G4ParticleDefinition * triton
 
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
static G4AntiAlpha * AntiAlpha()
 
static G4AntiProton * AntiProtonDefinition()
 
static G4AntiNeutron * AntiNeutronDefinition()
 
const G4String & GetParticleName() const 
 
virtual const G4ParticleDefinition * GetDefinition() const 
 
std::vector< G4ReactionProduct * > G4ReactionProductVector
 
const G4ParticleDefinition * GetDefinition() const 
 
const G4ParticleDefinition * ANTIdeuteron
 
G4GLOB_DLL std::ostream G4cout
 
ParticleList decay(Cluster *const c)
Carries out a cluster decay. 
 
const G4ParticleDefinition * GetDefinition() const 
 
static G4AntiProton * AntiProton()
 
const G4ParticleDefinition * ANTIHe3
 
void SetTotalEnergy(const G4double en)
 
static G4Triton * Triton()
 
static G4Proton * Proton()
 
static G4Neutron * Neutron()
 
void SetNumberOfParticles(G4int value)
 
virtual G4ReactionProductVector * PropagateNuclNucl(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus, G4V3DNucleus *theProjectileNucleus)
 
const G4LorentzVector & Get4Momentum() const 
 
static G4Deuteron * Deuteron()
 
static G4AntiHe3 * AntiHe3Definition()
 
G4double G4Log(G4double x)
 
G4HadronicInteraction * FindModel(const G4String &name)
 
G4double GetTotalEnergy() const 
 
G4double GetPDGMass() const 
 
static G4HadronicInteractionRegistry * Instance()
 
G4VPreCompoundModel * theDeExcitation
 
G4ThreeVector GetMomentum() const 
 
void SetDeExcitation(G4VPreCompoundModel *ptr)
 
static G4AntiAlpha * AntiAlphaDefinition()
 
const G4ParticleDefinition * ANTIHe4
 
virtual G4Nucleon * GetNextNucleon()=0
 
virtual ~G4GeneratorPrecompoundInterface()
 
void SetNumberOfCharged(G4int value)
 
const G4ParticleDefinition * ANTIneutron
 
static G4AntiTriton * AntiTriton()
 
static const double eplus
 
G4double GetPDGCharge() const 
 
const G4ParticleDefinition * ANTIproton
 
G4double GetBindingEnergy() const 
 
G4double CaptureThreshold
 
static G4AntiNeutron * AntiNeutron()
 
G4int GetBaryonNumber() const 
 
CLHEP::HepLorentzVector G4LorentzVector