source: trunk/source/processes/hadronic/models/cascade/evaporation/test/ratioTest.cc@ 1201

Last change on this file since 1201 was 1199, checked in by garnier, 16 years ago

nvx fichiers dans CVS

File size: 27.7 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id: ratioTest.cc,v 1.4 2007/06/21 15:04:38 gunter Exp $
28// GEANT4 tag $Name: geant4-09-03-cand-01 $
29//
30// Test program for G4 Bertini Evaporation.
31
32#define G4VERBOSE 1
33
34#include "G4LayeredNucleus.hh"
35#include "G4BertiniEvaporation.hh"
36
37int main(int argc, char *argv[])
38{
39 G4cout << "%*********************************" << endl
40 << "%* Ratio test *" << endl
41 << "%* Output in Latex table format *" << endl
42 << "%*********************************" << endl << endl;
43
44 G4LayeredNucleus nucl;
45 G4BertiniEvaporation bert;
46 G4VParticleChange * pc;
47 G4int A, Z;
48 G4double E;
49
50 G4int rounds=10000;
51 bert.setVerboseLevel(0);
52
53 G4int ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
54 G4int n=0, p=0, d=0, t=0, h3=0, h4=0, g=0, pn=0, _2n=0, _2p=0, alfan=0, p2n=0, _2pn=0;
55 G4int j;
56
57 G4cout << "% * Rounds : "<< rounds << endl;
58
59 ////////////////////////// Se 74 30, 35 MeV
60
61 A = 74;
62 Z = 34;
63 E = 35;
64
65 nucl.SetParameters( A, Z );
66 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
67 n=p=d=t=h3=h4=g=0;
68
69 for ( j = 0 ; j < rounds ; j++)
70 {
71 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
72 pc = bert.BreakItUp( nucl );
73
74 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
75 {
76 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
77 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
78 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
79 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
80 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
81 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
82 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
83 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
84
85 delete pc->GetSecondary( i );
86 } // loop over particle change vector
87
88 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
89 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
90 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
91 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
92 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
93 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
94 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
95 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
96 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
97 //x G4cout << "% n p pn 2n 2p p2n * " << en
98 pc->Clear();
99 delete pc;
100
101 }
102
103 G4cout << "Se$^{74}$ & " << E << " & pn/2n & 1.7 & " << (G4double) pn/((G4double)_2n)
104 << " \\\\ % " << pn << " " << _2n << endl;
105
106 ///////////////////////// Ge 68 32, E=20
107
108 A = 68;
109 Z = 32;
110 E = 20;
111
112 nucl.SetParameters( A, Z );
113 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
114 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
115 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=0;
116
117 for ( j = 0 ; j < rounds ; j++)
118 {
119 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
120 pc = bert.BreakItUp( nucl );
121
122 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
123 {
124 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
125 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
126 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
127 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
128 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
129 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
130 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
131 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
132
133 delete pc->GetSecondary( i );
134 } // loop over particle change vector
135
136 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
137 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
138 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
139 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
140 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
141 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
142 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
143 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
144 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
145 //x G4cout << "% n p pn 2n 2p p2n * " << en
146 pc->Clear();
147 delete pc;
148
149 }
150
151 G4cout << "Ge$^{68}$ & " << E << " & p/n & 1.76 & " << (G4double) p/((G4double)n)
152 << " \\\\ % " << p << " " << n << endl;
153
154 ///////////////////////// Ge 68 32, E=35
155
156 A = 68;
157 Z = 32;
158 E = 35;
159
160 nucl.SetParameters( A, Z );
161 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
162 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
163 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=0;
164
165 for ( j = 0 ; j < rounds ; j++)
166 {
167 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
168 pc = bert.BreakItUp( nucl );
169
170 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
171 {
172 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
173 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
174 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
175 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
176 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
177 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
178 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
179 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
180
181 delete pc->GetSecondary( i );
182 } // loop over particle change vector
183
184 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
185 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
186 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
187 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
188 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
189 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
190 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
191 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
192 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
193 //x G4cout << "% n p pn 2n 2p p2n * " << en
194 pc->Clear();
195 delete pc;
196
197 }
198
199 G4cout << " & " << E << " & pn/2n & 8.4 & " << (G4double) pn/((G4double)_2n)
200 << " \\\\ % " << pn << " " << _2n << endl;
201
202 ///////////////////////// Ge 68 32, E=40
203
204 A = 68;
205 Z = 32;
206 E = 40;
207
208 nucl.SetParameters( A, Z );
209 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
210 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
211 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
212
213
214 for ( j = 0 ; j < rounds ; j++)
215 {
216 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
217 pc = bert.BreakItUp( nucl );
218
219 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
220 {
221 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
222 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
223 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
224 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
225 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
226 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
227 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
228 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
229
230 delete pc->GetSecondary( i );
231 } // loop over particle change vector
232
233 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
234 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
235 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
236 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
237 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
238 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
239 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
240 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
241 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
242 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
243 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
244 //x G4cout << "% n p pn 2n 2p p2n * " << en
245 pc->Clear();
246 delete pc;
247
248 }
249
250 G4cout << " & " << E << " & 2pn/p2n & 5.8 & " << (G4double) _2pn/((G4double)p2n)
251 << " \\\\ % " << _2pn << " " << p2n << endl;
252
253 ///////////////////////// Ge 67 31, E=35
254
255 A = 67;
256 Z = 31;
257 E = 35;
258
259 nucl.SetParameters( A, Z );
260 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
261 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
262 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
263
264
265 for ( j = 0 ; j < rounds ; j++)
266 {
267 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
268 pc = bert.BreakItUp( nucl );
269
270 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
271 {
272 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
273 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
274 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
275 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
276 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
277 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
278 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
279 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
280
281 delete pc->GetSecondary( i );
282 } // loop over particle change vector
283
284 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
285 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
286 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
287 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
288 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
289 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
290 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
291 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
292 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
293 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
294 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
295 //x G4cout << "% n p pn 2n 2p p2n * " << en
296 pc->Clear();
297 delete pc;
298
299 }
300
301 G4cout << "Ga^{67} & " << E << " & pn/2n & 3.3 & " << (G4double) pn/((G4double)_2n)
302 << " \\\\ % " << pn << " " << _2n << endl;
303
304 ///////////////////////// Ni 58 28
305
306 A = 58;
307 Z = 28;
308 E = 25;
309
310 nucl.SetParameters( A, Z );
311 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
312 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
313 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
314
315
316 for ( j = 0 ; j < rounds ; j++)
317 {
318 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
319 pc = bert.BreakItUp( nucl );
320
321 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
322 {
323 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
324 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
325 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
326 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
327 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
328 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
329 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
330 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
331
332 delete pc->GetSecondary( i );
333 } // loop over particle change vector
334
335 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
336 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
337 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
338 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
339 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
340 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
341 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
342 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
343 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
344 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
345 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
346 //x G4cout << "% n p pn 2n 2p p2n * " << en
347 pc->Clear();
348 delete pc;
349
350 }
351
352 G4cout << "Ni^{58} & " << E << " & p/n & 3.8 & " << (G4double) p/((G4double)n)
353 << " \\\\ % " << p << " " << n << endl;
354
355 /////////////////////////
356
357 ///////////////////////// Ni 58 28, 35
358
359 A = 58;
360 Z = 28;
361 E = 35;
362
363 nucl.SetParameters( A, Z );
364 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
365 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
366 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
367
368
369 for ( j = 0 ; j < rounds ; j++)
370 {
371 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
372 pc = bert.BreakItUp( nucl );
373
374 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
375 {
376 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
377 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
378 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
379 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
380 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
381 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
382 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
383 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
384
385 delete pc->GetSecondary( i );
386 } // loop over particle change vector
387
388 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
389 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
390 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
391 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
392 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
393 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
394 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
395 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
396 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
397 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
398 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
399 //x G4cout << "% n p pn 2n 2p p2n * " << en
400 pc->Clear();
401 delete pc;
402
403 }
404
405 G4cout << "Ni^{58} & " << E << " & pn/2n & 67 & " << (G4double) pn/((G4double)_2n)
406 << " \\\\ % " << pn << " " << _2n << endl;
407
408 ///////////////////////// Ni 58 28 40
409
410 A = 58;
411 Z = 28;
412 E = 40;
413
414 nucl.SetParameters( A, Z );
415 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
416 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
417 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
418
419
420 for ( j = 0 ; j < rounds ; j++)
421 {
422 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
423 pc = bert.BreakItUp( nucl );
424
425 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
426 {
427 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
428 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
429 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
430 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
431 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
432 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
433 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
434 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
435
436 delete pc->GetSecondary( i );
437 } // loop over particle change vector
438
439 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
440 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
441 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
442 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
443 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
444 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
445 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
446 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
447 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
448 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
449 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
450 //x G4cout << "% n p pn 2n 2p p2n * " << en
451 pc->Clear();
452 delete pc;
453
454 }
455
456 G4cout << "Ni^{58} & " << E << " & 2pn/p2n & 7.3 & " << (G4double) _2pn/((G4double)p2n)
457 << " \\\\ % " << _2pn << " " << p2n << endl;
458
459 ///////////////////////// Fe 54 26 35
460
461 A = 54;
462 Z = 26;
463 E = 35;
464
465 nucl.SetParameters( A, Z );
466 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
467 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
468 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
469
470
471 for ( j = 0 ; j < rounds ; j++)
472 {
473 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
474 pc = bert.BreakItUp( nucl );
475
476 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
477 {
478 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
479 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
480 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
481 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
482 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
483 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
484 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
485 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
486
487 delete pc->GetSecondary( i );
488 } // loop over particle change vector
489
490 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
491 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
492 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
493 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
494 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
495 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
496 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
497 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
498 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
499 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
500 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
501 //x G4cout << "% n p pn 2n 2p p2n * " << en
502 pc->Clear();
503 delete pc;
504
505 }
506
507 G4cout << "Fe^{54} & " << E << " & pn/2n & 31 & " << (G4double) pn/((G4double)_2n)
508 << " \\\\ % " << pn << " " << _2n << endl;
509
510 ///
511 ///////////////////////// Mn 54 25 30
512
513 A = 54;
514 Z = 25;
515 E = 30;
516
517 nucl.SetParameters( A, Z );
518 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
519 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
520 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
521
522
523 for ( j = 0 ; j < rounds ; j++)
524 {
525 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
526 pc = bert.BreakItUp( nucl );
527
528 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
529 {
530 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
531 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
532 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
533 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
534 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
535 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
536 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
537 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
538
539 delete pc->GetSecondary( i );
540 } // loop over particle change vector
541
542 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
543 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
544 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
545 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
546 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
547 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
548 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
549 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
550 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
551 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
552 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
553 //x G4cout << "% n p pn 2n 2p p2n * " << en
554 pc->Clear();
555 delete pc;
556
557 }
558
559 G4cout << "Mn^{54} & " << E << " & pn/2n & <1 & " << (G4double) pn/((G4double)_2n)
560 << " \\\\ % " << pn << " " << _2n << endl;
561
562 ///////////////////////// Cr 50 24
563
564 A = 50;
565 Z = 24;
566 E = 25;
567
568 nucl.SetParameters( A, Z );
569 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
570 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
571 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
572
573
574 for ( j = 0 ; j < rounds ; j++)
575 {
576 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
577 pc = bert.BreakItUp( nucl );
578
579 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
580 {
581 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
582 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
583 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
584 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
585 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
586 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
587 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
588 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
589
590 delete pc->GetSecondary( i );
591 } // loop over particle change vector
592
593 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
594 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
595 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
596 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
597 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
598 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
599 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
600 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
601 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
602 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
603 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
604 //x G4cout << "% n p pn 2n 2p p2n * " << en
605 pc->Clear();
606 delete pc;
607
608 }
609
610 G4cout << "Cr^{50} & " << E << " & p/n & 0.51 & " << (G4double) p/((G4double)n)
611 << " \\\\ % " << p << " " << n << endl;
612
613 ///////////////////////// Cr 50 24 35
614
615 A = 50;
616 Z = 24;
617 E = 35;
618
619 nucl.SetParameters( A, Z );
620 nucl.AddExcitationEnergy( E - nucl.GetEnergyDeposit() );
621 ntemp=0, ptemp=0, dtemp=0, ttemp=0, h3temp=0, h4temp=0, gtemp=0;
622 n=p=d=t=h3=h4=g=pn=_2n=_2p=alfan=p2n=_2pn=0;
623
624
625 for ( j = 0 ; j < rounds ; j++)
626 {
627 ntemp=ptemp=dtemp=ttemp=h3temp=h4temp=gtemp=0;
628 pc = bert.BreakItUp( nucl );
629
630 for ( G4int i = 0 ; i < pc->GetNumberOfSecondaries() ; i++ )
631 {
632 const char * name = pc->GetSecondary( i )->GetDefinition()->GetParticleName() ;
633 if ( strcmp ( name , "neutron" ) == 0 ) ntemp++;
634 else if ( strcmp ( name , "proton" ) == 0 ) ptemp++;
635 else if ( strcmp ( name , "deuteron" ) == 0 ) dtemp++;
636 else if ( strcmp ( name , "triton" ) == 0 ) ttemp++;
637 else if ( strcmp ( name , "He3" ) == 0 ) h3temp++;
638 else if ( strcmp ( name , "alpha" ) == 0 ) h4temp++;
639 else if ( strcmp ( name , "gamma" ) == 0 ) gtemp++;
640
641 delete pc->GetSecondary( i );
642 } // loop over particle change vector
643
644 if ( ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) n++;
645 if ( ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) p++;
646 if ( ( ntemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ||
647 ( dtemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 1 ) ) pn++;
648 if ( ntemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2n++;
649 if ( ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 2 ) _2p++;
650 if ( ( ntemp == 2 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
651 ( dtemp == 1 && ntemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) ) p2n++;
652 if ( ( ntemp == 1 && ptemp == 2 && pc->GetNumberOfSecondaries() - gtemp == 3 ) ||
653 ( dtemp == 1 && ptemp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) )_2pn++;
654 if ( ntemp == 1 && h4temp == 1 && pc->GetNumberOfSecondaries() - gtemp == 2 ) alfan++;
655 //x G4cout << "% n p pn 2n 2p p2n * " << en
656 pc->Clear();
657 delete pc;
658
659 }
660
661 G4cout << " & " << E << " & pn/2n & 46 & " << (G4double) pn/((G4double)_2n)
662 << " \\\\ % " << pn << " " << _2n << endl;
663
664
665 return 0;
666}
667
668
669
670
671
672
673
Note: See TracBrowser for help on using the repository browser.