Import Geant4 11.2.0 source tree
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user