45 infTableLimit(limitInfTable),
46 supTableLimit(limitSupTable)
55 shellManager->
LoadData(
"/fluor/binding");
61 std::vector<G4RDAtomicShell*> vectorOfShells;
62 size_t shellIndex = 0;
65 for (shellIndex = 0; shellIndex<numberOfShells; shellIndex++)
72 vectorOfShells.push_back(shell);
83 std::vector<G4RDFluoTransition*> vectorOfTransitions;
86 size_t numberOfVacancies = fluoManager-> NumberOfVacancies();
88 for (
size_t vacancyIndex = 0; vacancyIndex<numberOfVacancies; vacancyIndex++)
91 std::vector<G4int> vectorOfIds;
97 for (
size_t origShellIndex = 0; origShellIndex < numberOfTransitions;
102 G4int originatingShellId = fluoManager->
StartShellId(origShellIndex,vacancyIndex);
104 vectorOfIds.push_back(originatingShellId);
107 vectorOfEnergies.push_back(transitionEnergy);
109 vectorOfProbabilities.push_back(transitionProbability);
112 vectorOfEnergies,vectorOfProbabilities);
113 vectorOfTransitions.push_back(transition);
129 std::map<G4int,std::vector<G4RDAtomicShell*>,std::less<G4int> >::iterator
pos;
133 std::vector< G4RDAtomicShell*>vec = (*pos).second;
135 G4int vecSize=vec.size();
137 for (
G4int i=0; i< vecSize; i++){
144 std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> >::iterator ppos;
148 std::vector<G4RDFluoTransition*>vec = (*ppos).second;
150 G4int vecSize=vec.size();
152 for (
G4int i=0; i< vecSize; i++){
176 std::map<G4int,std::vector<G4RDAtomicShell*>,std::less<G4int> >::const_iterator
pos;
182 std::vector<G4RDAtomicShell*> v = (*pos).second;
183 if (shellIndex<v.size())
185 return(v[shellIndex]);
189 size_t lastShell = v.size();
190 G4cout <<
"G4RDAtomicTransitionManager::Shell - Z = "
191 << Z <<
", shellIndex = " << shellIndex
192 <<
" not found; number of shells = " << lastShell <<
G4endl;
196 return v[lastShell - 1];
206 G4Exception(
"G4RDAtomicTransitionManager::Shell()",
217 std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> >::const_iterator
pos;
221 std::vector<G4RDFluoTransition*> v = (*pos).second;
222 if (shellIndex < v.size())
return(v[shellIndex]);
224 G4Exception(
"G4RDAtomicTransitionManager::ReachableShell()",
226 "Reachable shell not found!");
231 G4cout <<
"G4AtomicTransitionMagare warning: No fluorescence or Auger for Z=" << Z <<
G4endl;
243 return augerTransition;
251 std::map<G4int,std::vector<G4RDAtomicShell*>,std::less<G4int> >::const_iterator
pos;
257 std::vector<G4RDAtomicShell*> v = (*pos).second;
263 G4cout <<
"G4AtomicTransitionMagare warning: No fluorescence or Auger for Z=" << Z <<
G4endl;
276 std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> >::const_iterator
pos;
282 std::vector<G4RDFluoTransition*> v = (*pos).second;
287 G4cout <<
"G4AtomicTransitionMagare warning: No fluorescence or Auger for Z=" << Z <<
G4endl;
310 std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> >::iterator
pos;
316 std::vector<G4RDFluoTransition*> v = (*pos).second;
318 if (shellIndex < v.size())
324 for (
size_t j = 0; j<transProb.size(); j++)
326 totalRadTransProb = totalRadTransProb + transProb[j];
328 return totalRadTransProb;
332 G4Exception(
"G4RDAtomicTransitionManager::TotalRadiativeTransitionProbability()",
339 G4cout <<
"G4AtomicTransitionMagare warning: No fluorescence or Auger for Z=" << Z <<
G4endl;
352 std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> >::iterator
pos;
358 std::vector<G4RDFluoTransition*> v = (*pos).second;
361 if (shellIndex<v.size()){
367 for(
size_t j = 0; j<transProb.size(); j++)
369 totalRadTransProb = totalRadTransProb + transProb[j];
372 G4double totalNonRadTransProb= (1 - totalRadTransProb);
374 return totalNonRadTransProb; }
377 G4Exception(
"G4RDAtomicTransitionManager::TotalNonRadiativeTransitionProbability()",
383 G4cout <<
"G4AtomicTransitionMagare warning: No fluorescence or Auger for Z=" << Z <<
G4endl;
G4int NumberOfShells(G4int Z) const
G4RDAugerData * augerData
static const G4double pos
~G4RDAtomicTransitionManager()
G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex)
size_t NumberOfShells(G4int Z) const
const G4DataVector & TransitionProbabilities() const
const G4RDAugerTransition * ReachableAugerShell(G4int Z, G4int shellIndex) const
static G4RDAtomicTransitionManager * Instance()
std::map< G4int, std::vector< G4RDFluoTransition * >, std::less< G4int > > transitionTable
std::map< G4int, std::vector< G4RDAtomicShell * >, std::less< G4int > > shellTable
G4RDAtomicShell * Shell(G4int Z, size_t shellIndex) const
G4int StartShellId(G4int initIndex, G4int vacancyIndex) const
G4int ShellId(G4int Z, G4int shellIndex) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double StartShellEnergy(G4int initIndex, G4int vacancyIndex) const
G4double StartShellProb(G4int initIndex, G4int vacancyIndex) const
G4GLOB_DLL std::ostream G4cout
size_t NumberOfTransitions(G4int vacancyIndex) const
G4int NumberOfReachableShells(G4int Z) const
G4double BindingEnergy(G4int Z, G4int shellIndex) const
G4RDAtomicTransitionManager(G4int minZ=1, G4int maxZ=100, G4int limitInfTable=6, G4int limitSupTable=100)
static G4RDAtomicTransitionManager * instance
size_t NumberOfVacancies(G4int Z) const
G4double bindingEnergy(G4int A, G4int Z)
G4RDAugerTransition * GetAugerTransition(G4int Z, G4int vacancyShellIndex)
void LoadData(const G4String &fileName)
const G4RDFluoTransition * ReachableShell(G4int Z, size_t shellIndex) const
G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex)
G4int NumberOfReachableAugerShells(G4int Z) const
G4int VacancyId(G4int vacancyIndex) const