78 #define G4VEmModel_h 1
410 G4bool flagForceBuildTable;
415 G4bool useAngularGenerator;
418 std::vector<G4EmElementSelector*>* elmSelectors;
441 std::vector<G4double> xsec;
456 return fCurrentCouple;
463 fCurrentElement = elm;
464 fCurrentIsotope =
nullptr;
471 return fCurrentElement;
478 return fCurrentIsotope;
511 cutEnergy,maxEnergy);
524 return cross > 0.0 ? 1./cross :
DBL_MAX;
538 cutEnergy,maxEnergy);
550 fCurrentCouple = couple;
556 cutEnergy,maxEnergy);
558 fCurrentIsotope =
nullptr;
559 return fCurrentElement;
570 G4int Z = (*elmv)[0]->GetZasInt();
574 for(
size_t i=0; i<
nn; ++i) {
577 Z = (*elmv)[i]->GetZasInt();
592 fCurrentIsotope =
nullptr;
598 for(; idx<ni; ++idx) {
600 if (x <= 0.0) {
break; }
602 if(idx >= ni) { idx = ni - 1; }
605 N = fCurrentIsotope->
GetN();
666 return polarAngleLimit;
673 return secondaryThreshold;
687 return flagDeexcitation;
694 return flagForceBuildTable;
701 return useAngularGenerator;
708 useAngularGenerator = val;
762 return (kinEnergy >= eMinActive && kinEnergy <= eMaxActive);
769 if(!isLocked) { polarAngleLimit = val; }
776 secondaryThreshold = val;
790 flagDeexcitation = val;
797 flagForceBuildTable = val;
820 if(elmSelectors) { nSelectors = elmSelectors->size(); }
821 localElmSelectors =
false;
size_t GetNumberOfIsotopes() const
G4double LowEnergyActivationLimit() const
G4double HighEnergyActivationLimit() const
G4double MaxSecondaryKinEnergy(const G4DynamicParticle *dynParticle)
void SetActivationHighEnergyLimit(G4double)
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
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
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
G4VEmModel(const G4String &nam)
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 *)
double A(double temperature)
virtual void ModelDescription(std::ostream &outFile) const
G4bool UseAngularGeneratorFlag() const
G4double CrossSection(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static const G4double inveplus
G4double * GetRelativeAbundanceVector() const
void SetCrossSectionTable(G4PhysicsTable *, G4bool isLocal)
G4int SelectIsotopeNumber(const G4Element *)
const G4ParticleDefinition * GetParticleDefinition() const
virtual G4double GetPartialCrossSection(const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
std::vector< G4EmElementSelector * > * GetElementSelectors()
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)
static const G4double emax
void SetMasterThread(G4bool val)
G4double GetTotNbOfAtomsPerVolume() const
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
void SetFluctuationFlag(G4bool val)
G4bool DeexcitationFlag() const
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
virtual G4double ComputeDEDX(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
void SetLPMFlag(G4bool val)
void SetCurrentCouple(const G4MaterialCutsCouple *)
void SetAngularDistribution(G4VEmAngularDistribution *)
G4double PolarAngleLimit() const
virtual G4double ComputeCrossSectionPerShell(const G4ParticleDefinition *, G4int Z, G4int shellIdx, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
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)
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