101 regionName(regName), region(0)
103 if(regName ==
"" || regName ==
"world")
105 regionName =
"DefaultRegionForTheWorld";
107 isInitialised =
false;
115 for (
auto pos = tableWF.cbegin(); pos != tableWF.cend(); ++pos)
126 kinEnergyThreshold = val;
134 G4cout <<
"### G4MicroElecCapture: Tracking cut E(MeV) = "
135 << kinEnergyThreshold/MeV <<
" is assigned to " << regionName
148 if (isInitialised) {
return; }
154 for (
G4int i = 0; i < numOfCouples; ++i)
158 G4cout <<
"G4Capture, Material " << i + 1 <<
" / "
160 if (material->
GetName() ==
"Vacuum")
162 tableWF[material->
GetName()] = 0;
169 isInitialised =
true;
180 G4int Ztarget = ((*(aTrack.
GetMaterial()->GetElementVector()))[0])->GetZasInt();
181 G4int Atarget = ((*(aTrack.
GetMaterial()->GetElementVector()))[0])->GetAtomicMassAmu();
190 for (
G4int i = 0; i < Nbelements; ++i)
192 Ztarget = ((*(aTrack.
GetMaterial()->GetElementVector()))[i])->GetZasInt();
193 Atarget = ((*(aTrack.
GetMaterial()->GetElementVector()))[i])->GetAtomicMassAmu();
194 NIEdep = NIEdep + moleculeMass*FractionMass[i] / Atarget*G_Lindhard_Rob(aTrack.
GetKineticEnergy(), Zinc, Ainc, Ztarget, Atarget);
197 WorkFunctionTable::iterator matWF;
198 matWF = tableWF.find(mat);
200 if (matWF == tableWF.end())
203 str += mat +
" not found!";
204 G4Exception(
"G4MicroElecCapture::PostStepGPIL",
"em0002",
216 if (IncPartName ==
"e-")
233 if ((IncPartName ==
"Genericion") || (IncPartName ==
"alpha")
234 || (IncPartName ==
"He3") || (IncPartName ==
"deuteron")
235 || (IncPartName ==
"triton") || (IncPartName ==
"proton"))
262 if (material !=
"G4_ALUMINUM_OXIDE" && material !=
"G4_SILICON_DIOXIDE"
263 && material !=
"G4_BORON_NITRIDE")
269 if (material ==
"G4_ALUMINUM_OXIDE")
274 if (material ==
"G4_SILICON_DIOXIDE")
279 if (material ==
"G4_BORON_NITRIDE")
286 if (P <= 0) {
return DBL_MAX; }
287 else {
return 1 / P; }
299 if (Arecoil <= 0 || Zrecoil == 0)
305 G4double El = 30.724 * Zcible * Zrecoil
307 * (Arecoil + Acible) / Acible;
310 G4double e = Trecoil / (El * CLHEP::eV);
314 Lind = 1. / (1 + Fl * (3.4008 * std::pow(e, 1. / 6.) + 0.40244 * std::pow(e, 3. / 4.) + e));
317 Lind = Lind * Trecoil;
G4double S(G4double temp)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4GLOB_DLL std::ostream G4cout
const G4Material * GetMaterial() const
const G4double * GetFractionVector() const
G4double GetMassOfMolecule() const
std::size_t GetNumberOfElements() const
const G4String & GetName() const
virtual ~G4MicroElecCapture()
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
G4MicroElecCapture(const G4String ®Name, G4double ekinlimit)
G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *) override
void BuildPhysicsTable(const G4ParticleDefinition &) override
void SetKinEnergyLimit(G4double)
G4bool IsApplicable(const G4ParticleDefinition &) override
G4double GetInitialEnergy()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4int GetAtomicNumber() const
G4int GetAtomicMass() const
const G4String & GetParticleName() const
static G4Pow * GetInstance()
G4double Z23(G4int Z) const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
static G4RegionStore * GetInstance()
const G4ParticleDefinition * GetParticleDefinition() const
G4Material * GetMaterial() const
G4double GetKineticEnergy() const
void ProposeTrackStatus(G4TrackStatus status)
void ProposeNonIonizingEnergyDeposit(G4double anEnergyPart)
virtual void Initialize(const G4Track &)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4VParticleChange * pParticleChange