55 const std::vector<G4double>& mr)
const
60 std::vector<G4LorentzVector*>* P =
61 new std::vector<G4LorentzVector*>(N,
nullptr);
64 for(
size_t k=0; k<N; ++k) { mtot += mr[k]; }
70 G4double Mass = std::max(M, mtot + CLHEP::eV);
79 for (
size_t k = N-1; k>0; --k)
82 if (k>1) { T *= BetaKopylov(k, rndmEngine); }
87 PFragMagCM = PtwoBody(Mass,mr[k],RestMass);
93 PFragCM.
setE(std::sqrt(PFragMagCM*PFragMagCM + mr[k]*mr[k]));
96 PRestCM.
setE(std::sqrt(PFragMagCM*PFragMagCM + RestMass*RestMass));
100 PFragCM.
boost(BoostV);
103 PRestCM.
boost(BoostV);
125 chi = rndmEngine->
flat();
126 F = std::sqrt(g4calc->
powN(chi,N)*(1-chi));
128 }
while ( Fmax*rndmEngine->
flat() > F);
CLHEP::HepLorentzVector G4LorentzVector
G4ThreeVector G4RandomDirection()
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
void setVect(const Hep3Vector &)
std::vector< G4LorentzVector * > * Decay(G4double parent_mass, const std::vector< G4double > &fragment_masses) const
~G4FermiPhaseSpaceDecay()
static G4Pow * GetInstance()
G4double powN(G4double x, G4int n) const