Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4INCL::RecombinationChannel Class Reference

#include <G4INCLRecombinationChannel.hh>

Inheritance diagram for G4INCL::RecombinationChannel:
Collaboration diagram for G4INCL::RecombinationChannel:

Public Member Functions

 RecombinationChannel (Particle *p1, Particle *p2)
 
virtual ~RecombinationChannel ()
 
void fillFinalState (FinalState *fs)
 
- Public Member Functions inherited from G4INCL::IChannel
 IChannel ()
 
virtual ~IChannel ()
 
FinalStategetFinalState ()
 

Detailed Description

Definition at line 55 of file G4INCLRecombinationChannel.hh.

Constructor & Destructor Documentation

G4INCL::RecombinationChannel::RecombinationChannel ( Particle p1,
Particle p2 
)

Definition at line 56 of file G4INCLRecombinationChannel.cc.

57  {
58  if(p1->isDelta()) {
59 // assert(p2->isNucleon());
60  theDelta = p1;
61  theNucleon = p2;
62  } else {
63 // assert(p1->isNucleon());
64  theDelta = p2;
65  theNucleon = p1;
66  }
67  }

Here is the call graph for this function:

G4INCL::RecombinationChannel::~RecombinationChannel ( )
virtual

Definition at line 69 of file G4INCLRecombinationChannel.cc.

70  {
71  }

Member Function Documentation

void G4INCL::RecombinationChannel::fillFinalState ( FinalState fs)
virtual

Implements G4INCL::IChannel.

Definition at line 73 of file G4INCLRecombinationChannel.cc.

74  {
75  // Compute the total available energy in the CM
76  const G4double sqrts = KinematicsUtils::totalEnergyInCM(theDelta, theNucleon);
77 
78  // Assign the types of the final-state particles
79  switch(theDelta->getType()) {
80  case DeltaPlusPlus:
81 // assert(theNucleon->getType()!=Proton);
82  theDelta->setType(Proton);
83  theNucleon->setType(Proton);
84  break;
85  case DeltaPlus:
86  theDelta->setType(Proton);
87  break;
88  case DeltaZero:
89  theDelta->setType(Neutron);
90  break;
91  case DeltaMinus:
92 // assert(theNucleon->getType()!=Neutron);
93  theDelta->setType(Neutron);
94  theNucleon->setType(Neutron);
95  break;
96  default:
97  INCL_ERROR("Unknown particle type in RecombinationChannel" << '\n');
98  break;
99  }
100 
101  // Calculate the momenta of the nucleons in the final state
102  const G4double pCM = KinematicsUtils::momentumInCM(sqrts, theDelta->getMass(), theNucleon->getMass());
103 
104  // The angular distribution of final-state nucleons is isotropic
105  ThreeVector momentum = Random::normVector(pCM);
106 
107  // Assign the momenta
108  theDelta->setMomentum(momentum);
109  theNucleon->setMomentum(-momentum);
110 
111  // Update the kinetic energies
112  theDelta->adjustEnergyFromMomentum();
113  theNucleon->adjustEnergyFromMomentum();
114 
115  // Create the final state
116  fs->addModifiedParticle(theDelta);
117  fs->addModifiedParticle(theNucleon);
118 
119  }
G4double getMass() const
Get the cached particle mass.
#define INCL_ERROR(x)
G4double adjustEnergyFromMomentum()
Recompute the energy to match the momentum.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
ThreeVector normVector(G4double norm=1.)
G4INCL::ParticleType getType() const
void setType(ParticleType t)
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
virtual void setMomentum(const G4INCL::ThreeVector &momentum)

Here is the call graph for this function:


The documentation for this class was generated from the following files: