126{
127
128
129
130#ifdef G4VERBOSE
132#endif
133
136
137
139
140
143 for (
G4int index=0; index<3; index++){
145 sumofdaughtermass += daughtermass[index];
146 }
147
148
151
153 delete parentparticle;
154
155
157
158 G4double xmax = (1.0+daughtermass[0]*daughtermass[0]/parentmass/parentmass);
160
162
164 G4double EMax=parentmass/2-daughtermass[0];
165
166
167
168do {
170 do{
173 }while (gam >x*(1.-x));
174 Ene=x;
175 } while ( Ene < (1.-Ee));
177
178
179
180
181 G4double costheta,sintheta,rphi,rtheta,rpsi;
182 costheta= 1.-2./Ee-2./Ene+2./Ene/Ee;
183 sintheta=std::sqrt(1.-costheta*costheta);
184
185
189
191 rot.
set(rphi,rtheta,rpsi);
192
193
194 daughtermomentum[0]=std::sqrt(Ee*Ee*EMax*EMax+2.0*Ee*EMax * daughtermass[0]);
196
197 direction0 *= rot;
198
200
202
203
204
205 daughtermomentum[1]=std::sqrt(Ene*Ene*EMax*EMax+2.0*Ene*EMax * daughtermass[1]);
207
208 direction1 *= rot;
209
212
213
214
215 daughtermomentum[2]=std::sqrt(Enm*Enm*EMax*EMax +2.0*Enm*EMax*daughtermass[2]);
216 G4ThreeVector direction2(-Ene/Enm*sintheta,0,-Ee/Enm-Ene/Enm*costheta);
217
218 direction2 *= rot;
219
221 direction2 * daughtermomentum[2]);
223
224
225
226
227
228#ifdef G4VERBOSE
230 G4cout <<
"G4MuonDecayChannel::DecayIt ";
231 G4cout <<
" create decay products in rest frame " <<
G4endl;
233 }
234#endif
235 return products;
236}
HepRotation & set(const Hep3Vector &axis, double delta)
G4int PushProducts(G4DynamicParticle *aParticle)
G4double GetPDGMass() const
G4ParticleDefinition * parent
G4ParticleDefinition ** daughters