49 minGammaEnergy(100.*
eV),
50 minElectronEnergy(100.*
eV),
60 std::vector<G4DynamicParticle*>* vectorOfParticles;
62 vectorOfParticles =
new std::vector<G4DynamicParticle*>;
64 G4int provShellId = 0;
84 else if ( provShellId == -1)
91 G4Exception(
"G4RDAtomicDeexcitation::GenerateParticles()",
93 "Starting shell uncorrect: check it!");
111 else if ( provShellId == -1)
118 G4Exception(
"G4RDAtomicDeexcitation::GenerateParticles()",
120 "Starting shell uncorrect: check it!");
124 if (aParticle != 0) {vectorOfParticles->push_back(aParticle);}
125 else {provShellId = -2;}
129 while (provShellId > -2);
131 return vectorOfParticles;
138 G4Exception(
"G4RDAtomicDeexcitation::SelectTypeOfTransition()",
140 "Zero or negative shellId!");
145 G4int provShellId = -1;
157 if ( shellId <= refShell->FinalShellId())
161 if(shellNum ==maxNumOfShells-1)
182 while(transProb < trSize){
186 if(partialProb <= partSum)
220 G4double newsinTh = std::sqrt(1.-newcosTh*newcosTh);
223 G4double xDir = newsinTh*std::sin(newPhi);
224 G4double yDir = newsinTh*std::cos(newPhi);
233 while (shellId != transitionManager->
234 ReachableShell(Z,shellNum)->FinalShellId())
236 if(shellNum == maxNumOfShells-1)
243 size_t transitionSize = transitionManager->
244 ReachableShell(Z,shellNum)->OriginatingShellIds().size();
250 while (provShellId != transitionManager->
251 ReachableShell(Z,shellNum)->OriginatingShellId(index))
253 if(index == transitionSize-1)
260 G4double transitionEnergy = transitionManager->
261 ReachableShell(Z,shellNum)->TransitionEnergy(index);
266 ReachableShell(Z,shellNum)->OriginatingShellId(index);
287 G4Exception(
"G4RDAtomicDeexcitation::GenerateAuger()",
289 "Zero or negative shellId!");
309 if ( shellId <= refAugerTransition->FinalShellId() )
314 if (shellId != pippo ) {
317 if(shellNum == maxNumOfShells)
346 G4int transitionLoopShellIndex = 0;
354 G4int transitionSize =
356 while (transitionLoopShellIndex < transitionSize) {
358 std::vector<G4int>::const_iterator
pos =
361 G4int transitionLoopShellId = *(pos+transitionLoopShellIndex);
362 G4int numberOfPossibleAuger =
364 G4int augerIndex = 0;
368 if (augerIndex < numberOfPossibleAuger) {
373 transitionLoopShellId);
377 }
while (augerIndex < numberOfPossibleAuger);
379 transitionLoopShellIndex++;
407 G4double totalVacancyAugerProbability = partSum;
411 G4int transitionRandomShellIndex = 0;
412 G4int transitionRandomShellId = 1;
413 G4int augerIndex = 0;
418 G4int numberOfPossibleAuger =
422 while (transitionRandomShellIndex < transitionSize) {
424 std::vector<G4int>::const_iterator
pos =
427 transitionRandomShellId = *(pos+transitionRandomShellIndex);
430 numberOfPossibleAuger = (anAugerTransition->
431 AugerTransitionProbabilities(transitionRandomShellId))->size();
433 while (augerIndex < numberOfPossibleAuger) {
435 transitionRandomShellId);
439 if (partSum >= (partialProb*totalVacancyAugerProbability) ) {
445 if (partSum >= (partialProb*totalVacancyAugerProbability) ) {
break;}
446 transitionRandomShellIndex++;
453 if (!foundFlag) {
return 0;}
457 G4double newsinTh = std::sqrt(1.-newcosTh*newcosTh);
460 G4double xDir = newsinTh*std::sin(newPhi);
461 G4double yDir = newsinTh*std::cos(newPhi);
482 newElectronDirection,