106   if(ekin <= lowestEnergyLimit || A < 3) {
 
  115     G4cout << 
"G4ChargeExchange::DoIt: Incident particle plab=" 
  116        << plab/
GeV << 
" GeV/c " 
  117        << 
" ekin(MeV) = " << ekin/
MeV << 
"  " 
  127        << 
" PDGcode= " << projPDG << 
" on nucleus Z= " << Z
 
  128        << 
" A= " << A << 
" N= " << N
 
  143   G4bool theHyperon = 
false;
 
  147   if(theParticle == theProton) {
 
  148     theSecondary = theNeutron;
 
  150   } 
else if(theParticle == theNeutron) {
 
  151     theSecondary = theProton;
 
  153   } 
else if(theParticle == thePiPlus) {
 
  154     theSecondary = thePiZero;
 
  156   } 
else if(theParticle == thePiMinus) {
 
  157     theSecondary = thePiZero;
 
  159   } 
else if(theParticle == theKPlus) {
 
  161     else  theSecondary = theK0L;
 
  163   } 
else if(theParticle == theKMinus) {
 
  165     else  theSecondary = theK0L;
 
  167   } 
else if(theParticle == theK0S || theParticle == theK0L) {
 
  169       theSecondary = theKPlus;
 
  172       theSecondary = theKMinus;
 
  175   } 
else if(theParticle == theANeutron) {
 
  176     theSecondary = theAProton;
 
  178   } 
else if(theParticle == theAProton) {
 
  179     theSecondary = theANeutron;
 
  181   } 
else if(theParticle == theL) {
 
  185         theSecondary = theS0;
 
  186       } 
else if (x < 0.4) {
 
  187         theSecondary = theSPlus;
 
  189       } 
else if (x < 0.6) {
 
  190         theSecondary = theProton;
 
  194       } 
else if (x < 0.8) {
 
  195         theSecondary = theProton;
 
  200         theSecondary = theNeutron;
 
  201     theRecoil = theSPlus;
 
  207         theSecondary = theS0;
 
  208       } 
else if (x < 0.4) {
 
  209         theSecondary = theSMinus;
 
  211       } 
else if (x < 0.6) {
 
  212         theSecondary = theNeutron;
 
  216       } 
else if (x < 0.8) {
 
  217         theSecondary = theNeutron;
 
  222         theSecondary = theProton;
 
  223     theRecoil = theSMinus;
 
  230   if (Z == 1 && A == 2) theDef = theD;
 
  231   else if (Z == 1 && A == 3) theDef = theT;
 
  232   else if (Z == 2 && A == 3) theDef = theHe3;
 
  233   else if (Z == 2 && A == 4) theDef = theA;
 
  242   if(theRecoil)  { m21 += theRecoil->
GetPDGMass(); }
 
  243   else           { theRecoil = theDef; }
 
  248   if(etot < m11 + m21) {
 
  255   G4double e1 = 0.5*etot*(1.0 - (m21*m21 - m11*m11)/(etot*etot));
 
  257   G4double ptot = std::sqrt(e1*e1 - m11*m11);
 
  265     G4cout <<
"## G4ChargeExchange t= " << t << 
" tmax= " << tmax
 
  266        << 
" ptot= " << ptot << 
G4endl;
 
  271   if(std::abs(cost) > 1.0) cost = 1.0;
 
  272   G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
 
  277   G4ThreeVector v1(sint*std::cos(phi),sint*std::sin(phi),cost);
 
  299   } 
else if(erec > lowEnergyRecoilLimit) {
 
  303     if(erec < 0.0) erec = 0.0;
 
Hep3Vector boostVector() const 
 
static G4double GetNuclearMass(const G4double A, const G4double Z)
 
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
 
G4int GetPDGEncoding() const 
 
const G4String & GetParticleName() const 
 
static constexpr double twopi
 
void SetStatusChange(G4HadFinalStateStatus aS)
 
G4IonTable * GetIonTable() const 
 
G4GLOB_DLL std::ostream G4cout
 
double A(double temperature)
 
const G4ParticleDefinition * GetDefinition() const 
 
HepLorentzVector & boost(double, double, double)
 
G4double GetKineticEnergy() const 
 
const G4LorentzVector & Get4Momentum() const 
 
void SetKineticEnergy(G4double aEnergy)
 
void SetEnergyChange(G4double anEnergy)
 
G4double GetPDGMass() const 
 
static G4ParticleTable * GetParticleTable()
 
G4double SampleT(G4double p, G4double A)
 
static constexpr double GeV
 
G4HadFinalState theParticleChange
 
void SetLocalEnergyDeposit(G4double aE)
 
static constexpr double MeV
 
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
 
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
 
void SetMomentumChange(const G4ThreeVector &aV)
 
G4double GetTotalMomentum() const