54 if ( iter!=minMassCache.end() )
56 minResonanceMass = (*iter).second;
77 const G4double thresholdChannelProbability = 0.10;
78 G4double foundChannelAboveThresholdProbability =
false;
79 G4double minMassMostProbableChannel = 0.0;
80 G4double highestChannelProbability = 0.0;
81 for (
G4int i=0; i<nDecays; i++)
85 if (decayBr > std::min(highestChannelProbability, thresholdChannelProbability))
89 for (
G4int j=0; j<nDaughters; j++)
93 if (!minMass) minMass =
DBL_MAX;
94 minChannelMass+=minMass;
96 if (decayBr > highestChannelProbability)
98 highestChannelProbability = decayBr;
99 minMassMostProbableChannel = minChannelMass;
101 if (decayBr > thresholdChannelProbability)
103 foundChannelAboveThresholdProbability =
true;
104 if (minChannelMass < minResonanceMass) minResonanceMass = minChannelMass;
108 if ( ! foundChannelAboveThresholdProbability ) {
109 minResonanceMass = minMassMostProbableChannel;
115 self->minMassCache_G4MT_TLS_->operator[](p) = minResonanceMass;
127 return minResonanceMass;
153 G4double protectedMinMass = minMass;
154 if ( minMass > maxMass )
158 protectedMinMass = maxMass;
165 returnMass = std::max(minMass, std::min(maxMass, poleMass));
170 double fmin = BrWigInt0(protectedMinMass, gamma, poleMass);
171 double fmax = BrWigInt0(maxMass, gamma, poleMass);
173 returnMass = BrWigInv(f, gamma, poleMass);
G4VDecayChannel * GetDecayChannel(G4int index) const
G4bool IsShortLived() const
G4double GetPDGMass() const
G4double GetPDGWidth() const
G4DecayTable * GetDecayTable() const
std::map< const G4ParticleDefinition *, G4double, std::less< const G4ParticleDefinition * > > minMassMapType
G4double SampleMass(const G4double poleMass, const G4double gamma, const G4double minMass, const G4double maxMass) const
std::map< constG4ParticleDefinition *, G4double, std::less< constG4ParticleDefinition * > >::const_iterator minMassMapIterator
G4double GetMinimumMass(const G4ParticleDefinition *p) const
G4int GetNumberOfDaughters() const