55 for (pos = 0 ; pos < 100; pos++)
57 numberOfVacancies.push_back(n);
114 return numberOfVacancies[Z];
121 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
126 trans_Table::const_iterator element = augerTransitionTable.find(Z);
127 if (element == augerTransitionTable.end()) {
131 std::vector<G4AugerTransition> dataSet = (*element).second;
132 n = (
G4int) dataSet[vacancyIndex].FinalShellId();
144 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
150 trans_Table::const_iterator element = augerTransitionTable.find(Z);
151 if (element == augerTransitionTable.end())
156 std::vector<G4AugerTransition> dataSet = (*element).second;
157 n = (
G4int)dataSet[vacancyIndex].TransitionOriginatingShellIds()->size();
167 if (initIndex<0 || initIndex>=numberOfVacancies[Z])
173 trans_Table::const_iterator element = augerTransitionTable.find(Z);
174 if (element == augerTransitionTable.end()) {
178 std::vector<G4AugerTransition> dataSet = (*element).second;
179 const std::vector<G4int>* temp = dataSet[initIndex].AugerOriginatingShellIds(vacancyId);
188 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
194 trans_Table::const_iterator element = augerTransitionTable.find(Z);
195 if (element == augerTransitionTable.end()) {
199 std::vector<G4AugerTransition> dataSet = (*element).second;
200 n = dataSet[vacancyIndex].AugerOriginatingShellId(augerIndex,transId);
209 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
215 trans_Table::const_iterator element = augerTransitionTable.find(Z);
216 if (element == augerTransitionTable.end()) {
220 std::vector<G4AugerTransition> dataSet = (*element).second;
221 n = dataSet[vacancyIndex].TransitionOriginatingShellId(transitionShellIndex);
232 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
238 trans_Table::const_iterator element = augerTransitionTable.find(Z);
239 if (element == augerTransitionTable.end()) {
243 std::vector<G4AugerTransition> dataSet = (*element).second;
244 energy = dataSet[vacancyIndex].AugerTransitionEnergy(augerIndex,transitionId);
255 if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
261 trans_Table::const_iterator element = augerTransitionTable.find(Z);
262 if (element == augerTransitionTable.end()) {
266 std::vector<G4AugerTransition> dataSet = (*element).second;
267 prob = dataSet[vacancyIndex].AugerTransitionProbability(augerIndex, transitionId);
279 std::ostringstream ost;
281 ost <<
"au-tr-pr-"<< Z <<
".dat";
284 ost <<
"au-tr-pr-"<<
".dat";
288 char* path = std::getenv(
"G4LEDATA");
291 G4String excep =
"G4AugerData::LoadData";
293 std::vector<G4AugerTransition> a;
298 G4String dirFile = pathString +
"/auger/" + name;
299 std::ifstream file(dirFile);
300 std::filebuf* lsdp = file.rdbuf();
302 if (! (lsdp->is_open()) )
304 G4String excep =
"G4AugerData::LoadData";
315 std::vector<G4int>* initIds =
new std::vector<G4int>;
316 std::vector<G4int>* newIds =
new std::vector<G4int>;
319 std::vector<G4AugerTransition> augerTransitionVector;
320 std::map<G4int,std::vector<G4int>,std::less<G4int> >* newIdMap =
321 new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
322 std::map<G4int,G4DataVector,std::less<G4int> >* newEnergyMap =
323 new std::map<G4int,G4DataVector,std::less<G4int> >;
324 std::map<G4int,G4DataVector,std::less<G4int> >* newProbabilityMap =
325 new std::map<G4int,G4DataVector,std::less<G4int> >;
345 std::vector<G4int>::iterator vectorIndex = initIds->begin();
347 vacId = *vectorIndex;
353 std::vector<G4int> identifiers;
354 for (vectorIndex = initIds->begin()+1 ; vectorIndex != initIds->end(); ++vectorIndex){
356 identifiers.push_back(*vectorIndex);
359 vectorIndex = (initIds->end())-1;
361 G4int augerShellId = *(vectorIndex);
364 (*newIdMap)[augerShellId] = *newIds;
365 (*newEnergyMap)[augerShellId] = *transEnergies;
366 (*newProbabilityMap)[augerShellId] = *transProbabilities;
368 augerTransitionVector.push_back(
G4AugerTransition(vacId, identifiers, newIdMap, newEnergyMap, newProbabilityMap));
374 delete newProbabilityMap;
376 G4int n = initIds->size();
377 nInitShells.push_back(n);
378 numberOfVacancies[Z]++;
381 delete transEnergies;
382 delete transProbabilities;
383 initIds =
new std::vector<G4int>;
384 newIds =
new std::vector<G4int>;
387 newIdMap =
new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
388 newEnergyMap =
new std::map<G4int,G4DataVector,std::less<G4int> >;
389 newProbabilityMap =
new std::map<G4int,G4DataVector,std::less<G4int> >;
395 if (sLocal == nColumns)
417 if (k%nColumns == 3){
419 transProbabilities->push_back(a);
422 else if(k%nColumns == 2){
428 newIds->push_back(l);
433 else if (k%nColumns == 1)
437 if(initIds->size() == 0) {
442 initIds->push_back((
G4int)a);
452 if((
G4int)a != initIds->back()){
455 if((initIds->size()) == 1) {
456 initIds->push_back((
G4int)a);
461 G4int augerShellId = 0;
462 augerShellId = initIds->back();
464 (*newIdMap)[augerShellId] = *newIds;
465 (*newEnergyMap)[augerShellId] = *transEnergies;
466 (*newProbabilityMap)[augerShellId] = *transProbabilities;
468 delete transEnergies;
469 delete transProbabilities;
470 newIds =
new std::vector<G4int>;
473 initIds->push_back((
G4int)a);
481 else if (k%nColumns == 0)
486 transEnergies->push_back(e);
498 delete transEnergies;
499 delete transProbabilities;
502 delete newProbabilityMap;
503 return augerTransitionVector;
519 for (
G4int mLocal=0; mLocal<nMaterials; mLocal++) {
521 const G4Material* material= (*materialTable)[mLocal];
525 for (
size_t iEl=0; iEl<nElements; iEl++) {
526 G4Element* element = (*elementVector)[iEl];
529 activeZ.push_back(Z);
535 for (
G4int element = 6; element < 100; element++)
538 augerTransitionTable.insert(trans_Table::value_type(element,
LoadData(element)));
548 for (
G4int i = 0; i < numberOfVacancies[Z]; i++)
550 G4cout <<
"---- TransitionData for the vacancy nb "
552 <<
" of the atomic number elemnt "
567 G4cout <<
" Auger Originatig Shell Id :"<< augerId <<
G4endl;
568 G4cout <<
" - Transition energy = " << e <<
" MeV "<<
G4endl;
572 G4cout <<
"-------------------------------------------------"
578 std::vector<G4AugerTransition>* dataSet = &augerTransitionTable[Z];
579 std::vector<G4AugerTransition>::iterator vectorIndex = dataSet->begin() + vacancyShellIndex;
582 return augerTransition;
587 std::vector<G4AugerTransition>* dataSet = &augerTransitionTable[Z];
std::vector< G4Element * > G4ElementVector
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::vector< G4Material * > G4MaterialTable
G4GLOB_DLL std::ostream G4cout
void BuildAugerTransitionTable()
std::vector< G4AugerTransition > LoadData(G4int Z)
size_t NumberOfTransitions(G4int Z, G4int vacancyIndex) const
size_t NumberOfAuger(G4int Z, G4int initIndex, G4int vacancyId) const
std::vector< G4AugerTransition > * GetAugerTransitions(G4int Z)
G4int StartShellId(G4int Z, G4int initialVacancyIndex, G4int transitionShellIndex) const
size_t AugerShellId(G4int Z, G4int vacancyIndex, G4int transId, G4int augerIndex) const
G4AugerTransition * GetAugerTransition(G4int Z, G4int vacancyShellIndex)
G4double StartShellProb(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const
size_t NumberOfVacancies(G4int Z) const
G4double StartShellEnergy(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const
G4int VacancyId(G4int Z, G4int vacancyIndex) const
G4bool contains(const G4double &) const
const G4ElementVector * GetElementVector() const
static size_t GetNumberOfMaterials()
size_t GetNumberOfElements() const
static G4MaterialTable * GetMaterialTable()