104 G4double xmin = 2.0 * std::log(2.0 * leptonmass);
105 G4double xmax = 2.0 * std::log(parentmass);
108 const std::size_t MAX_LOOP = 10000;
109 for (std::size_t loop_counter = 0; loop_counter < MAX_LOOP; ++loop_counter) {
113 w1 = (1.0 - 4.0 * leptonmass * leptonmass / t);
115 w2 = (1.0 + 2.0 * leptonmass * leptonmass / t);
116 w3 = (1.0 - t / parentmass / parentmass);
118 ww = w3 * w2 * std::sqrt(w1);
129 G4double sintheta = std::sqrt((1.0 - costheta) * (1.0 + costheta));
131 G4ThreeVector gdirection(sintheta * std::cos(phi), sintheta * std::sin(phi), costheta);
137 G4double beta = Pgamma / (parentmass - Pgamma);
141 G4double Elepton = std::sqrt(Plepton * Plepton + leptonmass * leptonmass);
143 sintheta = std::sqrt((1.0 - costheta) * (1.0 + costheta));
145 G4ThreeVector ldirection(sintheta * std::cos(phi), sintheta * std::sin(phi), costheta);
147 auto leptonparticle =
149 auto antileptonparticle =
153 p4.
boost(-1.0 * gdirection.
x() * beta, -1.0 * gdirection.
y() * beta,
154 -1.0 * gdirection.
z() * beta);
155 leptonparticle->Set4Momentum(p4);
156 p4 = antileptonparticle->Get4Momentum();
157 p4.
boost(-1.0 * gdirection.
x() * beta, -1.0 * gdirection.
y() * beta,
158 -1.0 * gdirection.
z() * beta);
159 antileptonparticle->Set4Momentum(p4);
163 delete parentparticle;
164 products->PushProducts(gammaparticle);
165 products->PushProducts(leptonparticle);
166 products->PushProducts(antileptonparticle);
170 G4cout <<
"G4DalitzDecayChannel::DecayIt ";
171 G4cout <<
" create decay products in rest frame " <<
G4endl;
172 products->DumpInfo();
G4double GetPDGMass() const