58 lowEnergyLimit = 1.*CLHEP::MeV;
73 if (ekin <= lowEnergyLimit) {
77 G4int projPDG = part->GetPDGEncoding();
79 G4cout <<
"G4ChargeExchange for " << part->GetParticleName()
80 <<
" PDGcode= " << projPDG <<
" on nucleus Z= " << Z
81 <<
" A= " <<
A <<
" N= " <<
A - Z
94 if (pdg == -211) { --Z; }
95 else if (pdg == 211) { ++Z; }
96 else if (pdg == -321) { --Z; }
97 else if (pdg == 321) { ++Z; }
98 else if (pdg == 130) {
110 else if (Z == 2 &&
A == 3) theRecoil =
G4He3::He3();
121 if (etot <= mass2 + mass3) {
133 G4double e2 = ss + mass2*mass2 - mass3*mass3;
134 G4double tmax = e2*e2/ss - 4*mass2*mass2;
141 if (cost > 1.0) { cost = 1.0; }
142 else if(cost < -1.0) { cost = -1.0; }
144 G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
147 G4cout <<
" t= " << t <<
" tmax(GeV^2)= " << tmax/(GeV*GeV)
148 <<
" cos(t)=" << cost <<
" sin(t)=" << sint <<
G4endl;
150 G4double momentumCMS = 0.5*std::sqrt(tmax);
152 momentumCMS*sint*std::sin(phi),
154 std::sqrt(momentumCMS*momentumCMS + mass2*mass2));
158 if (lv2.
e() < mass2) {
162 if (lv.
e() < mass3) {
184 aa = g4pow->
powZ(
A, 1.63);
185 bb = 14.5*g4pow->
powZ(
A, 0.66);
186 cc = 1.4*g4pow->
powZ(
A, 0.33);
189 aa = g4pow->
powZ(
A, 1.33);
190 bb = 60.*g4pow->
powZ(
A, 0.33);
191 cc = 0.4*g4pow->
powZ(
A, 0.40);
201 const G4int maxN = 10000;
205 }
while ( (t > tmax) && ++count < maxN );
207 if ( count >= maxN ) {
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
const G4ParticleDefinition * SampleSecondaryType(const G4ParticleDefinition *, const G4int Z, const G4int A)
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) override
G4ChargeExchange(G4ChargeExchangeXS *)
G4double SampleT(const G4ParticleDefinition *theSec, const G4int A, const G4double tmax) const
static G4Deuteron * Deuteron()
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetEnergyChange(G4double anEnergy)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4HadFinalState theParticleChange
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetPDGMass() const
G4int GetPDGEncoding() const
G4double GetPDGCharge() const
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
static G4int GetModelID(const G4int modelIndex)
static G4Pow * GetInstance()
G4double powZ(G4int Z, G4double y) const
static G4Proton * Proton()
static G4Triton * Triton()