344 G4bool flagForceBuildTable;
347 std::vector<G4EmElementSelector*> elmSelectors;
364 std::vector<G4double> xsec;
379 return fCurrentCouple;
386 fCurrentElement = elm;
393 return fCurrentElement;
438 if (cross >
DBL_MIN) { mfp = 1./cross; }
451 fCurrentElement = elm;
453 cutEnergy,maxEnergy);
465 fCurrentCouple = couple;
468 elmSelectors[couple->
GetIndex()]->SelectRandomAtom(kinEnergy);
471 cutEnergy,maxEnergy);
473 return fCurrentElement;
480 fCurrentElement = elm;
488 for(; idx<ni; ++idx) {
490 if (x <= 0.0) {
break; }
492 if(idx >= ni) { idx = ni - 1; }
552 return polarAngleLimit;
559 return secondaryThreshold;
573 return flagDeexcitation;
580 return flagForceBuildTable;
615 return (kinEnergy >= eMinActive && kinEnergy <= eMaxActive);
622 polarAngleLimit = val;
629 secondaryThreshold = val;
643 flagDeexcitation = val;
650 flagForceBuildTable = val;
const G4ParticleDefinition * GetParticleDefinition() const
G4double GetKineticEnergy() const
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
size_t GetNumberOfIsotopes() const
const G4Material * GetMaterial() const
G4bool IsActive(G4double kinEnergy)
void SetPolarAngleLimit(G4double)
G4PhysicsTable * xSectionTable
void SetHighEnergyLimit(G4double)
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
const std::vector< G4double > * theDensityFactor
G4VEmFluctuationModel * GetModelOfFluctuations()
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
void SetActivationLowEnergyLimit(G4double)
G4double PolarAngleLimit() const
G4VEmAngularDistribution * GetAngularDistribution()
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
void SetSecondaryThreshold(G4double)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void SetCurrentCouple(const G4MaterialCutsCouple *)
G4double ComputeMeanFreePath(const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
const G4Element * GetCurrentElement() const
void SetLPMFlag(G4bool val)
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
G4double HighEnergyLimit() const
G4double ComputeDEDX(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=0)
void SetCurrentElement(const G4Element *)
G4VParticleChange * pParticleChange
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void DefineForRegion(const G4Region *)
G4int SelectIsotopeNumber(const G4Element *)
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *)
void SetLowEnergyLimit(G4double)
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
void SetActivationHighEnergyLimit(G4double)
G4double HighEnergyActivationLimit() const
void SetDeexcitationFlag(G4bool val)
G4double CrossSection(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void ForceBuildTable(G4bool val)
void SetAngularDistribution(G4VEmAngularDistribution *)
const G4MaterialCutsCouple * CurrentCouple() const
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)=0
const std::vector< G4int > * theDensityIdx
G4bool DeexcitationFlag() const
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const G4String & GetName() const
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
G4PhysicsTable * GetCrossSectionTable()
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)=0
void SetCrossSectionTable(G4PhysicsTable *)
G4double LowEnergyActivationLimit() const
virtual void StartTracking(G4Track *)
G4bool ForceBuildTableFlag() const
G4double MaxSecondaryKinEnergy(const G4DynamicParticle *dynParticle)
G4double SecondaryThreshold() const
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kineticEnergy)
virtual G4double ChargeSquareRatio(const G4Track &)
G4ParticleChangeForLoss * GetParticleChangeForLoss()