G4INCL::PionNucleonChannel Class Reference

#include <G4INCLPionNucleonChannel.hh>

Inheritance diagram for G4INCL::PionNucleonChannel:

G4INCL::IChannel

Public Member Functions

 PionNucleonChannel (Particle *, Particle *, Nucleus *, const G4bool localE=false)
virtual ~PionNucleonChannel ()
FinalStategetFinalState ()

Detailed Description

Definition at line 46 of file G4INCLPionNucleonChannel.hh.


Constructor & Destructor Documentation

G4INCL::PionNucleonChannel::PionNucleonChannel ( Particle ,
Particle ,
Nucleus ,
const G4bool  localE = false 
)

Definition at line 46 of file G4INCLPionNucleonChannel.cc.

00047     : theNucleus(nucleus), particle1(p1), particle2(p2), locE(localE)
00048   {
00049 
00050   }

G4INCL::PionNucleonChannel::~PionNucleonChannel (  )  [virtual]

Definition at line 52 of file G4INCLPionNucleonChannel.cc.

00052                                          {
00053 
00054   }


Member Function Documentation

FinalState * G4INCL::PionNucleonChannel::getFinalState (  )  [virtual]

Implements G4INCL::IChannel.

Definition at line 56 of file G4INCLPionNucleonChannel.cc.

References G4INCL::FinalState::addDestroyedParticle(), G4INCL::FinalState::addModifiedParticle(), G4INCL::NuclearPotential::INuclearPotential::computePotentialEnergy(), G4INCL::DeltaMinus, G4INCL::DeltaPlus, G4INCL::DeltaPlusPlus, G4INCL::DeltaZero, ERROR, G4INCL::Particle::getEnergy(), G4INCL::Particle::getMomentum(), G4INCL::Nucleus::getPotential(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::isNucleon(), G4INCL::ParticleConfig::isPair(), G4INCL::ThreeVector::mag2(), G4INCL::Neutron, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::Particle::setEnergy(), G4INCL::Particle::setMass(), G4INCL::Particle::setMomentum(), G4INCL::Particle::setType(), and G4INCL::Nucleus::updatePotentialEnergy().

00056                                                 {
00057     FinalState *fs = new FinalState;
00058 
00059     Particle * nucleon;
00060     Particle * pion;
00061     if(particle1->isNucleon()) {
00062       nucleon = particle1;
00063       pion = particle2;
00064     } else {
00065       nucleon = particle2;
00066       pion = particle1;
00067     }
00068 
00069     ParticleType deltaType = DeltaZero;
00070     if(ParticleConfig::isPair(particle1, particle2, Proton, PiPlus)) {
00071       deltaType = DeltaPlusPlus;
00072     } else if(ParticleConfig::isPair(particle1, particle2, Neutron, PiPlus)) {
00073       deltaType = DeltaPlus;
00074     } else if(ParticleConfig::isPair(particle1, particle2, Proton, PiZero)) {
00075       deltaType = DeltaPlus;
00076     } else if(ParticleConfig::isPair(particle1, particle2, Neutron, PiZero)) {
00077       deltaType = DeltaZero;
00078     } else if(ParticleConfig::isPair(particle1, particle2, Proton, PiMinus)) {
00079       deltaType = DeltaZero;
00080     } else if(ParticleConfig::isPair(particle1, particle2, Neutron, PiMinus)) {
00081       deltaType = DeltaMinus;
00082     } else {
00083       ERROR("Unknown particle pair in Pi-N collision." << std::endl);
00084     }
00085 
00086     G4double deltaEnergy = nucleon->getEnergy() - nucleon->getPotentialEnergy()
00087       + pion->getEnergy() - pion->getPotentialEnergy();
00088 
00089     nucleon->setType(deltaType); // nucleon becomes the delta
00090     deltaEnergy += theNucleus->getPotential()->computePotentialEnergy(nucleon);
00091     nucleon->setEnergy(deltaEnergy); // set the energy of the delta
00092 
00093     ThreeVector deltaMomentum = nucleon->getMomentum() + pion->getMomentum();
00094     nucleon->setMomentum(deltaMomentum);
00095 
00096     const G4double deltaMass = std::sqrt(deltaEnergy*deltaEnergy - deltaMomentum.mag2());
00097     nucleon->setMass(deltaMass);
00098     theNucleus->updatePotentialEnergy(nucleon);
00099 
00100     fs->addModifiedParticle(nucleon); // nucleon became a delta
00101     fs->addDestroyedParticle(pion);  // pion was removed
00102     return fs;
00103   }


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