Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FissLib.hh 67966 2013-03-13 09:38:38Z gcosmo $
|
||||
//
|
||||
// ********************************************************************
|
||||
// ! A neutron-induced fission package !
|
||||
// ! J.M. Verbeke, Dec-2006 / LLNL !
|
||||
// ! !
|
||||
// ! G4NeutronFissionModule.cc !
|
||||
// ! !
|
||||
// ! Classes to simulate neutron-induced fissions, emitting neutrons !
|
||||
// ! and gamma-rays. Algorithm uses data whenever available, and !
|
||||
// ! models such as the Terrell approximation, the Watt spectrum !
|
||||
// ! otherwise. !
|
||||
// ! !
|
||||
// ! The complete list of references used is shown below: !
|
||||
// ! !
|
||||
// ! J. Terrell, "Distributions of Fission Neutron Numbers", Phys. !
|
||||
// ! Rev. 108, 783 (1957). !
|
||||
// ! M.S. Zucker, N.E. Holden, "Energy Dependence of Neutron !
|
||||
// ! Multiplicity P_nu in Fast-Neutron-Induced Fission for U-235, !
|
||||
// ! U-238 and Pu-239," BNL-38491 (1986). !
|
||||
// ! T.E. Valentine, "MCNP-DSP Users Manual," ORNL/TM-13334, R2, Oak !
|
||||
// ! Ridge National Laboratory (2000). !
|
||||
// ! T.E. Valentine, J.T. Mihalczo, "MCNP-DSP: A Neutron and Gamma !
|
||||
// ! Ray Monte Carlo Calculation of Source-Driven Noise-Measured !
|
||||
// ! Parameters ," Ann. of Nucl. Eng., 23, 16, p. 1271 (1996). !
|
||||
// ! R. Gwin, R.R. Spencer, R.W. Ingle, "Measurements of the Energy !
|
||||
// ! Dependence of Prompt Neutron Emission from U-233, U-235, !
|
||||
// ! Pu-239, and Pu-241 for E_n=0.005 to 10 eV Relative to Emission !
|
||||
// ! from Spontaneous Fission of Cf-252," Nucl. Sci. Eng., 87, 381 !
|
||||
// ! (1984). !
|
||||
// ! J. Frehaut, "Neutron Multiplicity Distribution in Fast !
|
||||
// ! Neutron-Induced Fission," Proc. of IAEA Consultant's Meeting !
|
||||
// ! on Physics of Neutron Emission in Fission, Mito, Japan (1988). !
|
||||
// ! R.R. Spencer, R. Gwin, R.W. Ingle, "A measurement of the Average !
|
||||
// ! Number of Prompt Neutrons from Spontaneous Fission of !
|
||||
// ! Californium-252," Nucl. Sci. Eng. 80, 603 (1982). !
|
||||
// ! J.W. Boldeman, M.G. Hines, "Prompt Neutron Emission !
|
||||
// ! Probabilities Following Spontaneous and Thermal Neutron !
|
||||
// ! Fission," Nucl. Sci. Eng., 91, 114 (1985). !
|
||||
// ! N.E. Holden, M.S. Zucker, "A Reevaluation of the Average Prompt !
|
||||
// ! Neutron Emission Multiplicity (nubar) Values from Fission of !
|
||||
// ! Uranium and Transuranium Nuclides," BNL-NCS-35513, Brookhaven !
|
||||
// ! National Laboratory). !
|
||||
// ! R.J. Howerton, et al, "The LLL Evaluated Nuclear Data Library !
|
||||
// ! (ENDL): Evaluation Techniques, Reaction Index, and Description !
|
||||
// ! of Individual Evaluations," UCRL-50400, V. 15, Part A, !
|
||||
// ! Lawrence Livermore National Laboratory (1975). !
|
||||
// ! D.E. Cullen, "Sampling ENDL Watt Fission Spectra," !
|
||||
// ! UCRL-TR-203251, Lawrence Livermore National Laboratory (2004). !
|
||||
// ! C.J. Everett, E.D. Cashwell, "A Third Monte Carlo Sampler," !
|
||||
// ! LA-9721-MS, Los Alamos National Laboratory (1983). !
|
||||
// ! D.E. Cullen, "TART 2002: A Couple Neutron-Photon 3-D, !
|
||||
// ! Combinatorial Geometry, Time Dependent Monte-Carlo Transport !
|
||||
// ! Code," UCRL-ID-126455, Rev. 4, Lawrence Livermore National !
|
||||
// ! Laboratory (2003). !
|
||||
// ! W. Mannhart, "Evaluation of the Cf-252 Fission Neutron Spectrum !
|
||||
// ! Between 0 MeV and 20 MeV," Proc. Advisory Group Mtg. Neutron !
|
||||
// ! Sources, Leningrad, USSR, 1986 (IAEA-TECDOC-410), Vienna !
|
||||
// ! (1987). !
|
||||
// ! D.G. Madland, J.R. Nix, "Prompt Fission Neutron Spectra and !
|
||||
// ! Average Prompt Neutron Multiplicities,"NEANDC Specialist's !
|
||||
// ! Meeting on Yields and Decay Data of Fission Products, !
|
||||
// ! Brookhaven National Laboratory, BNL 51778 (1984). !
|
||||
// ! F.H. Froehner, "Evaluation of Cf-252 Prompt Fission Neutron Data !
|
||||
// ! from 0 to 20 MeV by Watt Spectrum Fit," Nucl. Sci. Eng. 106, !
|
||||
// ! 345 (1990). !
|
||||
// ! G.S. Brunson, Jr., "Multiplicity and Correlated Energy of Gamma !
|
||||
// ! Rays Emitted in the Spontaneous Fission of Californium-252," !
|
||||
// ! Ph.D. Thesis, University of Utah (1982). !
|
||||
// ! T.E. Valentine, "Evaluation of Prompt Fission Gamma Rays for Use !
|
||||
// ! in Simulating Nuclear Safeguard Measurements," Ann. Nucl. !
|
||||
// ! Eng., 28, 191 (2001). !
|
||||
// ! C. Wagemans, "The Nuclear Fission Process," CRC Press, Inc., Boca!
|
||||
// ! Raton, Florida (1991). !
|
||||
// ! F.C. Maienschein, R.W. Peelle, T.A. Love, Neutron Phys. Ann. !
|
||||
// ! Prog. Rep. for Sept. 1, 1958, ORNL-2609, Oak Ridge National !
|
||||
// ! Laboratory (1958). !
|
||||
// ! "Fundamental Aspects of Reactor Shielding," Addison-Wesley !
|
||||
// ! Publishing Company, Inc. Reading, Massachussetts (1959). !
|
||||
// ! !
|
||||
// ********************************************************************
|
||||
//
|
||||
// Hadronic Process: High Precision low E neutron tracking
|
||||
// original by J.M. Verbeke, LLNL, 5-Jan-07
|
||||
// Builds and has the Cross-section data for one material.
|
||||
|
||||
#ifndef G4FissLib_h
|
||||
#define G4FissLib_h 1
|
||||
|
||||
// Class Description
|
||||
// Final state production model for a high precision (based on evaluated data
|
||||
// libraries) description of neutron induced fission below 10 MeV.
|
||||
// Note that this model (by intent of avoiding the possibility of heating studies) does
|
||||
// not provide the nuclear fragments.
|
||||
//
|
||||
// To be used in your physics list in case you need this physics.
|
||||
// In this case you want to register an object of this class with
|
||||
// the corresponding process.
|
||||
// Class Description - End
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4NeutronHPChannel.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "G4NeutronHPThermalBoost.hh"
|
||||
#include "G4FissionLibrary.hh"
|
||||
// #include "G4FissLib.hh"
|
||||
|
||||
class G4FissLib : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
G4FissLib();
|
||||
~G4FissLib();
|
||||
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& aTargetNucleus);
|
||||
|
||||
private:
|
||||
G4FissionLibrary theLibrary;
|
||||
|
||||
private:
|
||||
G4double* xSec;
|
||||
G4NeutronHPChannel* theFission;
|
||||
G4String dirName;
|
||||
G4int numEle;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,104 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// This software was developed by Lawrence Livermore National Laboratory.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
// 3. The name of the author may not be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2006 The Regents of the University of California.
|
||||
// All rights reserved.
|
||||
// UCRL-CODE-224807
|
||||
//
|
||||
// $Id: G4FissionLibrary.hh 67966 2013-03-13 09:38:38Z gcosmo $
|
||||
//
|
||||
|
||||
#ifndef G4FissionLibrary_h
|
||||
#define G4FissionLibrary_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4HadProjectile.hh"
|
||||
#include "G4DynamicParticleVector.hh"
|
||||
#include "G4HadFinalState.hh"
|
||||
#include "G4NeutronHPFinalState.hh"
|
||||
#include "G4NeutronHPNames.hh"
|
||||
#include "G4NeutronHPNeutronYield.hh"
|
||||
#include "G4NeutronHPFissionERelease.hh"
|
||||
#include "G4NeutronHPEnergyDistribution.hh"
|
||||
#include "G4NeutronHPPhotonDist.hh"
|
||||
#include "G4NeutronHPAngular.hh"
|
||||
#include "G4Nucleus.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4LLNLFission.hh"
|
||||
|
||||
class G4FissionLibrary : public G4NeutronHPFinalState
|
||||
{
|
||||
public:
|
||||
|
||||
G4FissionLibrary();
|
||||
~G4FissionLibrary();
|
||||
|
||||
//void Init (G4double A, G4double Z, G4String & dirName, G4String &);
|
||||
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String &);
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
|
||||
G4NeutronHPFinalState * New() ;
|
||||
|
||||
private:
|
||||
G4int theIsotope; // used to call genfissevt_
|
||||
G4double targetMass;
|
||||
void SampleMult(const G4HadProjectile & theTrack, G4int* nPrompt,
|
||||
G4int* gPrompt, G4double eKinetic);
|
||||
inline G4NeutronHPFissionERelease * GetEnergyRelease() {
|
||||
return &theEnergyRelease;
|
||||
}
|
||||
G4NeutronHPNeutronYield theFinalStateNeutrons;
|
||||
G4NeutronHPEnergyDistribution thePromptNeutronEnDis;
|
||||
G4NeutronHPEnergyDistribution theDelayedNeutronEnDis;
|
||||
G4NeutronHPAngular theNeutronAngularDis;
|
||||
|
||||
G4NeutronHPPhotonDist theFinalStatePhotons;
|
||||
G4NeutronHPFissionERelease theEnergyRelease;
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LFission.hh 66892 2013-01-17 10:57:59Z gunter $
|
||||
//
|
||||
//
|
||||
// G4 Low-energy Model: Fission -- header file
|
||||
// F.W. Jones, TRIUMF, 03-DEC-96
|
||||
//
|
||||
// For further comments see G4LFission.cc.
|
||||
//
|
||||
// use -scheme for elastic scattering: HPW, 20th June 1997
|
||||
// most of the code comes from the old Low-energy Fission class
|
||||
|
||||
// Class Description
|
||||
// Final state production model for induced fission;
|
||||
// To be used in your physics list in case you need this physics.
|
||||
// In this case you want to register an object of this class with
|
||||
// the corresponding process.
|
||||
// Class Description - End
|
||||
|
||||
|
||||
#ifndef G4LFission_h
|
||||
#define G4LFission_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementVector.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4PhysicsTable.hh"
|
||||
#include "G4PhysicsVector.hh"
|
||||
#include "G4LPhysicsFreeVector.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
|
||||
|
||||
class G4LFission : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LFission(const G4String& name = "G4LFission");
|
||||
~G4LFission();
|
||||
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
static G4double Atomas(const G4double A, const G4double Z);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
|
||||
|
||||
private:
|
||||
|
||||
void init();
|
||||
G4double spneut[10];
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,252 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// This software was developed by Lawrence Livermore National Laboratory.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
// 3. The name of the author may not be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2006 The Regents of the University of California.
|
||||
// All rights reserved.
|
||||
// UCRL-CODE-224807
|
||||
//
|
||||
// $Id: G4LLNLFission.hh 67966 2013-03-13 09:38:38Z gcosmo $
|
||||
//
|
||||
|
||||
//
|
||||
// This class is a copy of Fission.hh, made for use with Geant4.
|
||||
//
|
||||
|
||||
extern void genspfissevt_(G4int *isotope, G4double *time);
|
||||
/*
|
||||
* This function is called to trigger a spontaneous fission.
|
||||
* Multiple neutrons and photons are generated and stored
|
||||
* in a stack along with their energies, directions and
|
||||
* emission times.
|
||||
* The arguments of this function are
|
||||
* isotope: 94239 for Pu-239 for instance
|
||||
* time: the time of the spontaneous fission
|
||||
*/
|
||||
|
||||
extern void genfissevt_(G4int *isotope, G4double *time, G4double *nubar, G4double *eng);
|
||||
/*
|
||||
* This function is called to trigger a neutron-induced fission.
|
||||
* Multiple neutrons and photons are generated and stored
|
||||
* in a stack along with their energies, directions and
|
||||
* emission times. In addition to the arguments above, this
|
||||
* function needs
|
||||
* nubar: user-specified average number of neutrons emitted
|
||||
* per fission (e.g. as tabulated in the cross-section
|
||||
* libraries used by the particle transport code)
|
||||
* eng: energy of the neutron inducing fission
|
||||
*/
|
||||
|
||||
extern G4int getnnu_();
|
||||
/*
|
||||
* This function returns the number of neutrons emitted by the
|
||||
* fission, -1 if there is no neutron data for that isotope in
|
||||
* the fission library.
|
||||
*/
|
||||
|
||||
extern G4int getpnu_();
|
||||
/*
|
||||
* This function returns the number of photons emitted by the
|
||||
* fission, -1 if there is no photon data for that isotope in
|
||||
* the fission library.
|
||||
*/
|
||||
|
||||
extern G4double getneng_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted neutron, this function returns
|
||||
* its energy, -1 if index isout of range.
|
||||
*/
|
||||
|
||||
extern G4double getnvel_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted neutron, this function returns
|
||||
* the amplitude of its velocity, -1 if index is out of range.
|
||||
*/
|
||||
|
||||
extern G4double getndircosu_(G4int *index);
|
||||
extern G4double getndircosv_(G4int *index);
|
||||
extern G4double getndircosw_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted neutron, this function returns
|
||||
* the direction cosines of its velocity vector on the x, y and z
|
||||
* axes.
|
||||
*/
|
||||
|
||||
extern G4double getpeng_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted photon, this function returns
|
||||
* its energy, -1 if index is out of range.
|
||||
*/
|
||||
|
||||
extern G4double getpvel_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted photon, this function returns
|
||||
* the amplitude of its velocity, -1 if index is out of range.
|
||||
*/
|
||||
|
||||
extern G4double getpdircosu_(G4int *index);
|
||||
extern G4double getpdircosv_(G4int *index);
|
||||
extern G4double getpdircosw_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted photon, this function returns
|
||||
* the direction cosines of its velocity.
|
||||
*/
|
||||
|
||||
extern G4double getnage_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted neutron, this function returns
|
||||
* its age, -1 if index is out of range.
|
||||
* This age will be different from the time specified
|
||||
* in generateFissionEvent and generateSpontaneousFissionEvent
|
||||
* for non-prompt neutrons, i.e. delayed neutrons.
|
||||
*/
|
||||
|
||||
extern G4double getpage_(G4int *index);
|
||||
/*
|
||||
* Given the index of the emitted photon, this function returns
|
||||
* its age, -1 of index is out of range.
|
||||
* This age will be different from the time specified
|
||||
* in generateFissionEvent and generateSpontaneousFissionEvent
|
||||
* for photons that are emitted by beta-decay of the fission
|
||||
* fragments.
|
||||
*/
|
||||
|
||||
extern void setdelay_(G4int *delay);
|
||||
/*
|
||||
* This function is called to enable delayed neutrons and photons
|
||||
* Input
|
||||
* delay:
|
||||
* 0 (default) for strictly prompt neutrons and
|
||||
* photons
|
||||
* 1 (n/a) for prompt neutrons, prompt and delayed
|
||||
* photons
|
||||
* 2 (n/a) for prompt and delayed neutrons, prompt
|
||||
* photons
|
||||
* 3 (n/a) for prompt and delayed neutrons, prompt
|
||||
* and delayed photons
|
||||
*/
|
||||
|
||||
extern void setcorrel_(G4int *correlation);
|
||||
/*
|
||||
* This function is called to set the type of neutron photon correlation
|
||||
* Input
|
||||
* correlation:
|
||||
* 0 (default) for no correlation between neutrons and
|
||||
* photons
|
||||
* 1 (n/a) for number correlation between neutrons and
|
||||
* photons
|
||||
* 2 (n/a) for number and energy correlation between
|
||||
* neutrons and photons
|
||||
*/
|
||||
|
||||
extern void setnudist_(G4int *nudist);
|
||||
/*
|
||||
* This function is called to set the data to be sampled for the neutron
|
||||
* number distributions in induced fissions
|
||||
* Input
|
||||
* nudist:
|
||||
* 0 to use the fit to the Zucker and Holden tabulated
|
||||
* P(nu) distributions as a function of energy for
|
||||
* U235, U238 and Pu239. Terrell for other isotopes.
|
||||
* 1 to use fits to the Zucker and Holden tabulated
|
||||
* P(nu) distribution as a function of energy for
|
||||
* U238 and Pu239, and a fit to the Zucker and Holden
|
||||
* data as well as the Gwin, Spencer and Ingle data
|
||||
* (at thermal energies) as a function of energy for
|
||||
* U235. Terrell for other isotopes.
|
||||
* 2 (default) to use the fit to the Zucker and Holden
|
||||
* tabulated P(nu) distributions as a function of nubar.
|
||||
* The U238 fit is used for the U232, U234, U236 and
|
||||
* U238 isotopes, the U235 fit for U233 and U235, the
|
||||
* Pu239 fit for Pu239 and Pu241. Terrell for other
|
||||
* isotopes.
|
||||
*/
|
||||
|
||||
|
||||
extern void setcf252_(G4int *ndist, G4int *neng);
|
||||
/*
|
||||
* This function is called to set the data to be sampled for the
|
||||
* (a) Cf252 spontaneous fission number distribution, and
|
||||
* (b) Cf252 spontaneous fission neutron energy spectrum
|
||||
* Input
|
||||
* ndist:
|
||||
* 0 (default) to sample the number of neutrons from the
|
||||
* tabulated data measured by Spencer
|
||||
* 1 to sample the number of neutrons from Boldeman's data
|
||||
* neng:
|
||||
* 0 to sample the spontaneous fission neutron energy from
|
||||
* Mannhart corrected Maxwellian spectrum
|
||||
* 1 to sample the spontaneous fission neutron energy from
|
||||
* Madland-Nix theoretical spectrum
|
||||
* 2 to sample the spontaneous fission neutron energy from
|
||||
* the Froehner Watt spectrum
|
||||
*/
|
||||
|
||||
extern void setrngf_(G4float (*funcptr) (void));
|
||||
/*
|
||||
* This function sets the random number generator to the user-defined
|
||||
* one specified in the argument. If either setrngf_ or setrngd_ are
|
||||
* not specified, the default system call srand48 will be called.
|
||||
* Input
|
||||
* funcptr:
|
||||
* a random number generator function that returns a
|
||||
* variable of type G4float
|
||||
*/
|
||||
|
||||
extern void setrngd_(G4double (*funcptr) (void));
|
||||
/*
|
||||
* This function sets the random number generator to the user-defined
|
||||
* one specified in the argument. If either setrngf_ or setrngd_ are
|
||||
* not specified, the default system call srand48 will be called.
|
||||
* Input
|
||||
* funcptr:
|
||||
* a random number generator function that returns a
|
||||
* variable of type G4double
|
||||
*/
|
||||
// }
|
||||
@@ -0,0 +1,192 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// This software was developed by Lawrence Livermore National Laboratory.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
// 3. The name of the author may not be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2006 The Regents of the University of California.
|
||||
// All rights reserved.
|
||||
// UCRL-CODE-224807
|
||||
//
|
||||
// $Id: G4fissionEvent.hh 68799 2013-04-05 13:29:46Z gcosmo $
|
||||
//
|
||||
|
||||
#include "globals.hh"
|
||||
#include <string>
|
||||
|
||||
class G4fissionEvent {
|
||||
private:
|
||||
G4int neutronNu; // number of neutrons in this fission event
|
||||
G4double* neutronEnergies;
|
||||
G4double* neutronVelocities;
|
||||
G4double* neutronDircosu;
|
||||
G4double* neutronDircosv;
|
||||
G4double* neutronDircosw;
|
||||
G4double* neutronAges;
|
||||
|
||||
G4int photonNu; // number of photons in this fission event
|
||||
G4double* photonEnergies;
|
||||
G4double* photonVelocities;
|
||||
G4double* photonDircosu;
|
||||
G4double* photonDircosv;
|
||||
G4double* photonDircosw;
|
||||
G4double* photonAges;
|
||||
|
||||
// options
|
||||
static G4int delayoption;
|
||||
static G4int correlationoption;
|
||||
static G4int nudistoption;
|
||||
static G4int Cf252ndistoption;
|
||||
static G4int Cf252nengoption;
|
||||
static G4double (*rngdptr)(void);
|
||||
static float (*rngfptr)(void);
|
||||
|
||||
public:
|
||||
// These are all the methods of this class accessible to the caller of the object
|
||||
G4fissionEvent(G4int isotope, G4double time, G4double nubar, G4double eng);
|
||||
~G4fissionEvent();
|
||||
G4int getNeutronNu() {
|
||||
return neutronNu;
|
||||
}
|
||||
G4int getPhotonNu() {
|
||||
return photonNu;
|
||||
}
|
||||
G4double getNeutronEnergy(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronEnergies[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getNeutronVelocity(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronVelocities[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getNeutronDircosu(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronDircosu[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getNeutronDircosv(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronDircosv[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getNeutronDircosw(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronDircosw[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonEnergy(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonEnergies[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonVelocity(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonVelocities[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonDircosu(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonDircosu[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonDircosv(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonDircosv[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonDircosw(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonDircosw[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getNeutronAge(G4int index) {
|
||||
if (index >= 0 && index < neutronNu) return neutronAges[index];
|
||||
else return -1;
|
||||
}
|
||||
G4double getPhotonAge(G4int index) {
|
||||
if (index >= 0 && index < photonNu) return photonAges[index];
|
||||
else return -1;
|
||||
}
|
||||
static void setDelayOption(G4int delay) {
|
||||
delayoption = delay;
|
||||
};
|
||||
static void setCorrelationOption(G4int correlation) {
|
||||
correlationoption = correlation;
|
||||
};
|
||||
static void setNudistOption(G4int nudist) {
|
||||
nudistoption = nudist;
|
||||
};
|
||||
static void setCf252Option(G4int ndist, G4int neng) {
|
||||
Cf252ndistoption = ndist;
|
||||
Cf252nengoption = neng;
|
||||
};
|
||||
static void setRNGf(float (*funcptr) (void)) {
|
||||
rngfptr = funcptr;
|
||||
rngdptr = rngf2d;
|
||||
}
|
||||
static void setRNGd(G4double (*funcptr) (void)) {
|
||||
rngdptr = funcptr;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
G4int G4SmpNuDistDataU232_234_236_238(G4double nubar);
|
||||
G4int G4SmpNuDistDataU232_234_236_238_MC(G4double nubar);
|
||||
G4int G4SmpNuDistDataU233_235(G4double nubar);
|
||||
G4int G4SmpNuDistDataU233_235_MC(G4double nubar);
|
||||
G4int G4SmpNuDistDataU235(G4double erg, G4int option);
|
||||
G4int G4SmpNuDistDataPu239(G4double erg);
|
||||
G4double G4SmpNVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
|
||||
G4double G4SmpNEngCf252(G4int option);
|
||||
void G4SmpIsoDir(G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
|
||||
G4double G4SmpGEng();
|
||||
G4int G4SmpNuDistDataPu239_241(G4double nubar);
|
||||
G4int G4SmpNuDistDataPu239_241_MC(G4double nubar);
|
||||
G4int G4SmpNuDistDataU238(G4double erg);
|
||||
G4int G4SmpNugDist(G4int isotope, G4double nubar);
|
||||
G4double G4SmpPVel(G4double eng, G4double* cosdiru, G4double* cosdirv, G4double* cosdirw);
|
||||
G4int G4SmpSpNuDistData(G4int isotope, G4int Cf252option);
|
||||
G4double G4SmpSpNubarData(G4int isotope);
|
||||
G4int G4SmpSpNugDistData(G4int isotope);
|
||||
G4double G4SmpTerrell(G4double nubar);
|
||||
G4double G4SmpWatt(G4double ePart, G4int iso);
|
||||
void G4fissionerr(G4int iSever, std::string chSubNam, std::string chMsg);
|
||||
static G4double fisslibrng(void);
|
||||
static G4double rngf2d(void);
|
||||
};
|
||||
Reference in New Issue
Block a user