48#ifndef G4VAtomDeexcitation_h
49#define G4VAtomDeexcitation_h 1
175 G4bool ignoreCuts =
false;
177 G4bool isActiveLocked =
false;
178 G4bool isAugerLocked =
false;
179 G4bool isPIXELocked =
false;
181 std::vector<G4bool> activeZ;
182 std::vector<G4bool> activeDeexcitationMedia;
183 std::vector<G4bool> activeAugerMedia;
184 std::vector<G4bool> activePIXEMedia;
185 std::vector<G4bool> deRegions;
186 std::vector<G4bool> AugerRegions;
187 std::vector<G4bool> PIXERegions;
188 std::vector<G4DynamicParticle*> vdyn;
189 std::vector<G4String> activeRegions;
193#ifdef G4MULTITHREADED
194 static G4Mutex atomDeexcitationMutex;
200 if(!isActiveLocked) { isActive = val; isActiveLocked =
true; }
210 if(!isAugerLocked) { flagAuger = val; isAugerLocked =
true; }
230 if(!isPIXELocked) { flagPIXE = val; isPIXELocked =
true; }
243inline const std::vector<G4bool>&
262 return (idx < nCouples) ? activeDeexcitationMedia[idx] :
false;
268 return (idx < nCouples) ? activeAugerMedia[idx] :
false;
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
const std::vector< G4bool > & GetListOfActiveAtoms() const
G4VAtomDeexcitation(const G4String &modname="Deexcitation")
G4bool IsAugerActive() const
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
virtual G4double ComputeShellIonisationCrossSectionPerAtom(const G4ParticleDefinition *, G4int Z, G4AtomicShellEnumerator shell, G4double kinE, const G4Material *mat=nullptr)=0
const G4String & GetName() const
G4bool CheckAugerActiveRegion(G4int coupleIndex)
virtual void InitialiseForExtraAtom(G4int Z)=0
virtual void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4double gammaCut, G4double eCut)=0
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
G4VAtomDeexcitation & operator=(const G4VAtomDeexcitation &right)=delete
void SetVerboseLevel(G4int)
G4bool IsFluoActive() const
G4int GetVerboseLevel() const
void InitialiseAtomicDeexcitation()
G4VAtomDeexcitation(G4VAtomDeexcitation &)=delete
void SetAugerCascade(G4bool)
virtual ~G4VAtomDeexcitation()
void AlongStepDeexcitation(std::vector< G4Track * > &tracks, const G4Step &step, G4double &eLoss, G4int coupleIndex)
G4bool IsAugerCascadeActive() const
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)
G4bool IsPIXEActive() const
virtual void InitialiseForNewRun()=0