Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:58:13

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 /*
0027  * File:   G4ENDFTapeRead.hh
0028  * Author: B. Wendt (wendbryc@isu.edu)
0029  *
0030  * Created on September 6, 2011, 10:01 AM
0031  */
0032 
0033 #ifndef G4ENDFTAPEREAD_HH
0034 #define G4ENDFTAPEREAD_HH
0035 
0036 #include "G4ENDFYieldDataContainer.hh"
0037 #include "G4FFGEnumerations.hh"
0038 #include "G4TableTemplate.hh"
0039 #include "globals.hh"
0040 
0041 /** G4ENDFTapeRead is a class designed to read in data from unformatted ENDF data
0042  *  tapes for MT = 454 or MT = 459, which correspond to independent fission
0043  *  yields and cumulative fission yields, respectively. The data is stored
0044  *  internally and can be recalled one product at a time by calling
0045  *  G4GetNextYield().
0046  */
0047 class G4ENDFTapeRead
0048 {
0049   public:
0050     // Constructor definition
0051     /** Default constructor
0052      *  - Usage:
0053      *      - \p FileLocation: the absolute path to the file
0054      *      - \p FileName: the name of the data file
0055      *      - \p WhichYield: \p INDEPENDENT or \p CUMULATIVE
0056      *      - \p WhichCause: \p SPONTANEOUS or \p N_INDUCED
0057      *
0058      *  - Notes: The data will be read in immediately upon construction.
0059      */
0060     G4ENDFTapeRead(G4String FileLocation, G4String FileName,
0061                    G4FFGEnumerations::YieldType WhichYield,
0062                    G4FFGEnumerations::FissionCause WhichCause);
0063     /** Overloaded constructor
0064      *  - Usage:
0065      *      - \p FileLocation: the absolute path to the file
0066      *      - \p FileName: the name of the data file
0067      *      - \p WhichYield: \p INDEPENDENT or \p CUMULATIVE
0068      *      - \p WhichCause: \p SPONTANEOUS or \p N_INDUCED
0069      *      - \p Verbosity: Verbosity level
0070      *
0071      *  - Notes: The data will be read in immediately upon construction.
0072      */
0073     G4ENDFTapeRead(G4String FileLocation, G4String FileName,
0074                    G4FFGEnumerations::YieldType WhichYield,
0075                    G4FFGEnumerations::FissionCause WhichCause, G4int Verbosity);
0076     /** Overloaded constructor
0077      *  - Usage:
0078      *      - \p DataFile: The absolute path to the data file
0079      *      - \p WhichYield: \p INDEPENDENT or \p CUMULATIVE
0080      *      - \p WhichCause: \p SPONTANEOUS or \p N_INDUCED
0081      *      - \p Verbosity: Verbosity level
0082      *
0083      *  - Notes: The data will be read in immediately upon construction.
0084      */
0085     G4ENDFTapeRead(std::istringstream& dataStream, G4FFGEnumerations::YieldType WhichYield,
0086                    G4FFGEnumerations::FissionCause WhichCause, G4int Verbosity);
0087 
0088   protected:
0089     /** Initialize is a common function called by all constructors. */
0090     void Initialize(G4String dataFile);
0091     /** Initialize is a common function calles by all constructors */
0092     void Initialize(std::istringstream& dataStream);
0093 
0094   public:
0095     // Functions
0096     /** Returns and array containing the values of each of the energy groups
0097      *  - Usage: No arguments required
0098      *
0099      *  - Notes:
0100      */
0101     G4double* G4GetEnergyGroupValues();
0102     /** Returns the number of energy yield groups that were extracted from the
0103      *  ENDF tape file
0104      *  - Usage: No arguments required
0105      *
0106      *  - Notes:
0107      */
0108     G4int G4GetNumberOfEnergyGroups();
0109     /** Returns the number of fission products that were extracted from the
0110      *  ENDF tape file
0111      *  - Usage: No arguments required
0112      *
0113      *  - Notes:
0114      */
0115     G4int G4GetNumberOfFissionProducts();
0116     /** Returns the data for the requested fission product
0117      *  - Usage:
0118      *      - \p WhichYield: 0-based index of the fission product for which to
0119      *           get the yield data
0120      *
0121      *  - Notes:
0122      *      - This will return a pointer to the next G4FissionYieldContainer.
0123      *        NULL will be returned if no more fission containers exist.
0124      */
0125     G4ENDFYieldDataContainer* G4GetYield(G4int WhichYield);
0126     /** Sets the verbosity levels
0127      *  - Usage:
0128      *      - \p WhichVerbosity: Combination of  levels
0129      *
0130      *  - Notes:
0131      *      - \p SILENT: All verbose output is repressed
0132      *      - \p UPDATES: Only high-level internal changes are reported
0133      *      - \p DAUGHTER_INFO: Displays information about daughter product sampling
0134      *      - \p NEUTRON_INFO: Displays information about neutron sampling
0135      *      - \p GAMMA_INFO: Displays information about gamma sampling
0136      *      - \p ALPHA_INFO: Displays information about alpha sampling
0137      *      - \p MOMENTUM_INFO: Displays information about momentum balancing
0138      *      - \p EXTRAPOLATION_INTERPOLATION_INFO: Displays information about any data extrapolation
0139      * or interpolation that occurs
0140      *      - \p DEBUG: Reports program flow as it steps through functions
0141      *      - \p PRINT_ALL: Displays any and all output
0142      */
0143     void G4SetVerbosity(G4int WhatVerbosity);
0144 
0145   private:
0146     // Functions
0147     /** Read in the data from an ENDF data tape. */
0148     void ReadInData(std::istringstream& dataStream);
0149 
0150     // Data members
0151     /** Stores the number corresponding to the fission cause that will be extracted */
0152     // const G4FFGEnumerations::FissionCause Cause_;
0153     /** Counter for the number of energy groups that were extracted */
0154     G4int EnergyGroups_;
0155     /** Array containing the values of the extracted energy groups */
0156     G4double* EnergyGroupValues_;
0157     /** Verbosity level */
0158     G4int Verbosity_;
0159     /** Storage for the extracted data */
0160     G4TableTemplate<G4ENDFYieldDataContainer>* YieldContainerTable_;
0161     /** Stores the number corresponding to the yield type that will be extracted */
0162     const G4FFGEnumerations::YieldType YieldType_;
0163 
0164     // Destructor function(s)
0165   public:
0166     /** Default Deconstructor */
0167     ~G4ENDFTapeRead();
0168 };
0169 
0170 #endif /* G4ENDFTAPEREAD_HH */