115 if(!
isActive && 0 == nRegions) {
return; }
125 G4cout <<
"### === Deexcitation model " <<
name
126 <<
" is activated for " << nRegions;
133 for(
size_t j=0; j<nRegions; ++j) {
155 for(
G4int k=0; k<nelm; ++k) {
157 if(
Z > 5 &&
Z < 93) {
175 G4cout <<
"### === PIXE model for hadrons: "
178 G4cout <<
"### === PIXE model for e+-: "
193 if(rname ==
"DefaultRegionForParallelWorld") {
return; }
201 if(ss ==
"world" || ss ==
"World" || ss ==
"WORLD") {
202 ss =
"DefaultRegionForTheWorld";
205 for(
size_t i=0; i<
n; ++i) {
223 if(ss ==
"DefaultRegionForTheWorld") {
227 if(ss == (*regions)[i]->
GetName()) {
continue; }
245 if(gCut < as->BindingEnergy()) {
268 if(eLossMax <= 0.0 || truelength <= 0.0) {
return; }
296 const G4double* theAtomNumDensityVector =
297 material->GetVecNbOfAtomsPerVolume();
301 for(
G4int i=0; i<nelm; ++i) {
302 G4int Z = (*theElementVector)[i]->GetZasInt();
305 std::min(9,(*theElementVector)[i]->GetNbOfAtomicShells());
306 G4double rho = truelength*theAtomNumDensityVector[i];
308 for(
G4int ii=0; ii<nshells; ++ii) {
335 for(
G4int j=0; j<nsec; ++j) {
357 }
while (stot < 1.0);
static const G4double reg
std::vector< const G4Element * > G4ElementVector
G4double G4Log(G4double x)
#define G4MUTEX_INITIALIZER
G4GLOB_DLL std::ostream G4cout
G4double BindingEnergy() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static G4ElementTable * GetElementTable()
static size_t GetNumberOfElements()
static G4EmParameters * Instance()
const G4String & PIXECrossSectionModel()
const G4String & PIXEElectronCrossSectionModel()
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
G4bool DeexcitationIgnoreCut() const
G4ProductionCuts * GetProductionCuts() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
const std::vector< G4double > * GetEnergyCutsVector(std::size_t pcIdx) const
static G4ProductionCutsTable * GetProductionCutsTable()
static G4RegionStore * GetInstance()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4ThreeVector & GetPosition() const
G4double GetKineticEnergy() const
G4Track * GetTrack() const
G4StepPoint * GetPreStepPoint() const
G4double GetStepLength() const
G4StepPoint * GetPostStepPoint() const
G4ParticleDefinition * GetDefinition() const
void SetCreatorModelID(const G4int id)
std::vector< G4String > activeRegions
G4VAtomDeexcitation(const G4String &modname="Deexcitation")
std::vector< G4bool > activeAugerMedia
std::vector< G4bool > AugerRegions
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
std::vector< G4bool > deRegions
const G4String & GetName() const
G4bool CheckAugerActiveRegion(G4int coupleIndex)
std::vector< G4bool > PIXERegions
std::vector< G4bool > activePIXEMedia
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
std::vector< G4bool > activeZ
void InitialiseAtomicDeexcitation()
std::vector< G4DynamicParticle * > vdyn
virtual ~G4VAtomDeexcitation()
void AlongStepDeexcitation(std::vector< G4Track * > &tracks, const G4Step &step, G4double &eLoss, G4int coupleIndex)
virtual G4double GetShellIonisationCrossSectionPerAtom(const G4ParticleDefinition *, G4int Z, G4AtomicShellEnumerator shell, G4double kinE, const G4Material *mat=nullptr)=0
void SetDeexcitationActiveRegion(const G4String &rname, G4bool valDeexcitation, G4bool valAuger, G4bool valPIXE)
const G4ParticleDefinition * gamma
virtual void InitialiseForNewRun()=0
std::vector< G4bool > activeDeexcitationMedia
const G4ProductionCutsTable * theCoupleTable
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
const char * name(G4int ptype)
G4double bindingEnergy(G4int A, G4int Z)