56{
58
60
61
63
70
75
78
79
81
84 {
86 {
88 {
89
90
91 } else {
92
93
94 }
95 } else {
96
97
98 }
99 } else {
100
101
102 }
103
105 G4double Theta = std::acos(cosTheta);
106
107
108 G4ThreeVector pFinal1(std::sin(Theta)*std::cos(phi), std::sin(Theta)*std::sin(phi), cosTheta);
109
110 G4double pInCM = std::sqrt((S-(m10+m20)*(m10+m20))*(S-(m10-m20)*(m10-m20))/(4.*S));
111 pFinal1 = pFinal1 * pInCM;
113
114 G4double eFinal1 = std::sqrt(pFinal1.mag2() + m10*m10);
116
119
120
121 p4Final1 *= toLabFrame;
122 p4Final2 *= toLabFrame;
123
124
129
131 finalTracks->push_back(final1);
132 finalTracks->push_back(final2);
133
134 return finalTracks;
135}
HepLorentzRotation & rotateY(double delta)
HepLorentzRotation & rotateZ(double delta)
HepLorentzRotation inverse() const
Hep3Vector boostVector() const
void Set4Momentum(const G4LorentzVector &a4Momentum)
G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
G4double GetActualMass() const
static G4Neutron * Neutron()
G4double GetPDGMass() const
static G4Proton * Proton()
virtual G4double Phi() const
virtual G4double CosTheta(G4double s, G4double m1, G4double m2) const =0
virtual const G4VAngularDistribution * GetAngularDistribution() const =0