File indexing completed on 2025-01-18 09:58:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 #ifndef G4fissionEvent_hh
0057 #define G4fissionEvent_hh
0058
0059 #include "globals.hh"
0060 #include <string>
0061
0062 class G4fissionEvent {
0063 private:
0064 G4int neutronNu;
0065 G4double* neutronEnergies;
0066 G4double* neutronVelocities;
0067 G4double* neutronDircosu;
0068 G4double* neutronDircosv;
0069 G4double* neutronDircosw;
0070 G4double* neutronAges;
0071
0072 G4int photonNu;
0073 G4double* photonEnergies;
0074 G4double* photonVelocities;
0075 G4double* photonDircosu;
0076 G4double* photonDircosv;
0077 G4double* photonDircosw;
0078 G4double* photonAges;
0079
0080
0081 static G4int delayoption;
0082 static G4int correlationoption;
0083 static G4int nudistoption;
0084 static G4int Cf252ndistoption;
0085 static G4int Cf252nengoption;
0086 static G4double (*rngdptr)(void);
0087 static float (*rngfptr)(void);
0088
0089 public:
0090
0091 G4fissionEvent(G4int isotope, G4double time, G4double nubar, G4double eng);
0092 ~G4fissionEvent();
0093 G4int getNeutronNu() {
0094 return neutronNu;
0095 }
0096 G4int getPhotonNu() {
0097 return photonNu;
0098 }
0099 G4double getNeutronEnergy(G4int index) {
0100 if (index >= 0 && index < neutronNu) return neutronEnergies[index];
0101 else return -1;
0102 }
0103 G4double getNeutronVelocity(G4int index) {
0104 if (index >= 0 && index < neutronNu) return neutronVelocities[index];
0105 else return -1;
0106 }
0107 G4double getNeutronDircosu(G4int index) {
0108 if (index >= 0 && index < neutronNu) return neutronDircosu[index];
0109 else return -1;
0110 }
0111 G4double getNeutronDircosv(G4int index) {
0112 if (index >= 0 && index < neutronNu) return neutronDircosv[index];
0113 else return -1;
0114 }
0115 G4double getNeutronDircosw(G4int index) {
0116 if (index >= 0 && index < neutronNu) return neutronDircosw[index];
0117 else return -1;
0118 }
0119 G4double getPhotonEnergy(G4int index) {
0120 if (index >= 0 && index < photonNu) return photonEnergies[index];
0121 else return -1;
0122 }
0123 G4double getPhotonVelocity(G4int index) {
0124 if (index >= 0 && index < photonNu) return photonVelocities[index];
0125 else return -1;
0126 }
0127 G4double getPhotonDircosu(G4int index) {
0128 if (index >= 0 && index < photonNu) return photonDircosu[index];
0129 else return -1;
0130 }
0131 G4double getPhotonDircosv(G4int index) {
0132 if (index >= 0 && index < photonNu) return photonDircosv[index];
0133 else return -1;
0134 }
0135 G4double getPhotonDircosw(G4int index) {
0136 if (index >= 0 && index < photonNu) return photonDircosw[index];
0137 else return -1;
0138 }
0139 G4double getNeutronAge(G4int index) {
0140 if (index >= 0 && index < neutronNu) return neutronAges[index];
0141 else return -1;
0142 }
0143 G4double getPhotonAge(G4int index) {
0144 if (index >= 0 && index < photonNu) return photonAges[index];
0145 else return -1;
0146 }
0147 static void setDelayOption(G4int delay) {
0148 delayoption = delay;
0149 };
0150 static void setCorrelationOption(G4int correlation) {
0151 correlationoption = correlation;
0152 };
0153 static void setNudistOption(G4int nudist) {
0154 nudistoption = nudist;
0155 };
0156 static void setCf252Option(G4int ndist, G4int neng) {
0157 Cf252ndistoption = ndist;
0158 Cf252nengoption = neng;
0159 };
0160 static void setRNGf(float (*funcptr) (void)) {
0161 rngfptr = funcptr;
0162 rngdptr = rngf2d;
0163 }
0164 static void setRNGd(G4double (*funcptr) (void)) {
0165 rngdptr = funcptr;
0166 }
0167
0168
0169 private:
0170 G4int G4SmpNuDistDataU232_234_236_238(G4double nubar);
0171 G4int G4SmpNuDistDataU232_234_236_238_MC(G4double nubar);
0172 G4int G4SmpNuDistDataU233_235(G4double nubar);
0173 G4int G4SmpNuDistDataU233_235_MC(G4double nubar);
0174 G4int G4SmpNuDistDataU235(G4double erg, G4int option);
0175 G4int G4SmpNuDistDataPu239(G4double erg);
0176 G4double G4SmpNVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
0177 G4double G4SmpNEngCf252(G4int option);
0178 void G4SmpIsoDir(G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
0179 G4double G4SmpGEng();
0180 G4int G4SmpNuDistDataPu239_241(G4double nubar);
0181 G4int G4SmpNuDistDataPu239_241_MC(G4double nubar);
0182 G4int G4SmpNuDistDataU238(G4double erg);
0183 G4int G4SmpNugDist(G4int isotope, G4double nubar);
0184 G4double G4SmpPVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
0185 G4int G4SmpSpNuDistData(G4int isotope, G4int Cf252option);
0186 G4double G4SmpSpNubarData(G4int isotope);
0187 G4int G4SmpSpNugDistData(G4int isotope);
0188 G4double G4SmpTerrell(G4double nubar);
0189 G4double G4SmpWatt(G4double ePart, G4int iso);
0190 void G4fissionerr(G4int iSever, std::string chSubNam, std::string chMsg);
0191 static G4double fisslibrng(void);
0192 static G4double rngf2d(void);
0193 };
0194
0195 #endif