112{
113
114
115
116
117
119
120
122 targetZ = aEle->
GetZ();
125
127 if(isv) ni = isv->size();
128
129 if(ni == 1) {
131 } else if(ni > 1) {
135 ni--;
136 do {
137 j++;
138 y -= ab[j];
139 } while (y > 0.0 && j < ni);
141 }
142
143
144 nCascade = 0;
146 nCascade = pEMCascade->
DoCascade(targetZ, targetMass, Cascade);
147
148
152
153
154
156
158 G4int nEmSecondaries = nCascade;
159 G4int nSecondaries = nCascade;
160
161
162
163
166 else
167 captureResult = DoMuCapture();
168
169
170 if(captureResult) nSecondaries += captureResult->size();
171 else nSecondaries = nEmSecondaries;
172
173
175
178
179 if(captureResult) {
180 G4int n = captureResult->size();
181 for (
G4int isec = 0; isec <
n; isec++ ) {
191 delete aParticle;
192 }
193 delete captureResult;
194 }
195
196
197
198 if(nEmSecondaries > 0) {
199
200 for (
G4int isec = 0; isec < nEmSecondaries; isec++ ) {
203 if(isec >= nCascade) localtime += tDelay;
204 if(pd) {
207 aNewParticle->
SetMomentum( Cascade[isec].GetMomentum() );
208
212 }
213 }
214 }
215
218
220}
std::vector< G4Isotope * > G4IsotopeVector
std::vector< G4ReactionProduct * > G4ReactionProductVector
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetMomentum(const G4ThreeVector &momentum)
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
G4IsotopeVector * GetIsotopeVector() const
G4ParticleDefinition * GetParticleDef()
void DoBoundMuonMinusDecay(G4double Z, G4int *nCascade, G4GHEKinematicsVector *Cascade)
G4int DoCascade(const G4double Z, const G4double A, G4GHEKinematicsVector *Cascade)
static G4double GetNuclearMass(const G4double A, const G4double Z)
void AddSecondary(G4Track *aSecondary)
virtual void Initialize(const G4Track &)
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
G4ParticleDefinition * GetDefinition() const
G4Element * GetElement(const G4Material *aMaterial)
G4double GetMuonDecayRate(G4double Z, G4double A)
G4double GetMuonCaptureRate(G4double Z, G4double A)
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4TouchableHandle & GetTouchableHandle() const
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
G4ParticleChange aParticleChange