110 {
111
112
113 G4VarNtp *varntp = new G4VarNtp();
115
120
123 G4double nucleusMass = G4NucleiProperties::GetAtomicMass(nucleusA, nucleusZ);
126
128
130
135
137
138 varntp->ntrack = -1;
139 varntp->massini = theNucleus.
GetA();
140 varntp->mzini = theNucleus.
GetZ();
141
142 std::vector<G4DynamicParticle*> cascadeParticles;
145 theResult->push_back(
new G4Fragment(theNucleus));
146 return theResult;
147 }
148
149
150 varntp->exini = exitationE;
151
153
154
155
156
157
158 eventNumber++;
159
161
162
163
166
167
168
169
170
172 G4cout <<
"Excitation energy: " << excitationEnergy <<
G4endl;
173 abla->breakItUp(nucleusA, nucleusZ, nucleusMass, excitationEnergy, angularMomentum, recoilEnergy, momX, momY, momZ,
174 eventNumber);
176
177 if(verboseLevel > 0) {
178
179 G4cout <<
"G4AblaEvaporation: Target A: " << nucleusA <<
G4endl;
180 G4cout <<
"G4AblaEvaporation: Target Z: " << nucleusZ <<
G4endl;
181
182 for(particleI = 0; particleI < varntp->ntrack; particleI++) {
184 G4cout << varntp->massini <<
" " << varntp->mzini <<
" ";
185 G4cout << varntp->exini <<
" " << varntp->mulncasc <<
" " << varntp->mulnevap <<
" " << varntp->mulntot <<
" ";
186 G4cout << varntp->bimpact <<
" " << varntp->jremn <<
" " << varntp->kfis <<
" " << varntp->estfis <<
" ";
187 G4cout << varntp->izfis <<
" " << varntp->iafis <<
" " << varntp->ntrack <<
" " << varntp->itypcasc[particleI] <<
" ";
188 G4cout << varntp->avv[particleI] <<
" " << varntp->zvv[particleI] <<
" " << varntp->enerj[particleI] <<
" ";
189 G4cout << varntp->plab[particleI] <<
" " << varntp->tetlab[particleI] <<
" " << varntp->philab[particleI] <<
G4endl;
190 }
191 }
192
193
196 G4cout <<
"varntp->ntrack = " << varntp->ntrack <<
G4endl;
197 for(particleI = 0; particleI < varntp->ntrack; particleI++) {
198
199
200 momx = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV;
201 momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV;
202 momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV;
203
204 eKin = varntp->enerj[particleI] * MeV;
205
206 if(verboseLevel > 1) {
207
208
209 }
210
211
213 momDirection = momDirection.unit();
214
215
216 G4int particleIdentified = 0;
217
218
219 if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) {
220 cascadeParticle =
222 particleIdentified++;
223 }
224
225
226 if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) {
227 cascadeParticle =
229 particleIdentified++;
230 }
231
232
233 if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) {
234 cascadeParticle =
236 particleIdentified++;
237 }
238
239
240 if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) {
241 cascadeParticle =
243 particleIdentified++;
244 }
245
246
247 if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) {
248 cascadeParticle =
250 particleIdentified++;
251 }
252
253
254 if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) {
257
260 aIonDef = theTableOfParticles->
FindIon(Z, A, 0, Z);
261
262 cascadeParticle =
264 particleIdentified++;
265 }
266
267
268 if(particleIdentified == 1) {
269
271 cascadeParticles.push_back(cascadeParticle);
272
273 }
274
275 else {
276
277 if(particleIdentified > 1) {
278 G4cout <<
"G4InclCascadeInterface: One outcoming particle was identified as";
279 G4cout <<
"more than one particle type. This is probably due to a bug in the interface." <<
G4endl;
280 G4cout <<
"Particle A:" << varntp->avv[particleI] <<
"Z: " << varntp->zvv[particleI] <<
G4endl;
281 G4cout <<
"(particleIdentified =" << particleIdentified <<
")" <<
G4endl;
282 }
283 }
284 }
285
286
287
288
289
290 varntp->ntrack = 0;
291
292
293
294 delete varntp;
296
297 fillResult(cascadeParticles, theResult);
298 return theResult;
299}
std::vector< G4Fragment * > G4FragmentVector
G4DLLIMPORT std::ostream G4cout
G4LorentzVector Get4Momentum() const
void Set4Momentum(const G4LorentzVector &momentum)
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
static G4Neutron * NeutronDefinition()
G4ParticleDefinition * FindIon(G4int atomicNumber, G4int atomicMass, G4double excitationEnergy)
static G4ParticleTable * GetParticleTable()
static G4PionMinus * PionMinusDefinition()
static G4PionPlus * PionPlusDefinition()
static G4PionZero * PionZeroDefinition()
static G4Proton * ProtonDefinition()