127{
128#ifdef G4VERBOSE
130#endif
131
134
135
137
139
140
141 const G4int N_DAUGHTER = 3;
143
144 for (
G4int index = 0; index < N_DAUGHTER; ++index) {
146
147 }
148
150
151
154
156 delete parentparticle;
157
159
160 const std::size_t MAX_LOOP = 1000;
161
162 for (std::size_t loop_counter1 = 0; loop_counter1 < MAX_LOOP; ++loop_counter1) {
163 for (std::size_t loop_counter2 = 0; loop_counter2 < MAX_LOOP; ++loop_counter2) {
166 if (x + y > 1.) break;
167 }
170 }
171
172
173
175 (y * (x - 2.) + 2. * (1. - x + beta * beta)) / (x * std::sqrt(y * y - 4. * beta * beta));
176
179
180 if (E < EMASS) E = EMASS;
181
182
184
185 daughtermomentum[0] = std::sqrt(E * E - EMASS * EMASS);
186
188 G4double sthetaE = std::sqrt(1. - cthetaE * cthetaE);
189
193
194
195
199
201
202 auto daughterparticle0 =
204
205 products->PushProducts(daughterparticle0);
206
207 daughtermomentum[1] = G;
208
209 G4double sthetaGE = std::sqrt(1. - cthetaGE * cthetaGE);
210
214
215
216
217 px = sthetaGE * cphiGE;
218 py = sthetaGE * sphiGE;
219 pz = cthetaGE;
220
222
223 direction1.rotateUz(direction0);
224
225 auto daughterparticle1 =
227
228 products->PushProducts(daughterparticle1);
229
230
231#ifdef G4VERBOSE
233 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt() -";
234 G4cout <<
" create decay products in rest frame " <<
G4endl;
235 products->DumpInfo();
236 }
237#endif
238
239 return products;
240}
G4double GetPDGMass() const
G4ParticleDefinition ** G4MT_daughters
void CheckAndFillParent()
G4ParticleDefinition * G4MT_parent
void CheckAndFillDaughters()