Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
G4INCL::CrossSections Namespace Reference

Functions

G4double elastic (Particle const *const p1, Particle const *const p2)
 
G4double total (Particle const *const p1, Particle const *const p2)
 
G4double pionNucleon (Particle const *const p1, Particle const *const p2)
 
G4double recombination (Particle const *const p1, Particle const *const p2)
 
G4double deltaProduction (Particle const *const p1, Particle const *const p2)
 
G4double calculateNNAngularSlope (G4double energyCM, G4int iso)
 Calculate the slope of the NN DDXS. More...
 
G4double interactionDistanceNN (const ParticleSpecies &aSpecies, const G4double kineticEnergy)
 Compute the "interaction distance". More...
 
G4double interactionDistancePiN (const G4double projectileKineticEnergy)
 Compute the "interaction distance". More...
 
void setCrossSections (ICrossSections *c)
 
void deleteCrossSections ()
 

Function Documentation

G4double G4INCL::CrossSections::calculateNNAngularSlope ( G4double  energyCM,
G4int  iso 
)

Calculate the slope of the NN DDXS.

Parameters
energyCMenergy in the CM frame, in MeV
isototal isospin of the system
Returns
the slope of the angular distribution

Definition at line 70 of file G4INCLCrossSections.cc.

Referenced by G4INCL::ElasticChannel::getFinalState().

70  {
71  return theCrossSections->calculateNNAngularSlope(energyCM, iso);
72  }
void G4INCL::CrossSections::deleteCrossSections ( )

Definition at line 142 of file G4INCLCrossSections.cc.

Referenced by G4INCL::INCL::~INCL().

142  {
143  delete theCrossSections;
144  theCrossSections = NULL;
145  }
G4double G4INCL::CrossSections::deltaProduction ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 66 of file G4INCLCrossSections.cc.

Referenced by G4INCL::BinaryCollisionAvatar::getChannel().

66  {
67  return theCrossSections->deltaProduction(p1,p2);
68  }
G4double G4INCL::CrossSections::elastic ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 50 of file G4INCLCrossSections.cc.

Referenced by G4QMDReaction::ApplyYourself(), G4QMDCollision::CalFinalStateOfTheBinaryCollisionJQMD(), and G4INCL::BinaryCollisionAvatar::getChannel().

50  {
51  return theCrossSections->elastic(p1,p2);
52  }
G4double G4INCL::CrossSections::interactionDistanceNN ( const ParticleSpecies &  aSpecies,
const G4double  kineticEnergy 
)

Compute the "interaction distance".

Defined on the basis of the average value of the N-N cross sections at the given kinetic energy.

Returns
the interaction distance

Definition at line 107 of file G4INCLCrossSections.cc.

References G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::getMass(), G4INCL::Math::max(), G4INCL::Neutron, G4INCL::Proton, G4INCL::Particle::setEnergy(), G4INCL::Math::tenPi, G4INCL::ParticleSpecies::theA, and total().

107  {
108 // assert(aSpecies.theType==Proton || aSpecies.theType==Neutron || aSpecies.theType==Composite);
109 // assert(aSpecies.theA>0);
110  ThreeVector nullVector;
111  ThreeVector unitVector(0.,0.,1.);
112 
113  const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.theA;
114 
115  Particle protonProjectile(Proton, unitVector, nullVector);
116  protonProjectile.setEnergy(protonProjectile.getMass()+kineticEnergyPerNucleon);
117  protonProjectile.adjustMomentumFromEnergy();
118  Particle neutronProjectile(Neutron, unitVector, nullVector);
119  neutronProjectile.setEnergy(neutronProjectile.getMass()+kineticEnergyPerNucleon);
120  neutronProjectile.adjustMomentumFromEnergy();
121 
122  Particle protonTarget(Proton, nullVector, nullVector);
123  Particle neutronTarget(Neutron, nullVector, nullVector);
124  const G4double sigmapp = total(&protonProjectile, &protonTarget);
125  const G4double sigmapn = total(&protonProjectile, &neutronTarget);
126  const G4double sigmann = total(&neutronProjectile, &neutronTarget);
127  /* We compute the interaction distance from the largest of the NN cross
128  * sections. Note that this is different from INCL4.6, which just takes the
129  * average of the four, and will in general lead to a different geometrical
130  * cross section.
131  */
132  const G4double largestSigma = std::max(sigmapp, std::max(sigmapn, sigmann));
133  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
134 
135  return interactionDistance;
136  }
const G4double tenPi
G4double total(Particle const *const p1, Particle const *const p2)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
double G4double
Definition: G4Types.hh:76
G4double G4INCL::CrossSections::interactionDistancePiN ( const G4double  projectileKineticEnergy)

Compute the "interaction distance".

Defined on the basis of the average value of the pi-N cross sections at the given kinetic energy.

Returns
the interaction distance

Definition at line 74 of file G4INCLCrossSections.cc.

References G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::getMass(), G4INCL::Math::max(), G4INCL::Neutron, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::Particle::setEnergy(), G4INCL::Math::tenPi, and total().

74  {
75  ThreeVector nullVector;
76  ThreeVector unitVector(0., 0., 1.);
77 
78  Particle piPlusProjectile(PiPlus, unitVector, nullVector);
79  piPlusProjectile.setEnergy(piPlusProjectile.getMass()+projectileKineticEnergy);
80  piPlusProjectile.adjustMomentumFromEnergy();
81  Particle piZeroProjectile(PiZero, unitVector, nullVector);
82  piZeroProjectile.setEnergy(piZeroProjectile.getMass()+projectileKineticEnergy);
83  piZeroProjectile.adjustMomentumFromEnergy();
84  Particle piMinusProjectile(PiMinus, unitVector, nullVector);
85  piMinusProjectile.setEnergy(piMinusProjectile.getMass()+projectileKineticEnergy);
86  piMinusProjectile.adjustMomentumFromEnergy();
87 
88  Particle protonTarget(Proton, nullVector, nullVector);
89  Particle neutronTarget(Neutron, nullVector, nullVector);
90  const G4double sigmapipp = total(&piPlusProjectile, &protonTarget);
91  const G4double sigmapipn = total(&piPlusProjectile, &neutronTarget);
92  const G4double sigmapi0p = total(&piZeroProjectile, &protonTarget);
93  const G4double sigmapi0n = total(&piZeroProjectile, &neutronTarget);
94  const G4double sigmapimp = total(&piMinusProjectile, &protonTarget);
95  const G4double sigmapimn = total(&piMinusProjectile, &neutronTarget);
96  /* We compute the interaction distance from the largest of the pi-N cross
97  * sections. Note that this is different from INCL4.6, which just takes the
98  * average of the six, and will in general lead to a different geometrical
99  * cross section.
100  */
101  const G4double largestSigma = std::max(sigmapipp, std::max(sigmapipn, std::max(sigmapi0p, std::max(sigmapi0n, std::max(sigmapimp,sigmapimn)))));
102  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
103 
104  return interactionDistance;
105  }
const G4double tenPi
G4double total(Particle const *const p1, Particle const *const p2)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
double G4double
Definition: G4Types.hh:76
G4double G4INCL::CrossSections::pionNucleon ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 58 of file G4INCLCrossSections.cc.

58  {
59  return theCrossSections->pionNucleon(p1,p2);
60  }
G4double G4INCL::CrossSections::recombination ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 62 of file G4INCLCrossSections.cc.

Referenced by G4INCL::BinaryCollisionAvatar::getChannel().

62  {
63  return theCrossSections->recombination(p1,p2);
64  }
void G4INCL::CrossSections::setCrossSections ( ICrossSections *  c)

Definition at line 138 of file G4INCLCrossSections.cc.

References test::c.

Referenced by G4INCL::INCL::INCL().

138  {
139  theCrossSections = c;
140  }
G4double G4INCL::CrossSections::total ( Particle const *const  p1,
Particle const *const  p2 
)