123 fMu=Lattice->
GetMu();
128 if(
G4UniformRand()>0.740) MakeLTSecondaries(aTrack);
else MakeTTSecondaries(aTrack);
148 inline double XPhononDownconversionProcess::GetLTDecayProb(
double d,
double x){
151 return (1/(x*x))*(1-x*
x)*(1-x*x)*((1+
x)*(1+x)-d*d*((1-
x)*(1-x)))*(1+x*x-d*d*(1-
x)*(1-x))*(1+x*x-d*d*(1-x)*(1-
x));
157 inline double XPhononDownconversionProcess::GetTTDecayProb(
double d,
double x){
161 G4double A = 0.5*(1-d*
d)*(fBeta+fLambda+(1+d*d)*(fGamma+fMu));
162 G4double B = fBeta+fLambda+2*d*d*(fGamma+fMu);
163 G4double C = fBeta + fLambda + 2*(fGamma+fMu);
164 G4double D = (1-d*
d)*(2*fBeta+4*fGamma+fLambda+3*fMu);
166 return (A+B*d*x-B*x*x)*(A+B*d*x-B*x*
x)+(C*x*(d-x)-D/(d-
x)*(x-d-(1-d*d)/(4*
x)))*(C*x*(d-x)-D/(d-
x)*(x-d-(1-d*d)/(4*
x)));
172 inline double XPhononDownconversionProcess::MakeLDeviation(
double d,
double x){
175 return std::acos((1+(x*x)-((d*d)*(1-x)*(1-x)))/(2*x));
182 inline double XPhononDownconversionProcess::MakeTDeviation(
double d,
double x){
185 return std::acos((1-x*x+d*d*(1-x)*(1-x))/(2*d*(1-x)));
192 inline double XPhononDownconversionProcess::MakeTTDeviation(
double d,
double x){
195 return std::acos((1-d*d*(1-x)*(1-x)+d*d*x*x)/(2*d*x));
201 void XPhononDownconversionProcess::MakeTTSecondaries(
const G4Track& aTrack){
216 while(!(p<GetTTDecayProb(d, x))){
223 G4double theta1=MakeTTDeviation(d, (x));
224 G4double theta2=MakeTTDeviation(d, (1-x));
237 G4double E=aTrack.GetKineticEnergy();
281 void XPhononDownconversionProcess::MakeLTSecondaries(
const G4Track& aTrack){
295 while(!(p<GetLTDecayProb(d, x))){
301 G4double thetaL=MakeLDeviation(d, x);
302 G4double thetaT=MakeTDeviation(d, x);;
339 sec2->SetVelocity(Lattice->
MapKtoV(polarization, dir2)*
m/
s);
340 sec2->UseGivenVelocity(
true);