Geant4 Cross Reference |
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 // 27 // This software was developed by Lawrence Livermore National Laboratory. 28 // 29 // Redistribution and use in source and binary forms, with or without 30 // modification, are permitted provided that the following conditions are met: 31 // 32 // 1. Redistributions of source code must retain the above copyright notice, 33 // this list of conditions and the following disclaimer. 34 // 2. Redistributions in binary form must reproduce the above copyright notice, 35 // this list of conditions and the following disclaimer in the documentation 36 // and/or other materials provided with the distribution. 37 // 3. The name of the author may not be used to endorse or promote products 38 // derived from this software without specific prior written permission. 39 // 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 // 51 // Copyright (c) 2006 The Regents of the University of California. 52 // All rights reserved. 53 // UCRL-CODE-224807 54 // 55 // 56 // 57 // This class is a copy of Fission.cc, made for use with Geant4. 58 // 59 60 #include "G4fissionEvent.hh" 61 62 G4fissionEvent* fe; 63 64 extern G4float (*rngfptr) (void); 65 66 extern G4double (*rngdptr) (void); 67 68 extern G4double rngf2d(void); 69 70 void genspfissevt_(G4int *isotope, G4double *time) { 71 if (fe != 0) delete fe; 72 fe = new G4fissionEvent(*isotope, *time, -1., 0.); 73 } 74 75 void genfissevt_(G4int *isotope, G4double *time, G4double *nubar, G4double *eng) { 76 if (fe != 0) delete fe; 77 fe = new G4fissionEvent(*isotope, *time, *nubar, *eng); 78 } 79 80 G4int getnnu_() { 81 return (*fe).getNeutronNu(); 82 } 83 84 G4int getpnu_() { 85 return (*fe).getPhotonNu(); 86 } 87 88 G4double getneng_(G4int *index) { 89 return (*fe).getNeutronEnergy(*index); 90 } 91 92 G4double getnvel_(G4int *index) { 93 return (*fe).getNeutronVelocity(*index); 94 } 95 96 G4double getndircosu_(G4int *index) { 97 return (*fe).getNeutronDircosu(*index); 98 } 99 100 G4double getndircosv_(G4int *index) { 101 return (*fe).getNeutronDircosv(*index); 102 } 103 104 G4double getndircosw_(G4int *index) { 105 return (*fe).getNeutronDircosw(*index); 106 } 107 108 G4double getpeng_(G4int *index) { 109 return (*fe).getPhotonEnergy(*index); 110 } 111 112 G4double getpvel_(G4int *index) { 113 return (*fe).getPhotonVelocity(*index); 114 } 115 116 G4double getpdircosu_(G4int *index) { 117 return (*fe).getPhotonDircosu(*index); 118 } 119 120 G4double getpdircosv_(G4int *index) { 121 return (*fe).getPhotonDircosv(*index); 122 } 123 124 G4double getpdircosw_(G4int *index) { 125 return (*fe).getPhotonDircosw(*index); 126 } 127 128 G4double getnage_(G4int *index) { 129 return (*fe).getNeutronAge(*index); 130 } 131 132 G4double getpage_(G4int *index) { 133 return (*fe).getPhotonAge(*index); 134 } 135 136 void setdelay_(G4int *delay) { 137 (*fe).setDelayOption(*delay); 138 } 139 140 void setcorrel_(G4int *correlation) { 141 (*fe).setCorrelationOption(*correlation); 142 } 143 144 void setnudist_(G4int *nudist) { 145 /* 146 where the argument *nudist affects induced fissions only, it 147 is set to 148 0 for sampling Zucker and Holden probability distributions 149 for U-235,238 and Pu-239. Terrell for other isotopes. 150 1 same as above, but using Gwin, Spencer and Ingle 151 tabulated distributions for thermal energies for U-235. 152 Terrell for other isotopes. 153 2 for sampling fission-induced neutron multiplicity in 154 (a) U-232, U-234, U-236 and U-238 using Zucker and 155 Holden's tabulated data for U-238 156 (b) U-233 and U-235 using Zucker and Holden's tabulated 157 data for U-235 158 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 159 data for Pu-239 160 The P(nu) distributions for *nudist=2 are given as a 161 function of the average number of neutrons from fission, 162 based on interpolation of the data from Zucker and Holden. 163 Terrell for other isotopes. 164 3 for sampling fission-induced neutron multiplicity in 165 (a) U-232, U-234, U-236 and U-238 using Zucker and 166 Holden's tabulated data for U-238 167 (b) U-233 and U-235 using Zucker and Holden's tabulated 168 data for U-235 169 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 170 data for Pu-239 171 The Z&H tables have P(nu) distributions for 11 energies 172 (0 MeV through 10 MeV), along with their nubars. For 173 *nudist=3, we select the P(nu) distribution that has 174 a nubar closest either from above, or from below, to the 175 to the nubar entered for the induced fission, based on a 176 random number and fractional distances to the end of the 177 nubar interval thus formed. 178 Terrell for other isotopes. 179 */ 180 181 (*fe).setNudistOption(*nudist); 182 } 183 184 void setcf252_(G4int *ndist, G4int *neng) { 185 /* 186 where the argument 187 *ndist is set to 188 0 to sample the spontaneous fission neutron multiplicity 189 using tabulated data from Spencer 190 1 to sample the spontaneous fission neutron multiplicity 191 using tabulated data from Boldeman 192 *neng is set to 193 0 to sample the Mannhart corrected Maxwellian spectrum 194 1 to sample the Madland-Nix theoretical spectrum 195 2 to sample the Froehner Watt spectrum 196 */ 197 (*fe).setCf252Option(*ndist, *neng); 198 } 199 200 void setrngf_(G4float (*funcptr) (void)) { 201 G4fissionEvent::setRNGf(funcptr); 202 } 203 204 void setrngd_(G4double (*funcptr) (void)) { 205 G4fissionEvent::setRNGd(funcptr); 206 } 207 // } 208