108 G4cout <<
"### === G4UAtomicDeexcitation::InitialiseForNewRun()" <<
G4endl;
125 if (namePIXExsModel ==
"ECPSSR_FormFactor")
129 else if(namePIXExsModel ==
"Empirical")
146 if(namePIXExsElectronModel ==
"Empirical")
150 else if(namePIXExsElectronModel ==
"ECPSSR_Analytical")
154 else if (namePIXExsElectronModel ==
"Penelope")
176 std::vector<G4DynamicParticle*>* vectorOfParticles,
192 G4int provShellId = 0;
222 else if ( provShellId == -1)
244 else if ( provShellId == -1)
258 vectorOfParticles->push_back(aParticle);
261 else {provShellId = -2;}
263 while (provShellId > -2);
308 else if(provShellId == -1){
320 vectorOfParticles->push_back(aParticle);
350 if(Z > 93 || Z < 6 ) {
return xsec; }
370 escaled = kineticEnergy*mass/(pdef->
GetPDGMass());
387 if (q2) {xsec *= q2;}
422 G4int provShellId = -1;
432 if ( shellId <= refShell->FinalShellId())
436 if(shellNum ==maxNumOfShells-1)
457 while(transProb < trSize){
461 if(partialProb <= partSum)
496 G4double newsinTh = std::sqrt((1.-newcosTh)*(1. + newcosTh));
499 G4double xDir = newsinTh*std::sin(newPhi);
500 G4double yDir = newsinTh*std::cos(newPhi);
510 ReachableShell(Z,shellNum)->FinalShellId())
512 if(shellNum == maxNumOfShells-1)
520 ReachableShell(Z,shellNum)->OriginatingShellIds().size();
527 ReachableShell(Z,shellNum)->OriginatingShellId(index))
529 if(index == transitionSize-1)
537 ReachableShell(Z,shellNum)->TransitionEnergy(index);
544 ReachableShell(Z,shellNum)->OriginatingShellId(index);
583 if ( shellId <= refAugerTransition->FinalShellId() )
589 if (shellId != pippo ) {
592 if(shellNum == maxNumOfShells)
606 G4int transitionLoopShellIndex = 0;
614 G4int transitionSize =
616 while (transitionLoopShellIndex < transitionSize) {
618 std::vector<G4int>::const_iterator
pos =
621 G4int transitionLoopShellId = *(pos+transitionLoopShellIndex);
622 G4int numberOfPossibleAuger =
624 G4int augerIndex = 0;
627 if (augerIndex < numberOfPossibleAuger) {
631 transitionLoopShellId);
635 }
while (augerIndex < numberOfPossibleAuger);
637 transitionLoopShellIndex++;
662 G4double totalVacancyAugerProbability = partSum;
665 G4int transitionRandomShellIndex = 0;
666 G4int transitionRandomShellId = 1;
667 G4int augerIndex = 0;
672 G4int numberOfPossibleAuger = 0;
676 while (transitionRandomShellIndex < transitionSize) {
678 std::vector<G4int>::const_iterator
pos =
681 transitionRandomShellId = *(pos+transitionRandomShellIndex);
684 numberOfPossibleAuger = (anAugerTransition->
685 AugerTransitionProbabilities(transitionRandomShellId))->size();
687 while (augerIndex < numberOfPossibleAuger) {
689 transitionRandomShellId);
693 if (partSum >= (partialProb*totalVacancyAugerProbability) ) {
699 if (partSum >= (partialProb*totalVacancyAugerProbability) ) {
break;}
700 transitionRandomShellIndex++;
714 G4double newsinTh = std::sqrt(1.-newcosTh*newcosTh);
717 G4double xDir = newsinTh*std::sin(newPhi);
718 G4double yDir = newsinTh*std::cos(newPhi);
754 newElectronDirection,