G4INCL::CoulombNone Class Reference

#include <G4INCLCoulombNone.hh>

Inheritance diagram for G4INCL::CoulombNone:

G4INCL::ICoulomb

Public Member Functions

 CoulombNone ()
virtual ~CoulombNone ()
ParticleEntryAvatarbringToSurface (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.

Detailed Description

Definition at line 54 of file G4INCLCoulombNone.hh.


Constructor & Destructor Documentation

G4INCL::CoulombNone::CoulombNone (  )  [inline]

Definition at line 57 of file G4INCLCoulombNone.hh.

00057 {}

virtual G4INCL::CoulombNone::~CoulombNone (  )  [inline, virtual]

Definition at line 58 of file G4INCLCoulombNone.hh.

00058 {}


Member Function Documentation

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.

Parameters:
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.

Parameters:
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.

00082 {}

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     }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:54:06 2013 for Geant4 by  doxygen 1.4.7