78 #define G4VEmModel_h 1 
   92 #include <CLHEP/Random/RandomEngine.h> 
  490                                cutEnergy,maxEnergy);
 
  504   if (cross > 
DBL_MIN) { mfp = 1./cross; }
 
  519                                     cutEnergy,maxEnergy);
 
  537                                        cutEnergy,maxEnergy);
 
  555     for( 
size_t i=0; i<
nn; ++i) {
 
  556       Z = 
G4lrint((*elmv)[0]->GetZ());
 
  558       if(tot <= 0.0) { 
break; }
 
  577       for(; idx<ni; ++idx) {
 
  579         if (x <= 0.0) { 
break; }
 
  581       if(idx >= ni) { idx = ni - 1; }
 
size_t GetNumberOfIsotopes() const 
 
G4double LowEnergyActivationLimit() const 
 
G4double HighEnergyActivationLimit() const 
 
G4double MaxSecondaryKinEnergy(const G4DynamicParticle *dynParticle)
 
void SetActivationHighEnergyLimit(G4double)
 
G4bool flagForceBuildTable
 
G4double LowEnergyLimit() const 
 
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual void InitialiseForElement(const G4ParticleDefinition *, G4int Z)
 
virtual void StartTracking(G4Track *)
 
G4ParticleChangeForLoss * GetParticleChangeForLoss()
 
G4double SecondaryThreshold() const 
 
std::vector< G4Element * > G4ElementVector
 
G4bool ForceBuildTableFlag() const 
 
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
 
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)=0
 
G4double GetKineticEnergy() const 
 
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
 
G4double HighEnergyLimit() const 
 
virtual void DefineForRegion(const G4Region *)
 
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
 
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
 
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4VEmAngularDistribution * GetAngularDistribution()
 
void SetSecondaryThreshold(G4double)
 
G4PhysicsTable * GetCrossSectionTable()
 
G4VEmFluctuationModel * GetModelOfFluctuations()
 
virtual G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *)
 
G4ElementData * GetElementData()
 
const G4ElementVector * GetElementVector() const 
 
const G4Element * fCurrentElement
 
G4VEmFluctuationModel * flucModel
 
G4VEmModel(const G4String &nam)
 
G4LossTableManager * fManager
 
void SetHighEnergyLimit(G4double)
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)=0
 
void SetAngularGeneratorFlag(G4bool)
 
const std::vector< G4int > * theDensityIdx
 
const G4double * GetVecNbOfAtomsPerVolume() const 
 
const G4MaterialCutsCouple * CurrentCouple() const 
 
virtual void InitialiseForMaterial(const G4ParticleDefinition *, const G4Material *)
 
G4double secondaryThreshold
 
CLHEP::HepRandomEngine * rndmEngineMod
 
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=0)
 
const G4MaterialCutsCouple * fCurrentCouple
 
G4bool UseAngularGeneratorFlag() const 
 
std::vector< G4EmElementSelector * > * elmSelectors
 
G4VEmModel & operator=(const G4VEmModel &right)
 
G4double CrossSection(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
static const G4double inveplus
 
G4double * GetRelativeAbundanceVector() const 
 
G4VEmAngularDistribution * anglModel
 
void SetCrossSectionTable(G4PhysicsTable *, G4bool isLocal)
 
G4int SelectIsotopeNumber(const G4Element *)
 
const G4ParticleDefinition * GetParticleDefinition() const 
 
std::vector< G4EmElementSelector * > * GetElementSelectors()
 
static const G4double A[nN]
 
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual G4double ChargeSquareRatio(const G4Track &)
 
const std::vector< G4double > * theDensityFactor
 
G4bool IsActive(G4double kinEnergy)
 
void SetActivationLowEnergyLimit(G4double)
 
void SetMasterThread(G4bool val)
 
std::vector< G4double > xsec
 
G4double GetTotNbOfAtomsPerVolume() const 
 
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4bool DeexcitationFlag() const 
 
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
 
G4double ComputeDEDX(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
void SetLPMFlag(G4bool val)
 
void SetCurrentCouple(const G4MaterialCutsCouple *)
 
void SetAngularDistribution(G4VEmAngularDistribution *)
 
G4bool useAngularGenerator
 
G4double PolarAngleLimit() const 
 
void SetForceBuildTable(G4bool val)
 
const G4Isotope * GetIsotope(G4int iso) const 
 
G4VParticleChange * pParticleChange
 
const G4String & GetName() const 
 
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kineticEnergy)
 
size_t GetNumberOfElements() const 
 
G4PhysicsTable * xSectionTable
 
void SetLowEnergyLimit(G4double)
 
const G4Isotope * fCurrentIsotope
 
void SetDeexcitationFlag(G4bool val)
 
G4double ComputeMeanFreePath(const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void SetCurrentElement(const G4Element *)
 
G4ElementData * fElementData
 
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void SetPolarAngleLimit(G4double)
 
G4ParticleChangeForGamma * GetParticleChangeForGamma()
 
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
const G4Material * GetMaterial() const 
 
G4int SelectRandomAtomNumber(const G4Material *)
 
const G4Isotope * GetCurrentIsotope() const 
 
const G4Element * GetCurrentElement() const