63 if (theParentName ==
"neutron") {
70 }
else if (theParentName ==
"anti_neutron") {
80 G4cout <<
"G4NeutronBetaDecayChannel:: constructor :";
81 G4cout <<
" parent particle is not neutron but ";
101 if (
this != &right) {
145 for (
G4int index=0; index<3; index++){
147 sumofdaughtermass += daughtermass[index];
157 delete parentparticle;
169 const size_t MAX_LOOP=10000;
170 for (
size_t loop_counter=0; loop_counter <MAX_LOOP; ++loop_counter){
172 p = std::sqrt(x*(x+2.0*dm));
174 r = p*(x+dm)*(xmax-x)*(xmax-
x)*(1.0+
aENuCorr*p/(x+dm)*
w);
189 daughtermomentum[0] =
p;
191 direction0 = rm * direction0;
198 eNu = (parentmass-daughtermass[2])*(parentmass+daughtermass[2])+(dm*dm)-2.*parentmass*(x+dm);
199 eNu /= 2.*(parentmass+p*w-(x+dm));
202 G4double sinn = std::sqrt((1.0-cosn)*(1.0+cosn));
204 G4ThreeVector direction1(sinn*std::cos(phin), sinn*std::sin(phin), cosn);
205 direction1 = rm * direction1;
212 eP = parentmass-eNu-(x+dm)-daughtermass[2];
215 G4double pP = std::sqrt(eP*(eP+2.*daughtermass[2]));
216 G4ThreeVector direction2(pPx/pP*std::cos(phin), pPx/pP*std::sin(phin), pPz/pP);
217 direction2 = rm * direction2;
226 G4cout <<
"G4NeutronBetaDecayChannel::DecayIt ";
227 G4cout <<
" create decay products in rest frame " <<
G4endl;