81   singleScatteringMode(false),
 
   88   useSecondMoment(false)
 
  161     for(
size_t i=0; i<numOfCouples; ++i) {
 
  167         delete (*fSecondMoments)[i];
 
  171         for(
size_t j=0; j<
n; ++j) {
 
  203     G4Exception(
"G4WentzelVIModel::ComputeCrossSectionPerAtom", 
"em0011",
 
  238   G4double tlimit = currentMinimalStep;
 
  307   if(rcut > rlimit) { rlimit = 
std::min(rlimit, rcut*sqrt(rlimit/rcut)); }
 
  406           tPathLength = geomStepLength*(1.0 + 0.5*tau + tau*tau/3.0); 
 
  445       } 
else if(
xtsec > 0.0) {
 
  451         } 
else if(tau < 0.999999) { 
 
  511       prob2 = (z2 - z1)/(1.5*z1 - z2);
 
  522       zzz = 
G4Exp(-1.0/z0); 
 
  526     prob2 /= (1 + prob2);
 
  591         for (; i<nelm; ++i) { 
if(
xsecn[i] >= qsec) { 
break; } }
 
  616       if(prob2 > 0.0 && 
G4UniformRand() < prob2) { isFirst = 
false; } 
 
  625       if(cost > 1.0)       { cost = 1.0; }
 
  626       else if(cost < -1.0) { cost =-1.0; }
 
  627       sint = sqrt((1.0 - cost)*(1.0 + cost));
 
  650       temp.set(vx1,vy1,cost);
 
  654   } 
while (0 < nMscSteps);
 
  656   dir.rotateUz(oldDirection);
 
  687   const G4double* theAtomNumDensityVector = 
 
  705   for (
G4int i=0; i<nelm; ++i) {
 
  711     if(costm < cosTheta) {  
 
  721       if(nucsec > 0.0) { esec /= nucsec; }
 
  749   const G4double* theAtomNumDensityVector = 
 
  757   for (
G4int i=0; i<nelm; ++i) {
 
  760     xs += theAtomNumDensityVector[i]
 
virtual ~G4WentzelVIModel()
void SetSingleScatteringFactor(G4double)
ThreeVector shoot(const G4int Ap, const G4int Af)
G4WentzelOKandVIxSection * wokvi
std::vector< G4double > prob
static void SetPhysicsVector(G4PhysicsTable *physTable, size_t idx, G4PhysicsVector *vec)
std::vector< G4Element * > G4ElementVector
G4double GetKineticEnergy() const 
CLHEP::Hep3Vector G4ThreeVector
const G4DynamicParticle * GetDynamicParticle() const 
G4double GetProductionCut(G4int index) const 
G4bool singleScatteringMode
G4StepStatus GetStepStatus() const 
virtual G4ThreeVector & SampleScattering(const G4ThreeVector &, G4double safety)
G4double ComputeSecondTransportMoment(G4double CosThetaMax)
void DefineMaterial(const G4MaterialCutsCouple *)
G4double ConvertTrueToGeom(G4double &tLength, G4double &gLength)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const 
const G4MaterialCutsCouple * currentCouple
G4PhysicsTable * GetCrossSectionTable()
G4ParticleChangeForMSC * fParticleChange
G4ParticleDefinition * GetDefinition() const 
size_t GetVectorLength() const 
const G4Material * currentMaterial
G4WentzelVIModel(G4bool comb=true, const G4String &nam="WentzelVIUni")
const G4Step * GetStep() const 
G4double ComputeSafety(const G4ThreeVector &position, G4double limit=DBL_MAX)
const G4ElementVector * GetElementVector() const 
void FillSecondDerivatives()
G4double SetupTarget(G4int Z, G4double cut=DBL_MAX)
virtual G4double ComputeTruePathLengthLimit(const G4Track &track, G4double ¤tMinimalStep)
static G4PhysicsTable * PreparePhysicsTable(G4PhysicsTable *physTable)
G4StepPoint * GetPreStepPoint() const 
G4double GetEnergy(const G4ParticleDefinition *part, G4double range, const G4MaterialCutsCouple *couple)
G4double ComputeTransportCrossSectionPerAtom(G4double CosThetaMax)
std::vector< G4double > xsecn
const G4double * GetVecNbOfAtomsPerVolume() const 
const G4MaterialCutsCouple * CurrentCouple() const 
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=DBL_MAX, G4double emax=DBL_MAX)
size_t GetTableSize() const 
const G4ThreeVector & GetPosition() const 
G4double GetRange(const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
G4ParticleChangeForMSC * GetParticleChangeForMSC(const G4ParticleDefinition *p=0)
G4double SecondMoment(const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double kineticEnergy)
G4double SetupKinematic(G4double kinEnergy, const G4Material *mat)
void PutValue(size_t index, G4double theValue)
G4double ComputeTransportXSectionPerVolume(G4double cosTheta)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
G4double Energy(size_t index) const 
G4double ComputeGeomLimit(const G4Track &, G4double &presafety, G4double limit)
G4ThreeVector fDisplacement
G4double GetTransportMeanFreePath(const G4ParticleDefinition *part, G4double kinEnergy)
G4double GetRadlen() const 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
void ProposeMomentumDirection(const G4ThreeVector &Pfinal)
static G4ProductionCutsTable * GetProductionCutsTable()
G4double ComputeElectronCrossSection(G4double CosThetaMin, G4double CosThetaMax)
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const 
const G4int minNCollisions
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
void SetupParticle(const G4ParticleDefinition *)
const G4DataVector * currentCuts
void StartTracking(G4Track *)
G4PhysicsTable * GetSecondMomentTable()
G4double ComputeNuclearCrossSection(G4double CosThetaMin, G4double CosThetaMax)
G4double PolarAngleLimit() const 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
const G4ParticleDefinition * particle
G4double GetSafety() const 
G4double ComputeSecondMoment(const G4ParticleDefinition *, G4double kineticEnergy)
G4MscStepLimitType steppingAlgorithm
G4PhysicsTable * fSecondMoments
size_t GetNumberOfElements() const 
G4bool GetFlag(size_t i) const 
virtual G4double ComputeTrueStepLength(G4double geomStepLength)
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
G4ProductionCuts * GetProductionCuts() const 
G4int currentMaterialIndex
void Initialise(const G4ParticleDefinition *, G4double CosThetaLim)
virtual G4double ComputeGeomPathLength(G4double truePathLength)
G4ThreeVector & SampleSingleScattering(G4double CosThetaMin, G4double CosThetaMax, G4double elecRatio=0.0)