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 }