50 std::vector<G4LorentzVector*>*
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]; }
70 CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
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]
CLHEP::Hep3Vector G4ThreeVector
void DumpProblem(G4double E, G4double P1, G4double P2, G4double P) const
G4GLOB_DLL std::ostream G4cout
static constexpr double eV
~G4FermiPhaseSpaceDecay()
static constexpr double GeV
static const G4double * P2[nN]
static constexpr double MeV
std::vector< G4LorentzVector * > * KopylovNBodyDecay(G4double, const std::vector< G4double > &) const
CLHEP::HepLorentzVector G4LorentzVector