97std::vector<G4LorentzVector*>*
124 mass = (*_definitions)[0]->GetPDGMass();
125 energy = eKin1 + mass;
126 p = std::sqrt(energy*energy - mass*mass);
129 p1 =
MakeP4(p,theta1,phi1,energy);
133 mass = (*_definitions)[1]->GetPDGMass();
134 energy = eKin2 + mass;
135 p = std::sqrt(energy*energy - mass*mass);
141 p2 =
MakeP4(p,theta2,phi2,energy);
144 eRecoil = std::sqrt(pNucleus*pNucleus + massNucleus*massNucleus) - massNucleus;
153 }
while ((eKin1 + eKin2 + eRecoil) > availableE);
175 G4double px = p * std::sin(theta) * std::cos(phi);
176 G4double py = p * std::sin(theta) * std::sin(phi);
188 for (
unsigned int i = 0; i<
_momenta->size(); i++)
190 p = p + (*_momenta)[i]->vect();
195 G4double eNucleus = std::sqrt(pNucleus*pNucleus + mass*mass);
CLHEP::HepLorentzVector G4LorentzVector
G4double Generate(G4double ranflat)
static G4Neutron * Neutron()
G4double GetPDGMass() const
std::vector< G4ParticleDefinition * > * _definitions
G4DistributionGenerator * _distributionE
G4double GenerateAngle(G4double range)
virtual std::vector< G4ParticleDefinition * > * DefinitionVector()
std::vector< G4LorentzVector * > * _momenta
G4LorentzVector MakeP4(G4double p, G4double theta, G4double phi, G4double e)
virtual std::vector< G4LorentzVector * > * P4Vector(const G4double binding, const G4double mass)
virtual ~G4PiMinusStopMaterial()
G4double RecoilEnergy(const G4double mass)
G4DistributionGenerator * _distributionAngle
static G4PionMinus * PionMinus()
static G4Proton * Proton()