95 G4Fragment parentNucleus(parentA, parentZ, atRest);
100 G4int oldZ(0), oldA(0);
102 if(daughterNucleus) {
112 if (nucPol && oldZ == parentZ && oldA == parentA
113 && std::abs(atRest.e() - oldMass) < mlimit) {
115 parentNucleus = *daughterNucleus;
129 if (parentNucleus.GetExcitationEnergy() > mlimit) {
131 delete daughterNucleus;
132 daughterNucleus =
new G4Fragment(parentNucleus);
133 }
else if(daughterNucleus) {
135 delete daughterNucleus;
136 daughterNucleus =
nullptr;
143 theIonTable->
GetIon(parentZ, parentA, parentNucleus.GetExcitationEnergy(),
146 parentNucleus.GetMomentum());
159 if (shellIndex > -1) {
162 if (atomDeex->
IsFluoActive() && parentZ > 5 && parentZ < 100) {
164 if (shellIndex >= nShells) shellIndex = nShells;
167 std::vector<G4DynamicParticle*> armProducts;
178 for (
G4int i = 0; i <
G4int(armProducts.size()); i++)
179 productEnergy += armProducts[i]->GetKineticEnergy();
185 G4double sinTh = std::sqrt(1.- cosTh*cosTh);
189 sinTh*std::cos(phi), cosTh);
193 armProducts.push_back(extra);
196 G4int nArm = armProducts.size();
199 for (
G4int i = 0; i < nArm; ++i) {
Hep3Vector boostVector() const
static G4LossTableManager * Instance()
G4bool IsFluoActive() const
CLHEP::Hep3Vector G4ThreeVector
G4int PushProducts(G4DynamicParticle *aParticle)
G4ParticleDefinition * G4MT_parent
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
virtual G4Fragment * EmittedFragment(G4Fragment *theNucleus) final
const G4ParticleDefinition * GetParticleDefinition() const
G4double BindingEnergy() const
static constexpr double twopi
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
G4IonTable * GetIonTable() const
static G4Ions::G4FloatLevelBase FloatLevelBase(char flbChar)
G4double GetCreationTime() const
const G4LorentzVector & GetMomentum() const
HepLorentzVector & boost(double, double, double)
void SetMomentum(const G4LorentzVector &value)
G4double GetGroundStateMass() const
G4LorentzVector Get4Momentum() const
G4int GetVacantShellNumber() const
static constexpr double eV
void Set4Momentum(const G4LorentzVector &momentum)
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
static G4EmParameters * Instance()
static G4Electron * Electron()
G4VAtomDeexcitation * AtomDeexcitation()
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
void SetProperTime(G4double)
static constexpr double keV
G4double GetExcitationEnergy() const
G4NuclearPolarization * GetNuclearPolarization() const
void CheckAndFillParent()
static G4int GetNumberOfShells(G4int Z)