158{
159
160#ifdef G4VERBOSE
162 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt ";
163#endif
164
167
168
170
172
173
174 const G4int N_DAUGHTER=3;
176
177 for (
G4int index=0; index<N_DAUGHTER; ++index)
178 {
180
181 }
182
184
185
189
191 delete parentparticle;
192
194
195 const std::size_t MAX_LOOP=1000;
196
197 for (std::size_t loop_counter1=0; loop_counter1<MAX_LOOP; ++loop_counter1)
198 {
199 for (std::size_t loop_counter2=0; loop_counter2<MAX_LOOP; ++loop_counter2)
200 {
203 if (x+y > 1.) break;
204 }
207 }
208
209
210
211 G4double cthetaGE = (y*(x-2.)+2.*(1.-x+beta*beta)) /
212 (x*std::sqrt(y*y-4.*beta*beta));
213
216
217 if (E < EMASS) E = EMASS;
218
219
221
222 daughtermomentum[0] = std::sqrt(E*E - EMASS*EMASS);
223
225 G4double sthetaE = std::sqrt(1.-cthetaE*cthetaE);
226
230
231
232
236
238
241
243
244 daughtermomentum[1] = G;
245
246 G4double sthetaGE = std::sqrt(1.-cthetaGE*cthetaGE);
247
251
252
253
254 px = sthetaGE*cphiGE;
255 py = sthetaGE*sphiGE;
256 pz = cthetaGE;
257
259
260 direction1.rotateUz(direction0);
261
264
266
267
268#ifdef G4VERBOSE
270 {
271 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt() -";
272 G4cout <<
" create decay products in rest frame " <<
G4endl;
274 }
275#endif
276
277 return products;
278}
G4int PushProducts(G4DynamicParticle *aParticle)
G4double GetPDGMass() const
G4ParticleDefinition ** G4MT_daughters
void CheckAndFillParent()
G4ParticleDefinition * G4MT_parent
void CheckAndFillDaughters()