Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
@@ -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);
};