Import Geant4 11.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2023-12-08 10:43:34 +01:00
parent dd1f179cda
commit 860a2b92bf
3962 changed files with 139318 additions and 164259 deletions
@@ -215,18 +215,17 @@ namespace G4INCL {
/// \brief Set the INCLXX datafile path
void setINCLXXDataFilePath(std::string const &path) { INCLXXDataFilePath=path; }
/// \brief Set the ABLAXX datafile path
#ifdef INCL_DEEXCITATION_ABLAXX
void setABLAXXDataFilePath(std::string const &path) { ablaxxDataFilePath=path; }
#endif
std::string const &getINCLXXDataFilePath() const {
return INCLXXDataFilePath;
}
#ifdef INCL_DEEXCITATION_ABLAXX
std::string const &getABLAv3pCxxDataFilePath() const {
return ablav3pCxxDataFilePath;
}
#endif
#ifdef INCL_DEEXCITATION_ABLACXX
std::string const &getABLAXXDataFilePath() const {
return ablaxxDataFilePath;
}
@@ -364,6 +363,10 @@ namespace G4INCL {
#endif
G4bool getInverseKinematics() const { return inverseKinematics; }
G4bool getsrcPairConfig() const { return srcPairCorrelations; }
G4float getsrcPairDist() const { return srcPairDistance; }
/// \brief Get the decay time threshold time
G4double getDecayTimeThreshold() const { return decayTimeThreshold; }
@@ -426,9 +429,6 @@ namespace G4INCL {
std::string deExcitationString;
DeExcitationType deExcitationType;
#ifdef INCL_DEEXCITATION_ABLAXX
std::string ablav3pCxxDataFilePath;
#endif
#ifdef INCL_DEEXCITATION_ABLACXX
std::string ablaxxDataFilePath;
#endif
#ifdef INCL_DEEXCITATION_ABLA07
@@ -459,6 +459,8 @@ namespace G4INCL {
G4double fermiMomentum;
G4double cutNN;
G4bool ann;
G4double bias;
@@ -504,6 +506,10 @@ namespace G4INCL {
#endif
G4bool inverseKinematics;
G4bool srcPairCorrelations;
G4float srcPairDistance;
G4double decayTimeThreshold;
@@ -74,10 +74,7 @@ namespace G4INCL {
enum DeExcitationType {
DeExcitationNone
#ifdef INCL_DEEXCITATION_ABLAXX
, DeExcitationABLAv3p
#endif
#ifdef INCL_DEEXCITATION_ABLACXX
, DeExcitationABLACXX
, DeExcitationABLAXX
#endif
#ifdef INCL_DEEXCITATION_ABLA07
, DeExcitationABLA07
@@ -122,7 +119,8 @@ namespace G4INCL {
MultiPionsCrossSections,
TruncatedMultiPionsCrossSections,
MultiPionsAndResonancesCrossSections,
StrangenessCrossSections
StrangenessCrossSections,
AntiparticlesCrossSections
};
// Enumerator for phase-space generator
@@ -67,6 +67,7 @@ namespace G4INCL {
struct EventInfo {
EventInfo() :
nParticles(0),
event(0),
eventBias((Float_t)0.0),
nRemnants(0),
projectileType(0),
@@ -81,6 +82,7 @@ namespace G4INCL {
nCollisions(0),
stoppingTime((Float_t)0.0),
EBalance((Float_t)0.0),
firstEBalance((Float_t)0.0),
pLongBalance((Float_t)0.0),
pTransBalance((Float_t)0.0),
nCascadeParticles(0),
@@ -91,6 +93,8 @@ namespace G4INCL {
nucleonAbsorption(false),
pionAbsorption(false),
nDecays(0),
nSrcCollisions(0),
nSrcPairs(0),
nBlockedCollisions(0),
nBlockedDecays(0),
effectiveImpactParameter((Float_t)0.0),
@@ -117,13 +121,13 @@ namespace G4INCL {
nCollisionAvatars(0),
nDecayAvatars(0),
nUnmergedSpectators(0),
nEnergyViolationInteraction(0),
event(0)
nEnergyViolationInteraction(0)
{
std::fill_n(A, maxSizeParticles, 0);
std::fill_n(Z, maxSizeParticles, 0);
std::fill_n(S, maxSizeParticles, 0);
std::fill_n(J, maxSizeParticles, 0);
std::fill_n(PDGCode, maxSizeParticles, 0);
std::fill_n(ParticleBias, maxSizeParticles, (Float_t)0.0);
std::fill_n(EKin, maxSizeParticles, (Float_t)0.0);
@@ -166,18 +170,22 @@ namespace G4INCL {
/** \brief Number of particles in the final state */
Short_t nParticles;
/** \brief Sequential number of the event in the event loop */
Int_t event;
/** \brief Particle mass number */
Short_t A[maxSizeParticles];
/** \brief Particle charge number */
Short_t Z[maxSizeParticles];
/** \brief Particle strangeness number */
Short_t S[maxSizeParticles];
/** \brief Particle angular momemtum */
Short_t J[maxSizeParticles];
/** \brief PDG numbering of the particles */
Int_t PDGCode[maxSizeParticles];
/** \brief Particle weight due to the bias */
Float_t ParticleBias[maxSizeParticles];
/** \brief Event bias */
Float_t eventBias;
/** \brief Particle weight due to the bias */
Float_t ParticleBias[maxSizeParticles];
/** \brief Particle kinetic energy [MeV] */
Float_t EKin[maxSizeParticles];
/** \brief Particle momentum, x component [MeV/c] */
@@ -199,8 +207,6 @@ namespace G4INCL {
Int_t parentResonancePDGCode[maxSizeParticles];
/** \brief Particle's parent resonance unique ID identifier */
Int_t parentResonanceID[maxSizeParticles];
/** \brief Emission time [fm/c] */
Float_t emissionTime[maxSizeParticles];
/** \brief History of the particle
*
* Condensed information about the de-excitation chain of a particle. For
@@ -222,34 +228,6 @@ namespace G4INCL {
std::vector<std::string> history;
/** \brief Number of remnants */
Short_t nRemnants;
/** \brief Remnant mass number */
Short_t ARem[maxSizeRemnants];
/** \brief Remnant charge number */
Short_t ZRem[maxSizeRemnants];
/** \brief Remnant strangeness number */
Short_t SRem[maxSizeRemnants];
/** \brief Remnant excitation energy [MeV] */
Float_t EStarRem[maxSizeRemnants];
/** \brief Remnant spin [\f$\hbar\f$] */
Float_t JRem[maxSizeRemnants];
/** \brief Remnant kinetic energy [MeV] */
Float_t EKinRem[maxSizeRemnants];
/** \brief Remnant momentum, x component [MeV/c] */
Float_t pxRem[maxSizeRemnants];
/** \brief Remnant momentum, y component [MeV/c] */
Float_t pyRem[maxSizeRemnants];
/** \brief Remnant momentum, z component [MeV/c] */
Float_t pzRem[maxSizeRemnants];
/** \brief Remnant momentum polar angle [radians] */
Float_t thetaRem[maxSizeRemnants];
/** \brief Remnant momentum azimuthal angle [radians] */
Float_t phiRem[maxSizeRemnants];
/** \brief Remnant angular momentum, x component [\f$\hbar\f$] */
Float_t jxRem[maxSizeRemnants];
/** \brief Remnant angular momentum, y component [\f$\hbar\f$] */
Float_t jyRem[maxSizeRemnants];
/** \brief Remnant angular momentum, z component [\f$\hbar\f$] */
Float_t jzRem[maxSizeRemnants];
/** \brief Projectile particle type */
Int_t projectileType;
/** \brief Mass number of the target nucleus */
@@ -274,6 +252,8 @@ namespace G4INCL {
Float_t stoppingTime;
/** \brief Energy-conservation balance [MeV] */
Float_t EBalance;
/** \brief First value for the energy-conservation balance [MeV] */
Float_t firstEBalance;
/** \brief Longitudinal momentum-conservation balance [MeV/c] */
Float_t pLongBalance;
/** \brief Transverse momentum-conservation balance [MeV/c] */
@@ -294,6 +274,10 @@ namespace G4INCL {
Bool_t pionAbsorption;
/** \brief Number of accepted Delta decays */
Int_t nDecays;
/** \brief Number of accepted SRC collisions */
Int_t nSrcCollisions;
/** \brief Number of src pairs */
Int_t nSrcPairs;
/** \brief Number of two-body collisions blocked by Pauli or CDPP */
Int_t nBlockedCollisions;
/** \brief Number of decays blocked by Pauli or CDPP */
@@ -348,8 +332,36 @@ namespace G4INCL {
Int_t nUnmergedSpectators;
/** \brief Number of attempted collisions/decays for which the energy-conservation algorithm failed to find a solution. */
Int_t nEnergyViolationInteraction;
/** \brief Sequential number of the event in the event loop */
Int_t event;
/** \brief Emission time [fm/c] */
Float_t emissionTime[maxSizeParticles];
/** \brief Remnant mass number */
Short_t ARem[maxSizeRemnants];
/** \brief Remnant charge number */
Short_t ZRem[maxSizeRemnants];
/** \brief Remnant strangeness number */
Short_t SRem[maxSizeRemnants];
/** \brief Remnant excitation energy [MeV] */
Float_t EStarRem[maxSizeRemnants];
/** \brief Remnant spin [\f$\hbar\f$] */
Float_t JRem[maxSizeRemnants];
/** \brief Remnant kinetic energy [MeV] */
Float_t EKinRem[maxSizeRemnants];
/** \brief Remnant momentum, x component [MeV/c] */
Float_t pxRem[maxSizeRemnants];
/** \brief Remnant momentum, y component [MeV/c] */
Float_t pyRem[maxSizeRemnants];
/** \brief Remnant momentum, z component [MeV/c] */
Float_t pzRem[maxSizeRemnants];
/** \brief Remnant momentum polar angle [radians] */
Float_t thetaRem[maxSizeRemnants];
/** \brief Remnant momentum azimuthal angle [radians] */
Float_t phiRem[maxSizeRemnants];
/** \brief Remnant angular momentum, x component [\f$\hbar\f$] */
Float_t jxRem[maxSizeRemnants];
/** \brief Remnant angular momentum, y component [\f$\hbar\f$] */
Float_t jyRem[maxSizeRemnants];
/** \brief Remnant angular momentum, z component [\f$\hbar\f$] */
Float_t jzRem[maxSizeRemnants];
/** \brief Particle kinetic energy, in inverse kinematics [MeV] */
Float_t EKinPrime[maxSizeParticles];
/** \brief Particle momentum, z component, in inverse kinematics [MeV/c] */
@@ -360,6 +372,7 @@ namespace G4INCL {
/** \brief Reset the EventInfo members */
void reset() {
nParticles = 0;
event = 0;
eventBias = (Float_t)0.0;
history.clear();
nRemnants = 0;
@@ -375,6 +388,7 @@ namespace G4INCL {
nCollisions = 0;
stoppingTime = (Float_t)0.0;
EBalance = (Float_t)0.0;
firstEBalance = (Float_t)0.0;
pLongBalance = (Float_t)0.0;
pTransBalance = (Float_t)0.0;
nCascadeParticles = 0;
@@ -385,6 +399,8 @@ namespace G4INCL {
nucleonAbsorption = false;
pionAbsorption = false;
nDecays = 0;
nSrcCollisions = 0;
nSrcPairs = 0;
nBlockedCollisions = 0;
nBlockedDecays = 0;
effectiveImpactParameter = (Float_t)0.0;
@@ -412,7 +428,6 @@ namespace G4INCL {
nDecayAvatars = 0;
nUnmergedSpectators = 0;
nEnergyViolationInteraction = 0;
event = 0;
}
@@ -257,12 +257,57 @@ namespace G4INCL {
theA = 1;
theZ = -1;
theS = -1;
break;
break;
case antiProton:
theA = -1;
theZ = -1;
theS = 0;
break;
break;
case XiMinus:
theA = 1;
theZ = -1;
theS = -2;
break;
case XiZero:
theA = 1;
theZ = 0;
theS = -2;
break;
case antiNeutron:
theA = -1;
theZ = 0;
theS = 0;
break;
case antiLambda:
theA = -1;
theZ = 0;
theS = 1;
break;
case antiSigmaMinus:
theA = -1;
theZ = 1;
theS = 1;
break;
case antiSigmaPlus:
theA = -1;
theZ = -1;
theS = 1;
break;
case antiSigmaZero:
theA = -1;
theZ = 0;
theS = 1;
break;
case antiXiMinus:
theA = -1;
theZ = 1;
theS = 2;
break;
case antiXiZero:
theA = -1;
theZ = 0;
theS = 2;
break;
case KPlus:
theA = 0;
theZ = 1;
@@ -298,7 +343,7 @@ namespace G4INCL {
theA = 0;
theZ = 0;
theS = 0;
break;
break;
case UnknownParticle:
theA = 0;
theZ = 0;
@@ -377,10 +422,10 @@ namespace G4INCL {
theType==DeltaZero || theType==DeltaMinus); }
/** \brief Is this a Sigma? */
G4bool isSigma() const { return (theType == SigmaPlus || theType == SigmaZero || theType == SigmaMinus); }
G4bool isSigma() const { return (theType == SigmaPlus || theType == SigmaZero || theType == SigmaMinus); }
/** \brief Is this a Kaon? */
G4bool isKaon() const { return (theType == KPlus || theType == KZero); }
G4bool isKaon() const { return (theType == KPlus || theType == KZero); }
/** \brief Is this an antiKaon? */
G4bool isAntiKaon() const { return (theType == KZeroBar || theType == KMinus); }
@@ -392,7 +437,7 @@ namespace G4INCL {
G4bool isNucleonorLambda() const { return (isNucleon() || isLambda()); }
/** \brief Is this an Hyperon? */
G4bool isHyperon() const { return (isLambda() || isSigma()); }
G4bool isHyperon() const { return (isLambda() || isSigma() ); } //|| isXi()
/** \brief Is this a Meson? */
G4bool isMeson() const { return (isPion() || isKaon() || isAntiKaon() || isEta() || isEtaPrime() || isOmega()); }
@@ -402,9 +447,30 @@ namespace G4INCL {
/** \brief Is this a Strange? */
G4bool isStrange() const { return (isKaon() || isAntiKaon() || isHyperon()); }
/** \brief Is this a Xi? */
G4bool isXi() const { return (theType == XiZero || theType == XiMinus); }
/** \brief Is this an antinucleon? */
G4bool isAntiNucleon() const { return (theType == G4INCL::antiProton ); } //|| theType == G4INCL::antiNeutron
G4bool isAntiNucleon() const { return (theType == antiProton || theType == antiNeutron); }
/** \brief Is this an antiSigma? */
G4bool isAntiSigma() const { return (theType == antiSigmaPlus || theType == antiSigmaZero || theType == antiSigmaMinus); }
/** \brief Is this an antiXi? */
G4bool isAntiXi() const { return (theType == antiXiZero || theType == antiXiMinus); }
/** \brief Is this an antiLambda? */
G4bool isAntiLambda() const { return (theType == antiLambda); }
/** \brief Is this an antiHyperon? */
G4bool isAntiHyperon() const { return (isAntiLambda() || isAntiSigma() || isAntiXi()); }
/** \brief Is this an antiBaryon? */
G4bool isAntiBaryon() const { return (isAntiNucleon() || isAntiHyperon()); }
/** \brief Is this an antiNucleon or an antiLambda? */
G4bool isAntiNucleonorAntiLambda() const { return (isAntiNucleon() || isAntiLambda()); }
/** \brief Returns the baryon number. */
G4int getA() const { return theA; }
@@ -478,8 +544,17 @@ namespace G4INCL {
case Lambda:
case SigmaPlus:
case SigmaZero:
case SigmaMinus:
case antiProton:
case SigmaMinus:
case antiProton:
case XiZero:
case XiMinus:
case antiNeutron:
case antiLambda:
case antiSigmaPlus:
case antiSigmaZero:
case antiSigmaMinus:
case antiXiZero:
case antiXiMinus:
case KPlus:
case KZero:
case KZeroBar:
@@ -489,7 +564,7 @@ namespace G4INCL {
case Eta:
case Omega:
case EtaPrime:
case Photon:
case Photon:
return ParticleTable::getINCLMass(theType);
break;
@@ -522,8 +597,17 @@ namespace G4INCL {
case Lambda:
case SigmaPlus:
case SigmaZero:
case SigmaMinus:
case antiProton:
case SigmaMinus:
case antiProton:
case XiZero:
case XiMinus:
case antiNeutron:
case antiLambda:
case antiSigmaPlus:
case antiSigmaZero:
case antiSigmaMinus:
case antiXiZero:
case antiXiMinus:
case KPlus:
case KZero:
case KZeroBar:
@@ -533,7 +617,7 @@ namespace G4INCL {
case Eta:
case Omega:
case EtaPrime:
case Photon:
case Photon:
return ParticleTable::getTableParticleMass(theType);
break;
@@ -566,8 +650,17 @@ namespace G4INCL {
case Lambda:
case SigmaPlus:
case SigmaZero:
case SigmaMinus:
case antiProton:
case SigmaMinus:
case antiProton:
case XiZero:
case XiMinus:
case antiNeutron:
case antiLambda:
case antiSigmaPlus:
case antiSigmaZero:
case antiSigmaMinus:
case antiXiZero:
case antiXiMinus:
case KPlus:
case KZero:
case KZeroBar:
@@ -577,7 +670,7 @@ namespace G4INCL {
case Eta:
case Omega:
case EtaPrime:
case Photon:
case Photon:
return ParticleTable::getRealMass(theType);
break;
@@ -644,7 +737,6 @@ namespace G4INCL {
return theQValue - (massINCLParent-massINCLDaughter-massINCLParticle);
}
//D
G4double getEmissionPbarQvalueCorrection(const G4int AParent, const G4int ZParent, const G4bool Victim) const {
G4int SParent = 0;
G4int SDaughter = 0;
@@ -658,7 +750,6 @@ namespace G4INCL {
ZDaughter = ZParent;
}
G4double theQValue; //same procedure as for normal case
const G4double massTableParent = ParticleTable::getTableMass(AParent,ZParent,SParent);
@@ -672,7 +763,6 @@ namespace G4INCL {
return theQValue - (massINCLParent-massINCLDaughter-massINCLParticle);
}
//D
/**\brief Computes correction on the transfer Q-value
*
@@ -292,6 +292,18 @@ namespace G4INCL {
/// \brief Get the type of antikaon
ParticleType getAntiKaonType(const G4int isosp);
/// \brief Get the type of xi
ParticleType getXiType(const G4int isosp);
/// \brief Get the type of antinucleon
ParticleType getAntiNucleonType(const G4int isosp);
/// \brief Get the type of antidelta
ParticleType getAntiXiType(const G4int isosp);
/// \brief Get the type of antisigma
ParticleType getAntiSigmaType(const G4int isosp);
/// \brief Get particle width (in s)
G4double getWidth(const ParticleType t);
@@ -65,14 +65,23 @@ namespace G4INCL {
Lambda,
SigmaPlus,
SigmaZero,
SigmaMinus,
SigmaMinus,
antiProton,
XiMinus,
XiZero,
antiNeutron,
antiLambda,
antiSigmaPlus,
antiSigmaZero,
antiSigmaMinus,
antiXiMinus,
antiXiZero,
KPlus,
KZero,
KZeroBar,
KMinus,
KShort,
KLong,
KLong,
// WARNING: if you add more particle types, you MUST add them BEFORE the
// UnknownParticle type! This is because UnknownParticle is used as a
// counter of the number of available particle types.
@@ -107,8 +107,8 @@ namespace G4INCL {
rngType = RanecuType;
autosaveFrequency = 10000;
maxNumberMultipions = -1;
crossSectionsString = "strangeness";
crossSectionsType = StrangenessCrossSections;
crossSectionsString = "antiparticles";
crossSectionsType = AntiparticlesCrossSections;
hadronizationTime = 0.;
#ifdef INCL_ROOT_USE
conciseROOTTree = false;
@@ -116,7 +116,7 @@ namespace G4INCL {
inverseKinematics = false;
decayTimeThreshold = 1.e-20;
bias = 1.;
atrestThreshold = 200.; //D
atrestThreshold = 200.;
}
std::string Config::summary() {
@@ -94,9 +94,11 @@ namespace G4INCL {
A[nParticles] = ARem[remnantIndex];
Z[nParticles] = ZRem[remnantIndex];
S[nParticles] = SRem[remnantIndex];
ParticleSpecies pt(A[nParticles],Z[nParticles],S[nParticles]);
PDGCode[nParticles] = pt.getPDGCode();
J[nParticles] = JRem[remnantIndex];
ParticleSpecies pt(A[nParticles],Z[nParticles],S[nParticles]);
PDGCode[nParticles] = pt.getPDGCode();
ParticleBias[nParticles] = Particle::getTotalBias();
emissionTime[nParticles] = stoppingTime;
@@ -105,22 +107,22 @@ namespace G4INCL {
py[nParticles] = pyRem[remnantIndex];
pz[nParticles] = pzRem[remnantIndex];
const G4double plab = std::sqrt( pxRem[remnantIndex]*pxRem[remnantIndex]
+pyRem[remnantIndex]*pyRem[remnantIndex]
+pzRem[remnantIndex]*pzRem[remnantIndex]);
if(plab != 0.0){
const G4double plab = std::sqrt(pxRem[remnantIndex]*pxRem[remnantIndex]
+pyRem[remnantIndex]*pyRem[remnantIndex]
+pzRem[remnantIndex]*pzRem[remnantIndex]);
if(plab != 0.0){
G4double pznorm = pzRem[remnantIndex]/plab;
if(pznorm>1.) pznorm = 1.;
else if(pznorm<-1.) pznorm = -1.;
theta[nParticles] = Math::toDegrees(Math::arcCos(pznorm));
phi[nParticles] = Math::toDegrees(std::atan2(pyRem[remnantIndex],pxRem[remnantIndex]));
EKin[nParticles] = EKinRem[remnantIndex];
}
else{
theta[nParticles] = 0.0;
phi[nParticles] = 0.0;
EKin[nParticles] = 0.0;
}
theta[nParticles] = Math::toDegrees(Math::arcCos(pznorm));
phi[nParticles] = Math::toDegrees(std::atan2(pyRem[remnantIndex],pxRem[remnantIndex]));
EKin[nParticles] = EKinRem[remnantIndex];
}
else{
theta[nParticles] = 0.0;
phi[nParticles] = 0.0;
EKin[nParticles] = 0.0;
}
origin[nParticles] = -1; // Origin: cascade
#ifdef INCLXX_IN_GEANT4_MODE
parentResonancePDGCode[nParticles] = 0; // No parent resonance
@@ -128,7 +130,7 @@ namespace G4INCL {
#endif
history.push_back(""); // history
nParticles++;
// assert(history.size()==(unsigned int)nParticles);
// assert(history.size()==(unsigned int)nParticles);
}
}
@@ -59,14 +59,14 @@ namespace G4INCL {
G4double last = f(x0);
InterpolationNode firstNode(last, x0, 0.);
nodes.push_back(firstNode);
// G4int skippedNodes = 0;
//G4int skippedNodes = 0;
for(unsigned i = 1; i < nNodes; i++) {
const G4double xi = x0 + i*(x1-x0)/((G4double)(nNodes-1));
// Make sure that the x vector is sorted (corresponding to a monotonous
// function)
const G4double value = f(xi);
if(value <= last) {
// ++skippedNodes;
//++skippedNodes;
continue;
}
InterpolationNode node(value, xi, 0.);
@@ -117,12 +117,57 @@ namespace G4INCL {
theA = 1;
theZ = -1;
theS = -1;
theType = G4INCL::SigmaMinus;
theType = G4INCL::SigmaMinus;
} else if(pS=="xi-" || pS=="x-") {
theA = 1;
theZ = -1;
theS = -2;
theType = G4INCL::XiMinus;
} else if(pS=="xi0" || pS=="x0") {
theA = 1;
theZ = 0;
theS = -2;
theType = G4INCL::XiZero;
} else if(pS=="pb" || pS=="antiproton") {
theA = -1;
theZ = -1;
theS = 0;
theType = G4INCL::antiProton;
theType = G4INCL::antiProton;
} else if(pS=="nb" || pS=="antineutron") {
theA = -1;
theZ = 0;
theS = 0;
theType = G4INCL::antiNeutron;
} else if(pS=="s+b" || pS=="antisigma+" || pS=="antisigmaplus") {
theA = -1;
theZ = -1;
theS = 1;
theType = G4INCL::antiSigmaPlus;
} else if(pS=="s0b" || pS=="antisigma0" || pS=="antisigmazero") {
theA = -1;
theZ = 0;
theS = 1;
theType = G4INCL::antiSigmaZero;
} else if(pS=="s-b" || pS=="antisigma-" || pS=="antisigmaminus") { //Sm = Samarium; Whats wrong with the sign?
theA = -1;
theZ = 1;
theS = 1;
theType = G4INCL::antiSigmaMinus;
} else if(pS=="antilambda" || pS=="lb" || pS=="l0b") {
theA = -1;
theZ = 0;
theS = 1;
theType = G4INCL::antiLambda;
} else if(pS=="antixi-" || pS=="x-b") {
theA = -1;
theZ = 1;
theS = 2;
theType = G4INCL::antiXiMinus;
} else if(pS=="antixi0" || pS=="x0b") {
theA = -1;
theZ = 0;
theS = 2;
theType = G4INCL::antiXiZero;
} else if(pS=="k+" || pS=="kaon+" || pS=="kplus" || pS=="kaonplus") {
theA = 0;
theZ = 1;
@@ -187,7 +232,7 @@ namespace G4INCL {
theA = 0;
theZ = 0;
theS = 0;
theType = G4INCL::Photon;
theType = G4INCL::Photon;
} else
parseNuclide(pS);
}
@@ -291,7 +336,7 @@ namespace G4INCL {
std::string firstSection(pS.substr(0,endFirstSection));
std::string secondSection(pS.substr(beginSecondSection,std::string::npos));
std::stringstream parsingStream;
if(std::isalpha(firstSection.at(0)) && std::isdigit(firstSection.at(endFirstSection-1))) { // Hypernucleus, must be Fe56-1 style
std::stringstream parseStrangeness;
parseStrangeness.str(secondSection);
@@ -369,89 +414,116 @@ namespace G4INCL {
G4int ParticleSpecies::getPDGCode() const {
switch (theType) {
case Proton:
return 2212;
break;
case Neutron:
return 2112;
break;
case DeltaPlusPlus:
return 2224;
break;
case DeltaPlus:
return 2214;
break;
case DeltaZero:
return 2114;
break;
case DeltaMinus:
return 1114;
break;
case PiPlus:
return 211;
break;
case PiZero:
return 111;
break;
case PiMinus:
return -211;
break;
case Eta:
return 221;
break;
case Omega:
return 223;
break;
case EtaPrime:
return 331;
break;
case Photon:
return 22;
break;
case Lambda:
return 3122;
break;
case SigmaPlus:
return 3222;
break;
case SigmaZero:
return 3212;
break;
case SigmaMinus:
return 3112;
break;
case Proton:
return 2212;
break;
case Neutron:
return 2112;
break;
case DeltaPlusPlus:
return 2224;
break;
case DeltaPlus:
return 2214;
break;
case DeltaZero:
return 2114;
break;
case DeltaMinus:
return 1114;
break;
case PiPlus:
return 211;
break;
case PiZero:
return 111;
break;
case PiMinus:
return -211;
break;
case Eta:
return 221;
break;
case Omega:
return 223;
break;
case EtaPrime:
return 331;
break;
case Photon:
return 22;
break;
case Lambda:
return 3122;
break;
case SigmaPlus:
return 3222;
break;
case SigmaZero:
return 3212;
break;
case SigmaMinus:
return 3112;
break;
case antiProton:
return -2212;
break;
case KPlus:
return 321;
break;
case KZero:
return 311;
break;
case KZeroBar:
return -311;
break;
case KShort:
return 310;
break;
case KLong:
return 130;
break;
case KMinus:
return -321;
break;
case Composite:
if(theA == 1 && theZ == 1 && theS == 0) return 2212;
else if(theA == 1 && theZ == 0 && theS == 0) return 2112;
else if(theA == 1 && theZ == 0 && theS == -1) return 3122;
else return theA+theZ*1000-theS*1e6; // Here -theS because hyper-nucleus -> theS < 0
break;
default:
INCL_ERROR("ParticleSpecies::getPDGCode: Unknown particle type." << '\n');
return 0;
break;
}
break;
case XiMinus:
return 3312;
break;
case XiZero:
return 3322;
break;
case antiNeutron:
return -2112;
break;
case antiLambda:
return -3122;
break;
case antiSigmaPlus:
return -3222;
break;
case antiSigmaZero:
return -3212;
break;
case antiSigmaMinus:
return -3112;
break;
case antiXiMinus:
return -3312;
break;
case antiXiZero:
return -3322;
break;
case KPlus:
return 321;
break;
case KZero:
return 311;
break;
case KZeroBar:
return -311;
break;
case KShort:
return 310;
break;
case KLong:
return 130;
break;
case KMinus:
return -321;
break;
case Composite:
if(theA == 1 && theZ == 1 && theS == 0) return 2212;
else if(theA == 1 && theZ == 0 && theS == 0) return 2112;
else if(theA == 1 && theZ == 0 && theS == -1) return 3122;
else return theA+theZ*1000-theS*1e6; // Here -theS because hyper-nucleus -> theS < 0
break;
default:
INCL_ERROR("ParticleSpecies::getPDGCode: Unknown particle type." << '\n');
return 0;
break;
}
}
}
@@ -63,8 +63,8 @@ namespace G4INCL {
const G4double theINCLNucleonMass = 938.2796;
const G4double theINCLPionMass = 138.0;
const G4double theINCLLambdaMass = 1115.683;
// const G4double theINCLSigmaMass = 1197.45;
// const G4double theINCLKaonMass = 497.614;
//const G4double theINCLSigmaMass = 1197.45;
//const G4double theINCLKaonMass = 497.614;
const G4double theINCLEtaMass = 547.862;
const G4double theINCLOmegaMass = 782.65;
const G4double theINCLEtaPrimeMass = 957.78;
@@ -78,7 +78,16 @@ namespace G4INCL {
G4ThreadLocal G4double SigmaZeroMass = 0.0;
G4ThreadLocal G4double SigmaMinusMass = 0.0;
G4ThreadLocal G4double LambdaMass = 0.0;
G4ThreadLocal G4double XiMinusMass = 0.0;
G4ThreadLocal G4double XiZeroMass = 0.0;
G4ThreadLocal G4double antiProtonMass = 0.0;
G4ThreadLocal G4double antiNeutronMass = 0.0;
G4ThreadLocal G4double antiSigmaPlusMass = 0.0;
G4ThreadLocal G4double antiSigmaZeroMass = 0.0;
G4ThreadLocal G4double antiSigmaMinusMass = 0.0;
G4ThreadLocal G4double antiLambdaMass = 0.0;
G4ThreadLocal G4double antiXiMinusMass = 0.0;
G4ThreadLocal G4double antiXiZeroMass = 0.0;
G4ThreadLocal G4double KPlusMass = 0.0;
G4ThreadLocal G4double KZeroMass = 0.0;
G4ThreadLocal G4double KZeroBarMass = 0.0;
@@ -89,7 +98,7 @@ namespace G4INCL {
G4ThreadLocal G4double omegaMass = 0.0;
G4ThreadLocal G4double etaPrimeMass = 0.0;
G4ThreadLocal G4double photonMass = 0.0;
// Hard-coded values of the real particle masses (MeV/c^2)
G4ThreadLocal G4double theRealProtonMass = 938.27203;
G4ThreadLocal G4double theRealNeutronMass = 939.56536;
@@ -100,6 +109,15 @@ namespace G4INCL {
G4ThreadLocal G4double theRealSigmaZeroMass = 1192.64;
G4ThreadLocal G4double theRealSigmaMinusMass = 1197.45;
G4ThreadLocal G4double theRealAntiProtonMass = 938.27203;
G4ThreadLocal G4double theRealXiMinusMass = 1321.71;
G4ThreadLocal G4double theRealXiZeroMass = 1314.86;
G4ThreadLocal G4double theRealAntiNeutronMass = 939.56536;
G4ThreadLocal G4double theRealAntiLambdaMass = 1115.683;
G4ThreadLocal G4double theRealAntiSigmaPlusMass = 1189.37;
G4ThreadLocal G4double theRealAntiSigmaZeroMass = 1192.64;
G4ThreadLocal G4double theRealAntiSigmaMinusMass = 1197.45;
G4ThreadLocal G4double theRealAntiXiMinusMass = 1321.71;
G4ThreadLocal G4double theRealAntiXiZeroMass = 1314.86;
G4ThreadLocal G4double theRealChargedKaonMass = 493.677;
G4ThreadLocal G4double theRealNeutralKaonMass = 497.614;
G4ThreadLocal G4double theRealEtaMass = 547.862;
@@ -120,6 +138,14 @@ namespace G4INCL {
const G4double theSigmaPlusWidth = 8.018e-11;
const G4double theSigmaZeroWidth = 7.4e-20;
const G4double theSigmaMinusWidth = 1.479e-10;
//const G4double theXiMinusWidth = 1.639e-10;
//const G4double theXiZeroWidth = 2.90e-10;
//const G4double theAntiLambdaWidth = 2.632e-10;
//const G4double theAntiSigmaPlusWidth = 8.018e-11;
//const G4double theAntiSigmaZeroWidth = 7.4e-20;
//const G4double theAntiSigmaMinusWidth = 1.479e-10;
//const G4double theAntiXiMinusWidth = 1.639e-10;
//const G4double theAntiXiZeroWidth = 2.90e-10;
G4ThreadLocal G4double piPlusWidth = 0.0;
G4ThreadLocal G4double piMinusWidth = 0.0;
G4ThreadLocal G4double piZeroWidth = 0.0;
@@ -134,7 +160,14 @@ namespace G4INCL {
G4ThreadLocal G4double KMinusWidth = 0.0;
G4ThreadLocal G4double KShortWidth = 0.0;
G4ThreadLocal G4double KLongWidth = 0.0;
G4ThreadLocal G4double XiMinusWidth = 0.0;
G4ThreadLocal G4double XiZeroWidth = 0.0;
G4ThreadLocal G4double antiLambdaWidth = 0.0;
G4ThreadLocal G4double antiSigmaZeroWidth = 0.0;
G4ThreadLocal G4double antiSigmaMinusWidth = 0.0;
G4ThreadLocal G4double antiSigmaPlusWidth = 0.0;
G4ThreadLocal G4double antiXiZeroWidth = 0.0;
G4ThreadLocal G4double antiXiMinusWidth = 0.0;
const G4int mediumNucleiTableSize = 30;
@@ -301,9 +334,13 @@ namespace G4INCL {
const G4double theINCLProtonSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
const G4double theINCLNeutronSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
const G4double theINCLLambdaSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
//const G4double theINCLantiProtonSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
const G4double theINCLantiProtonSeparationEnergy = 0.;
G4ThreadLocal G4double protonSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
G4ThreadLocal G4double neutronSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
G4ThreadLocal G4double lambdaSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
//G4ThreadLocal G4double antiprotonSeparationEnergy = INCL_DEFAULT_SEPARATION_ENERGY;
//G4ThreadLocal G4double antiprotonSeparationEnergy = 0.;
#undef INCL_DEFAULT_SEPARATION_ENERGY
G4ThreadLocal G4double rpCorrelationCoefficient[UnknownParticle];
@@ -337,25 +374,38 @@ namespace G4INCL {
void initialize(Config const * const theConfig /*=0*/) {
protonMass = theINCLNucleonMass;
neutronMass = theINCLNucleonMass;
neutronMass = theINCLNucleonMass;
piPlusMass = theINCLPionMass;
piMinusMass = theINCLPionMass;
piZeroMass = theINCLPionMass;
etaMass = theINCLEtaMass;
omegaMass = theINCLOmegaMass;
etaPrimeMass = theINCLEtaPrimeMass;
photonMass = theINCLPhotonMass;
SigmaPlusMass = theRealSigmaPlusMass;
SigmaMinusMass = theRealSigmaMinusMass;
SigmaZeroMass = theRealSigmaZeroMass;
LambdaMass = theINCLLambdaMass;
antiProtonMass = theRealAntiProtonMass;
LambdaMass = theINCLLambdaMass;
KPlusMass = theRealChargedKaonMass;
KZeroMass = theRealNeutralKaonMass;
KZeroBarMass = theRealNeutralKaonMass;
KShortMass = theRealNeutralKaonMass;
KLongMass = theRealNeutralKaonMass;
KMinusMass = theRealChargedKaonMass;
etaMass = theINCLEtaMass;
omegaMass = theINCLOmegaMass;
etaPrimeMass = theINCLEtaPrimeMass;
photonMass = theINCLPhotonMass;
antiProtonMass = theRealAntiProtonMass;
XiZeroMass = theRealXiZeroMass;
XiMinusMass = theRealXiMinusMass;
antiNeutronMass = theRealAntiNeutronMass;
antiSigmaPlusMass = theRealAntiSigmaPlusMass;
antiSigmaMinusMass = theRealAntiSigmaMinusMass;
antiSigmaZeroMass = theRealAntiSigmaZeroMass;
antiLambdaMass = theRealAntiLambdaMass; //!
antiXiZeroMass = theRealAntiXiZeroMass;
antiXiMinusMass = theRealAntiXiMinusMass;
if(theConfig && theConfig->getUseRealMasses()) {
getTableMass = getRealMass;
getTableParticleMass = getRealMass;
@@ -375,20 +425,32 @@ namespace G4INCL {
G4ParticleTable *theG4ParticleTable = G4ParticleTable::GetParticleTable();
theG4IonTable = theG4ParticleTable->GetIonTable();
theRealProtonMass = theG4ParticleTable->FindParticle("proton")->GetPDGMass() / MeV;
theRealNeutronMass = theG4ParticleTable->FindParticle("neutron")->GetPDGMass() / MeV;
theRealNeutronMass = theG4ParticleTable->FindParticle("neutron")->GetPDGMass() / MeV;
theRealChargedPiMass = theG4ParticleTable->FindParticle("pi+")->GetPDGMass() / MeV;
theRealPiZeroMass = theG4ParticleTable->FindParticle("pi0")->GetPDGMass() / MeV;
theRealEtaMass = theG4ParticleTable->FindParticle("eta")->GetPDGMass() / MeV;
theRealOmegaMass = theG4ParticleTable->FindParticle("omega")->GetPDGMass() / MeV;
theRealEtaPrimeMass = theG4ParticleTable->FindParticle("eta_prime")->GetPDGMass() / MeV;
theRealPhotonMass = theG4ParticleTable->FindParticle("gamma")->GetPDGMass() / MeV;
theRealSigmaPlusMass = theG4ParticleTable->FindParticle("sigma+")->GetPDGMass() / MeV;
theRealSigmaZeroMass = theG4ParticleTable->FindParticle("sigma0")->GetPDGMass() / MeV;
theRealSigmaMinusMass = theG4ParticleTable->FindParticle("sigma-")->GetPDGMass() / MeV;
theRealLambdaMass = theG4ParticleTable->FindParticle("lambda")->GetPDGMass() / MeV;
theRealLambdaMass = theG4ParticleTable->FindParticle("lambda")->GetPDGMass() / MeV;
theRealChargedKaonMass = theG4ParticleTable->FindParticle("kaon+")->GetPDGMass() / MeV;
theRealNeutralKaonMass = theG4ParticleTable->FindParticle("kaon0")->GetPDGMass() / MeV;
theRealAntiProtonMass = theG4ParticleTable->FindParticle("anti_proton")->GetPDGMass() / MeV;
theRealAntiProtonMass = theG4ParticleTable->FindParticle("anti_proton")->GetPDGMass() / MeV;
theRealAntiNeutronMass = theG4ParticleTable->FindParticle("anti_neutron")->GetPDGMass() / MeV;
theRealXiZeroMass = theG4ParticleTable->FindParticle("xi0")->GetPDGMass() / MeV;
theRealXiMinusMass = theG4ParticleTable->FindParticle("xi-")->GetPDGMass() / MeV;
theRealAntiSigmaPlusMass = theG4ParticleTable->FindParticle("anti_sigma+")->GetPDGMass() / MeV;
theRealAntiSigmaZeroMass = theG4ParticleTable->FindParticle("anti_sigma0")->GetPDGMass() / MeV;
theRealAntiSigmaMinusMass = theG4ParticleTable->FindParticle("anti_sigma-")->GetPDGMass() / MeV;
theRealAntiLambdaMass = theG4ParticleTable->FindParticle("anti_lambda")->GetPDGMass() / MeV;
theRealAntiXiZeroMass = theG4ParticleTable->FindParticle("anti_xi0")->GetPDGMass() / MeV;
theRealAntiXiMinusMass = theG4ParticleTable->FindParticle("anti_xi-")->GetPDGMass() / MeV;
#endif
minDeltaMass = theRealNeutronMass + theRealChargedPiMass + 0.5;
@@ -493,7 +555,7 @@ namespace G4INCL {
} else if(t == SigmaZero) {
return 0;
} else if(t == SigmaMinus) {
return -2;
return -2;
} else if(t == KPlus) {
return 1;
} else if(t == KZero) {
@@ -515,7 +577,25 @@ namespace G4INCL {
} else if(t == Photon) {
return 0;
} else if(t == antiProton) {
return -1;
} else if(t == XiMinus) {
return -1;
} else if(t == XiZero) {
return 1;
} else if(t == antiNeutron) {
return 1;
} else if(t == antiLambda) {
return 0;
} else if(t == antiSigmaPlus) {
return -2;
} else if(t == antiSigmaZero) {
return 0;
} else if(t == antiSigmaMinus) {
return 2;
} else if(t == antiXiMinus) {
return 1;
} else if(t == antiXiZero) {
return -1;
}
INCL_ERROR("Requested isospin of an unknown particle!");
return -10; // Unknown
@@ -529,7 +609,7 @@ namespace G4INCL {
else
return getShortName(sp.theType);
}
std::string getName(const ParticleSpecies &sp) {
if(sp.theType==Composite && sp.theS == 0)
return getName(sp.theA,sp.theZ);
@@ -590,9 +670,27 @@ namespace G4INCL {
} else if(p == G4INCL::SigmaZero) {
return std::string("sigma0");
} else if(p == G4INCL::SigmaMinus) {
return std::string("sigma-");
return std::string("sigma-");
} else if(p == G4INCL::antiProton) {
return std::string("antiproton");
} else if(p == G4INCL::XiMinus) {
return std::string("xi-");
} else if(p == G4INCL::XiZero) {
return std::string("xi0");
} else if(p == G4INCL::antiNeutron) {
return std::string("antineutron");
} else if(p == G4INCL::antiSigmaPlus) {
return std::string("antisigma+");
} else if(p == G4INCL::antiSigmaZero) {
return std::string("antisigma0");
} else if(p == G4INCL::antiSigmaMinus) {
return std::string("antisigma-");
} else if(p == G4INCL::antiLambda) {
return std::string("antilambda");
} else if(p == G4INCL::antiXiMinus) {
return std::string("antixi-");
} else if(p == G4INCL::antiXiZero) {
return std::string("antixi0");
} else if(p == G4INCL::KPlus) {
return std::string("kaon+");
} else if(p == G4INCL::KZero) {
@@ -614,7 +712,7 @@ namespace G4INCL {
} else if(p == G4INCL::EtaPrime) {
return std::string("etaprime");
} else if(p == G4INCL::Photon) {
return std::string("photon");
return std::string("photon");
}
return std::string("unknown");
}
@@ -645,9 +743,27 @@ namespace G4INCL {
} else if(p == G4INCL::SigmaZero) {
return std::string("s0");
} else if(p == G4INCL::SigmaMinus) {
return std::string("s-");
return std::string("s-");
} else if(p == G4INCL::antiProton) {
return std::string("pb");
return std::string("pb");
} else if(p == G4INCL::XiMinus) {
return std::string("x-");
} else if(p == G4INCL::XiZero) {
return std::string("x0");
} else if(p == G4INCL::antiNeutron) {
return std::string("nb");
} else if(p == G4INCL::antiSigmaPlus) {
return std::string("s+b");
} else if(p == G4INCL::antiSigmaZero) {
return std::string("s0b");
} else if(p == G4INCL::antiSigmaMinus) {
return std::string("s-b");
} else if(p == G4INCL::antiLambda) {
return std::string("lb");
} else if(p == G4INCL::antiXiMinus) {
return std::string("x-b");
} else if(p == G4INCL::antiXiZero) {
return std::string("x0b");
} else if(p == G4INCL::KPlus) {
return std::string("k+");
} else if(p == G4INCL::KZero) {
@@ -694,7 +810,25 @@ namespace G4INCL {
} else if(pt == Lambda) {
return LambdaMass;
} else if(pt == antiProton) {
return antiProtonMass;
return antiProtonMass;
} else if(pt == XiMinus) {
return XiMinusMass;
} else if(pt == XiZero) {
return XiZeroMass;
} else if(pt == antiNeutron) {
return antiNeutronMass;
} else if(pt == antiSigmaPlus) {
return antiSigmaPlusMass;
} else if(pt == antiSigmaMinus) {
return antiSigmaMinusMass;
} else if(pt == antiSigmaZero) {
return antiSigmaZeroMass;
} else if(pt == antiLambda) {
return antiLambdaMass;
} else if(pt == antiXiMinus) {
return antiXiMinusMass;
} else if(pt == antiXiZero) {
return antiXiZeroMass;
} else if(pt == KPlus) {
return KPlusMass;
} else if(pt == KZero) {
@@ -714,9 +848,7 @@ namespace G4INCL {
} else if(pt == EtaPrime) {
return etaPrimeMass;
} else if(pt == Photon) {
return photonMass;
return photonMass;
} else {
INCL_ERROR("getMass : Unknown particle type." << '\n');
return 0.0;
@@ -738,31 +870,6 @@ namespace G4INCL {
case PiZero:
return theRealPiZeroMass;
break;
case SigmaPlus:
return theRealSigmaPlusMass;
break;
case SigmaZero:
return theRealSigmaZeroMass;
break;
case SigmaMinus:
return theRealSigmaMinusMass;
break;
case Lambda:
return theRealLambdaMass;
break;
case antiProton:
return theRealAntiProtonMass;
break;
case KPlus:
case KMinus:
return theRealChargedKaonMass;
break;
case KZero:
case KZeroBar:
case KShort:
case KLong:
return theRealNeutralKaonMass;
break;
case Eta:
return theRealEtaMass;
break;
@@ -774,7 +881,59 @@ namespace G4INCL {
break;
case Photon:
return theRealPhotonMass;
break;
case Lambda:
return theRealLambdaMass;
break;
case KPlus:
case KMinus:
return theRealChargedKaonMass;
break;
case KZero:
case KZeroBar:
case KShort:
case KLong:
return theRealNeutralKaonMass;
break;
case SigmaPlus:
return theRealSigmaPlusMass;
break;
case SigmaZero:
return theRealSigmaZeroMass;
break;
case SigmaMinus:
return theRealSigmaMinusMass;
break;
case antiProton:
return theRealAntiProtonMass;
break;
case XiMinus:
return theRealXiMinusMass;
break;
case XiZero:
return theRealXiZeroMass;
break;
case antiNeutron:
return theRealAntiNeutronMass;
break;
case antiSigmaPlus:
return theRealAntiSigmaPlusMass;
break;
case antiSigmaZero:
return theRealAntiSigmaZeroMass;
break;
case antiSigmaMinus:
return theRealAntiSigmaMinusMass;
break;
case antiXiMinus:
return theRealAntiXiMinusMass;
break;
case antiXiZero:
return theRealAntiXiZeroMass;
break;
case antiLambda:
return theRealAntiLambdaMass;
break;
default:
INCL_ERROR("Particle::getRealMass : Unknown particle type." << '\n');
return 0.0;
@@ -851,7 +1010,8 @@ namespace G4INCL {
return (*getTableParticleMass)(p.theType);
}
G4int getMassNumber(const ParticleType t) {
G4int getMassNumber(const ParticleType t) {
switch(t) {
case Proton:
case Neutron:
@@ -862,10 +1022,19 @@ namespace G4INCL {
case SigmaPlus:
case SigmaZero:
case SigmaMinus:
case Lambda:
case Lambda:
case XiZero:
case XiMinus:
return 1;
break;
case antiProton:
break;
case antiProton:
case antiNeutron:
case antiSigmaPlus:
case antiSigmaZero:
case antiSigmaMinus:
case antiLambda:
case antiXiZero:
case antiXiMinus:
return -1;
break;
case PiPlus:
@@ -899,8 +1068,10 @@ namespace G4INCL {
case PiPlus:
case SigmaPlus:
case KPlus:
case antiSigmaMinus:
case antiXiMinus:
return 1;
break;
break;
case Neutron:
case DeltaZero:
case PiZero:
@@ -914,15 +1085,22 @@ namespace G4INCL {
case Omega:
case EtaPrime:
case Photon:
case XiZero:
case antiNeutron:
case antiLambda:
case antiSigmaZero:
case antiXiZero:
return 0;
break;
case DeltaMinus:
case PiMinus:
case SigmaMinus:
case KMinus:
case antiProton:
case KMinus:
case antiProton:
case XiMinus:
case antiSigmaPlus:
return -1;
break;
break;
default:
return 0;
break;
@@ -943,10 +1121,23 @@ namespace G4INCL {
case Eta:
case Omega:
case EtaPrime:
case Photon:
case antiProton:
case Photon:
case antiProton:
case antiNeutron:
return 0;
break;
case XiMinus:
case XiZero:
case antiXiMinus:
case antiXiZero:
return 2;
break;
case antiLambda:
case antiSigmaPlus:
case antiSigmaZero:
case antiSigmaMinus:
return 1;
break;
case Lambda:
case SigmaPlus:
case SigmaZero:
@@ -964,7 +1155,7 @@ namespace G4INCL {
break;
case KLong:
return 0;
break;
break;
default:
return 0;
break;
@@ -1115,6 +1306,8 @@ namespace G4INCL {
return theINCLNeutronSeparationEnergy;
else if(t==Lambda)
return theINCLLambdaSeparationEnergy;
else if(t==antiProton)
return theINCLantiProtonSeparationEnergy;
else {
INCL_ERROR("ParticleTable::getSeparationEnergyINCL : Unknown particle type." << '\n');
return 0.0;
@@ -1285,7 +1478,6 @@ namespace G4INCL {
}
}
ParticleType getSigmaType(const G4int isosp) {
// assert(isosp == -2 || isosp == 0 || isosp == 2);
if (isosp == -2) {
@@ -1299,7 +1491,49 @@ namespace G4INCL {
}
}
ParticleType getXiType(const G4int isosp) {
// assert(isosp == -1 || isosp == 1);
if (isosp == -1) {
return XiMinus;
}
else {
return XiZero;
}
}
/*ParticleType getAntiNucleonType(const G4int isosp) {
// assert(isosp == -1); //|| isosp == 1
if (isosp == -1) {
return antiProton;
}
else {
return antiNeutron;
}
}*/
ParticleType getAntiSigmaType(const G4int isosp) {
// assert(isosp == -2 || isosp == 0 || isosp == 2);
if (isosp == -2) {
return antiSigmaPlus;
}
else if (isosp == 0) {
return antiSigmaZero;
}
else {
return antiSigmaMinus;
}
}
ParticleType getAntiXiType(const G4int isosp) {
// assert(isosp == -1 || isosp == 1);
if (isosp == -1) {
return antiXiZero;
}
else {
return antiXiMinus;
}
}
ParticleType getKaonType(const G4int isosp) {
// assert(isosp == -1 || isosp == 1);
if (isosp == -1) {
@@ -1320,14 +1554,8 @@ namespace G4INCL {
}
}
G4double getWidth(const ParticleType pt) {
// assert(pt == PiPlus || pt == PiMinus || pt == PiZero || pt == Eta || pt == Omega ||
// pt == EtaPrime || pt == KShort || pt == KLong || pt== KPlus || pt == KMinus || pt == Lambda ||
// pt == SigmaPlus || pt == SigmaZero || pt == SigmaMinus
// /* || pt == antiLambda || pt == antiSigmaPlus || pt == antiSigmaZero || pt == antiSigmaMinus ||
// pt == XiMinus || pt == XiZero || pt == antiXiZero || pt == antiXiMinus || */);
// assert(pt == PiPlus || pt == PiMinus || pt == PiZero || pt == Eta || pt == Omega || pt == EtaPrime || pt == KShort || pt == KLong || pt== KPlus || pt == KMinus || pt == Lambda || pt == SigmaPlus || pt == SigmaZero || pt == SigmaMinus || pt == antiLambda || pt == antiSigmaPlus || pt == antiSigmaZero || pt == antiSigmaMinus || pt == XiMinus || pt == XiZero || pt == antiXiZero || pt == antiXiMinus || );
if(pt == PiPlus) {
return piPlusWidth;
} else if(pt == PiMinus) {
@@ -1354,8 +1582,24 @@ namespace G4INCL {
return KShortWidth;
} else if(pt == KLong) {
return KLongWidth;
} else if(pt == Lambda) {
} else if(pt == Lambda) {
return LambdaWidth;
} else if(pt == XiMinus) {
return XiMinusWidth;
} else if(pt == XiZero) {
return XiZeroWidth;
} else if(pt == antiSigmaPlus) {
return antiSigmaPlusWidth;
} else if(pt == antiSigmaZero) {
return antiSigmaZeroWidth;
} else if(pt == antiSigmaMinus) {
return antiSigmaMinusWidth;
} else if(pt == antiLambda) {
return antiLambdaWidth;
} else if(pt == antiXiMinus) {
return antiXiMinusWidth;
} else if(pt == antiXiZero) {
return antiXiZeroWidth;
} else {
INCL_ERROR("getWidth : Unknown particle type." << '\n');
return 0.0;