118    G4cout << 
"G4ChargeExchange::DoIt: Incident particle plab=" 
  119       << plab/
GeV << 
" GeV/c " 
  120       << 
" ekin(MeV) = " << ekin/
MeV << 
"  " 
  130       << 
" PDGcode= " << projPDG << 
" on nucleus Z= " << 
Z 
  131       << 
" A= " << 
A << 
" N= " << N
 
  146  G4bool theHyperon = 
false;
 
  162  } 
else if(theParticle == 
theKPlus) {
 
  164    else  theSecondary = 
theK0L;
 
  168    else  theSecondary = 
theK0L;
 
  170  } 
else if(theParticle == 
theK0S || theParticle == 
theK0L) {
 
  184  } 
else if(theParticle == 
theL) {
 
  188        theSecondary = 
theS0;
 
  189      } 
else if (x < 0.4) {
 
  192      } 
else if (x < 0.6) {
 
  197      } 
else if (x < 0.8) {
 
  210        theSecondary = 
theS0;
 
  211      } 
else if (x < 0.4) {
 
  214      } 
else if (x < 0.6) {
 
  219      } 
else if (x < 0.8) {
 
  233  if (
Z == 1 && 
A == 2) theDef = 
theD;
 
  234  else if (
Z == 1 && 
A == 3) theDef = 
theT;
 
  235  else if (
Z == 2 && 
A == 3) theDef = 
theHe3;
 
  236  else if (
Z == 2 && 
A == 4) theDef = 
theA;
 
  245  if(theRecoil)  { m21 += theRecoil->
GetPDGMass(); }
 
  246  else           { theRecoil = theDef; }
 
  251  if(etot < m11 + m21) {
 
  258  G4double e1 = 0.5*etot*(1.0 - (m21*m21 - m11*m11)/(etot*etot));
 
  268    G4cout <<
"## G4ChargeExchange t= " << t << 
" tmax= " << tmax
 
  269       << 
" ptot= " << ptot << 
G4endl;
 
  274  if(std::abs(cost) > 1.0) cost = 1.0;
 
  275  G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
 
  280  G4ThreeVector v1(sint*std::cos(phi),sint*std::sin(phi),cost);
 
  316    aa = g4pow->
powZ(
A, 1.63);
 
  317    bb = 14.5*g4pow->
powZ(
A, 0.66);
 
  318    cc = 1.4*g4pow->
powZ(
A, 0.33);
 
  321    aa = g4pow->
powZ(
A, 1.33);
 
  322    bb = 60.*g4pow->
powZ(
A, 0.33);
 
  323    cc = 0.4*g4pow->
powZ(
A, 0.40);
 
  333  const G4int maxNumberOfLoops = 10000;
 
  334  G4int loopCounter = 0;
 
  337  } 
while ( (t > tmax) &&
 
  338            ++loopCounter < maxNumberOfLoops );  
 
  339  if ( loopCounter >= maxNumberOfLoops ) {
 
static const G4double e1[44]
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static constexpr double twopi
static constexpr double GeV
static constexpr double MeV
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
static G4AntiLambda * AntiLambda()
static G4AntiNeutron * AntiNeutron()
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4AntiProton * AntiProton()
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4AntiSigmaZero * AntiSigmaZero()
static G4AntiXiMinus * AntiXiMinus()
static G4AntiXiZero * AntiXiZero()
G4ParticleDefinition * thePiMinus
G4ParticleDefinition * theSPlus
G4ParticleDefinition * theAXi0
G4ParticleDefinition * theProton
G4ParticleDefinition * theS0
G4double lowestEnergyLimit
G4ParticleDefinition * theK0L
G4double SampleT(G4double p, G4int A)
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) override
G4ParticleDefinition * theOmega
G4ParticleDefinition * theASPlus
G4ParticleDefinition * theKMinus
G4ParticleDefinition * theAProton
G4ParticleDefinition * theXi0
G4ParticleDefinition * theK0S
G4ParticleDefinition * theA
G4ParticleDefinition * thePiPlus
G4ParticleDefinition * theNeutron
G4ParticleDefinition * theAntiL
G4ParticleDefinition * theXiMinus
~G4ChargeExchange() override
G4ParticleDefinition * theT
G4ParticleDefinition * theAXiMinus
G4ParticleDefinition * theAOmega
G4ParticleDefinition * theAS0
G4ParticleDefinition * theANeutron
G4ParticleDefinition * theL
G4ParticleDefinition * theASMinus
G4ParticleDefinition * theKPlus
G4ParticleDefinition * thePiZero
G4ParticleDefinition * theSMinus
G4ParticleDefinition * theD
G4ParticleDefinition * theHe3
static G4Deuteron * Deuteron()
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetKineticEnergy(G4double aEnergy)
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
void SetLocalEnergyDeposit(G4double aE)
G4double GetTotalMomentum() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4HadFinalState theParticleChange
void SetMinEnergy(G4double anEnergy)
G4double GetRecoilEnergyThreshold() const
void SetMaxEnergy(const G4double anEnergy)
G4double GetMaxEnergy() const
static G4HadronicParameters * Instance()
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4KaonMinus * KaonMinus()
static G4KaonPlus * KaonPlus()
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
static G4Lambda * Lambda()
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
static G4OmegaMinus * OmegaMinus()
G4double GetPDGMass() const
G4int GetPDGEncoding() const
const G4String & GetParticleName() const
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
static G4int GetModelID(const G4int modelIndex)
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4PionZero * PionZero()
static G4Pow * GetInstance()
G4double powZ(G4int Z, G4double y) const
static G4Proton * Proton()
static G4SigmaMinus * SigmaMinus()
static G4SigmaPlus * SigmaPlus()
static G4SigmaZero * SigmaZero()
static G4Triton * Triton()
static G4XiMinus * XiMinus()
static G4XiZero * XiZero()
T max(const T t1, const T t2)
brief Return the largest of the two arguments