#include <G4INCLCoulombNone.hh>
Inheritance diagram for G4INCL::CoulombNone:
Public Member Functions | |
CoulombNone () | |
virtual | ~CoulombNone () |
ParticleEntryAvatar * | bringToSurface (Particle *const p, Nucleus *const n) const |
Position the particle on the surface of the nucleus. | |
IAvatarList | bringToSurface (Cluster *const c, Nucleus *const n) const |
Position the cluster on the surface of the nucleus. | |
void | distortOut (ParticleList const &, Nucleus const *const ) const |
Modify the momenta of the outgoing particles. | |
G4double | maxImpactParameter (ParticleSpecies const &p, const G4double, Nucleus const *const n) const |
Return the maximum impact parameter for Coulomb-distorted trajectories. |
Definition at line 54 of file G4INCLCoulombNone.hh.
G4INCL::CoulombNone::CoulombNone | ( | ) | [inline] |
virtual G4INCL::CoulombNone::~CoulombNone | ( | ) | [inline, virtual] |
IAvatarList G4INCL::CoulombNone::bringToSurface | ( | Cluster *const | c, | |
Nucleus *const | n | |||
) | const [virtual] |
Position the cluster on the surface of the nucleus.
This method does not perform any distortion.
c | incoming cluster | |
n | distorting nucleus |
Implements G4INCL::ICoulomb.
Definition at line 58 of file G4INCLCoulombNone.cc.
References G4INCL::IntersectionFactory::getEarlierTrajectoryIntersection(), G4INCL::Cluster::getParticles(), and CLHEP::detail::n.
00058 { 00059 // The avatar list that we will return 00060 IAvatarList theAvatarList; 00061 00062 // Loop over the particles in the cluster 00063 ParticleList projectiles = c->getParticles(); 00064 std::list<Intersection> theIntersections; 00065 G4double theFirstEntryTime = 1E+60; // a large time 00066 G4int theFirstID = 0; 00067 for(ParticleIter p=projectiles.begin(); p!=projectiles.end(); ++p) { 00068 // Check if the particle enters the nucleus 00069 Intersection intersection(IntersectionFactory::getEarlierTrajectoryIntersection( 00070 (*p)->getPosition(), 00071 (*p)->getPropagationVelocity(), 00072 n->getUniverseRadius())); 00073 // Store the intersections 00074 theIntersections.push_back(intersection); 00075 if(intersection.exists) { 00076 // Position the particle at the entry point 00077 (*p)->setPosition(intersection.position); 00078 00079 // Keep track of the first entering particle 00080 if(intersection.time < theFirstEntryTime) { 00081 theFirstEntryTime = intersection.time; 00082 theFirstID = (*p)->getID(); 00083 } 00084 } 00085 } 00086 00087 std::list<Intersection>::const_iterator intIter = theIntersections.begin(); 00088 for( ParticleIter p=projectiles.begin(); p!=projectiles.end(); ++p, ++intIter) { 00089 00090 if((*intIter).exists) { 00091 // If the particle enters the nucleus, generate a ParticleEntryAvatar 00092 // for it and add it to the list of avatars that we will return 00093 if((*p)->getID() == theFirstID) { 00094 // The first particle always enters exactly at t=0 (in order to 00095 // avoid negative entry times due to rounding) 00096 theAvatarList.push_back(new ParticleEntryAvatar(0.0, n, *p)); 00097 } else 00098 theAvatarList.push_back(new ParticleEntryAvatar(intIter->time - theFirstEntryTime, n, *p)); 00099 } 00100 00101 } 00102 00103 return theAvatarList; 00104 }
ParticleEntryAvatar * G4INCL::CoulombNone::bringToSurface | ( | Particle *const | p, | |
Nucleus *const | n | |||
) | const [virtual] |
Position the particle on the surface of the nucleus.
This method does not perform any distortion.
p | incoming particle | |
n | distorting nucleus |
Implements G4INCL::ICoulomb.
Definition at line 49 of file G4INCLCoulombNone.cc.
References G4INCL::Intersection::exists, G4INCL::IntersectionFactory::getEarlierTrajectoryIntersection(), G4INCL::Particle::getPosition(), G4INCL::Particle::getPropagationVelocity(), CLHEP::detail::n, G4INCL::Intersection::position, and G4INCL::Particle::setPosition().
Referenced by G4INCL::CoulombNonRelativistic::bringToSurface().
00049 { 00050 Intersection intersection = IntersectionFactory::getEarlierTrajectoryIntersection(p->getPosition(), p->getPropagationVelocity(), n->getUniverseRadius()); 00051 if(intersection.exists) { // If the particle enters the nucleus 00052 p->setPosition(intersection.position); 00053 return new ParticleEntryAvatar(0.0, n, p); 00054 } else // If the particle does NOT enter the nucleus 00055 return NULL; 00056 }
void G4INCL::CoulombNone::distortOut | ( | ParticleList const & | , | |
Nucleus const * | const | |||
) | const [inline, virtual] |
Modify the momenta of the outgoing particles.
This method does not perform any distortion.
Implements G4INCL::ICoulomb.
Definition at line 82 of file G4INCLCoulombNone.hh.
G4double G4INCL::CoulombNone::maxImpactParameter | ( | ParticleSpecies const & | p, | |
const | G4double, | |||
Nucleus const *const | n | |||
) | const [inline, virtual] |
Return the maximum impact parameter for Coulomb-distorted trajectories.
Implements G4INCL::ICoulomb.
Definition at line 86 of file G4INCLCoulombNone.hh.
References G4INCL::Composite, G4INCL::ParticleTable::getNuclearRadius(), CLHEP::detail::n, G4INCL::ParticleSpecies::theA, G4INCL::ParticleSpecies::theType, and G4INCL::ParticleSpecies::theZ.
00087 { 00088 if(p.theType == Composite) 00089 return 2.*ParticleTable::getNuclearRadius(p.theA, p.theZ) 00090 + n->getUniverseRadius(); 00091 else 00092 return n->getUniverseRadius(); 00093 }