220  if (!IsScatProjToProjCase){
   221     gammaEnergy=adjointPrimKinEnergy;
   224     if (Emin>=Emax) 
return;
   225     projectileKinEnergy=Emin*std::pow(Emax/Emin,
G4UniformRand());
   231     if (Emin>=Emax) 
return;
   233     G4double f2=(Emax-adjointPrimKinEnergy)/Emax/f1;
   235     projectileKinEnergy=adjointPrimKinEnergy/(1.-f1*std::pow(f2,
G4UniformRand()));
   236     gammaEnergy=projectileKinEnergy-adjointPrimKinEnergy;
   237     diffCSUsed=
lastCZ*adjointPrimKinEnergy/projectileKinEnergy/gammaEnergy;
   254  w_corr*=diffCS/diffCSUsed;
   256  G4double new_weight = aTrack.GetWeight()*w_corr;
   257  fParticleChange->SetParentWeightByProcess(
false);
   258  fParticleChange->SetSecondaryWeightByProcess(
false);
   259  fParticleChange->ProposeParentWeight(new_weight);
   264  G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
   265  G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;   
   266  G4double projectileP = std::sqrt(projectileP2);
   285   projectileMomentum=
G4ThreeVector(std::cos(phi)*sint,std::sin(phi)*sint,cost)*projectileP; 
   286   if (IsScatProjToProjCase) {
   289     G4double cost1 = std::cos(dirProd.
angle(projectileMomentum));
   290     G4double sint1 =  std::sqrt(1.-cost1*cost1);
   291     projectileMomentum=
G4ThreeVector(std::cos(phi)*sint1,std::sin(phi)*sint1,cost1)*projectileP;
   299   if (!IsScatProjToProjCase ){ 
   300     fParticleChange->ProposeTrackStatus(fStopAndKill);
   304     fParticleChange->ProposeEnergy(projectileKinEnergy);
   305     fParticleChange->ProposeMomentumDirection(projectileMomentum.
unit());
 
virtual G4double GetSecondAdjEnergyMaxForProdToProjCase(G4double PrimAdjEnergy)
 
CLHEP::Hep3Vector G4ThreeVector
 
G4double GetPostStepWeightCorrection()
 
G4double CS_biasing_factor
 
G4Material * currentMaterial
 
G4ParticleDefinition * theAdjEquivOfDirectPrimPartDef
 
G4double GetTotalEnergy() const
 
virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase(G4double PrimAdjEnergy)
 
double angle(const Hep3Vector &) const
 
G4double GetKineticEnergy() const
 
virtual G4double DiffCrossSectionPerVolumePrimToSecond(const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyProd)
 
virtual G4double GetSecondAdjEnergyMinForProdToProjCase(G4double PrimAdjEnergy)
 
Hep3Vector & rotateUz(const Hep3Vector &)
 
static const double twopi
 
void DefineCurrentMaterial(const G4MaterialCutsCouple *couple)
 
const G4ThreeVector & GetMomentumDirection() const
 
virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase(G4double PrimAdjEnergy, G4double Tcut=0)
 
G4double GetPDGMass() const
 
static const G4double Emin
 
static const G4double Emax
 
G4double currentTcutForDirectSecond
 
static G4AdjointCSManager * GetAdjointCSManager()