68 inveplus(1.0/
CLHEP::eplus),
69 lowLimit(0.1*
CLHEP::keV),
70 highLimit(100.0*
CLHEP::TeV),
71 polarAngleLimit(
CLHEP::pi),
87 if(localElmSelectors) {
88 for(
G4int i=0; i<nSelectors; ++i) {
89 delete (*elmSelectors)[i];
138 if(highLimit <= lowLimit) {
return; }
140 localElmSelectors =
true;
153 if(material !=
nullptr) {
155 for(
G4int i=0; i<n; ++i) {
192 for (
G4int i=0; i<nelm; ++i) {
193 cross += theAtomNumDensityVector[i]*
227 for(
G4int i=0; i<n; ++i) {
234 return fCurrentElement;
242 if(
nullptr == elm &&
nullptr != mat) {
253 return (
nullptr == elm) ? 0 : elm->
GetZasInt();
262 if(
nullptr == el &&
nullptr != fCurrentCouple) {
276 return (
nullptr != iso) ? iso->GetN() : 0;
306 G4int& numberOfRecoil)
308 numberOfTriplets = 0;
375 return kineticEnergy;
392 if(flucModel != f) { flucModel = f; }
406 localTable = isLocal;
415 ed <<
"The obsolete method SetLPMFlag(..) of the model class " <<
GetName()
416 <<
" is called. Please, use G4EmParameters::Instance()->SetLPM(..)"
426 outFile <<
"The description for this model has not been written yet.\n";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static G4EmParameters * Instance()
static const G4Element * SampleRandomElement(const G4Material *)
static const G4Isotope * SampleRandomIsotope(const G4Element *)
static void InitialiseElementSelectors(G4VEmModel *, const G4ParticleDefinition *, const G4DataVector &cuts, const G4double emin, const G4double emax)
const std::vector< G4double > * GetDensityFactors() const
const std::vector< G4int > * GetCoupleIndexes() const
static G4LossTableManager * Instance()
G4LossTableBuilder * GetTableBuilder()
void DeRegister(G4VEnergyLossProcess *p)
void Register(G4VEnergyLossProcess *p)
const G4Material * GetMaterial() const
const G4Element * GetElement(G4int iel) const
const G4double * GetVecNbOfAtomsPerVolume() const
std::size_t GetNumberOfElements() const
G4double GetPDGCharge() const
const G4ParticleDefinition * GetParticleDefinition() const
G4Material * GetMaterial() const
G4double GetKineticEnergy() const
virtual void FillNumberOfSecondaries(G4int &numberOfTriplets, G4int &numberOfRecoil)
void SetCrossSectionTable(G4PhysicsTable *, G4bool isLocal)
G4int SelectIsotopeNumber(const G4Element *) const
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
G4PhysicsTable * xSectionTable
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
const std::vector< G4double > * theDensityFactor
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
virtual void InitialiseForMaterial(const G4ParticleDefinition *, const G4Material *)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4int SelectRandomAtomNumber(const G4Material *) const
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void SetCurrentCouple(const G4MaterialCutsCouple *)
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
virtual void InitialiseForElement(const G4ParticleDefinition *, G4int Z)
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
G4VParticleChange * pParticleChange
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
const G4Material * pBaseMaterial
const G4Isotope * GetCurrentIsotope(const G4Element *elm=nullptr) const
virtual void DefineForRegion(const G4Region *)
virtual void ModelDescription(std::ostream &outFile) const
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4VEmModel(const G4String &nam)
virtual G4double ComputeCrossSectionPerShell(const G4ParticleDefinition *, G4int Z, G4int shellIdx, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, const G4double &length, G4double &eloss)
const std::vector< G4int > * theDensityIdx
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const G4String & GetName() const
const G4Element * GetCurrentElement(const G4Material *mat=nullptr) const
virtual G4double GetPartialCrossSection(const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
virtual void StartTracking(G4Track *)
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
virtual G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *)
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kineticEnergy)
virtual G4double ChargeSquareRatio(const G4Track &)
G4ParticleChangeForLoss * GetParticleChangeForLoss()