#include <G4INCLReflectionChannel.hh>
Definition at line 48 of file G4INCLReflectionChannel.hh.
G4INCL::ReflectionChannel::~ReflectionChannel |
( |
| ) |
|
|
virtual |
Implements G4INCL::IChannel.
Definition at line 58 of file G4INCLReflectionChannel.cc.
61 const ThreeVector &oldMomentum = theParticle->
getMomentum();
62 const ThreeVector thePosition = theParticle->
getPosition();
65 const G4double x2cour = thePosition.mag2();
66 const ThreeVector newMomentum = oldMomentum - (thePosition * (2.0 * pspr/x2cour));
67 const G4double deltaP2 = (newMomentum-oldMomentum).mag2();
69 const G4double minDeltaP2 = sinMinReflectionAngleSquaredOverFour * newMomentum.mag2();
70 if(deltaP2 < minDeltaP2) {
71 theParticle->
setPosition(thePosition * positionScalingFactor);
72 INCL_DEBUG(
"Reflection angle for particle " << theParticle->
getID() <<
" was too tangential: " <<
'\n'
73 <<
" " << deltaP2 <<
"=deltaP2<minDeltaP2=" << minDeltaP2 <<
'\n'
74 <<
" Resetting the particle position to ("
75 << thePosition.getX() <<
", "
76 << thePosition.getY() <<
", "
77 << thePosition.getZ() <<
")" <<
'\n');
86 fs->addModifiedParticle(theParticle);
void updatePotentialEnergy(Particle *p) const
Update the particle potential energy.
G4double dot(const ThreeVector &v) const
const G4INCL::ThreeVector & getMomentum() const
G4double getEnergy() const
void thawPropagation()
Unfreeze particle propagation.
G4double getPotentialEnergy() const
Get the particle potential energy.
virtual void setPosition(const G4INCL::ThreeVector &position)
const G4INCL::ThreeVector & getPosition() const
virtual void setMomentum(const G4INCL::ThreeVector &momentum)
The documentation for this class was generated from the following files: