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 "globals.hh"
00059 #include <string>
00060
00061 class G4fissionEvent {
00062 private:
00063 G4int neutronNu;
00064 G4double* neutronEnergies;
00065 G4double* neutronVelocities;
00066 G4double* neutronDircosu;
00067 G4double* neutronDircosv;
00068 G4double* neutronDircosw;
00069 G4double* neutronAges;
00070
00071 G4int photonNu;
00072 G4double* photonEnergies;
00073 G4double* photonVelocities;
00074 G4double* photonDircosu;
00075 G4double* photonDircosv;
00076 G4double* photonDircosw;
00077 G4double* photonAges;
00078
00079
00080 static G4int delayoption;
00081 static G4int correlationoption;
00082 static G4int nudistoption;
00083 static G4int Cf252ndistoption;
00084 static G4int Cf252nengoption;
00085 static G4double (*rngdptr)(void);
00086 static float (*rngfptr)(void);
00087
00088 public:
00089
00090 G4fissionEvent(G4int isotope, G4double time, G4double nubar, G4double eng);
00091 ~G4fissionEvent();
00092 G4int getNeutronNu() {
00093 return neutronNu;
00094 }
00095 G4int getPhotonNu() {
00096 return photonNu;
00097 }
00098 G4double getNeutronEnergy(G4int index) {
00099 if (index >= 0 && index < neutronNu) return neutronEnergies[index];
00100 else return -1;
00101 }
00102 G4double getNeutronVelocity(G4int index) {
00103 if (index >= 0 && index < neutronNu) return neutronVelocities[index];
00104 else return -1;
00105 }
00106 G4double getNeutronDircosu(G4int index) {
00107 if (index >= 0 && index < neutronNu) return neutronDircosu[index];
00108 else return -1;
00109 }
00110 G4double getNeutronDircosv(G4int index) {
00111 if (index >= 0 && index < neutronNu) return neutronDircosv[index];
00112 else return -1;
00113 }
00114 G4double getNeutronDircosw(G4int index) {
00115 if (index >= 0 && index < neutronNu) return neutronDircosw[index];
00116 else return -1;
00117 }
00118 G4double getPhotonEnergy(G4int index) {
00119 if (index >= 0 && index < photonNu) return photonEnergies[index];
00120 else return -1;
00121 }
00122 G4double getPhotonVelocity(G4int index) {
00123 if (index >= 0 && index < photonNu) return photonVelocities[index];
00124 else return -1;
00125 }
00126 G4double getPhotonDircosu(G4int index) {
00127 if (index >= 0 && index < photonNu) return photonDircosu[index];
00128 else return -1;
00129 }
00130 G4double getPhotonDircosv(G4int index) {
00131 if (index >= 0 && index < photonNu) return photonDircosv[index];
00132 else return -1;
00133 }
00134 G4double getPhotonDircosw(G4int index) {
00135 if (index >= 0 && index < photonNu) return photonDircosw[index];
00136 else return -1;
00137 }
00138 G4double getNeutronAge(G4int index) {
00139 if (index >= 0 && index < neutronNu) return neutronAges[index];
00140 else return -1;
00141 }
00142 G4double getPhotonAge(G4int index) {
00143 if (index >= 0 && index < photonNu) return photonAges[index];
00144 else return -1;
00145 }
00146 static void setDelayOption(G4int delay) {
00147 delayoption = delay;
00148 };
00149 static void setCorrelationOption(G4int correlation) {
00150 correlationoption = correlation;
00151 };
00152 static void setNudistOption(G4int nudist) {
00153 nudistoption = nudist;
00154 };
00155 static void setCf252Option(G4int ndist, G4int neng) {
00156 Cf252ndistoption = ndist;
00157 Cf252nengoption = neng;
00158 };
00159 static void setRNGf(float (*funcptr) (void)) {
00160 rngfptr = funcptr;
00161 rngdptr = rngf2d;
00162 }
00163 static void setRNGd(G4double (*funcptr) (void)) {
00164 rngdptr = funcptr;
00165 }
00166
00167
00168 private:
00169 G4int G4SmpNuDistDataU232_234_236_238(G4double nubar);
00170 G4int G4SmpNuDistDataU232_234_236_238_MC(G4double nubar);
00171 G4int G4SmpNuDistDataU233_235(G4double nubar);
00172 G4int G4SmpNuDistDataU233_235_MC(G4double nubar);
00173 G4int G4SmpNuDistDataU235(G4double erg, G4int option);
00174 G4int G4SmpNuDistDataPu239(G4double erg);
00175 G4double G4SmpNVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
00176 G4double G4SmpNEngCf252(G4int option);
00177 void G4SmpIsoDir(G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
00178 G4double G4SmpGEng();
00179 G4int G4SmpNuDistDataPu239_241(G4double nubar);
00180 G4int G4SmpNuDistDataPu239_241_MC(G4double nubar);
00181 G4int G4SmpNuDistDataU238(G4double erg);
00182 G4int G4SmpNugDist(G4int isotope, G4double nubar);
00183 G4double G4SmpPVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
00184 G4int G4SmpSpNuDistData(G4int isotope, G4int Cf252option);
00185 G4double G4SmpSpNubarData(G4int isotope);
00186 G4int G4SmpSpNugDistData(G4int isotope);
00187 G4double G4SmpTerrell(G4double nubar);
00188 G4double G4SmpWatt(G4double ePart, G4int iso);
00189 void G4fissionerr(G4int iSever, std::string chSubNam, std::string chMsg);
00190 static G4double fisslibrng(void);
00191 static G4double rngf2d(void);
00192 };