230 incidentHasChanged, originalTarget,
231 targetParticle, targetHasChanged,
232 targetNucleus, currentParticle,
234 false, leadingStrangeParticle);
240 leadingStrangeParticle );
245 G4bool finishedGenXPt =
false;
246 G4bool annihilation =
false;
248 currentParticle.
GetMass() == 0.0 && targetParticle.
GetMass() == 0.0 )
257 if( ek > 1.0*
GeV )ekcor = 1./(ek/
GeV);
259 ek = 2*tarmas + ek*(1.+ekcor/atomicWeight);
274 G4double p = std::sqrt( std::abs(et*et-amas*amas) );
281 if( ekOrg <= 0.0001 )
290 const G4double twsup[] = { 1.0, 0.7, 0.5, 0.3, 0.2, 0.1 };
297 std::vector<G4ReactionProduct> savevec;
298 for (
G4int i = 0; i < vecLen; i++) savevec.push_back(*vec[i]);
307 if( annihilation || vecLen > 5 ||
315 || rand2 > twsup[vecLen]) ) )
319 incidentHasChanged, originalTarget,
320 targetParticle, targetHasChanged,
321 targetNucleus, currentParticle,
323 leadFlag, leadingStrangeParticle);
325 if (finishedGenXPt)
return;
327 G4bool finishedTwoClu =
false;
330 for (
G4int i = 0; i < vecLen; i++)
delete vec[i];
338 if (!finishedGenXPt && annihilation) {
339 currentParticle = saveCurrent;
340 targetParticle = saveTarget;
341 for (
G4int i = 0; i < vecLen; i++)
delete vec[i];
344 for (
G4int i = 0; i <
G4int(savevec.size()); i++) {
364 incidentHasChanged, originalTarget,
365 targetParticle, targetHasChanged,
366 targetNucleus, currentParticle,
368 leadFlag, leadingStrangeParticle);
377 if (finishedTwoClu)
return;
380 incidentHasChanged, originalTarget,
381 targetParticle, targetHasChanged,
382 targetNucleus, currentParticle,
384 false, leadingStrangeParticle);
void SetElement(G4int anIndex, Type *anElement)
G4bool MarkLeadingStrangeParticle(const G4ReactionProduct ¤tParticle, const G4ReactionProduct &targetParticle, G4ReactionProduct &leadParticle)
G4double GetTotalMomentum() const
G4bool ReactionStage(const G4HadProjectile *, G4ReactionProduct &, G4bool &, const G4DynamicParticle *, G4ReactionProduct &, G4bool &, const G4Nucleus &, G4ReactionProduct &, G4FastVector< G4ReactionProduct, 256 > &, G4int &, G4bool, G4ReactionProduct &)
void SetKineticEnergy(const G4double en)
void SetMomentum(const G4double x, const G4double y, const G4double z)
static G4KaonZeroLong * KaonZeroLong()
G4int GetPDGEncoding() const
G4ParticleDefinition * GetDefinition() const
void Initialize(G4int items)
static G4KaonMinus * KaonMinus()
G4GLOB_DLL std::ostream G4cout
const G4ParticleDefinition * GetDefinition() const
static G4KaonZeroShort * KaonZeroShort()
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetKineticEnergy() const
G4double AnnihilationEvaporationEffects(G4double kineticEnergy, G4double ekOrg)
G4double GetPDGMass() const
G4RPGTwoCluster twoCluster
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4bool ReactionStage(const G4HadProjectile *, G4ReactionProduct &, G4bool &, const G4DynamicParticle *, G4ReactionProduct &, G4bool &, const G4Nucleus &, G4ReactionProduct &, G4FastVector< G4ReactionProduct, 256 > &, G4int &, G4bool, G4ReactionProduct &)
G4double Cinema(G4double kineticEnergy)
static constexpr double GeV
G4ThreeVector GetMomentum() const
static G4KaonPlus * KaonPlus()
G4RPGFragmentation fragmentation
void Report(std::ostream &aS)
G4bool ReactionStage(const G4HadProjectile *, G4ReactionProduct &, G4bool &, const G4DynamicParticle *, G4ReactionProduct &, G4bool &, const G4Nucleus &, G4ReactionProduct &, G4FastVector< G4ReactionProduct, 256 > &, G4int &, G4bool, G4ReactionProduct &)