46 const std::vector<G4double>& masses,
47 std::vector<G4LorentzVector>& finalState) {
52 size_t N = masses.size();
55 G4double mtot = std::accumulate(masses.begin(), masses.end(), 0.0);
64 for (
size_t k=N-1; k>0; --k) {
75 PFragCM.
setVectM(RandVector,masses[k]);
76 PRestCM.
setVectM(-RandVector,RestMass);
80 PFragCM.
boost(BoostV);
81 PRestCM.
boost(BoostV);
84 finalState[k] = PFragCM;
87 finalState[0] = PRestLab;
98 G4double Fmax = std::sqrt(g4pow->
powN(xN/(xN+1.),N)/(xN+1.));
103 F = std::sqrt(g4pow->
powN(chi,N)*(1.-chi));
static G4Pow * GetInstance()
Hep3Vector boostVector() const
G4double powN(G4double x, G4int n) const
G4int GetVerboseLevel() const
void setVectM(const Hep3Vector &spatial, double mass)
G4GLOB_DLL std::ostream G4cout
virtual void GenerateMultiBody(G4double initialMass, const std::vector< G4double > &masses, std::vector< G4LorentzVector > &finalState)
HepLorentzVector & boost(double, double, double)
G4double BetaKopylov(G4int K) const
const G4String & GetName() const
G4double TwoBodyMomentum(G4double M0, G4double M1, G4double M2) const
G4ThreeVector UniformVector(G4double mag=1.) const