G4fissionEvent.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // This software was developed by Lawrence Livermore National Laboratory.
00028 //
00029 // Redistribution and use in source and binary forms, with or without
00030 // modification, are permitted provided that the following conditions are met:
00031 //
00032 // 1. Redistributions of source code must retain the above copyright notice,
00033 //   this list of conditions and the following disclaimer.
00034 // 2. Redistributions in binary form must reproduce the above copyright notice,
00035 //   this list of conditions and the following disclaimer in the documentation
00036 //   and/or other materials provided with the distribution.
00037 // 3. The name of the author may not be used to endorse or promote products
00038 //   derived from this software without specific prior written permission.
00039 //
00040 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
00041 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00042 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
00043 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00044 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00045 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00046 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00047 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00048 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
00049 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00050 //
00051 // Copyright (c) 2006 The Regents of the University of California.
00052 // All rights reserved.
00053 // UCRL-CODE-224807
00054 //
00055 // $Id: G4fissionEvent.hh 69860 2013-05-16 14:39:02Z gcosmo $
00056 //
00057 
00058 #include "globals.hh"
00059 #include <string>
00060 
00061 class G4fissionEvent {
00062    private:
00063       G4int neutronNu; // number of neutrons in this fission event
00064       G4double* neutronEnergies; 
00065       G4double* neutronVelocities; 
00066       G4double* neutronDircosu; 
00067       G4double* neutronDircosv; 
00068       G4double* neutronDircosw; 
00069       G4double* neutronAges; 
00070 
00071       G4int photonNu; // number of photons in this fission event
00072       G4double* photonEnergies; 
00073       G4double* photonVelocities; 
00074       G4double* photonDircosu; 
00075       G4double* photonDircosv; 
00076       G4double* photonDircosw; 
00077       G4double* photonAges; 
00078 
00079       // options
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       // These are all the methods of this class accessible to the caller of the object 
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 };

Generated on Mon May 27 17:48:16 2013 for Geant4 by  doxygen 1.4.7