51 std::vector<G4LorentzVector*>*
53 const std::vector<G4double>& mr)
const
58 std::vector<G4LorentzVector*>*
P =
59 new std::vector<G4LorentzVector*>(
N, 0);
62 for(
size_t k=0; k<
N; ++k) { mtot += mr[k]; }
73 for (
size_t k = N-1; k>0; --k)
76 if (k>1) { T *= BetaKopylov(k, rndmEngine); }
81 PFragMagCM = PtwoBody(Mass,mr[k],RestMass);
87 PFragCM.
setE(std::sqrt(PFragMagCM*PFragMagCM + mr[k]*mr[k]));
90 PRestCM.
setE(std::sqrt(PFragMagCM*PFragMagCM + RestMass*RestMass));
95 PFragCM.
boost(BoostV);
96 PRestCM.
boost(BoostV);
113 G4cout <<
"G4FermiPhaseSpaceDecay: problem of decay of M(GeV)= " << E/
GeV
114 <<
" on M1(GeV)= " << P1/
GeV <<
" and M2(GeV)= " << P2/
GeV
115 <<
" P(MeV)= " << P/
MeV <<
" < 0" <<
G4endl;
~G4FermiPhaseSpaceDecay()
static constexpr double MeV
static const G4double * P2[nN]
void setVect(const Hep3Vector &)
G4ThreeVector G4RandomDirection()
void DumpProblem(G4double E, G4double P1, G4double P2, G4double P) const
static G4Pow * GetInstance()
static constexpr double eV
static const G4double * P1[nN]
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
CLHEP::HepLorentzVector G4LorentzVector
static constexpr double GeV
std::vector< G4LorentzVector * > * KopylovNBodyDecay(G4double, const std::vector< G4double > &) const
HepLorentzVector & boost(double, double, double)