00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 #include "G4fissionEvent.hh"
00059
00060 G4int G4fissionEvent::delayoption=0;
00061 G4int G4fissionEvent::correlationoption=0;
00062 G4int G4fissionEvent::nudistoption=3;
00063 G4int G4fissionEvent::Cf252ndistoption=0;
00064 G4int G4fissionEvent::Cf252nengoption=0;
00065
00066 G4fissionEvent::G4fissionEvent(G4int isotope, G4double time,
00067 G4double nubar, G4double eng)
00068 :neutronNu(0), neutronEnergies(0), neutronVelocities(0), neutronDircosu(0),
00069 neutronDircosv(), neutronDircosw(), neutronAges(0),
00070 photonNu(0), photonEnergies(0), photonVelocities(0), photonDircosu(0),
00071 photonDircosv(0), photonDircosw(0), photonAges(0)
00072 {
00073
00074
00075
00076
00077 G4int i;
00078
00079 if (nubar == -1.) {
00080
00081 neutronNu = G4SmpSpNuDistData(isotope, Cf252ndistoption);
00082 photonNu = G4SmpSpNugDistData(isotope);
00083 } else {
00084
00085 if (nudistoption == 0 || nudistoption == 1) {
00086 switch (isotope) {
00087 case 92235:
00088 neutronNu = G4SmpNuDistDataU235(eng,nudistoption);
00089 break;
00090 case 92238:
00091 neutronNu = G4SmpNuDistDataU238(eng);
00092 break;
00093 case 94239:
00094 neutronNu = G4SmpNuDistDataPu239(eng);
00095 break;
00096 default:
00097 neutronNu = (G4int) G4SmpTerrell(nubar);
00098 break;
00099 }
00100 } else if (nudistoption == 2) {
00101 switch (isotope) {
00102 case 92232:
00103 case 92234:
00104 case 92236:
00105 case 92238:
00106 neutronNu = G4SmpNuDistDataU232_234_236_238(nubar);
00107 break;
00108 case 92233:
00109 case 92235:
00110 neutronNu = (G4int) G4SmpNuDistDataU233_235(nubar);
00111 break;
00112 case 94239:
00113 case 94241:
00114 neutronNu = G4SmpNuDistDataPu239_241(nubar);
00115 break;
00116 default:
00117 neutronNu = (G4int) G4SmpTerrell(nubar);
00118 break;
00119 }
00120 } else if (nudistoption == 3) {
00121 switch (isotope) {
00122 case 92232:
00123 case 92234:
00124 case 92236:
00125 case 92238:
00126 neutronNu = G4SmpNuDistDataU232_234_236_238_MC(nubar);
00127 break;
00128 case 92233:
00129 case 92235:
00130 neutronNu = (G4int) G4SmpNuDistDataU233_235_MC(nubar);
00131 break;
00132 case 94239:
00133 case 94241:
00134 neutronNu = G4SmpNuDistDataPu239_241_MC(nubar);
00135 break;
00136 default:
00137 neutronNu = (G4int) G4SmpTerrell(nubar);
00138 break;
00139 }
00140 }
00141 photonNu = G4SmpNugDist(isotope, nubar);
00142 }
00143 if (neutronNu > 0) {
00144 neutronEnergies = new G4double[ neutronNu ];
00145 neutronVelocities = new G4double[ neutronNu ];
00146 neutronDircosu = new G4double[ neutronNu ];
00147 neutronDircosv = new G4double[ neutronNu ];
00148 neutronDircosw = new G4double[ neutronNu ];
00149 neutronAges = new G4double[neutronNu];
00150 for (i=0; i<neutronNu; i++) {
00151 if (isotope == 98252) neutronEnergies[i] = G4SmpNEngCf252(Cf252nengoption);
00152 else neutronEnergies[i] = G4SmpWatt(eng, isotope);
00153 neutronVelocities[i] = G4SmpNVel(
00154 neutronEnergies[i],
00155 &(neutronDircosu[i]),
00156 &(neutronDircosv[i]),
00157 &(neutronDircosw[i])
00158 );
00159 neutronAges[i] = time;
00160 }
00161 }
00162 if (photonNu > 0) {
00163 photonEnergies = new G4double[photonNu];
00164 photonVelocities = new G4double[photonNu];
00165 photonDircosu = new G4double[photonNu];
00166 photonDircosv = new G4double[photonNu];
00167 photonDircosw = new G4double[photonNu];
00168 photonAges = new G4double[photonNu];
00169 for (i=0; i<photonNu; i++) {
00170 photonEnergies[i] = G4SmpGEng();
00171 photonVelocities[i] = G4SmpPVel(
00172 photonEnergies[i],
00173 &(photonDircosu[i]),
00174 &(photonDircosv[i]),
00175 &(photonDircosw[i])
00176 );
00177 photonAges[i] = time;
00178 }
00179 }
00180 }
00181
00182 G4fissionEvent::~G4fissionEvent() {
00183 if (neutronNu > 0) {
00184 delete [] neutronEnergies;
00185 delete [] neutronVelocities;
00186 delete [] neutronDircosu;
00187 delete [] neutronDircosv;
00188 delete [] neutronDircosw;
00189 delete [] neutronAges;
00190 }
00191
00192 if (photonNu > 0) {
00193 delete [] photonEnergies;
00194 delete [] photonVelocities;
00195 delete [] photonDircosu;
00196 delete [] photonDircosv;
00197 delete [] photonDircosw;
00198 delete [] photonAges;
00199 }
00200 }