57     for (pos = 0 ; pos < 100; pos++) 
 
   59     numberOfVacancies.push_back(n);
 
  116   return numberOfVacancies[
Z];
 
  123   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
 
  124     {
G4Exception(
"G4RDAugerData::VacancyId()", 
"OutOfRange",
 
  127     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  128     if (element == augerTransitionTable.end())
 
  129       {
G4Exception(
"G4RDAugerData::VacancyId()", 
"NoDataFound",
 
  131     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  132     n = (
G4int) dataSet[vacancyIndex].FinalShellId();
 
  146   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
 
  147     {
G4Exception(
"G4RDAugerData::NumberOfTransitions()", 
"OutOfRange",
 
  150     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  151     if (element == augerTransitionTable.end())
 
  152       {
G4Exception(
"G4RDAugerData::NumberOfTransitions()", 
"NoDataFound",
 
  154     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  155     n = (
G4int)dataSet[vacancyIndex].TransitionOriginatingShellIds()->size();
 
  165   if (initIndex<0 || initIndex>=numberOfVacancies[Z])
 
  166     {
G4Exception(
"G4RDAugerData::NumberOfAuger()", 
"OutOfRange",
 
  169     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  170     if (element == augerTransitionTable.end())
 
  171       {
G4Exception(
"G4RDAugerData::NumberOfAuger()", 
"NoDataFound",
 
  173     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  174     const std::vector<G4int>* temp =  dataSet[initIndex].AugerOriginatingShellIds(vacancyId);
 
  183   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
 
  184     {
G4Exception(
"G4RDAugerData::AugerShellId()", 
"OutOfRange",
 
  187     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  188     if (element == augerTransitionTable.end())
 
  189       {
G4Exception(
"G4RDAugerData::AugerShellId()", 
"NoDataFound",
 
  191     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  192     n = dataSet[vacancyIndex].AugerOriginatingShellId(augerIndex,transId);
 
  201   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z]) 
 
  202     {
G4Exception(
"G4RDAugerData::StartShellId()", 
"OutOfRange",
 
  205     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  206     if (element == augerTransitionTable.end())
 
  207       {
G4Exception(
"G4RDAugerData::StartShellId()", 
"NoDataFound",
 
  209     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  210      n = dataSet[vacancyIndex].TransitionOriginatingShellId(transitionShellIndex);
 
  221   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z])
 
  222     {
G4Exception(
"G4RDAugerData::StartShellEnergy()", 
"OutOfRange",
 
  225     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  226     if (element == augerTransitionTable.end())
 
  227       {
G4Exception(
"G4RDAugerData::StartShellEnergy()", 
"NoDataFound",
 
  229     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  230     energy = dataSet[vacancyIndex].AugerTransitionEnergy(augerIndex,transitionId);
 
  241   if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies[Z]) 
 
  242     {
G4Exception(
"G4RDAugerData::StartShellProb()", 
"OutOfRange",
 
  245     trans_Table::const_iterator element = augerTransitionTable.find(Z);
 
  246     if (element == augerTransitionTable.end())
 
  247       {
G4Exception(
"G4RDAugerData::StartShellProb()", 
"NoDataFound",
 
  249     std::vector<G4RDAugerTransition> dataSet = (*element).second;
 
  250     prob = dataSet[vacancyIndex].AugerTransitionProbability(augerIndex, transitionId);
 
  262     std::ostringstream ost;
 
  264       ost << 
"au-tr-pr-"<< Z << 
".dat";
 
  267       ost << 
"au-tr-pr-"<<
".dat"; 
 
  271     char* path = getenv(
"G4LEDATA");
 
  274     G4String excep = 
"G4LEDATA environment variable not set";
 
  275     G4Exception(
"G4RDAugerData::LoadData()", 
"InvalidSetup",
 
  281     std::ifstream 
file(dirFile);
 
  282     std::filebuf* lsdp = file.rdbuf();
 
  284     if (! (lsdp->is_open()) )
 
  286     G4String excep = 
"Data file: " + dirFile + 
" not found!";
 
  287     G4Exception(
"G4RDAugerData::LoadData()", 
"DataNotFound",
 
  297     std::vector<G4int>* initIds = 
new std::vector<G4int>;
 
  298     std::vector<G4int>* newIds = 
new std::vector<G4int>;
 
  301     std::vector<G4RDAugerTransition> augerTransitionVector;
 
  302     std::map<G4int,std::vector<G4int>,std::less<G4int> >* newIdMap = 
 
  303       new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
 
  304     std::map<G4int,G4DataVector,std::less<G4int> >* newEnergyMap =
 
  305       new std::map<G4int,G4DataVector,std::less<G4int> >;
 
  306     std::map<G4int,G4DataVector,std::less<G4int> >* newProbabilityMap = 
 
  307       new std::map<G4int,G4DataVector,std::less<G4int> >;
 
  327           std::vector<G4int>::iterator vectorIndex = initIds->begin();
 
  329           vacId = *vectorIndex;
 
  335           std::vector<G4int> identifiers;
 
  336           for (vectorIndex = initIds->begin()+1 ; vectorIndex != initIds->end(); ++vectorIndex){
 
  338         identifiers.push_back(*vectorIndex);
 
  341           vectorIndex = (initIds->end())-1;
 
  343           G4int augerShellId = *(vectorIndex);
 
  346           (*newIdMap)[augerShellId] = *newIds;
 
  347           (*newEnergyMap)[augerShellId] = *transEnergies;
 
  348           (*newProbabilityMap)[augerShellId] = *transProbabilities;
 
  350           augerTransitionVector.push_back(
G4RDAugerTransition(vacId, identifiers, newIdMap, newEnergyMap, newProbabilityMap));
 
  356           delete newProbabilityMap;
 
  358           G4int n = initIds->size();        
 
  359           nInitShells.push_back(n);
 
  360           numberOfVacancies[
Z]++;
 
  363           delete transEnergies;     
 
  364           delete transProbabilities;
 
  365           initIds = 
new std::vector<G4int>;
 
  366           newIds = 
new std::vector<G4int>;
 
  369           newIdMap = 
new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
 
  370           newEnergyMap = 
new std::map<G4int,G4DataVector,std::less<G4int> >;
 
  371           newProbabilityMap = 
new std::map<G4int,G4DataVector,std::less<G4int> >;   
 
  388       delete transEnergies;
 
  389       delete transProbabilities;
 
  392       delete newProbabilityMap; 
 
  397       if (k%nColumns == 3){
 
  399         transProbabilities->push_back(a);
 
  402       else if(k%nColumns == 2){  
 
  408         newIds->push_back(l);
 
  413       else if (k%nColumns == 1)
 
  417           if(initIds->size() == 0) {
 
  422         initIds->push_back((
G4int)a);
 
  432         if((
G4int)a != initIds->back()){
 
  435           if((initIds->size()) == 1) { 
 
  436             initIds->push_back((
G4int)a);
 
  441             G4int augerShellId = 0;
 
  442             augerShellId = initIds->back();
 
  444             (*newIdMap)[augerShellId] = *newIds;
 
  445             (*newEnergyMap)[augerShellId] = *transEnergies;
 
  446             (*newProbabilityMap)[augerShellId] = *transProbabilities;
 
  448             delete transEnergies;
 
  449             delete transProbabilities;
 
  450             newIds = 
new std::vector<G4int>;
 
  453             initIds->push_back((
G4int)a);
 
  461       else if (k%nColumns == 0)
 
  466           transEnergies->push_back(e);
 
  476     return augerTransitionVector;
 
  492   for (
G4int m=0; 
m<nMaterials; 
m++) {
 
  498     for (
size_t iEl=0; iEl<nElements; iEl++) {
 
  499       G4Element* element = (*elementVector)[iEl];
 
  502     activeZ.push_back(Z);
 
  508   for (
G4int element = 6; element < 101; element++)
 
  510       if(nMaterials == 0 || activeZ.
contains(element)) {
 
  511         augerTransitionTable.insert(trans_Table::value_type(element,
LoadData(element)));
 
  513         G4cout << 
"G4RDAugerData for Element no. " << element << 
" are loaded" << 
G4endl;
 
  524   for (
G4int i = 0; i < numberOfVacancies[
Z]; i++)
 
  526       G4cout << 
"---- TransitionData for the vacancy nb " 
  528          <<
" of the atomic number elemnt "  
  543         G4cout << 
"    Auger Originatig Shell Id :"<< augerId <<
G4endl;
 
  544         G4cout << 
" - Transition energy = " << e << 
" MeV "<<
G4endl;
 
  548       G4cout << 
"-------------------------------------------------"  
  554       std::vector<G4RDAugerTransition>* dataSet = &augerTransitionTable[
Z];
 
  555       std::vector<G4RDAugerTransition>::iterator vectorIndex = dataSet->begin() + vacancyShellIndex;
 
  558       return augerTransition;
 
  563     std::vector<G4RDAugerTransition>* dataSet = &augerTransitionTable[
Z];
 
G4double StartShellProb(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const 
std::vector< G4Element * > G4ElementVector
G4double StartShellEnergy(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const 
G4int StartShellId(G4int Z, G4int initialVacancyIndex, G4int transitionShellIndex) const 
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
size_t AugerShellId(G4int Z, G4int vacancyIndex, G4int transId, G4int augerIndex) const 
const G4ElementVector * GetElementVector() const 
std::vector< G4RDAugerTransition > * GetAugerTransitions(G4int Z)
std::vector< G4RDAugerTransition > LoadData(G4int Z)
G4GLOB_DLL std::ostream G4cout
size_t NumberOfTransitions(G4int Z, G4int vacancyIndex) const 
G4int VacancyId(G4int Z, G4int vacancyIndex) const 
static size_t GetNumberOfMaterials()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4RDAugerTransition * GetAugerTransition(G4int Z, G4int vacancyShellIndex)
size_t NumberOfAuger(G4int Z, G4int initIndex, G4int vacancyId) const 
size_t NumberOfVacancies(G4int Z) const 
size_t GetNumberOfElements() const 
void BuildAugerTransitionTable()
G4bool contains(const G4double &) const