38{
41 {
46 }
47
48
49
52
54 {
56 G4cout <<
"G4RPGKPlusInelastic::ApplyYourself called" <<
G4endl;
58 G4cout <<
"target material = " << targetMaterial->
GetName() <<
", ";
61 }
62
66
67
68
69
72
74 ek += tkin;
75 currentParticle.SetKineticEnergy( ek );
77 G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
78 G4double pp = currentParticle.GetMomentum().mag();
79 if( pp > 0.0 )
80 {
82 currentParticle.SetMomentum( momentum * (p/pp) );
83 }
84
85
86
88 ek -= tkin;
89 currentParticle.SetKineticEnergy( ek );
90 et = ek + amas;
91 p = std::sqrt( std::abs((et-amas)*(et+amas)) );
92 pp = currentParticle.GetMomentum().mag();
93 if( pp > 0.0 )
94 {
96 currentParticle.SetMomentum( momentum * (p/pp) );
97 }
98
100
102 targetParticle.SetSide( -1 );
103 G4bool incidentHasChanged =
false;
104 G4bool targetHasChanged =
false;
105 G4bool quasiElastic =
false;
109
111 if( currentParticle.GetKineticEnergy() > cutOff )
112 Cascade( vec, vecLen,
113 originalIncident, currentParticle, targetParticle,
114 incidentHasChanged, targetHasChanged, quasiElastic );
115
117 originalIncident, originalTarget, modifiedOriginal,
118 targetNucleus, currentParticle, targetParticle,
119 incidentHasChanged, targetHasChanged, quasiElastic );
120
122 currentParticle, targetParticle,
123 incidentHasChanged );
124
125 delete originalTarget;
126
128}
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * GetDefinition() const
void Initialize(G4int items)
void SetStatusChange(G4HadFinalStateStatus aS)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
const G4Material * GetMaterial() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4HadFinalState theParticleChange
const G4String & GetName() const
G4double EvaporationEffects(G4double kineticEnergy)
G4double Cinema(G4double kineticEnergy)
G4DynamicParticle * ReturnTargetParticle() const
G4double GetPDGMass() const
const G4String & GetParticleName() const
void CalculateMomenta(G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4DynamicParticle *originalTarget, G4ReactionProduct &modifiedOriginal, G4Nucleus &targetNucleus, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool quasiElastic)
void SetUpChange(G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged)
void SetSide(const G4int sid)