50 std::vector<G4LorentzVector*>*
51 G4FermiPhaseSpaceDecay::KopylovNBodyDecay(
G4double M,
52 const std::vector<G4double>& mr)
const
57 std::vector<G4LorentzVector*>*
P =
58 new std::vector<G4LorentzVector*>(
N, 0);
61 for(
size_t k=0; k<
N; ++k) { mtot += mr[k]; }
72 for (
size_t k = N-1; k>0; --k)
75 if (k>1) { T *= BetaKopylov(k, rndmEngine); }
80 PFragMagCM = PtwoBody(Mass,mr[k],RestMass);
83 G4ThreeVector RandVector(IsotropicVector(PFragMagCM, rndmEngine));
85 PFragCM.setVect(RandVector);
86 PFragCM.setE(std::sqrt(PFragMagCM*PFragMagCM + mr[k]*mr[k]));
88 PRestCM.setVect(-RandVector);
89 PRestCM.setE(std::sqrt(PFragMagCM*PFragMagCM + RestMass*RestMass));
94 PFragCM.boost(BoostV);
95 PRestCM.boost(BoostV);
112 G4cout <<
"G4FermiPhaseSpaceDecay: problem of decay of M(GeV)= " << E/
GeV
113 <<
" on M1(GeV)= " << P1/
GeV <<
" and M2(GeV)= " << P2/
GeV
114 <<
" P(MeV)= " << P/
MeV <<
" < 0" <<
G4endl;
static G4Pow * GetInstance()
static const G4double * P1[nN]
G4GLOB_DLL std::ostream G4cout
static constexpr double eV
~G4FermiPhaseSpaceDecay()
static constexpr double GeV
static const G4double * P2[nN]
static constexpr double MeV
CLHEP::HepLorentzVector G4LorentzVector