39 #ifndef G4FermiPhaseSpaceDecay_hh
40 #define G4FermiPhaseSpaceDecay_hh 1
58 inline std::vector<G4LorentzVector*>*
60 const std::vector<G4double>& fragment_masses)
const;
71 std::vector<G4LorentzVector*> *
72 KopylovNBodyDecay(
G4double,
const std::vector<G4double>&)
const;
88 G4double P = (E+P1+
P2)*(E+P1-P2)*(E-P1+
P2)*(E-P1-P2)/(4.0*E*E);
89 if (P>0.0) { res = std::sqrt(P); }
90 else { DumpProblem(E,P1,P2,P); }
94 inline std::vector<G4LorentzVector*>*
96 const std::vector<G4double>& fragment_masses)
const
98 return KopylovNBodyDecay(parent_mass, fragment_masses);
102 G4FermiPhaseSpaceDecay::BetaKopylov(
G4int K,
109 G4double Fmax = std::sqrt(g4calc->
powN(xN/(xN + 1),N)/(xN + 1));
112 chi = rndmEngine->
flat();
113 F = std::sqrt(g4calc->
powN(chi,N)*(1-chi));
115 }
while ( Fmax*rndmEngine->
flat() > F);
120 G4FermiPhaseSpaceDecay::IsotropicVector(
G4double Magnitude,
126 G4double SinTheta = std::sqrt((1. - CosTheta)*(1. + CosTheta));
129 Magnitude*std::sin(Phi)*SinTheta,
G4double powN(G4double x, G4int n) const
static const G4double * P1[nN]
~G4FermiPhaseSpaceDecay()
std::vector< G4LorentzVector * > * Decay(G4double parent_mass, const std::vector< G4double > &fragment_masses) const
static const G4double * P2[nN]
static constexpr double twopi