Geant4-11
G4AblaDataDefs.hh
Go to the documentation of this file.
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// ABLAXX statistical de-excitation model
27// Jose Luis Rodriguez, GSI (translation from ABLA07 and contact person)
28// Pekka Kaitaniemi, HIP (initial translation of ablav3p)
29// Aleksandra Kelic, GSI (ABLA07 code)
30// Davide Mancusi, CEA (contact person INCL)
31// Aatos Heikkinen, HIP (project coordination)
32//
33#define ABLAXX_IN_GEANT4_MODE 1
34
35#include "globals.hh"
36
37// Data structures needed by ABLA evaporation code.
38
39#ifndef G4AblaDataDefs_hh
40#define G4AblaDataDefs_hh 1
41
42#ifdef ABLAXX_IN_GEANT4_MODE
43#include "globals.hh"
44#else
45#include "G4INCLGeant4Compat.hh"
46#endif
47
48#include <cmath>
49
50// ABLA
51
52class G4Nevent {
53public:
56
58};
59
60// ABLA
61#define PACESIZEROWS 500
62#define PACESIZECOLS 500
67class G4Pace {
68
69public:
70 G4Pace() {};
71
72 ~G4Pace() {};
73
75};
76
77#define MASSIZEROWS 154
78#define MASSIZECOLS 13
79
80class G4Mexp {
81
82public:
83 G4Mexp() {};
84
85 ~G4Mexp() {};
86
90};
91
92#define EC2SUBROWS 154
93#define EC2SUBCOLS 99
98class G4Ec2sub {
99public:
101
103
105
109 void dump() {
110 for(G4int i = 0; i < EC2SUBROWS; i++) {
111 for(G4int j = 0; j < EC2SUBCOLS; j++) {
112 //G4cout << ecnz[i][j] << " ";
113 }
114 // G4cout << G4endl;
115 }
116 }
117};
118
119class G4Ald {
120public:
125 :av(0.0), as(0.0), ak(0.0), optafan(0.0)
126 {};
127 ~G4Ald() {};
128
130};
131
132#define ECLDROWS 154
133#define ECLDCOLS 99
134
135#define ECLDROWSbeta 251
136#define ECLDCOLSbeta 137
141class G4Ecld {
142
143public:
144 G4Ecld() {};
146
151
156
161
167
172
177
182};
183
184class G4Fiss {
189public:
191 :bet(0.0), ifis(0.0), ucr(0.0), dcr(0.0), optshp(0), optxfis(0), optct(0), optcol(0),
192 at(0), zt(0)
193 {};
195
198};
199
200#define FBROWS 101
201#define FBCOLS 161
206class G4Fb {
207
208public:
209 G4Fb() {};
210 ~G4Fb() {;}
211
212 // G4double efa[FBROWS][FBCOLS];
214};
215
220class G4Opt {
221
222public:
224 :optemd(0), optcha(0), optshpimf(0), optimfallowed(0), nblan0(0)
225 {};
226 ~G4Opt() {};
227
229};
230
231#define EENUCSIZE 2002
232#define XHESIZE 50
233class G4Eenuc {
234public:
236 for(G4int i = 0; i < EENUCSIZE; ++i) {
237 she[i] = 0.0;
238 }
239 for(G4int i = 0; i < XHESIZE; ++i) {
240 for(G4int j = 0; j < EENUCSIZE; ++j) {
241 xhe[i][j] = 0.0;
242 }
243 }
244 };
246
248};
249
250//#define VOLANTSIZE 200
251#define VOLANTSIZE 301
256class G4Volant {
257
258public:
260 {
261 clear();
262 }
263
265
266 void clear()
267 {
268 for(G4int i = 0; i < VOLANTSIZE; i++) {
269 copied[i] = false;
270 acv[i] = 0;
271 zpcv[i] = 0;
272 pcv[i] = 0;
273 xcv[i] = 0;
274 ycv[i] = 0;
275 zcv[i] = 0;
276 iv = 0;
277 }
278 }
279
281 {
282 G4double total = 0.0;
283 for(G4int i = 0; i <= iv; i++) {
284 total += acv[i];
285 }
286 return total;
287 }
288
289 void dump()
290 {
291/*
292 G4double totA = 0.0, totZ = 0.0, totP = 0.0;
293 // G4cout <<"i \t ACV \t ZPCV \t PCV" << G4endl;
294 for(G4int i = 0; i <= iv; i++) {
295 if(i == 0 && acv[i] != 0) {
296 // G4cout <<"G4Volant: Particle stored at index " << i << G4endl;
297 }
298 totA += acv[i];
299 totZ += zpcv[i];
300 totP += pcv[i];
301 // G4cout << "volant" << i << "\t" << acv[i] << " \t " << zpcv[i] << " \t " << pcv[i] << G4endl;
302 }
303 // G4cout <<"Particle count index (iv) = " << iv << G4endl;
304 // G4cout <<"ABLA Total: A = " << totA << " Z = " << totZ << " momentum = " << totP << G4endl;
305*/
306 }
307
312};
313
314#define VARNTPSIZE 301
315class G4VarNtp {
316public:
318 clear();
319 };
320
322
326 void clear() {
327 particleIndex = 0;
328 projType = 0;
329 projEnergy = 0.0;
330 targetA = 0;
331 targetZ = 0;
332 masp = 0.0; mzsp = 0.0; exsp = 0.0; mrem = 0.0;
333 // To be deleted?
334 spectatorA = 0;
335 spectatorZ = 0;
336 spectatorEx = 0.0;
337 spectatorM = 0.0;
338 spectatorT = 0.0;
339 spectatorP1 = 0.0;
340 spectatorP2 = 0.0;
341 spectatorP3 = 0.0;
342 massini = 0;
343 mzini = 0;
344 exini = 0;
345 pcorem = 0;
346 mcorem = 0;
347 pxrem = 0;
348 pyrem = 0;
349 pzrem = 0;
350 erecrem = 0;
351 mulncasc = 0;
352 mulnevap = 0;
353 mulntot = 0;
354 bimpact = 0.0;
355 jremn = 0;
356 kfis = 0;
357 estfis = 0;
358 izfis = 0;
359 iafis = 0;
360 ntrack = 0;
361 needsFermiBreakup = false;
362 for(G4int i = 0; i < VARNTPSIZE; i++) {
363 itypcasc[i] = 0;
364 avv[i] = 0;
365 zvv[i] = 0;
366 svv[i] = 0;
367 enerj[i] = 0.0;
368 pxlab[i] = 0.0;
369 pylab[i] = 0.0;
370 pzlab[i] = 0.0;
371 full[i] = false;
372 }
373 }
374
379 if(full[particleIndex]) {
380 // G4cout <<"A = " << Z << " Z = " << Z << G4endl;
381 } else {
382 avv[particleIndex] = (int) A;
383 zvv[particleIndex] = (int) Z;
384 enerj[particleIndex] = E;
386 tetlab[particleIndex] = theta;
387 philab[particleIndex] = phi;
388 full[particleIndex] = true;
389 ntrack = particleIndex + 1;
391 }
392 }
393
398 G4int baryonNumber = 0;
399 for(G4int i = 0; i < ntrack; i++) {
400 if(avv[i] > 0) {
401 baryonNumber += avv[i];
402 }
403 }
404 return baryonNumber;
405 }
406
411 G4double energy = 0.0;
412 for(G4int i = 0; i < ntrack; i++) {
413 energy += std::sqrt(std::pow(plab[i], 2) + std::pow(getMass(i), 2)); // E^2 = p^2 + m^2
414 }
415
416 return energy;
417 }
418
423 G4double momentum = 0;
424 for(G4int i = 0; i < ntrack; i++) {
425 momentum += plab[i];
426 }
427 return momentum;
428 }
429
431 G4double momentum = 0;
432 for(G4int i = 0; i < ntrack; i++) {
433 momentum += plab[i];
434 }
435 return momentum;
436 }
437
439 const G4double protonMass = 938.272;
440 const G4double neutronMass = 939.565;
441 const G4double pionMass = 139.57;
442
443 G4double mass = 0.0;
444 if(avv[particle] == 1 && zvv[particle] == 1) mass = protonMass;
445 if(avv[particle] == 1 && zvv[particle] == 0) mass = neutronMass;
446 if(avv[particle] == -1) mass = pionMass;
447 if(avv[particle] > 1)
448 mass = avv[particle] * protonMass + zvv[particle] * neutronMass;
449 return mass;
450 }
451
455 void dump() {
456 G4int nProton = 0, nNeutron = 0;
457 G4int nPiPlus = 0, nPiZero = 0, nPiMinus = 0;
458 G4int nH2 = 0, nHe3 = 0, nAlpha = 0;
459 G4int nGamma=0;
460 G4int nFragments = 0;
461 G4int nParticles = 0;
462 for(G4int i = 0; i < ntrack; i++) {
463 nParticles++;
464 if(avv[i] == 1 && zvv[i] == 1) nProton++; // Count multiplicities
465 if(avv[i] == 1 && zvv[i] == 0) nNeutron++;
466 if(avv[i] == 0 && zvv[i] == 0) nGamma++;
467 if(avv[i] == -1 && zvv[i] == 1) nPiPlus++;
468 if(avv[i] == -1 && zvv[i] == 0) nPiZero++;
469 if(avv[i] == -1 && zvv[i] == -1) nPiMinus++;
470 if(avv[i] == 2 && zvv[i] == 1) nH2++;
471 if(avv[i] == 3 && zvv[i] == 2) nHe3++;
472 if(avv[i] == 4 && zvv[i] == 2) nAlpha++;
473 if( zvv[i] > 2) nFragments++;
474 }
475 }
476
481
486
491
496
501
506
511
516
521
526
531
536
541
546
551
556
558
563
568
573
578
583
588
593
598
603
608
615
623
628
629
634
639
644
649
657
662
667
668private:
670};
671
672#endif
#define PACESIZEROWS
#define MASSIZECOLS
#define ECLDCOLSbeta
#define FBCOLS
#define ECLDROWSbeta
#define VARNTPSIZE
#define ECLDROWS
#define EENUCSIZE
#define ECLDCOLS
#define EC2SUBROWS
#define FBROWS
#define XHESIZE
#define VOLANTSIZE
#define MASSIZEROWS
#define EC2SUBCOLS
#define PACESIZECOLS
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4double as
G4double optafan
G4double av
G4double ak
G4double ecnz[EC2SUBROWS][EC2SUBCOLS]
G4double vgsld[ECLDROWS][ECLDCOLS]
G4double ecfnz[ECLDROWS][ECLDCOLS]
G4double alpha[ECLDROWS][ECLDCOLS]
G4double ecgnz[ECLDROWS][ECLDCOLS]
G4double rms[ECLDROWS][ECLDCOLS]
G4double beta2[ECLDROWSbeta][ECLDCOLSbeta]
G4double beta4[ECLDROWSbeta][ECLDCOLSbeta]
G4double xhe[XHESIZE][EENUCSIZE]
G4double she[EENUCSIZE]
G4double efa[FBCOLS][FBROWS]
G4double ucr
G4int optxfis
G4int optcol
G4int optshp
G4double dcr
G4double bet
G4int optct
G4double ifis
G4double bind[MASSIZEROWS][MASSIZECOLS]
G4double massexp[MASSIZEROWS][MASSIZECOLS]
G4int mexpiop[MASSIZEROWS][MASSIZECOLS]
G4int optcha
G4int optimfallowed
G4int optemd
G4int nblan0
G4int optshpimf
G4double dm[PACESIZEROWS][PACESIZECOLS]
G4double spectatorM
G4double mcorem
G4bool full[VARNTPSIZE]
G4double spectatorP3
G4double massini
void clear()
G4double pzrem
G4double bimpact
G4double enerj[VARNTPSIZE]
G4double getMass(G4int particle)
G4double pylab[VARNTPSIZE]
void addParticle(G4double A, G4double Z, G4double E, G4double P, G4double theta, G4double phi)
G4double projEnergy
G4int svv[VARNTPSIZE]
G4int getTotalBaryonNumber()
G4double exini
G4int avv[VARNTPSIZE]
G4double pzlab[VARNTPSIZE]
G4double mrem
G4double estfis
G4double erecrem
G4double getTotalEnergy()
G4double mzini
G4int mulncasc
G4double plab[VARNTPSIZE]
G4double getMomentumSum()
G4double pxrem
G4int projType
G4double tetlab[VARNTPSIZE]
G4bool needsFermiBreakup
G4double philab[VARNTPSIZE]
G4int particleIndex
G4double pyrem
G4int mulnevap
G4double getTotalThreeMomentum()
G4int itypcasc[VARNTPSIZE]
G4int zvv[VARNTPSIZE]
G4double exsp
G4double spectatorP1
G4double spectatorP2
G4int spectatorZ
G4double spectatorEx
G4double masp
G4double mzsp
G4double spectatorT
G4int spectatorA
G4double pcorem
G4double pxlab[VARNTPSIZE]
G4double xcv[VOLANTSIZE]
G4double pcv[VOLANTSIZE]
G4double zpcv[VOLANTSIZE]
G4bool copied[VOLANTSIZE]
G4double zcv[VOLANTSIZE]
void clear()
G4double getTotalMass()
G4double ycv[VOLANTSIZE]
G4double acv[VOLANTSIZE]
G4double total(Particle const *const p1, Particle const *const p2)
G4double energy(const ThreeVector &p, const G4double m)
static double P[]