88 delete (*elmSelectors)[i];
171 for(
G4int i=0; i<numOfCouples; ++i) {
174 if(cuts[i] ==
DBL_MAX) {
continue; }
177 auto material = couple->GetMaterial();
181 delete (*elmSelectors)[i];
191 ((*elmSelectors)[i])->
Initialise(part, cuts[i]);
213 size_t n =
material->GetNumberOfElements();
214 for(
size_t i=0; i<
n; ++i) {
251 for (
G4int i=0; i<nelm; ++i) {
252 cross += theAtomNumDensityVector[i]*
286 for(
size_t i=0; i<
n; ++i) {
306 for(
size_t i=0; i<
nn; ++i) {
328 for(; idx<ni; ++idx) {
366 G4int& numberOfRecoil)
368 numberOfTriplets = 0;
435 return kineticEnergy;
471 outFile <<
"The description for this model has not been written yet.\n";
static const G4double emax
G4double G4Log(G4double x)
static constexpr double eplus
static constexpr double keV
static constexpr double pi
static constexpr double TeV
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
size_t GetNumberOfIsotopes() const
static G4EmParameters * Instance()
G4int NumberOfBinsPerDecade() const
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)
G4double GetTotNbOfAtomsPerVolume() const
const G4Element * GetElement(G4int iel) const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
G4double GetPDGCharge() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
const G4ParticleDefinition * GetParticleDefinition() const
G4Material * GetMaterial() const
G4double GetKineticEnergy() const
virtual void FillNumberOfSecondaries(G4int &numberOfTriplets, G4int &numberOfRecoil)
void SetCrossSectionTable(G4PhysicsTable *, G4bool isLocal)
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)
std::vector< G4double > xsec
virtual void InitialiseForMaterial(const G4ParticleDefinition *, const G4Material *)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
const G4Element * fCurrentElement
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)
G4int SelectRandomAtomNumber(const G4Material *)
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
G4VEmAngularDistribution * anglModel
void SetCurrentElement(const G4Element *)
G4VParticleChange * pParticleChange
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
const G4Material * pBaseMaterial
virtual void DefineForRegion(const G4Region *)
virtual void ModelDescription(std::ostream &outFile) const
G4int SelectIsotopeNumber(const G4Element *)
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
std::vector< G4EmElementSelector * > * elmSelectors
G4ElementData * fElementData
const G4Isotope * fCurrentIsotope
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)
G4VEmFluctuationModel * flucModel
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 &)
G4LossTableManager * fEmManager
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)=0
G4VEmModel * fTripletModel
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()
T max(const T t1, const T t2)
brief Return the largest of the two arguments
const char * name(G4int ptype)