56 : theA(0), theZ(0), theL(0), aEff(0.0), zEff(0)
123 G4double E_threshold = 400.0*8.617333262E-11*temp;
129 if ( E_neutron <= E_threshold ) {
136 G4double vN_norm2 = vN_norm*vN_norm;
140 aVelocity = (1./vN_norm)*aVelocity;
161 vT_norm = std::sqrt(x2)/
beta;
162 vT_norm2 = vT_norm*vT_norm;
168 vRelativeSpeed = std::sqrt(vN_norm2 + vT_norm2 - 2*vN_norm*vT_norm*mu);
169 acceptThreshold = vRelativeSpeed/(vN_norm + vT_norm);
171 }
while ( randThreshold >= acceptThreshold );
177 G4double sinTh = std::sqrt(1. - cosTh*cosTh);
186 if ( uNorm[0] ) ortho[0] = -(uNorm[1]+uNorm[2])/uNorm[0];
187 else if ( uNorm[1] ) ortho[1] = -(uNorm[0]+uNorm[2])/uNorm[1];
188 else if ( uNorm[2] ) ortho[2] = -(uNorm[0]+uNorm[1])/uNorm[2];
191 ortho = (1/ortho.
mag())*ortho;
194 G4ThreeVector orthoComp( uNorm[1]*ortho[2] - ortho[1]*uNorm[2],
195 uNorm[2]*ortho[0] - ortho[2]*uNorm[0],
196 uNorm[0]*ortho[1] - ortho[0]*uNorm[1] );
199 G4ThreeVector directionTarget( cosTh*uNorm[0] + sinTh*(cosPhi*orthoComp[0] + sinPhi*ortho[0]),
200 cosTh*uNorm[1] + sinTh*(cosPhi*orthoComp[1] + sinPhi*ortho[1]),
201 cosTh*uNorm[2] + sinTh*(cosPhi*orthoComp[2] + sinPhi*ortho[2]) );
204 directionTarget = (1/directionTarget.
mag())*directionTarget;
212 G4double tMom = std::sqrt(px*px+py*py+pz*pz);
216 if ( tEtot/result.
GetMass() - 1. > 0.001 ) {
239 if (currentTemp < 0) currentTemp =
theTemp;
247 G4double tMom = std::sqrt(px*px+py*py+pz*pz);
252 if (tEtot/theTarget.
GetMass() - 1. > 0.001) {
276 if (running > random*sum) {
277 element = (*theElementVector)[i];
286 while (iso < element->GetNumberOfIsotopes() &&
287 sumAbundance < randomAbundance) {
312 if (
theA<1 || theZ<0 || theZ>
theA) {
314 "G4Nucleus::SetParameters called with non-physical parameters");
331 "G4Nucleus::SetParameters called with non-physical parameters");
352 return targetParticle;
360 if ( numberOfLambdas > 0 ) {
372 if ( numberOfLambdas > 0 ) {
416 * ((atno-1.0)/120.)*
G4Exp(-(atno-1.0)/120.);
431 for(
G4int i=0; i<12; ++i )
458 if(
aEff < 1.5 || ekOrg < 0.)
471 * ((atno-1.0)/120.)*
G4Exp(-(atno-1.0)/120.);
479 for(
G4int i=0; i<12; ++i ) {
489 if (blackSum >= ekOrg/
GeV) {
507 static const G4double expxl = -expxu;
516 if( std::abs( temp1 ) < 1.0 )
518 if( temp2 > 1.0e-10 )result = temp1*temp2;
520 else result = temp1*temp2;
521 if( result < -ek )result = -ek;
537 G4double ranmax = (ranflat1>ranflat2? ranflat1: ranflat2);
538 ranmax = (ranmax>ranflat3? ranmax : ranflat3);
542 G4double sintheta = std::sqrt(1.0 - costheta*costheta);
546 G4double px=sintheta*std::cos(phi)*ranmax;
547 G4double py=sintheta*std::sin(phi)*ranmax;
std::vector< const G4Element * > G4ElementVector
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
std::vector< G4ReactionProduct * > G4ReactionProductVector
static constexpr double kelvin
static constexpr double fermi
static constexpr double GeV
static constexpr double pi
CLHEP::Hep3Vector G4ThreeVector
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
size_t GetNumberOfIsotopes() const
static G4double GetNuclearMass(G4int A, G4int Z, G4int L)
static G4Lambda * Lambda()
const G4ElementVector * GetElementVector() const
G4double GetTotNbOfAtomsPerVolume() const
G4double GetTemperature() const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
void AddExcitationEnergy(G4double anEnergy)
G4double GetThermalPz(const G4double mass, const G4double temp) const
G4double dtaBlackTrackEnergy
G4double EvaporationEffects(G4double kineticEnergy)
void ChooseParameters(const G4Material *aMaterial)
G4double pnBlackTrackEnergyfromAnnihilation
G4double AtomicMass(const G4double A, const G4double Z, const G4int numberOfLambdas=0) const
G4double excitationEnergy
G4double AnnihilationEvaporationEffects(G4double kineticEnergy, G4double ekOrg)
void SetParameters(const G4double A, const G4double Z, const G4int numberOfLambdas=0)
G4double Cinema(G4double kineticEnergy)
G4DynamicParticle * ReturnTargetParticle() const
G4ReactionProductVector * Fragmentate()
G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const
G4double dtaBlackTrackEnergyfromAnnihilation
G4double pnBlackTrackEnergy
void AddMomentum(const G4ThreeVector aMomentum)
const G4Isotope * fIsotope
G4ReactionProduct GetThermalNucleus(G4double aMass, G4double temp=-1) const
G4ThreeVector GetFermiMomentum()
G4double GetPDGMass() const
static G4Proton * Proton()
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetTotalEnergy(const G4double en)
void SetKineticEnergy(const G4double en)
void SetMass(const G4double mas)
static constexpr double twopi
static constexpr double pi
ThreeVector shoot(const G4int Ap, const G4int Af)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments