Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 piNToEtaN (Particle const *const p1, Particle const *const p2)
 
G4double piNToOmegaN (Particle const *const p1, Particle const *const p2)
 
G4double piNToEtaPrimeN (Particle const *const p1, Particle const *const p2)
 
G4double etaNToPiN (Particle const *const p1, Particle const *const p2)
 
G4double etaNToPiPiN (Particle const *const p1, Particle const *const p2)
 
G4double omegaNToPiN (Particle const *const p1, Particle const *const p2)
 
G4double omegaNToPiPiN (Particle const *const p1, Particle const *const p2)
 
G4double etaPrimeNToPiN (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNEta (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNEtaExclu (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNEtaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 
G4double NNToNDeltaEta (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNOmega (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNOmegaExclu (Particle const *const p1, Particle const *const p2)
 
G4double NNToNNOmegaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 
G4double NNToNDeltaOmega (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 ()
 
void initialize (Config const *const theConfig)
 

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, in (GeV/c)^(-2)

Definition at line 147 of file G4INCLCrossSections.cc.

147  {
148  return theCrossSections->calculateNNAngularSlope(energyCM, iso);
149  }

Here is the caller graph for this function:

void G4INCL::CrossSections::deleteCrossSections ( )

Definition at line 219 of file G4INCLCrossSections.cc.

219  {
220  delete theCrossSections;
221  theCrossSections = NULL;
222  }

Here is the caller graph for this function:

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

Definition at line 55 of file G4INCLCrossSections.cc.

55  {
56  return theCrossSections->elastic(p1,p2);
57  }

Here is the caller graph for this function:

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

Definition at line 95 of file G4INCLCrossSections.cc.

95  {
96  return theCrossSections->etaNToPiN(p1,p2);
97  }

Here is the caller graph for this function:

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

Definition at line 99 of file G4INCLCrossSections.cc.

99  {
100  return theCrossSections->etaNToPiPiN(p1,p2);
101  }

Here is the caller graph for this function:

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

Definition at line 111 of file G4INCLCrossSections.cc.

111  {
112  return theCrossSections->etaPrimeNToPiN(p1,p2);
113  }
void G4INCL::CrossSections::initialize ( Config const *const  theConfig)

Definition at line 224 of file G4INCLCrossSections.cc.

224  {
225  CrossSectionsType crossSections = theConfig->getCrossSectionsType();
226  if(crossSections == INCL46CrossSections)
227  setCrossSections(new CrossSectionsINCL46);
228  else if(crossSections == MultiPionsCrossSections)
229  setCrossSections(new CrossSectionsMultiPions);
230  else if(crossSections == TruncatedMultiPionsCrossSections) {
231  const G4int nMaxPi = theConfig->getMaxNumberMultipions();
232  if(nMaxPi>0)
233  setCrossSections(new CrossSectionsTruncatedMultiPions(nMaxPi));
234  else {
235  INCL_WARN("Truncated multipion cross sections were requested, but the specified maximum\n"
236  << "number of pions is <=0. Falling back to standard multipion cross-sections.\n");
237  setCrossSections(new CrossSectionsMultiPions);
238  }
239  } else if(crossSections == MultiPionsAndResonancesCrossSections)
240  setCrossSections(new CrossSectionsMultiPionsAndResonances);
241  }
#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:

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 184 of file G4INCLCrossSections.cc.

184  {
185 // assert(aSpecies.theType==Proton || aSpecies.theType==Neutron || aSpecies.theType==Composite);
186 // assert(aSpecies.theA>0);
187  ThreeVector nullVector;
188  ThreeVector unitVector(0.,0.,1.);
189 
190  const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.theA;
191 
192  Particle protonProjectile(Proton, unitVector, nullVector);
193  protonProjectile.setEnergy(protonProjectile.getMass()+kineticEnergyPerNucleon);
194  protonProjectile.adjustMomentumFromEnergy();
195  Particle neutronProjectile(Neutron, unitVector, nullVector);
196  neutronProjectile.setEnergy(neutronProjectile.getMass()+kineticEnergyPerNucleon);
197  neutronProjectile.adjustMomentumFromEnergy();
198 
199  Particle protonTarget(Proton, nullVector, nullVector);
200  Particle neutronTarget(Neutron, nullVector, nullVector);
201  const G4double sigmapp = total(&protonProjectile, &protonTarget);
202  const G4double sigmapn = total(&protonProjectile, &neutronTarget);
203  const G4double sigmann = total(&neutronProjectile, &neutronTarget);
204  /* We compute the interaction distance from the largest of the NN cross
205  * sections. Note that this is different from INCL4.6, which just takes the
206  * average of the four, and will in general lead to a different geometrical
207  * cross section.
208  */
209  const G4double largestSigma = std::max(sigmapp, std::max(sigmapn, sigmann));
210  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
211 
212  return interactionDistance;
213  }
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

Here is the call graph for this function:

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 151 of file G4INCLCrossSections.cc.

151  {
152  ThreeVector nullVector;
153  ThreeVector unitVector(0., 0., 1.);
154 
155  Particle piPlusProjectile(PiPlus, unitVector, nullVector);
156  piPlusProjectile.setEnergy(piPlusProjectile.getMass()+projectileKineticEnergy);
157  piPlusProjectile.adjustMomentumFromEnergy();
158  Particle piZeroProjectile(PiZero, unitVector, nullVector);
159  piZeroProjectile.setEnergy(piZeroProjectile.getMass()+projectileKineticEnergy);
160  piZeroProjectile.adjustMomentumFromEnergy();
161  Particle piMinusProjectile(PiMinus, unitVector, nullVector);
162  piMinusProjectile.setEnergy(piMinusProjectile.getMass()+projectileKineticEnergy);
163  piMinusProjectile.adjustMomentumFromEnergy();
164 
165  Particle protonTarget(Proton, nullVector, nullVector);
166  Particle neutronTarget(Neutron, nullVector, nullVector);
167  const G4double sigmapipp = total(&piPlusProjectile, &protonTarget);
168  const G4double sigmapipn = total(&piPlusProjectile, &neutronTarget);
169  const G4double sigmapi0p = total(&piZeroProjectile, &protonTarget);
170  const G4double sigmapi0n = total(&piZeroProjectile, &neutronTarget);
171  const G4double sigmapimp = total(&piMinusProjectile, &protonTarget);
172  const G4double sigmapimn = total(&piMinusProjectile, &neutronTarget);
173  /* We compute the interaction distance from the largest of the pi-N cross
174  * sections. Note that this is different from INCL4.6, which just takes the
175  * average of the six, and will in general lead to a different geometrical
176  * cross section.
177  */
178  const G4double largestSigma = std::max(sigmapipp, std::max(sigmapipn, std::max(sigmapi0p, std::max(sigmapi0n, std::max(sigmapimp,sigmapimn)))));
179  const G4double interactionDistance = std::sqrt(largestSigma/Math::tenPi);
180 
181  return interactionDistance;
182  }
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

Here is the call graph for this function:

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

Definition at line 63 of file G4INCLCrossSections.cc.

63  {
64  return theCrossSections->NDeltaToNN(p1,p2);
65  }

Here is the caller graph for this function:

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

Definition at line 67 of file G4INCLCrossSections.cc.

67  {
68  return theCrossSections->NNToNDelta(p1,p2);
69  }

Here is the caller graph for this function:

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

Definition at line 127 of file G4INCLCrossSections.cc.

127  {
128  return theCrossSections->NNToNDeltaEta(p1,p2);
129  }

Here is the caller graph for this function:

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

Definition at line 143 of file G4INCLCrossSections.cc.

143  {
144  return theCrossSections->NNToNDeltaOmega(p1,p2);
145  }

Here is the caller graph for this function:

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

Definition at line 115 of file G4INCLCrossSections.cc.

115  {
116  return theCrossSections->NNToNNEta(p1,p2);
117  }
G4double G4INCL::CrossSections::NNToNNEtaExclu ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 119 of file G4INCLCrossSections.cc.

119  {
120  return theCrossSections->NNToNNEtaExclu(p1,p2);
121  }

Here is the caller graph for this function:

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

Definition at line 123 of file G4INCLCrossSections.cc.

123  {
124  return theCrossSections->NNToNNEtaxPi(xpi,p1,p2);
125  }

Here is the caller graph for this function:

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

Definition at line 131 of file G4INCLCrossSections.cc.

131  {
132  return theCrossSections->NNToNNOmega(p1,p2);
133  }
G4double G4INCL::CrossSections::NNToNNOmegaExclu ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 135 of file G4INCLCrossSections.cc.

135  {
136  return theCrossSections->NNToNNOmegaExclu(p1,p2);
137  }

Here is the caller graph for this function:

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

Definition at line 139 of file G4INCLCrossSections.cc.

139  {
140  return theCrossSections->NNToNNOmegaxPi(xpi,p1,p2);
141  }

Here is the caller graph for this function:

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

Definition at line 71 of file G4INCLCrossSections.cc.

71  {
72  return theCrossSections->NNToxPiNN(xpi,p1,p2);
73  }

Here is the caller graph for this function:

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

Definition at line 103 of file G4INCLCrossSections.cc.

103  {
104  return theCrossSections->omegaNToPiN(p1,p2);
105  }

Here is the caller graph for this function:

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

Definition at line 107 of file G4INCLCrossSections.cc.

107  {
108  return theCrossSections->omegaNToPiPiN(p1,p2);
109  }

Here is the caller graph for this function:

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

Definition at line 75 of file G4INCLCrossSections.cc.

75  {
76  return theCrossSections->piNToDelta(p1,p2);
77  }

Here is the caller graph for this function:

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

Definition at line 83 of file G4INCLCrossSections.cc.

83  {
84  return theCrossSections->piNToEtaN(p1,p2);
85  }

Here is the caller graph for this function:

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

Definition at line 91 of file G4INCLCrossSections.cc.

91  {
92  return theCrossSections->piNToEtaPrimeN(p1,p2);
93  }
G4double G4INCL::CrossSections::piNToOmegaN ( Particle const *const  p1,
Particle const *const  p2 
)

Definition at line 87 of file G4INCLCrossSections.cc.

87  {
88  return theCrossSections->piNToOmegaN(p1,p2);
89  }

Here is the caller graph for this function:

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

Definition at line 79 of file G4INCLCrossSections.cc.

79  {
80  return theCrossSections->piNToxPiN(xpi,p1,p2);
81  }

Here is the caller graph for this function:

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

Definition at line 215 of file G4INCLCrossSections.cc.

215  {
216  theCrossSections = c;
217  }

Here is the caller graph for this function:

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

Definition at line 59 of file G4INCLCrossSections.cc.

59  {
60  return theCrossSections->total(p1,p2);
61  }

Here is the caller graph for this function: