64{
69
72
73 if (ekin <= lowEnergyLimit) {
75 }
76
77 G4int projPDG = part->GetPDGEncoding();
79 G4cout <<
"G4ChargeExchange for " << part->GetParticleName()
80 << " PDGcode= " << projPDG << " on nucleus Z= " << Z
81 <<
" A= " <<
A <<
" N= " <<
A - Z
83
87
88
92
93
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) {
100 else { ++Z; }
101 } else {
102
104 }
105
110 else if (Z == 2 &&
A == 3) theRecoil =
G4He3::He3();
112 else {
115 }
117
120
121 if (etot <= mass2 + mass3) {
122
124 }
125
126
131
132
133 G4double e2 = ss + mass2*mass2 - mass3*mass3;
134 G4double tmax = e2*e2/ss - 4*mass2*mass2;
135
137
140
141 if (cost > 1.0) { cost = 1.0; }
142 else if(cost < -1.0) { cost = -1.0; }
143
144 G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
145
147 G4cout <<
" t= " << t <<
" tmax(GeV^2)= " << tmax/(GeV*GeV)
148 <<
" cos(t)=" << cost <<
" sin(t)=" << sint <<
G4endl;
149 }
150 G4double momentumCMS = 0.5*std::sqrt(tmax);
152 momentumCMS*sint*std::sin(phi),
153 momentumCMS*cost,
154 std::sqrt(momentumCMS*momentumCMS + mass2*mass2));
155
156
157 lv2.boost(bst);
158 if (lv2.e() < mass2) {
159 lv2.setE(mass2);
160 }
161 lv -= lv2;
162 if (lv.
e() < mass3) {
164 }
165
166
169
172
176}
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
const G4ParticleDefinition * SampleSecondaryType(const G4ParticleDefinition *, const G4int Z, const G4int A)
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 G4Proton * Proton()
static G4Triton * Triton()