107{
108
111
112 G4LorentzVector w0(0.,0.,0.,0.), w1(0.,0.,0.,0.), w2(0.,0.,0.,0.);
114 G4double e0, p0, e2, p, gg, m01, m02, m12;
115
116
117 G4double edel = 0.5*e*(1.0 + x0*x0 - 4.0*x1*x1) - massPi0;
118
119 const G4int nmax = 200;
121 do {
123
125 p0 = sqrt(e0*e0 - massPi0*massPi0);
128
129
132 e2 = 0.25*w1.m2();
133
134
135 p = sqrt(e2 - massPi*massPi);
138
139 w1.set(-w2.px(), -w2.py(), -w2.pz(), w2.e());
140
141 w1.boost(bst);
142 w2.boost(bst);
143
147
151
152 m01 = w0*w1;
153 m02 = w0*w2;
154 m12 = w1*w2;
155
159
160 gg = (px*px + py*py + pz*pz)*
163
164 if(gg > gmax) {
165 G4cout <<
"G4eeTo3PiModel::SampleSecondaries WARNING matrix element g= "
166 << gg <<
" > " << gmax <<
" (majoranta)" <<
G4endl;
167 gmax = gg;
168 }
169
171
172 w0.rotateUz(direction);
173 w1.rotateUz(direction);
174 w2.rotateUz(direction);
175
176
183 newp->push_back(dp0);
184 newp->push_back(dp1);
185 newp->push_back(dp2);
186}
CLHEP::HepLorentzVector G4LorentzVector
G4ThreeVector G4RandomDirection()
static G4PionMinus * PionMinus()
std::complex< G4double > DpRho(G4double e)