137{
138
139
140
141#ifdef G4VERBOSE
143#endif
144
147
148
150
151
153 for (
G4int index=0; index<3; index++){
155 }
156
157
160
162 delete parentparticle;
163
164
166
167
168 G4double pmax = (parentmass*parentmass-daughtermass[0]*daughtermass[0])/2./parentmass;
171 do {
172
175 e = std::sqrt(p*p + daughtermass[0]*daughtermass[0]);
176 } while (r > spectrum(p,e,parentmass,daughtermass[0]) );
177
178
179
180 daughtermomentum[0] = p;
181 G4double costheta, sintheta, phi, sinphi, cosphi;
183 sintheta = std::sqrt((1.0-costheta)*(1.0+costheta));
185 sinphi = std::sin(phi);
186 cosphi = std::cos(phi);
187 G4ThreeVector direction0(sintheta*cosphi,sintheta*sinphi,costheta);
191
192
193
195 G4double vmass = std::sqrt((energy2-daughtermomentum[0])*(energy2+daughtermomentum[0]));
196 G4double beta = -1.0*daughtermomentum[0]/energy2;
198 G4double sinthetan = std::sqrt((1.0-costhetan)*(1.0+costhetan));
202
203 G4ThreeVector direction1(sinthetan*cosphin,sinthetan*sinphin,costhetan);
208
209
212 p4.
boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta);
215 p4.
boost( direction0.x()*beta, direction0.y()*beta, direction0.z()*beta);
221
222
223
224#ifdef G4VERBOSE
226 G4cout <<
"G4TauLeptonicDecayChannel::DecayIt ";
227 G4cout <<
" create decay products in rest frame " <<
G4endl;
229 }
230#endif
231 return products;
232}
HepLorentzVector & boost(double, double, double)
G4int PushProducts(G4DynamicParticle *aParticle)
G4LorentzVector Get4Momentum() const
void Set4Momentum(const G4LorentzVector &momentum)
G4double GetTotalMomentum() const
G4double GetPDGMass() const
G4ParticleDefinition * parent
G4ParticleDefinition ** daughters