56 for (pos = 0 ; pos < 100; pos++)
123 {
G4Exception(
"G4RDAugerData::VacancyId()",
"OutOfRange",
128 {
G4Exception(
"G4RDAugerData::VacancyId()",
"NoDataFound",
130 std::vector<G4RDAugerTransition> dataSet = (*element).second;
131 n = (
G4int) dataSet[vacancyIndex].FinalShellId();
146 {
G4Exception(
"G4RDAugerData::NumberOfTransitions()",
"OutOfRange",
151 {
G4Exception(
"G4RDAugerData::NumberOfTransitions()",
"NoDataFound",
153 std::vector<G4RDAugerTransition> dataSet = (*element).second;
154 n = (
G4int)dataSet[vacancyIndex].TransitionOriginatingShellIds()->size();
165 {
G4Exception(
"G4RDAugerData::NumberOfAuger()",
"OutOfRange",
170 {
G4Exception(
"G4RDAugerData::NumberOfAuger()",
"NoDataFound",
172 std::vector<G4RDAugerTransition> dataSet = (*element).second;
173 const std::vector<G4int>* temp = dataSet[initIndex].AugerOriginatingShellIds(vacancyId);
183 {
G4Exception(
"G4RDAugerData::AugerShellId()",
"OutOfRange",
188 {
G4Exception(
"G4RDAugerData::AugerShellId()",
"NoDataFound",
190 std::vector<G4RDAugerTransition> dataSet = (*element).second;
191 n = dataSet[vacancyIndex].AugerOriginatingShellId(augerIndex,transId);
201 {
G4Exception(
"G4RDAugerData::StartShellId()",
"OutOfRange",
206 {
G4Exception(
"G4RDAugerData::StartShellId()",
"NoDataFound",
208 std::vector<G4RDAugerTransition> dataSet = (*element).second;
209 n = dataSet[vacancyIndex].TransitionOriginatingShellId(transitionShellIndex);
221 {
G4Exception(
"G4RDAugerData::StartShellEnergy()",
"OutOfRange",
226 {
G4Exception(
"G4RDAugerData::StartShellEnergy()",
"NoDataFound",
228 std::vector<G4RDAugerTransition> dataSet = (*element).second;
229 energy = dataSet[vacancyIndex].AugerTransitionEnergy(augerIndex,transitionId);
241 {
G4Exception(
"G4RDAugerData::StartShellProb()",
"OutOfRange",
246 {
G4Exception(
"G4RDAugerData::StartShellProb()",
"NoDataFound",
248 std::vector<G4RDAugerTransition> dataSet = (*element).second;
249 prob = dataSet[vacancyIndex].AugerTransitionProbability(augerIndex, transitionId);
261 std::ostringstream ost;
263 ost <<
"au-tr-pr-"<< Z <<
".dat";
266 ost <<
"au-tr-pr-"<<
".dat";
270 char* path = std::getenv(
"G4LEDATA");
273 G4String excep =
"G4LEDATA environment variable not set";
274 G4Exception(
"G4RDAugerData::LoadData()",
"InvalidSetup",
280 std::ifstream
file(dirFile);
281 std::filebuf* lsdp = file.rdbuf();
283 if (! (lsdp->is_open()) )
285 G4String excep =
"Data file: " + dirFile +
" not found!";
286 G4Exception(
"G4RDAugerData::LoadData()",
"DataNotFound",
296 std::vector<G4int>* initIds =
new std::vector<G4int>;
297 std::vector<G4int>* newIds =
new std::vector<G4int>;
300 std::vector<G4RDAugerTransition> augerTransitionVector;
301 std::map<G4int,std::vector<G4int>,std::less<G4int> >* newIdMap =
302 new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
303 std::map<G4int,G4DataVector,std::less<G4int> >* newEnergyMap =
304 new std::map<G4int,G4DataVector,std::less<G4int> >;
305 std::map<G4int,G4DataVector,std::less<G4int> >* newProbabilityMap =
306 new std::map<G4int,G4DataVector,std::less<G4int> >;
326 std::vector<G4int>::iterator vectorIndex = initIds->begin();
328 vacId = *vectorIndex;
334 std::vector<G4int> identifiers;
335 for (vectorIndex = initIds->begin()+1 ; vectorIndex != initIds->end(); ++vectorIndex){
337 identifiers.push_back(*vectorIndex);
340 vectorIndex = (initIds->end())-1;
342 G4int augerShellId = *(vectorIndex);
345 (*newIdMap)[augerShellId] = *newIds;
346 (*newEnergyMap)[augerShellId] = *transEnergies;
347 (*newProbabilityMap)[augerShellId] = *transProbabilities;
349 augerTransitionVector.push_back(
G4RDAugerTransition(vacId, identifiers, newIdMap, newEnergyMap, newProbabilityMap));
355 delete newProbabilityMap;
357 G4int n = initIds->size();
362 delete transEnergies;
363 delete transProbabilities;
364 initIds =
new std::vector<G4int>;
365 newIds =
new std::vector<G4int>;
368 newIdMap =
new std::map<G4int,std::vector<G4int>,std::less<G4int> >;
369 newEnergyMap =
new std::map<G4int,G4DataVector,std::less<G4int> >;
370 newProbabilityMap =
new std::map<G4int,G4DataVector,std::less<G4int> >;
387 delete transEnergies;
388 delete transProbabilities;
391 delete newProbabilityMap;
396 if (k%nColumns == 3){
398 transProbabilities->push_back(a);
401 else if(k%nColumns == 2){
407 newIds->push_back(l);
412 else if (k%nColumns == 1)
416 if(initIds->size() == 0) {
421 initIds->push_back((
G4int)a);
431 if((
G4int)a != initIds->back()){
434 if((initIds->size()) == 1) {
435 initIds->push_back((
G4int)a);
440 G4int augerShellId = 0;
441 augerShellId = initIds->back();
443 (*newIdMap)[augerShellId] = *newIds;
444 (*newEnergyMap)[augerShellId] = *transEnergies;
445 (*newProbabilityMap)[augerShellId] = *transProbabilities;
447 delete transEnergies;
448 delete transProbabilities;
449 newIds =
new std::vector<G4int>;
452 initIds->push_back((
G4int)a);
460 else if (k%nColumns == 0)
465 transEnergies->push_back(e);
475 return augerTransitionVector;
497 for (
size_t iEl=0; iEl<nElements; iEl++) {
498 G4Element* element = (*elementVector)[iEl];
501 activeZ.push_back(Z);
507 for (
G4int element = 6; element < 101; element++)
509 if(nMaterials == 0 || activeZ.
contains(element)) {
512 G4cout <<
"G4RDAugerData for Element no. " << element <<
" are loaded" <<
G4endl;
525 G4cout <<
"---- TransitionData for the vacancy nb "
527 <<
" of the atomic number elemnt "
542 G4cout <<
" Auger Originatig Shell Id :"<< augerId <<
G4endl;
543 G4cout <<
" - Transition energy = " << e <<
" MeV "<<
G4endl;
547 G4cout <<
"-------------------------------------------------"
554 std::vector<G4RDAugerTransition>::iterator vectorIndex = dataSet->begin() + vacancyShellIndex;
557 return augerTransition;