74{
75
77
78
80
81
82 G4int shellIndex = -1;
85 {
87 shellIndex = 0;
88 break;
91 if (ran <= PL1) shellIndex =1;
92 else if (ran<= (PL1+PL2)) shellIndex =2;
93 else shellIndex =3;
94 break;
97 if (ran < PM1) shellIndex =4;
98 else if (ran< (PM1+PM2)) shellIndex =5;
99 else shellIndex = 6;
100 break;
103 if (ran < PN1) shellIndex = 9;
104 else if (ran<= (PN1+PN2)) shellIndex =2;
105 else shellIndex =10;
106 break;
107 default:
110 }
111
112
116
117
118
121 std::vector<G4DynamicParticle*> armProducts;
122
123 if (applyARM) {
124 if (atomDeex) {
127 if (shellIndex >= nShells) shellIndex = nShells;
132
133
134
135
138
140 }
141
143 for (
G4int i = 0; i <
G4int(armProducts.size()); i++)
144 productEnergy += armProducts[i]->GetKineticEnergy();
145
147 if (deficit > 0.0) {
148
150 G4double sinTh = std::sqrt(1.- cosTh*cosTh);
152
154 sinTh*std::cos(phi), cosTh);
157 deficit);
158 armProducts.push_back(extra);
159 }
160 }
161 }
162
164
165
167 G4double cmMomentum = Q*(Q + 2.*daughterMass)/(Q + daughterMass)/2.;
168
170 G4double sintheta = std::sqrt(1.0 - costheta*costheta);
172 G4ThreeVector direction(sintheta*std::cos(phi),sintheta*std::sin(phi),
173 costheta);
178
179 KE = std::sqrt(cmMomentum*cmMomentum + daughterMass*daughterMass) - daughterMass;
180 daughterParticle =
183
184 G4int nArm = armProducts.size();
185 if (nArm > 0) {
187 for (
G4int i = 0; i < nArm; ++i) {
192 }
193 }
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208 return products;
209}
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
G4double BindingEnergy() const
static G4int GetNumberOfShells(G4int Z)
G4int PushProducts(G4DynamicParticle *aParticle)
G4LorentzVector Get4Momentum() const
void Set4Momentum(const G4LorentzVector &momentum)
static G4Electron * Electron()
static G4EmParameters * Instance()
static G4LossTableManager * Instance()
G4VAtomDeexcitation * AtomDeexcitation()
const G4RadioactiveDecayMode theMode
G4double GetPDGMass() const
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
G4bool IsFluoActive() const
G4ParticleDefinition ** G4MT_daughters
void CheckAndFillParent()
G4ParticleDefinition * G4MT_parent
void CheckAndFillDaughters()