Geant4  10.02.p03
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 NDeltaToNN (Particle const *const p1, Particle const *const p2)
 
G4double NNToNDelta (Particle const *const p1, Particle const *const p2)
 
G4double NNToxPiNN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 
G4double piNToDelta (Particle const *const p1, Particle const *const p2)
 
G4double piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 
G4double calculateNNAngularSlope (G4double energyCM, G4int iso)
 
G4double interactionDistancePiN (const G4double projectileKineticEnergy)
 
G4double interactionDistanceNN (const ParticleSpecies &aSpecies, const G4double kineticEnergy)
 
void setCrossSections (ICrossSections *c)
 
void deleteCrossSections ()
 
void initialize (Config const *const theConfig)
 Initialize the Coulomb-distortion algorithm. More...
 

Function Documentation

◆ calculateNNAngularSlope()

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

Definition at line 82 of file G4INCLCrossSections.cc.

82  {
83  return theCrossSections->calculateNNAngularSlope(energyCM, iso);
84  }
Here is the caller graph for this function:

◆ deleteCrossSections()

void G4INCL::CrossSections::deleteCrossSections ( )

Definition at line 154 of file G4INCLCrossSections.cc.

154  {
155  delete theCrossSections;
156  theCrossSections = NULL;
157  }
Here is the caller graph for this function:

◆ elastic()

G4double G4INCL::CrossSections::elastic ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 54 of file G4INCLCrossSections.cc.

54  {
55  return theCrossSections->elastic(p1,p2);
56  }
Here is the caller graph for this function:

◆ initialize()

void G4INCL::CrossSections::initialize ( Config const *const  theConfig)

Initialize the Coulomb-distortion algorithm.

Initialize the Coulomb-distortion algorithm.

Definition at line 159 of file G4INCLCrossSections.cc.

159  {
160  CrossSectionsType crossSections = theConfig->getCrossSectionsType();
161  if(crossSections == INCL46CrossSections)
162  setCrossSections(new CrossSectionsINCL46);
163  else if(crossSections == MultiPionsCrossSections)
164  setCrossSections(new CrossSectionsMultiPions);
165  else if(crossSections == TruncatedMultiPionsCrossSections) {
166  const G4int nMaxPi = theConfig->getMaxNumberMultipions();
167  if(nMaxPi>0)
168  setCrossSections(new CrossSectionsTruncatedMultiPions(nMaxPi));
169  else {
170  INCL_WARN("Truncated multipion cross sections were requested, but the specified maximum\n"
171  << "number of pions is <=0. Falling back to standard multipion cross-sections.\n");
172  setCrossSections(new CrossSectionsMultiPions);
173  }
174  }
175  }
#define INCL_WARN(x)
int G4int
Definition: G4Types.hh:78
void setCrossSections(ICrossSections *c)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ interactionDistanceNN()

G4double G4INCL::CrossSections::interactionDistanceNN ( const ParticleSpecies aSpecies,
const G4double  kineticEnergy 
)

Definition at line 119 of file G4INCLCrossSections.cc.

119  {
120 // assert(aSpecies.theType==Proton || aSpecies.theType==Neutron || aSpecies.theType==Composite);
121 // assert(aSpecies.theA>0);
122  ThreeVector nullVector;
123  ThreeVector unitVector(0.,0.,1.);
124 
125  const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.theA;
126 
127  Particle protonProjectile(Proton, unitVector, nullVector);
128  protonProjectile.setEnergy(protonProjectile.getMass()+kineticEnergyPerNucleon);
129  protonProjectile.adjustMomentumFromEnergy();
130  Particle neutronProjectile(Neutron, unitVector, nullVector);
131  neutronProjectile.setEnergy(neutronProjectile.getMass()+kineticEnergyPerNucleon);
132  neutronProjectile.adjustMomentumFromEnergy();
133 
134  Particle protonTarget(Proton, nullVector, nullVector);
135  Particle neutronTarget(Neutron, nullVector, nullVector);
136  const G4double sigmapp = total(&protonProjectile, &protonTarget);
137  const G4double sigmapn = total(&protonProjectile, &neutronTarget);
138  const G4double sigmann = total(&neutronProjectile, &neutronTarget);
139  /* We compute the interaction distance from the largest of the NN cross
140  * sections. Note that this is different from INCL4.6, which just takes the
141  * average of the four, and will in general lead to a different geometrical
142  * cross section.
143  */
144  const G4double largestSigma = std::max(sigmapp, std::max(sigmapn, sigmann));
145  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
146 
147  return interactionDistance;
148  }
const G4double tenPi
G4double total(Particle const *const p1, Particle const *const p2)
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ interactionDistancePiN()

G4double G4INCL::CrossSections::interactionDistancePiN ( const G4double  projectileKineticEnergy)

Definition at line 86 of file G4INCLCrossSections.cc.

86  {
87  ThreeVector nullVector;
88  ThreeVector unitVector(0., 0., 1.);
89 
90  Particle piPlusProjectile(PiPlus, unitVector, nullVector);
91  piPlusProjectile.setEnergy(piPlusProjectile.getMass()+projectileKineticEnergy);
92  piPlusProjectile.adjustMomentumFromEnergy();
93  Particle piZeroProjectile(PiZero, unitVector, nullVector);
94  piZeroProjectile.setEnergy(piZeroProjectile.getMass()+projectileKineticEnergy);
95  piZeroProjectile.adjustMomentumFromEnergy();
96  Particle piMinusProjectile(PiMinus, unitVector, nullVector);
97  piMinusProjectile.setEnergy(piMinusProjectile.getMass()+projectileKineticEnergy);
98  piMinusProjectile.adjustMomentumFromEnergy();
99 
100  Particle protonTarget(Proton, nullVector, nullVector);
101  Particle neutronTarget(Neutron, nullVector, nullVector);
102  const G4double sigmapipp = total(&piPlusProjectile, &protonTarget);
103  const G4double sigmapipn = total(&piPlusProjectile, &neutronTarget);
104  const G4double sigmapi0p = total(&piZeroProjectile, &protonTarget);
105  const G4double sigmapi0n = total(&piZeroProjectile, &neutronTarget);
106  const G4double sigmapimp = total(&piMinusProjectile, &protonTarget);
107  const G4double sigmapimn = total(&piMinusProjectile, &neutronTarget);
108  /* We compute the interaction distance from the largest of the pi-N cross
109  * sections. Note that this is different from INCL4.6, which just takes the
110  * average of the six, and will in general lead to a different geometrical
111  * cross section.
112  */
113  const G4double largestSigma = std::max(sigmapipp, std::max(sigmapipn, std::max(sigmapi0p, std::max(sigmapi0n, std::max(sigmapimp,sigmapimn)))));
114  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
115 
116  return interactionDistance;
117  }
const G4double tenPi
G4double total(Particle const *const p1, Particle const *const p2)
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ NDeltaToNN()

G4double G4INCL::CrossSections::NDeltaToNN ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 62 of file G4INCLCrossSections.cc.

62  {
63  return theCrossSections->NDeltaToNN(p1,p2);
64  }
Here is the caller graph for this function:

◆ NNToNDelta()

G4double G4INCL::CrossSections::NNToNDelta ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 66 of file G4INCLCrossSections.cc.

66  {
67  return theCrossSections->NNToNDelta(p1,p2);
68  }
Here is the caller graph for this function:

◆ NNToxPiNN()

G4double G4INCL::CrossSections::NNToxPiNN ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 70 of file G4INCLCrossSections.cc.

70  {
71  return theCrossSections->NNToxPiNN(xpi,p1,p2);
72  }
Here is the caller graph for this function:

◆ piNToDelta()

G4double G4INCL::CrossSections::piNToDelta ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 74 of file G4INCLCrossSections.cc.

74  {
75  return theCrossSections->piNToDelta(p1,p2);
76  }
Here is the caller graph for this function:

◆ piNToxPiN()

G4double G4INCL::CrossSections::piNToxPiN ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 78 of file G4INCLCrossSections.cc.

78  {
79  return theCrossSections->piNToxPiN(xpi,p1,p2);
80  }
Here is the caller graph for this function:

◆ setCrossSections()

void G4INCL::CrossSections::setCrossSections ( ICrossSections c)

Definition at line 150 of file G4INCLCrossSections.cc.

150  {
151  theCrossSections = c;
152  }
Here is the caller graph for this function:

◆ total()

G4double G4INCL::CrossSections::total ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 58 of file G4INCLCrossSections.cc.

58  {
59  return theCrossSections->total(p1,p2);
60  }
Here is the caller graph for this function: