134 G4double etotalToSetParticleProperties;
152 G4double lindhardAngleNumberHighLimit0;
156 G4double x1=0.,x2=0.,x3=0.,x4=0.,y1=0.,y2=0.,y3=0.,y4=0.;
158 G4double tx1=0.,tx2=0.,tx3=0.,tx4=0.,ty1=0.,ty2=0.,ty3=0.,ty4=0.;
160 G4double kvx1=0.,kvx2=0.,kvx3=0.,kvx4=0.,kvy1=0.,kvy2=0.,kvy3=0.,kvy4=0.;
190 lindhardAngleNumberHighLimit0 =
192 GetParticleDefinition()->GetParticleDefinitionID());
211 tx0 = std::atan(momentumDirection.
x()/momentumDirection.
z());
212 ty0 = std::atan(momentumDirection.
y()/momentumDirection.
z());
218 etotalToSetParticleProperties = etotal*0.999;
224 tGlobalPreStep=tGlobal;
230 etotalPreStep = etotal;
242 kvx1=fCrystalData->
Ex(x,y);
247 kvy1=fCrystalData->
Ey(x,y);
253 kvx2=fCrystalData->
Ex(x1,y1);
259 kvy2=fCrystalData->
Ey(x1,y1);
261 ty2=ty-kvy1*dzd3+kvy2*dz;
265 kvx3=fCrystalData->
Ex(x2,y2);
266 x3=x+(tx-tx1+tx2)*dz;
270 kvy3=fCrystalData->
Ey(x2,y2);
271 y3=y+(ty-ty1+ty2)*dz;
272 ty3=ty+(kvy1-kvy2+kvy3)*dz;
276 kvx4=fCrystalData->
Ex(x3,y3);
277 x4=x+(tx+3.*tx1+3.*tx2+tx3)*dzd8;
278 tx4=tx+(kvx1+3.*kvx2+3.*kvx3+kvx4)*dzd8-
282 kvy4=fCrystalData->
Ey(x3,y3);
283 y4=y+(ty+3.*ty1+3.*ty2+ty3)*dzd8;
284 ty4=ty+(kvy1+3.*kvy2+3.*kvy3+kvy4)*dzd8;
310 momentumDirectionStep=
311 dz*std::sqrt(1+std::pow(std::tan(tx),2)+std::pow(std::tan(ty),2));
312 tGlobal+=momentumDirectionStep/(fCrystalData->
GetBeta())/CLHEP::c_light;
321 effectiveStep = momentumDirectionStep*fCrystalData->
NuclearDensity(x,y,i);
323 scatteringAnglesAndEnergyLoss += fCrystalData->
324 CoulombAtomicScattering(effectiveStep,momentumDirectionStep,i);
333 momentumDirectionStep);
334 tx += scatteringAnglesAndEnergyLoss.
x();
335 ty += scatteringAnglesAndEnergyLoss.
y();
336 etotal -= scatteringAnglesAndEnergyLoss.
z();
340 if (etotalToSetParticleProperties>etotal)
343 etotalToSetParticleProperties = etotal*0.999;
353 GetParticleDefinition()->
354 GetParticleDefinitionID()))
358 else if (fCrystalData->
GetModel()==1)
365 else if (fCrystalData->
GetModel()==2)
368 if (std::sqrt(tx*tx+ty*ty) >= lindhardAngleNumberHighLimit0*
385 scatteringAnglesAndEnergyLoss.
x(),
386 scatteringAnglesAndEnergyLoss.
y(),
387 momentumDirectionStep,tGlobal,xyz0,
390 Inside(xyz0)!=
kInside&&inCrystal))
426 tGlobal = tGlobalPreStep;
430 etotal = etotalPreStep;
464 GetParticleDefinition()->GetPDGMass());
467 1./std::sqrt(1.+std::pow(std::tan(tx0),2)+std::pow(std::tan(ty0),2));
470 momentumDirectionZ*std::tan(ty0),
471 momentumDirectionZ));
G4bool DoRadiation(G4double etotal, G4double mass, G4double angleX, G4double angleY, G4double angleScatteringX, G4double angleScatteringY, G4double step, G4double globalTime, G4ThreeVector coordinateXYZ, G4bool flagEndTrajectory=false)
G4int GetParticleDefinitionID() const