119 const G4int N_DAUGHTER = 3;
124 for (
G4int index = 0; index < N_DAUGHTER; ++index) {
134 delete parentparticle;
137 G4double daughtermomentum[N_DAUGHTER];
139 G4double xmax = (1.0 + daughtermass[0] * daughtermass[0] / parentmass / parentmass);
145 G4double EMax = parentmass / 2 - daughtermass[0];
147 const std::size_t MAX_LOOP = 1000;
149 for (std::size_t loop1 = 0; loop1 < MAX_LOOP; ++loop1) {
151 for (std::size_t loop2 = 0; loop2 < MAX_LOOP; ++loop2) {
154 if (gam <= x * (1. - x))
break;
158 if (Ene >= (1. - Ee))
break;
165 G4double costheta, sintheta, rphi, rtheta, rpsi;
166 costheta = 1. - 2. / Ee - 2. / Ene + 2. / Ene / Ee;
167 sintheta = std::sqrt(1. - costheta * costheta);
174 rot.
set(rphi, rtheta, rpsi);
177 daughtermomentum[0] = std::sqrt(Ee * Ee * EMax * EMax + 2.0 * Ee * EMax * daughtermass[0]);
182 auto daughterparticle =
185 products->PushProducts(daughterparticle);
189 daughtermomentum[1] = std::sqrt(Ene * Ene * EMax * EMax + 2.0 * Ene * EMax * daughtermass[1]);
194 auto daughterparticle1 =
196 products->PushProducts(daughterparticle1);
200 daughtermomentum[2] = std::sqrt(Enm * Enm * EMax * EMax + 2.0 * Enm * EMax * daughtermass[2]);
201 G4ThreeVector direction2(-Ene / Enm * sintheta, 0, -Ee / Enm - Ene / Enm * costheta);
205 auto daughterparticle2 =
207 products->PushProducts(daughterparticle2);
212 G4cout <<
"G4MuonDecayChannel::DecayIt()";
213 G4cout <<
" create decay products in rest frame " <<
G4endl;
214 products->DumpInfo();
G4double GetPDGMass() const