44 infTableLimit(limitInfTable),
45 supTableLimit(limitSupTable)
54 shellManager->
LoadData(
"/fluor/binding");
60 std::vector<G4AtomicShell*> vectorOfShells;
61 size_t shellIndex = 0;
64 for (shellIndex = 0; shellIndex<numberOfShells; shellIndex++)
71 vectorOfShells.push_back(shell);
82 std::vector<G4FluoTransition*> vectorOfTransitions;
85 size_t numberOfVacancies = fluoManager-> NumberOfVacancies();
87 for (
size_t vacancyIndex = 0; vacancyIndex<numberOfVacancies; vacancyIndex++)
90 std::vector<G4int> vectorOfIds;
96 for (
size_t origShellIndex = 0; origShellIndex < numberOfTransitions;
101 G4int originatingShellId = fluoManager->
StartShellId(origShellIndex,vacancyIndex);
103 vectorOfIds.push_back(originatingShellId);
106 vectorOfEnergies.push_back(transitionEnergy);
108 vectorOfProbabilities.push_back(transitionProbability);
111 vectorOfEnergies,vectorOfProbabilities);
112 vectorOfTransitions.push_back(transition);
128 std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> >::iterator
pos;
132 std::vector< G4AtomicShell*>vec = (*pos).second;
134 G4int vecSize=vec.size();
136 for (
G4int i=0; i< vecSize; i++){
143 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> >::iterator ppos;
147 std::vector<G4FluoTransition*>vec = (*ppos).second;
149 G4int vecSize=vec.size();
151 for (
G4int i=0; i< vecSize; i++){
175 std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> >::const_iterator
pos;
181 std::vector<G4AtomicShell*> v = (*pos).second;
182 if (shellIndex<v.size())
184 return(v[shellIndex]);
188 size_t lastShell = v.size();
189 G4cout <<
"G4AtomicTransitionManager::Shell - Z = "
190 << Z <<
", shellIndex = " << shellIndex
191 <<
" not found; number of shells = " << lastShell <<
G4endl;
195 return v[lastShell - 1];
215 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> >::const_iterator
pos;
219 std::vector<G4FluoTransition*> v = (*pos).second;
220 if (shellIndex < v.size())
return(v[shellIndex]);
222 G4Exception(
"G4AtomicTransitionManager::ReachebleShell()",
"de0002",
JustWarning,
"Energy Deposited Locally.");
232 G4String msg =
"No deexcitation for Z=" + (
G4String(Z))+
". Energy Deposited Locally.";
244 return augerTransition;
252 std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> >::const_iterator
pos;
258 std::vector<G4AtomicShell*> v = (*pos).second;
267 G4String msg =
"No deexcitation for Z=" + (
G4String(Z))+
". Energy Deposited Locally.";
282 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> >::const_iterator
pos;
288 std::vector<G4FluoTransition*> v = (*pos).second;
296 G4String msg =
"No deexcitation for Z=" + (
G4String(Z))+
". Energy Deposited Locally.";
321 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> >::iterator
pos;
327 std::vector<G4FluoTransition*> v = (*pos).second;
329 if (shellIndex < v.size())
335 for (
size_t j = 0; j<transProb.size(); j++)
337 totalRadTransProb = totalRadTransProb + transProb[j];
339 return totalRadTransProb;
344 G4Exception(
"G4AtomicTransitionManager::TotalRadiativeTransitionProbability()",
"de0002",
JustWarning,
"Energy Deposited Locally.");
353 G4String msg =
"No deexcitation for Z=" + (
G4String(Z))+
". Energy Deposited Locally.";
367 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> >::iterator
pos;
373 std::vector<G4FluoTransition*> v = (*pos).second;
376 if (shellIndex<v.size()){
382 for(
size_t j = 0; j<transProb.size(); j++)
384 totalRadTransProb = totalRadTransProb + transProb[j];
387 if (totalRadTransProb > 1) {
388 G4Exception(
"G4AtomicTransitionManager::TotalNonRadiativeTransitionProbability()",
"de0003",
FatalException,
"Total probability mismatch");
391 G4double totalNonRadTransProb= (1 - totalRadTransProb);
393 return totalNonRadTransProb; }
397 G4Exception(
"G4AtomicTransitionManager::TotalNonRadiativeTransitionProbability()",
"de0002",
JustWarning,
"Energy Deposited Locally.");
406 G4String msg =
"No deexcitation for Z=" + (
G4String(Z))+
". Energy Deposited Locally.";
408 G4Exception(
"G4AtomicTransitionManager::TotalNonRadiativeTransitionProbability()",
"de0001",
JustWarning,msg);
static G4ThreadLocal G4AtomicTransitionManager * instance
G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex)
G4int NumberOfShells(G4int Z) const
G4double StartShellProb(G4int initIndex, G4int vacancyIndex) const
G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex)
const G4AugerTransition * ReachableAugerShell(G4int Z, G4int shellIndex) const
G4int NumberOfReachableShells(G4int Z) const
std::map< G4int, std::vector< G4FluoTransition * >, std::less< G4int > > transitionTable
std::map< G4int, std::vector< G4AtomicShell * >, std::less< G4int > > shellTable
const G4DataVector & TransitionProbabilities() const
G4int ShellId(G4int Z, G4int shellIndex) const
void LoadData(const G4String &fileName)
G4GLOB_DLL std::ostream G4cout
G4double BindingEnergy(G4int Z, G4int shellIndex) const
G4int VacancyId(G4int vacancyIndex) const
G4int NumberOfReachableAugerShells(G4int Z) const
G4int StartShellId(G4int initIndex, G4int vacancyIndex) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double StartShellEnergy(G4int initIndex, G4int vacancyIndex) const
const G4FluoTransition * ReachableShell(G4int Z, size_t shellIndex) const
size_t NumberOfShells(G4int Z) const
size_t NumberOfTransitions(G4int vacancyIndex) const
~G4AtomicTransitionManager()
G4AtomicTransitionManager(G4int minZ=1, G4int maxZ=100, G4int limitInfTable=6, G4int limitSupTable=100)
G4AugerTransition * GetAugerTransition(G4int Z, G4int vacancyShellIndex)
size_t NumberOfVacancies(G4int Z) const
G4double bindingEnergy(G4int A, G4int Z)
static G4AtomicTransitionManager * Instance()
G4AtomicShell * Shell(G4int Z, size_t shellIndex) const
static const G4double pos