93 if (ekin <= lowEnergyLimit) {
98 G4int projPDG = part->GetPDGEncoding();
101 if (1 == Z && (211 == projPDG || 321 == projPDG)) {
A = 2; }
104 G4cout <<
"G4ChargeExchange for " << part->GetParticleName()
105 <<
" PDGcode= " << projPDG <<
" on nucleus Z= " << Z
106 <<
" A= " <<
A <<
" N= " <<
A - Z
115 fXSection->SampleSecondaryType(part, aTrack.
GetMaterial(),
123 G4bool isShortLived = (pdg == 223 || pdg == 225);
126 if (projPDG == -211) { --Z; }
127 else if (projPDG == 211) { ++Z; }
128 else if (projPDG == -321) { --Z; }
129 else if (projPDG == 321) { ++Z; }
130 else if (projPDG == 130) {
144 else if (Z == 2 &&
A == 3) { theRecoil =
G4He3::He3(); }
160 <<
" mass(MeV)=" << mass2 <<
" pdg=" << pdg
161 <<
" Final Z=" << Z <<
" isShortLived=" << isShortLived
166 if (
nullptr != theRecoil) {
168 ok = (m0 > mass2 + mass3);
173 const G4double eFermi = 10*CLHEP::MeV;
174 for (
G4int i=0; i<10; ++i) {
176 if (m0 > mass2 + mass3) {
183 const G4double elim = 300*CLHEP::MeV;
185 for (
G4int i=0; i<10; ++i) {
186 if (SampleMass(mass2, theSecondary->
GetPDGWidth(), elim)) {
187 if (m0 > mass2 + mass3) {
198 G4double e2 = (m0*m0 + mass2*mass2 - mass3*mass3)/(2*m0);
199 G4double momentumCMS = std::sqrt(e2*e2 - mass2*mass2);
200 G4double tmax = 4*momentumCMS*momentumCMS;
204 if (fXSection->isPion()) {
217 if (std::abs(cost) > 1.0) { cost = 1.0; }
219 G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
222 G4cout <<
" t= " << t <<
" tmax(GeV^2)= " << tmax/(GeV*GeV)
223 <<
" cos(t)=" << cost <<
" sin(t)=" << sint <<
G4endl;
226 momentumCMS*sint*std::sin(phi),
227 momentumCMS*cost, e2);
233 if (lv.
e() < mass3) {
247 auto products = channel->
DecayIt(mass2);
249 G4int N = products->entries();
250 for (
G4int i=0; i<
N; ++i) {
251 auto p = (*products)[i];
252 auto lvp = p->Get4Momentum();
255 pnew->Set4Momentum(lvp);
262 if (
nullptr != theRecoil) {
268 auto products = fHandler->BreakItUp(frag);
269 for (
auto & prod : *products) {
G4double GetPDGMass() const
G4int GetPDGEncoding() const
G4double GetPDGWidth() const
G4double GetPDGCharge() const
G4DecayTable * GetDecayTable() const
const G4String & GetParticleName() const