Import Geant4 9.5.0 source tree
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4had_lend
|
||||
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4had_lend
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010-11-23 13:58:03 gcosmo Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# $Id: GNUmakefile,v 1.2 2010-11-23 13:58:03 gcosmo Exp $
|
||||
# -----------------------------------------------------------
|
||||
# GNUmakefile for hadronic lend library.
|
||||
# -----------------------------------------------------------
|
||||
|
||||
name := G4had_lend
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4PROCESSES_EXPORT
|
||||
CPPFLAGS += -DG4HADRONIC_ALLOC_EXPORT
|
||||
|
||||
ifeq ($(G4SYSTEM), WIN32-VC)
|
||||
CPPFLAGS += -I$(G4BASE)/externals/expat/include
|
||||
endif
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include/ \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/processes/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/low_energy/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/models/management/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -0,0 +1,324 @@
|
||||
# $Id: History,v 1.8 2010-11-25 19:47:46 tkoi Exp $
|
||||
# -----------------------------------------------------------
|
||||
|
||||
==================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation
|
||||
==================================================
|
||||
|
||||
History file for LEND Cross Section and Model
|
||||
---------------------------------------------
|
||||
|
||||
This file should be used to summarize modifications introduced in the
|
||||
code and to keep track of all tags.
|
||||
|
||||
---------------------------------------------------------------
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
30 September 2011 Tatsumi Koi (hadr-lend-V09-04-24)
|
||||
fix problem, after setting changes
|
||||
include/G4LENDModel.hh
|
||||
|
||||
25 September 2011 Tatsumi Koi (hadr-lend-V09-04-23)
|
||||
----------------------------------------------
|
||||
migrate to integer A and Z
|
||||
src/G4LENDModel.cc
|
||||
src/G4LENDElastic.cc
|
||||
src/G4LENDInelastic.cc
|
||||
src/G4LENDCapture.cc
|
||||
src/G4LENDFission.cc
|
||||
|
||||
13 September 2011 Tatsumi Koi (hadr-lend-V09-04-22)
|
||||
----------------------------------------------
|
||||
- Add protection of 0 or negative kinetic energy neutrons produced by numerical precision issues
|
||||
src/G4LENDElastic.cc
|
||||
|
||||
12 September 2011 Tatsumi Koi (hadr-lend-V09-04-21)
|
||||
----------------------------------------------
|
||||
- Merge to new interface of VCrossSectionDataSet (hadr-cross-V09-04-14)
|
||||
|
||||
6 September 2011 Tatsumi Koi (hadr-lend-V09-04-20)
|
||||
----------------------------------------------
|
||||
- Introduce BuildPhysicsTable
|
||||
include/G4LENDModel.hh
|
||||
- Bug fix
|
||||
src/G4LENDCaptureCrossSection.cc
|
||||
src/G4LENDElasticCrossSection.cc
|
||||
src/G4LENDFissionCrossSection.cc
|
||||
src/G4LENDInelasticCrossSection.cc
|
||||
|
||||
6 September 2011 Tatsumi Koi (hadr-lend-V09-04-19)
|
||||
----------------------------------------------
|
||||
This tag keeps OLD interface of VCrossSectionDataSet
|
||||
- Change for reducing output
|
||||
include/G4LENDModel.hh
|
||||
include/G4LENDCrossSection.hh
|
||||
- Add UltraLowEnergyExtrapolatedXS
|
||||
src/G4LENDCaptureCrossSection.cc
|
||||
src/G4LENDElasticCrossSection.cc
|
||||
src/G4LENDFissionCrossSection.cc
|
||||
src/G4LENDInelasticCrossSection.cc
|
||||
- Fix oddy output
|
||||
src/G4LENDManager.cc
|
||||
|
||||
29 August 2011 Tatsumi Koi (hadr-lend-V09-04-18)
|
||||
----------------------------------------------
|
||||
- Migrate new interface of VCrossSectionDataSet (hadr-cross-V09-04-14)
|
||||
src/G4LENDCrossSection.cc
|
||||
include/G4LENDCrossSection.hh
|
||||
|
||||
16 June 2011 Ben Morgan (hadr-lend-V09-04-17)
|
||||
----------------------------------------------
|
||||
- sources.cmake : Add additional G4PROCESSES_EXPORT compile definition needed
|
||||
for DLL build.
|
||||
|
||||
2 June 2011 Tatsumi Koi (hadr-lend-V09-04-16)
|
||||
----------------------------------------------
|
||||
- Fix gcc4.6 warning message
|
||||
src/tpia_target.cc
|
||||
|
||||
2 June 2011 Tatsumi Koi (hadr-lend-V09-04-15)
|
||||
----------------------------------------------
|
||||
- Fix bug
|
||||
include/tpia_target.h
|
||||
|
||||
2 June 2011 Ben Morgan (hadr-lend-V09-04-14)
|
||||
----------------------------------------------
|
||||
- sources.cmake : Added support for expat in the CMake build. The expat
|
||||
include directories are added to the include path, and the module is linked
|
||||
to the expat libraries.
|
||||
The interface variables EXPAT_INCLUDE_DIRS and EXPAT_LIBRARIES are used
|
||||
so there is no dependence on whether the internal or system expat is used.
|
||||
|
||||
1 June 2011 Tatsumi Koi (hadr-lend-V09-04-14)<-Actually I did not make this tag
|
||||
------------------------------------------------
|
||||
- Migrate recent update in G4CrossSectionDataStore
|
||||
include/G4LENDCrossSection.hh
|
||||
src/G4LENDCrossSection.cc
|
||||
|
||||
31 May 2011 Tatsumi Koi (hadr-lend-V09-04-13)
|
||||
------------------------------------------------
|
||||
- Set proper name for cross section
|
||||
- Migrate minKinEnergy and maxKinEnergy in G4VCrossSectionDataSet
|
||||
include/G4LENDElasticCrossSection.hh
|
||||
include/G4LENDCaptureCrossSection.hh
|
||||
include/G4LENDFissionCrossSection.hh
|
||||
include/G4LENDInelasticCrossSection.hh
|
||||
include/G4LENDCrossSection.hh
|
||||
src/G4LENDCrossSection.cc
|
||||
|
||||
30 May 2011 Tatsumi Koi (hadr-lend-V09-04-12)
|
||||
------------------------------------------------
|
||||
- Set proper name
|
||||
include/G4LENDElastic.hh
|
||||
- Change format of output messages
|
||||
src/G4LENDCrossSection.cc
|
||||
src/G4LENDModel.cc
|
||||
- Introduce verboseLevel and its changing method
|
||||
include/G4LENDManager.hh
|
||||
src/G4LENDManager.cc
|
||||
|
||||
30 May 2011 Gabriele Cosmo (hadr-lend-V09-04-11)
|
||||
------------------------------------------------
|
||||
- Renamed DLL_API macro to DLL_LEND.
|
||||
|
||||
27 May 2011 Tatsumi Koi (hadr-lend-V09-04-10)
|
||||
------------------------------------------------
|
||||
- Rename endlXXX -> lendXXX in private values
|
||||
- Move create_used_target_map from constructor to BuildPhysicsTable
|
||||
Cross Sections
|
||||
- Set proper name
|
||||
- Set proper modelName
|
||||
- Fix link error undefined reference to `tpia_samplingMethods_linear'
|
||||
include/tpia_target.h
|
||||
|
||||
26 May 20111 Gunter Folger (hadr-lend-V09-04-09)
|
||||
------------------------------------------------
|
||||
- Fix compiler warning in tpia_mac.cc on slc5/gcc43,
|
||||
empty body of for() at line 321
|
||||
|
||||
26 May 2011 Gabriele Cosmo (hadr-lend-V09-04-08)
|
||||
------------------------------------------------
|
||||
- Added corrections to allow for generation of DLLs on Windows.
|
||||
- Fixed file name for G4LENDUsedTarget.cc.
|
||||
- Updated sources.cmake script.
|
||||
|
||||
24 May 2011 Gunter Folger (hadr-lend-V09-04-07)
|
||||
------------------------------------------------
|
||||
- Fix sources.cmake to reflect renamed header files
|
||||
|
||||
18 May 2011 Gunter Folger (hadr-lend-V09-04-06)
|
||||
------------------------------------------------
|
||||
- include expat headers froom externals on Windows
|
||||
- xDataMisc.cc: imporve condition to include unistd.h/direct.h
|
||||
to avoid warning on Windows from g++ dependency building.
|
||||
|
||||
5 May 2011 Tatsumi Koi (hadr-lend-V09-04-05)
|
||||
------------------------------------------------
|
||||
- protect by namescope GIDI
|
||||
|
||||
30 Apr 2011 Tatsumi Koi (hadr-lend-V09-04-04)
|
||||
------------------------------------------------
|
||||
- rename GIDI4GEANT to G4GIDI
|
||||
|
||||
|
||||
30 Apr 2011 Tatsumi Koi (hadr-lend-V09-04-03)
|
||||
------------------------------------------------
|
||||
- rename .hpp to .hh
|
||||
|
||||
|
||||
26 Apr 2011 Tatsumi Koi (hadr-lend-V09-04-02)
|
||||
------------------------------------------------
|
||||
- Migration to WIN-VC
|
||||
src/statusMessageReporting.cc
|
||||
src/tpia_decayChannel.cc
|
||||
src/tpia_Legendre.cc
|
||||
src/tpia_map.cc
|
||||
src/tpia_misc.cc
|
||||
src/xData.cc
|
||||
src/xDataMisc.cc
|
||||
|
||||
|
||||
25 Apr 2011 Tatsumi Koi (hadr-lend-V09-04-01)
|
||||
------------------------------------------------
|
||||
- delete unneccesary "namespace std"
|
||||
src/G4LENDCapture.cc
|
||||
src/G4LENDCaptureCrossSection.cc
|
||||
src/G4LENDCrossSection.cc
|
||||
src/G4LENDElastic.cc
|
||||
src/G4LENDElasticCrossSection.cc
|
||||
src/G4LENDFission.cc
|
||||
src/G4LENDFissionCrossSection.cc
|
||||
src/G4LENDInelastic.cc
|
||||
src/G4LENDInelasticCrossSection.cc
|
||||
src/G4LENDManager.cc
|
||||
src/G4LENDModel.cc
|
||||
src/G4LENDUesdTarget.cc
|
||||
- move "namespace std" to proper position
|
||||
src/GIDI4GEANT.cc
|
||||
src/GIDI4GEANT_map.cc
|
||||
src/GIDI4GEANT_target.cc
|
||||
|
||||
|
||||
1 Apr 2011 Tatsumi Koi (hadr-lend-V09-04-00)
|
||||
------------------------------------------------
|
||||
- delete "namespace std" in headers
|
||||
include/GIDI4GEANT_map.hpp
|
||||
include/GIDI4GEANT.hpp
|
||||
include/GIDI4GEANT_target.hpp
|
||||
|
||||
|
||||
25 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-07)
|
||||
------------------------------------------------
|
||||
- Modified expected value of G4LENDDATA
|
||||
From LENDDATA/xmcf.n_1.map
|
||||
To LENDDATA/
|
||||
|
||||
25 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-06)
|
||||
------------------------------------------------
|
||||
- One more move "namespace std" in headers to sources
|
||||
|
||||
25 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-05)
|
||||
------------------------------------------------
|
||||
- Fixed compile error in gcc4.4 and make printing out banner
|
||||
Move "namespace std" in headers to sources
|
||||
|
||||
24 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-04)
|
||||
------------------------------------------------
|
||||
- Fixed compile error in gcc4.4, however still have 17 warning in gcc 4.4
|
||||
src/GIDI4GEANT_Misc.cc
|
||||
|
||||
24 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-03)
|
||||
------------------------------------------------
|
||||
- Fixed warning messages, now we have no warning in gcc 4.1.2
|
||||
|
||||
24 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-02)
|
||||
------------------------------------------------
|
||||
- Fixed most of warning messages, however still remain some
|
||||
|
||||
23 Nov 2010 Gabriele Cosmo (hadr-lend-V09-03-01)
|
||||
------------------------------------------------
|
||||
- Corrected GNUmakefile and added CMake scripts with dependencies.
|
||||
|
||||
18 Nov 2010 Tatsumi Koi (hadr-lend-V09-03-00)
|
||||
---------------------------------------------
|
||||
- First implementation of LEND (Low Energy Nuclear Data) Cross Section and Model
|
||||
History
|
||||
GNUMakefile
|
||||
include/G4LENDCapture.hh
|
||||
include/G4LENDCaptureCrossSection.hh
|
||||
include/G4LENDCrossSection.hh
|
||||
include/G4LENDElastic.hh
|
||||
include/G4LENDElasticCrossSection.hh
|
||||
include/G4LENDFission.hh
|
||||
include/G4LENDFissionCrossSection.hh
|
||||
include/G4LENDHeader.hh
|
||||
include/G4LENDInelastic.hh
|
||||
include/G4LENDInelasticCrossSection.hh
|
||||
include/G4LENDManager.hh
|
||||
include/G4LENDModel.hh
|
||||
include/G4LENDUsedTarget.hh
|
||||
src/G4LENDCapture.cc
|
||||
src/G4LENDCaptureCrossSection.cc
|
||||
src/G4LENDCrossSection.cc
|
||||
src/G4LENDElastic.cc
|
||||
src/G4LENDElasticCrossSection.cc
|
||||
src/G4LENDFission.cc
|
||||
src/G4LENDFissionCrossSection.cc
|
||||
src/G4LENDInelastic.cc
|
||||
src/G4LENDInelasticCrossSection.cc
|
||||
src/G4LENDManager.cc
|
||||
src/G4LENDModel.cc
|
||||
src/G4LENDUesdTarget.cc
|
||||
|
||||
include/GIDI4GEANT.hpp
|
||||
include/GIDI4GEANT_Misc.hpp
|
||||
include/GIDI4GEANT_map.hpp
|
||||
include/GIDI4GEANT_mass.hpp
|
||||
include/GIDI4GEANT_target.hpp
|
||||
src/GIDI4GEANT.cc
|
||||
src/GIDI4GEANT_Misc.cc
|
||||
src/GIDI4GEANT_map.cc
|
||||
src/GIDI4GEANT_mass.cc
|
||||
src/GIDI4GEANT_target.cc
|
||||
|
||||
include/tpi_IDs.h
|
||||
include/tpia_depot.h
|
||||
include/tpia_map.h
|
||||
include/tpia_mass.h
|
||||
include/tpia_misc.h
|
||||
include/tpia_target.h
|
||||
src/tpi_IDs.cc
|
||||
src/tpia_Legendre.cc
|
||||
src/tpia_angular.cc
|
||||
src/tpia_angularEnergy.cc
|
||||
src/tpia_channel.cc
|
||||
src/tpia_decayChannel.cc
|
||||
src/tpia_depot.cc
|
||||
src/tpia_frame.cc
|
||||
src/tpia_kinetics.cc
|
||||
src/tpia_map.cc
|
||||
src/tpia_mass.cc
|
||||
src/tpia_misc.cc
|
||||
src/tpia_multiplicity.cc
|
||||
src/tpia_particle.cc
|
||||
src/tpia_product.cc
|
||||
src/tpia_samplingMethods.cc
|
||||
src/tpia_target.cc
|
||||
src/tpia_target_heated.cc
|
||||
|
||||
include/gString.h
|
||||
include/statusMessageReporting.h
|
||||
include/xData.h
|
||||
include/xDataExtras.h
|
||||
src/gString.cc
|
||||
src/statusMessageReporting.cc
|
||||
src/xData.cc
|
||||
src/xDataExtras.cc
|
||||
src/xDataMisc.cc
|
||||
src/xData_1d_x.cc
|
||||
src/xData_2d_xindex_y.cc
|
||||
src/xData_2d_xshared_yhistogram.cc
|
||||
src/xData_2d_xy.cc
|
||||
src/xData_matrix.cc
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef G4GIDI_h_included
|
||||
#define G4GIDI_h_included 1
|
||||
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
#include <G4GIDI_Misc.hh>
|
||||
#include <G4GIDI_map.hh>
|
||||
#include <G4GIDI_target.hh>
|
||||
#include <G4GIDI_mass.hh>
|
||||
|
||||
class G4GIDI {
|
||||
|
||||
private:
|
||||
int projectileID;
|
||||
std::list<G4GIDI_map *> dataDirectories;
|
||||
std::vector<G4GIDI_target *> targets;
|
||||
|
||||
int init( int ip );
|
||||
|
||||
public:
|
||||
G4GIDI( int ip, std::string &dataDirectory );
|
||||
G4GIDI( int ip, std::list<std::string> &dataDirectory );
|
||||
~G4GIDI( );
|
||||
|
||||
int numberOfDataDirectories( void );
|
||||
int addDataDirectory( std::string &dataDirectory );
|
||||
int removeDataDirectory( std::string &dataDirectory );
|
||||
std::string getDataDirectoryAtIndex( int index );
|
||||
std::vector<std::string> *getDataDirectories( void );
|
||||
|
||||
bool isThisDataAvailable( std::string &lib_name, int iZ, int iA, int iM = 0 );
|
||||
bool isThisDataAvailable( std::string &lib_name, std::string &targetName );
|
||||
|
||||
char *dataFilename( std::string &lib_name, int iZ, int iA, int iM = 0 );
|
||||
char *dataFilename( std::string &lib_name, std::string &targetName );
|
||||
|
||||
std::vector<std::string> *getNamesOfAvailableLibraries( int iZ, int iA, int iM = 0 );
|
||||
std::vector<std::string> *getNamesOfAvailableLibraries( std::string &targetName );
|
||||
|
||||
std::vector<std::string> *getNamesOfAvailableTargets( void );
|
||||
|
||||
G4GIDI_target *readTarget( std::string &lib_name, int iZ, int iA, int iM = 0, bool bind = true );
|
||||
G4GIDI_target *readTarget( std::string &lib_name, std::string &targetName, bool bind = true );
|
||||
|
||||
G4GIDI_target *getAlreadyReadTarget( int iZ, int iA, int iM = 0 );
|
||||
G4GIDI_target *getAlreadyReadTarget( std::string &targetName );
|
||||
|
||||
int freeTarget( int iZ, int iA, int iM = 0 );
|
||||
int freeTarget( std::string &targetSymbol );
|
||||
int freeTarget( G4GIDI_target *target );
|
||||
|
||||
std::vector<std::string> *getListOfReadTargetsNames( void );
|
||||
};
|
||||
|
||||
#endif // End of G4GIDI_h_included
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef G4GIDI_Misc_h_included
|
||||
#define G4GIDI_Misc_h_included 1
|
||||
|
||||
#include <tpia_map.h>
|
||||
#include <tpia_target.h>
|
||||
|
||||
char *G4GIDI_Misc_Z_A_m_ToName( int iZ, int iA, int im = 0 );
|
||||
char *G4GIDI_Misc_channelCompound( char *particle1, char *particle2 );
|
||||
int G4GIDI_Misc_channelProductsCompare( GIDI::tpia_channel *channel, int nProducts, char **productNames );
|
||||
int getNamesOfAvailableTargets_walker( GIDI::tpia_mapEntry *entry, int level, void *userData );
|
||||
|
||||
#endif // End of G4GIDI_Misc_h_included
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#ifndef G4GIDI_map_h_included
|
||||
#define G4GIDI_map_h_included 1
|
||||
|
||||
#include <string>
|
||||
#include <tpia_map.h>
|
||||
|
||||
class G4GIDI_map {
|
||||
|
||||
public:
|
||||
GIDI::statusMessageReporting smr;
|
||||
GIDI::tpia_map *map;
|
||||
|
||||
G4GIDI_map( std::string &dataDirectory );
|
||||
~G4GIDI_map( );
|
||||
|
||||
std::string path( void );
|
||||
std::string fileName( void );
|
||||
};
|
||||
|
||||
#endif // End of G4GIDI_map_h_included
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef G4GIDI_mass_h_included
|
||||
#define G4GIDI_mass_h_included 1
|
||||
|
||||
double G4GIDI_targetMass( const char *targetSymbol );
|
||||
double G4GIDI_Z_AMass( int iZ, int iA );
|
||||
|
||||
#endif // End of G4GIDI_mass_h_included
|
||||
@@ -0,0 +1,141 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef G4GIDI_target_h_included
|
||||
#define G4GIDI_target_h_included 1
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include <tpia_target.h>
|
||||
|
||||
typedef struct crossSectionData_s crossSectionData;
|
||||
typedef struct channelID_s channelID;
|
||||
typedef struct G4GIDI_Product_s G4GIDI_Product;
|
||||
|
||||
struct crossSectionData_s {
|
||||
int start, end;
|
||||
std::vector<double> crossSection;
|
||||
};
|
||||
|
||||
struct channelID_s {
|
||||
std::string ID;
|
||||
};
|
||||
|
||||
//typedef struct G4GIDI_Product_s {
|
||||
struct G4GIDI_Product_s {
|
||||
int A, Z, m;
|
||||
double kineticEnergy, px, py, pz;
|
||||
};
|
||||
|
||||
class G4GIDI_target {
|
||||
|
||||
public:
|
||||
void init( const char *fileName );
|
||||
std::string equalProbableBinSampleMethod;
|
||||
int nElasticIndices, nCaptureIndices, nFissionIndices, nOthersIndices;
|
||||
int *elasticIndices, *captureIndices, *fissionIndices, *othersIndices;
|
||||
|
||||
public:
|
||||
GIDI::statusMessageReporting smr;
|
||||
std::string name;
|
||||
std::string sourceFilename;
|
||||
double mass;
|
||||
GIDI::tpia_target *target;
|
||||
|
||||
G4GIDI_target( const char *fileName );
|
||||
G4GIDI_target( std::string &fileName );
|
||||
~G4GIDI_target( );
|
||||
|
||||
std::string *getName( void );
|
||||
std::string *getFilename( void );
|
||||
int getZ( void );
|
||||
int getA( void );
|
||||
int getM( void );
|
||||
double getMass( void );
|
||||
int getTemperatures( double *temperatures );
|
||||
int readTemperature( int index );
|
||||
std::string getEqualProbableBinSampleMethod( void );
|
||||
int setEqualProbableBinSampleMethod( std::string method );
|
||||
|
||||
int getNumberOfChannels( void );
|
||||
int getNumberOfProductionChannels( void );
|
||||
std::vector<channelID> *getChannelIDs( void );
|
||||
std::vector<channelID> *getProductionChannelIDs( void );
|
||||
std::vector<channelID> *getChannelIDs2( GIDI::tpia_channel **channels, int n );
|
||||
|
||||
std::vector<double> *getEnergyGridAtTIndex( int index );
|
||||
|
||||
double getTotalCrossSectionAtE( double e_in, double temperature );
|
||||
double getElasticCrossSectionAtE( double e_in, double temperature );
|
||||
double getCaptureCrossSectionAtE( double e_in, double temperature );
|
||||
double getFissionCrossSectionAtE( double e_in, double temperature );
|
||||
double getOthersCrossSectionAtE( double e_in, double temperature );
|
||||
double sumChannelCrossSectionAtE( int nIndices, int *indices, double e_in, double temperature );
|
||||
int sampleChannelCrossSectionAtE( int nIndices, int *indices, double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
|
||||
double getElasticFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
std::vector<G4GIDI_Product> *getCaptureFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
std::vector<G4GIDI_Product> *getFissionFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
std::vector<G4GIDI_Product> *getOthersFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
std::vector<G4GIDI_Product> *getFinalState( int nIndices, int *indices, double e_in, double temperature, double (*rng)( void * ), void *rngState );
|
||||
};
|
||||
|
||||
#endif // End of G4GIDI_target_h_included
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDCapture_h
|
||||
#define G4LENDCapture_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDModel.hh"
|
||||
|
||||
class G4LENDCapture : public G4LENDModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDCapture( G4ParticleDefinition* pd )
|
||||
:G4LENDModel( "LENDCapture" )
|
||||
{
|
||||
proj = pd;
|
||||
|
||||
// theModelName = "LENDCapture for ";
|
||||
// theModelName += proj->GetParticleName();
|
||||
create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDCapture(){;};
|
||||
|
||||
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDCaptureCrossSection_h
|
||||
#define G4LENDCaptureCrossSection_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDCrossSection.hh"
|
||||
|
||||
class G4LENDCaptureCrossSection : public G4LENDCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//G4LENDCaptureCrossSection()
|
||||
//{;};
|
||||
G4LENDCaptureCrossSection( G4ParticleDefinition* pd )
|
||||
:G4LENDCrossSection("LENDCaptureCrossSection")
|
||||
{
|
||||
proj = pd;
|
||||
//name = "LEND Capture Cross Section for ";
|
||||
//name += proj->GetParticleName();
|
||||
//create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDCaptureCrossSection(){;};
|
||||
|
||||
private:
|
||||
// ke temperature
|
||||
G4double getLENDCrossSection( G4GIDI_target* , G4double , G4double );
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,133 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDCrossSection_h
|
||||
#define G4LENDCrossSection_h 1
|
||||
|
||||
// Class Description
|
||||
// Cross Sections for a LEND (Low Energy Nuclear Data)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDHeader.hh"
|
||||
|
||||
#include "G4LENDManager.hh"
|
||||
#include "G4LENDUsedTarget.hh"
|
||||
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4PhysicsTable.hh"
|
||||
|
||||
#include <map>
|
||||
|
||||
class G4LENDCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
|
||||
//
|
||||
//
|
||||
// G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A,
|
||||
// const G4Element* elm = 0,
|
||||
// const G4Material* mat = 0);
|
||||
//
|
||||
// G4double GetIsoCrossSection(const G4DynamicParticle*, G4int Z, G4int A,
|
||||
// const G4Element* elm = 0,
|
||||
// const G4Material* mat = 0);
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
G4LENDCrossSection(const G4String name = "" );
|
||||
|
||||
~G4LENDCrossSection();
|
||||
|
||||
//G4bool IsApplicable( const G4DynamicParticle* , const G4Element* );
|
||||
//TK110811
|
||||
G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*Z*/ , G4int /*A*/ ,
|
||||
const G4Element* , const G4Material* );
|
||||
G4double GetIsoCrossSection( const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/ ,
|
||||
const G4Isotope* , const G4Element* , const G4Material* );
|
||||
|
||||
void BuildPhysicsTable( const G4ParticleDefinition& );
|
||||
|
||||
void DumpPhysicsTable( const G4ParticleDefinition& );
|
||||
|
||||
|
||||
//TK110810
|
||||
//G4double GetCrossSection( const G4DynamicParticle* , const G4Element* , G4double aT );
|
||||
//G4double GetCrossSection(const G4DynamicParticle*, G4int , const G4Material* );
|
||||
|
||||
|
||||
void ChangeDefaultEvaluation( G4String name ){ default_evaluation = name; };
|
||||
void AllowNaturalAbundanceTarget(){ allow_nat = true; };
|
||||
void AllowAnyCandidateTarget(){ allow_any = true; };
|
||||
|
||||
//Hadronic Framework still does not handle isotope in GPIL
|
||||
//G4VDiscreteProcess::PostStepGetPhysicalInteractionLenght()
|
||||
// G4HadronicProcess::GetMeanFreePath()
|
||||
// G4double GetCrossSection(const G4DynamicParticle*, const G4Material*)
|
||||
// G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aTemperature);
|
||||
|
||||
//TK110810
|
||||
//G4bool IsIsoApplicable( const G4DynamicParticle* , G4int /*ZZ*/, G4int /*AA*/) { return true; }
|
||||
//G4bool IsZandAApplicable( const G4DynamicParticle* , G4int /*ZZ*/, G4int /*AA*/, const G4Element* , const G4Material* ) { return true; }
|
||||
//TK110810
|
||||
//G4double GetZandACrossSection(const G4DynamicParticle* , G4int /*Z*/, G4int /*A*/, G4double aTemperature);
|
||||
//G4double GetZandACrossSection(const G4DynamicParticle* , G4int /*Z*/, G4int /*A*/, const G4Material* mat);
|
||||
//TK110810
|
||||
//G4double GetIsoCrossSection( const G4DynamicParticle* , const G4Isotope* , G4double );
|
||||
// G4double GetIsoCrossSection( const G4DynamicParticle* , const G4Isotope* , const G4Material* mat );
|
||||
|
||||
private:
|
||||
|
||||
std::map< G4int , G4LENDUsedTarget* > usedTarget_map;
|
||||
|
||||
G4String default_evaluation;
|
||||
G4bool allow_nat;
|
||||
G4bool allow_any;
|
||||
|
||||
G4LENDManager* lend_manager;
|
||||
void recreate_used_target_map();
|
||||
|
||||
protected :
|
||||
//G4String name;
|
||||
G4ParticleDefinition* proj;
|
||||
void create_used_target_map();
|
||||
virtual G4double getLENDCrossSection( G4GIDI_target* , G4double , G4double ) { return 0.0; };
|
||||
// elow ehigh xs_elow xs_ehigh ke (<elow)
|
||||
G4double GetUltraLowEnergyExtrapolatedXS( G4double , G4double , G4double , G4double , G4double );
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDElastic_h
|
||||
#define G4LENDElastic_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDModel.hh"
|
||||
|
||||
class G4LENDElastic : public G4LENDModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDElastic( G4ParticleDefinition* pd )
|
||||
:G4LENDModel( "LENDElastic" )
|
||||
{
|
||||
proj = pd;
|
||||
|
||||
//theModelName = "LEND Elastic Model for ";
|
||||
//theModelName += proj->GetParticleName();
|
||||
create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDElastic(){;};
|
||||
|
||||
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDElasticCrossSection_h
|
||||
#define G4LENDElasticCrossSection_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDCrossSection.hh"
|
||||
|
||||
class G4LENDElasticCrossSection : public G4LENDCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//G4LENDElasticCrossSection()
|
||||
//{;};
|
||||
G4LENDElasticCrossSection( G4ParticleDefinition* pd )
|
||||
:G4LENDCrossSection("LENDElasitcCrossSection")
|
||||
{
|
||||
proj = pd;
|
||||
//name = "LEND Elastic Cross Section for ";
|
||||
//name += proj->GetParticleName();
|
||||
//create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDElasticCrossSection(){;};
|
||||
|
||||
private:
|
||||
// ke temperature
|
||||
G4double getLENDCrossSection( G4GIDI_target* , G4double , G4double );
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#ifndef G4LENDFission_h
|
||||
#define G4LENDFission_h 1
|
||||
|
||||
// Class Description
|
||||
// Manager of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDModel.hh"
|
||||
|
||||
class G4LENDFission : public G4LENDModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDFission( G4ParticleDefinition* pd )
|
||||
:G4LENDModel( "LENDFission" )
|
||||
{
|
||||
proj = pd;
|
||||
|
||||
// theModelName = "LENDFission for ";
|
||||
// theModelName += proj->GetParticleName();
|
||||
create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDFission(){;};
|
||||
|
||||
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDFissionCrossSection_h
|
||||
#define G4LENDFissionCrossSection_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDCrossSection.hh"
|
||||
|
||||
class G4LENDFissionCrossSection : public G4LENDCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//G4LENDFissionCrossSection()
|
||||
//{;};
|
||||
G4LENDFissionCrossSection( G4ParticleDefinition* pd )
|
||||
:G4LENDCrossSection("LENDEFissionCrossSection")
|
||||
{
|
||||
proj = pd;
|
||||
//name = "LEND Fission Cross Section for ";
|
||||
//name += proj->GetParticleName();
|
||||
//create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDFissionCrossSection(){;};
|
||||
|
||||
private:
|
||||
// ke temperature
|
||||
G4double getLENDCrossSection( G4GIDI_target* , G4double , G4double );
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef xENDF4GEANT_h
|
||||
#define xENDF4GEANT_h 1
|
||||
|
||||
#include "G4GIDI.hh"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDInelastic_h
|
||||
#define G4LENDInelastic_h 1
|
||||
|
||||
// Class Description
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDModel.hh"
|
||||
|
||||
class G4LENDInelastic : public G4LENDModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDInelastic( G4ParticleDefinition* pd )
|
||||
:G4LENDModel( "LENDInelastic" )
|
||||
{
|
||||
proj = pd;
|
||||
|
||||
// theModelName = "LENDInelastic for ";
|
||||
// theModelName += proj->GetParticleName();
|
||||
create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDInelastic(){;};
|
||||
|
||||
G4HadFinalState* ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDInelasticCrossSection_h
|
||||
#define G4LENDInelasticCrossSection_h 1
|
||||
|
||||
// Class Description
|
||||
// Manager of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDCrossSection.hh"
|
||||
|
||||
class G4LENDInelasticCrossSection : public G4LENDCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDInelasticCrossSection()
|
||||
{;};
|
||||
G4LENDInelasticCrossSection( G4ParticleDefinition* pd )
|
||||
:G4LENDCrossSection("LENDEInelasitcCrossSection")
|
||||
{
|
||||
proj = pd;
|
||||
//name = "LEND Inelastic Cross Section for ";
|
||||
//name += proj->GetParticleName();
|
||||
//create_used_target_map();
|
||||
};
|
||||
|
||||
~G4LENDInelasticCrossSection(){;};
|
||||
|
||||
private:
|
||||
// ke temperature
|
||||
G4double getLENDCrossSection( G4GIDI_target* , G4double , G4double );
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,110 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDManager_h
|
||||
#define G4LENDManager_h 1
|
||||
|
||||
// Class Description
|
||||
// Manager of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDHeader.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4NistElementBuilder.hh"
|
||||
#include "G4IonTable.hh"
|
||||
|
||||
#include <map>
|
||||
|
||||
struct lend_target
|
||||
{
|
||||
// properties for the traget
|
||||
G4GIDI* lend;
|
||||
G4GIDI_target* target;
|
||||
|
||||
G4ParticleDefinition* proj;
|
||||
G4int target_code;
|
||||
G4String evaluation;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class G4LENDManager
|
||||
{
|
||||
|
||||
static G4LENDManager* lend_manager;
|
||||
|
||||
protected:
|
||||
G4LENDManager();
|
||||
G4LENDManager( const G4LENDManager& ){;};
|
||||
|
||||
~G4LENDManager();
|
||||
|
||||
public:
|
||||
static G4LENDManager* GetInstance()
|
||||
{
|
||||
if ( lend_manager == NULL) lend_manager = new G4LENDManager();
|
||||
return lend_manager;
|
||||
};
|
||||
|
||||
G4GIDI_target* GetLENDTarget( G4ParticleDefinition* , G4String , G4int iZ , G4int iA , G4int iM = 0 );
|
||||
std::vector< G4String > IsLENDTargetAvailable( G4ParticleDefinition* , G4int iZ , G4int iA , G4int iM = 0 );
|
||||
G4int GetNucleusEncoding ( G4int iZ , G4int iA ) // GroundState only
|
||||
{ return ionTable->GetNucleusEncoding( iZ , iA ); };
|
||||
|
||||
G4NistElementBuilder* GetNistElementBuilder(){ return nistElementBuilder; };
|
||||
|
||||
G4int GetVerboseLevel(){ return verboseLevel; };
|
||||
G4bool RequestChangeOfVerboseLevel( G4int );
|
||||
|
||||
private:
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
std::vector< lend_target > v_lend_target;
|
||||
|
||||
// proj
|
||||
std::map< G4ParticleDefinition* , G4GIDI* > proj_lend_map;
|
||||
|
||||
// std::map< G4ParticleDefinition* , std::vector< G4int > > proj_checked_map;
|
||||
|
||||
G4IonTable* ionTable;
|
||||
|
||||
G4NistElementBuilder* nistElementBuilder;
|
||||
|
||||
void printBanner();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDModel_h
|
||||
#define G4LENDModel_h 1
|
||||
|
||||
// Class Description
|
||||
// Final state production model for a LEND (Low Energy Nuclear Data)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// LEND is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDHeader.hh"
|
||||
#include "G4LENDManager.hh"
|
||||
#include "G4LENDUsedTarget.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4LENDModel : public G4HadronicInteraction
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//G4LENDModel();
|
||||
G4LENDModel( G4String name="LENDModel" );
|
||||
~G4LENDModel();
|
||||
|
||||
virtual G4HadFinalState * ApplyYourself( const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus );
|
||||
|
||||
void ChangeDefaultEvaluation( G4String name ){ default_evaluation = name; recreate_used_target_map(); };
|
||||
void AllowNaturalAbundanceTarget(){ allow_nat = true; recreate_used_target_map(); };
|
||||
void AllowAnyCandidateTarget(){ allow_any = true; recreate_used_target_map(); };
|
||||
//Same argument to the CrossSectionDataSet
|
||||
void BuildPhysicsTable( const G4ParticleDefinition& ){ recreate_used_target_map(); };
|
||||
|
||||
private:
|
||||
|
||||
G4String default_evaluation;
|
||||
G4bool allow_nat;
|
||||
G4bool allow_any;
|
||||
|
||||
protected:
|
||||
|
||||
void create_used_target_map();
|
||||
void recreate_used_target_map();
|
||||
|
||||
G4ParticleDefinition* proj;
|
||||
G4LENDManager* lend_manager;
|
||||
std::map< G4int , G4LENDUsedTarget* > usedTarget_map;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,134 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4LENDUsedTarget_h
|
||||
#define G4LENDUsedTarget_h 1
|
||||
|
||||
// Class Description
|
||||
// Container of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDHeader.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
class G4LENDUsedTarget
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LENDUsedTarget( G4ParticleDefinition* pd , G4String Evaluation , G4int iZ , G4int iA , G4int iM = 0 )
|
||||
: allow_nat ( false )
|
||||
, allow_anything ( false )
|
||||
, min_Z ( 0 )
|
||||
, max_Z ( 113 )
|
||||
, min_A ( 1 )
|
||||
, max_A ( 278 )
|
||||
, min_M ( 0 )
|
||||
, max_M ( 10 )
|
||||
{
|
||||
|
||||
proj = pd;
|
||||
|
||||
wanted_Z = iZ;
|
||||
wanted_A = iA;
|
||||
wanted_M = iM;
|
||||
wanted_Evaluation = Evaluation;
|
||||
|
||||
actual_Z = -1;
|
||||
actual_A = -1;
|
||||
actual_M = -1;
|
||||
actual_Evaluation = "na";
|
||||
|
||||
searchTarget();
|
||||
}
|
||||
|
||||
~G4LENDUsedTarget(){;};
|
||||
|
||||
void AllowNat()
|
||||
{
|
||||
allow_nat = true;
|
||||
searchTarget();
|
||||
};
|
||||
|
||||
void AllowAny()
|
||||
{
|
||||
allow_anything = true;
|
||||
searchTarget();
|
||||
};
|
||||
|
||||
G4int GetWantedZ(){ return wanted_Z; };
|
||||
G4int GetWantedA(){ return wanted_A; };
|
||||
G4int GetWantedM(){ return wanted_M; };
|
||||
|
||||
G4int GetActualZ(){ return actual_Z; };
|
||||
G4int GetActualA(){ return actual_A; };
|
||||
G4int GetActualM(){ return actual_M; };
|
||||
|
||||
G4String GetWantedEvaluation(){ return wanted_Evaluation; };
|
||||
G4String GetActualEvaluation(){ return actual_Evaluation; };
|
||||
|
||||
G4GIDI_target* GetTarget(){ return target; };
|
||||
|
||||
private:
|
||||
|
||||
void searchTarget();
|
||||
|
||||
G4ParticleDefinition* proj;
|
||||
|
||||
G4int wanted_Z;
|
||||
G4int wanted_A;
|
||||
G4int wanted_M;
|
||||
|
||||
G4String wanted_Evaluation;
|
||||
|
||||
G4bool allow_nat;
|
||||
G4bool allow_anything;
|
||||
|
||||
G4GIDI_target* target;
|
||||
|
||||
G4int actual_Z;
|
||||
G4int actual_A;
|
||||
G4int actual_M;
|
||||
G4String actual_Evaluation;
|
||||
|
||||
G4int min_Z;
|
||||
G4int max_Z;
|
||||
G4int min_A;
|
||||
G4int max_A;
|
||||
G4int min_M;
|
||||
G4int max_M;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef gString_h_included
|
||||
#define gString_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "statusMessageReporting.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
#define gString_minIncrement sizeof( char * )
|
||||
typedef struct gString_s gString;
|
||||
|
||||
struct gString_s {
|
||||
int length, allocated, increment;
|
||||
char *gStr;
|
||||
};
|
||||
|
||||
int gString_initialize( statusMessageReporting *smr, gString *gStr, int size, int increment );
|
||||
int gString_release( statusMessageReporting *smr, gString *gStr );
|
||||
int gString_clear( statusMessageReporting *smr, gString *gStr );
|
||||
int gString_addTo( statusMessageReporting *smr, gString *gStr, char const *str );
|
||||
char const *gString_string( statusMessageReporting *smr, gString *gStr );
|
||||
int gString_length( statusMessageReporting *smr, gString *gStr );
|
||||
int gString_allocated( statusMessageReporting *smr, gString *gStr );
|
||||
int gString_increment( statusMessageReporting *smr, gString *gStr );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of gString_h_included. */
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef statusMessageReporting_h_included
|
||||
#define statusMessageReporting_h_included
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define smr_maximumPackageNameSize 256
|
||||
enum smr_status { smr_status_Ok, smr_status_Info, smr_status_Error, smr_status_Fatal };
|
||||
typedef int (*smr_userInterface)( void *userData, char **smr );
|
||||
|
||||
typedef struct statusMessageReporting {
|
||||
enum smr_status status;
|
||||
char packageName[smr_maximumPackageNameSize]; /* Do not free this. */
|
||||
int line;
|
||||
int code;
|
||||
char *message; /* User must free this when done. Should use smr_release. */
|
||||
} statusMessageReporting;
|
||||
|
||||
int smr_initialize( statusMessageReporting *smr );
|
||||
int smr_release( statusMessageReporting *smr );
|
||||
int smr_setMessageInfo( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, ... );
|
||||
int smr_vsetMessageInfo( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, va_list *args );
|
||||
int smr_setMessageError( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, ... );
|
||||
int smr_vsetMessageError( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, va_list *args );
|
||||
char *smr_allocateFormatMessage( const char *fmt, ... );
|
||||
char *smr_vallocateFormatMessage( const char *fmt, va_list *args );
|
||||
int smr_isOk( statusMessageReporting *smr );
|
||||
int smr_isInfo( statusMessageReporting *smr );
|
||||
int smr_isError( statusMessageReporting *smr );
|
||||
int smr_isFatal( statusMessageReporting *smr );
|
||||
const char *smr_getMessage( statusMessageReporting *smr );
|
||||
char *smr_getFullMessage( statusMessageReporting *smr );
|
||||
void smr_print( statusMessageReporting *smr, FILE *f, int clear );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of statusMessageReporting_h_included. */
|
||||
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef tpi_IDs_h_included
|
||||
#define tpi_IDs_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <statusMessageReporting.h>
|
||||
#include <gString.h>
|
||||
#include <xData.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
typedef struct tpi_channelID_s tpi_channelID;
|
||||
typedef struct tpi_spectralID_s tpi_spectralID;
|
||||
typedef struct tpi_spectralIDQualifier_s tpi_spectralIDQualifier;
|
||||
|
||||
struct tpi_spectralIDQualifier_s {
|
||||
tpi_spectralIDQualifier *next;
|
||||
char *name;
|
||||
char *value;
|
||||
};
|
||||
|
||||
struct tpi_spectralID_s {
|
||||
tpi_spectralID *next;
|
||||
char *name;
|
||||
tpi_spectralIDQualifier *qualifiers;
|
||||
char *revision; /* Points to revision value in qualifiers if present, otherwise NULL. */
|
||||
char *multiplicityStr; /* Points to multiplicity value in qualifiers if present, otherwise NULL. */
|
||||
int multiplicity; /* Value of multiplicityStr if it is an integer. */
|
||||
double level; /* Value of levelStr if it is a number. */
|
||||
char *levelStr; /* Points to level value in qualifiers if present, otherwise NULL. */
|
||||
tpi_channelID *decayChannel;
|
||||
};
|
||||
|
||||
struct tpi_channelID_s {
|
||||
tpi_spectralID *spectralIDs;
|
||||
};
|
||||
|
||||
tpi_channelID *tpi_channelID_allocate( statusMessageReporting *smr );
|
||||
int tpi_channelID_initialize( statusMessageReporting *smr, tpi_channelID *channelID );
|
||||
void *tpi_channelID_free( statusMessageReporting *smr, tpi_channelID *channelID );
|
||||
int tpi_channelID_release( statusMessageReporting *smr, tpi_channelID *channelID );
|
||||
tpi_channelID *tpi_channelID_parse( statusMessageReporting *smr, char const *str, char **EOP );
|
||||
int tpi_channelID_toString( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr );
|
||||
int tpi_channelID_toStringSanRevision( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr );
|
||||
int tpi_channelID_toStringSans( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr, char *sans[] );
|
||||
|
||||
tpi_spectralID *tpi_spectralID_allocate( statusMessageReporting *smr );
|
||||
int tpi_spectralID_initialize( statusMessageReporting *smr, tpi_spectralID *spectralID );
|
||||
void *tpi_spectralID_free( statusMessageReporting *smr, tpi_spectralID *spectralID );
|
||||
int tpi_spectralID_release( statusMessageReporting *smr, tpi_spectralID *spectralID );
|
||||
tpi_spectralID *tpi_spectralID_parse( statusMessageReporting *smr, char const *str, char **EOP );
|
||||
int tpi_spectralID_toString( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr );
|
||||
int tpi_spectralID_toStringSanRevision( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr );
|
||||
int tpi_spectralID_toStringSans( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr, char *sans[] );
|
||||
|
||||
char const *tpi_misc_firstNonWhiteSpace( statusMessageReporting *smr, char const *str );
|
||||
char *tpi_misc_allocateAndCopyNCharacters( statusMessageReporting *smr, char const *str, int n );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of tpi_IDs_h_included. */
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef tpia_defs_h_included
|
||||
#define tpia_defs_h_included
|
||||
|
||||
#ifdef WIN32
|
||||
//
|
||||
// Define DLL export macro for WIN32 systems for
|
||||
// importing/exporting external symbols to DLLs
|
||||
//
|
||||
#if defined G4LIB_BUILD_DLL
|
||||
#if defined G4PROCESSES_EXPORT
|
||||
#define DLL_LEND __declspec( dllexport )
|
||||
#else
|
||||
#define DLL_LEND __declspec( dllimport )
|
||||
#endif
|
||||
#else
|
||||
#define DLL_LEND
|
||||
#endif
|
||||
#else
|
||||
#define DLL_LEND
|
||||
#endif
|
||||
|
||||
#endif /* End of tpia_defs_h_included. */
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef tpia_depot_h_included
|
||||
#define tpia_depot_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <tpia_map.h>
|
||||
#include <tpia_target.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
typedef struct tpia_targetEntry_s tpia_targetEntry;
|
||||
typedef struct tpia_depot_s tpia_depot;
|
||||
|
||||
struct tpia_targetEntry_s {
|
||||
tpia_targetEntry *next;
|
||||
tpia_target *target;
|
||||
};
|
||||
|
||||
struct tpia_depot_s {
|
||||
int status;
|
||||
char *projectileName;
|
||||
int numberOfTargets;
|
||||
tpia_targetEntry *targets;
|
||||
tpia_map *map;
|
||||
};
|
||||
|
||||
tpia_depot *tpia_depot_create( statusMessageReporting *smr, const char *projectileName );
|
||||
int tpia_depot_initialize( statusMessageReporting *smr, tpia_depot *depot, const char *projectileName );
|
||||
tpia_depot *tpia_depot_free( tpia_depot *depot, int freeMap );
|
||||
int tpia_depot_release( tpia_depot *depot, int freeMap );
|
||||
int tpia_depot_setMap( statusMessageReporting *smr, tpia_depot *depot, tpia_map *map );
|
||||
int tpia_depot_setMapFromFilename( statusMessageReporting *smr, tpia_depot *depot, const char *basePath, const char *mapFileName );
|
||||
tpia_map *tpia_depot_releaseMap( tpia_depot *depot );
|
||||
int tpia_depot_freeMap( tpia_depot *depot );
|
||||
tpia_target *tpia_depot_addTarget( statusMessageReporting *smr, tpia_depot *depot, const char *evaluation, const char *targetName );
|
||||
tpia_target *tpia_depot_addTargetFromMap( statusMessageReporting *smr, tpia_depot *depot, tpia_map *map, const char *evaluation, const char *targetName );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of tpia_depot_h_included. */
|
||||
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef tpia_map_h_included
|
||||
#define tpia_map_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <xData.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
enum tpia_map_status { tpia_map_status_Ok, tpia_map_status_memory, tpia_map_status_mapParsing,
|
||||
tpia_map_status_UnknownType };
|
||||
enum tpia_mapEntry_type { tpia_mapEntry_type_target, tpia_mapEntry_type_path };
|
||||
|
||||
typedef struct tpia_map_s tpia_map;
|
||||
typedef struct tpia_mapEntry_s tpia_mapEntry;
|
||||
typedef struct tpia_map_smr_s tpia_map_smr;
|
||||
|
||||
struct tpia_map_smr_s {
|
||||
smr_userInterface smrUserInterface;
|
||||
tpia_map *map;
|
||||
};
|
||||
|
||||
struct tpia_mapEntry_s {
|
||||
tpia_mapEntry *next;
|
||||
enum tpia_mapEntry_type type;
|
||||
char *schema;
|
||||
char *path;
|
||||
char *evaluation;
|
||||
char *projectile;
|
||||
char *targetName;
|
||||
tpia_map *map;
|
||||
};
|
||||
|
||||
struct tpia_map_s {
|
||||
enum tpia_map_status status;
|
||||
tpia_map_smr smrUserInterface;
|
||||
char *path;
|
||||
char *mapFileName;
|
||||
int numberOfEntries;
|
||||
tpia_mapEntry *mapEntries;
|
||||
};
|
||||
|
||||
tpia_map *tpia_map_create( statusMessageReporting *smr );
|
||||
int tpia_map_initialize( statusMessageReporting *smr, tpia_map *map );
|
||||
tpia_map *tpia_map_readFile( statusMessageReporting *smr, const char *basePath, const char *mapFileName );
|
||||
void *tpia_map_free( statusMessageReporting *smr, tpia_map *map );
|
||||
void tpia_map_release( statusMessageReporting *smr, tpia_map *map );
|
||||
tpia_mapEntry *tpia_map_getFirstEntry( tpia_map *map );
|
||||
tpia_mapEntry *tpia_map_getNextEntry( tpia_mapEntry *entry );
|
||||
int tpia_map_addTarget( statusMessageReporting *smr, tpia_map *map, const char *method, const char *path, const char *evaluation, const char *projectile, const char *targetName );
|
||||
int tpia_map_addPath( statusMessageReporting *smr, tpia_map *map, const char *path, const char *projectile );
|
||||
char *tpia_map_findTarget( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectile, const char *targetName );
|
||||
tpia_map *tpia_map_findAllOfTarget( statusMessageReporting *smr, tpia_map *map, const char *projectile, const char *targetName );
|
||||
char *tpia_map_getFullPath( statusMessageReporting *smr, tpia_map *map, const char *endPath );
|
||||
int tpia_map_walkTree( statusMessageReporting *smr, tpia_map *map, int (*handler)( tpia_mapEntry *entry, int level, void *userData), void *userData );
|
||||
char *tpia_map_toXMLString( statusMessageReporting *smr, tpia_map *map );
|
||||
void tpia_map_simpleWrite( FILE *f, tpia_map *map );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of tpia_map_h_included. */
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef tpia_mass_h_included
|
||||
#define tpia_mass_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
double tpia_particleMass_AMU( statusMessageReporting *smr, const char *name );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of tpia_mass_h_included. */
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define tpia_misc_pointerToAttributeIfAllOk2( smr, element, required, attributes, name ) \
|
||||
tpia_misc_pointerToAttributeIfAllOk( smr, element, NULL, required, attributes, name, __FILE__, __LINE__ )
|
||||
#define tpia_misc_pointerToAttributeIfAllOk3( smr, path, required, attributes, name ) \
|
||||
tpia_misc_pointerToAttributeIfAllOk( smr, NULL, path, required, attributes, name, __FILE__, __LINE__ )
|
||||
|
||||
char *tpia_misc_pointerToAttributeIfAllOk( statusMessageReporting *smr, xData_element *element, const char *path, int required,
|
||||
xData_attributionList *attributes, const char *name, const char *file, int line );
|
||||
int tpia_misc_setMessageError_Element( statusMessageReporting *smr, void *userInterface, xData_element *element, const char *file, int line, int code,
|
||||
const char *fmt, ... );
|
||||
xData_Int tpia_misc_binarySearch( xData_Int n, double *ds, double d );
|
||||
|
||||
tpia_EqualProbableBinSpectrum *tpia_misc_getEqualProbableBin( statusMessageReporting *smr, xData_element *parent, xData_Int *n, xData_Int *nBins );
|
||||
tpia_EqualProbableBinSpectrum *tpia_misc_getEqualProbableBins( statusMessageReporting *smr, xData_element *parent, const char *name, xData_Int nBins,
|
||||
xData_Int *n );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,499 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef tpia_target_h_included
|
||||
#define tpia_target_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <xData.h>
|
||||
#include <tpia_defs.h>
|
||||
#include <tpia_map.h>
|
||||
#include <tpi_IDs.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
typedef struct tpia_particle_s tpia_particle;
|
||||
typedef struct tpia_target_s tpia_target;
|
||||
typedef struct tpia_target_heated_info_s tpia_target_heated_info;
|
||||
typedef struct tpia_target_heated_sorted_s tpia_target_heated_sorted;
|
||||
typedef struct tpia_target_heated_s tpia_target_heated;
|
||||
typedef struct tpia_decaySamplingInfo_s tpia_decaySamplingInfo;
|
||||
typedef struct tpia_productOutgoingData_s tpia_productOutgoingData;
|
||||
typedef struct tpia_multiplicity_s tpia_multiplicity;
|
||||
typedef struct tpia_samplingMethods_s tpia_samplingMethods;
|
||||
typedef struct tpia_EqualProbableBinSpectra_s tpia_EqualProbableBinSpectra;
|
||||
typedef struct tpia_EqualProbableBinSpectrum_s tpia_EqualProbableBinSpectrum;
|
||||
typedef struct tpia_LegendreBin_s tpia_LegendreBin;
|
||||
typedef struct tpia_angularEnergyBin_s tpia_angularEnergyBin;
|
||||
typedef struct tpia_angular_s tpia_angular;
|
||||
typedef struct tpia_Legendre_s tpia_Legendre;
|
||||
typedef struct tpia_angularEnergy_s tpia_angularEnergy;
|
||||
typedef struct tpia_decayChannel_s tpia_decayChannel;
|
||||
typedef struct tpia_product_s tpia_product;
|
||||
typedef struct tpia_1dData_s tpia_1dData;
|
||||
typedef struct tpia_2dData_s tpia_2dData;
|
||||
typedef struct tpia_channel_s tpia_channel;
|
||||
typedef struct tpia_data_frame_s tpia_data_frame;
|
||||
|
||||
//#include <xData.h>
|
||||
#include <tpia_mass.h>
|
||||
//#include <tpia_map.h>
|
||||
//#include <tpi_IDs.h>
|
||||
|
||||
#define tpia_mode_MonteCarlo 1
|
||||
#define tpia_mode_Pn 2
|
||||
#define tpia_maxNumberOfFrames 8
|
||||
#define tpia_referenceFrame_None 0
|
||||
#define tpia_referenceFrame_COM 1
|
||||
#define tpia_referenceFrame_lab 2
|
||||
#define tpia_referenceFrame_Max tpia_referenceFrame_lab
|
||||
|
||||
#define tpia_crossSectionType_grouped 1
|
||||
#define tpia_crossSectionType_pointwise 2
|
||||
|
||||
#define tpia_m_depositionEnergy 1
|
||||
#define tpia_m_multiplicity ( 1 << 1 )
|
||||
#define tpia_m_decayChannel ( 1 << 2 )
|
||||
#define tpia_m_commonShift 3
|
||||
#define tpia_m_angular ( 1 << 3 )
|
||||
#define tpia_m_formFactor ( 1 << 4 )
|
||||
#define tpia_m_Legendre ( 1 << 5 )
|
||||
#define tpia_m_angular_energy ( 1 << 6 )
|
||||
|
||||
#define tpia_speedOfLight_cm_sec 2.99792458e10
|
||||
#define tpia_AMU2MeV 931.494028
|
||||
|
||||
extern DLL_LEND const char *tpia_productGenre_unknown, *tpia_productGenre_twoBody_angular, *tpia_productGenre_twoBody_formFactor,
|
||||
*tpia_productGenre_NBody_Legendre, *tpia_productGenre_NBody_angular_energy, *tpia_productGenre_NBody_uncorrelate_Legendre,
|
||||
*tpia_productGenre_NBody_pairProduction;
|
||||
|
||||
extern DLL_LEND const char *tpia_samplingMethods_constant, *tpia_samplingMethods_linear;
|
||||
|
||||
//extern const char *tpia_samplingMethods_constant = "constant";
|
||||
//extern const char *tpia_samplingMethods_linear = "linear";
|
||||
|
||||
//#define tpia_samplingMethods_isConstant( method ) ( method == tpia_samplingMethods_constant )
|
||||
//#define tpia_samplingMethods_isLinear( method ) ( method == tpia_samplingMethods_linear )
|
||||
|
||||
//tpia_samplingMethods_constant and tpia_samplingMethods_linear are defined in src/tpia_samplingMethods.cc in namespace GIDI.
|
||||
//So TK directory write the values in follwoing macros. 110527
|
||||
//#define tpia_samplingMethods_isConstant( method ) ( method == "constant" )
|
||||
//#define tpia_samplingMethods_isLinear( method ) ( method == "linear" )
|
||||
//Fix above bug. 110602
|
||||
#define tpia_samplingMethods_isConstant( method ) ( strcmp ( method , "constant" ) == 0 )
|
||||
#define tpia_samplingMethods_isLinear( method ) ( strcmp ( method , "linear" ) == 0 )
|
||||
|
||||
|
||||
struct tpia_particle_s {
|
||||
tpia_particle *prior;
|
||||
tpia_particle *next;
|
||||
int ordinal;
|
||||
int Z, A, m;
|
||||
double mass;
|
||||
double fullMass_MeV;
|
||||
char *name;
|
||||
tpi_spectralID *spectralID;
|
||||
};
|
||||
|
||||
struct tpia_samplingMethods_s {
|
||||
const char *angular_equalProbableBinMethod;
|
||||
};
|
||||
|
||||
struct tpia_data_frame_s {
|
||||
unsigned int frames;
|
||||
};
|
||||
|
||||
struct tpia_1dData_s {
|
||||
xData_Int start, end, length;
|
||||
double *data;
|
||||
};
|
||||
|
||||
struct tpia_decaySamplingInfo_s {
|
||||
double e_in;
|
||||
tpia_samplingMethods *samplingMethods;
|
||||
int isVelocity;
|
||||
tpia_data_frame frame;
|
||||
double (*rng)( void * );
|
||||
void *rngState;
|
||||
tpia_particle *productID;
|
||||
char const *genre;
|
||||
double mu;
|
||||
double Ep;
|
||||
};
|
||||
|
||||
struct tpia_productOutgoingData_s {
|
||||
char const *genre;
|
||||
int isVelocity;
|
||||
tpia_data_frame frame;
|
||||
tpia_particle *productID;
|
||||
double kineticEnergy;
|
||||
double px_vx;
|
||||
double py_vy;
|
||||
double pz_vz;
|
||||
tpia_decayChannel *decayChannel;
|
||||
};
|
||||
|
||||
struct tpia_multiplicity_s {
|
||||
tpia_multiplicity *next;
|
||||
tpia_data_frame frame;
|
||||
double timeScale; /* Only for delay neutrons from fission, otherwise -1. */
|
||||
xData_Int numberOfPointwise;
|
||||
tpia_1dData grouped;
|
||||
double *pointwise;
|
||||
};
|
||||
/*
|
||||
* This data is used for discrete 2-body data where mu is give in equal probable bins vs E and
|
||||
* for isotropic scattering where the outgoing E' is give in equal probable bins vs E.
|
||||
*/
|
||||
struct tpia_EqualProbableBinSpectrum_s {
|
||||
int nBins, index;
|
||||
double value;
|
||||
double *bins;
|
||||
};
|
||||
|
||||
struct tpia_EqualProbableBinSpectra_s {
|
||||
int iValue;
|
||||
int nBins;
|
||||
int numberOfEs;
|
||||
double dValue;
|
||||
tpia_EqualProbableBinSpectrum *energies;
|
||||
};
|
||||
|
||||
struct tpia_LegendreBin_s {
|
||||
int numberOfLs;
|
||||
tpia_EqualProbableBinSpectra *ls;
|
||||
};
|
||||
|
||||
struct tpia_angularEnergyBin_s {
|
||||
int nBins, numberOfEs;
|
||||
tpia_EqualProbableBinSpectra *energies;
|
||||
};
|
||||
|
||||
struct tpia_decayChannel_s {
|
||||
int numberOfProducts;
|
||||
tpia_product *products;
|
||||
double m1_fullMass_MeV; /* Currently, only used for 2-body decay. Either the mass of the projectile and target, respectively; */
|
||||
double m2_fullMass_MeV; /* or, the mass of the decaying particle and 0., respectively. */
|
||||
};
|
||||
|
||||
struct tpia_angular_s {
|
||||
tpia_data_frame frame;
|
||||
tpia_EqualProbableBinSpectra binned;
|
||||
};
|
||||
|
||||
struct tpia_Legendre_s {
|
||||
tpia_data_frame frame;
|
||||
tpia_LegendreBin binned;
|
||||
};
|
||||
|
||||
struct tpia_angularEnergy_s {
|
||||
tpia_data_frame frame;
|
||||
tpia_angularEnergyBin binned;
|
||||
};
|
||||
|
||||
struct tpia_product_s {
|
||||
tpia_product *next;
|
||||
tpia_channel *channel;
|
||||
tpia_product *parentProduct; /* If this product is the result of a particle decaying, then this the the parent particle. */
|
||||
xData_attributionList attributes;
|
||||
tpia_particle *productID;
|
||||
char const *genre;
|
||||
long b_dataPresent;
|
||||
long b_dataRequired;
|
||||
tpia_1dData depositionEnergyGrouped;
|
||||
int multiplicity; /* If 0, the multiplicity is either 'energyDependent' or 'partialProduction'. */
|
||||
tpia_multiplicity *multiplicityVsEnergy;
|
||||
tpia_multiplicity *delayedNeutronMultiplicityVsEnergy; /* Fission delayed neutron multiplicities. */
|
||||
tpia_angular angular;
|
||||
tpia_Legendre Legendre;
|
||||
tpia_angularEnergy angularEnergy;
|
||||
tpia_decayChannel decayChannel;
|
||||
};
|
||||
|
||||
struct tpia_channel_s {
|
||||
tpia_target_heated *target;
|
||||
char *outputChannel;
|
||||
char *genre;
|
||||
xData_attributionList attributes;
|
||||
int ENDL_C, ENDF_MT;
|
||||
char *QString;
|
||||
char *fission;
|
||||
int QIsFloat;
|
||||
double Q;
|
||||
tpia_data_frame crossSectionFrame;
|
||||
tpia_1dData crossSectionPointwise;
|
||||
tpia_1dData crossSectionGrouped;
|
||||
tpia_1dData availableEnergyGrouped;
|
||||
tpia_decayChannel decayChannel;
|
||||
};
|
||||
|
||||
struct tpia_target_heated_s {
|
||||
int ordinal;
|
||||
char *path; /* Partial path of input file. */
|
||||
char *absPath; /* Full absolute path of input file. */
|
||||
tpia_particle *projectileID;
|
||||
tpia_particle *targetID;
|
||||
int nGroups;
|
||||
xData_Int energyGridLength;
|
||||
double *energyGrid;
|
||||
tpia_1dData totalCrossSectionPointwise;
|
||||
tpia_1dData totalCrossSectionGrouped;
|
||||
xData_attributionList attributes;
|
||||
char *contents;
|
||||
int nChannels, nProductionChannels;
|
||||
tpia_channel **channels;
|
||||
tpia_channel **productionChannels;
|
||||
double *kerma;
|
||||
};
|
||||
|
||||
struct tpia_target_heated_info_s {
|
||||
int ordinal;
|
||||
double temperature;
|
||||
char *path; /* Full path of input file. */
|
||||
char *contents;
|
||||
tpia_target_heated *heatedTarget;
|
||||
};
|
||||
|
||||
struct tpia_target_s {
|
||||
char *path; /* Full path of input file. */
|
||||
char *absPath; /* Full absolute path of input file. */
|
||||
tpia_particle *projectileID;
|
||||
tpia_particle *targetID;
|
||||
xData_attributionList attributes;
|
||||
tpia_samplingMethods samplingMethods;
|
||||
int nHeatedTargets, nReadHeatedTargets;
|
||||
tpia_target_heated *baseHeatedTarget; /* The lowest temperature whose contents is "all" data, (e.g, not just "crossSection"). */
|
||||
tpia_target_heated_info *heatedTargets; /* List of heated targets in order by temperature. */
|
||||
tpia_target_heated_info **readHeatedTargets; /* List of "read in" heated targets in order by temperature. */
|
||||
};
|
||||
|
||||
/*
|
||||
* Routines in tpia_target.c
|
||||
*/
|
||||
tpia_target *tpia_target_create( statusMessageReporting *smr );
|
||||
int tpia_target_initialize( statusMessageReporting *smr, tpia_target *target );
|
||||
tpia_target *tpia_target_createRead( statusMessageReporting *smr, const char *fileName );
|
||||
int tpia_target_readFromMap( statusMessageReporting *smr, tpia_target *target, tpia_map *map, const char *evaluation, const char *projectileName,
|
||||
const char *targetName );
|
||||
tpia_target *tpia_target_createReadFromMap( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectileName,
|
||||
const char *targetName );
|
||||
tpia_target *tpia_target_free( statusMessageReporting *smr, tpia_target *target );
|
||||
int tpia_target_release( statusMessageReporting *smr, tpia_target *target );
|
||||
int tpia_target_read( statusMessageReporting *smr, tpia_target *target, const char *fileName );
|
||||
char *tpia_target_getAttributesValue( statusMessageReporting *smr, tpia_target *target, char const *name );
|
||||
int tpia_target_getTemperatures( statusMessageReporting *smr, tpia_target *target, double *temperatures );
|
||||
int tpia_target_readHeatedTarget( statusMessageReporting *smr, tpia_target *target, int index, int checkElememtsForAccess );
|
||||
tpia_target_heated *tpia_target_getHeatedTargetAtIndex_ReadIfNeeded( statusMessageReporting *smr, tpia_target *target, int index );
|
||||
int tpia_target_numberOfChannels( statusMessageReporting *smr, tpia_target *target );
|
||||
int tpia_target_numberOfProductionChannels( statusMessageReporting *smr, tpia_target *target );
|
||||
xData_Int tpia_target_getEnergyGridAtTIndex( statusMessageReporting *smr, tpia_target *target, int index, double **energyGrid );
|
||||
tpia_1dData *tpia_target_getTotalCrossSectionAtTIndex( statusMessageReporting *smr, tpia_target *target, int index, int crossSectionType );
|
||||
double tpia_target_getTotalCrossSectionAtTAndE( statusMessageReporting *smr, tpia_target *target, double T, xData_Int iEg, double e_in,
|
||||
int crossSectionType );
|
||||
double tpia_target_getIndexChannelCrossSectionAtE( statusMessageReporting *smr, tpia_target *target, int index, double T, xData_Int iEg, double e_in,
|
||||
int crossSectionType );
|
||||
int tpia_target_sampleIndexChannelProductsAtE( statusMessageReporting *smr, tpia_target *target, int index, double T,
|
||||
tpia_decaySamplingInfo *decaySamplingInfo, int nProductData, tpia_productOutgoingData *productData );
|
||||
|
||||
/*
|
||||
* Routines in tpia_target_heated.c
|
||||
*/
|
||||
tpia_target_heated *tpia_target_heated_create( statusMessageReporting *smr );
|
||||
int tpia_target_heated_initialize( statusMessageReporting *smr, tpia_target_heated *target );
|
||||
tpia_target_heated *tpia_target_heated_createRead( statusMessageReporting *smr, const char *fileName, int checkElememtsForAccess );
|
||||
tpia_target_heated *tpia_target_heated_free( statusMessageReporting *smr, tpia_target_heated *target );
|
||||
int tpia_target_heated_release( statusMessageReporting *smr, tpia_target_heated *target );
|
||||
int tpia_target_heated_read( statusMessageReporting *smr, tpia_target_heated *target, const char *fileName, int checkElememtsForAccess );
|
||||
int tpia_target_heated_numberOfChannels( statusMessageReporting *smr, tpia_target_heated *target );
|
||||
int tpia_target_heated_numberOfProductionChannels( statusMessageReporting *smr, tpia_target_heated *target );
|
||||
tpia_channel *tpia_target_heated_getChannelAtIndex( tpia_target_heated *target, int index );
|
||||
tpia_channel *tpia_target_heated_getChannelAtIndex_smr( statusMessageReporting *smr, tpia_target_heated *target, int index );
|
||||
tpia_channel *tpia_target_heated_getProductionChannelAtIndex( tpia_target_heated *target, int index );
|
||||
xData_Int tpia_target_heated_getEnergyGrid( statusMessageReporting *smr, tpia_target_heated *target, double **energyGrid );
|
||||
xData_Int tpia_target_heated_getEIndex( tpia_target_heated *target, double e_in );
|
||||
double tpia_target_heated_getTotalCrossSectionAtE( statusMessageReporting *smr, tpia_target_heated *target, xData_Int gE, double e_in,
|
||||
int crossSectionType );
|
||||
double tpia_target_heated_getIndexChannelCrossSectionAtE( statusMessageReporting *smr, tpia_target_heated *target, int index, xData_Int iEg, double e_in,
|
||||
int crossSectionType );
|
||||
int tpia_target_heated_sampleIndexChannelProductsAtE( statusMessageReporting *smr, tpia_target_heated *target, int index,
|
||||
tpia_decaySamplingInfo *decaySamplingInfo, int nProductData, tpia_productOutgoingData *productData );
|
||||
|
||||
/*
|
||||
* Routines in tpia_channel.c
|
||||
*/
|
||||
tpia_channel *tpia_channel_create( statusMessageReporting *smr );
|
||||
int tpia_channel_initialize( statusMessageReporting *smr, tpia_channel *channel );
|
||||
tpia_channel *tpia_channel_createGetFromElement( statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement,
|
||||
int pointwiseRequired );
|
||||
tpia_channel *tpia_channel_free( statusMessageReporting *smr, tpia_channel *channel );
|
||||
int tpia_channel_release( statusMessageReporting *smr, tpia_channel *channel );
|
||||
int tpia_channel_getFromElement( statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement, tpia_channel *channel,
|
||||
int pointwiseRequired );
|
||||
tpia_product *tpia_channel_getFirstProduct( tpia_channel *channel );
|
||||
tpia_product *tpia_channel_getProductByIndex( statusMessageReporting *smr, tpia_channel *channel, int index );
|
||||
int tpia_channel_numberOfProducts( statusMessageReporting *smr, tpia_channel *channel );
|
||||
int tpia_channel_isProduction( statusMessageReporting *smr, tpia_channel *channel );
|
||||
double tpia_channel_getCrossSectionAtE( statusMessageReporting *smr, tpia_channel *channel, xData_Int iEg, double e_in, int crossSectionType );
|
||||
|
||||
/*
|
||||
* Routines in tpia_particle.c
|
||||
*/
|
||||
tpia_particle *tpia_particle_create( statusMessageReporting *smr );
|
||||
int tpia_particle_initialize( statusMessageReporting *smr, tpia_particle *particle );
|
||||
tpia_particle *tpia_particle_free( statusMessageReporting *smr, tpia_particle *particle );
|
||||
int tpia_particle_release( statusMessageReporting *smr, tpia_particle *particle );
|
||||
int tpia_particle_freeInternalList( statusMessageReporting *smr );
|
||||
tpia_particle *tpia_particle_getInternalID( statusMessageReporting *smr, const char * const name );
|
||||
int tpia_particle_printInternalSortedList( statusMessageReporting *smr );
|
||||
|
||||
/*
|
||||
* Routines in tpia_product.c
|
||||
*/
|
||||
tpia_product *tpia_product_create( statusMessageReporting *smr );
|
||||
int tpia_product_initialize( statusMessageReporting *smr, tpia_product *product );
|
||||
tpia_product *tpia_product_createGetFromElement( statusMessageReporting *smr, tpia_channel *channel, tpia_product *parentProduct,
|
||||
xData_element *productElement );
|
||||
tpia_product *tpia_product_free( statusMessageReporting *smr, tpia_product *product );
|
||||
int tpia_product_release( statusMessageReporting *smr, tpia_product *product);
|
||||
int tpia_product_getFromElement( statusMessageReporting *smr, tpia_channel *channel, tpia_product *parentProduct, xData_element *productElement,
|
||||
tpia_product *product );
|
||||
int tpia_product_getDecayChannelFromElement( statusMessageReporting *smr, xData_element *parentElement, tpia_channel *channel, tpia_product *parentProduct,
|
||||
tpia_product **priorProductNext );
|
||||
long tpia_product_dataRequired( statusMessageReporting *smr, tpia_product *product );
|
||||
tpia_product *tpia_product_getFirstProduct( tpia_product *product );
|
||||
tpia_product *tpia_product_getProductByIndex( statusMessageReporting *smr, tpia_product *product, int index );
|
||||
int tpia_product_doesDecay( statusMessageReporting *smr, tpia_product *product );
|
||||
int tpia_product_numberOfProducts( statusMessageReporting *smr, tpia_product *product );
|
||||
int tpia_product_isDataPresent( statusMessageReporting *smr, tpia_product *product, int b_data );
|
||||
int tpia_product_sampleMultiplicity( statusMessageReporting *smr, tpia_product *product, double e_in, double r );
|
||||
|
||||
/*
|
||||
* Routines in tpia_decayChannel.c
|
||||
*/
|
||||
tpia_product *tpia_decayChannel_getFirstProduct( tpia_decayChannel *decayChannel );
|
||||
tpia_product *tpia_decayChannel_getNextProduct( tpia_product *product );
|
||||
int tpia_decayChannel_sampleProductsAtE( statusMessageReporting *smr, tpia_decayChannel *decayChannel, tpia_decaySamplingInfo *decaySamplingInfo,
|
||||
int nProductData, tpia_productOutgoingData *productData );
|
||||
|
||||
/*
|
||||
* Routines in tpia_kinetics.c
|
||||
*/
|
||||
int tpia_kinetics_2BodyReaction( statusMessageReporting *smr, tpia_decayChannel *decayChannel, double K, double mu, double phi,
|
||||
tpia_productOutgoingData *outgoingData );
|
||||
int tpia_kinetics_COMKineticEnergy2LabEnergyAndMomentum( statusMessageReporting *smr, double beta, double e_kinetic_com, double mu, double phi,
|
||||
double m3cc, double m4cc, tpia_productOutgoingData *outgoingData );
|
||||
|
||||
/*
|
||||
* Routines in tpia_frame.c
|
||||
*/
|
||||
int tpia_frame_clear( statusMessageReporting *smr, tpia_data_frame *frame );
|
||||
int tpia_frame_setFromElement( statusMessageReporting *smr, xData_element *element, int dimension, tpia_data_frame *frame );
|
||||
int tpia_frame_setFromString( statusMessageReporting *smr, const char *forItem, const char *value, int dimension, tpia_data_frame *frame );
|
||||
int tpia_frame_getDimensions( statusMessageReporting *smr, tpia_data_frame *frame );
|
||||
char *tpia_frame_toString( statusMessageReporting *smr, const char *fromItem, tpia_data_frame *frame );
|
||||
int tpia_frame_setColumns( statusMessageReporting *smr, tpia_data_frame *frame, int nColumns, int *values );
|
||||
int tpia_frame_setColumn( statusMessageReporting *smr, tpia_data_frame *frame, int column, int value );
|
||||
int tpia_frame_getColumn( statusMessageReporting *smr, tpia_data_frame *frame, int column );
|
||||
|
||||
/*
|
||||
* Routines in tpia_multiplicity.c
|
||||
*/
|
||||
tpia_multiplicity *tpia_multiplicity_create( statusMessageReporting *smr );
|
||||
int tpia_multiplicity_initialize( statusMessageReporting *smr, tpia_multiplicity *multiplicity );
|
||||
tpia_multiplicity *tpia_multiplicity_free( statusMessageReporting *smr, tpia_multiplicity *multiplicity );
|
||||
int tpia_multiplicity_release( statusMessageReporting *smr, tpia_multiplicity *multiplicity );
|
||||
tpia_multiplicity *tpia_multiplicity_createGetFromElement( statusMessageReporting *smr, xData_element *multiplicityElement, int nGroups );
|
||||
int tpia_multiplicity_getFromElement( statusMessageReporting *smr, xData_element *multiplicityElement, tpia_multiplicity *multiplicity, int nGroups );
|
||||
int tpia_multiplicity_getTimeScaleFromElement( statusMessageReporting *smr, xData_element *element, const char **timeScale, int *isDelayedNeutrons,
|
||||
double *dTimeScale );
|
||||
|
||||
/*
|
||||
* Routines in tpia_angular.c
|
||||
*/
|
||||
int tpia_angular_initialize( statusMessageReporting *smr, tpia_angular *angular );
|
||||
int tpia_angular_release( statusMessageReporting *smr, tpia_angular *angular );
|
||||
int tpia_angular_getFromElement( statusMessageReporting *smr, xData_element *angularElement, tpia_angular *angular );
|
||||
int tpia_angular_SampleMu( statusMessageReporting *smr, tpia_angular *angular, tpia_decaySamplingInfo *decaySamplingInfo );
|
||||
|
||||
/*
|
||||
* Routines in tpia_Legendre.c
|
||||
*/
|
||||
int tpia_Legendre_initialize( statusMessageReporting *smr, tpia_Legendre *Legendre );
|
||||
int tpia_Legendre_release( statusMessageReporting *smr, tpia_Legendre *Legendre );
|
||||
int tpia_Legendre_getFromElement( statusMessageReporting *smr, xData_element *LegendreElement, tpia_Legendre *Legendre );
|
||||
int tpia_Legendre_SampleEp( statusMessageReporting *smr, tpia_Legendre *Legendre, int sampleMu, tpia_decaySamplingInfo *decaySamplingInfo );
|
||||
|
||||
/*
|
||||
* Routines in tpia_angularEnergy.c
|
||||
*/
|
||||
int tpia_angularEnergy_initialize( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy );
|
||||
int tpia_angularEnergy_release( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy );
|
||||
int tpia_angularEnergy_getFromElement( statusMessageReporting *smr, xData_element *angularEnergyElement, tpia_angularEnergy *angularEnergy );
|
||||
int tpia_angularEnergy_SampleEp( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy, tpia_decaySamplingInfo *decaySamplingInfo );
|
||||
|
||||
/*
|
||||
* Routines in tpia_samplingMethods.c
|
||||
*/
|
||||
int tpia_samplingMethods_initialize( statusMessageReporting *smr, tpia_samplingMethods *samplingMethods );
|
||||
|
||||
/*
|
||||
* Routines in tpia_misc.c
|
||||
*/
|
||||
int tpia_misc_NumberOfZSymbols( void );
|
||||
const char *tpia_misc_ZToSymbol( int iZ );
|
||||
int tpia_misc_symbolToZ( const char *Z );
|
||||
int tpia_miscNameToZAm( statusMessageReporting *smr, const char *name, int *Z, int *A, int *m );
|
||||
char *tpia_misc_pointerToAttributeIfAllOk( statusMessageReporting *smr, xData_element *element, const char *path, int required,
|
||||
xData_attributionList *attributes, const char *name, const char *file, int line );
|
||||
double *tpia_misc_get2dx_y_data( statusMessageReporting *smr, xData_element *element, xData_Int *length );
|
||||
double *tpia_misc_get2dxindex_y_data( statusMessageReporting *smr, xData_element *element, xData_Int *start, xData_Int *end, double *xValues );
|
||||
double *tpia_misc_get2d_xShared_yHistogram_data( statusMessageReporting *smr, xData_element *element, xData_Int *start, xData_Int *end, xData_Int *length );
|
||||
int tpia_misc_get2d_xShared_yHistogram_data_Grouped( statusMessageReporting *smr, xData_element *element, tpia_1dData *group );
|
||||
double tpia_misc_getPointwiseCrossSectionAtE( statusMessageReporting *smr, tpia_1dData *crossSection, double *energyGrid, xData_Int index, double e_in );
|
||||
double tpia_misc_drng( double (*rng)( void * ), void *rngState );
|
||||
int tpia_misc_sampleEqualProbableBin( statusMessageReporting *smr, tpia_decaySamplingInfo *decaySamplingInfo, double e_in, int nBins,
|
||||
tpia_EqualProbableBinSpectra *binned, double *value_ );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of tpia_target_h_included. */
|
||||
@@ -0,0 +1,322 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef xData_h_included
|
||||
#define xData_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <expat.h>
|
||||
#include "statusMessageReporting.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
typedef int xData_Int;
|
||||
|
||||
#ifndef XMLCALL
|
||||
#define XMLCALL
|
||||
#endif
|
||||
|
||||
#ifndef XML_Char
|
||||
#define XML_Char char
|
||||
#endif
|
||||
|
||||
#ifndef XML_Size
|
||||
#define XML_Size long
|
||||
#endif
|
||||
|
||||
//TK move follwoing reference from source
|
||||
//extern char const * const xData_oned_x_ID;
|
||||
//extern char const * const xData_twod_xy_ID;
|
||||
//extern char const * const xData_twod_xindex_y_ID;
|
||||
//extern char const * const xData_twod_xShared_yHistogram_ID;
|
||||
//extern char const * const xData_matrix_ID;
|
||||
|
||||
char const * const xData_oned_x_ID = "1d.x";
|
||||
char const * const xData_twod_xy_ID = "2d.xy";
|
||||
char const * const xData_twod_xindex_y_ID = "2d.xindex_y";
|
||||
char const * const xData_twod_xShared_yHistogram_ID = "2d_xShared_yHistogram";
|
||||
char const * const xData_matrix_ID = "matrix";
|
||||
|
||||
enum xData_status { xData_statusParsing = 1, xData_statusCompleted, xData_statusError };
|
||||
enum xData_errorCodes { xData_errNone, xData_errXML_ParserCreate, xData_errFileError,
|
||||
xData_errXMLParser };
|
||||
enum xData_itemMode { xData_itemModeEnd = 0, xData_itemModeElement, xData_itemModeText };
|
||||
enum xData_xDataType { xData_xDataType_Ok, xData_xDataType_ConvertingToData, xData_xDataType_ConvertingToString };
|
||||
|
||||
typedef struct xData_docInfo_s xData_docInfo;
|
||||
typedef struct xData_attribute_s xData_attribute;
|
||||
typedef struct xData_attributionList_s xData_attributionList;
|
||||
typedef struct xData_rootElement_s xData_rootElement;
|
||||
typedef struct xData_element_s xData_element;
|
||||
typedef struct xData_text_s xData_text;
|
||||
typedef struct xDataType_s xDataType;
|
||||
typedef struct xData_smr_s xData_smr;
|
||||
typedef struct xData_document_s xData_document;
|
||||
typedef struct xData_item_s xData_item;
|
||||
typedef struct xData_2d_xindex_y_s xData_2d_xindex_y;
|
||||
typedef struct xData_matrix_s xData_matrix;
|
||||
typedef struct xData_matrix_rowStartEnd_s xData_matrix_rowStartEnd;
|
||||
typedef struct xData_elementListItem_s xData_elementListItem;
|
||||
typedef struct xData_elementList_s xData_elementList;
|
||||
|
||||
typedef int (*xData_sortElementFunc)( const void *, const void * );
|
||||
|
||||
struct xData_2d_xindex_y_s {
|
||||
xData_Int index;
|
||||
double value;
|
||||
};
|
||||
|
||||
struct xData_matrix_rowStartEnd_s {
|
||||
xData_Int row, start, end;
|
||||
};
|
||||
|
||||
struct xData_matrix_s {
|
||||
xData_Int rows, columns;
|
||||
xData_matrix_rowStartEnd *rowStartEnds;
|
||||
double *values;
|
||||
};
|
||||
|
||||
struct xData_docInfo_s {
|
||||
size_t line;
|
||||
size_t column;
|
||||
};
|
||||
|
||||
struct xData_attribute_s {
|
||||
char *name;
|
||||
char *value;
|
||||
};
|
||||
|
||||
struct xData_attributionList_s {
|
||||
int number;
|
||||
size_t size;
|
||||
xData_attribute *attributes;
|
||||
};
|
||||
|
||||
struct xData_text_s {
|
||||
xData_docInfo docInfo;
|
||||
size_t allocated;
|
||||
size_t length;
|
||||
char *text;
|
||||
};
|
||||
|
||||
typedef int (*xData_xDataTypeOk)( char const *name, xData_document *doc, void *userData );
|
||||
typedef int (*xDT_toDataFunction)( statusMessageReporting *smr, xDataType *, xData_attributionList *, const char * );
|
||||
typedef char *(*xDT_toStringFunction)( statusMessageReporting *smr, xDataType * );
|
||||
typedef int (*xDT_releaseFunction)( statusMessageReporting *smr, xDataType * );
|
||||
|
||||
struct xData_elementListItem_s {
|
||||
xData_element *element;
|
||||
const char *sortString;
|
||||
};
|
||||
|
||||
struct xData_elementList_s {
|
||||
int n;
|
||||
xData_elementListItem *items;
|
||||
};
|
||||
|
||||
struct xDataType_s {
|
||||
enum xData_xDataType status;
|
||||
const char *typeString;
|
||||
xData_element *element;
|
||||
xDT_toDataFunction toData;
|
||||
xDT_toStringFunction toString;
|
||||
xDT_releaseFunction release;
|
||||
signed char indexPresent, startPresent, endPresent, lengthPresent;
|
||||
xData_Int index, start, end, length;
|
||||
void *data;
|
||||
};
|
||||
|
||||
struct xData_rootElement_s {
|
||||
xData_document *xData_doc;
|
||||
xData_element *parentElement;
|
||||
xData_rootElement *parentRoot;
|
||||
int depth;
|
||||
int numberOfElements;
|
||||
xData_element *children;
|
||||
xData_element *currentChild;
|
||||
};
|
||||
|
||||
struct xData_element_s {
|
||||
xData_docInfo docInfo;
|
||||
int ordinal; /* Counting from 0. */
|
||||
int index; /* Value from "index" attribute if present or -1 */
|
||||
int accessed; /* For the convenience of the users, not used internally. */
|
||||
xData_rootElement *parentRoot;
|
||||
xData_rootElement childrenRoot;
|
||||
xData_element *next;
|
||||
char *name; /* Allocated in xData_parseAddElementToRoot. */
|
||||
char *fullName; /* Allocated in xData_parseAddElementToRoot. */
|
||||
xData_attributionList attributes; /* attributes->abbributes is allocated in xData_parseAddElementToRoot. */
|
||||
xDataType xDataTypeInfo;
|
||||
size_t textOffset;
|
||||
xData_text text;
|
||||
};
|
||||
|
||||
struct xData_smr_s {
|
||||
smr_userInterface smrUserInterface;
|
||||
xData_document *doc;
|
||||
};
|
||||
|
||||
struct xData_document_s {
|
||||
enum xData_status status;
|
||||
enum xData_errorCodes error;
|
||||
enum XML_Error err;
|
||||
XML_Size err_line, err_column;
|
||||
char *fileName;
|
||||
xData_xDataTypeOk xDataTypeOk_userFunction;
|
||||
void *xDataTypeOk_userData;
|
||||
xData_smr smrUserInterface;
|
||||
statusMessageReporting *smr;
|
||||
XML_Parser xmlParser;
|
||||
xData_rootElement root;
|
||||
xData_rootElement *currentRoot;
|
||||
};
|
||||
|
||||
struct xData_item_s {
|
||||
xData_element *parentElement;
|
||||
xData_element *element;
|
||||
enum xData_itemMode mode;
|
||||
size_t textOffset;
|
||||
size_t textLength;
|
||||
char *text;
|
||||
};
|
||||
|
||||
xData_document *xData_parseReadFile( statusMessageReporting *smr, const char *fileName, xData_xDataTypeOk func, void *userData );
|
||||
xData_document *xData_parseString( statusMessageReporting *smr, const char *str, xData_xDataTypeOk func, void *userData );
|
||||
xData_document *xData_parseMalloc( statusMessageReporting *smr, xData_xDataTypeOk func, void *userData );
|
||||
int xData_parseInitialize( statusMessageReporting *smr, xData_document *xData_doc, xData_xDataTypeOk func, void *userData );
|
||||
int xData_parseEndOfXML( statusMessageReporting *smr, xData_document *xData_doc );
|
||||
void *xData_parseFree( statusMessageReporting *smr, xData_document *xData_doc );
|
||||
int xData_parse( xData_document *xData_doc, const char *s );
|
||||
int xData_parseIsError( xData_document *xData_doc );
|
||||
xData_element *xData_getDocumentsElement( xData_document *xData_doc );
|
||||
xData_element *xData_getFirstElement( xData_element *element );
|
||||
xData_element *xData_getNextElement( xData_element *element );
|
||||
enum xData_itemMode xData_getFirstItem( xData_element *element, xData_item *item );
|
||||
enum xData_itemMode xData_getNextItem( xData_item *item );
|
||||
char *xData_getAttributesValue( xData_attributionList *attributes, const char *name );
|
||||
const char *xData_getAttributesValueInElement( xData_element *element, const char *name );
|
||||
int xData_initializeAttributionList( statusMessageReporting *smr, xData_attributionList *attributes );
|
||||
int xData_copyAttributionList( statusMessageReporting *smr, xData_attributionList *dest, xData_attributionList *src );
|
||||
int xData_releaseAttributionList( statusMessageReporting *smr, xData_attributionList *attributes );
|
||||
int xData_attributeListLength( xData_attributionList *attributes );
|
||||
xData_attribute *xData_attributeByIndex( xData_attributionList *attributes, int index );
|
||||
xData_element *xData_getElements_xDataElement( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_getCommonData( statusMessageReporting *smr, xData_element *element, xData_Int *index, xData_Int *start, xData_Int *end,
|
||||
xData_Int *length );
|
||||
int xData_xDataTypeConvertAttributes( statusMessageReporting *smr, xData_element *element );
|
||||
xData_Int xData_convertAttributeTo_xData_Int( statusMessageReporting *smr, xData_element *element, const char *name, xData_Int *n );
|
||||
int xData_convertAttributeToDouble( statusMessageReporting *smr, xData_element *element, const char *name, double *d );
|
||||
int xData_numberOfElementsByTagName( statusMessageReporting *smr, xData_element *element, const char *tagName );
|
||||
xData_elementList *xData_getElementsByTagName( statusMessageReporting *smr, xData_element *element, const char *tagName );
|
||||
xData_elementList *xData_getElementsByTagNameAndSort( statusMessageReporting *smr, xData_element *element, const char *tagName,
|
||||
const char *sortAttributeName, xData_sortElementFunc sortFunction );
|
||||
xData_element *xData_getOneElementByTagName( statusMessageReporting *smr, xData_element *element, char *name, int required );
|
||||
void xData_freeElementList( statusMessageReporting *smr, xData_elementList *list );
|
||||
int xData_addToAccessed( statusMessageReporting *smr, xData_element *element, int increment );
|
||||
int xData_getAccessed( statusMessageReporting *smr, xData_element *element );
|
||||
|
||||
int xData_init_1d_x( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_is_1d_x( statusMessageReporting *smr, xDataType *xDT, int setMsg );
|
||||
int xData_isElement_1d_x( statusMessageReporting *smr, xData_element *element, int setMsg );
|
||||
int xData_1d_x_copyData( statusMessageReporting *smr, xData_element *element, xData_Int nAllocatedBytes, double *d );
|
||||
double *xData_1d_x_allocateCopyData( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_1d_x_free_copyData( statusMessageReporting *smr, void *data );
|
||||
|
||||
int xData_init_2d_xindex_y( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_is_2d_xindex_y( statusMessageReporting *smr, xDataType *xDT, int setMsg );
|
||||
int xData_isElement_2d_xindex_y( statusMessageReporting *smr, xData_element *element, int setMsg );
|
||||
xData_Int *xData_2d_xindex_y_rawIndices( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_2d_xindex_y_free_rawIndices( statusMessageReporting *smr, void *data );
|
||||
double *xData_2d_xindex_y_toXYs( statusMessageReporting *smr, xData_element *element, double *Xs );
|
||||
double *xData_2d_xindex_y_toFilledYs( statusMessageReporting *smr, xData_element *element, double *Xs );
|
||||
int xData_2d_xindex_y_free_toFilledYs( statusMessageReporting *smr, void *data );
|
||||
double *xData_2d_xindex_y_toFilledXYs( statusMessageReporting *smr, xData_element *element, double *Xs );
|
||||
|
||||
int xData_init_2d_xy( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_is_2d_xy( statusMessageReporting *smr, xDataType *xDT, int setMsg );
|
||||
int xData_isElement_2d_xy( statusMessageReporting *smr, xData_element *element, int setMsg );
|
||||
double *xData_2d_xy_allocateCopyData( statusMessageReporting *smr, xData_element *element, xData_Int *length );
|
||||
int xData_2d_xy_free_copyData( statusMessageReporting *smr, void *data );
|
||||
|
||||
int xData_init_2d_xShared_yHistogram( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_is_2d_xShared_yHistogram( statusMessageReporting *smr, xDataType *xDT, int setMsg );
|
||||
int xData_isElement_2d_xShared_yHistogram( statusMessageReporting *smr, xData_element *element, int setMsg );
|
||||
double *xData_2d_xShared_yHistogram_copyData( statusMessageReporting *smr, xData_element *element, xData_Int *n );
|
||||
int xData_2d_xShared_yHistogram_free_copyData( statusMessageReporting *smr, void *data );
|
||||
double *xData_2d_xShared_yHistogram_toFilledXYs( xDataType *xDT, xData_Int nXs, double *Xs );
|
||||
|
||||
int xData_init_matrix( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_is_matrix( statusMessageReporting *smr, xDataType *xDT, int setMsg );
|
||||
int xData_isElement_matrix( statusMessageReporting *smr, xData_element *element, int setMsg );
|
||||
xData_matrix *xData_matrix_copyData( statusMessageReporting *smr, xData_element *element );
|
||||
int xData_matrix_free_copyData( statusMessageReporting *smr, void *data );
|
||||
int getRowStartEndAtIndex( statusMessageReporting *smr, xDataType *xDT, xData_Int index, xData_Int *row, xData_Int *start, xData_Int *end );
|
||||
|
||||
int xData_is_xDataType( statusMessageReporting *smr, xDataType *xDT, char const * const type, int setMsg );
|
||||
char const *xData_getFileName( xData_document *doc );
|
||||
int xData_setFileName( statusMessageReporting *smr, xData_document *doc, char const *fileName );
|
||||
xData_document *xData_getElementsDocument( xData_element *element );
|
||||
void *xData_get_smrUserInterfaceFromDocument( xData_document *doc );
|
||||
void *xData_get_smrUserInterfaceFromElement( xData_element *element );
|
||||
|
||||
int xData_stringTo_xData_Int( statusMessageReporting *smr, void *smrUserInterface, char const *c, xData_Int *value, char const *endings, char **e );
|
||||
int xData_stringTo_double( statusMessageReporting *smr, void *smrUserInterface, char const *c, double *value, char const *endings, char **e );
|
||||
|
||||
/*
|
||||
* Stuff in xDataMisc.c
|
||||
*/
|
||||
void *xData_malloc( statusMessageReporting *smr, size_t size, int zero, const char *forItem, const char *file, int line );
|
||||
void *xData_realloc( statusMessageReporting *smr, void *pOld, size_t size, const char *forItem, const char *routine, int line );
|
||||
void *xData_free( statusMessageReporting *smr, void *p );
|
||||
char *xDataMisc_allocateCopyString( statusMessageReporting *smr, const char *s, const char *forItem, const char *routine, int line );
|
||||
char *xDataMisc_getAbsPath( statusMessageReporting *smr, const char *fileName );
|
||||
int xData_setMessageError_ReturnInt( int value, statusMessageReporting *smr, void *userData, const char *file, int line, int code, const char *fmt, ... );
|
||||
|
||||
#define xData_malloc2( smr, size, zero, forItem ) xData_malloc( smr, size, zero, forItem, __FILE__, __LINE__ )
|
||||
#define xData_realloc2( smr, old, size, forItem ) xData_realloc( smr, old, size, forItem, __FILE__, __LINE__ )
|
||||
#define xDataMisc_allocateCopyString2( smr, s, forItem ) xDataMisc_allocateCopyString( smr, s, forItem, __FILE__, __LINE__ )
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of xData_h_included. */
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#ifndef xDataExtras_h_included
|
||||
#define xDataExtras_h_included
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
#endif
|
||||
|
||||
char *xData_parseReconstructXML( xData_document *xData_doc );
|
||||
int xData_parseOutline( FILE *f, xData_document *xData_doc, int outputText );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* End of xDataExtras_h_included. */
|
||||
@@ -0,0 +1,176 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4had_lend
|
||||
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_models.G4had_lend
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010-11-23 13:58:03 gcosmo Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
include_directories(${EXPAT_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/bosons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/barions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/ions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/mesons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/leptons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/cross_sections/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/photon_evaporation/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/de_excitation/util/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/low_energy/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/util/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/processes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/util/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4had_lend
|
||||
HEADERS
|
||||
G4GIDI.hh
|
||||
G4GIDI_Misc.hh
|
||||
G4GIDI_map.hh
|
||||
G4GIDI_mass.hh
|
||||
G4GIDI_target.hh
|
||||
G4LENDCapture.hh
|
||||
G4LENDCaptureCrossSection.hh
|
||||
G4LENDCrossSection.hh
|
||||
G4LENDElastic.hh
|
||||
G4LENDElasticCrossSection.hh
|
||||
G4LENDFission.hh
|
||||
G4LENDFissionCrossSection.hh
|
||||
G4LENDHeader.hh
|
||||
G4LENDInelastic.hh
|
||||
G4LENDInelasticCrossSection.hh
|
||||
G4LENDManager.hh
|
||||
G4LENDModel.hh
|
||||
G4LENDUsedTarget.hh
|
||||
gString.h
|
||||
statusMessageReporting.h
|
||||
tpi_IDs.h
|
||||
tpia_defs.h
|
||||
tpia_depot.h
|
||||
tpia_map.h
|
||||
tpia_mass.h
|
||||
tpia_misc.h
|
||||
tpia_target.h
|
||||
xData.h
|
||||
xDataExtras.h
|
||||
SOURCES
|
||||
G4GIDI.cc
|
||||
G4GIDI_Misc.cc
|
||||
G4GIDI_map.cc
|
||||
G4GIDI_mass.cc
|
||||
G4GIDI_target.cc
|
||||
G4LENDCapture.cc
|
||||
G4LENDCaptureCrossSection.cc
|
||||
G4LENDCrossSection.cc
|
||||
G4LENDElastic.cc
|
||||
G4LENDElasticCrossSection.cc
|
||||
G4LENDFission.cc
|
||||
G4LENDFissionCrossSection.cc
|
||||
G4LENDInelastic.cc
|
||||
G4LENDInelasticCrossSection.cc
|
||||
G4LENDManager.cc
|
||||
G4LENDModel.cc
|
||||
G4LENDUsedTarget.cc
|
||||
gString.cc
|
||||
statusMessageReporting.cc
|
||||
tpi_IDs.cc
|
||||
tpia_angular.cc
|
||||
tpia_angularEnergy.cc
|
||||
tpia_channel.cc
|
||||
tpia_decayChannel.cc
|
||||
tpia_depot.cc
|
||||
tpia_frame.cc
|
||||
tpia_kinetics.cc
|
||||
tpia_Legendre.cc
|
||||
tpia_map.cc
|
||||
tpia_mass.cc
|
||||
tpia_misc.cc
|
||||
tpia_multiplicity.cc
|
||||
tpia_particle.cc
|
||||
tpia_product.cc
|
||||
tpia_samplingMethods.cc
|
||||
tpia_target.cc
|
||||
tpia_target_heated.cc
|
||||
xData.cc
|
||||
xDataExtras.cc
|
||||
xDataMisc.cc
|
||||
xData_1d_x.cc
|
||||
xData_2d_xindex_y.cc
|
||||
xData_2d_xshared_yhistogram.cc
|
||||
xData_2d_xy.cc
|
||||
xData_matrix.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4had_mod_man
|
||||
G4had_mod_util
|
||||
G4hadronic_LE
|
||||
G4hadronic_deex_management
|
||||
G4hadronic_deex_photon_evaporation
|
||||
G4hadronic_deex_util
|
||||
G4hadronic_mgt
|
||||
G4hadronic_proc
|
||||
G4hadronic_util
|
||||
G4hadronic_xsect
|
||||
G4ions
|
||||
G4leptons
|
||||
G4materials
|
||||
G4mesons
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
${EXPAT_LIBRARIES}
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
#
|
||||
# Not this again... Need to add *another* compile definition to lend sources
|
||||
# for DLLs....
|
||||
# We do this quick and dirty, add the definition directly. I *don't want it
|
||||
# polluting compile of all other processes modules
|
||||
# in global mode
|
||||
#
|
||||
set_source_files_properties(
|
||||
${G4had_lend_SOURCES}
|
||||
PROPERTIES COMPILE_DEFINITIONS G4PROCESSES_EXPORT
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "G4GIDI.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace GIDI;
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI::G4GIDI( int ip, string &dataDirectory ) {
|
||||
|
||||
init( ip );
|
||||
addDataDirectory( dataDirectory );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI::G4GIDI( int ip, list<string> &dataDirectoryList ) {
|
||||
|
||||
list<string>::iterator iter;
|
||||
|
||||
init( ip );
|
||||
for( iter = dataDirectoryList.begin( ); iter != dataDirectoryList.end( ); ++iter ) addDataDirectory( *iter );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI::~G4GIDI( void ) {
|
||||
|
||||
G4GIDI_target *target;
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
|
||||
while( targets.size( ) > 0 ) {
|
||||
target = targets.back( );
|
||||
targets.pop_back( );
|
||||
delete target;
|
||||
}
|
||||
|
||||
while( ( iter = dataDirectories.begin( ) ) != dataDirectories.end( ) ) {
|
||||
delete *iter;
|
||||
dataDirectories.pop_front( );
|
||||
}
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::init( int ip ) {
|
||||
|
||||
projectileID = ip;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::numberOfDataDirectories( void ) {
|
||||
|
||||
return( dataDirectories.size( ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::addDataDirectory( string &dataDirectory ) {
|
||||
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
|
||||
if( (*iter)->path( ) == dataDirectory ) return( 0 );
|
||||
}
|
||||
|
||||
G4GIDI_map *map = new G4GIDI_map( dataDirectory );
|
||||
dataDirectories.push_back( map );
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::removeDataDirectory( string &dataDirectory ) {
|
||||
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
|
||||
if( dataDirectory == (*iter)->path( ) ) {
|
||||
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
//string G4GIDI::getDataDirectoryAtIndex( int index ) {
|
||||
string G4GIDI::getDataDirectoryAtIndex( int ) {
|
||||
|
||||
#if 0
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
unsigned i = (unsigned) index;
|
||||
|
||||
if( i < 0 ) return( "" );
|
||||
if( i >= dataDirectories.size( ) ) return( "" );
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++, i-- ) {
|
||||
if( i == 0 ) return( (*iter)->fileName( ) );
|
||||
}
|
||||
#endif
|
||||
return( "" );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<string> *G4GIDI::getDataDirectories( void ) {
|
||||
|
||||
int i = 0;
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
vector<string> *v = new vector<string>( numberOfDataDirectories( ) );
|
||||
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++, i++ ) (*v)[i] = string( (*iter)->fileName( ) );
|
||||
return( v );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
bool G4GIDI::isThisDataAvailable( string &lib_name, int iZ, int iA, int iM ) {
|
||||
|
||||
bool b;
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
|
||||
|
||||
if( targetName == NULL ) return( false );
|
||||
string targetSymbol( targetName );
|
||||
b = isThisDataAvailable( lib_name, targetSymbol );
|
||||
xData_free( NULL, targetName );
|
||||
return( b );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
bool G4GIDI::isThisDataAvailable( string &lib_name, string &targetName ) {
|
||||
|
||||
char *path = dataFilename( lib_name, targetName );
|
||||
|
||||
if( path != NULL ) {
|
||||
xData_free( NULL, path );
|
||||
return( true );
|
||||
}
|
||||
return( false );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
char *G4GIDI::dataFilename( string &lib_name, int iZ, int iA, int iM ) {
|
||||
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM ), *fileName;
|
||||
|
||||
if( targetName == NULL ) return( NULL );
|
||||
string targetSymbol( targetName );
|
||||
fileName = dataFilename( lib_name, targetSymbol );
|
||||
xData_free( NULL, targetName );
|
||||
return( fileName );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
char *G4GIDI::dataFilename( string &lib_name, string &targetSymbol ) {
|
||||
|
||||
//char *path, *projectile = "n_1";
|
||||
char *path, *projectile = (char*)"n_1";
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
|
||||
if( ( path = tpia_map_findTarget( &((*iter)->smr), (*iter)->map, lib_name.c_str( ), projectile, targetSymbol.c_str( ) ) ) != NULL ) {
|
||||
return( path );
|
||||
}
|
||||
}
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<string> *G4GIDI::getNamesOfAvailableLibraries( int iZ, int iA, int iM ) {
|
||||
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
|
||||
vector<string> *listOfLibraries;
|
||||
|
||||
if( targetName == NULL ) return( new vector<string>( ) );
|
||||
string targetSymbol( targetName );
|
||||
listOfLibraries = getNamesOfAvailableLibraries( targetSymbol );
|
||||
xData_free( NULL, targetName );
|
||||
return( listOfLibraries );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<string> *G4GIDI::getNamesOfAvailableLibraries( string &targetName ) {
|
||||
|
||||
//char *projectile = "n_1";
|
||||
char *projectile = (char*)"n_1";
|
||||
list<G4GIDI_map *>::iterator iter;
|
||||
vector<string> *listOfLibraries = new vector<string>( );
|
||||
|
||||
tpia_map *map;
|
||||
tpia_mapEntry *entry;
|
||||
for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
|
||||
map = tpia_map_findAllOfTarget( &((*iter)->smr), (*iter)->map, projectile, targetName.c_str( ) );
|
||||
for( entry = tpia_map_getFirstEntry( map ); entry != NULL; entry = tpia_map_getNextEntry( entry ) ) {
|
||||
listOfLibraries->push_back( entry->evaluation );
|
||||
}
|
||||
tpia_map_free( NULL, map );
|
||||
}
|
||||
return( listOfLibraries );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<string> *G4GIDI::getNamesOfAvailableTargets( void ) {
|
||||
|
||||
vector<string> *listOfTargets;
|
||||
list<G4GIDI_map *>::iterator iter_map;
|
||||
|
||||
listOfTargets = new vector<string>( );
|
||||
if( listOfTargets == NULL ) return( NULL );
|
||||
for( iter_map = dataDirectories.begin( ); iter_map != dataDirectories.end( ); iter_map++ ) {
|
||||
if( tpia_map_walkTree( NULL, (*iter_map)->map, getNamesOfAvailableTargets_walker, (void *) listOfTargets ) != 0 ) {
|
||||
delete listOfTargets;
|
||||
return( NULL );
|
||||
}
|
||||
}
|
||||
return( listOfTargets );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target *G4GIDI::readTarget( string &lib_name, int iZ, int iA, int iM, bool bind ) {
|
||||
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
|
||||
G4GIDI_target *target;
|
||||
|
||||
if( targetName == NULL ) return( NULL );
|
||||
string targetSymbol( targetName );
|
||||
target = readTarget( lib_name, targetSymbol, bind );
|
||||
xData_free( NULL, targetName );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target *G4GIDI::readTarget( string &lib_name, string &targetName, bool bind ) {
|
||||
|
||||
vector<G4GIDI_target *>::iterator iter_targets;
|
||||
|
||||
for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
|
||||
if( (*iter_targets)->name == targetName ) return( NULL );
|
||||
}
|
||||
char *path = dataFilename( lib_name, targetName );
|
||||
if( path == NULL ) return( NULL );
|
||||
|
||||
G4GIDI_target *target = new G4GIDI_target( path );
|
||||
if( bind ) targets.push_back( target );
|
||||
xData_free( NULL, path );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target *G4GIDI::getAlreadyReadTarget( int iZ, int iA, int iM ) {
|
||||
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
|
||||
G4GIDI_target *target;
|
||||
|
||||
if( targetName == NULL ) return( NULL );
|
||||
string targetSymbol( targetName );
|
||||
target = getAlreadyReadTarget( targetSymbol );
|
||||
xData_free( NULL, targetName );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target *G4GIDI::getAlreadyReadTarget( string &targetSymbol ) {
|
||||
|
||||
vector<G4GIDI_target *>::iterator iter_targets;
|
||||
|
||||
for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
|
||||
if( ( (*iter_targets)->name == targetSymbol ) ) return( *iter_targets );
|
||||
}
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::freeTarget( G4GIDI_target *target ) {
|
||||
|
||||
vector<G4GIDI_target *>::iterator iter_targets;
|
||||
|
||||
for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
|
||||
if( *iter_targets == target ) {
|
||||
targets.erase( iter_targets );
|
||||
delete target;
|
||||
return( 0 );
|
||||
}
|
||||
}
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::freeTarget( int iZ, int iA, int iM ) {
|
||||
|
||||
int status;
|
||||
char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
|
||||
|
||||
if( targetName == NULL ) return( 1 );
|
||||
string targetSymbol( targetName );
|
||||
status = freeTarget( targetSymbol );
|
||||
xData_free( NULL, targetName );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI::freeTarget( string &targetSymbol ) {
|
||||
|
||||
vector<G4GIDI_target *>::iterator iter_targets;
|
||||
|
||||
for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
|
||||
if( (*iter_targets)->name == targetSymbol ) return( freeTarget( *iter_targets ) );
|
||||
}
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<string> *G4GIDI::getListOfReadTargetsNames( void ) {
|
||||
|
||||
vector<G4GIDI_target *>::iterator iter_targets;
|
||||
vector<string> *listOfTargets;
|
||||
|
||||
listOfTargets = new vector<string>( );
|
||||
if( listOfTargets == NULL ) return( NULL );
|
||||
for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
|
||||
listOfTargets->push_back( *(*iter_targets)->getName( ) );
|
||||
}
|
||||
return( listOfTargets );
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <xData.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
#include <string.h>
|
||||
#include "G4GIDI_Misc.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace GIDI;
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
char *G4GIDI_Misc_Z_A_m_ToName( int iZ, int iA, int im ) {
|
||||
|
||||
const char *Z = tpia_misc_ZToSymbol( iZ );
|
||||
char S[128], mS[32], *name;
|
||||
|
||||
if( Z == NULL ) return( NULL );
|
||||
if( iA == 0 ) {
|
||||
if( im != 0 ) return( NULL );
|
||||
sprintf( S, "%s_natural", Z ); }
|
||||
else {
|
||||
sprintf( S, "%s_%d", Z, iA );
|
||||
if( im != 0 ) {
|
||||
sprintf( mS, "_m%d", im );
|
||||
strcat( S, mS );
|
||||
}
|
||||
}
|
||||
name = (char *) xData_malloc2( NULL, strlen( S ) + 1, 0, "name" );
|
||||
if( name != NULL ) strcpy( name, S );
|
||||
return( name );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
char *G4GIDI_Misc_channelCompound( char *particle1, char *particle2 ) {
|
||||
|
||||
int Z1, A1, m1, Z2, A2, m2;
|
||||
|
||||
if( tpia_miscNameToZAm( NULL, particle1, &Z1, &A1, &m1 ) ) return( NULL );
|
||||
if( tpia_miscNameToZAm( NULL, particle2, &Z2, &A2, &m2 ) ) return( NULL );
|
||||
if( A1 == 0 ) A2 = 0;
|
||||
if( A2 == 0 ) A1 = 0;
|
||||
return( G4GIDI_Misc_Z_A_m_ToName( Z1 + Z2, A1 + A2, 0 ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_Misc_channelProductsCompare( tpia_channel *channel, int nProducts, char **productNames ) {
|
||||
|
||||
int i;
|
||||
tpia_product *product;
|
||||
|
||||
if( channel->decayChannel.numberOfProducts != nProducts ) return( 0 );
|
||||
for( product = tpia_channel_getFirstProduct( channel ), i = 0; product != NULL; product = tpia_decayChannel_getNextProduct( product ), i++ ) {
|
||||
if( strcmp( product->productID->name, productNames[i] ) ) return( 0 );
|
||||
}
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
//int getNamesOfAvailableTargets_walker( tpia_mapEntry *entry, int level, void *userData ) {
|
||||
int getNamesOfAvailableTargets_walker( tpia_mapEntry *entry, int , void *userData ) {
|
||||
|
||||
vector<string> *listOfTargets = (vector<string> *) userData;
|
||||
vector<string>::iterator iter;
|
||||
|
||||
if( entry->type != tpia_mapEntry_type_target ) return( 0 );
|
||||
for( iter = listOfTargets->begin( ); iter != listOfTargets->end( ); iter++ ) {
|
||||
if( entry->targetName == iter->c_str( ) ) return( 0 );
|
||||
}
|
||||
listOfTargets->push_back( entry->targetName );
|
||||
return( 0 );
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#include "G4GIDI_map.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace GIDI;
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_map::G4GIDI_map( string &dataDirectory ) {
|
||||
|
||||
smr_initialize( &smr );
|
||||
map = tpia_map_readFile( &smr, NULL, dataDirectory.c_str( ) );
|
||||
if( !smr_isOk( &smr ) ) {
|
||||
smr_print( &smr, stderr, 1 );
|
||||
throw 1;
|
||||
}
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_map::~G4GIDI_map( void ) {
|
||||
|
||||
if( map != NULL ) tpia_map_free( NULL, map );
|
||||
smr_release( &smr );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
string G4GIDI_map::fileName( void ) {
|
||||
|
||||
return( map->mapFileName );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
string G4GIDI_map::path( void ) {
|
||||
|
||||
return( map->path );
|
||||
}
|
||||
@@ -0,0 +1,932 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string>
|
||||
#include <string.h>
|
||||
#include <xData.h>
|
||||
|
||||
#include "G4GIDI_mass.hh"
|
||||
#include "G4GIDI_Misc.hh"
|
||||
|
||||
using namespace GIDI;
|
||||
struct ZAMass {
|
||||
//char *symbol;
|
||||
std::string symbol;
|
||||
double mass;
|
||||
};
|
||||
|
||||
static struct ZAMass ZAMasses[] = {
|
||||
{ "n_1", 1.008664915740000e+00 }, { "H_natural", 1.007900000000000e+00 }, { "H_1", 1.007825032070000e+00 }, { "H_2", 2.014101777850000e+00 },
|
||||
{ "H_3", 3.016049277670000e+00 }, { "H_4", 4.027806424000000e+00 }, { "H_5", 5.035311488000000e+00 }, { "H_6", 6.044942594000000e+00 },
|
||||
{ "H_7", 7.052749000000000e+00 }, { "He_natural", 4.002600000000000e+00 }, { "He_3", 3.016029319140000e+00 }, { "He_4", 4.002603254150000e+00 },
|
||||
{ "He_5", 5.012223624000000e+00 }, { "He_6", 6.018889124000000e+00 }, { "He_7", 7.028020618000000e+00 }, { "He_8", 8.033921897000001e+00 },
|
||||
{ "He_9", 9.043950285999999e+00 }, { "He_10", 1.005239883700000e+01 }, { "Li_natural", 6.941000000000000e+00 }, { "Li_3", 3.030775000000000e+00 },
|
||||
{ "Li_4", 4.027185558000000e+00 }, { "Li_5", 5.012537800000000e+00 }, { "Li_6", 6.015122794000000e+00 }, { "Li_7", 7.016004548000000e+00 },
|
||||
{ "Li_8", 8.022487362000000e+00 }, { "Li_9", 9.026789505000000e+00 }, { "Li_10", 1.003548125900000e+01 }, { "Li_11", 1.104379771500000e+01 },
|
||||
{ "Li_12", 1.205378000000000e+01 }, { "Be_natural", 9.012180000000001e+00 }, { "Be_5", 5.040790000000000e+00 }, { "Be_6", 6.019726317000000e+00 },
|
||||
{ "Be_7", 7.016929828000000e+00 }, { "Be_8", 8.005305103000000e+00 }, { "Be_9", 9.012182201000000e+00 }, { "Be_10", 1.001353381800000e+01 },
|
||||
{ "Be_11", 1.102165774900000e+01 }, { "Be_12", 1.202692073700000e+01 }, { "Be_13", 1.303569300700000e+01 }, { "Be_14", 1.404289292000000e+01 },
|
||||
{ "Be_15", 1.505346000000000e+01 }, { "Be_16", 1.606192000000000e+01 }, { "B_natural", 1.081000000000000e+01 }, { "B_6", 6.046810000000000e+00 },
|
||||
{ "B_7", 7.029917901000000e+00 }, { "B_8", 8.024607232999999e+00 }, { "B_9", 9.013328782000000e+00 }, { "B_10", 1.001293699200000e+01 },
|
||||
{ "B_11", 1.100930540600000e+01 }, { "B_12", 1.201435210400000e+01 }, { "B_13", 1.301778021700000e+01 }, { "B_14", 1.402540400900000e+01 },
|
||||
{ "B_15", 1.503110302100000e+01 }, { "B_16", 1.603980882900000e+01 }, { "B_17", 1.704698990600000e+01 }, { "B_18", 1.805617000000000e+01 },
|
||||
{ "B_19", 1.906373000000000e+01 }, { "C_natural", 1.201100000000000e+01 }, { "C_8", 8.037675025000000e+00 }, { "C_9", 9.031036689000000e+00 },
|
||||
{ "C_10", 1.001685322800000e+01 }, { "C_11", 1.101143361300000e+01 }, { "C_12", 1.200000000000000e+01 }, { "C_13", 1.300335483778000e+01 },
|
||||
{ "C_14", 1.400324198870000e+01 }, { "C_15", 1.501059925600000e+01 }, { "C_16", 1.601470125200000e+01 }, { "C_17", 1.702258611600000e+01 },
|
||||
{ "C_18", 1.802675935400000e+01 }, { "C_19", 1.903480501800000e+01 }, { "C_20", 2.004031975400000e+01 }, { "C_21", 2.104934000000000e+01 },
|
||||
{ "C_23", 2.205720000000000e+01 }, { "N_natural", 1.400670000000000e+01 }, { "N_10", 1.004165367400000e+01 }, { "N_11", 1.102609095600000e+01 },
|
||||
{ "N_12", 1.201861319700000e+01 }, { "N_13", 1.300573860900000e+01 }, { "N_14", 1.400307400478000e+01 }, { "N_15", 1.500010889823000e+01 },
|
||||
{ "N_16", 1.600610165800000e+01 }, { "N_17", 1.700845026100000e+01 }, { "N_18", 1.801407895900000e+01 }, { "N_19", 1.901702869700000e+01 },
|
||||
{ "N_20", 2.002336580700000e+01 }, { "N_21", 2.102710824000000e+01 }, { "N_22", 2.203439493400000e+01 }, { "N_23", 2.304122000000000e+01 },
|
||||
{ "N_24", 2.405104000000000e+01 }, { "N_25", 2.506066000000000e+01 }, { "O_natural", 1.599940000000000e+01 }, { "O_12", 1.203440489500000e+01 },
|
||||
{ "O_13", 1.302481221300000e+01 }, { "O_14", 1.400859625000000e+01 }, { "O_15", 1.500306561700000e+01 }, { "O_16", 1.599491461956000e+01 },
|
||||
{ "O_17", 1.699913170300000e+01 }, { "O_18", 1.799916100100000e+01 }, { "O_19", 1.900358013000000e+01 }, { "O_20", 2.000407674200000e+01 },
|
||||
{ "O_21", 2.100865588600000e+01 }, { "O_22", 2.200996694700000e+01 }, { "O_23", 2.301568765900000e+01 }, { "O_24", 2.402047291700000e+01 },
|
||||
{ "O_25", 2.502946000000000e+01 }, { "O_26", 2.603834000000000e+01 }, { "O_27", 2.704826000000000e+01 }, { "O_28", 2.805781000000000e+01 },
|
||||
{ "F_natural", 1.899840300000000e+01 }, { "F_14", 1.403506000000000e+01 }, { "F_15", 1.501800910300000e+01 }, { "F_16", 1.601146572400000e+01 },
|
||||
{ "F_17", 1.700209523700000e+01 }, { "F_18", 1.800093795600000e+01 }, { "F_19", 1.899840322400000e+01 }, { "F_20", 1.999998131500000e+01 },
|
||||
{ "F_21", 2.099994895100000e+01 }, { "F_22", 2.200299881500000e+01 }, { "F_23", 2.300357463100000e+01 }, { "F_24", 2.400811548500000e+01 },
|
||||
{ "F_25", 2.501210174700000e+01 }, { "F_26", 2.601961555500000e+01 }, { "F_27", 2.702676008600000e+01 }, { "F_28", 2.803567000000000e+01 },
|
||||
{ "F_29", 2.904326000000000e+01 }, { "F_30", 3.005250000000000e+01 }, { "F_31", 3.106042900000000e+01 }, { "Ne_natural", 2.017900000000000e+01 },
|
||||
{ "Ne_16", 1.602576126200000e+01 }, { "Ne_17", 1.701767150400000e+01 }, { "Ne_18", 1.800570821300000e+01 }, { "Ne_19", 1.900188024800000e+01 },
|
||||
{ "Ne_20", 1.999244017542000e+01 }, { "Ne_21", 2.099384668400000e+01 }, { "Ne_22", 2.199138511300000e+01 }, { "Ne_23", 2.299446690400000e+01 },
|
||||
{ "Ne_24", 2.399361077900000e+01 }, { "Ne_25", 2.499773688800000e+01 }, { "Ne_26", 2.600046120600000e+01 }, { "Ne_27", 2.700758990300000e+01 },
|
||||
{ "Ne_28", 2.801207157500000e+01 }, { "Ne_29", 2.901938593300000e+01 }, { "Ne_30", 3.002480104500000e+01 }, { "Ne_31", 3.103311000000000e+01 },
|
||||
{ "Ne_32", 3.204002000000000e+01 }, { "Ne_33", 3.304938000000000e+01 }, { "Ne_34", 3.405702800000000e+01 }, { "Na_natural", 2.298977000000000e+01 },
|
||||
{ "Na_18", 1.802596900000000e+01 }, { "Na_19", 1.901387749900000e+01 }, { "Na_20", 2.000735132800000e+01 }, { "Na_21", 2.099765520600000e+01 },
|
||||
{ "Na_22", 2.199443642500000e+01 }, { "Na_23", 2.298976928087000e+01 }, { "Na_24", 2.399096278200000e+01 }, { "Na_25", 2.498995396800000e+01 },
|
||||
{ "Na_26", 2.599263300000000e+01 }, { "Na_27", 2.699407678800000e+01 }, { "Na_28", 2.799893800000000e+01 }, { "Na_29", 2.900286100000000e+01 },
|
||||
{ "Na_30", 3.000897600000000e+01 }, { "Na_31", 3.101358545200000e+01 }, { "Na_32", 3.202046656000000e+01 }, { "Na_33", 3.302671975600000e+01 },
|
||||
{ "Na_34", 3.403517000000000e+01 }, { "Na_35", 3.504249300000000e+01 }, { "Na_36", 3.605148000000000e+01 }, { "Na_37", 3.705934000000000e+01 },
|
||||
{ "Mg_natural", 2.430500000000000e+01 }, { "Mg_19", 1.903547000000000e+01 }, { "Mg_20", 2.001886254500000e+01 }, { "Mg_21", 2.101171291000000e+01 },
|
||||
{ "Mg_22", 2.199957384300000e+01 }, { "Mg_23", 2.299412366900000e+01 }, { "Mg_24", 2.398504169900000e+01 }, { "Mg_25", 2.498583691700000e+01 },
|
||||
{ "Mg_26", 2.598259292900000e+01 }, { "Mg_27", 2.698434058500000e+01 }, { "Mg_28", 2.798387682500000e+01 }, { "Mg_29", 2.898860000000000e+01 },
|
||||
{ "Mg_30", 2.999043400000000e+01 }, { "Mg_31", 3.099654600000000e+01 }, { "Mg_32", 3.199897500000000e+01 }, { "Mg_33", 3.300525400000000e+01 },
|
||||
{ "Mg_34", 3.400945642400000e+01 }, { "Mg_35", 3.501734000000000e+01 }, { "Mg_36", 3.602300000000000e+01 }, { "Mg_37", 3.703140000000000e+01 },
|
||||
{ "Mg_38", 3.803757000000000e+01 }, { "Mg_39", 3.904677200000000e+01 }, { "Mg_40", 4.005393000000000e+01 }, { "Al_natural", 2.698154000000000e+01 },
|
||||
{ "Al_21", 2.102804000000000e+01 }, { "Al_22", 2.201952000000000e+01 }, { "Al_23", 2.300726743200000e+01 }, { "Al_24", 2.399993886500000e+01 },
|
||||
{ "Al_25", 2.499042809500000e+01 }, { "Al_26", 2.598689169200000e+01 }, { "Al_27", 2.698153862700000e+01 }, { "Al_28", 2.798191030600000e+01 },
|
||||
{ "Al_29", 2.898044504600000e+01 }, { "Al_30", 2.998296025600000e+01 }, { "Al_31", 3.098394661900000e+01 }, { "Al_32", 3.198812448900000e+01 },
|
||||
{ "Al_33", 3.299084333600000e+01 }, { "Al_34", 3.399685183700000e+01 }, { "Al_35", 3.499986023500000e+01 }, { "Al_36", 3.600620720400000e+01 },
|
||||
{ "Al_37", 3.701067782000000e+01 }, { "Al_38", 3.801723102100000e+01 }, { "Al_39", 3.902297000000000e+01 }, { "Al_40", 4.003145000000000e+01 },
|
||||
{ "Al_41", 4.103833000000000e+01 }, { "Al_42", 4.204689000000000e+01 }, { "Si_natural", 2.808550000000000e+01 }, { "Si_22", 2.203453000000000e+01 },
|
||||
{ "Si_23", 2.302552000000000e+01 }, { "Si_24", 2.401154561600000e+01 }, { "Si_25", 2.500410557400000e+01 }, { "Si_26", 2.599232992100000e+01 },
|
||||
{ "Si_27", 2.698670490500000e+01 }, { "Si_28", 2.797692653246000e+01 }, { "Si_29", 2.897649470000000e+01 }, { "Si_30", 2.997377017100000e+01 },
|
||||
{ "Si_31", 3.097536322700000e+01 }, { "Si_32", 3.197414808200000e+01 }, { "Si_33", 3.297800022000000e+01 }, { "Si_34", 3.397857552400000e+01 },
|
||||
{ "Si_35", 3.498458357500000e+01 }, { "Si_36", 3.598659947700000e+01 }, { "Si_37", 3.699293608000000e+01 }, { "Si_38", 3.799563360100000e+01 },
|
||||
{ "Si_39", 3.900207001300000e+01 }, { "Si_40", 4.000586912100000e+01 }, { "Si_41", 4.101456000000000e+01 }, { "Si_42", 4.201979000000000e+01 },
|
||||
{ "Si_43", 4.302866000000000e+01 }, { "Si_44", 4.403526000000000e+01 }, { "P_natural", 3.097376000000000e+01 }, { "P_24", 2.403435000000000e+01 },
|
||||
{ "P_25", 2.502026000000000e+01 }, { "P_26", 2.601178000000000e+01 }, { "P_27", 2.699923023600000e+01 }, { "P_28", 2.799231476100000e+01 },
|
||||
{ "P_29", 2.898180060600000e+01 }, { "P_30", 2.997831378900000e+01 }, { "P_31", 3.097376162900000e+01 }, { "P_32", 3.197390727400000e+01 },
|
||||
{ "P_33", 3.297172554300000e+01 }, { "P_34", 3.397363625700000e+01 }, { "P_35", 3.497331411700000e+01 }, { "P_36", 3.597825968000000e+01 },
|
||||
{ "P_37", 3.697960894600000e+01 }, { "P_38", 3.798415682700000e+01 }, { "P_39", 3.898617947500000e+01 }, { "P_40", 3.999129695100000e+01 },
|
||||
{ "P_41", 4.099433543500000e+01 }, { "P_42", 4.200100791300000e+01 }, { "P_43", 4.300619000000000e+01 }, { "P_44", 4.401299000000000e+01 },
|
||||
{ "P_45", 4.501922000000000e+01 }, { "P_46", 4.602738000000000e+01 }, { "S_natural", 3.206000000000000e+01 }, { "S_26", 2.602788000000000e+01 },
|
||||
{ "S_27", 2.701883300000000e+01 }, { "S_28", 2.800437276300000e+01 }, { "S_29", 2.899660804900000e+01 }, { "S_30", 2.998490324900000e+01 },
|
||||
{ "S_31", 3.097955472800000e+01 }, { "S_32", 3.197207099900000e+01 }, { "S_33", 3.297145875900000e+01 }, { "S_34", 3.396786690200000e+01 },
|
||||
{ "S_35", 3.496903216100000e+01 }, { "S_36", 3.596708076000000e+01 }, { "S_37", 3.697112556700000e+01 }, { "S_38", 3.797116331700000e+01 },
|
||||
{ "S_39", 3.897513430600000e+01 }, { "S_40", 3.997545172800000e+01 }, { "S_41", 4.097958214900000e+01 }, { "S_42", 4.198102241900000e+01 },
|
||||
{ "S_43", 4.298715479000000e+01 }, { "S_44", 4.399021339000000e+01 }, { "S_45", 4.499650811200000e+01 }, { "S_46", 4.600075000000000e+01 },
|
||||
{ "S_47", 4.700859000000000e+01 }, { "S_48", 4.801417000000000e+01 }, { "S_49", 4.902361900000000e+01 }, { "Cl_natural", 3.545300000000000e+01 },
|
||||
{ "Cl_28", 2.802851000000000e+01 }, { "Cl_29", 2.901411000000000e+01 }, { "Cl_30", 3.000477000000000e+01 }, { "Cl_31", 3.099241308600000e+01 },
|
||||
{ "Cl_32", 3.198568990100000e+01 }, { "Cl_33", 3.297745188700000e+01 }, { "Cl_34", 3.397376281900000e+01 }, { "Cl_35", 3.496885268200000e+01 },
|
||||
{ "Cl_36", 3.596830698100000e+01 }, { "Cl_37", 3.696590259100000e+01 }, { "Cl_38", 3.796801042500000e+01 }, { "Cl_39", 3.896800816400000e+01 },
|
||||
{ "Cl_40", 3.997041547200000e+01 }, { "Cl_41", 4.097068452500000e+01 }, { "Cl_42", 4.197325480400000e+01 }, { "Cl_43", 4.297405440300000e+01 },
|
||||
{ "Cl_44", 4.397828107100000e+01 }, { "Cl_45", 4.498028688600000e+01 }, { "Cl_46", 4.598421004000000e+01 }, { "Cl_47", 4.698871000000000e+01 },
|
||||
{ "Cl_48", 4.799495000000000e+01 }, { "Cl_49", 4.900032000000000e+01 }, { "Cl_50", 5.000784000000000e+01 }, { "Cl_51", 5.101449000000000e+01 },
|
||||
{ "Ar_natural", 3.994800000000000e+01 }, { "Ar_30", 3.002156000000000e+01 }, { "Ar_31", 3.101212300000000e+01 }, { "Ar_32", 3.199763798400000e+01 },
|
||||
{ "Ar_33", 3.298992570900000e+01 }, { "Ar_34", 3.398027124400000e+01 }, { "Ar_35", 3.497525758500000e+01 }, { "Ar_36", 3.596754510500000e+01 },
|
||||
{ "Ar_37", 3.696677632000000e+01 }, { "Ar_38", 3.796273239400000e+01 }, { "Ar_39", 3.896431323100000e+01 }, { "Ar_40", 3.996238312251000e+01 },
|
||||
{ "Ar_41", 4.096450061100000e+01 }, { "Ar_42", 4.196304573600000e+01 }, { "Ar_43", 4.296563605600000e+01 }, { "Ar_44", 4.396492403300000e+01 },
|
||||
{ "Ar_45", 4.496803995600000e+01 }, { "Ar_46", 4.596809412900000e+01 }, { "Ar_47", 4.697218679200000e+01 }, { "Ar_48", 4.797454000000000e+01 },
|
||||
{ "Ar_49", 4.898052000000000e+01 }, { "Ar_50", 4.998443000000000e+01 }, { "Ar_51", 5.099163000000000e+01 }, { "Ar_52", 5.199678000000000e+01 },
|
||||
{ "Ar_53", 5.300494000000000e+01 }, { "K_natural", 3.909830000000000e+01 }, { "K_32", 3.202192000000000e+01 }, { "K_33", 3.300726000000000e+01 },
|
||||
{ "K_34", 3.399841000000000e+01 }, { "K_35", 3.498800969200000e+01 }, { "K_36", 3.598129223500000e+01 }, { "K_37", 3.697337588900000e+01 },
|
||||
{ "K_38", 3.796908118400000e+01 }, { "K_39", 3.896370667900000e+01 }, { "K_40", 3.996399847500000e+01 }, { "K_41", 4.096182576200000e+01 },
|
||||
{ "K_42", 4.196240281000000e+01 }, { "K_43", 4.296071554000000e+01 }, { "K_44", 4.396155680400000e+01 }, { "K_45", 4.496069949300000e+01 },
|
||||
{ "K_46", 4.596197686400000e+01 }, { "K_47", 4.696167847300000e+01 }, { "K_48", 4.796551353500000e+01 }, { "K_49", 4.896745092800000e+01 },
|
||||
{ "K_50", 4.997278335500000e+01 }, { "K_51", 5.097638000000000e+01 }, { "K_52", 5.198261000000000e+01 }, { "K_53", 5.298712000000000e+01 },
|
||||
{ "K_54", 5.399420000000000e+01 }, { "K_55", 5.499971000000000e+01 }, { "Ca_natural", 4.008000000000000e+01 }, { "Ca_34", 3.401412000000000e+01 },
|
||||
{ "Ca_35", 3.500494000000000e+01 }, { "Ca_36", 3.599308706300000e+01 }, { "Ca_37", 3.698587026900000e+01 }, { "Ca_38", 3.797631845200000e+01 },
|
||||
{ "Ca_39", 3.897071972500000e+01 }, { "Ca_40", 3.996259098300000e+01 }, { "Ca_41", 4.096227806200000e+01 }, { "Ca_42", 4.195861801400000e+01 },
|
||||
{ "Ca_43", 4.295876662800000e+01 }, { "Ca_44", 4.395548175400000e+01 }, { "Ca_45", 4.495618656600000e+01 }, { "Ca_46", 4.595369258700000e+01 },
|
||||
{ "Ca_47", 4.695454600600000e+01 }, { "Ca_48", 4.795253417700000e+01 }, { "Ca_49", 4.895567414800000e+01 }, { "Ca_50", 4.995751896200000e+01 },
|
||||
{ "Ca_51", 5.096149921400000e+01 }, { "Ca_52", 5.196510000000000e+01 }, { "Ca_53", 5.297005000000000e+01 }, { "Ca_54", 5.397435000000000e+01 },
|
||||
{ "Ca_55", 5.498055000000000e+01 }, { "Ca_56", 5.598557000000000e+01 }, { "Ca_57", 5.699235600000000e+01 }, { "Sc_natural", 4.495590000000000e+01 },
|
||||
{ "Sc_36", 3.601492000000000e+01 }, { "Sc_37", 3.700305000000000e+01 }, { "Sc_38", 3.799470000000000e+01 }, { "Sc_39", 3.898479000200000e+01 },
|
||||
{ "Sc_40", 3.997796740700000e+01 }, { "Sc_41", 4.096925112500000e+01 }, { "Sc_42", 4.196551642900000e+01 }, { "Sc_43", 4.296115065800000e+01 },
|
||||
{ "Sc_44", 4.395940275200000e+01 }, { "Sc_45", 4.495591190900000e+01 }, { "Sc_46", 4.595517189000000e+01 }, { "Sc_47", 4.695240750800000e+01 },
|
||||
{ "Sc_48", 4.795223146800000e+01 }, { "Sc_49", 4.895002397500000e+01 }, { "Sc_50", 4.995218768500000e+01 }, { "Sc_51", 5.095360336800000e+01 },
|
||||
{ "Sc_52", 5.195667546800000e+01 }, { "Sc_53", 5.295961000000000e+01 }, { "Sc_54", 5.396326456100000e+01 }, { "Sc_55", 5.496824394900000e+01 },
|
||||
{ "Sc_56", 5.597287000000000e+01 }, { "Sc_57", 5.697779000000000e+01 }, { "Sc_58", 5.798371000000000e+01 }, { "Sc_59", 5.898922000000000e+01 },
|
||||
{ "Sc_60", 5.999571000000000e+01 }, { "Ti_natural", 4.790000000000000e+01 }, { "Ti_38", 3.800977000000000e+01 }, { "Ti_39", 3.900161000000000e+01 },
|
||||
{ "Ti_40", 3.999049883800000e+01 }, { "Ti_41", 4.098314500000000e+01 }, { "Ti_42", 4.197303090200000e+01 }, { "Ti_43", 4.296852249900000e+01 },
|
||||
{ "Ti_44", 4.395969006900000e+01 }, { "Ti_45", 4.495812561600000e+01 }, { "Ti_46", 4.595263155500000e+01 }, { "Ti_47", 4.695176308800000e+01 },
|
||||
{ "Ti_48", 4.794794628100000e+01 }, { "Ti_49", 4.894786998200000e+01 }, { "Ti_50", 4.994479119400000e+01 }, { "Ti_51", 5.094661495500000e+01 },
|
||||
{ "Ti_52", 5.194689731100000e+01 }, { "Ti_53", 5.294972717100000e+01 }, { "Ti_54", 5.395105240100000e+01 }, { "Ti_55", 5.495526505600000e+01 },
|
||||
{ "Ti_56", 5.595819963900000e+01 }, { "Ti_57", 5.696398913700000e+01 }, { "Ti_58", 5.796697000000000e+01 }, { "Ti_59", 5.897293000000000e+01 },
|
||||
{ "Ti_60", 5.997676000000000e+01 }, { "Ti_61", 6.098320000000000e+01 }, { "Ti_62", 6.198749000000000e+01 }, { "Ti_63", 6.299442000000000e+01 },
|
||||
{ "V_natural", 5.094150000000000e+01 }, { "V_40", 4.001109000000000e+01 }, { "V_41", 4.099978000000000e+01 }, { "V_42", 4.199123000000000e+01 },
|
||||
{ "V_43", 4.298065000000000e+01 }, { "V_44", 4.397411000000000e+01 }, { "V_45", 4.496577580800000e+01 }, { "V_46", 4.596020048100000e+01 },
|
||||
{ "V_47", 4.695490894000000e+01 }, { "V_48", 4.795225370700000e+01 }, { "V_49", 4.894851610100000e+01 }, { "V_50", 4.994715848500000e+01 },
|
||||
{ "V_51", 5.094395950700000e+01 }, { "V_52", 5.194477547900000e+01 }, { "V_53", 5.294433797900000e+01 }, { "V_54", 5.394643985400000e+01 },
|
||||
{ "V_55", 5.494723370100000e+01 }, { "V_56", 5.595053096600000e+01 }, { "V_57", 5.695256143200000e+01 }, { "V_58", 5.795683413600000e+01 },
|
||||
{ "V_59", 5.896020740700000e+01 }, { "V_60", 5.996502686200000e+01 }, { "V_61", 6.096848000000000e+01 }, { "V_62", 6.197378000000000e+01 },
|
||||
{ "V_63", 6.297755000000000e+01 }, { "V_64", 6.398347000000000e+01 }, { "V_65", 6.498792000000000e+01 }, { "Cr_natural", 5.199600000000000e+01 },
|
||||
{ "Cr_42", 4.200643000000000e+01 }, { "Cr_43", 4.299771000000000e+01 }, { "Cr_44", 4.398554900000000e+01 }, { "Cr_45", 4.497964000000000e+01 },
|
||||
{ "Cr_46", 4.596835863500000e+01 }, { "Cr_47", 4.696290004600000e+01 }, { "Cr_48", 4.795403171600000e+01 }, { "Cr_49", 4.895133572100000e+01 },
|
||||
{ "Cr_50", 4.994604420500000e+01 }, { "Cr_51", 5.094476743100000e+01 }, { "Cr_52", 5.194050747200000e+01 }, { "Cr_53", 5.294064938600000e+01 },
|
||||
{ "Cr_54", 5.393888039500000e+01 }, { "Cr_55", 5.494083967200000e+01 }, { "Cr_56", 5.594065313900000e+01 }, { "Cr_57", 5.694361301300000e+01 },
|
||||
{ "Cr_58", 5.794435312900000e+01 }, { "Cr_59", 5.894858636700000e+01 }, { "Cr_60", 5.995007603300000e+01 }, { "Cr_61", 6.095471720400000e+01 },
|
||||
{ "Cr_62", 6.195661319000000e+01 }, { "Cr_63", 6.296186000000000e+01 }, { "Cr_64", 6.396441000000000e+01 }, { "Cr_65", 6.497016000000001e+01 },
|
||||
{ "Cr_66", 6.597338000000001e+01 }, { "Cr_67", 6.697955000000000e+01 }, { "Mn_natural", 5.493800000000000e+01 }, { "Mn_44", 4.400687000000000e+01 },
|
||||
{ "Mn_45", 4.499451000000000e+01 }, { "Mn_46", 4.598672000000000e+01 }, { "Mn_47", 4.697610000000000e+01 }, { "Mn_48", 4.796852000000000e+01 },
|
||||
{ "Mn_49", 4.895961800500000e+01 }, { "Mn_50", 4.995423823000000e+01 }, { "Mn_51", 5.094821078700000e+01 }, { "Mn_52", 5.194556546400000e+01 },
|
||||
{ "Mn_53", 5.294129011700000e+01 }, { "Mn_54", 5.394035885400000e+01 }, { "Mn_55", 5.493804514100000e+01 }, { "Mn_56", 5.593890491000000e+01 },
|
||||
{ "Mn_57", 5.693828537800000e+01 }, { "Mn_58", 5.793998154900000e+01 }, { "Mn_59", 5.894044023700000e+01 }, { "Mn_60", 5.994291124600000e+01 },
|
||||
{ "Mn_61", 6.094465263800000e+01 }, { "Mn_62", 6.194842822000000e+01 }, { "Mn_63", 6.295023999000000e+01 }, { "Mn_64", 6.395424909000000e+01 },
|
||||
{ "Mn_65", 6.495633606500000e+01 }, { "Mn_66", 6.596108000000000e+01 }, { "Mn_67", 6.696414000000000e+01 }, { "Mn_68", 6.796930000000000e+01 },
|
||||
{ "Mn_69", 6.897284000000001e+01 }, { "Fe_natural", 5.584700000000000e+01 }, { "Fe_45", 4.501457800000000e+01 }, { "Fe_46", 4.600081000000000e+01 },
|
||||
{ "Fe_47", 4.699289000000000e+01 }, { "Fe_48", 4.798050400000000e+01 }, { "Fe_49", 4.897361000000000e+01 }, { "Fe_50", 4.996298898200000e+01 },
|
||||
{ "Fe_51", 5.095681953800000e+01 }, { "Fe_52", 5.194811387500000e+01 }, { "Fe_53", 5.294530794200000e+01 }, { "Fe_54", 5.393961050100000e+01 },
|
||||
{ "Fe_55", 5.493829335700000e+01 }, { "Fe_56", 5.593493747500000e+01 }, { "Fe_57", 5.693539396900000e+01 }, { "Fe_58", 5.793327555800000e+01 },
|
||||
{ "Fe_59", 5.893487546400000e+01 }, { "Fe_60", 5.993407168300000e+01 }, { "Fe_61", 6.093674528100000e+01 }, { "Fe_62", 6.193676744200000e+01 },
|
||||
{ "Fe_63", 6.294036909100000e+01 }, { "Fe_64", 6.394120126500000e+01 }, { "Fe_65", 6.494538027000000e+01 }, { "Fe_66", 6.594678063800001e+01 },
|
||||
{ "Fe_67", 6.695094724400001e+01 }, { "Fe_68", 6.795370000000000e+01 }, { "Fe_69", 6.895878000000000e+01 }, { "Fe_70", 6.996146000000000e+01 },
|
||||
{ "Fe_71", 7.096672000000000e+01 }, { "Fe_72", 7.196962000000001e+01 }, { "Co_natural", 5.893320000000000e+01 }, { "Co_47", 4.701149000000000e+01 },
|
||||
{ "Co_48", 4.800176000000000e+01 }, { "Co_49", 4.898972000000000e+01 }, { "Co_50", 4.998154000000000e+01 }, { "Co_51", 5.097072000000000e+01 },
|
||||
{ "Co_52", 5.196359000000000e+01 }, { "Co_53", 5.295421889600000e+01 }, { "Co_54", 5.394845963500000e+01 }, { "Co_55", 5.494199902900000e+01 },
|
||||
{ "Co_56", 5.593983927800000e+01 }, { "Co_57", 5.693629137300000e+01 }, { "Co_58", 5.793575281400000e+01 }, { "Co_59", 5.893319504800000e+01 },
|
||||
{ "Co_60", 5.993381705900000e+01 }, { "Co_61", 6.093247576300000e+01 }, { "Co_62", 6.193405056300000e+01 }, { "Co_63", 6.293361161100000e+01 },
|
||||
{ "Co_64", 6.393580990800000e+01 }, { "Co_65", 6.493647846000000e+01 }, { "Co_66", 6.593976200400000e+01 }, { "Co_67", 6.694088952900000e+01 },
|
||||
{ "Co_68", 6.794487305800000e+01 }, { "Co_69", 6.894632000000000e+01 }, { "Co_70", 6.995099999999999e+01 }, { "Co_71", 7.095290000000000e+01 },
|
||||
{ "Co_72", 7.195780999999999e+01 }, { "Co_73", 7.296024000000000e+01 }, { "Co_74", 7.396538000000000e+01 }, { "Co_75", 7.496832999999999e+01 },
|
||||
{ "Ni_natural", 5.870000000000000e+01 }, { "Ni_48", 4.801975000000000e+01 }, { "Ni_49", 4.900966000000000e+01 }, { "Ni_50", 4.999593000000000e+01 },
|
||||
{ "Ni_51", 5.098772000000000e+01 }, { "Ni_52", 5.197568000000000e+01 }, { "Ni_53", 5.296847000000000e+01 }, { "Ni_54", 5.395790549500000e+01 },
|
||||
{ "Ni_55", 5.495133025100000e+01 }, { "Ni_56", 5.594213202200000e+01 }, { "Ni_57", 5.693979352600000e+01 }, { "Ni_58", 5.793534290700000e+01 },
|
||||
{ "Ni_59", 5.893434670500000e+01 }, { "Ni_60", 5.993078637200000e+01 }, { "Ni_61", 6.093105603300000e+01 }, { "Ni_62", 6.192834511500000e+01 },
|
||||
{ "Ni_63", 6.292966937400000e+01 }, { "Ni_64", 6.392796595900000e+01 }, { "Ni_65", 6.493008430400000e+01 }, { "Ni_66", 6.592913933400000e+01 },
|
||||
{ "Ni_67", 6.693156941399999e+01 }, { "Ni_68", 6.793186878900001e+01 }, { "Ni_69", 6.893561026899999e+01 }, { "Ni_70", 6.993650000000000e+01 },
|
||||
{ "Ni_71", 7.094073628300001e+01 }, { "Ni_72", 7.194209268199999e+01 }, { "Ni_73", 7.294647000000001e+01 }, { "Ni_74", 7.394807000000000e+01 },
|
||||
{ "Ni_75", 7.495287000000000e+01 }, { "Ni_76", 7.595533000000000e+01 }, { "Ni_77", 7.696055000000000e+01 }, { "Ni_78", 7.796317999999999e+01 },
|
||||
{ "Cu_natural", 6.354600000000000e+01 }, { "Cu_52", 5.199718000000000e+01 }, { "Cu_53", 5.298555000000000e+01 }, { "Cu_54", 5.397671000000000e+01 },
|
||||
{ "Cu_55", 5.496605000000000e+01 }, { "Cu_56", 5.595856000000000e+01 }, { "Cu_57", 5.694921107800000e+01 }, { "Cu_58", 5.794453849900000e+01 },
|
||||
{ "Cu_59", 5.893949802800000e+01 }, { "Cu_60", 5.993736503000000e+01 }, { "Cu_61", 6.093345782100000e+01 }, { "Cu_62", 6.193258374500000e+01 },
|
||||
{ "Cu_63", 6.292959747400000e+01 }, { "Cu_64", 6.392976418300000e+01 }, { "Cu_65", 6.492778948500001e+01 }, { "Cu_66", 6.592886881299999e+01 },
|
||||
{ "Cu_67", 6.692773031400000e+01 }, { "Cu_68", 6.792961088900000e+01 }, { "Cu_69", 6.892942926900000e+01 }, { "Cu_70", 6.993239234300000e+01 },
|
||||
{ "Cu_71", 7.093267683300000e+01 }, { "Cu_72", 7.193582030700000e+01 }, { "Cu_73", 7.293667528200000e+01 }, { "Cu_74", 7.393987486200000e+01 },
|
||||
{ "Cu_75", 7.494190000000000e+01 }, { "Cu_76", 7.594527502600000e+01 }, { "Cu_77", 7.694785000000000e+01 }, { "Cu_78", 7.795196000000000e+01 },
|
||||
{ "Cu_79", 7.895456000000000e+01 }, { "Cu_80", 7.996087000000000e+01 }, { "Zn_natural", 6.538000000000000e+01 }, { "Zn_54", 5.399295000000000e+01 },
|
||||
{ "Zn_55", 5.498398000000000e+01 }, { "Zn_56", 5.597238000000000e+01 }, { "Zn_57", 5.696478800000000e+01 }, { "Zn_58", 5.795459155500000e+01 },
|
||||
{ "Zn_59", 5.894926376400000e+01 }, { "Zn_60", 5.994182703500000e+01 }, { "Zn_61", 6.093951063500000e+01 }, { "Zn_62", 6.193432976400000e+01 },
|
||||
{ "Zn_63", 6.293321156600000e+01 }, { "Zn_64", 6.392914222200000e+01 }, { "Zn_65", 6.492924098400000e+01 }, { "Zn_66", 6.592603341900001e+01 },
|
||||
{ "Zn_67", 6.692712734500000e+01 }, { "Zn_68", 6.792484415400000e+01 }, { "Zn_69", 6.892655028100000e+01 }, { "Zn_70", 6.992531927400000e+01 },
|
||||
{ "Zn_71", 7.092772159899999e+01 }, { "Zn_72", 7.192685795100000e+01 }, { "Zn_73", 7.292977910400000e+01 }, { "Zn_74", 7.392945860899999e+01 },
|
||||
{ "Zn_75", 7.493293674100001e+01 }, { "Zn_76", 7.593329357000000e+01 }, { "Zn_77", 7.693695896700000e+01 }, { "Zn_78", 7.793844021600000e+01 },
|
||||
{ "Zn_79", 7.894265200000000e+01 }, { "Zn_80", 7.994434234800001e+01 }, { "Zn_81", 8.095048000000000e+01 }, { "Zn_82", 8.195442000000000e+01 },
|
||||
{ "Zn_83", 8.296102999999999e+01 }, { "Ga_natural", 6.972000000000000e+01 }, { "Ga_56", 5.599491000000000e+01 }, { "Ga_57", 5.698293000000000e+01 },
|
||||
{ "Ga_58", 5.797425000000000e+01 }, { "Ga_59", 5.896337000000000e+01 }, { "Ga_60", 5.995706000000000e+01 }, { "Ga_61", 6.094944628700000e+01 },
|
||||
{ "Ga_62", 6.194417523800000e+01 }, { "Ga_63", 6.293929419600000e+01 }, { "Ga_64", 6.393683874700000e+01 }, { "Ga_65", 6.493273475399999e+01 },
|
||||
{ "Ga_66", 6.593158901000000e+01 }, { "Ga_67", 6.692820170300000e+01 }, { "Ga_68", 6.792798008400000e+01 }, { "Ga_69", 6.892557358700000e+01 },
|
||||
{ "Ga_70", 6.992602197200000e+01 }, { "Ga_71", 7.092470134900000e+01 }, { "Ga_72", 7.192636626800000e+01 }, { "Ga_73", 7.292517468200001e+01 },
|
||||
{ "Ga_74", 7.392694576200000e+01 }, { "Ga_75", 7.492650024600000e+01 }, { "Ga_76", 7.592882762600000e+01 }, { "Ga_77", 7.692915429999999e+01 },
|
||||
{ "Ga_78", 7.793160818000000e+01 }, { "Ga_79", 7.893289326000000e+01 }, { "Ga_80", 7.993651578100000e+01 }, { "Ga_81", 8.093775235500000e+01 },
|
||||
{ "Ga_82", 8.194298999999999e+01 }, { "Ga_83", 8.294698000000000e+01 }, { "Ga_84", 8.395265000000001e+01 }, { "Ga_85", 8.495699999999999e+01 },
|
||||
{ "Ga_86", 8.596312000000000e+01 }, { "Ge_natural", 7.259000000000000e+01 }, { "Ge_58", 5.799101000000000e+01 }, { "Ge_59", 5.898175000000000e+01 },
|
||||
{ "Ge_60", 5.997019000000000e+01 }, { "Ge_61", 6.096379000000000e+01 }, { "Ge_62", 6.195465000000000e+01 }, { "Ge_63", 6.294964000000000e+01 },
|
||||
{ "Ge_64", 6.394165300000000e+01 }, { "Ge_65", 6.493943640600000e+01 }, { "Ge_66", 6.593384345299999e+01 }, { "Ge_67", 6.693273407000000e+01 },
|
||||
{ "Ge_68", 6.792809423999999e+01 }, { "Ge_69", 6.892796453299999e+01 }, { "Ge_70", 6.992424738100000e+01 }, { "Ge_71", 7.092495095400000e+01 },
|
||||
{ "Ge_72", 7.192207581500000e+01 }, { "Ge_73", 7.292345894499999e+01 }, { "Ge_74", 7.392117776700000e+01 }, { "Ge_75", 7.492285894800000e+01 },
|
||||
{ "Ge_76", 7.592140255699999e+01 }, { "Ge_77", 7.692354859100000e+01 }, { "Ge_78", 7.792285273900001e+01 }, { "Ge_79", 7.892540099500000e+01 },
|
||||
{ "Ge_80", 7.992537239200000e+01 }, { "Ge_81", 8.092882046699999e+01 }, { "Ge_82", 8.192954972500000e+01 }, { "Ge_83", 8.293462000000000e+01 },
|
||||
{ "Ge_84", 8.393747000000000e+01 }, { "Ge_85", 8.494302999999999e+01 }, { "Ge_86", 8.594649000000000e+01 }, { "Ge_87", 8.695251000000000e+01 },
|
||||
{ "Ge_88", 8.795690999999999e+01 }, { "Ge_89", 8.896383000000000e+01 }, { "As_natural", 7.492160000000000e+01 }, { "As_60", 5.999313000000000e+01 },
|
||||
{ "As_61", 6.098062000000000e+01 }, { "As_62", 6.197320000000000e+01 }, { "As_63", 6.296369000000000e+01 }, { "As_64", 6.395757200000000e+01 },
|
||||
{ "As_65", 6.494956400000000e+01 }, { "As_66", 6.594471000000000e+01 }, { "As_67", 6.693918607099999e+01 }, { "As_68", 6.793676906899999e+01 },
|
||||
{ "As_69", 6.893227367500000e+01 }, { "As_70", 6.993092482599999e+01 }, { "As_71", 7.092711242800000e+01 }, { "As_72", 7.192675228300000e+01 },
|
||||
{ "As_73", 7.292382484399999e+01 }, { "As_74", 7.392392869200000e+01 }, { "As_75", 7.492159647800000e+01 }, { "As_76", 7.592239402100000e+01 },
|
||||
{ "As_77", 7.692064728600000e+01 }, { "As_78", 7.792182728100001e+01 }, { "As_79", 7.892094793400000e+01 }, { "As_80", 7.992253381600000e+01 },
|
||||
{ "As_81", 8.092213228700000e+01 }, { "As_82", 8.192450406700000e+01 }, { "As_83", 8.292498002400001e+01 }, { "As_84", 8.392905800000000e+01 },
|
||||
{ "As_85", 8.493201999999999e+01 }, { "As_86", 8.593650000000000e+01 }, { "As_87", 8.693989999999999e+01 }, { "As_88", 8.794494000000000e+01 },
|
||||
{ "As_89", 8.894938999999999e+01 }, { "As_90", 8.995550000000000e+01 }, { "As_91", 9.096043000000000e+01 }, { "As_92", 9.196680000000001e+01 },
|
||||
{ "Se_natural", 7.895999999999999e+01 }, { "Se_65", 6.496465999999999e+01 }, { "Se_66", 6.595520999999999e+01 }, { "Se_67", 6.695009000000000e+01 },
|
||||
{ "Se_68", 6.794179800000001e+01 }, { "Se_69", 6.893955781699999e+01 }, { "Se_70", 6.993339064400000e+01 }, { "Se_71", 7.093224182199999e+01 },
|
||||
{ "Se_72", 7.192711235199999e+01 }, { "Se_73", 7.292676534500001e+01 }, { "Se_74", 7.392247643600000e+01 }, { "Se_75", 7.492252336800000e+01 },
|
||||
{ "Se_76", 7.591921359700000e+01 }, { "Se_77", 7.691991403800000e+01 }, { "Se_78", 7.791730909000000e+01 }, { "Se_79", 7.891849909800000e+01 },
|
||||
{ "Se_80", 7.991652127099999e+01 }, { "Se_81", 8.091799247400000e+01 }, { "Se_82", 8.191669940100000e+01 }, { "Se_83", 8.291911847300000e+01 },
|
||||
{ "Se_84", 8.391846235400000e+01 }, { "Se_85", 8.492224505300000e+01 }, { "Se_86", 8.592427157900001e+01 }, { "Se_87", 8.692852135800000e+01 },
|
||||
{ "Se_88", 8.793142399800000e+01 }, { "Se_89", 8.893644999999999e+01 }, { "Se_90", 8.993996000000000e+01 }, { "Se_91", 9.094596000000000e+01 },
|
||||
{ "Se_92", 9.194992000000001e+01 }, { "Se_93", 9.295629000000000e+01 }, { "Se_94", 9.396048999999999e+01 }, { "Br_natural", 7.990400000000000e+01 },
|
||||
{ "Br_67", 6.696478999999999e+01 }, { "Br_68", 6.795851600000000e+01 }, { "Br_69", 6.895010600000001e+01 }, { "Br_70", 6.994479200000001e+01 },
|
||||
{ "Br_71", 7.093874000000000e+01 }, { "Br_72", 7.193664457200001e+01 }, { "Br_73", 7.293169152400000e+01 }, { "Br_74", 7.392989103399999e+01 },
|
||||
{ "Br_75", 7.492577620700000e+01 }, { "Br_76", 7.592454146900000e+01 }, { "Br_77", 7.692137908200000e+01 }, { "Br_78", 7.792114570600000e+01 },
|
||||
{ "Br_79", 7.891833708700000e+01 }, { "Br_80", 7.991852929600000e+01 }, { "Br_81", 8.091629056300000e+01 }, { "Br_82", 8.191680411900001e+01 },
|
||||
{ "Br_83", 8.291518042100000e+01 }, { "Br_84", 8.391647897400000e+01 }, { "Br_85", 8.491560840299999e+01 }, { "Br_86", 8.591879757700001e+01 },
|
||||
{ "Br_87", 8.692071132400000e+01 }, { "Br_88", 8.792406592600000e+01 }, { "Br_89", 8.892638533400000e+01 }, { "Br_90", 8.993062773699999e+01 },
|
||||
{ "Br_91", 9.093396809500000e+01 }, { "Br_92", 9.193925871400000e+01 }, { "Br_93", 9.294305000000000e+01 }, { "Br_94", 9.394868000000000e+01 },
|
||||
{ "Br_95", 9.495287000000000e+01 }, { "Br_96", 9.595853000000000e+01 }, { "Br_97", 9.696280000000000e+01 }, { "Kr_natural", 8.380000000000000e+01 },
|
||||
{ "Kr_69", 6.896518000000000e+01 }, { "Kr_70", 6.995525900000000e+01 }, { "Kr_71", 7.094962573799999e+01 }, { "Kr_72", 7.194209203800000e+01 },
|
||||
{ "Kr_73", 7.293928919500000e+01 }, { "Kr_74", 7.393308436900000e+01 }, { "Kr_75", 7.493094574600001e+01 }, { "Kr_76", 7.592591007800000e+01 },
|
||||
{ "Kr_77", 7.692467000000001e+01 }, { "Kr_78", 7.792036478300000e+01 }, { "Kr_79", 7.892008243100000e+01 }, { "Kr_80", 7.991637896500001e+01 },
|
||||
{ "Kr_81", 8.091659201500001e+01 }, { "Kr_82", 8.191348360000001e+01 }, { "Kr_83", 8.291413609900000e+01 }, { "Kr_84", 8.391150668700000e+01 },
|
||||
{ "Kr_85", 8.491252733100001e+01 }, { "Kr_86", 8.591061072900000e+01 }, { "Kr_87", 8.691335486200001e+01 }, { "Kr_88", 8.791444696900000e+01 },
|
||||
{ "Kr_89", 8.891763058100000e+01 }, { "Kr_90", 8.991951655500000e+01 }, { "Kr_91", 9.092344521500000e+01 }, { "Kr_92", 9.192615621000000e+01 },
|
||||
{ "Kr_93", 9.293127435700001e+01 }, { "Kr_94", 9.393436000000000e+01 }, { "Kr_95", 9.493984000000000e+01 }, { "Kr_96", 9.594307000000001e+01 },
|
||||
{ "Kr_97", 9.694856000000000e+01 }, { "Kr_98", 9.795191000000000e+01 }, { "Kr_99", 9.895760000000000e+01 }, { "Kr_100", 9.996114000000000e+01 },
|
||||
{ "Rb_natural", 8.546780000000000e+01 }, { "Rb_71", 7.096532000000001e+01 }, { "Rb_72", 7.195908000000000e+01 }, { "Rb_73", 7.295056099999999e+01 },
|
||||
{ "Rb_74", 7.394426475100001e+01 }, { "Rb_75", 7.493857000000000e+01 }, { "Rb_76", 7.593507222600000e+01 }, { "Rb_77", 7.693040800000000e+01 },
|
||||
{ "Rb_78", 7.792814100000000e+01 }, { "Rb_79", 7.892398946000000e+01 }, { "Rb_80", 7.992251924999999e+01 }, { "Rb_81", 8.091899591300000e+01 },
|
||||
{ "Rb_82", 8.191820859800001e+01 }, { "Rb_83", 8.291510970100001e+01 }, { "Rb_84", 8.391438482100000e+01 }, { "Rb_85", 8.491178973700001e+01 },
|
||||
{ "Rb_86", 8.591116741899999e+01 }, { "Rb_87", 8.690918052600000e+01 }, { "Rb_88", 8.791131558799999e+01 }, { "Rb_89", 8.891227801600000e+01 },
|
||||
{ "Rb_90", 8.991480169400000e+01 }, { "Rb_91", 9.091653695799999e+01 }, { "Rb_92", 9.191972890000000e+01 }, { "Rb_93", 9.292204187599999e+01 },
|
||||
{ "Rb_94", 9.392640494600001e+01 }, { "Rb_95", 9.492930288900000e+01 }, { "Rb_96", 9.593427263700001e+01 }, { "Rb_97", 9.693735191600000e+01 },
|
||||
{ "Rb_98", 9.794179066800000e+01 }, { "Rb_99", 9.894537928299999e+01 }, { "Rb_100", 9.994987000000000e+01 }, { "Rb_101", 1.009531964450000e+02 },
|
||||
{ "Rb_102", 1.019588700000000e+02 }, { "Sr_natural", 8.762000000000000e+01 }, { "Sr_73", 7.296597000000000e+01 }, { "Sr_74", 7.395631000000000e+01 },
|
||||
{ "Sr_75", 7.494994956799999e+01 }, { "Sr_76", 7.594176678200000e+01 }, { "Sr_77", 7.693794478200000e+01 }, { "Sr_78", 7.793218000000000e+01 },
|
||||
{ "Sr_79", 7.892970800000001e+01 }, { "Sr_80", 7.992452101300000e+01 }, { "Sr_81", 8.092321184600000e+01 }, { "Sr_82", 8.191840163900000e+01 },
|
||||
{ "Sr_83", 8.291755670100000e+01 }, { "Sr_84", 8.391342527499999e+01 }, { "Sr_85", 8.491293280300000e+01 }, { "Sr_86", 8.590926020400001e+01 },
|
||||
{ "Sr_87", 8.690887712400000e+01 }, { "Sr_88", 8.790561212400000e+01 }, { "Sr_89", 8.890745067500001e+01 }, { "Sr_90", 8.990773788800000e+01 },
|
||||
{ "Sr_91", 9.091020309500000e+01 }, { "Sr_92", 9.191103785800000e+01 }, { "Sr_93", 9.291402563400000e+01 }, { "Sr_94", 9.391536131200000e+01 },
|
||||
{ "Sr_95", 9.491935876600000e+01 }, { "Sr_96", 9.592169680200000e+01 }, { "Sr_97", 9.692615292300000e+01 }, { "Sr_98", 9.792845293400001e+01 },
|
||||
{ "Sr_99", 9.893324092600000e+01 }, { "Sr_100", 9.993535191100000e+01 }, { "Sr_101", 1.009405178880000e+02 }, { "Sr_102", 1.019430189870000e+02 },
|
||||
{ "Sr_103", 1.029489500000000e+02 }, { "Sr_104", 1.039523300000000e+02 }, { "Sr_105", 1.049585800000000e+02 }, { "Y_natural", 8.890590000000000e+01 },
|
||||
{ "Y_76", 7.595845000000000e+01 }, { "Y_77", 7.694964500000000e+01 }, { "Y_78", 7.794361000000001e+01 }, { "Y_79", 7.893735163400000e+01 },
|
||||
{ "Y_80", 7.993428000000000e+01 }, { "Y_81", 8.092912746800000e+01 }, { "Y_82", 8.192679245100000e+01 }, { "Y_83", 8.292235424300000e+01 },
|
||||
{ "Y_84", 8.392038826400000e+01 }, { "Y_85", 8.491643303900000e+01 }, { "Y_86", 8.591488557600000e+01 }, { "Y_87", 8.691087573000000e+01 },
|
||||
{ "Y_88", 8.790950114600000e+01 }, { "Y_89", 8.890584829500000e+01 }, { "Y_90", 8.990715188599999e+01 }, { "Y_91", 9.090730479100000e+01 },
|
||||
{ "Y_92", 9.190894914300000e+01 }, { "Y_93", 9.290958271300001e+01 }, { "Y_94", 9.391159524500000e+01 }, { "Y_95", 9.491282062099999e+01 },
|
||||
{ "Y_96", 9.591589134300000e+01 }, { "Y_97", 9.691813399500001e+01 }, { "Y_98", 9.792220302000000e+01 }, { "Y_99", 9.892463620400000e+01 },
|
||||
{ "Y_100", 9.992775658600000e+01 }, { "Y_101", 1.009303138500000e+02 }, { "Y_102", 1.019335556950000e+02 }, { "Y_103", 1.029367300000000e+02 },
|
||||
{ "Y_104", 1.039410500000000e+02 }, { "Y_105", 1.049448700000000e+02 }, { "Y_106", 1.059497900000000e+02 }, { "Y_107", 1.069541400000000e+02 },
|
||||
{ "Y_108", 1.079594800000000e+02 }, { "Zr_natural", 9.122000000000000e+01 }, { "Zr_78", 7.795523000000000e+01 }, { "Zr_79", 7.894916000000001e+01 },
|
||||
{ "Zr_80", 7.994040000000000e+01 }, { "Zr_81", 8.093721002600000e+01 }, { "Zr_82", 8.193108700000001e+01 }, { "Zr_83", 8.292865380100000e+01 },
|
||||
{ "Zr_84", 8.392325000000000e+01 }, { "Zr_85", 8.492147118200000e+01 }, { "Zr_86", 8.591647359100000e+01 }, { "Zr_87", 8.691481625199999e+01 },
|
||||
{ "Zr_88", 8.791022690400000e+01 }, { "Zr_89", 8.890888950000000e+01 }, { "Zr_90", 8.990470441600000e+01 }, { "Zr_91", 9.090564576700000e+01 },
|
||||
{ "Zr_92", 9.190504084700000e+01 }, { "Zr_93", 9.290647600600001e+01 }, { "Zr_94", 9.390631519199999e+01 }, { "Zr_95", 9.490804260000000e+01 },
|
||||
{ "Zr_96", 9.590827338600000e+01 }, { "Zr_97", 9.691095310900000e+01 }, { "Zr_98", 9.791273489200000e+01 }, { "Zr_99", 9.891651210600000e+01 },
|
||||
{ "Zr_100", 9.991776188900000e+01 }, { "Zr_101", 1.009211404150000e+02 }, { "Zr_102", 1.019229812850000e+02 }, { "Zr_103", 1.029265996060000e+02 },
|
||||
{ "Zr_104", 1.039287800000000e+02 }, { "Zr_105", 1.049330500000000e+02 }, { "Zr_106", 1.059359100000000e+02 }, { "Zr_107", 1.069407500000000e+02 },
|
||||
{ "Zr_108", 1.079439600000000e+02 }, { "Zr_109", 1.089492400000000e+02 }, { "Zr_110", 1.099528700000000e+02 }, { "Nb_natural", 9.290640000000000e+01 },
|
||||
{ "Nb_81", 8.094902999999999e+01 }, { "Nb_82", 8.194313000000000e+01 }, { "Nb_83", 8.293670538200000e+01 }, { "Nb_84", 8.393357000000000e+01 },
|
||||
{ "Nb_85", 8.492791244700000e+01 }, { "Nb_86", 8.592503832600001e+01 }, { "Nb_87", 8.692036110799999e+01 }, { "Nb_88", 8.791833216300000e+01 },
|
||||
{ "Nb_89", 8.891341824500000e+01 }, { "Nb_90", 8.991126484500001e+01 }, { "Nb_91", 9.090699624299999e+01 }, { "Nb_92", 9.190719388799999e+01 },
|
||||
{ "Nb_93", 9.290637805800000e+01 }, { "Nb_94", 9.390728388799999e+01 }, { "Nb_95", 9.490683579200000e+01 }, { "Nb_96", 9.590810064700000e+01 },
|
||||
{ "Nb_97", 9.690809855600000e+01 }, { "Nb_98", 9.791032841200000e+01 }, { "Nb_99", 9.891161837500000e+01 }, { "Nb_100", 9.991418161900000e+01 },
|
||||
{ "Nb_101", 1.009152520250000e+02 }, { "Nb_102", 1.019180376140000e+02 }, { "Nb_103", 1.029191438420000e+02 }, { "Nb_104", 1.039224647010000e+02 },
|
||||
{ "Nb_105", 1.049239365450000e+02 }, { "Nb_106", 1.059279700000000e+02 }, { "Nb_107", 1.069303100000000e+02 }, { "Nb_108", 1.079348400000000e+02 },
|
||||
{ "Nb_109", 1.089376300000000e+02 }, { "Nb_110", 1.099424400000000e+02 }, { "Nb_111", 1.109456500000000e+02 }, { "Nb_112", 1.119508300000000e+02 },
|
||||
{ "Nb_113", 1.129547000000000e+02 }, { "Mo_natural", 9.594000000000000e+01 }, { "Mo_83", 8.294874000000000e+01 }, { "Mo_84", 8.394009000000000e+01 },
|
||||
{ "Mo_85", 8.493655000000000e+01 }, { "Mo_86", 8.593069590400000e+01 }, { "Mo_87", 8.692732650200000e+01 }, { "Mo_88", 8.792195324100000e+01 },
|
||||
{ "Mo_89", 8.891948000900000e+01 }, { "Mo_90", 8.991393689600000e+01 }, { "Mo_91", 9.091175019400001e+01 }, { "Mo_92", 9.190681099100000e+01 },
|
||||
{ "Mo_93", 9.290681261000000e+01 }, { "Mo_94", 9.390508826900000e+01 }, { "Mo_95", 9.490584212900001e+01 }, { "Mo_96", 9.590467947700000e+01 },
|
||||
{ "Mo_97", 9.690602146499999e+01 }, { "Mo_98", 9.790540816900000e+01 }, { "Mo_99", 9.890771187000000e+01 }, { "Mo_100", 9.990747733600000e+01 },
|
||||
{ "Mo_101", 1.009103470010000e+02 }, { "Mo_102", 1.019102973600000e+02 }, { "Mo_103", 1.029132071420000e+02 }, { "Mo_104", 1.039137636250000e+02 },
|
||||
{ "Mo_105", 1.049169746100000e+02 }, { "Mo_106", 1.059181368020000e+02 }, { "Mo_107", 1.069216926040000e+02 }, { "Mo_108", 1.079234530000000e+02 },
|
||||
{ "Mo_109", 1.089278100000000e+02 }, { "Mo_110", 1.099297300000000e+02 }, { "Mo_111", 1.109344100000000e+02 }, { "Mo_112", 1.119368400000000e+02 },
|
||||
{ "Mo_113", 1.129418800000000e+02 }, { "Mo_114", 1.139449200000000e+02 }, { "Mo_115", 1.149502900000000e+02 }, { "Tc_natural", 9.800000000000000e+01 },
|
||||
{ "Tc_85", 8.494883000000000e+01 }, { "Tc_86", 8.594288000000000e+01 }, { "Tc_87", 8.693653000000000e+01 }, { "Tc_88", 8.793267800000000e+01 },
|
||||
{ "Tc_89", 8.892716700000000e+01 }, { "Tc_90", 8.992355656399999e+01 }, { "Tc_91", 9.091842763900000e+01 }, { "Tc_92", 9.191526016600000e+01 },
|
||||
{ "Tc_93", 9.291024898400001e+01 }, { "Tc_94", 9.390965700200000e+01 }, { "Tc_95", 9.490765708399999e+01 }, { "Tc_96", 9.590787138300000e+01 },
|
||||
{ "Tc_97", 9.690636535800000e+01 }, { "Tc_98", 9.790721596600000e+01 }, { "Tc_99", 9.890625474700001e+01 }, { "Tc_100", 9.990765777999999e+01 },
|
||||
{ "Tc_101", 1.009073146590000e+02 }, { "Tc_102", 1.019092150190000e+02 }, { "Tc_103", 1.029091813510000e+02 }, { "Tc_104", 1.039114474540000e+02 },
|
||||
{ "Tc_105", 1.049116605660000e+02 }, { "Tc_106", 1.059143579270000e+02 }, { "Tc_107", 1.069150795720000e+02 }, { "Tc_108", 1.079184612260000e+02 },
|
||||
{ "Tc_109", 1.089199826650000e+02 }, { "Tc_110", 1.099238204830000e+02 }, { "Tc_111", 1.109256928300000e+02 }, { "Tc_112", 1.119291464930000e+02 },
|
||||
{ "Tc_113", 1.129315900000000e+02 }, { "Tc_114", 1.139358800000000e+02 }, { "Tc_115", 1.149386900000000e+02 }, { "Tc_116", 1.159433700000000e+02 },
|
||||
{ "Tc_117", 1.169464800000000e+02 }, { "Tc_118", 1.179514800000000e+02 }, { "Ru_natural", 1.010700000000000e+02 }, { "Ru_87", 8.694918000000000e+01 },
|
||||
{ "Ru_88", 8.794025999999999e+01 }, { "Ru_89", 8.893611000000000e+01 }, { "Ru_90", 8.992989000000000e+01 }, { "Ru_91", 9.092629200000000e+01 },
|
||||
{ "Ru_92", 9.192012000000000e+01 }, { "Ru_93", 9.291705203399999e+01 }, { "Ru_94", 9.391135971100000e+01 }, { "Ru_95", 9.491041292900000e+01 },
|
||||
{ "Ru_96", 9.590759783500000e+01 }, { "Ru_97", 9.690755470000001e+01 }, { "Ru_98", 9.790528713200000e+01 }, { "Ru_99", 9.890593930199999e+01 },
|
||||
{ "Ru_100", 9.990421947599999e+01 }, { "Ru_101", 1.009055820870000e+02 }, { "Ru_102", 1.019043493120000e+02 }, { "Ru_103", 1.029063238470000e+02 },
|
||||
{ "Ru_104", 1.039054327010000e+02 }, { "Ru_105", 1.049077528660000e+02 }, { "Ru_106", 1.059073294330000e+02 }, { "Ru_107", 1.069099050890000e+02 },
|
||||
{ "Ru_108", 1.079101734650000e+02 }, { "Ru_109", 1.089132032330000e+02 }, { "Ru_110", 1.099141360410000e+02 }, { "Ru_111", 1.109176960000000e+02 },
|
||||
{ "Ru_112", 1.119189650000000e+02 }, { "Ru_113", 1.129224871940000e+02 }, { "Ru_114", 1.139242810000000e+02 }, { "Ru_115", 1.149286861730000e+02 },
|
||||
{ "Ru_116", 1.159308100000000e+02 }, { "Ru_117", 1.169355800000000e+02 }, { "Ru_118", 1.179378200000000e+02 }, { "Ru_119", 1.189428400000000e+02 },
|
||||
{ "Ru_120", 1.199453100000000e+02 }, { "Rh_natural", 1.029055000000000e+02 }, { "Rh_89", 8.894883700000000e+01 }, { "Rh_90", 8.994287000000000e+01 },
|
||||
{ "Rh_91", 9.093655000000000e+01 }, { "Rh_92", 9.193198000000000e+01 }, { "Rh_93", 9.292574000000000e+01 }, { "Rh_94", 9.392169800000001e+01 },
|
||||
{ "Rh_95", 9.491589874000000e+01 }, { "Rh_96", 9.591446063100000e+01 }, { "Rh_97", 9.691133679700000e+01 }, { "Rh_98", 9.791070815800001e+01 },
|
||||
{ "Rh_99", 9.890813210400000e+01 }, { "Rh_100", 9.990812155000000e+01 }, { "Rh_101", 1.009061636250000e+02 }, { "Rh_102", 1.019068431960000e+02 },
|
||||
{ "Rh_103", 1.029055042920000e+02 }, { "Rh_104", 1.039066555180000e+02 }, { "Rh_105", 1.049056938210000e+02 }, { "Rh_106", 1.059072871350000e+02 },
|
||||
{ "Rh_107", 1.069067484230000e+02 }, { "Rh_108", 1.079087280180000e+02 }, { "Rh_109", 1.089087372890000e+02 }, { "Rh_110", 1.099111364110000e+02 },
|
||||
{ "Rh_111", 1.109115859130000e+02 }, { "Rh_112", 1.119143941590000e+02 }, { "Rh_113", 1.129155306270000e+02 }, { "Rh_114", 1.139188060000000e+02 },
|
||||
{ "Rh_115", 1.149203340000000e+02 }, { "Rh_116", 1.159240620000000e+02 }, { "Rh_117", 1.169259800000000e+02 }, { "Rh_118", 1.179300700000000e+02 },
|
||||
{ "Rh_119", 1.189321100000000e+02 }, { "Rh_120", 1.199364100000000e+02 }, { "Rh_121", 1.209387200000000e+02 }, { "Rh_122", 1.219432100000000e+02 },
|
||||
{ "Pd_natural", 1.064000000000000e+02 }, { "Pd_91", 9.094911000000000e+01 }, { "Pd_92", 9.194042000000000e+01 }, { "Pd_93", 9.293591000000001e+01 },
|
||||
{ "Pd_94", 9.392877000000000e+01 }, { "Pd_95", 9.492469000000000e+01 }, { "Pd_96", 9.591816435900000e+01 }, { "Pd_97", 9.691647907300000e+01 },
|
||||
{ "Pd_98", 9.791272090200000e+01 }, { "Pd_99", 9.891176783300000e+01 }, { "Pd_100", 9.990850588600000e+01 }, { "Pd_101", 1.009082892420000e+02 },
|
||||
{ "Pd_102", 1.019056085440000e+02 }, { "Pd_103", 1.029060873070000e+02 }, { "Pd_104", 1.039040358340000e+02 }, { "Pd_105", 1.049050849200000e+02 },
|
||||
{ "Pd_106", 1.059034857150000e+02 }, { "Pd_107", 1.069051334810000e+02 }, { "Pd_108", 1.079038917010000e+02 }, { "Pd_109", 1.089059504510000e+02 },
|
||||
{ "Pd_110", 1.099051532540000e+02 }, { "Pd_111", 1.109076707340000e+02 }, { "Pd_112", 1.119073140580000e+02 }, { "Pd_113", 1.129101529080000e+02 },
|
||||
{ "Pd_114", 1.139103626380000e+02 }, { "Pd_115", 1.149136838240000e+02 }, { "Pd_116", 1.159141586620000e+02 }, { "Pd_117", 1.169178413380000e+02 },
|
||||
{ "Pd_118", 1.179189843000000e+02 }, { "Pd_119", 1.189231100000000e+02 }, { "Pd_120", 1.199246918780000e+02 }, { "Pd_121", 1.209288700000000e+02 },
|
||||
{ "Pd_122", 1.219305500000000e+02 }, { "Pd_123", 1.229349300000000e+02 }, { "Pd_124", 1.239368800000000e+02 }, { "Ag_natural", 1.078680000000000e+02 },
|
||||
{ "Ag_93", 9.294978000000000e+01 }, { "Ag_94", 9.394278000000000e+01 }, { "Ag_95", 9.493548000000000e+01 }, { "Ag_96", 9.593068000000000e+01 },
|
||||
{ "Ag_97", 9.692397241200000e+01 }, { "Ag_98", 9.792156620100000e+01 }, { "Ag_99", 9.891759717799999e+01 }, { "Ag_100", 9.991610425499999e+01 },
|
||||
{ "Ag_101", 1.009128022330000e+02 }, { "Ag_102", 1.019116850000000e+02 }, { "Ag_103", 1.029089727200000e+02 }, { "Ag_104", 1.039086291570000e+02 },
|
||||
{ "Ag_105", 1.049065286610000e+02 }, { "Ag_106", 1.059066689210000e+02 }, { "Ag_107", 1.069050968200000e+02 }, { "Ag_108", 1.079059555560000e+02 },
|
||||
{ "Ag_109", 1.089047522920000e+02 }, { "Ag_110", 1.099061072310000e+02 }, { "Ag_111", 1.109052911570000e+02 }, { "Ag_112", 1.119070048140000e+02 },
|
||||
{ "Ag_113", 1.129065665790000e+02 }, { "Ag_114", 1.139088037040000e+02 }, { "Ag_115", 1.149087626980000e+02 }, { "Ag_116", 1.159113599330000e+02 },
|
||||
{ "Ag_117", 1.169116845620000e+02 }, { "Ag_118", 1.179145827680000e+02 }, { "Ag_119", 1.189156650590000e+02 }, { "Ag_120", 1.199187873840000e+02 },
|
||||
{ "Ag_121", 1.209198480460000e+02 }, { "Ag_122", 1.219235300000000e+02 }, { "Ag_123", 1.229249000000000e+02 }, { "Ag_124", 1.239286400000000e+02 },
|
||||
{ "Ag_125", 1.249304300000000e+02 }, { "Ag_126", 1.259345000000000e+02 }, { "Ag_127", 1.269367700000000e+02 }, { "Ag_128", 1.279411700000000e+02 },
|
||||
{ "Ag_129", 1.289436900000000e+02 }, { "Ag_130", 1.299504480000000e+02 }, { "Cd_natural", 1.124100000000000e+02 }, { "Cd_95", 9.494987000000000e+01 },
|
||||
{ "Cd_96", 9.593977000000000e+01 }, { "Cd_97", 9.693494000000000e+01 }, { "Cd_98", 9.792739554600000e+01 }, { "Cd_99", 9.892501000000000e+01 },
|
||||
{ "Cd_100", 9.992028952500000e+01 }, { "Cd_101", 1.009186815380000e+02 }, { "Cd_102", 1.019144622580000e+02 }, { "Cd_103", 1.029134192460000e+02 },
|
||||
{ "Cd_104", 1.039098494750000e+02 }, { "Cd_105", 1.049094679050000e+02 }, { "Cd_106", 1.059064594100000e+02 }, { "Cd_107", 1.069066179280000e+02 },
|
||||
{ "Cd_108", 1.079041836830000e+02 }, { "Cd_109", 1.089049822930000e+02 }, { "Cd_110", 1.099030020700000e+02 }, { "Cd_111", 1.109041781070000e+02 },
|
||||
{ "Cd_112", 1.119027578090000e+02 }, { "Cd_113", 1.129044016620000e+02 }, { "Cd_114", 1.139033585400000e+02 }, { "Cd_115", 1.149054309690000e+02 },
|
||||
{ "Cd_116", 1.159047558090000e+02 }, { "Cd_117", 1.169072186180000e+02 }, { "Cd_118", 1.179069145300000e+02 }, { "Cd_119", 1.189099215970000e+02 },
|
||||
{ "Cd_120", 1.199098501290000e+02 }, { "Cd_121", 1.209129773630000e+02 }, { "Cd_122", 1.219133324320000e+02 }, { "Cd_123", 1.229170029990000e+02 },
|
||||
{ "Cd_124", 1.239176476160000e+02 }, { "Cd_125", 1.249212463700000e+02 }, { "Cd_126", 1.259223533210000e+02 }, { "Cd_127", 1.269264438640000e+02 },
|
||||
{ "Cd_128", 1.279277622850000e+02 }, { "Cd_129", 1.289321500000000e+02 }, { "Cd_130", 1.299339019370000e+02 }, { "Cd_131", 1.309406700000000e+02 },
|
||||
{ "Cd_132", 1.319455500000000e+02 }, { "In_natural", 1.148200000000000e+02 }, { "In_97", 9.694954000000000e+01 }, { "In_98", 9.794213999999999e+01 },
|
||||
{ "In_99", 9.893422000000000e+01 }, { "In_100", 9.993111085100000e+01 }, { "In_101", 1.009263400000000e+02 }, { "In_102", 1.019240902380000e+02 },
|
||||
{ "In_103", 1.029199141880000e+02 }, { "In_104", 1.039182961710000e+02 }, { "In_105", 1.049146735400000e+02 }, { "In_106", 1.059134654110000e+02 },
|
||||
{ "In_107", 1.069102951000000e+02 }, { "In_108", 1.079096981800000e+02 }, { "In_109", 1.089071505070000e+02 }, { "In_110", 1.099071652740000e+02 },
|
||||
{ "In_111", 1.109051032780000e+02 }, { "In_112", 1.119055323310000e+02 }, { "In_113", 1.129040577610000e+02 }, { "In_114", 1.139049138760000e+02 },
|
||||
{ "In_115", 1.149038784840000e+02 }, { "In_116", 1.159052597030000e+02 }, { "In_117", 1.169045135640000e+02 }, { "In_118", 1.179063543670000e+02 },
|
||||
{ "In_119", 1.189058453500000e+02 }, { "In_120", 1.199079596080000e+02 }, { "In_121", 1.209078458220000e+02 }, { "In_122", 1.219102760100000e+02 },
|
||||
{ "In_123", 1.229104382760000e+02 }, { "In_124", 1.239131752310000e+02 }, { "In_125", 1.249136005880000e+02 }, { "In_126", 1.259164638570000e+02 },
|
||||
{ "In_127", 1.269173530910000e+02 }, { "In_128", 1.279201723280000e+02 }, { "In_129", 1.289216969800000e+02 }, { "In_130", 1.299249700490000e+02 },
|
||||
{ "In_131", 1.309268517670000e+02 }, { "In_132", 1.319329902600000e+02 }, { "In_133", 1.329378100000000e+02 }, { "In_134", 1.339441500000000e+02 },
|
||||
{ "In_135", 1.349493300000000e+02 }, { "Sn_natural", 1.186900000000000e+02 }, { "Sn_99", 9.894933000000000e+01 }, { "Sn_100", 9.993904434300001e+01 },
|
||||
{ "Sn_101", 1.009360600000000e+02 }, { "Sn_102", 1.019302953240000e+02 }, { "Sn_103", 1.029281000000000e+02 }, { "Sn_104", 1.039231432230000e+02 },
|
||||
{ "Sn_105", 1.049213494370000e+02 }, { "Sn_106", 1.059168806200000e+02 }, { "Sn_107", 1.069156443290000e+02 }, { "Sn_108", 1.079119253780000e+02 },
|
||||
{ "Sn_109", 1.089112832140000e+02 }, { "Sn_110", 1.099078427910000e+02 }, { "Sn_111", 1.109077344600000e+02 }, { "Sn_112", 1.119048182070000e+02 },
|
||||
{ "Sn_113", 1.129051705770000e+02 }, { "Sn_114", 1.139027788690000e+02 }, { "Sn_115", 1.149033423970000e+02 }, { "Sn_116", 1.159017405300000e+02 },
|
||||
{ "Sn_117", 1.169029516560000e+02 }, { "Sn_118", 1.179016031670000e+02 }, { "Sn_119", 1.189033076300000e+02 }, { "Sn_120", 1.199021946760000e+02 },
|
||||
{ "Sn_121", 1.209042354800000e+02 }, { "Sn_122", 1.219034390460000e+02 }, { "Sn_123", 1.229057208380000e+02 }, { "Sn_124", 1.239052739460000e+02 },
|
||||
{ "Sn_125", 1.249077841250000e+02 }, { "Sn_126", 1.259076532800000e+02 }, { "Sn_127", 1.269103600240000e+02 }, { "Sn_128", 1.279105366240000e+02 },
|
||||
{ "Sn_129", 1.289134790000000e+02 }, { "Sn_130", 1.299139672950000e+02 }, { "Sn_131", 1.309169997690000e+02 }, { "Sn_132", 1.319178157130000e+02 },
|
||||
{ "Sn_133", 1.329238292490000e+02 }, { "Sn_134", 1.339282917650000e+02 }, { "Sn_135", 1.349347300000000e+02 }, { "Sn_136", 1.359393400000000e+02 },
|
||||
{ "Sn_137", 1.369459900000000e+02 }, { "Sb_natural", 1.217500000000000e+02 }, { "Sb_103", 1.029396900000000e+02 }, { "Sb_104", 1.039364720000000e+02 },
|
||||
{ "Sb_105", 1.049314863480000e+02 }, { "Sb_106", 1.059287910000000e+02 }, { "Sb_107", 1.069241500000000e+02 }, { "Sb_108", 1.079221600000000e+02 },
|
||||
{ "Sb_109", 1.089181324260000e+02 }, { "Sb_110", 1.099167530000000e+02 }, { "Sb_111", 1.109131630000000e+02 }, { "Sb_112", 1.119123980090000e+02 },
|
||||
{ "Sb_113", 1.129093716720000e+02 }, { "Sb_114", 1.139092690000000e+02 }, { "Sb_115", 1.149065980000000e+02 }, { "Sb_116", 1.159067936290000e+02 },
|
||||
{ "Sb_117", 1.169048359410000e+02 }, { "Sb_118", 1.179055287310000e+02 }, { "Sb_119", 1.189039420090000e+02 }, { "Sb_120", 1.199050724270000e+02 },
|
||||
{ "Sb_121", 1.209038156860000e+02 }, { "Sb_122", 1.219051736510000e+02 }, { "Sb_123", 1.229042139700000e+02 }, { "Sb_124", 1.239059357430000e+02 },
|
||||
{ "Sb_125", 1.249052538180000e+02 }, { "Sb_126", 1.259072474800000e+02 }, { "Sb_127", 1.269069236090000e+02 }, { "Sb_128", 1.279091690010000e+02 },
|
||||
{ "Sb_129", 1.289091484420000e+02 }, { "Sb_130", 1.299116563240000e+02 }, { "Sb_131", 1.309119822750000e+02 }, { "Sb_132", 1.319144668960000e+02 },
|
||||
{ "Sb_133", 1.329152516300000e+02 }, { "Sb_134", 1.339203797440000e+02 }, { "Sb_135", 1.349251657710000e+02 }, { "Sb_136", 1.359303500000000e+02 },
|
||||
{ "Sb_137", 1.369353100000000e+02 }, { "Sb_138", 1.379407900000000e+02 }, { "Sb_139", 1.389459800000000e+02 }, { "Te_natural", 1.276000000000000e+02 },
|
||||
{ "Te_105", 1.049436400000000e+02 }, { "Te_106", 1.059375042370000e+02 }, { "Te_107", 1.069350060000000e+02 }, { "Te_108", 1.079294445970000e+02 },
|
||||
{ "Te_109", 1.089274155150000e+02 }, { "Te_110", 1.099224073160000e+02 }, { "Te_111", 1.109211106920000e+02 }, { "Te_112", 1.119170136720000e+02 },
|
||||
{ "Te_113", 1.129158910000000e+02 }, { "Te_114", 1.139120890000000e+02 }, { "Te_115", 1.149119020000000e+02 }, { "Te_116", 1.159084600000000e+02 },
|
||||
{ "Te_117", 1.169086447190000e+02 }, { "Te_118", 1.179058275810000e+02 }, { "Te_119", 1.189064036450000e+02 }, { "Te_120", 1.199040202220000e+02 },
|
||||
{ "Te_121", 1.209049364240000e+02 }, { "Te_122", 1.219030438980000e+02 }, { "Te_123", 1.229042700290000e+02 }, { "Te_124", 1.239028178960000e+02 },
|
||||
{ "Te_125", 1.249044307310000e+02 }, { "Te_126", 1.259033116960000e+02 }, { "Te_127", 1.269052263360000e+02 }, { "Te_128", 1.279044630560000e+02 },
|
||||
{ "Te_129", 1.289065982380000e+02 }, { "Te_130", 1.299062243990000e+02 }, { "Te_131", 1.309085238640000e+02 }, { "Te_132", 1.319085531600000e+02 },
|
||||
{ "Te_133", 1.329109553060000e+02 }, { "Te_134", 1.339113687370000e+02 }, { "Te_135", 1.349164485920000e+02 }, { "Te_136", 1.359201012460000e+02 },
|
||||
{ "Te_137", 1.369253229540000e+02 }, { "Te_138", 1.379292200000000e+02 }, { "Te_139", 1.389347300000000e+02 }, { "Te_140", 1.399388500000000e+02 },
|
||||
{ "Te_141", 1.409446500000000e+02 }, { "Te_142", 1.419490800000000e+02 }, { "I_natural", 1.269045000000000e+02 }, { "I_108", 1.079434750000000e+02 },
|
||||
{ "I_109", 1.089381494170000e+02 }, { "I_110", 1.099352420000000e+02 }, { "I_111", 1.109302760000000e+02 }, { "I_112", 1.119279700000000e+02 },
|
||||
{ "I_113", 1.129236405830000e+02 }, { "I_114", 1.139218500000000e+02 }, { "I_115", 1.149180480000000e+02 }, { "I_116", 1.159168086330000e+02 },
|
||||
{ "I_117", 1.169136500000000e+02 }, { "I_118", 1.179130740000000e+02 }, { "I_119", 1.189100740000000e+02 }, { "I_120", 1.199100481730000e+02 },
|
||||
{ "I_121", 1.209073668110000e+02 }, { "I_122", 1.219075892840000e+02 }, { "I_123", 1.229055889650000e+02 }, { "I_124", 1.239062098520000e+02 },
|
||||
{ "I_125", 1.249046301640000e+02 }, { "I_126", 1.259056241530000e+02 }, { "I_127", 1.269044726810000e+02 }, { "I_128", 1.279058094430000e+02 },
|
||||
{ "I_129", 1.289049877220000e+02 }, { "I_130", 1.299066742470000e+02 }, { "I_131", 1.309061246090000e+02 }, { "I_132", 1.319079973810000e+02 },
|
||||
{ "I_133", 1.329077969390000e+02 }, { "I_134", 1.339097444650000e+02 }, { "I_135", 1.349100481210000e+02 }, { "I_136", 1.359146539930000e+02 },
|
||||
{ "I_137", 1.369178708400000e+02 }, { "I_138", 1.379223495910000e+02 }, { "I_139", 1.389260994780000e+02 }, { "I_140", 1.399310000000000e+02 },
|
||||
{ "I_141", 1.409350300000000e+02 }, { "I_142", 1.419401800000000e+02 }, { "I_143", 1.429445600000000e+02 }, { "I_144", 1.439499900000000e+02 },
|
||||
{ "Xe_natural", 1.313000000000000e+02 }, { "Xe_110", 1.099442780680000e+02 }, { "Xe_111", 1.109416020000000e+02 }, { "Xe_112", 1.119356231120000e+02 },
|
||||
{ "Xe_113", 1.129333411740000e+02 }, { "Xe_114", 1.139279803060000e+02 }, { "Xe_115", 1.149262939200000e+02 }, { "Xe_116", 1.159215810870000e+02 },
|
||||
{ "Xe_117", 1.169203587350000e+02 }, { "Xe_118", 1.179161786550000e+02 }, { "Xe_119", 1.189154106880000e+02 }, { "Xe_120", 1.199117842440000e+02 },
|
||||
{ "Xe_121", 1.209114618290000e+02 }, { "Xe_122", 1.219083676320000e+02 }, { "Xe_123", 1.229084819100000e+02 }, { "Xe_124", 1.239058930030000e+02 },
|
||||
{ "Xe_125", 1.249063954640000e+02 }, { "Xe_126", 1.259042736340000e+02 }, { "Xe_127", 1.269051837230000e+02 }, { "Xe_128", 1.279035312750000e+02 },
|
||||
{ "Xe_129", 1.289047794350000e+02 }, { "Xe_130", 1.299035080070000e+02 }, { "Xe_131", 1.309050823620000e+02 }, { "Xe_132", 1.319041534570000e+02 },
|
||||
{ "Xe_133", 1.329059107220000e+02 }, { "Xe_134", 1.339053944640000e+02 }, { "Xe_135", 1.349072274950000e+02 }, { "Xe_136", 1.359072187940000e+02 },
|
||||
{ "Xe_137", 1.369115621250000e+02 }, { "Xe_138", 1.379139544750000e+02 }, { "Xe_139", 1.389187929360000e+02 }, { "Xe_140", 1.399216409430000e+02 },
|
||||
{ "Xe_141", 1.409266480490000e+02 }, { "Xe_142", 1.419297095900000e+02 }, { "Xe_143", 1.429351100000000e+02 }, { "Xe_144", 1.439385100000000e+02 },
|
||||
{ "Xe_145", 1.449440700000000e+02 }, { "Xe_146", 1.459477500000000e+02 }, { "Xe_147", 1.469535600000000e+02 }, { "Cs_natural", 1.329054000000000e+02 },
|
||||
{ "Cs_112", 1.119503010000000e+02 }, { "Cs_113", 1.129444932740000e+02 }, { "Cs_114", 1.139414500000000e+02 }, { "Cs_115", 1.149359100000000e+02 },
|
||||
{ "Cs_116", 1.159333670000000e+02 }, { "Cs_117", 1.169286707010000e+02 }, { "Cs_118", 1.179265594940000e+02 }, { "Cs_119", 1.189223773040000e+02 },
|
||||
{ "Cs_120", 1.199206772530000e+02 }, { "Cs_121", 1.209172292090000e+02 }, { "Cs_122", 1.219161134340000e+02 }, { "Cs_123", 1.229129960360000e+02 },
|
||||
{ "Cs_124", 1.239122577980000e+02 }, { "Cs_125", 1.249097282700000e+02 }, { "Cs_126", 1.259094519770000e+02 }, { "Cs_127", 1.269074175250000e+02 },
|
||||
{ "Cs_128", 1.279077488660000e+02 }, { "Cs_129", 1.289060644260000e+02 }, { "Cs_130", 1.299067085520000e+02 }, { "Cs_131", 1.309054639260000e+02 },
|
||||
{ "Cs_132", 1.319064342600000e+02 }, { "Cs_133", 1.329054519320000e+02 }, { "Cs_134", 1.339067184750000e+02 }, { "Cs_135", 1.349059770080000e+02 },
|
||||
{ "Cs_136", 1.359073115760000e+02 }, { "Cs_137", 1.369070894730000e+02 }, { "Cs_138", 1.379110167040000e+02 }, { "Cs_139", 1.389133639990000e+02 },
|
||||
{ "Cs_140", 1.399172823540000e+02 }, { "Cs_141", 1.409200457520000e+02 }, { "Cs_142", 1.419242989270000e+02 }, { "Cs_143", 1.429273517500000e+02 },
|
||||
{ "Cs_144", 1.439320769140000e+02 }, { "Cs_145", 1.449355261700000e+02 }, { "Cs_146", 1.459402894230000e+02 }, { "Cs_147", 1.469441550080000e+02 },
|
||||
{ "Cs_148", 1.479492181530000e+02 }, { "Cs_149", 1.489529300000000e+02 }, { "Cs_150", 1.499581700000000e+02 }, { "Cs_151", 1.509621900000000e+02 },
|
||||
{ "Ba_natural", 1.373300000000000e+02 }, { "Ba_114", 1.139506754050000e+02 }, { "Ba_115", 1.149473700000000e+02 }, { "Ba_116", 1.159413800000000e+02 },
|
||||
{ "Ba_117", 1.169384990000000e+02 }, { "Ba_118", 1.179330400000000e+02 }, { "Ba_119", 1.189306596610000e+02 }, { "Ba_120", 1.199260449740000e+02 },
|
||||
{ "Ba_121", 1.209240544990000e+02 }, { "Ba_122", 1.219199040000000e+02 }, { "Ba_123", 1.229187810360000e+02 }, { "Ba_124", 1.239150936030000e+02 },
|
||||
{ "Ba_125", 1.249144729120000e+02 }, { "Ba_126", 1.259112501770000e+02 }, { "Ba_127", 1.269110937970000e+02 }, { "Ba_128", 1.279083176980000e+02 },
|
||||
{ "Ba_129", 1.289086794390000e+02 }, { "Ba_130", 1.299063208110000e+02 }, { "Ba_131", 1.309069411180000e+02 }, { "Ba_132", 1.319050612880000e+02 },
|
||||
{ "Ba_133", 1.329060074900000e+02 }, { "Ba_134", 1.339045083830000e+02 }, { "Ba_135", 1.349056885910000e+02 }, { "Ba_136", 1.359045759450000e+02 },
|
||||
{ "Ba_137", 1.369058273840000e+02 }, { "Ba_138", 1.379052472370000e+02 }, { "Ba_139", 1.389088413410000e+02 }, { "Ba_140", 1.399106045050000e+02 },
|
||||
{ "Ba_141", 1.409144110090000e+02 }, { "Ba_142", 1.419164534100000e+02 }, { "Ba_143", 1.429206267190000e+02 }, { "Ba_144", 1.439229528530000e+02 },
|
||||
{ "Ba_145", 1.449276270320000e+02 }, { "Ba_146", 1.459302195720000e+02 }, { "Ba_147", 1.469349450000000e+02 }, { "Ba_148", 1.479377200470000e+02 },
|
||||
{ "Ba_149", 1.489425800000000e+02 }, { "Ba_150", 1.499456800000000e+02 }, { "Ba_151", 1.509508100000000e+02 }, { "Ba_152", 1.519542700000000e+02 },
|
||||
{ "Ba_153", 1.529596100000000e+02 }, { "La_natural", 1.389055000000000e+02 }, { "La_117", 1.169500680000000e+02 }, { "La_118", 1.179467300000000e+02 },
|
||||
{ "La_119", 1.189409900000000e+02 }, { "La_120", 1.199380700000000e+02 }, { "La_121", 1.209330100000000e+02 }, { "La_122", 1.219307100000000e+02 },
|
||||
{ "La_123", 1.229262400000000e+02 }, { "La_124", 1.239245742750000e+02 }, { "La_125", 1.249208160340000e+02 }, { "La_126", 1.259195126670000e+02 },
|
||||
{ "La_127", 1.269163754480000e+02 }, { "La_128", 1.279155851770000e+02 }, { "La_129", 1.289126928150000e+02 }, { "La_130", 1.299123687240000e+02 },
|
||||
{ "La_131", 1.309100700000000e+02 }, { "La_132", 1.319101011450000e+02 }, { "La_133", 1.329082180000000e+02 }, { "La_134", 1.339085140110000e+02 },
|
||||
{ "La_135", 1.349069768440000e+02 }, { "La_136", 1.359076355360000e+02 }, { "La_137", 1.369064935980000e+02 }, { "La_138", 1.379071119300000e+02 },
|
||||
{ "La_139", 1.389063532670000e+02 }, { "La_140", 1.399094776450000e+02 }, { "La_141", 1.409109621520000e+02 }, { "La_142", 1.419140791300000e+02 },
|
||||
{ "La_143", 1.429160627200000e+02 }, { "La_144", 1.439195996470000e+02 }, { "La_145", 1.449216454010000e+02 }, { "La_146", 1.459257934600000e+02 },
|
||||
{ "La_147", 1.469282352840000e+02 }, { "La_148", 1.479322288680000e+02 }, { "La_149", 1.489347340000000e+02 }, { "La_150", 1.499387700000000e+02 },
|
||||
{ "La_151", 1.509417200000000e+02 }, { "La_152", 1.519462500000000e+02 }, { "La_153", 1.529496200000000e+02 }, { "La_154", 1.539545000000000e+02 },
|
||||
{ "La_155", 1.549583500000000e+02 }, { "Ce_natural", 1.401200000000000e+02 }, { "Ce_119", 1.189527600000000e+02 }, { "Ce_120", 1.199466400000000e+02 },
|
||||
{ "Ce_121", 1.209434200000000e+02 }, { "Ce_122", 1.219379100000000e+02 }, { "Ce_123", 1.229354000000000e+02 }, { "Ce_124", 1.239304100000000e+02 },
|
||||
{ "Ce_125", 1.249284400000000e+02 }, { "Ce_126", 1.259239710000000e+02 }, { "Ce_127", 1.269227310000000e+02 }, { "Ce_128", 1.279189110000000e+02 },
|
||||
{ "Ce_129", 1.289181020000000e+02 }, { "Ce_130", 1.299147360000000e+02 }, { "Ce_131", 1.309144220000000e+02 }, { "Ce_132", 1.319114604870000e+02 },
|
||||
{ "Ce_133", 1.329115150200000e+02 }, { "Ce_134", 1.339089248210000e+02 }, { "Ce_135", 1.349091513960000e+02 }, { "Ce_136", 1.359071724220000e+02 },
|
||||
{ "Ce_137", 1.369078055770000e+02 }, { "Ce_138", 1.379059913210000e+02 }, { "Ce_139", 1.389066526510000e+02 }, { "Ce_140", 1.399054387060000e+02 },
|
||||
{ "Ce_141", 1.409082762700000e+02 }, { "Ce_142", 1.419092442050000e+02 }, { "Ce_143", 1.429123859100000e+02 }, { "Ce_144", 1.439136473360000e+02 },
|
||||
{ "Ce_145", 1.449172331350000e+02 }, { "Ce_146", 1.459187590090000e+02 }, { "Ce_147", 1.469226739540000e+02 }, { "Ce_148", 1.479244324100000e+02 },
|
||||
{ "Ce_149", 1.489283998830000e+02 }, { "Ce_150", 1.499304089310000e+02 }, { "Ce_151", 1.509339761960000e+02 }, { "Ce_152", 1.519365400000000e+02 },
|
||||
{ "Ce_153", 1.529405800000000e+02 }, { "Ce_154", 1.539434200000000e+02 }, { "Ce_155", 1.549480400000000e+02 }, { "Ce_156", 1.559512600000000e+02 },
|
||||
{ "Ce_157", 1.569563400000000e+02 }, { "Pr_natural", 1.409077000000000e+02 }, { "Pr_121", 1.209553640000000e+02 }, { "Pr_122", 1.219518100000000e+02 },
|
||||
{ "Pr_123", 1.229459600000000e+02 }, { "Pr_124", 1.239429600000000e+02 }, { "Pr_125", 1.249378300000000e+02 }, { "Pr_126", 1.259353100000000e+02 },
|
||||
{ "Pr_127", 1.269308300000000e+02 }, { "Pr_128", 1.279287910000000e+02 }, { "Pr_129", 1.289250950000000e+02 }, { "Pr_130", 1.299235900000000e+02 },
|
||||
{ "Pr_131", 1.309202590000000e+02 }, { "Pr_132", 1.319192550000000e+02 }, { "Pr_133", 1.329163305320000e+02 }, { "Pr_134", 1.339157117370000e+02 },
|
||||
{ "Pr_135", 1.349131117450000e+02 }, { "Pr_136", 1.359126916110000e+02 }, { "Pr_137", 1.369107054550000e+02 }, { "Pr_138", 1.379107546360000e+02 },
|
||||
{ "Pr_139", 1.389089383990000e+02 }, { "Pr_140", 1.399090758740000e+02 }, { "Pr_141", 1.409076527690000e+02 }, { "Pr_142", 1.419100448060000e+02 },
|
||||
{ "Pr_143", 1.429108169260000e+02 }, { "Pr_144", 1.439133052450000e+02 }, { "Pr_145", 1.449145117000000e+02 }, { "Pr_146", 1.459176443360000e+02 },
|
||||
{ "Pr_147", 1.469189959920000e+02 }, { "Pr_148", 1.479221350260000e+02 }, { "Pr_149", 1.489237176510000e+02 }, { "Pr_150", 1.499266729970000e+02 },
|
||||
{ "Pr_151", 1.509283186180000e+02 }, { "Pr_152", 1.519314992250000e+02 }, { "Pr_153", 1.529338389050000e+02 }, { "Pr_154", 1.539375181530000e+02 },
|
||||
{ "Pr_155", 1.549401200000000e+02 }, { "Pr_156", 1.559442700000000e+02 }, { "Pr_157", 1.569474300000000e+02 }, { "Pr_158", 1.579519800000000e+02 },
|
||||
{ "Pr_159", 1.589555000000000e+02 }, { "Nd_natural", 1.442400000000000e+02 }, { "Nd_124", 1.239522300000000e+02 }, { "Nd_125", 1.249488800000000e+02 },
|
||||
{ "Nd_126", 1.259432200000000e+02 }, { "Nd_127", 1.269405000000000e+02 }, { "Nd_128", 1.279353900000000e+02 }, { "Nd_129", 1.289331880000000e+02 },
|
||||
{ "Nd_130", 1.299285060000000e+02 }, { "Nd_131", 1.309272470000000e+02 }, { "Nd_132", 1.319233212370000e+02 }, { "Nd_133", 1.329223480000000e+02 },
|
||||
{ "Nd_134", 1.339187901810000e+02 }, { "Nd_135", 1.349181811600000e+02 }, { "Nd_136", 1.359149760350000e+02 }, { "Nd_137", 1.369145671370000e+02 },
|
||||
{ "Nd_138", 1.379119499610000e+02 }, { "Nd_139", 1.389119782880000e+02 }, { "Nd_140", 1.399095520000000e+02 }, { "Nd_141", 1.409096098540000e+02 },
|
||||
{ "Nd_142", 1.419077232970000e+02 }, { "Nd_143", 1.429098142900000e+02 }, { "Nd_144", 1.439100872740000e+02 }, { "Nd_145", 1.449125736360000e+02 },
|
||||
{ "Nd_146", 1.459131169390000e+02 }, { "Nd_147", 1.469161004410000e+02 }, { "Nd_148", 1.479168932880000e+02 }, { "Nd_149", 1.489201488420000e+02 },
|
||||
{ "Nd_150", 1.499208908880000e+02 }, { "Nd_151", 1.509238289290000e+02 }, { "Nd_152", 1.519246822190000e+02 }, { "Nd_153", 1.529276982320000e+02 },
|
||||
{ "Nd_154", 1.539294773070000e+02 }, { "Nd_155", 1.549329320000000e+02 }, { "Nd_156", 1.559350181140000e+02 }, { "Nd_157", 1.569390300000000e+02 },
|
||||
{ "Nd_158", 1.579416000000000e+02 }, { "Nd_159", 1.589460900000000e+02 }, { "Nd_160", 1.599490900000000e+02 }, { "Nd_161", 1.609538800000000e+02 },
|
||||
{ "Pm_natural", 1.450000000000000e+02 }, { "Pm_126", 1.259575200000000e+02 }, { "Pm_127", 1.269516300000000e+02 }, { "Pm_128", 1.279484200000000e+02 },
|
||||
{ "Pm_129", 1.289431600000000e+02 }, { "Pm_130", 1.299404500000000e+02 }, { "Pm_131", 1.309358700000000e+02 }, { "Pm_132", 1.319337500000000e+02 },
|
||||
{ "Pm_133", 1.329297820000000e+02 }, { "Pm_134", 1.339283530000000e+02 }, { "Pm_135", 1.349248760000000e+02 }, { "Pm_136", 1.359235658290000e+02 },
|
||||
{ "Pm_137", 1.369204794930000e+02 }, { "Pm_138", 1.379195482810000e+02 }, { "Pm_139", 1.389168040820000e+02 }, { "Pm_140", 1.399160417890000e+02 },
|
||||
{ "Pm_141", 1.409135550540000e+02 }, { "Pm_142", 1.419128744710000e+02 }, { "Pm_143", 1.429109326160000e+02 }, { "Pm_144", 1.439125908430000e+02 },
|
||||
{ "Pm_145", 1.449127490230000e+02 }, { "Pm_146", 1.459146963050000e+02 }, { "Pm_147", 1.469151385450000e+02 }, { "Pm_148", 1.479174746180000e+02 },
|
||||
{ "Pm_149", 1.489183341550000e+02 }, { "Pm_150", 1.499209835610000e+02 }, { "Pm_151", 1.509212069730000e+02 }, { "Pm_152", 1.519234967950000e+02 },
|
||||
{ "Pm_153", 1.529241168890000e+02 }, { "Pm_154", 1.539264639430000e+02 }, { "Pm_155", 1.549281012670000e+02 }, { "Pm_156", 1.559310567360000e+02 },
|
||||
{ "Pm_157", 1.569330393690000e+02 }, { "Pm_158", 1.579365614070000e+02 }, { "Pm_159", 1.589389700000000e+02 }, { "Pm_160", 1.599429900000000e+02 },
|
||||
{ "Pm_161", 1.609458600000000e+02 }, { "Pm_162", 1.619502900000000e+02 }, { "Pm_163", 1.629536800000000e+02 }, { "Sm_natural", 1.504000000000000e+02 },
|
||||
{ "Sm_128", 1.279580800000000e+02 }, { "Sm_129", 1.289546400000000e+02 }, { "Sm_130", 1.299489200000000e+02 }, { "Sm_131", 1.309461100000000e+02 },
|
||||
{ "Sm_132", 1.319406900000000e+02 }, { "Sm_133", 1.329386700000000e+02 }, { "Sm_134", 1.339339700000000e+02 }, { "Sm_135", 1.349325200000000e+02 },
|
||||
{ "Sm_136", 1.359282755270000e+02 }, { "Sm_137", 1.369269717460000e+02 }, { "Sm_138", 1.379232439610000e+02 }, { "Sm_139", 1.389222966050000e+02 },
|
||||
{ "Sm_140", 1.399189946870000e+02 }, { "Sm_141", 1.409184764880000e+02 }, { "Sm_142", 1.419151976410000e+02 }, { "Sm_143", 1.429146283380000e+02 },
|
||||
{ "Sm_144", 1.439119994780000e+02 }, { "Sm_145", 1.449134103530000e+02 }, { "Sm_146", 1.459130409000000e+02 }, { "Sm_147", 1.469148979230000e+02 },
|
||||
{ "Sm_148", 1.479148226740000e+02 }, { "Sm_149", 1.489171847350000e+02 }, { "Sm_150", 1.499172755390000e+02 }, { "Sm_151", 1.509199324090000e+02 },
|
||||
{ "Sm_152", 1.519197324250000e+02 }, { "Sm_153", 1.529220973560000e+02 }, { "Sm_154", 1.539222092730000e+02 }, { "Sm_155", 1.549246401610000e+02 },
|
||||
{ "Sm_156", 1.559255278870000e+02 }, { "Sm_157", 1.569283587170000e+02 }, { "Sm_158", 1.579299913170000e+02 }, { "Sm_159", 1.589332112710000e+02 },
|
||||
{ "Sm_160", 1.599351400000000e+02 }, { "Sm_161", 1.609388300000000e+02 }, { "Sm_162", 1.619412200000000e+02 }, { "Sm_163", 1.629453600000000e+02 },
|
||||
{ "Sm_164", 1.639482800000000e+02 }, { "Sm_165", 1.649529800000000e+02 }, { "Eu_natural", 1.519600000000000e+02 }, { "Eu_130", 1.299635690000000e+02 },
|
||||
{ "Eu_131", 1.309577530000000e+02 }, { "Eu_132", 1.319543700000000e+02 }, { "Eu_133", 1.329492400000000e+02 }, { "Eu_134", 1.339465100000000e+02 },
|
||||
{ "Eu_135", 1.349418200000000e+02 }, { "Eu_136", 1.359396000000000e+02 }, { "Eu_137", 1.369355700000000e+02 }, { "Eu_138", 1.379337090000000e+02 },
|
||||
{ "Eu_139", 1.389297922800000e+02 }, { "Eu_140", 1.399280876070000e+02 }, { "Eu_141", 1.409249307200000e+02 }, { "Eu_142", 1.419234349450000e+02 },
|
||||
{ "Eu_143", 1.429202975090000e+02 }, { "Eu_144", 1.439188168230000e+02 }, { "Eu_145", 1.449162652370000e+02 }, { "Eu_146", 1.459172058170000e+02 },
|
||||
{ "Eu_147", 1.469167461110000e+02 }, { "Eu_148", 1.479180858950000e+02 }, { "Eu_149", 1.489179312380000e+02 }, { "Eu_150", 1.499197018190000e+02 },
|
||||
{ "Eu_151", 1.509198501610000e+02 }, { "Eu_152", 1.519217445340000e+02 }, { "Eu_153", 1.529212303390000e+02 }, { "Eu_154", 1.539229792370000e+02 },
|
||||
{ "Eu_155", 1.549228932600000e+02 }, { "Eu_156", 1.559247522490000e+02 }, { "Eu_157", 1.569254236470000e+02 }, { "Eu_158", 1.579278453020000e+02 },
|
||||
{ "Eu_159", 1.589290888610000e+02 }, { "Eu_160", 1.599319710000000e+02 }, { "Eu_161", 1.609336800000000e+02 }, { "Eu_162", 1.619370400000000e+02 },
|
||||
{ "Eu_163", 1.629392100000000e+02 }, { "Eu_164", 1.639429900000000e+02 }, { "Eu_165", 1.649457200000000e+02 }, { "Eu_166", 1.659499700000000e+02 },
|
||||
{ "Eu_167", 1.669532100000000e+02 }, { "Gd_natural", 1.572500000000000e+02 }, { "Gd_134", 1.339553700000000e+02 }, { "Gd_135", 1.349525700000000e+02 },
|
||||
{ "Gd_136", 1.359473400000000e+02 }, { "Gd_137", 1.369450200000000e+02 }, { "Gd_138", 1.379401200000000e+02 }, { "Gd_139", 1.389382400000000e+02 },
|
||||
{ "Gd_140", 1.399336740000000e+02 }, { "Gd_141", 1.409321260000000e+02 }, { "Gd_142", 1.419281160000000e+02 }, { "Gd_143", 1.429267495100000e+02 },
|
||||
{ "Gd_144", 1.439229630000000e+02 }, { "Gd_145", 1.449217092520000e+02 }, { "Gd_146", 1.459183106080000e+02 }, { "Gd_147", 1.469190944200000e+02 },
|
||||
{ "Gd_148", 1.479181145240000e+02 }, { "Gd_149", 1.489193409150000e+02 }, { "Gd_150", 1.499186588760000e+02 }, { "Gd_151", 1.509203484820000e+02 },
|
||||
{ "Gd_152", 1.519197909960000e+02 }, { "Gd_153", 1.529217495430000e+02 }, { "Gd_154", 1.539208655980000e+02 }, { "Gd_155", 1.549226220220000e+02 },
|
||||
{ "Gd_156", 1.559221227430000e+02 }, { "Gd_157", 1.569239601350000e+02 }, { "Gd_158", 1.579241039120000e+02 }, { "Gd_159", 1.589263886580000e+02 },
|
||||
{ "Gd_160", 1.599270541460000e+02 }, { "Gd_161", 1.609296692110000e+02 }, { "Gd_162", 1.619309847510000e+02 }, { "Gd_163", 1.629339900000000e+02 },
|
||||
{ "Gd_164", 1.639358600000000e+02 }, { "Gd_165", 1.649393800000000e+02 }, { "Gd_166", 1.659416000000000e+02 }, { "Gd_167", 1.669455700000000e+02 },
|
||||
{ "Gd_168", 1.679483600000000e+02 }, { "Gd_169", 1.689528700000000e+02 }, { "Tb_natural", 1.589254000000000e+02 }, { "Tb_136", 1.359613800000000e+02 },
|
||||
{ "Tb_137", 1.369559800000000e+02 }, { "Tb_138", 1.379531600000000e+02 }, { "Tb_139", 1.389482900000000e+02 }, { "Tb_140", 1.399458050490000e+02 },
|
||||
{ "Tb_141", 1.409414480000000e+02 }, { "Tb_142", 1.419387440000000e+02 }, { "Tb_143", 1.429351210000000e+02 }, { "Tb_144", 1.439330450000000e+02 },
|
||||
{ "Tb_145", 1.449292740000000e+02 }, { "Tb_146", 1.459272465840000e+02 }, { "Tb_147", 1.469240445850000e+02 }, { "Tb_148", 1.479242717010000e+02 },
|
||||
{ "Tb_149", 1.489232459090000e+02 }, { "Tb_150", 1.499236596860000e+02 }, { "Tb_151", 1.509231025430000e+02 }, { "Tb_152", 1.519240744380000e+02 },
|
||||
{ "Tb_153", 1.529234345880000e+02 }, { "Tb_154", 1.539246780190000e+02 }, { "Tb_155", 1.549235052360000e+02 }, { "Tb_156", 1.559247472130000e+02 },
|
||||
{ "Tb_157", 1.569240246040000e+02 }, { "Tb_158", 1.579254131370000e+02 }, { "Tb_159", 1.589253467570000e+02 }, { "Tb_160", 1.599271676060000e+02 },
|
||||
{ "Tb_161", 1.609275699190000e+02 }, { "Tb_162", 1.619294882340000e+02 }, { "Tb_163", 1.629306475360000e+02 }, { "Tb_164", 1.639333508380000e+02 },
|
||||
{ "Tb_165", 1.649348800000000e+02 }, { "Tb_166", 1.659379919590000e+02 }, { "Tb_167", 1.669400500000000e+02 }, { "Tb_168", 1.679436400000000e+02 },
|
||||
{ "Tb_169", 1.689462200000000e+02 }, { "Tb_170", 1.699502500000000e+02 }, { "Tb_171", 1.709533000000000e+02 }, { "Dy_natural", 1.625000000000000e+02 },
|
||||
{ "Dy_138", 1.379624900000000e+02 }, { "Dy_139", 1.389595400000000e+02 }, { "Dy_140", 1.399540100000000e+02 }, { "Dy_141", 1.409513500000000e+02 },
|
||||
{ "Dy_142", 1.419463660000000e+02 }, { "Dy_143", 1.429438300000000e+02 }, { "Dy_144", 1.439392540000000e+02 }, { "Dy_145", 1.449374250000000e+02 },
|
||||
{ "Dy_146", 1.459328453690000e+02 }, { "Dy_147", 1.469310915000000e+02 }, { "Dy_148", 1.479271498310000e+02 }, { "Dy_149", 1.489273047870000e+02 },
|
||||
{ "Dy_150", 1.499255851840000e+02 }, { "Dy_151", 1.509261846010000e+02 }, { "Dy_152", 1.519247183000000e+02 }, { "Dy_153", 1.529257646700000e+02 },
|
||||
{ "Dy_154", 1.539244244570000e+02 }, { "Dy_155", 1.549257537750000e+02 }, { "Dy_156", 1.559242831100000e+02 }, { "Dy_157", 1.569254660950000e+02 },
|
||||
{ "Dy_158", 1.579244094870000e+02 }, { "Dy_159", 1.589257392140000e+02 }, { "Dy_160", 1.599251975170000e+02 }, { "Dy_161", 1.609269333640000e+02 },
|
||||
{ "Dy_162", 1.619267984470000e+02 }, { "Dy_163", 1.629287311590000e+02 }, { "Dy_164", 1.639291747510000e+02 }, { "Dy_165", 1.649317033330000e+02 },
|
||||
{ "Dy_166", 1.659328067410000e+02 }, { "Dy_167", 1.669356554620000e+02 }, { "Dy_168", 1.679371287690000e+02 }, { "Dy_169", 1.689403076140000e+02 },
|
||||
{ "Dy_170", 1.699423900000000e+02 }, { "Dy_171", 1.709462000000000e+02 }, { "Dy_172", 1.719487600000000e+02 }, { "Dy_173", 1.729530000000000e+02 },
|
||||
{ "Ho_natural", 1.649304000000000e+02 }, { "Ho_140", 1.399685390000000e+02 }, { "Ho_141", 1.409630980000000e+02 }, { "Ho_142", 1.419597700000000e+02 },
|
||||
{ "Ho_143", 1.429546100000000e+02 }, { "Ho_144", 1.439514800000000e+02 }, { "Ho_145", 1.449472000000000e+02 }, { "Ho_146", 1.459446400000000e+02 },
|
||||
{ "Ho_147", 1.469400560000000e+02 }, { "Ho_148", 1.479377180000000e+02 }, { "Ho_149", 1.489337747710000e+02 }, { "Ho_150", 1.499334961820000e+02 },
|
||||
{ "Ho_151", 1.509316881420000e+02 }, { "Ho_152", 1.519317137140000e+02 }, { "Ho_153", 1.529301987890000e+02 }, { "Ho_154", 1.539306015790000e+02 },
|
||||
{ "Ho_155", 1.549291034910000e+02 }, { "Ho_156", 1.559298390000000e+02 }, { "Ho_157", 1.569282561880000e+02 }, { "Ho_158", 1.579289410070000e+02 },
|
||||
{ "Ho_159", 1.589277119590000e+02 }, { "Ho_160", 1.599287294780000e+02 }, { "Ho_161", 1.609278547760000e+02 }, { "Ho_162", 1.619290955040000e+02 },
|
||||
{ "Ho_163", 1.629287339030000e+02 }, { "Ho_164", 1.639302335070000e+02 }, { "Ho_165", 1.649303220700000e+02 }, { "Ho_166", 1.659322841620000e+02 },
|
||||
{ "Ho_167", 1.669331326330000e+02 }, { "Ho_168", 1.679355157080000e+02 }, { "Ho_169", 1.689368722730000e+02 }, { "Ho_170", 1.699396189290000e+02 },
|
||||
{ "Ho_171", 1.709414651500000e+02 }, { "Ho_172", 1.719448200000000e+02 }, { "Ho_173", 1.729472900000000e+02 }, { "Ho_174", 1.739511500000000e+02 },
|
||||
{ "Ho_175", 1.749540500000000e+02 }, { "Er_natural", 1.672600000000000e+02 }, { "Er_143", 1.429663400000000e+02 }, { "Er_144", 1.439603800000000e+02 },
|
||||
{ "Er_145", 1.449573900000000e+02 }, { "Er_146", 1.459520000000000e+02 }, { "Er_147", 1.469494900000000e+02 }, { "Er_148", 1.479445500000000e+02 },
|
||||
{ "Er_149", 1.489423060000000e+02 }, { "Er_150", 1.499379138390000e+02 }, { "Er_151", 1.509374489030000e+02 }, { "Er_152", 1.519350503890000e+02 },
|
||||
{ "Er_153", 1.529350634920000e+02 }, { "Er_154", 1.539327830810000e+02 }, { "Er_155", 1.549332089490000e+02 }, { "Er_156", 1.559310646980000e+02 },
|
||||
{ "Er_157", 1.569319160000000e+02 }, { "Er_158", 1.579298934740000e+02 }, { "Er_159", 1.589306840660000e+02 }, { "Er_160", 1.599290832920000e+02 },
|
||||
{ "Er_161", 1.609299953090000e+02 }, { "Er_162", 1.619287782640000e+02 }, { "Er_163", 1.629300327490000e+02 }, { "Er_164", 1.639292002290000e+02 },
|
||||
{ "Er_165", 1.649307260030000e+02 }, { "Er_166", 1.659302930610000e+02 }, { "Er_167", 1.669320481590000e+02 }, { "Er_168", 1.679323702240000e+02 },
|
||||
{ "Er_169", 1.689345903640000e+02 }, { "Er_170", 1.699354643120000e+02 }, { "Er_171", 1.709380298080000e+02 }, { "Er_172", 1.719393561130000e+02 },
|
||||
{ "Er_173", 1.729424000000000e+02 }, { "Er_174", 1.739442300000000e+02 }, { "Er_175", 1.749477700000000e+02 }, { "Er_176", 1.759500800000000e+02 },
|
||||
{ "Er_177", 1.769540500000000e+02 }, { "Tm_natural", 1.689342000000000e+02 }, { "Tm_145", 1.449700730000000e+02 }, { "Tm_146", 1.459664250000000e+02 },
|
||||
{ "Tm_147", 1.469609610000000e+02 }, { "Tm_148", 1.479578400000000e+02 }, { "Tm_149", 1.489527200000000e+02 }, { "Tm_150", 1.499499600000000e+02 },
|
||||
{ "Tm_151", 1.509454834900000e+02 }, { "Tm_152", 1.519444220000000e+02 }, { "Tm_153", 1.529420121120000e+02 }, { "Tm_154", 1.539415678080000e+02 },
|
||||
{ "Tm_155", 1.549391994590000e+02 }, { "Tm_156", 1.559389799330000e+02 }, { "Tm_157", 1.569369730000000e+02 }, { "Tm_158", 1.579369795250000e+02 },
|
||||
{ "Tm_159", 1.589349750000000e+02 }, { "Tm_160", 1.599352628010000e+02 }, { "Tm_161", 1.609335490000000e+02 }, { "Tm_162", 1.619339946820000e+02 },
|
||||
{ "Tm_163", 1.629326511240000e+02 }, { "Tm_164", 1.639335600000000e+02 }, { "Tm_165", 1.649324354920000e+02 }, { "Tm_166", 1.659335541310000e+02 },
|
||||
{ "Tm_167", 1.669328516220000e+02 }, { "Tm_168", 1.679341727760000e+02 }, { "Tm_169", 1.689342132500000e+02 }, { "Tm_170", 1.699358013970000e+02 },
|
||||
{ "Tm_171", 1.709364294400000e+02 }, { "Tm_172", 1.719384000440000e+02 }, { "Tm_173", 1.729396036070000e+02 }, { "Tm_174", 1.739421686050000e+02 },
|
||||
{ "Tm_175", 1.749438368530000e+02 }, { "Tm_176", 1.759469946850000e+02 }, { "Tm_177", 1.769490400000000e+02 }, { "Tm_178", 1.779526400000000e+02 },
|
||||
{ "Tm_179", 1.789553400000000e+02 }, { "Yb_natural", 1.730400000000000e+02 }, { "Yb_148", 1.479674200000000e+02 }, { "Yb_149", 1.489640400000000e+02 },
|
||||
{ "Yb_150", 1.499584200000000e+02 }, { "Yb_151", 1.509554007690000e+02 }, { "Yb_152", 1.519502889190000e+02 }, { "Yb_153", 1.529494800000000e+02 },
|
||||
{ "Yb_154", 1.539463939280000e+02 }, { "Yb_155", 1.549457823320000e+02 }, { "Yb_156", 1.559428182150000e+02 }, { "Yb_157", 1.569426278480000e+02 },
|
||||
{ "Yb_158", 1.579398656170000e+02 }, { "Yb_159", 1.589400500990000e+02 }, { "Yb_160", 1.599375523440000e+02 }, { "Yb_161", 1.609379016780000e+02 },
|
||||
{ "Yb_162", 1.619357682100000e+02 }, { "Yb_163", 1.629363343050000e+02 }, { "Yb_164", 1.639344894160000e+02 }, { "Yb_165", 1.649352790000000e+02 },
|
||||
{ "Yb_166", 1.659338820420000e+02 }, { "Yb_167", 1.669349496050000e+02 }, { "Yb_168", 1.679338968950000e+02 }, { "Yb_169", 1.689351898020000e+02 },
|
||||
{ "Yb_170", 1.699347618370000e+02 }, { "Yb_171", 1.709363257990000e+02 }, { "Yb_172", 1.719363814690000e+02 }, { "Yb_173", 1.729382107870000e+02 },
|
||||
{ "Yb_174", 1.739388620890000e+02 }, { "Yb_175", 1.749412764500000e+02 }, { "Yb_176", 1.759425716830000e+02 }, { "Yb_177", 1.769452608220000e+02 },
|
||||
{ "Yb_178", 1.779466466800000e+02 }, { "Yb_179", 1.789501700000000e+02 }, { "Yb_180", 1.799523300000000e+02 }, { "Yb_181", 1.809561500000000e+02 },
|
||||
{ "Lu_natural", 1.749670000000000e+02 }, { "Lu_150", 1.499732280000000e+02 }, { "Lu_151", 1.509675770000000e+02 }, { "Lu_152", 1.519641200000000e+02 },
|
||||
{ "Lu_153", 1.529587673310000e+02 }, { "Lu_154", 1.539575220000000e+02 }, { "Lu_155", 1.549543162160000e+02 }, { "Lu_156", 1.559530325230000e+02 },
|
||||
{ "Lu_157", 1.569500983000000e+02 }, { "Lu_158", 1.579493132830000e+02 }, { "Lu_159", 1.589466287760000e+02 }, { "Lu_160", 1.599460330000000e+02 },
|
||||
{ "Lu_161", 1.609435720000000e+02 }, { "Lu_162", 1.619432772880000e+02 }, { "Lu_163", 1.629411790000000e+02 }, { "Lu_164", 1.639413390000000e+02 },
|
||||
{ "Lu_165", 1.649394067240000e+02 }, { "Lu_166", 1.659398590000000e+02 }, { "Lu_167", 1.669382700000000e+02 }, { "Lu_168", 1.679387391110000e+02 },
|
||||
{ "Lu_169", 1.689376514390000e+02 }, { "Lu_170", 1.699384749680000e+02 }, { "Lu_171", 1.709379131360000e+02 }, { "Lu_172", 1.719390856690000e+02 },
|
||||
{ "Lu_173", 1.729389306020000e+02 }, { "Lu_174", 1.739403374800000e+02 }, { "Lu_175", 1.749407718190000e+02 }, { "Lu_176", 1.759426863100000e+02 },
|
||||
{ "Lu_177", 1.769437580550000e+02 }, { "Lu_178", 1.779459545590000e+02 }, { "Lu_179", 1.789473274430000e+02 }, { "Lu_180", 1.799498811600000e+02 },
|
||||
{ "Lu_181", 1.809519700000000e+02 }, { "Lu_182", 1.819550400000000e+02 }, { "Lu_183", 1.829575700000000e+02 }, { "Lu_184", 1.839609100000000e+02 },
|
||||
{ "Hf_natural", 1.784900000000000e+02 }, { "Hf_153", 1.529706900000000e+02 }, { "Hf_154", 1.539648600000000e+02 }, { "Hf_155", 1.549633900000000e+02 },
|
||||
{ "Hf_156", 1.559593640250000e+02 }, { "Hf_157", 1.569583960000000e+02 }, { "Hf_158", 1.579547993660000e+02 }, { "Hf_159", 1.589539948700000e+02 },
|
||||
{ "Hf_160", 1.599506843790000e+02 }, { "Hf_161", 1.609502748440000e+02 }, { "Hf_162", 1.619472104980000e+02 }, { "Hf_163", 1.629470890000000e+02 },
|
||||
{ "Hf_164", 1.639443672840000e+02 }, { "Hf_165", 1.649445670000000e+02 }, { "Hf_166", 1.659421800000000e+02 }, { "Hf_167", 1.669426000000000e+02 },
|
||||
{ "Hf_168", 1.679405680000000e+02 }, { "Hf_169", 1.689412590000000e+02 }, { "Hf_170", 1.699396090000000e+02 }, { "Hf_171", 1.709404920000000e+02 },
|
||||
{ "Hf_172", 1.719394483010000e+02 }, { "Hf_173", 1.729405130000000e+02 }, { "Hf_174", 1.739400461780000e+02 }, { "Hf_175", 1.749415091810000e+02 },
|
||||
{ "Hf_176", 1.759414086310000e+02 }, { "Hf_177", 1.769432206510000e+02 }, { "Hf_178", 1.779436987660000e+02 }, { "Hf_179", 1.789458161450000e+02 },
|
||||
{ "Hf_180", 1.799465499530000e+02 }, { "Hf_181", 1.809491012460000e+02 }, { "Hf_182", 1.819505540960000e+02 }, { "Hf_183", 1.829535304390000e+02 },
|
||||
{ "Hf_184", 1.839554465150000e+02 }, { "Hf_185", 1.849588200000000e+02 }, { "Hf_186", 1.859608900000000e+02 }, { "Hf_187", 1.869645900000000e+02 },
|
||||
{ "Hf_188", 1.879668500000000e+02 }, { "Ta_natural", 1.809479000000000e+02 }, { "Ta_155", 1.549745920000000e+02 }, { "Ta_156", 1.559723030000000e+02 },
|
||||
{ "Ta_157", 1.569681924450000e+02 }, { "Ta_158", 1.579666990000000e+02 }, { "Ta_159", 1.589630181730000e+02 }, { "Ta_160", 1.599614860560000e+02 },
|
||||
{ "Ta_161", 1.609584170000000e+02 }, { "Ta_162", 1.619572918590000e+02 }, { "Ta_163", 1.629543302710000e+02 }, { "Ta_164", 1.639535340000000e+02 },
|
||||
{ "Ta_165", 1.649507725140000e+02 }, { "Ta_166", 1.659505120000000e+02 }, { "Ta_167", 1.669480930000000e+02 }, { "Ta_168", 1.679480470000000e+02 },
|
||||
{ "Ta_169", 1.689460110000000e+02 }, { "Ta_170", 1.699461750000000e+02 }, { "Ta_171", 1.709444760000000e+02 }, { "Ta_172", 1.719448950000000e+02 },
|
||||
{ "Ta_173", 1.729437500000000e+02 }, { "Ta_174", 1.739444540000000e+02 }, { "Ta_175", 1.749437370000000e+02 }, { "Ta_176", 1.759448570000000e+02 },
|
||||
{ "Ta_177", 1.769444724030000e+02 }, { "Ta_178", 1.779457782210000e+02 }, { "Ta_179", 1.789459295350000e+02 }, { "Ta_180", 1.799474648310000e+02 },
|
||||
{ "Ta_181", 1.809479957630000e+02 }, { "Ta_182", 1.819501518490000e+02 }, { "Ta_183", 1.829513726160000e+02 }, { "Ta_184", 1.839540079660000e+02 },
|
||||
{ "Ta_185", 1.849555593750000e+02 }, { "Ta_186", 1.859585520230000e+02 }, { "Ta_187", 1.869605300000000e+02 }, { "Ta_188", 1.879637000000000e+02 },
|
||||
{ "Ta_189", 1.889658300000000e+02 }, { "Ta_190", 1.899692300000000e+02 }, { "W_natural", 1.838500000000000e+02 }, { "W_158", 1.579745620000000e+02 },
|
||||
{ "W_159", 1.589729180000000e+02 }, { "W_160", 1.599684788050000e+02 }, { "W_161", 1.609673570000000e+02 }, { "W_162", 1.619634974170000e+02 },
|
||||
{ "W_163", 1.629625235420000e+02 }, { "W_164", 1.639589543820000e+02 }, { "W_165", 1.649582799490000e+02 }, { "W_166", 1.659550272530000e+02 },
|
||||
{ "W_167", 1.669548160140000e+02 }, { "W_168", 1.679518083940000e+02 }, { "W_169", 1.689517787900000e+02 }, { "W_170", 1.699492284820000e+02 },
|
||||
{ "W_171", 1.709494510000000e+02 }, { "W_172", 1.719472920000000e+02 }, { "W_173", 1.729476890000000e+02 }, { "W_174", 1.739460790000000e+02 },
|
||||
{ "W_175", 1.749467170000000e+02 }, { "W_176", 1.759456340000000e+02 }, { "W_177", 1.769466430000000e+02 }, { "W_178", 1.779458762360000e+02 },
|
||||
{ "W_179", 1.789470704470000e+02 }, { "W_180", 1.799467044590000e+02 }, { "W_181", 1.809481972480000e+02 }, { "W_182", 1.819482041560000e+02 },
|
||||
{ "W_183", 1.829502229510000e+02 }, { "W_184", 1.839509311880000e+02 }, { "W_185", 1.849534192640000e+02 }, { "W_186", 1.859543641270000e+02 },
|
||||
{ "W_187", 1.869571604660000e+02 }, { "W_188", 1.879584891050000e+02 }, { "W_189", 1.889619128680000e+02 }, { "W_190", 1.899631813780000e+02 },
|
||||
{ "W_191", 1.909666000000000e+02 }, { "W_192", 1.919681700000000e+02 }, { "Re_natural", 1.862070000000000e+02 }, { "Re_160", 1.599821150000000e+02 },
|
||||
{ "Re_161", 1.609775891190000e+02 }, { "Re_162", 1.619760020000000e+02 }, { "Re_163", 1.629720805350000e+02 }, { "Re_164", 1.639703230000000e+02 },
|
||||
{ "Re_165", 1.649670885570000e+02 }, { "Re_166", 1.659658080000000e+02 }, { "Re_167", 1.669626010000000e+02 }, { "Re_168", 1.679615726080000e+02 },
|
||||
{ "Re_169", 1.689587910960000e+02 }, { "Re_170", 1.699582200710000e+02 }, { "Re_171", 1.709557160000000e+02 }, { "Re_172", 1.719554229610000e+02 },
|
||||
{ "Re_173", 1.729532430000000e+02 }, { "Re_174", 1.739531150000000e+02 }, { "Re_175", 1.749513810000000e+02 }, { "Re_176", 1.759516230000000e+02 },
|
||||
{ "Re_177", 1.769503280000000e+02 }, { "Re_178", 1.779509890000000e+02 }, { "Re_179", 1.789499876410000e+02 }, { "Re_180", 1.799507890840000e+02 },
|
||||
{ "Re_181", 1.809500679160000e+02 }, { "Re_182", 1.819512100800000e+02 }, { "Re_183", 1.829508198410000e+02 }, { "Re_184", 1.839525207560000e+02 },
|
||||
{ "Re_185", 1.849529549820000e+02 }, { "Re_186", 1.859549860840000e+02 }, { "Re_187", 1.869557531090000e+02 }, { "Re_188", 1.879581144380000e+02 },
|
||||
{ "Re_189", 1.889592290070000e+02 }, { "Re_190", 1.899618179770000e+02 }, { "Re_191", 1.909631252420000e+02 }, { "Re_192", 1.919659600000000e+02 },
|
||||
{ "Re_193", 1.929674700000000e+02 }, { "Re_194", 1.939704200000000e+02 }, { "Os_natural", 1.902000000000000e+02 }, { "Os_162", 1.619844310000000e+02 },
|
||||
{ "Os_163", 1.629826900000000e+02 }, { "Os_164", 1.639780356490000e+02 }, { "Os_165", 1.649767620000000e+02 }, { "Os_166", 1.659726907530000e+02 },
|
||||
{ "Os_167", 1.669715479690000e+02 }, { "Os_168", 1.679678036780000e+02 }, { "Os_169", 1.689670192700000e+02 }, { "Os_170", 1.699635770280000e+02 },
|
||||
{ "Os_171", 1.709631848190000e+02 }, { "Os_172", 1.719600233030000e+02 }, { "Os_173", 1.729598084090000e+02 }, { "Os_174", 1.739570622020000e+02 },
|
||||
{ "Os_175", 1.749569458350000e+02 }, { "Os_176", 1.759548060000000e+02 }, { "Os_177", 1.769549653240000e+02 }, { "Os_178", 1.779532512410000e+02 },
|
||||
{ "Os_179", 1.789538160170000e+02 }, { "Os_180", 1.799523788030000e+02 }, { "Os_181", 1.809532440000000e+02 }, { "Os_182", 1.819521101860000e+02 },
|
||||
{ "Os_183", 1.829531261020000e+02 }, { "Os_184", 1.839524890710000e+02 }, { "Os_185", 1.849540422650000e+02 }, { "Os_186", 1.859538381580000e+02 },
|
||||
{ "Os_187", 1.869557504580000e+02 }, { "Os_188", 1.879558382280000e+02 }, { "Os_189", 1.889581474700000e+02 }, { "Os_190", 1.899584470480000e+02 },
|
||||
{ "Os_191", 1.909609297180000e+02 }, { "Os_192", 1.919614806900000e+02 }, { "Os_193", 1.929641515630000e+02 }, { "Os_194", 1.939651820830000e+02 },
|
||||
{ "Os_195", 1.949681266610000e+02 }, { "Os_196", 1.959696393330000e+02 }, { "Ir_natural", 1.922200000000000e+02 }, { "Ir_164", 1.639922010000000e+02 },
|
||||
{ "Ir_165", 1.649875200000000e+02 }, { "Ir_166", 1.659858240000000e+02 }, { "Ir_167", 1.669816651560000e+02 }, { "Ir_168", 1.679798810000000e+02 },
|
||||
{ "Ir_169", 1.689762949420000e+02 }, { "Ir_170", 1.699749650000000e+02 }, { "Ir_171", 1.709716260420000e+02 }, { "Ir_172", 1.719704560000000e+02 },
|
||||
{ "Ir_173", 1.729675017390000e+02 }, { "Ir_174", 1.739668610450000e+02 }, { "Ir_175", 1.749641128950000e+02 }, { "Ir_176", 1.759636486880000e+02 },
|
||||
{ "Ir_177", 1.769613015000000e+02 }, { "Ir_178", 1.779610820000000e+02 }, { "Ir_179", 1.789591222660000e+02 }, { "Ir_180", 1.799592294460000e+02 },
|
||||
{ "Ir_181", 1.809576252970000e+02 }, { "Ir_182", 1.819580762960000e+02 }, { "Ir_183", 1.829568464580000e+02 }, { "Ir_184", 1.839574760000000e+02 },
|
||||
{ "Ir_185", 1.849566980000000e+02 }, { "Ir_186", 1.859579461040000e+02 }, { "Ir_187", 1.869573633610000e+02 }, { "Ir_188", 1.879588531210000e+02 },
|
||||
{ "Ir_189", 1.889587189350000e+02 }, { "Ir_190", 1.899605459680000e+02 }, { "Ir_191", 1.909605940460000e+02 }, { "Ir_192", 1.919626050120000e+02 },
|
||||
{ "Ir_193", 1.929629264300000e+02 }, { "Ir_194", 1.939650783780000e+02 }, { "Ir_195", 1.949659795730000e+02 }, { "Ir_196", 1.959683965420000e+02 },
|
||||
{ "Ir_197", 1.969696532850000e+02 }, { "Ir_198", 1.979722800000000e+02 }, { "Ir_199", 1.989738045830000e+02 }, { "Pt_natural", 1.950900000000000e+02 },
|
||||
{ "Pt_166", 1.659948550000000e+02 }, { "Pt_167", 1.669929790000000e+02 }, { "Pt_168", 1.679881507420000e+02 }, { "Pt_169", 1.689867150000000e+02 },
|
||||
{ "Pt_170", 1.699824952890000e+02 }, { "Pt_171", 1.709812445420000e+02 }, { "Pt_172", 1.719773471280000e+02 }, { "Pt_173", 1.729764447540000e+02 },
|
||||
{ "Pt_174", 1.739728187670000e+02 }, { "Pt_175", 1.749724205520000e+02 }, { "Pt_176", 1.759689446220000e+02 }, { "Pt_177", 1.769684694810000e+02 },
|
||||
{ "Pt_178", 1.779656487240000e+02 }, { "Pt_179", 1.789653634040000e+02 }, { "Pt_180", 1.799630314770000e+02 }, { "Pt_181", 1.809630972850000e+02 },
|
||||
{ "Pt_182", 1.819611706560000e+02 }, { "Pt_183", 1.829615967030000e+02 }, { "Pt_184", 1.839599222510000e+02 }, { "Pt_185", 1.849606190000000e+02 },
|
||||
{ "Pt_186", 1.859593508130000e+02 }, { "Pt_187", 1.869605870000000e+02 }, { "Pt_188", 1.879593953910000e+02 }, { "Pt_189", 1.889608336860000e+02 },
|
||||
{ "Pt_190", 1.899599316550000e+02 }, { "Pt_191", 1.909616766610000e+02 }, { "Pt_192", 1.919610380050000e+02 }, { "Pt_193", 1.929629874010000e+02 },
|
||||
{ "Pt_194", 1.939626802530000e+02 }, { "Pt_195", 1.949647911340000e+02 }, { "Pt_196", 1.959649515210000e+02 }, { "Pt_197", 1.969673401820000e+02 },
|
||||
{ "Pt_198", 1.979678927900000e+02 }, { "Pt_199", 1.989705930940000e+02 }, { "Pt_200", 1.999714406770000e+02 }, { "Pt_201", 2.009745128680000e+02 },
|
||||
{ "Pt_202", 2.019757400000000e+02 }, { "Au_natural", 1.969665000000000e+02 }, { "Au_169", 1.689980800000000e+02 }, { "Au_170", 1.699961220000000e+02 },
|
||||
{ "Au_171", 1.709918788810000e+02 }, { "Au_172", 1.719900350000000e+02 }, { "Au_173", 1.729862373800000e+02 }, { "Au_174", 1.739847610000000e+02 },
|
||||
{ "Au_175", 1.749812741070000e+02 }, { "Au_176", 1.759800990000000e+02 }, { "Au_177", 1.769768649080000e+02 }, { "Au_178", 1.779760319200000e+02 },
|
||||
{ "Au_179", 1.789732128120000e+02 }, { "Au_180", 1.799725211240000e+02 }, { "Au_181", 1.809700790480000e+02 }, { "Au_182", 1.819696178740000e+02 },
|
||||
{ "Au_183", 1.829675930340000e+02 }, { "Au_184", 1.839674515240000e+02 }, { "Au_185", 1.849657894110000e+02 }, { "Au_186", 1.859659527030000e+02 },
|
||||
{ "Au_187", 1.869645675410000e+02 }, { "Au_188", 1.879653236610000e+02 }, { "Au_189", 1.889639482860000e+02 }, { "Au_190", 1.899647003390000e+02 },
|
||||
{ "Au_191", 1.909637042250000e+02 }, { "Au_192", 1.919648129530000e+02 }, { "Au_193", 1.929641497150000e+02 }, { "Au_194", 1.939653652500000e+02 },
|
||||
{ "Au_195", 1.949650346400000e+02 }, { "Au_196", 1.959665698130000e+02 }, { "Au_197", 1.969665686620000e+02 }, { "Au_198", 1.979682423030000e+02 },
|
||||
{ "Au_199", 1.989687651930000e+02 }, { "Au_200", 1.999707256470000e+02 }, { "Au_201", 2.009716572400000e+02 }, { "Au_202", 2.019738058380000e+02 },
|
||||
{ "Au_203", 2.029751545420000e+02 }, { "Au_204", 2.039777240000000e+02 }, { "Au_205", 2.049798700000000e+02 }, { "Hg_natural", 2.005900000000000e+02 },
|
||||
{ "Hg_171", 1.710037600000000e+02 }, { "Hg_172", 1.719988326860000e+02 }, { "Hg_173", 1.729972420000000e+02 }, { "Hg_174", 1.739928636950000e+02 },
|
||||
{ "Hg_175", 1.749914232700000e+02 }, { "Hg_176", 1.759873545800000e+02 }, { "Hg_177", 1.769862791580000e+02 }, { "Hg_178", 1.779824831430000e+02 },
|
||||
{ "Hg_179", 1.789818338610000e+02 }, { "Hg_180", 1.799782663940000e+02 }, { "Hg_181", 1.809778193110000e+02 }, { "Hg_182", 1.819746899640000e+02 },
|
||||
{ "Hg_183", 1.829744498410000e+02 }, { "Hg_184", 1.839717130510000e+02 }, { "Hg_185", 1.849718990860000e+02 }, { "Hg_186", 1.859693617900000e+02 },
|
||||
{ "Hg_187", 1.869698142360000e+02 }, { "Hg_188", 1.879675770490000e+02 }, { "Hg_189", 1.889681900340000e+02 }, { "Hg_190", 1.899663224490000e+02 },
|
||||
{ "Hg_191", 1.909671571050000e+02 }, { "Hg_192", 1.919656343270000e+02 }, { "Hg_193", 1.929666654210000e+02 }, { "Hg_194", 1.939654394090000e+02 },
|
||||
{ "Hg_195", 1.949667201130000e+02 }, { "Hg_196", 1.959658326490000e+02 }, { "Hg_197", 1.969672129080000e+02 }, { "Hg_198", 1.979667690320000e+02 },
|
||||
{ "Hg_199", 1.989682799320000e+02 }, { "Hg_200", 1.999683260040000e+02 }, { "Hg_201", 2.009703022680000e+02 }, { "Hg_202", 2.019706430110000e+02 },
|
||||
{ "Hg_203", 2.029728724840000e+02 }, { "Hg_204", 2.039734939330000e+02 }, { "Hg_205", 2.049760733860000e+02 }, { "Hg_206", 2.059775140660000e+02 },
|
||||
{ "Hg_207", 2.069825885450000e+02 }, { "Hg_208", 2.079859400000000e+02 }, { "Hg_209", 2.089910400000000e+02 }, { "Hg_210", 2.099945100000000e+02 },
|
||||
{ "Tl_natural", 2.043700000000000e+02 }, { "Tl_176", 1.760005900000000e+02 }, { "Tl_177", 1.769964272860000e+02 }, { "Tl_178", 1.779948970000000e+02 },
|
||||
{ "Tl_179", 1.789910890820000e+02 }, { "Tl_180", 1.799899060000000e+02 }, { "Tl_181", 1.809862574470000e+02 }, { "Tl_182", 1.819856671040000e+02 },
|
||||
{ "Tl_183", 1.829821928020000e+02 }, { "Tl_184", 1.839818731220000e+02 }, { "Tl_185", 1.849787913050000e+02 }, { "Tl_186", 1.859783250000000e+02 },
|
||||
{ "Tl_187", 1.869759058970000e+02 }, { "Tl_188", 1.879760097820000e+02 }, { "Tl_189", 1.889735884280000e+02 }, { "Tl_190", 1.899738771490000e+02 },
|
||||
{ "Tl_191", 1.909717861540000e+02 }, { "Tl_192", 1.919722250000000e+02 }, { "Tl_193", 1.929706720000000e+02 }, { "Tl_194", 1.939712000000000e+02 },
|
||||
{ "Tl_195", 1.949697743350000e+02 }, { "Tl_196", 1.959704811510000e+02 }, { "Tl_197", 1.969695745110000e+02 }, { "Tl_198", 1.979704834950000e+02 },
|
||||
{ "Tl_199", 1.989698770000000e+02 }, { "Tl_200", 1.999709626720000e+02 }, { "Tl_201", 2.009708188910000e+02 }, { "Tl_202", 2.019721058080000e+02 },
|
||||
{ "Tl_203", 2.029723442200000e+02 }, { "Tl_204", 2.039738635220000e+02 }, { "Tl_205", 2.049744275410000e+02 }, { "Tl_206", 2.059761103200000e+02 },
|
||||
{ "Tl_207", 2.069774194290000e+02 }, { "Tl_208", 2.079820187000000e+02 }, { "Tl_209", 2.089853589520000e+02 }, { "Tl_210", 2.099900736890000e+02 },
|
||||
{ "Tl_211", 2.109934770000000e+02 }, { "Tl_212", 2.119982280000000e+02 }, { "Pb_natural", 2.072000000000000e+02 }, { "Pb_178", 1.780038301910000e+02 },
|
||||
{ "Pb_179", 1.790021500000000e+02 }, { "Pb_180", 1.799979181730000e+02 }, { "Pb_181", 1.809966239580000e+02 }, { "Pb_182", 1.819926718420000e+02 },
|
||||
{ "Pb_183", 1.829918746290000e+02 }, { "Pb_184", 1.839881423390000e+02 }, { "Pb_185", 1.849876099440000e+02 }, { "Pb_186", 1.859842389450000e+02 },
|
||||
{ "Pb_187", 1.869839183700000e+02 }, { "Pb_188", 1.879808743380000e+02 }, { "Pb_189", 1.889808070000000e+02 }, { "Pb_190", 1.899780815170000e+02 },
|
||||
{ "Pb_191", 1.909782650000000e+02 }, { "Pb_192", 1.919757851710000e+02 }, { "Pb_193", 1.929761732340000e+02 }, { "Pb_194", 1.939740120700000e+02 },
|
||||
{ "Pb_195", 1.949745420500000e+02 }, { "Pb_196", 1.959727741090000e+02 }, { "Pb_197", 1.969734311240000e+02 }, { "Pb_198", 1.979720339590000e+02 },
|
||||
{ "Pb_199", 1.989729166500000e+02 }, { "Pb_200", 1.999718266750000e+02 }, { "Pb_201", 2.009728845110000e+02 }, { "Pb_202", 2.019721591330000e+02 },
|
||||
{ "Pb_203", 2.029733905210000e+02 }, { "Pb_204", 2.039730435890000e+02 }, { "Pb_205", 2.049744817550000e+02 }, { "Pb_206", 2.059744652780000e+02 },
|
||||
{ "Pb_207", 2.069758968870000e+02 }, { "Pb_208", 2.079766520710000e+02 }, { "Pb_209", 2.089810901200000e+02 }, { "Pb_210", 2.099841885270000e+02 },
|
||||
{ "Pb_211", 2.109887369640000e+02 }, { "Pb_212", 2.119918975430000e+02 }, { "Pb_213", 2.129965814990000e+02 }, { "Pb_214", 2.139998054080000e+02 },
|
||||
{ "Pb_215", 2.150048070000000e+02 }, { "Bi_natural", 2.089804000000000e+02 }, { "Bi_184", 1.840011240000000e+02 }, { "Bi_185", 1.849976250000000e+02 },
|
||||
{ "Bi_186", 1.859965976250000e+02 }, { "Bi_187", 1.869931578350000e+02 }, { "Bi_188", 1.879922651540000e+02 }, { "Bi_189", 1.889891990120000e+02 },
|
||||
{ "Bi_190", 1.899882951290000e+02 }, { "Bi_191", 1.909857861190000e+02 }, { "Bi_192", 1.919854579540000e+02 }, { "Bi_193", 1.929829597710000e+02 },
|
||||
{ "Bi_194", 1.939828339600000e+02 }, { "Bi_195", 1.949806507370000e+02 }, { "Bi_196", 1.959806665090000e+02 }, { "Bi_197", 1.969788644540000e+02 },
|
||||
{ "Bi_198", 1.979792060000000e+02 }, { "Bi_199", 1.989776719610000e+02 }, { "Bi_200", 1.999781318290000e+02 }, { "Bi_201", 2.009770090360000e+02 },
|
||||
{ "Bi_202", 2.019777423240000e+02 }, { "Bi_203", 2.029768760010000e+02 }, { "Bi_204", 2.039778127360000e+02 }, { "Bi_205", 2.049773893660000e+02 },
|
||||
{ "Bi_206", 2.059784991300000e+02 }, { "Bi_207", 2.069784706790000e+02 }, { "Bi_208", 2.079797421960000e+02 }, { "Bi_209", 2.089803987340000e+02 },
|
||||
{ "Bi_210", 2.099841203710000e+02 }, { "Bi_211", 2.109872694600000e+02 }, { "Bi_212", 2.119912857240000e+02 }, { "Bi_213", 2.129943846660000e+02 },
|
||||
{ "Bi_214", 2.139987115390000e+02 }, { "Bi_215", 2.150017697760000e+02 }, { "Bi_216", 2.160063059430000e+02 }, { "Bi_217", 2.170094700000000e+02 },
|
||||
{ "Bi_218", 2.180143160000000e+02 }, { "Po_natural", 2.090000000000000e+02 }, { "Po_188", 1.879994220480000e+02 }, { "Po_189", 1.889984805620000e+02 },
|
||||
{ "Po_190", 1.899951011850000e+02 }, { "Po_191", 1.909945744850000e+02 }, { "Po_192", 1.919913351490000e+02 }, { "Po_193", 1.929910252750000e+02 },
|
||||
{ "Po_194", 1.939881856060000e+02 }, { "Po_195", 1.949881107280000e+02 }, { "Po_196", 1.959855345800000e+02 }, { "Po_197", 1.969856596300000e+02 },
|
||||
{ "Po_198", 1.979833886160000e+02 }, { "Po_199", 1.989836660630000e+02 }, { "Po_200", 1.999817986040000e+02 }, { "Po_201", 2.009822597640000e+02 },
|
||||
{ "Po_202", 2.019807575410000e+02 }, { "Po_203", 2.029814201030000e+02 }, { "Po_204", 2.039803181210000e+02 }, { "Po_205", 2.049812033220000e+02 },
|
||||
{ "Po_206", 2.059804810990000e+02 }, { "Po_207", 2.069815931730000e+02 }, { "Po_208", 2.079812457020000e+02 }, { "Po_209", 2.089824304350000e+02 },
|
||||
{ "Po_210", 2.099828736730000e+02 }, { "Po_211", 2.109866531540000e+02 }, { "Po_212", 2.119888679690000e+02 }, { "Po_213", 2.129928572800000e+02 },
|
||||
{ "Po_214", 2.139952013500000e+02 }, { "Po_215", 2.149994199880000e+02 }, { "Po_216", 2.160019150350000e+02 }, { "Po_217", 2.170063347960000e+02 },
|
||||
{ "Po_218", 2.180089730370000e+02 }, { "Po_219", 2.190137440000000e+02 }, { "Po_220", 2.200166020000000e+02 }, { "At_natural", 2.100000000000000e+02 },
|
||||
{ "At_193", 1.929998431120000e+02 }, { "At_194", 1.939987250850000e+02 }, { "At_195", 1.949962680980000e+02 }, { "At_196", 1.959957880770000e+02 },
|
||||
{ "At_197", 1.969931892150000e+02 }, { "At_198", 1.979928372020000e+02 }, { "At_199", 1.989905322540000e+02 }, { "At_200", 1.999903512640000e+02 },
|
||||
{ "At_201", 2.009884169990000e+02 }, { "At_202", 2.019886302360000e+02 }, { "At_203", 2.029869419840000e+02 }, { "At_204", 2.039872513260000e+02 },
|
||||
{ "At_205", 2.049860744830000e+02 }, { "At_206", 2.059866670360000e+02 }, { "At_207", 2.069857835020000e+02 }, { "At_208", 2.079865899770000e+02 },
|
||||
{ "At_209", 2.089861731430000e+02 }, { "At_210", 2.099871477100000e+02 }, { "At_211", 2.109874962710000e+02 }, { "At_212", 2.119907447710000e+02 },
|
||||
{ "At_213", 2.129929366460000e+02 }, { "At_214", 2.139963717330000e+02 }, { "At_215", 2.149986525700000e+02 }, { "At_216", 2.160024232570000e+02 },
|
||||
{ "At_217", 2.170047188220000e+02 }, { "At_218", 2.180086943360000e+02 }, { "At_219", 2.190111616910000e+02 }, { "At_220", 2.200154076820000e+02 },
|
||||
{ "At_221", 2.210180500000000e+02 }, { "At_222", 2.220223300000000e+02 }, { "At_223", 2.230251900000000e+02 }, { "Rn_natural", 2.220000000000000e+02 },
|
||||
{ "Rn_195", 1.950054376960000e+02 }, { "Rn_196", 1.960021152230000e+02 }, { "Rn_197", 1.970015843510000e+02 }, { "Rn_198", 1.979986786630000e+02 },
|
||||
{ "Rn_199", 1.989983702970000e+02 }, { "Rn_200", 1.999956993000000e+02 }, { "Rn_201", 2.009956283350000e+02 }, { "Rn_202", 2.019932634920000e+02 },
|
||||
{ "Rn_203", 2.029933866870000e+02 }, { "Rn_204", 2.039914287400000e+02 }, { "Rn_205", 2.049917187990000e+02 }, { "Rn_206", 2.059902141040000e+02 },
|
||||
{ "Rn_207", 2.069907342250000e+02 }, { "Rn_208", 2.079896424700000e+02 }, { "Rn_209", 2.089904147420000e+02 }, { "Rn_210", 2.099896962160000e+02 },
|
||||
{ "Rn_211", 2.109906005230000e+02 }, { "Rn_212", 2.119907035290000e+02 }, { "Rn_213", 2.129938826680000e+02 }, { "Rn_214", 2.139953625540000e+02 },
|
||||
{ "Rn_215", 2.149987454830000e+02 }, { "Rn_216", 2.160002743700000e+02 }, { "Rn_217", 2.170039276750000e+02 }, { "Rn_218", 2.180056012560000e+02 },
|
||||
{ "Rn_219", 2.190094802040000e+02 }, { "Rn_220", 2.200113939810000e+02 }, { "Rn_221", 2.210155367820000e+02 }, { "Rn_222", 2.220175777380000e+02 },
|
||||
{ "Rn_223", 2.230217900000000e+02 }, { "Rn_224", 2.240240900000000e+02 }, { "Rn_225", 2.250284400000000e+02 }, { "Rn_226", 2.260308900000000e+02 },
|
||||
{ "Rn_227", 2.270354070000000e+02 }, { "Rn_228", 2.280379860000000e+02 }, { "Fr_natural", 2.230000000000000e+02 }, { "Fr_199", 1.990072581470000e+02 },
|
||||
{ "Fr_200", 2.000065724900000e+02 }, { "Fr_201", 2.010038608670000e+02 }, { "Fr_202", 2.020033728470000e+02 }, { "Fr_203", 2.030009246470000e+02 },
|
||||
{ "Fr_204", 2.040006532040000e+02 }, { "Fr_205", 2.049985939600000e+02 }, { "Fr_206", 2.059986660660000e+02 }, { "Fr_207", 2.069969494140000e+02 },
|
||||
{ "Fr_208", 2.079971387830000e+02 }, { "Fr_209", 2.089959535550000e+02 }, { "Fr_210", 2.099964077380000e+02 }, { "Fr_211", 2.109955365440000e+02 },
|
||||
{ "Fr_212", 2.119962022440000e+02 }, { "Fr_213", 2.129961890810000e+02 }, { "Fr_214", 2.139989711450000e+02 }, { "Fr_215", 2.150003414970000e+02 },
|
||||
{ "Fr_216", 2.160031979900000e+02 }, { "Fr_217", 2.170046319510000e+02 }, { "Fr_218", 2.180075783220000e+02 }, { "Fr_219", 2.190092521490000e+02 },
|
||||
{ "Fr_220", 2.200123274050000e+02 }, { "Fr_221", 2.210142547620000e+02 }, { "Fr_222", 2.220175517300000e+02 }, { "Fr_223", 2.230197358570000e+02 },
|
||||
{ "Fr_224", 2.240232499510000e+02 }, { "Fr_225", 2.250255654140000e+02 }, { "Fr_226", 2.260293862310000e+02 }, { "Fr_227", 2.270318359380000e+02 },
|
||||
{ "Fr_228", 2.280357290000000e+02 }, { "Fr_229", 2.290384502280000e+02 }, { "Fr_230", 2.300425100000000e+02 }, { "Fr_231", 2.310454400000000e+02 },
|
||||
{ "Fr_232", 2.320497720000000e+02 }, { "Ra_natural", 2.260000000000000e+02 }, { "Ra_202", 2.020098906860000e+02 }, { "Ra_203", 2.030092716190000e+02 },
|
||||
{ "Ra_204", 2.040064996680000e+02 }, { "Ra_205", 2.050062685700000e+02 }, { "Ra_206", 2.060038272700000e+02 }, { "Ra_207", 2.070037981050000e+02 },
|
||||
{ "Ra_208", 2.080018399400000e+02 }, { "Ra_209", 2.090019913730000e+02 }, { "Ra_210", 2.100004949780000e+02 }, { "Ra_211", 2.110008979870000e+02 },
|
||||
{ "Ra_212", 2.119997944990000e+02 }, { "Ra_213", 2.130003839590000e+02 }, { "Ra_214", 2.140001078940000e+02 }, { "Ra_215", 2.150027198340000e+02 },
|
||||
{ "Ra_216", 2.160035330350000e+02 }, { "Ra_217", 2.170063203270000e+02 }, { "Ra_218", 2.180071402300000e+02 }, { "Ra_219", 2.190100850780000e+02 },
|
||||
{ "Ra_220", 2.200110283840000e+02 }, { "Ra_221", 2.210139173380000e+02 }, { "Ra_222", 2.220153745300000e+02 }, { "Ra_223", 2.230185021710000e+02 },
|
||||
{ "Ra_224", 2.240202118210000e+02 }, { "Ra_225", 2.250236115640000e+02 }, { "Ra_226", 2.260254098230000e+02 }, { "Ra_227", 2.270291778420000e+02 },
|
||||
{ "Ra_228", 2.280310702920000e+02 }, { "Ra_229", 2.290349575770000e+02 }, { "Ra_230", 2.300370563940000e+02 }, { "Ra_231", 2.310412200000000e+02 },
|
||||
{ "Ra_232", 2.320436380000000e+02 }, { "Ra_233", 2.330480600000000e+02 }, { "Ra_234", 2.340507040000000e+02 }, { "Ac_natural", 2.270000000000000e+02 },
|
||||
{ "Ac_206", 2.060145049800000e+02 }, { "Ac_207", 2.070119497480000e+02 }, { "Ac_208", 2.080115515510000e+02 }, { "Ac_209", 2.090094948630000e+02 },
|
||||
{ "Ac_210", 2.100094359860000e+02 }, { "Ac_211", 2.110077348350000e+02 }, { "Ac_212", 2.120078138220000e+02 }, { "Ac_213", 2.130066076430000e+02 },
|
||||
{ "Ac_214", 2.140069017980000e+02 }, { "Ac_215", 2.150064536250000e+02 }, { "Ac_216", 2.160087200750000e+02 }, { "Ac_217", 2.170093469140000e+02 },
|
||||
{ "Ac_218", 2.180116414530000e+02 }, { "Ac_219", 2.190124203890000e+02 }, { "Ac_220", 2.200147629790000e+02 }, { "Ac_221", 2.210155912480000e+02 },
|
||||
{ "Ac_222", 2.220178438510000e+02 }, { "Ac_223", 2.230191374680000e+02 }, { "Ac_224", 2.240217228660000e+02 }, { "Ac_225", 2.250232295850000e+02 },
|
||||
{ "Ac_226", 2.260260980890000e+02 }, { "Ac_227", 2.270277521270000e+02 }, { "Ac_228", 2.280310211120000e+02 }, { "Ac_229", 2.290330152430000e+02 },
|
||||
{ "Ac_230", 2.300362941780000e+02 }, { "Ac_231", 2.310385587860000e+02 }, { "Ac_232", 2.320420274380000e+02 }, { "Ac_233", 2.330445500000000e+02 },
|
||||
{ "Ac_234", 2.340484200000000e+02 }, { "Ac_235", 2.350512320000000e+02 }, { "Ac_236", 2.360552960000000e+02 }, { "Th_natural", 2.320381000000000e+02 },
|
||||
{ "Th_209", 2.090177156820000e+02 }, { "Th_210", 2.100150753420000e+02 }, { "Th_211", 2.110149284130000e+02 }, { "Th_212", 2.120129802880000e+02 },
|
||||
{ "Th_213", 2.130130101400000e+02 }, { "Th_214", 2.140114997700000e+02 }, { "Th_215", 2.150117303300000e+02 }, { "Th_216", 2.160110621150000e+02 },
|
||||
{ "Th_217", 2.170131143280000e+02 }, { "Th_218", 2.180132844990000e+02 }, { "Th_219", 2.190155368950000e+02 }, { "Th_220", 2.200157477620000e+02 },
|
||||
{ "Th_221", 2.210181836740000e+02 }, { "Th_222", 2.220184681210000e+02 }, { "Th_223", 2.230208114480000e+02 }, { "Th_224", 2.240214668950000e+02 },
|
||||
{ "Th_225", 2.250239510210000e+02 }, { "Th_226", 2.260249030690000e+02 }, { "Th_227", 2.270277040700000e+02 }, { "Th_228", 2.280287411270000e+02 },
|
||||
{ "Th_229", 2.290317624300000e+02 }, { "Th_230", 2.300331338430000e+02 }, { "Th_231", 2.310363043430000e+02 }, { "Th_232", 2.320380553250000e+02 },
|
||||
{ "Th_233", 2.330415818430000e+02 }, { "Th_234", 2.340436012300000e+02 }, { "Th_235", 2.350475100740000e+02 }, { "Th_236", 2.360498700000000e+02 },
|
||||
{ "Th_237", 2.370538940000000e+02 }, { "Th_238", 2.380564960000000e+02 }, { "Pa_natural", 2.310000000000000e+02 }, { "Pa_212", 2.120232041380000e+02 },
|
||||
{ "Pa_213", 2.130211093400000e+02 }, { "Pa_214", 2.140209184170000e+02 }, { "Pa_215", 2.150191858650000e+02 }, { "Pa_216", 2.160191095640000e+02 },
|
||||
{ "Pa_217", 2.170183239860000e+02 }, { "Pa_218", 2.180200418890000e+02 }, { "Pa_219", 2.190198831430000e+02 }, { "Pa_220", 2.200218753030000e+02 },
|
||||
{ "Pa_221", 2.210218779830000e+02 }, { "Pa_222", 2.220237420000000e+02 }, { "Pa_223", 2.230239622730000e+02 }, { "Pa_224", 2.240256257380000e+02 },
|
||||
{ "Pa_225", 2.250261306780000e+02 }, { "Pa_226", 2.260279477530000e+02 }, { "Pa_227", 2.270288050720000e+02 }, { "Pa_228", 2.280310513760000e+02 },
|
||||
{ "Pa_229", 2.290320967930000e+02 }, { "Pa_230", 2.300345407540000e+02 }, { "Pa_231", 2.310358839900000e+02 }, { "Pa_232", 2.320385915920000e+02 },
|
||||
{ "Pa_233", 2.330402472770000e+02 }, { "Pa_234", 2.340433080580000e+02 }, { "Pa_235", 2.350454436150000e+02 }, { "Pa_236", 2.360486812840000e+02 },
|
||||
{ "Pa_237", 2.370511456590000e+02 }, { "Pa_238", 2.380545027100000e+02 }, { "Pa_239", 2.390572600000000e+02 }, { "Pa_240", 2.400609800000000e+02 },
|
||||
{ "U_natural", 2.380290000000000e+02 }, { "U_217", 2.170243687910000e+02 }, { "U_218", 2.180235356710000e+02 }, { "U_219", 2.190249191600000e+02 },
|
||||
{ "U_220", 2.200247230000000e+02 }, { "U_221", 2.210263990000000e+02 }, { "U_222", 2.220260860000000e+02 }, { "U_223", 2.230277386000000e+02 },
|
||||
{ "U_224", 2.240276047780000e+02 }, { "U_225", 2.250293907170000e+02 }, { "U_226", 2.260293387020000e+02 }, { "U_227", 2.270311563670000e+02 },
|
||||
{ "U_228", 2.280313740060000e+02 }, { "U_229", 2.290335059390000e+02 }, { "U_230", 2.300339397840000e+02 }, { "U_231", 2.310362937040000e+02 },
|
||||
{ "U_232", 2.320371561520000e+02 }, { "U_233", 2.330396352070000e+02 }, { "U_234", 2.340409520880000e+02 }, { "U_235", 2.350439299180000e+02 },
|
||||
{ "U_236", 2.360455680060000e+02 }, { "U_237", 2.370487301840000e+02 }, { "U_238", 2.380507882470000e+02 }, { "U_239", 2.390542932990000e+02 },
|
||||
{ "U_240", 2.400565919880000e+02 }, { "U_241", 2.410603300000000e+02 }, { "U_242", 2.420629310000000e+02 }, { "Np_natural", 2.370000000000000e+02 },
|
||||
{ "Np_225", 2.250339139330000e+02 }, { "Np_226", 2.260351450000000e+02 }, { "Np_227", 2.270349567890000e+02 }, { "Np_228", 2.280361800000000e+02 },
|
||||
{ "Np_229", 2.290362638080000e+02 }, { "Np_230", 2.300378275970000e+02 }, { "Np_231", 2.310382450850000e+02 }, { "Np_232", 2.320401080000000e+02 },
|
||||
{ "Np_233", 2.330407405460000e+02 }, { "Np_234", 2.340428950380000e+02 }, { "Np_235", 2.350440632670000e+02 }, { "Np_236", 2.360465696000000e+02 },
|
||||
{ "Np_237", 2.370481734440000e+02 }, { "Np_238", 2.380509464050000e+02 }, { "Np_239", 2.390529390250000e+02 }, { "Np_240", 2.400561621820000e+02 },
|
||||
{ "Np_241", 2.410582524310000e+02 }, { "Np_242", 2.420616411800000e+02 }, { "Np_243", 2.430642790000000e+02 }, { "Np_244", 2.440678500000000e+02 },
|
||||
{ "Pu_natural", 2.440000000000000e+02 }, { "Pu_228", 2.280387423280000e+02 }, { "Pu_229", 2.290401502120000e+02 }, { "Pu_230", 2.300396498860000e+02 },
|
||||
{ "Pu_231", 2.310411011070000e+02 }, { "Pu_232", 2.320411870970000e+02 }, { "Pu_233", 2.330429973750000e+02 }, { "Pu_234", 2.340433170760000e+02 },
|
||||
{ "Pu_235", 2.350452860500000e+02 }, { "Pu_236", 2.360460579640000e+02 }, { "Pu_237", 2.370484096580000e+02 }, { "Pu_238", 2.380495598940000e+02 },
|
||||
{ "Pu_239", 2.390521633810000e+02 }, { "Pu_240", 2.400538135450000e+02 }, { "Pu_241", 2.410568514560000e+02 }, { "Pu_242", 2.420587426110000e+02 },
|
||||
{ "Pu_243", 2.430620030920000e+02 }, { "Pu_244", 2.440642039070000e+02 }, { "Pu_245", 2.450677471540000e+02 }, { "Pu_246", 2.460702046270000e+02 },
|
||||
{ "Pu_247", 2.470740700000000e+02 }, { "Am_natural", 2.430000000000000e+02 }, { "Am_231", 2.310455600000000e+02 }, { "Am_232", 2.320465900000000e+02 },
|
||||
{ "Am_233", 2.330463480000000e+02 }, { "Am_234", 2.340478090000000e+02 }, { "Am_235", 2.350479460000000e+02 }, { "Am_236", 2.360495790000000e+02 },
|
||||
{ "Am_237", 2.370499960000000e+02 }, { "Am_238", 2.380519843240000e+02 }, { "Am_239", 2.390530244790000e+02 }, { "Am_240", 2.400553001790000e+02 },
|
||||
{ "Am_241", 2.410568291440000e+02 }, { "Am_242", 2.420595491590000e+02 }, { "Am_243", 2.430613810800000e+02 }, { "Am_244", 2.440642848470000e+02 },
|
||||
{ "Am_245", 2.450664521140000e+02 }, { "Am_246", 2.460697746190000e+02 }, { "Am_247", 2.470720930000000e+02 }, { "Am_248", 2.480757520000000e+02 },
|
||||
{ "Am_249", 2.490784800000000e+02 }, { "Cm_natural", 2.470000000000000e+02 }, { "Cm_233", 2.330507712320000e+02 }, { "Cm_234", 2.340501598410000e+02 },
|
||||
{ "Cm_235", 2.350514340000000e+02 }, { "Cm_236", 2.360514130000000e+02 }, { "Cm_237", 2.370529010000000e+02 }, { "Cm_238", 2.380530286970000e+02 },
|
||||
{ "Cm_239", 2.390549570000000e+02 }, { "Cm_240", 2.400555295390000e+02 }, { "Cm_241", 2.410576530010000e+02 }, { "Cm_242", 2.420588358240000e+02 },
|
||||
{ "Cm_243", 2.430613891140000e+02 }, { "Cm_244", 2.440627525780000e+02 }, { "Cm_245", 2.450654912490000e+02 }, { "Cm_246", 2.460672236620000e+02 },
|
||||
{ "Cm_247", 2.470703535400000e+02 }, { "Cm_248", 2.480723485080000e+02 }, { "Cm_249", 2.490759534130000e+02 }, { "Cm_250", 2.500783569590000e+02 },
|
||||
{ "Cm_251", 2.510822846050000e+02 }, { "Cm_252", 2.520848700000000e+02 }, { "Bk_natural", 2.470000000000000e+02 }, { "Bk_235", 2.350565800000000e+02 },
|
||||
{ "Bk_236", 2.360573300000000e+02 }, { "Bk_237", 2.370570030000000e+02 }, { "Bk_238", 2.380582810000000e+02 }, { "Bk_239", 2.390582790000000e+02 },
|
||||
{ "Bk_240", 2.400597590000000e+02 }, { "Bk_241", 2.410602300000000e+02 }, { "Bk_242", 2.420619810000000e+02 }, { "Bk_243", 2.430630075720000e+02 },
|
||||
{ "Bk_244", 2.440651807740000e+02 }, { "Bk_245", 2.450663616160000e+02 }, { "Bk_246", 2.460686729470000e+02 }, { "Bk_247", 2.470703070800000e+02 },
|
||||
{ "Bk_248", 2.480730860000000e+02 }, { "Bk_249", 2.490749866570000e+02 }, { "Bk_250", 2.500783165200000e+02 }, { "Bk_251", 2.510807601720000e+02 },
|
||||
{ "Bk_252", 2.520843100000000e+02 }, { "Bk_253", 2.530868800000000e+02 }, { "Bk_254", 2.540906000000000e+02 }, { "Cf_natural", 2.510000000000000e+02 },
|
||||
{ "Cf_237", 2.370620700000000e+02 }, { "Cf_238", 2.380614100000000e+02 }, { "Cf_239", 2.390624220000000e+02 }, { "Cf_240", 2.400623020000000e+02 },
|
||||
{ "Cf_241", 2.410637260000000e+02 }, { "Cf_242", 2.420637015520000e+02 }, { "Cf_243", 2.430654270000000e+02 }, { "Cf_244", 2.440660006890000e+02 },
|
||||
{ "Cf_245", 2.450680486120000e+02 }, { "Cf_246", 2.460688053090000e+02 }, { "Cf_247", 2.470710005890000e+02 }, { "Cf_248", 2.480721848610000e+02 },
|
||||
{ "Cf_249", 2.490748535370000e+02 }, { "Cf_250", 2.500764060660000e+02 }, { "Cf_251", 2.510795867880000e+02 }, { "Cf_252", 2.520816258460000e+02 },
|
||||
{ "Cf_253", 2.530851331450000e+02 }, { "Cf_254", 2.540873229090000e+02 }, { "Cf_255", 2.550910460000000e+02 }, { "Cf_256", 2.560934400000000e+02 },
|
||||
{ "Es_natural", 2.520000000000000e+02 }, { "Es_120", 1.175000000000000e+02 }, { "Es_121", 1.165460000000000e+02 }, { "Es_122", 1.185440000000000e+02 },
|
||||
{ "Es_125", 1.175000000000000e+02 }, { "Es_240", 2.400689200000000e+02 }, { "Es_241", 2.410685380000000e+02 }, { "Es_242", 2.420697450000000e+02 },
|
||||
{ "Es_243", 2.430695480000000e+02 }, { "Es_244", 2.440708830000000e+02 }, { "Es_245", 2.450713240000000e+02 }, { "Es_246", 2.460728960000000e+02 },
|
||||
{ "Es_247", 2.470736560000000e+02 }, { "Es_248", 2.480754710000000e+02 }, { "Es_249", 2.490764110000000e+02 }, { "Es_250", 2.500786120000000e+02 },
|
||||
{ "Es_251", 2.510799921420000e+02 }, { "Es_252", 2.520829785120000e+02 }, { "Es_253", 2.530848246970000e+02 }, { "Es_254", 2.540880220210000e+02 },
|
||||
{ "Es_255", 2.550902731220000e+02 }, { "Es_256", 2.560935980000000e+02 }, { "Es_257", 2.570959790000000e+02 }, { "Es_258", 2.580995200000000e+02 },
|
||||
{ "Fm_natural", 2.570000000000000e+02 }, { "Fm_242", 2.420734300000000e+02 }, { "Fm_243", 2.430743530000000e+02 }, { "Fm_244", 2.440740840000000e+02 },
|
||||
{ "Fm_245", 2.450753850000000e+02 }, { "Fm_246", 2.460752990230000e+02 }, { "Fm_247", 2.470768470000000e+02 }, { "Fm_248", 2.480771947140000e+02 },
|
||||
{ "Fm_249", 2.490790340000000e+02 }, { "Fm_250", 2.500795212640000e+02 }, { "Fm_251", 2.510815750170000e+02 }, { "Fm_252", 2.520824668550000e+02 },
|
||||
{ "Fm_253", 2.530851852360000e+02 }, { "Fm_254", 2.540868542200000e+02 }, { "Fm_255", 2.550899622020000e+02 }, { "Fm_256", 2.560917731170000e+02 },
|
||||
{ "Fm_257", 2.570951047240000e+02 }, { "Fm_258", 2.580970760000000e+02 }, { "Fm_259", 2.591005950000000e+02 }, { "Fm_260", 2.601026780000000e+02 },
|
||||
{ "Md_natural", 2.580000000000000e+02 }, { "Md_245", 2.450808290000000e+02 }, { "Md_246", 2.460818860000000e+02 }, { "Md_247", 2.470816350000000e+02 },
|
||||
{ "Md_248", 2.480828230000000e+02 }, { "Md_249", 2.490830130000000e+02 }, { "Md_250", 2.500844200000000e+02 }, { "Md_251", 2.510848390000000e+02 },
|
||||
{ "Md_252", 2.520865600000000e+02 }, { "Md_253", 2.530872800000000e+02 }, { "Md_254", 2.540896560000000e+02 }, { "Md_255", 2.550910827050000e+02 },
|
||||
{ "Md_256", 2.560940590250000e+02 }, { "Md_257", 2.570955413680000e+02 }, { "Md_258", 2.580984313190000e+02 }, { "Md_259", 2.591005090000000e+02 },
|
||||
{ "Md_260", 2.601036520000000e+02 }, { "Md_261", 2.611057210000000e+02 }, { "Md_262", 2.621088650000000e+02 }, { "No_natural", 2.590000000000000e+02 },
|
||||
{ "No_248", 2.480865960000000e+02 }, { "No_249", 2.490878330000000e+02 }, { "No_250", 2.500875100000000e+02 }, { "No_251", 2.510890120000000e+02 },
|
||||
{ "No_252", 2.520889765210000e+02 }, { "No_253", 2.530906780000000e+02 }, { "No_254", 2.540909552530000e+02 }, { "No_255", 2.550932411310000e+02 },
|
||||
{ "No_256", 2.560942826660000e+02 }, { "No_257", 2.570968771900000e+02 }, { "No_258", 2.580982070000000e+02 }, { "No_259", 2.591010310000000e+02 },
|
||||
{ "No_260", 2.601026430000000e+02 }, { "No_261", 2.611057490000000e+02 }, { "No_262", 2.621073010000000e+02 }, { "No_263", 2.631105520000000e+02 },
|
||||
{ "No_264", 2.641123450000000e+02 }, { "Lr_natural", 2.600000000000000e+02 }, { "Lr_251", 2.510943600000000e+02 }, { "Lr_252", 2.520953710000000e+02 },
|
||||
{ "Lr_253", 2.530952100000000e+02 }, { "Lr_254", 2.540964540000000e+02 }, { "Lr_255", 2.550966810000000e+02 }, { "Lr_256", 2.560986290000000e+02 },
|
||||
{ "Lr_257", 2.570995550000000e+02 }, { "Lr_258", 2.581018140000000e+02 }, { "Lr_259", 2.591029010000000e+02 }, { "Lr_260", 2.601055040000000e+02 },
|
||||
{ "Lr_261", 2.611068830000000e+02 }, { "Lr_262", 2.621096340000000e+02 }, { "Lr_263", 2.631112930000000e+02 }, { "Lr_264", 2.641140380000000e+02 },
|
||||
{ "Lr_265", 2.651158390000000e+02 }, { "Lr_266", 2.661193050000000e+02 }, { "Rf_natural", 2.610000000000000e+02 }, { "Rf_253", 2.531006890000000e+02 },
|
||||
{ "Rf_254", 2.541001840000000e+02 }, { "Rf_255", 2.551013400000000e+02 }, { "Rf_256", 2.561011661940000e+02 }, { "Rf_257", 2.571029900000000e+02 },
|
||||
{ "Rf_258", 2.581034890000000e+02 }, { "Rf_259", 2.591056370000000e+02 }, { "Rf_260", 2.601064400000000e+02 }, { "Rf_261", 2.611087665560000e+02 },
|
||||
{ "Rf_262", 2.621099250000000e+02 }, { "Rf_263", 2.631125470000000e+02 }, { "Rf_264", 2.641139850000000e+02 }, { "Rf_265", 2.651167040000000e+02 },
|
||||
{ "Rf_266", 2.661179560000000e+02 }, { "Rf_267", 2.671215290000000e+02 }, { "Rf_268", 2.681236440000000e+02 }, { "Db_natural", 2.620000000000000e+02 },
|
||||
{ "Db_255", 2.551073980000000e+02 }, { "Db_256", 2.561081270000000e+02 }, { "Db_257", 2.571077220000000e+02 }, { "Db_258", 2.581092310000000e+02 },
|
||||
{ "Db_259", 2.591096100000000e+02 }, { "Db_260", 2.601113000000000e+02 }, { "Db_261", 2.611120560000000e+02 }, { "Db_262", 2.621140840000000e+02 },
|
||||
{ "Db_263", 2.631149880000000e+02 }, { "Db_264", 2.641174040000000e+02 }, { "Db_265", 2.651186010000000e+02 }, { "Db_266", 2.661210290000000e+02 },
|
||||
{ "Db_267", 2.671223770000000e+02 }, { "Db_268", 2.681254450000000e+02 }, { "Db_269", 2.691274600000000e+02 }, { "Db_270", 2.701307120000000e+02 },
|
||||
{ "Sg_natural", 2.630000000000000e+02 }, { "Sg_258", 2.581131680000000e+02 }, { "Sg_259", 2.591145000000000e+02 }, { "Sg_260", 2.601144220710000e+02 },
|
||||
{ "Sg_261", 2.611161170000000e+02 }, { "Sg_262", 2.621163980000000e+02 }, { "Sg_263", 2.631183220000000e+02 }, { "Sg_264", 2.641189310000000e+02 },
|
||||
{ "Sg_265", 2.651211146930000e+02 }, { "Sg_266", 2.661220650000000e+02 }, { "Sg_267", 2.671244250000000e+02 }, { "Sg_268", 2.681256060000000e+02 },
|
||||
{ "Sg_269", 2.691287550000000e+02 }, { "Sg_270", 2.701303290000000e+02 }, { "Sg_271", 2.711334720000000e+02 }, { "Sg_272", 2.721351580000000e+02 },
|
||||
{ "Sg_273", 2.731382200000000e+02 }, { "Bh_260", 2.601219700000000e+02 }, { "Bh_261", 2.611216640000000e+02 }, { "Bh_262", 2.621228920000000e+02 },
|
||||
{ "Bh_263", 2.631230350000000e+02 }, { "Bh_264", 2.641246040000000e+02 }, { "Bh_265", 2.651251470000000e+02 }, { "Bh_266", 2.661269420000000e+02 },
|
||||
{ "Bh_267", 2.671276500000000e+02 }, { "Bh_268", 2.681297550000000e+02 }, { "Bh_269", 2.691306940000000e+02 }, { "Bh_270", 2.701336160000000e+02 },
|
||||
{ "Bh_271", 2.711351790000000e+02 }, { "Bh_272", 2.721380320000000e+02 }, { "Bh_273", 2.731396180000000e+02 }, { "Bh_274", 2.741424400000000e+02 },
|
||||
{ "Bh_275", 2.751442500000000e+02 }, { "Hs_263", 2.631285580000000e+02 }, { "Hs_264", 2.641283948850000e+02 }, { "Hs_265", 2.651300850000000e+02 },
|
||||
{ "Hs_266", 2.661300970000000e+02 }, { "Hs_267", 2.671317890000000e+02 }, { "Hs_268", 2.681321620000000e+02 }, { "Hs_269", 2.691340560000000e+02 },
|
||||
{ "Hs_270", 2.701346500000000e+02 }, { "Hs_271", 2.711376570000000e+02 }, { "Hs_272", 2.721390520000000e+02 }, { "Hs_273", 2.731419860000000e+02 },
|
||||
{ "Hs_274", 2.741431310000000e+02 }, { "Hs_275", 2.751459520000000e+02 }, { "Hs_276", 2.761472080000000e+02 }, { "Hs_277", 2.771498410000000e+02 },
|
||||
{ "Mt_265", 2.651361510000000e+02 }, { "Mt_266", 2.661372990000000e+02 }, { "Mt_267", 2.671373070000000e+02 }, { "Mt_268", 2.681387280000000e+02 },
|
||||
{ "Mt_269", 2.691390550000000e+02 }, { "Mt_270", 2.701406570000000e+02 }, { "Mt_271", 2.711411390000000e+02 }, { "Mt_272", 2.721437380000000e+02 },
|
||||
{ "Mt_273", 2.731449130000000e+02 }, { "Mt_274", 2.741474920000000e+02 }, { "Mt_275", 2.751486470000000e+02 }, { "Mt_276", 2.761511560000000e+02 },
|
||||
{ "Mt_277", 2.771524200000000e+02 }, { "Mt_278", 2.781548120000000e+02 }, { "Mt_279", 2.791561930000000e+02 }, { "Uun_267", 2.671443410000000e+02 },
|
||||
{ "Uun_268", 2.681437950000000e+02 }, { "Uun_269", 2.691451240000000e+02 }, { "Uun_270", 2.701447200000000e+02 }, { "Uun_271", 2.711460620000000e+02 },
|
||||
{ "Uun_272", 2.721463170000000e+02 }, { "Uun_273", 2.731488630000000e+02 }, { "Uun_274", 2.741494920000000e+02 }, { "Uun_275", 2.751521760000000e+02 },
|
||||
{ "Uun_276", 2.761530340000000e+02 }, { "Uun_277", 2.771556470000000e+02 }, { "Uun_278", 2.781564690000000e+02 }, { "Uun_279", 2.791588610000000e+02 },
|
||||
{ "Uun_280", 2.801597950000000e+02 }, { "Uun_281", 2.811620610000000e+02 }, { "Uuu_272", 2.721536150000000e+02 }, { "Uuu_273", 2.731536820000000e+02 },
|
||||
{ "Uuu_274", 2.741557130000000e+02 }, { "Uuu_275", 2.751561420000000e+02 }, { "Uuu_276", 2.761584930000000e+02 }, { "Uuu_277", 2.771595190000000e+02 },
|
||||
{ "Uuu_278", 2.781616040000000e+02 }, { "Uuu_279", 2.791624680000000e+02 }, { "Uuu_280", 2.801644730000000e+02 }, { "Uuu_281", 2.811653720000000e+02 },
|
||||
{ "Uuu_282", 2.821674860000000e+02 }, { "Uuu_283", 2.831684150000000e+02 }, { "Uub_277", 2.771639430000000e+02 }, { "Uub_278", 2.781643120000000e+02 },
|
||||
{ "Uub_279", 2.791665460000000e+02 }, { "Uub_280", 2.801670390000000e+02 }, { "Uub_281", 2.811692860000000e+02 }, { "Uub_282", 2.821697650000000e+02 },
|
||||
{ "Uub_283", 2.831717920000000e+02 }, { "Uub_284", 2.841723840000000e+02 }, { "Uub_285", 2.851741050000000e+02 }, { "_283", 2.831764510000000e+02 },
|
||||
{ "_284", 2.841780800000000e+02 }, { "_285", 2.851787320000000e+02 }, { "_286", 2.861804810000000e+02 }, { "_287", 2.871810450000000e+02 },
|
||||
{ "Uuq_285", 2.851836980000000e+02 }, { "Uuq_286", 2.861838550000000e+02 }, { "Uuq_287", 2.871855990000000e+02 }, { "Uuq_288", 2.881856890000000e+02 },
|
||||
{ "Uuq_289", 2.891872790000000e+02 }, { "_287", 2.871911860000000e+02 }, { "_288", 2.881924920000000e+02 }, { "_289", 2.891927150000000e+02 },
|
||||
{ "_290", 2.901941410000000e+02 }, { "_291", 2.911943840000000e+02 }, { "Uuh_289", 2.891988620000000e+02 }, { "Uuh_290", 2.901985900000000e+02 },
|
||||
{ "Uuh_291", 2.912000110000000e+02 }, { "Uuh_292", 2.921997860000000e+02 }, { "_291", 2.912065640000000e+02 }, { "_292", 2.922075490000000e+02 },
|
||||
{ "Uuo_293", 2.932146700000000e+02 } };
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_targetMass( const char *targetSymbol ) {
|
||||
|
||||
int i, n = sizeof( ZAMasses ) / sizeof( ZAMasses[0] );
|
||||
double mass = -1.0;
|
||||
|
||||
//TK modified
|
||||
std::string target(targetSymbol);
|
||||
for( i = 0; i < n; i++ ) {
|
||||
//TK modified
|
||||
//if( !strcmp( ZAMasses[i].symbol, targetSymbol ) ) {
|
||||
if( ZAMasses[i].symbol == target ) {
|
||||
mass = ZAMasses[i].mass;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return( mass );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_Z_AMass( int iZ, int iA ) {
|
||||
|
||||
char *name = G4GIDI_Misc_Z_A_m_ToName( iZ, iA );
|
||||
double mass;
|
||||
|
||||
if( name == NULL ) return( -1.0 );
|
||||
mass = G4GIDI_targetMass( name );
|
||||
xData_free( NULL, name );
|
||||
return( mass );
|
||||
}
|
||||
@@ -0,0 +1,433 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "G4GIDI_target.hh"
|
||||
#include "G4GIDI_mass.hh"
|
||||
#include "G4GIDI_Misc.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace GIDI;
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target::G4GIDI_target( const char *fileName ) {
|
||||
|
||||
init( fileName );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target::G4GIDI_target( string &fileName ) {
|
||||
|
||||
init( fileName.c_str( ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
void G4GIDI_target::init( const char *fileName ) {
|
||||
|
||||
int i, j, n, *p, *q;
|
||||
tpia_channel *channel;
|
||||
|
||||
smr_initialize( &smr );
|
||||
sourceFilename = fileName;
|
||||
target = tpia_target_createRead( &smr, fileName );
|
||||
if( !smr_isOk( &smr ) ) {
|
||||
smr_print( &smr, stderr, 1 );
|
||||
throw 1;
|
||||
}
|
||||
name = target->targetID->name;
|
||||
mass = G4GIDI_targetMass( target->targetID->name );
|
||||
equalProbableBinSampleMethod = "constant";
|
||||
elasticIndices = NULL;
|
||||
nElasticIndices = nCaptureIndices = nFissionIndices = nOthersIndices = 0;
|
||||
|
||||
if( ( n = tpia_target_numberOfChannels( &smr, target ) ) > 0 ) {
|
||||
p = elasticIndices = (int *) xData_malloc2( NULL, n * sizeof( double ), 1, "elasticIndices" );
|
||||
for( i = 0; i < n; i++ ) { /* Find elastic channel(s). */
|
||||
channel = tpia_target_heated_getChannelAtIndex( target->baseHeatedTarget, i );
|
||||
if( channel->ENDL_C == 10 ) {
|
||||
*(p++) = i;
|
||||
nElasticIndices++;
|
||||
}
|
||||
}
|
||||
captureIndices = p;
|
||||
for( i = 0; i < n; i++ ) { /* Find capture channel(s). */
|
||||
channel = tpia_target_heated_getChannelAtIndex( target->baseHeatedTarget, i );
|
||||
if( channel->ENDL_C == 46 ) {
|
||||
*(p++) = i;
|
||||
nCaptureIndices++;
|
||||
}
|
||||
}
|
||||
|
||||
fissionIndices = p;
|
||||
for( i = 0; i < n; i++ ) { /* Find fission channel(s). */
|
||||
channel = tpia_target_heated_getChannelAtIndex( target->baseHeatedTarget, i );
|
||||
if( channel->fission != NULL ) {
|
||||
*(p++) = i;
|
||||
nFissionIndices++;
|
||||
}
|
||||
}
|
||||
othersIndices = p;
|
||||
for( i = 0; i < n; i++ ) { /* Find other channel(s). */
|
||||
for( j = 0, q = elasticIndices; j < nElasticIndices; j++, q++ ) if( *q == i ) break;
|
||||
if( j < nElasticIndices ) continue;
|
||||
for( j = 0, q = captureIndices; j < nCaptureIndices; j++, q++ ) if( *q == i ) break;
|
||||
if( j < nCaptureIndices ) continue;
|
||||
for( j = 0, q = fissionIndices; j < nFissionIndices; j++, q++ ) if( *q == i ) break;
|
||||
if( j < nFissionIndices ) continue;
|
||||
*p = i;
|
||||
p++;
|
||||
nOthersIndices++;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
G4GIDI_target::~G4GIDI_target( ) {
|
||||
|
||||
tpia_target_free( &smr, target );
|
||||
xData_free( &smr, elasticIndices );
|
||||
smr_release( &smr );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
string *G4GIDI_target::getName( void ) { return( &name ); }
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
string *G4GIDI_target::getFilename( void ) { return( &sourceFilename ); }
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getZ( void ) {
|
||||
|
||||
return( target->targetID->Z );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getA( void ) {
|
||||
|
||||
return( target->targetID->A );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getM( void ) {
|
||||
|
||||
return( target->targetID->m );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getMass( void ) {
|
||||
|
||||
return( mass );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getTemperatures( double *temperatures ) {
|
||||
|
||||
return( tpia_target_getTemperatures( &smr, target, temperatures ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::readTemperature( int index ) {
|
||||
|
||||
return( tpia_target_readHeatedTarget( &smr, target, index, 0 ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
string G4GIDI_target::getEqualProbableBinSampleMethod( void ) {
|
||||
|
||||
return( equalProbableBinSampleMethod );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::setEqualProbableBinSampleMethod( string method ) {
|
||||
|
||||
if( method == "constant" ) {
|
||||
equalProbableBinSampleMethod = "constant"; }
|
||||
if( method == "linear" ) {
|
||||
equalProbableBinSampleMethod = "linear"; }
|
||||
else {
|
||||
return( 1 );
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getNumberOfChannels( void ) {
|
||||
|
||||
return( tpia_target_numberOfChannels( &smr, target ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::getNumberOfProductionChannels( void ) {
|
||||
|
||||
return( tpia_target_numberOfProductionChannels( &smr, target ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<channelID> *G4GIDI_target::getChannelIDs( void ) {
|
||||
|
||||
return( getChannelIDs2( target->baseHeatedTarget->channels, tpia_target_numberOfChannels( &smr, target ) ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<channelID> *G4GIDI_target::getProductionChannelIDs( void ) {
|
||||
|
||||
return( getChannelIDs2( target->baseHeatedTarget->productionChannels, tpia_target_numberOfProductionChannels( &smr, target ) ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<channelID> *G4GIDI_target::getChannelIDs2( tpia_channel **channels, int n ) {
|
||||
|
||||
int i = 0;
|
||||
vector<channelID> *listOfChannels;
|
||||
|
||||
listOfChannels = new vector<channelID>( n );
|
||||
for( i = 0; i < n; i++ ) (*listOfChannels)[i].ID = channels[i]->outputChannel;
|
||||
return( listOfChannels );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<double> *G4GIDI_target::getEnergyGridAtTIndex( int index ) {
|
||||
|
||||
xData_Int i, n;
|
||||
double *dEnergyGrid;
|
||||
vector<double> *energyGrid;
|
||||
vector<double>::iterator iter;
|
||||
|
||||
n = tpia_target_getEnergyGridAtTIndex( &smr, target, index, &dEnergyGrid );
|
||||
if( n < 0 ) return( NULL );
|
||||
energyGrid = new vector<double>( n );
|
||||
for( i = 0, iter = energyGrid->begin( ); i < n; i++, iter++ ) *iter = dEnergyGrid[i];
|
||||
return( energyGrid );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getTotalCrossSectionAtE( double e_in, double temperature ) {
|
||||
|
||||
return( tpia_target_getTotalCrossSectionAtTAndE( NULL, target, temperature, -1, e_in, tpia_crossSectionType_pointwise ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getElasticCrossSectionAtE( double e_in, double temperature ) {
|
||||
|
||||
return( sumChannelCrossSectionAtE( nElasticIndices, elasticIndices, e_in, temperature ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getCaptureCrossSectionAtE( double e_in, double temperature ) {
|
||||
|
||||
return( sumChannelCrossSectionAtE( nCaptureIndices, captureIndices, e_in, temperature ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getFissionCrossSectionAtE( double e_in, double temperature ) {
|
||||
|
||||
return( sumChannelCrossSectionAtE( nFissionIndices, fissionIndices, e_in, temperature ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::getOthersCrossSectionAtE( double e_in, double temperature ) {
|
||||
|
||||
return( sumChannelCrossSectionAtE( nOthersIndices, othersIndices, e_in, temperature ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double G4GIDI_target::sumChannelCrossSectionAtE( int nIndices, int *indices, double e_in, double temperature ) {
|
||||
|
||||
int i;
|
||||
double xsec = 0.;
|
||||
|
||||
for( i = 0; i < nIndices; i++ )
|
||||
xsec += tpia_target_getIndexChannelCrossSectionAtE( &smr, target, indices[i], temperature, -1, e_in, tpia_crossSectionType_pointwise );
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
int G4GIDI_target::sampleChannelCrossSectionAtE( int nIndices, int *indices, double e_in, double temperature,
|
||||
double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
int i;
|
||||
double xsec = 0., rxsec = sumChannelCrossSectionAtE( nIndices, indices, e_in, temperature ) * tpia_misc_drng( rng, rngState );
|
||||
|
||||
for( i = 0; i < nIndices - 1; i++ ) {
|
||||
xsec += tpia_target_getIndexChannelCrossSectionAtE( &smr, target, indices[i], temperature, -1, e_in, tpia_crossSectionType_pointwise );
|
||||
if( xsec >= rxsec ) break;
|
||||
}
|
||||
return( indices[i] );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
//double G4GIDI_target::getElasticFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState ) {
|
||||
double G4GIDI_target::getElasticFinalState( double e_in, double , double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
tpia_decaySamplingInfo decaySamplingInfo;
|
||||
tpia_channel *channel = tpia_target_heated_getChannelAtIndex_smr( &smr, target->baseHeatedTarget, elasticIndices[0] );
|
||||
tpia_product *product;
|
||||
|
||||
decaySamplingInfo.e_in = e_in;
|
||||
decaySamplingInfo.isVelocity = 0;
|
||||
tpia_frame_setColumn( &smr, &(decaySamplingInfo.frame), 0, tpia_referenceFrame_lab );
|
||||
decaySamplingInfo.samplingMethods = &(target->samplingMethods);
|
||||
decaySamplingInfo.rng = rng;
|
||||
decaySamplingInfo.rngState = rngState;
|
||||
product = tpia_decayChannel_getFirstProduct( &(channel->decayChannel) );
|
||||
tpia_angular_SampleMu( &smr, &(product->angular), &decaySamplingInfo );
|
||||
|
||||
return( decaySamplingInfo.mu );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<G4GIDI_Product> *G4GIDI_target::getCaptureFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
return( getFinalState( nCaptureIndices, captureIndices, e_in, temperature, rng, rngState ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<G4GIDI_Product> *G4GIDI_target::getFissionFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
return( getFinalState( nFissionIndices, fissionIndices, e_in, temperature, rng, rngState ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<G4GIDI_Product> *G4GIDI_target::getOthersFinalState( double e_in, double temperature, double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
return( getFinalState( nOthersIndices, othersIndices, e_in, temperature, rng, rngState ) );
|
||||
}
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
vector<G4GIDI_Product> *G4GIDI_target::getFinalState( int nIndices, int *indices, double e_in, double temperature, double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
#define nProductsMax 50
|
||||
int index = 0, i, n;
|
||||
vector<G4GIDI_Product> *products = NULL;
|
||||
tpia_decaySamplingInfo decaySamplingInfo;
|
||||
tpia_productOutgoingData productDatas[nProductsMax], *productData;
|
||||
|
||||
decaySamplingInfo.e_in = e_in;
|
||||
decaySamplingInfo.samplingMethods = &(target->samplingMethods);
|
||||
decaySamplingInfo.isVelocity = 0;
|
||||
tpia_frame_setColumn( &smr, &(decaySamplingInfo.frame), 0, tpia_referenceFrame_lab );
|
||||
decaySamplingInfo.rng = rng;
|
||||
decaySamplingInfo.rngState = rngState;
|
||||
|
||||
if( nIndices == 0 ) {
|
||||
return( NULL ); }
|
||||
else {
|
||||
if( nIndices == 1 ) {
|
||||
index = indices[0]; }
|
||||
else {
|
||||
index = sampleChannelCrossSectionAtE( nIndices, indices, e_in, temperature, rng, rngState );
|
||||
}
|
||||
}
|
||||
n = tpia_target_heated_sampleIndexChannelProductsAtE( &smr, target->baseHeatedTarget, index, &decaySamplingInfo, nProductsMax, productDatas );
|
||||
if( n > 0 ) {
|
||||
if( ( products = new vector<G4GIDI_Product>( n ) ) != NULL ) {
|
||||
for( i = 0; i < n; i++ ) {
|
||||
productData = &(productDatas[i]);
|
||||
(*products)[i].A = productData->productID->A;
|
||||
(*products)[i].Z = productData->productID->Z;
|
||||
(*products)[i].m = productData->productID->m;
|
||||
(*products)[i].kineticEnergy = productData->kineticEnergy;
|
||||
(*products)[i].px = productData->px_vx;
|
||||
(*products)[i].py = productData->py_vy;
|
||||
(*products)[i].pz = productData->pz_vz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( products );
|
||||
#undef nProductsMax
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#include "G4LENDCapture.hh"
|
||||
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
G4HadFinalState * G4LENDCapture::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTarg )
|
||||
{
|
||||
|
||||
G4double temp = aTrack.GetMaterial()->GetTemperature();
|
||||
|
||||
//G4int iZ = int ( aTarg.GetZ() );
|
||||
//G4int iA = int ( aTarg.GetN() );
|
||||
//migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
|
||||
G4int iZ = aTarg.GetZ_asInt();
|
||||
G4int iA = aTarg.GetA_asInt();
|
||||
|
||||
G4double ke = aTrack.GetKineticEnergy();
|
||||
|
||||
G4HadFinalState* theResult = &theParticleChange;
|
||||
theResult->Clear();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
std::vector<G4GIDI_Product>* products = aTarget->getCaptureFinalState( ke*MeV, temp, NULL, NULL );
|
||||
|
||||
|
||||
if ( products != NULL )
|
||||
{
|
||||
|
||||
G4ThreeVector p(0,0,0);
|
||||
G4int totN = 0;
|
||||
|
||||
for ( G4int j = 0; j < int( products->size() ); j++ )
|
||||
{
|
||||
G4int jZ = (*products)[j].Z;
|
||||
G4int jA = (*products)[j].A;
|
||||
|
||||
//G4cout << "ZA = " << 1000 * (*products)[j].Z + (*products)[j].A << " EK = "
|
||||
// << (*products)[j].kineticEnergy
|
||||
// << " px " << (*products)[j].px
|
||||
// << " py " << (*products)[j].py
|
||||
// << " pz " << (*products)[j].pz
|
||||
// << G4endl;
|
||||
|
||||
G4ThreeVector dp((*products)[j].px,(*products)[j].py,(*products)[j].pz);
|
||||
p += dp;
|
||||
|
||||
G4DynamicParticle* theSec = new G4DynamicParticle;
|
||||
|
||||
if ( jA == 1 && jZ == 1 )
|
||||
{
|
||||
theSec->SetDefinition( G4Proton::Proton() );
|
||||
totN += 1;
|
||||
}
|
||||
else if ( jA == 1 && jZ == 0 )
|
||||
{
|
||||
theSec->SetDefinition( G4Neutron::Neutron() );
|
||||
totN += 1;
|
||||
}
|
||||
else if ( jZ > 0 )
|
||||
{
|
||||
if ( jA != 0 )
|
||||
{
|
||||
theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( jZ , jA , 0 , 0 ) );
|
||||
totN += jA;
|
||||
}
|
||||
else
|
||||
{
|
||||
theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( jZ , iA+1-totN , 0 , 0 ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
theSec->SetDefinition( G4Gamma::Gamma() );
|
||||
}
|
||||
|
||||
theSec->SetMomentum( G4ThreeVector( (*products)[j].px*MeV , (*products)[j].py*MeV , (*products)[j].pz*MeV ) );
|
||||
|
||||
if ( dp.mag() == 0 )
|
||||
{
|
||||
theSec->SetMomentum( -p*MeV );
|
||||
}
|
||||
|
||||
theResult->AddSecondary( theSec );
|
||||
}
|
||||
}
|
||||
delete products;
|
||||
|
||||
theResult->SetStatusChange( stopAndKill );
|
||||
|
||||
return theResult;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4LENDCaptureCrossSection.hh"
|
||||
|
||||
G4double G4LENDCaptureCrossSection::getLENDCrossSection( G4GIDI_target* target , G4double ke , G4double temperature )
|
||||
{
|
||||
if ( target == NULL ) return 0.0;
|
||||
// 090407
|
||||
//return target->getCaptureCrossSection( ke/MeV , temperature )*barn;
|
||||
//return target->getCaptureCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
G4double result = target->getCaptureCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
if ( result == 0.0 && ke/eV < 1.0e-4)
|
||||
{
|
||||
G4double el = 1.0e-4*eV;
|
||||
G4double eh = 2.0e-4*eV;
|
||||
G4double xs_el = target->getCaptureCrossSectionAtE( el/MeV , temperature )*barn;
|
||||
G4double xs_eh = target->getCaptureCrossSectionAtE( eh/MeV , temperature )*barn;
|
||||
result = GetUltraLowEnergyExtrapolatedXS( el , eh , xs_el , xs_eh , ke );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,353 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Class Description
|
||||
// Cross Section for LEND (Low Energy Nuclear Data)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDCrossSection.hh"
|
||||
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4HadronicException.hh"
|
||||
|
||||
//TK110811
|
||||
G4bool G4LENDCrossSection::IsIsoApplicable( const G4DynamicParticle* dp, G4int /*iZ*/ , G4int /*aA*/ ,
|
||||
const G4Element* /*element*/ , const G4Material* /*material*/ )
|
||||
{
|
||||
G4double eKin = dp->GetKineticEnergy();
|
||||
if ( dp->GetDefinition() != proj ) return false;
|
||||
if ( eKin > GetMaxKinEnergy() || eKin < GetMinKinEnergy() ) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
G4double G4LENDCrossSection::GetIsoCrossSection( const G4DynamicParticle* dp , G4int iZ , G4int iA ,
|
||||
const G4Isotope* /*isotope*/ , const G4Element* /*elment*/ , const G4Material* material )
|
||||
{
|
||||
|
||||
G4double xs = 0.0;
|
||||
G4double ke = dp->GetKineticEnergy();
|
||||
G4double temp = material->GetTemperature();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
|
||||
xs = getLENDCrossSection ( aTarget , ke , temp );
|
||||
|
||||
return xs;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
G4bool G4LENDCrossSection::IsApplicable(const G4DynamicParticle*aP, const G4Element*)
|
||||
{
|
||||
G4bool result = true;
|
||||
G4double eKin = aP->GetKineticEnergy();
|
||||
if( eKin > GetMaxKinEnergy() || aP->GetDefinition() != proj ) result = false;
|
||||
return result;
|
||||
}
|
||||
*/
|
||||
|
||||
G4LENDCrossSection::G4LENDCrossSection( const G4String nam )
|
||||
:G4VCrossSectionDataSet( nam )
|
||||
{
|
||||
|
||||
default_evaluation = "endl99";
|
||||
allow_nat = false;
|
||||
allow_any = false;
|
||||
|
||||
SetMinKinEnergy( 0*MeV );
|
||||
SetMaxKinEnergy( 20*MeV );
|
||||
|
||||
lend_manager = G4LENDManager::GetInstance();
|
||||
|
||||
}
|
||||
|
||||
G4LENDCrossSection::~G4LENDCrossSection()
|
||||
{
|
||||
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void G4LENDCrossSection::BuildPhysicsTable( const G4ParticleDefinition& )
|
||||
{
|
||||
create_used_target_map();
|
||||
}
|
||||
|
||||
void G4LENDCrossSection::DumpPhysicsTable(const G4ParticleDefinition& aP)
|
||||
{
|
||||
|
||||
if ( &aP != proj )
|
||||
throw G4HadronicException(__FILE__, __LINE__, "Attempt to use LEND data for particles other than neutrons!!!");
|
||||
|
||||
G4cout << G4endl;
|
||||
G4cout << "Dump Cross Sections of " << GetName() << G4endl;
|
||||
G4cout << "(Pointwise cross-section at 300 Kelvin.)" << G4endl;
|
||||
G4cout << G4endl;
|
||||
|
||||
G4cout << "Target informaiton " << G4endl;
|
||||
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
G4cout
|
||||
<< "Wanted " << it->second->GetWantedEvaluation()
|
||||
<< ", Z= " << it->second->GetWantedZ()
|
||||
<< ", A= " << it->second->GetWantedA()
|
||||
<< "; Actual " << it->second->GetActualEvaluation()
|
||||
<< ", Z= " << it->second->GetActualZ()
|
||||
<< ", A= " << it->second->GetActualA()
|
||||
<< ", " << it->second->GetTarget()
|
||||
<< G4endl;
|
||||
|
||||
G4int ie = 0;
|
||||
|
||||
G4GIDI_target* aTarget = it->second->GetTarget();
|
||||
G4double aT = 300;
|
||||
for ( ie = 0 ; ie < 130 ; ie++ )
|
||||
{
|
||||
G4double ke = 1.0e-5 * std::pow ( 10.0 , ie/10.0 ) *eV;
|
||||
|
||||
if ( ke < 20*MeV )
|
||||
{
|
||||
G4cout << " " << GetName() << ", cross section at " << ke/eV << " [eV] = " << getLENDCrossSection ( aTarget , ke , aT )/barn << " [barn] " << G4endl;
|
||||
}
|
||||
}
|
||||
G4cout << G4endl;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
//110810
|
||||
//G4double G4LENDCrossSection::GetCrossSection(const G4DynamicParticle* aP , const G4Element* anElement , G4double aT)
|
||||
G4double G4LENDCrossSection::GetCrossSection(const G4DynamicParticle* aP , int iZ , const G4Material* aMat)
|
||||
{
|
||||
|
||||
//110810
|
||||
G4double aT = aMat->GetTemperature();
|
||||
G4Element* anElement = lend_manager->GetNistElementBuilder()->FindOrBuildElement( iZ );
|
||||
|
||||
G4double ke = aP->GetKineticEnergy();
|
||||
G4double XS = 0.0;
|
||||
|
||||
G4int numberOfIsotope = anElement->GetNumberOfIsotopes();
|
||||
|
||||
if ( numberOfIsotope > 0 )
|
||||
{
|
||||
// User Defined Abundances
|
||||
for ( G4int i_iso = 0 ; i_iso < numberOfIsotope ; i_iso++ )
|
||||
{
|
||||
|
||||
G4int iZ = anElement->GetIsotope( i_iso )->GetZ();
|
||||
G4int iA = anElement->GetIsotope( i_iso )->GetN();
|
||||
G4double ratio = anElement->GetRelativeAbundanceVector()[i_iso];
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
XS += ratio*getLENDCrossSection ( aTarget , ke , aT );
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Natural Abundances
|
||||
G4NistElementBuilder* nistElementBuild = lend_manager->GetNistElementBuilder();
|
||||
G4int iZ = int ( anElement->GetZ() );
|
||||
G4int numberOfNistIso = nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) );
|
||||
|
||||
G4int Nfirst = nistElementBuild->GetNistFirstIsotopeN( iZ );
|
||||
for ( G4int i = 0 ; i < numberOfNistIso ; i++ )
|
||||
{
|
||||
G4int iA = Nfirst + i;
|
||||
G4double ratio = nistElementBuild->GetIsotopeAbundance( iZ , iA );
|
||||
if ( ratio > 0.0 )
|
||||
{
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
XS += ratio*getLENDCrossSection ( aTarget , ke , aT );
|
||||
//G4cout << ke/eV << " " << iZ << " " << iMass << " " << aTarget << " " << getLENDCrossSection ( aTarget , ke , aT ) << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//G4cout << "XS= " << XS << G4endl;
|
||||
return XS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//110810
|
||||
//G4double G4LENDCrossSection::GetIsoCrossSection(const G4DynamicParticle* dp, const G4Isotope* isotope, G4double aT )
|
||||
G4double G4LENDCrossSection::GetIsoCrossSection(const G4DynamicParticle* dp, const G4Isotope* isotope, const G4Material* aMat)
|
||||
{
|
||||
|
||||
//110810
|
||||
G4double aT = aMat->GetTemperature();
|
||||
|
||||
G4double ke = dp->GetKineticEnergy();
|
||||
|
||||
G4int iZ = isotope->GetZ();
|
||||
G4int iA = isotope->GetN();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
|
||||
return getLENDCrossSection ( aTarget , ke , aT );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//110810
|
||||
//G4double G4LENDCrossSection::GetZandACrossSection(const G4DynamicParticle* dp, G4int iZ, G4int iA, G4double aT)
|
||||
G4double G4LENDCrossSection::GetZandACrossSection(const G4DynamicParticle* dp, G4int iZ, G4int iA, const G4Material* aMat)
|
||||
{
|
||||
|
||||
//110810
|
||||
G4double aT = aMat->GetTemperature();
|
||||
|
||||
G4double ke = dp->GetKineticEnergy();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
|
||||
return getLENDCrossSection ( aTarget , ke , aT );
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
void G4LENDCrossSection::recreate_used_target_map()
|
||||
{
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
usedTarget_map.clear();
|
||||
|
||||
create_used_target_map();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4LENDCrossSection::create_used_target_map()
|
||||
{
|
||||
|
||||
lend_manager->RequestChangeOfVerboseLevel( verboseLevel );
|
||||
|
||||
size_t numberOfElements = G4Element::GetNumberOfElements();
|
||||
static const G4ElementTable* theElementTable = G4Element::GetElementTable();
|
||||
|
||||
for ( size_t i = 0 ; i < numberOfElements ; ++i )
|
||||
{
|
||||
|
||||
const G4Element* anElement = (*theElementTable)[i];
|
||||
G4int numberOfIsotope = anElement->GetNumberOfIsotopes();
|
||||
|
||||
if ( numberOfIsotope > 0 )
|
||||
{
|
||||
// User Defined Abundances
|
||||
for ( G4int i_iso = 0 ; i_iso < numberOfIsotope ; i_iso++ )
|
||||
{
|
||||
G4int iZ = anElement->GetIsotope( i_iso )->GetZ();
|
||||
G4int iA = anElement->GetIsotope( i_iso )->GetN();
|
||||
|
||||
//G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( G4Neutron::Neutron() , default_evaluation , iZ , iA );
|
||||
G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iA );
|
||||
if ( allow_nat == true ) aTarget->AllowNat();
|
||||
if ( allow_any == true ) aTarget->AllowAny();
|
||||
usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iA ) , aTarget ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Natural Abundances
|
||||
G4NistElementBuilder* nistElementBuild = lend_manager->GetNistElementBuilder();
|
||||
G4int iZ = int ( anElement->GetZ() );
|
||||
//G4cout << nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) ) << G4endl;
|
||||
G4int numberOfNistIso = nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) );
|
||||
|
||||
for ( G4int i = 0 ; i < numberOfNistIso ; i++ )
|
||||
{
|
||||
//G4cout << nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + i ) << G4endl;
|
||||
if ( nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + i ) > 0 )
|
||||
{
|
||||
G4int iMass = nistElementBuild->GetNistFirstIsotopeN( iZ ) + i;
|
||||
//G4cout << iZ << " " << nistElementBuild->GetNistFirstIsotopeN( iZ ) + i << " " << nistElementBuild->GetIsotopeAbundance ( iZ , iMass ) << G4endl;
|
||||
|
||||
G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iMass );
|
||||
if ( allow_nat == true ) aTarget->AllowNat();
|
||||
if ( allow_any == true ) aTarget->AllowAny();
|
||||
usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iMass ) , aTarget ) );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
G4cout << "Dump UsedTarget for " << GetName() << G4endl;
|
||||
G4cout << "Requested Evaluation, Z , A -> Actual Evaluation, Z , A(0=Nat) , Pointer of Target" << G4endl;
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
G4cout
|
||||
<< " " << it->second->GetWantedEvaluation()
|
||||
<< ", " << it->second->GetWantedZ()
|
||||
<< ", " << it->second->GetWantedA()
|
||||
<< " -> " << it->second->GetActualEvaluation()
|
||||
<< ", " << it->second->GetActualZ()
|
||||
<< ", " << it->second->GetActualA()
|
||||
<< ", " << it->second->GetTarget()
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// elow ehigh xs_elow xs_ehigh ke (ke < elow)
|
||||
G4double G4LENDCrossSection::GetUltraLowEnergyExtrapolatedXS( G4double x1, G4double x2, G4double y1, G4double y2 , G4double ke )
|
||||
{
|
||||
//XS propotinal to 1/v at low energy -> 1/root(E)
|
||||
//XS = a * 1/root(E) + b
|
||||
G4double a = ( y2 - y1 ) / ( 1/std::sqrt(x2) - 1/std::sqrt(x1) );
|
||||
G4double b = y1 - a * 1/std::sqrt(x1);
|
||||
G4double result = a * 1/std::sqrt(ke) + b;
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#include "G4LENDElastic.hh"
|
||||
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
G4HadFinalState * G4LENDElastic::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTarg )
|
||||
{
|
||||
|
||||
G4double temp = aTrack.GetMaterial()->GetTemperature();
|
||||
|
||||
//G4int iZ = int ( aTarg.GetZ() );
|
||||
//G4int iA = int ( aTarg.GetN() );
|
||||
//migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
|
||||
G4int iZ = aTarg.GetZ_asInt();
|
||||
G4int iA = aTarg.GetA_asInt();
|
||||
|
||||
G4double ke = aTrack.GetKineticEnergy();
|
||||
|
||||
//G4HadFinalState* theResult = new G4HadFinalState();
|
||||
G4HadFinalState* theResult = &theParticleChange;
|
||||
theResult->Clear();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
G4double aMu = aTarget->getElasticFinalState( ke*MeV, temp, NULL, NULL );
|
||||
|
||||
G4double phi = twopi*G4UniformRand();
|
||||
G4double theta = std::acos( aMu );
|
||||
//G4double sinth = std::sin( theta );
|
||||
|
||||
G4ReactionProduct theNeutron( const_cast<G4ParticleDefinition *>( aTrack.GetDefinition() ) );
|
||||
theNeutron.SetMomentum( aTrack.Get4Momentum().vect() );
|
||||
theNeutron.SetKineticEnergy( ke );
|
||||
|
||||
//G4cout << "iZ " << iZ << " iA " << iA << G4endl;
|
||||
|
||||
G4ReactionProduct theTarget( G4ParticleTable::GetParticleTable()->FindIon( iZ , iA , 0 , iZ ) );
|
||||
|
||||
G4double mass = G4ParticleTable::GetParticleTable()->FindIon( iZ , iA , 0 , iZ )->GetPDGMass();
|
||||
|
||||
// add Thermal motion
|
||||
G4double kT = k_Boltzmann*temp;
|
||||
G4ThreeVector v ( G4RandGauss::shoot() * std::sqrt( kT*mass )
|
||||
, G4RandGauss::shoot() * std::sqrt( kT*mass )
|
||||
, G4RandGauss::shoot() * std::sqrt( kT*mass ) );
|
||||
theTarget.SetMomentum( v );
|
||||
|
||||
G4ThreeVector the3Neutron = theNeutron.GetMomentum();
|
||||
G4double nEnergy = theNeutron.GetTotalEnergy();
|
||||
G4ThreeVector the3Target = theTarget.GetMomentum();
|
||||
G4double tEnergy = theTarget.GetTotalEnergy();
|
||||
G4ReactionProduct theCMS;
|
||||
G4double totE = nEnergy+tEnergy;
|
||||
G4ThreeVector the3CMS = the3Target+the3Neutron;
|
||||
theCMS.SetMomentum(the3CMS);
|
||||
G4double cmsMom = std::sqrt(the3CMS*the3CMS);
|
||||
G4double sqrts = std::sqrt((totE-cmsMom)*(totE+cmsMom));
|
||||
theCMS.SetMass(sqrts);
|
||||
theCMS.SetTotalEnergy(totE);
|
||||
|
||||
theNeutron.Lorentz(theNeutron, theCMS);
|
||||
theTarget.Lorentz(theTarget, theCMS);
|
||||
G4double en = theNeutron.GetTotalMomentum(); // already in CMS.
|
||||
G4ThreeVector cms3Mom=theNeutron.GetMomentum(); // for neutron direction in CMS
|
||||
G4double cms_theta=cms3Mom.theta();
|
||||
G4double cms_phi=cms3Mom.phi();
|
||||
G4ThreeVector tempVector;
|
||||
tempVector.setX( std::cos(theta)*std::sin(cms_theta)*std::cos(cms_phi)
|
||||
+std::sin(theta)*std::cos(phi)*std::cos(cms_theta)*std::cos(cms_phi)
|
||||
-std::sin(theta)*std::sin(phi)*std::sin(cms_phi) );
|
||||
tempVector.setY( std::cos(theta)*std::sin(cms_theta)*std::sin(cms_phi)
|
||||
+std::sin(theta)*std::cos(phi)*std::cos(cms_theta)*std::sin(cms_phi)
|
||||
+std::sin(theta)*std::sin(phi)*std::cos(cms_phi) );
|
||||
tempVector.setZ( std::cos(theta)*std::cos(cms_theta)
|
||||
-std::sin(theta)*std::cos(phi)*std::sin(cms_theta) );
|
||||
tempVector *= en;
|
||||
theNeutron.SetMomentum(tempVector);
|
||||
theTarget.SetMomentum(-tempVector);
|
||||
G4double tP = theTarget.GetTotalMomentum();
|
||||
G4double tM = theTarget.GetMass();
|
||||
theTarget.SetTotalEnergy(std::sqrt((tP+tM)*(tP+tM)-2.*tP*tM));
|
||||
|
||||
|
||||
theNeutron.Lorentz(theNeutron, -1.*theCMS);
|
||||
|
||||
//110913 Add Protection for very low energy (1e-6eV) scattering
|
||||
if ( theNeutron.GetKineticEnergy() <= 0 )
|
||||
{
|
||||
theNeutron.SetTotalEnergy ( theNeutron.GetMass() * ( 1 + std::pow( 10 , -15.65 ) ) );
|
||||
}
|
||||
|
||||
theTarget.Lorentz(theTarget, -1.*theCMS);
|
||||
if ( theTarget.GetKineticEnergy() < 0 )
|
||||
{
|
||||
theTarget.SetTotalEnergy ( theTarget.GetMass() * ( 1 + std::pow( 10 , -15.65 ) ) );
|
||||
}
|
||||
//110913 END
|
||||
|
||||
theTarget.Lorentz(theTarget, -1.*theCMS);
|
||||
|
||||
theResult->SetEnergyChange(theNeutron.GetKineticEnergy());
|
||||
theResult->SetMomentumChange(theNeutron.GetMomentum().unit());
|
||||
G4DynamicParticle* theRecoil = new G4DynamicParticle;
|
||||
|
||||
// theRecoil->SetDefinition( ionTable->GetIon( iZ , iA ) );
|
||||
theRecoil->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( iZ, iA , 0, iZ ));
|
||||
theRecoil->SetMomentum( theTarget.GetMomentum() );
|
||||
|
||||
theResult->AddSecondary( theRecoil );
|
||||
|
||||
return theResult;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4LENDElasticCrossSection.hh"
|
||||
|
||||
G4double G4LENDElasticCrossSection::getLENDCrossSection( G4GIDI_target* target , G4double ke , G4double temperature )
|
||||
{
|
||||
if ( target == NULL ) return 0.0;
|
||||
// 090407
|
||||
// return target->getElasticCrossSection( ke/MeV , temperature )*barn;
|
||||
//return target->getElasticCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
G4double result = target->getElasticCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
if ( result == 0.0 && ke/eV < 1.0e-4)
|
||||
{
|
||||
G4double el = 1.0e-4*eV;
|
||||
G4double eh = 2.0e-4*eV;
|
||||
G4double xs_el = target->getElasticCrossSectionAtE( el/MeV , temperature )*barn;
|
||||
G4double xs_eh = target->getElasticCrossSectionAtE( eh/MeV , temperature )*barn;
|
||||
result = GetUltraLowEnergyExtrapolatedXS( el , eh , xs_el , xs_eh , ke );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4LENDFission.hh"
|
||||
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
G4HadFinalState * G4LENDFission::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTarg )
|
||||
{
|
||||
|
||||
G4double temp = aTrack.GetMaterial()->GetTemperature();
|
||||
|
||||
//G4int iZ = int ( aTarg.GetZ() );
|
||||
//G4int iA = int ( aTarg.GetN() );
|
||||
//migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
|
||||
G4int iZ = aTarg.GetZ_asInt();
|
||||
G4int iA = aTarg.GetA_asInt();
|
||||
|
||||
G4double ke = aTrack.GetKineticEnergy();
|
||||
|
||||
G4HadFinalState* theResult = &theParticleChange;
|
||||
theResult->Clear();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
std::vector<G4GIDI_Product>* products = aTarget->getFissionFinalState( ke*MeV, temp, NULL, NULL );
|
||||
if ( products != NULL )
|
||||
{
|
||||
for ( G4int j = 0; j < int( products->size() ); j++ )
|
||||
{
|
||||
G4int iZ = (*products)[j].Z;
|
||||
G4int iA = (*products)[j].A;
|
||||
|
||||
//G4cout << "Z = " << (*products)[j].Z
|
||||
// << ", A = " << (*products)[j].A
|
||||
// << ", EK = " << (*products)[j].kineticEnergy << " [MeV]"
|
||||
// << ", px = " << (*products)[j].px
|
||||
// << ", py = " << (*products)[j].py
|
||||
// << ", pz = " << (*products)[j].pz
|
||||
// << G4endl;
|
||||
|
||||
G4DynamicParticle* theSec = new G4DynamicParticle;
|
||||
|
||||
if ( iZ > 0 )
|
||||
{
|
||||
//Ex j?
|
||||
theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( iZ, iA , 0, 0 ) );
|
||||
}
|
||||
else if ( iA == 1 && iZ == 0 )
|
||||
{
|
||||
theSec->SetDefinition( G4Neutron::Neutron() );
|
||||
}
|
||||
else
|
||||
{
|
||||
theSec->SetDefinition( G4Gamma::Gamma() );
|
||||
}
|
||||
|
||||
theSec->SetMomentum( G4ThreeVector( (*products)[j].px*MeV , (*products)[j].py*MeV , (*products)[j].pz*MeV ) );
|
||||
//G4cout << theSec->GetDefinition()->GetParticleName() << G4endl;
|
||||
theResult->AddSecondary( theSec );
|
||||
}
|
||||
}
|
||||
delete products;
|
||||
|
||||
theResult->SetStatusChange( stopAndKill );
|
||||
|
||||
return theResult;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4LENDFissionCrossSection.hh"
|
||||
|
||||
G4double G4LENDFissionCrossSection::getLENDCrossSection( G4GIDI_target* target , G4double ke , G4double temperature )
|
||||
{
|
||||
if ( target == NULL ) return 0.0;
|
||||
// 090407
|
||||
// return target->getElasticCrossSection( ke/MeV , temperature )*barn;
|
||||
//return target->getFissionCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
G4double result = target->getFissionCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
if ( result == 0.0 && ke/eV < 1.0e-4)
|
||||
{
|
||||
G4double el = 1.0e-4*eV;
|
||||
G4double eh = 2.0e-4*eV;
|
||||
G4double xs_el = target->getFissionCrossSectionAtE( el/MeV , temperature )*barn;
|
||||
G4double xs_eh = target->getFissionCrossSectionAtE( eh/MeV , temperature )*barn;
|
||||
result = GetUltraLowEnergyExtrapolatedXS( el , eh , xs_el , xs_eh , ke );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4LENDInelastic.hh"
|
||||
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
G4HadFinalState * G4LENDInelastic::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTarg )
|
||||
{
|
||||
|
||||
G4ThreeVector proj_p = aTrack.Get4Momentum().vect();
|
||||
|
||||
G4double temp = aTrack.GetMaterial()->GetTemperature();
|
||||
|
||||
//G4int iZ = int ( aTarg.GetZ() );
|
||||
//G4int iA = int ( aTarg.GetN() );
|
||||
//migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
|
||||
G4int iZ = aTarg.GetZ_asInt();
|
||||
G4int iA = aTarg.GetA_asInt();
|
||||
//G4cout << "target: Z = " << iZ << " N = " << iA << G4endl;
|
||||
|
||||
G4double ke = aTrack.GetKineticEnergy();
|
||||
//G4cout << "projectile: KE = " << ke/MeV << " [MeV]" << G4endl;
|
||||
|
||||
G4HadFinalState* theResult = &theParticleChange;
|
||||
theResult->Clear();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
std::vector<G4GIDI_Product>* products = aTarget->getOthersFinalState( ke*MeV, temp, NULL, NULL );
|
||||
if ( products != NULL )
|
||||
{
|
||||
|
||||
G4ThreeVector psum(0);
|
||||
|
||||
int totN = 0;
|
||||
for ( G4int j = 0; j < int( products->size() ); j++ )
|
||||
{
|
||||
|
||||
G4int jZ = (*products)[j].Z;
|
||||
G4int jA = (*products)[j].A;
|
||||
|
||||
//G4cout << "ZA = " << 1000 * (*products)[j].Z + (*products)[j].A << " EK = "
|
||||
// << (*products)[j].kineticEnergy
|
||||
// << " px " << (*products)[j].px
|
||||
// << " py " << (*products)[j].py
|
||||
// << " pz " << (*products)[j].pz
|
||||
// << G4endl;
|
||||
|
||||
G4DynamicParticle* theSec = new G4DynamicParticle;
|
||||
|
||||
if ( jA == 1 && jZ == 1 )
|
||||
{
|
||||
theSec->SetDefinition( G4Proton::Proton() );
|
||||
totN += 1;
|
||||
}
|
||||
else if ( jA == 1 && jZ == 0 )
|
||||
{
|
||||
theSec->SetDefinition( G4Neutron::Neutron() );
|
||||
totN += 1;
|
||||
}
|
||||
else if ( jZ > 0 )
|
||||
{
|
||||
if ( jA != 0 )
|
||||
{
|
||||
theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( jZ , jA , 0 , 0 ) );
|
||||
totN += jA;
|
||||
}
|
||||
else
|
||||
{
|
||||
theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( jZ , iA+1-totN , 0 , 0 ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
theSec->SetDefinition( G4Gamma::Gamma() );
|
||||
}
|
||||
|
||||
G4ThreeVector p( (*products)[j].px*MeV , (*products)[j].py*MeV , (*products)[j].pz*MeV );
|
||||
psum += p;
|
||||
if ( p.mag() == 0 ) p = proj_p - psum;
|
||||
|
||||
theSec->SetMomentum( p );
|
||||
|
||||
theResult->AddSecondary( theSec );
|
||||
}
|
||||
}
|
||||
delete products;
|
||||
|
||||
theResult->SetStatusChange( stopAndKill );
|
||||
|
||||
return theResult;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#include "G4LENDInelasticCrossSection.hh"
|
||||
|
||||
G4double G4LENDInelasticCrossSection::getLENDCrossSection( G4GIDI_target* target , G4double ke , G4double temperature )
|
||||
{
|
||||
if ( target == NULL ) return 0.0;
|
||||
// 090407
|
||||
// return target->getElasticCrossSection( ke/MeV , temperature )*barn;
|
||||
//return target->getOthersCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
G4double result = target->getOthersCrossSectionAtE( ke/MeV , temperature )*barn;
|
||||
if ( result == 0.0 && ke/eV < 1.0e-4)
|
||||
{
|
||||
G4double el = 1.0e-4*eV;
|
||||
G4double eh = 2.0e-4*eV;
|
||||
G4double xs_el = target->getOthersCrossSectionAtE( el/MeV , temperature )*barn;
|
||||
G4double xs_eh = target->getOthersCrossSectionAtE( eh/MeV , temperature )*barn;
|
||||
result = GetUltraLowEnergyExtrapolatedXS( el , eh , xs_el , xs_eh , ke );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Class Description
|
||||
// Manager of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDManager.hh"
|
||||
#include "G4HadronicException.hh"
|
||||
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
G4LENDManager* G4LENDManager::lend_manager = NULL;
|
||||
|
||||
G4LENDManager::G4LENDManager()
|
||||
:verboseLevel( 0 )
|
||||
{
|
||||
|
||||
printBanner();
|
||||
|
||||
if(!getenv("G4LENDDATA"))
|
||||
throw G4HadronicException(__FILE__, __LINE__, " Please setenv G4LENDDATA to point to the LEND files." );
|
||||
|
||||
G4String xmcf = getenv("G4LENDDATA");
|
||||
xmcf = xmcf+"/xmcf.n_1.map";
|
||||
|
||||
// for neutron
|
||||
|
||||
G4GIDI* axLEND = new G4GIDI( 1 , xmcf );
|
||||
|
||||
if ( proj_lend_map.find ( G4Neutron::Neutron() ) == proj_lend_map.end() )
|
||||
{
|
||||
proj_lend_map.insert ( std::pair < G4ParticleDefinition* , G4GIDI* > ( G4Neutron::Neutron() , axLEND ) );
|
||||
}
|
||||
|
||||
v_lend_target.clear();
|
||||
|
||||
ionTable = new G4IonTable();
|
||||
nistElementBuilder = new G4NistElementBuilder( 0 );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4LENDManager::~G4LENDManager()
|
||||
{
|
||||
|
||||
// deleting target
|
||||
for ( std::vector < lend_target >::iterator
|
||||
it = v_lend_target.begin() ; it != v_lend_target.end() ; it++ )
|
||||
{
|
||||
(*it).lend->freeTarget( it->target );
|
||||
}
|
||||
|
||||
// deleting lend
|
||||
for ( std::map < G4ParticleDefinition* , G4GIDI* >::iterator
|
||||
it = proj_lend_map.begin() ; it != proj_lend_map.end() ; it++ )
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
|
||||
delete ionTable;
|
||||
delete nistElementBuilder;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4GIDI_target* G4LENDManager::GetLENDTarget( G4ParticleDefinition* proj , G4String evaluation , G4int iZ , G4int iA , G4int iM )
|
||||
{
|
||||
|
||||
G4GIDI_target* anLENDTarget = NULL;
|
||||
|
||||
G4int iTarg = ionTable->GetNucleusEncoding( iZ , iA );
|
||||
// G4double E=0.0, G4int J=0);
|
||||
|
||||
for ( std::vector < lend_target >::iterator
|
||||
it = v_lend_target.begin() ; it != v_lend_target.end() ; it++ )
|
||||
{
|
||||
// find the target
|
||||
if ( it->proj == proj && it->target_code == iTarg && it->evaluation == evaluation )
|
||||
{
|
||||
return it->target;
|
||||
}
|
||||
}
|
||||
|
||||
if ( proj_lend_map.find ( proj ) == proj_lend_map.end() )
|
||||
{
|
||||
G4cout << proj->GetParticleName() << " is not supported by this LEND." << G4endl;
|
||||
return anLENDTarget; // return NULL
|
||||
}
|
||||
|
||||
G4GIDI* xlend = proj_lend_map.find ( proj ) -> second;
|
||||
|
||||
if ( xlend->isThisDataAvailable( evaluation, iZ, iA , iM ) )
|
||||
{
|
||||
|
||||
if ( verboseLevel > 1 )
|
||||
G4cout << evaluation << " for " << ionTable->GetIonName( iZ , iA , 0 ) << " is exist in this LEND." << G4endl;
|
||||
|
||||
anLENDTarget = xlend->readTarget( evaluation , iZ , iA , iM );
|
||||
|
||||
lend_target new_target;
|
||||
new_target.lend = xlend;
|
||||
new_target.target = anLENDTarget;
|
||||
new_target.proj = proj;
|
||||
new_target.evaluation = evaluation;
|
||||
new_target.target_code = iTarg;
|
||||
|
||||
v_lend_target.push_back( new_target );
|
||||
|
||||
// found EXACT
|
||||
return anLENDTarget;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// NO EXACT DATA (Evaluatino & Z,A,M)
|
||||
// This is for ground state
|
||||
if ( verboseLevel > 1 )
|
||||
G4cout << evaluation << " for " << ionTable->GetIonName( iZ , iA , 0 ) << " is not exist in this LEND." << G4endl;
|
||||
|
||||
std::vector< std::string >* available = xlend->getNamesOfAvailableLibraries( iZ, iA , iM );
|
||||
if ( available->size() > 0 )
|
||||
{
|
||||
// EXACT Z,A,M but Evaluation is different
|
||||
if ( verboseLevel > 1 )
|
||||
{
|
||||
G4cout << " However you can use following evaluation(s) for the target. " << G4endl;
|
||||
|
||||
std::vector< std::string >::iterator its;
|
||||
for ( its = available->begin() ; its != available->end() ; its++ )
|
||||
G4cout << *its << G4endl;
|
||||
|
||||
G4cout << G4endl;
|
||||
}
|
||||
}
|
||||
//
|
||||
// checking natural abundance data for Z
|
||||
//
|
||||
else if ( xlend->isThisDataAvailable( evaluation, iZ, 0 , iM ) )
|
||||
{
|
||||
// EXACT natural abundance data for the evaluation
|
||||
if ( verboseLevel > 1 )
|
||||
G4cout << " However you can use natural abundance data for the target. " << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector< std::string >* available_nat = xlend->getNamesOfAvailableLibraries( iZ, 0 , iM );
|
||||
//
|
||||
if ( available_nat->size() > 0 )
|
||||
{
|
||||
// EXACT natural abundance data for Z but differnet evaluation
|
||||
if ( verboseLevel > 1 )
|
||||
{
|
||||
G4cout << " However you can use following evaluation(s) for natural abundace of the target. " << G4endl;
|
||||
|
||||
std::vector< std::string >::iterator its;
|
||||
for ( its = available_nat->begin() ; its != available_nat->end() ; its++ )
|
||||
G4cout << *its << G4endl;
|
||||
G4cout << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return NULL if exact data is not available
|
||||
return anLENDTarget; // return NULL
|
||||
}
|
||||
|
||||
return anLENDTarget;
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::vector< G4String > G4LENDManager::IsLENDTargetAvailable ( G4ParticleDefinition* proj , G4int iZ , G4int iA , G4int iM )
|
||||
{
|
||||
|
||||
std::vector< G4String > answer;
|
||||
if ( proj_lend_map.find ( proj ) == proj_lend_map.end() )
|
||||
{
|
||||
G4cout << proj->GetParticleName() << " is not supported by this LEND." << G4endl;
|
||||
return answer; // return NULL
|
||||
}
|
||||
|
||||
G4GIDI* xlend = proj_lend_map.find ( proj ) -> second;
|
||||
std::vector< std::string >* available = xlend->getNamesOfAvailableLibraries( iZ, iA , iM );
|
||||
|
||||
if ( available->size() > 0 )
|
||||
{
|
||||
std::vector< std::string >::iterator its;
|
||||
for ( its = available->begin() ; its != available->end() ; its++ )
|
||||
answer.push_back ( *its );
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4LENDManager::printBanner()
|
||||
{
|
||||
G4cout << " <<BEGIN-copyright>> " << G4endl;
|
||||
G4cout << " Copyright (c) 2010, Lawrence Livermore National Security, LLC. " << G4endl;
|
||||
G4cout << " Produced at the Lawrence Livermore National Laboratory " << G4endl;
|
||||
G4cout << " Written by Bret R. Beck, beck6@llnl.gov. " << G4endl;
|
||||
G4cout << " CODE-461393 " << G4endl;
|
||||
G4cout << " All rights reserved. " << G4endl;
|
||||
G4cout << " " << G4endl;
|
||||
G4cout << " This file is part of GIDI. For details, see nuclear.llnl.gov. " << G4endl;
|
||||
G4cout << " Please also read the \"Additional BSD Notice\" at nuclear.llnl.gov. " << G4endl;
|
||||
G4cout << " " << G4endl;
|
||||
G4cout << " Redistribution and use in source and binary forms, with or without modification, " << G4endl;
|
||||
G4cout << " are permitted provided that the following conditions are met: " << G4endl;
|
||||
G4cout << " " << G4endl;
|
||||
G4cout << " 1) Redistributions of source code must retain the above copyright notice, " << G4endl;
|
||||
G4cout << " this list of conditions and the disclaimer below. " << G4endl;
|
||||
G4cout << " 2) Redistributions in binary form must reproduce the above copyright notice, " << G4endl;
|
||||
G4cout << " this list of conditions and the disclaimer (as noted below) in the " << G4endl;
|
||||
G4cout << " documentation and/or other materials provided with the distribution. " << G4endl;
|
||||
G4cout << " 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be " << G4endl;
|
||||
G4cout << " used to endorse or promote products derived from this software without " << G4endl;
|
||||
G4cout << " specific prior written permission. " << G4endl;
|
||||
G4cout << " " << G4endl;
|
||||
G4cout << " THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY " << G4endl;
|
||||
G4cout << " EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES " << G4endl;
|
||||
G4cout << " OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT " << G4endl;
|
||||
G4cout << " SHALL LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR " << G4endl;
|
||||
G4cout << " CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR " << G4endl;
|
||||
G4cout << " CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS " << G4endl;
|
||||
G4cout << " OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED " << G4endl;
|
||||
G4cout << " AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT " << G4endl;
|
||||
G4cout << " (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, " << G4endl;
|
||||
G4cout << " EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. " << G4endl;
|
||||
G4cout << " <<END-copyright>> " << G4endl;
|
||||
}
|
||||
|
||||
|
||||
G4bool G4LENDManager::RequestChangeOfVerboseLevel( G4int newValue )
|
||||
{
|
||||
G4bool result=false;
|
||||
if ( newValue >= verboseLevel)
|
||||
{
|
||||
verboseLevel = newValue;
|
||||
result=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cout << "Since other LEND model or cross section have set the higher verbose level (" << verboseLevel << ") in LENDManager, you cannot change the value now." << G4endl;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Class Description
|
||||
// Final state production model for a LEND (Low Energy Nuclear Data)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDModel.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
G4LENDModel::G4LENDModel( G4String name )
|
||||
:G4HadronicInteraction( name )
|
||||
{
|
||||
|
||||
SetMinEnergy( 0.*eV );
|
||||
SetMaxEnergy( 20.*MeV );
|
||||
|
||||
default_evaluation = "endl99";
|
||||
allow_nat = false;
|
||||
allow_any = false;
|
||||
|
||||
lend_manager = G4LENDManager::GetInstance();
|
||||
|
||||
}
|
||||
|
||||
G4LENDModel::~G4LENDModel()
|
||||
{
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4LENDModel::recreate_used_target_map()
|
||||
{
|
||||
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
usedTarget_map.clear();
|
||||
|
||||
create_used_target_map();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4LENDModel::create_used_target_map()
|
||||
{
|
||||
|
||||
lend_manager->RequestChangeOfVerboseLevel( verboseLevel );
|
||||
|
||||
size_t numberOfElements = G4Element::GetNumberOfElements();
|
||||
static const G4ElementTable* theElementTable = G4Element::GetElementTable();
|
||||
|
||||
for ( size_t i = 0 ; i < numberOfElements ; ++i )
|
||||
{
|
||||
|
||||
const G4Element* anElement = (*theElementTable)[i];
|
||||
G4int numberOfIsotope = anElement->GetNumberOfIsotopes();
|
||||
|
||||
if ( numberOfIsotope > 0 )
|
||||
{
|
||||
// User Defined Abundances
|
||||
for ( G4int i_iso = 0 ; i_iso < numberOfIsotope ; i_iso++ )
|
||||
{
|
||||
G4int iZ = anElement->GetIsotope( i_iso )->GetZ();
|
||||
G4int iA = anElement->GetIsotope( i_iso )->GetN();
|
||||
|
||||
G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iA );
|
||||
if ( allow_nat == true ) aTarget->AllowNat();
|
||||
if ( allow_any == true ) aTarget->AllowAny();
|
||||
usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iA ) , aTarget ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Natural Abundances
|
||||
G4NistElementBuilder* nistElementBuild = lend_manager->GetNistElementBuilder();
|
||||
G4int iZ = int ( anElement->GetZ() );
|
||||
//G4cout << nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) ) << G4endl;
|
||||
G4int numberOfNistIso = nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) );
|
||||
|
||||
for ( G4int i = 0 ; i < numberOfNistIso ; i++ )
|
||||
{
|
||||
//G4cout << nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + i ) << G4endl;
|
||||
if ( nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + i ) > 0 )
|
||||
{
|
||||
G4int iMass = nistElementBuild->GetNistFirstIsotopeN( iZ ) + i;
|
||||
//G4cout << iZ << " " << nistElementBuild->GetNistFirstIsotopeN( iZ ) + i << " " << nistElementBuild->GetIsotopeAbundance ( iZ , iMass ) << G4endl;
|
||||
|
||||
G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iMass );
|
||||
if ( allow_nat == true ) aTarget->AllowNat();
|
||||
if ( allow_any == true ) aTarget->AllowAny();
|
||||
usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iMass ) , aTarget ) );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4cout << "Dump UsedTarget for " << GetModelName() << G4endl;
|
||||
G4cout << "Requested Evaluation, Z , A -> Actual Evaluation, Z , A(0=Nat) , Pointer of Target" << G4endl;
|
||||
for ( std::map< G4int , G4LENDUsedTarget* >::iterator
|
||||
it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
|
||||
{
|
||||
G4cout
|
||||
<< " " << it->second->GetWantedEvaluation()
|
||||
<< ", " << it->second->GetWantedZ()
|
||||
<< ", " << it->second->GetWantedA()
|
||||
<< " -> " << it->second->GetActualEvaluation()
|
||||
<< ", " << it->second->GetActualZ()
|
||||
<< ", " << it->second->GetActualA()
|
||||
<< ", " << it->second->GetTarget()
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
G4HadFinalState * G4LENDModel::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTarg )
|
||||
{
|
||||
|
||||
G4double temp = aTrack.GetMaterial()->GetTemperature();
|
||||
|
||||
//G4int iZ = int ( aTarg.GetZ() );
|
||||
//G4int iA = int ( aTarg.GetN() );
|
||||
//migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this)
|
||||
G4int iZ = aTarg.GetZ_asInt();
|
||||
G4int iA = aTarg.GetA_asInt();
|
||||
|
||||
G4double ke = aTrack.GetKineticEnergy();
|
||||
|
||||
G4HadFinalState* theResult = new G4HadFinalState();
|
||||
|
||||
G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget();
|
||||
|
||||
G4double aMu = aTarget->getElasticFinalState( ke*MeV, temp, NULL, NULL );
|
||||
|
||||
G4double phi = twopi*G4UniformRand();
|
||||
G4double theta = std::acos( aMu );
|
||||
//G4double sinth = std::sin( theta );
|
||||
|
||||
G4ReactionProduct theNeutron( const_cast<G4ParticleDefinition *>( aTrack.GetDefinition() ) );
|
||||
theNeutron.SetMomentum( aTrack.Get4Momentum().vect() );
|
||||
theNeutron.SetKineticEnergy( ke );
|
||||
|
||||
G4ReactionProduct theTarget( G4ParticleTable::GetParticleTable()->FindIon( iZ , iA , 0 , iZ ) );
|
||||
|
||||
G4double mass = G4ParticleTable::GetParticleTable()->FindIon( iZ , iA , 0 , iZ )->GetPDGMass();
|
||||
|
||||
// add Thermal motion
|
||||
G4double kT = k_Boltzmann*temp;
|
||||
G4ThreeVector v ( G4RandGauss::shoot() * std::sqrt( kT*mass )
|
||||
, G4RandGauss::shoot() * std::sqrt( kT*mass )
|
||||
, G4RandGauss::shoot() * std::sqrt( kT*mass ) );
|
||||
|
||||
theTarget.SetMomentum( v );
|
||||
|
||||
|
||||
G4ThreeVector the3Neutron = theNeutron.GetMomentum();
|
||||
G4double nEnergy = theNeutron.GetTotalEnergy();
|
||||
G4ThreeVector the3Target = theTarget.GetMomentum();
|
||||
G4double tEnergy = theTarget.GetTotalEnergy();
|
||||
G4ReactionProduct theCMS;
|
||||
G4double totE = nEnergy+tEnergy;
|
||||
G4ThreeVector the3CMS = the3Target+the3Neutron;
|
||||
theCMS.SetMomentum(the3CMS);
|
||||
G4double cmsMom = std::sqrt(the3CMS*the3CMS);
|
||||
G4double sqrts = std::sqrt((totE-cmsMom)*(totE+cmsMom));
|
||||
theCMS.SetMass(sqrts);
|
||||
theCMS.SetTotalEnergy(totE);
|
||||
|
||||
theNeutron.Lorentz(theNeutron, theCMS);
|
||||
theTarget.Lorentz(theTarget, theCMS);
|
||||
G4double en = theNeutron.GetTotalMomentum(); // already in CMS.
|
||||
G4ThreeVector cms3Mom=theNeutron.GetMomentum(); // for neutron direction in CMS
|
||||
G4double cms_theta=cms3Mom.theta();
|
||||
G4double cms_phi=cms3Mom.phi();
|
||||
G4ThreeVector tempVector;
|
||||
tempVector.setX(std::cos(theta)*std::sin(cms_theta)*std::cos(cms_phi)
|
||||
+std::sin(theta)*std::cos(phi)*std::cos(cms_theta)*std::cos(cms_phi)
|
||||
-std::sin(theta)*std::sin(phi)*std::sin(cms_phi) );
|
||||
tempVector.setY(std::cos(theta)*std::sin(cms_theta)*std::sin(cms_phi)
|
||||
+std::sin(theta)*std::cos(phi)*std::cos(cms_theta)*std::sin(cms_phi)
|
||||
+std::sin(theta)*std::sin(phi)*std::cos(cms_phi) );
|
||||
tempVector.setZ(std::cos(theta)*std::cos(cms_theta)
|
||||
-std::sin(theta)*std::cos(phi)*std::sin(cms_theta) );
|
||||
tempVector *= en;
|
||||
theNeutron.SetMomentum(tempVector);
|
||||
theTarget.SetMomentum(-tempVector);
|
||||
G4double tP = theTarget.GetTotalMomentum();
|
||||
G4double tM = theTarget.GetMass();
|
||||
theTarget.SetTotalEnergy(std::sqrt((tP+tM)*(tP+tM)-2.*tP*tM));
|
||||
theNeutron.Lorentz(theNeutron, -1.*theCMS);
|
||||
theTarget.Lorentz(theTarget, -1.*theCMS);
|
||||
|
||||
theResult->SetEnergyChange(theNeutron.GetKineticEnergy());
|
||||
theResult->SetMomentumChange(theNeutron.GetMomentum().unit());
|
||||
G4DynamicParticle* theRecoil = new G4DynamicParticle;
|
||||
|
||||
theRecoil->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( iZ, iA , 0, iZ ) );
|
||||
theRecoil->SetMomentum( theTarget.GetMomentum() );
|
||||
|
||||
theResult->AddSecondary( theRecoil );
|
||||
|
||||
return theResult;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Class Description
|
||||
// Container of LEND (Low Energy Nuclear Data) target (nucleus)
|
||||
// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
|
||||
// which gives a discription of nuclear and atomic reactions, such as
|
||||
// Binary collision cross sections
|
||||
// Particle number multiplicity distributions of reaction products
|
||||
// Energy and angular distributions of reaction products
|
||||
// Derived calculational constants
|
||||
// GIDI is developped at Lawrence Livermore National Laboratory
|
||||
// Class Description - End
|
||||
|
||||
// 071025 First implementation done by T. Koi (SLAC/SCCS)
|
||||
// 101118 Name modifications for release T. Koi (SLAC/PPA)
|
||||
|
||||
#include "G4LENDUsedTarget.hh"
|
||||
#include "G4LENDManager.hh"
|
||||
|
||||
void G4LENDUsedTarget::searchTarget()
|
||||
{
|
||||
|
||||
G4LENDManager* lend_manager = G4LENDManager::GetInstance();
|
||||
|
||||
target = NULL;
|
||||
target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , wanted_A , wanted_M );
|
||||
|
||||
if ( target != NULL )
|
||||
{
|
||||
actual_Z = wanted_Z;
|
||||
actual_A = wanted_A;
|
||||
actual_M = wanted_M;
|
||||
actual_Evaluation = wanted_Evaluation;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ( allow_nat == true || allow_anything == true )
|
||||
{
|
||||
target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , 0 , wanted_M );
|
||||
if ( target != NULL )
|
||||
{
|
||||
actual_Z = wanted_Z;
|
||||
actual_A = 0;
|
||||
actual_M = wanted_M;
|
||||
actual_Evaluation = wanted_Evaluation;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
G4int iZ;
|
||||
G4int iA;
|
||||
G4int iM;
|
||||
|
||||
if ( allow_anything == true )
|
||||
{
|
||||
|
||||
// Loop Z
|
||||
G4int dZ = 0;
|
||||
G4int pZ = 1;
|
||||
while ( dZ < max_Z - min_Z )
|
||||
{
|
||||
iZ = wanted_Z + pZ*dZ;
|
||||
|
||||
// Loop A
|
||||
G4int dA = 0;
|
||||
G4int pA = 1;
|
||||
while ( dA < max_A - min_A )
|
||||
{
|
||||
iA = wanted_A + pA*dA;
|
||||
|
||||
// Loop M
|
||||
G4int pM = 1;
|
||||
G4int dM = 0;
|
||||
while ( dM < max_M - min_M )
|
||||
{
|
||||
|
||||
iM = wanted_M + pM*dM;
|
||||
|
||||
if ( iZ < min_Z ) iZ = min_Z;
|
||||
if ( iA < min_A ) iA = 0;
|
||||
if ( iM < min_M ) iM = min_M;
|
||||
|
||||
if ( iZ > max_Z ) iZ = max_Z;
|
||||
if ( iA > max_A ) iA = max_A;
|
||||
if ( iM > max_M ) iM = max_M;
|
||||
|
||||
//Loop Evaluations choice the first available
|
||||
|
||||
if ( lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).size() > 0 )
|
||||
{
|
||||
//Choice the first available
|
||||
actual_Evaluation = lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).front();
|
||||
|
||||
actual_Z = iZ;
|
||||
actual_A = iA;
|
||||
actual_M = iM;
|
||||
target = lend_manager->GetLENDTarget( proj , actual_Evaluation , iZ , iA , iM );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( pM > 0 )
|
||||
pM = -1;
|
||||
else
|
||||
dM++;
|
||||
}
|
||||
|
||||
if ( pA > 0 )
|
||||
pA = -1;
|
||||
else
|
||||
dA++;
|
||||
}
|
||||
|
||||
if ( pZ > 0 )
|
||||
pZ = -1;
|
||||
else
|
||||
dZ++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include "gString.h"
|
||||
#include <xData.h>
|
||||
#include <string.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int gString_initialize( statusMessageReporting *smr, gString *gStr, int size, int increment ) {
|
||||
|
||||
if( size > 0 ) {
|
||||
//if( ( gStr->gStr = xData_malloc2( smr, size + 1, 0, "gStr->gStr" ) ) == NULL ) return( 1 );
|
||||
if( ( gStr->gStr = (char*) xData_malloc2( smr, size + 1, 0, "gStr->gStr" ) ) == NULL ) return( 1 );
|
||||
gStr->length = 1;
|
||||
gStr->gStr[0] = 0; }
|
||||
else {
|
||||
size = 0;
|
||||
gStr->length = 0;
|
||||
gStr->gStr = NULL;
|
||||
}
|
||||
gStr->allocated = size;
|
||||
//if( increment < gString_minIncrement ) increment = gString_minIncrement;
|
||||
if( increment < (int) gString_minIncrement ) increment = gString_minIncrement;
|
||||
gStr->increment = increment;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int gString_release( statusMessageReporting *smr, gString *gStr ) {
|
||||
|
||||
if( gStr->gStr != NULL ) free( gStr->gStr );
|
||||
gString_initialize( smr, gStr, 0, gStr->increment );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int gString_clear( statusMessageReporting *smr, gString *gStr ) {
|
||||
int gString_clear( statusMessageReporting *, gString *gStr ) {
|
||||
|
||||
if( gStr->gStr != NULL ) {
|
||||
gStr->length = 1;
|
||||
gStr->gStr[0] = 0;
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int gString_addTo( statusMessageReporting *smr, gString *gStr, char const *str ) {
|
||||
|
||||
int n, size = strlen( str );
|
||||
|
||||
if( gStr->gStr == NULL ) {
|
||||
if( gString_initialize( smr, gStr, size + 1, gStr->increment ) != 0 ) return( 1 ); }
|
||||
else if( ( gStr->length + size ) > gStr->allocated ) {
|
||||
n = gStr->increment;
|
||||
if( n < size ) n = size;
|
||||
//if( ( gStr->gStr = xData_realloc2( smr, gStr->gStr, gStr->allocated + n, "gStr->gStr" ) ) == NULL ) return( 1 );
|
||||
if( ( gStr->gStr = (char*) xData_realloc2( smr, gStr->gStr, gStr->allocated + n, "gStr->gStr" ) ) == NULL ) return( 1 );
|
||||
gStr->allocated += n;
|
||||
}
|
||||
strcpy( &(gStr->gStr[gStr->length - 1]), str );
|
||||
gStr->length = gStr->length + size;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//char const *gString_string( statusMessageReporting *smr, gString *gStr ) {
|
||||
char const *gString_string( statusMessageReporting *, gString *gStr ) {
|
||||
|
||||
return( gStr->gStr );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int gString_length( statusMessageReporting *smr, gString *gStr ) {
|
||||
int gString_length( statusMessageReporting *, gString *gStr ) {
|
||||
|
||||
return( gStr->length );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int gString_allocated( statusMessageReporting *smr, gString *gStr ) {
|
||||
int gString_allocated( statusMessageReporting *, gString *gStr ) {
|
||||
|
||||
return( gStr->allocated );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int gString_increment( statusMessageReporting *smr, gString *gStr ) {
|
||||
int gString_increment( statusMessageReporting *, gString *gStr ) {
|
||||
|
||||
return( gStr->increment );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,274 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "statusMessageReporting.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static const char smr_mallocFailed[] = "statusMessageReporting could not allocate memory for message";
|
||||
|
||||
static int smr_setAllocationFailure( statusMessageReporting *smr, const char *fmt, va_list *args );
|
||||
static int smr_setMessage( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code,
|
||||
enum smr_status status, const char *fmt, va_list *args );
|
||||
static char *smr_getFullMessage2( char const *fmt, ... );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_initialize( statusMessageReporting *smr ) {
|
||||
|
||||
smr->status = smr_status_Ok;
|
||||
smr->packageName[0] = 0;
|
||||
smr->line= -1;
|
||||
smr->code = 0;
|
||||
smr->message = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_release( statusMessageReporting *smr ) {
|
||||
|
||||
if( smr->message != NULL ) {
|
||||
if( smr->message != smr_mallocFailed ) free( smr->message );
|
||||
}
|
||||
return( smr_initialize( smr ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_setMessageInfo( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, ... ) {
|
||||
|
||||
int status;
|
||||
va_list args;
|
||||
|
||||
va_start( args, fmt );
|
||||
status = smr_setMessage( smr, userInterface, file, line, code, smr_status_Info, fmt, &args );
|
||||
va_end( args );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_vsetMessageInfo( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, va_list *args ) {
|
||||
|
||||
int status = smr_setMessage( smr, userInterface, file, line, code, smr_status_Info, fmt, args );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_setMessageError( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, ... ) {
|
||||
|
||||
int status;
|
||||
va_list args;
|
||||
|
||||
va_start( args, fmt );
|
||||
status = smr_setMessage( smr, userInterface, file, line, code, smr_status_Error, fmt, &args );
|
||||
va_end( args );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_vsetMessageError( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code, const char *fmt, va_list *args ) {
|
||||
|
||||
int status = smr_setMessage( smr, userInterface, file, line, code, smr_status_Error, fmt, args );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *smr_allocateFormatMessage( const char *fmt, ... ) {
|
||||
|
||||
char *s;
|
||||
va_list args;
|
||||
|
||||
va_start( args, fmt );
|
||||
s = smr_vallocateFormatMessage( fmt, &args );
|
||||
va_end( args );
|
||||
return( s );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *smr_vallocateFormatMessage( const char *fmt, va_list *args ) {
|
||||
|
||||
int n, size = 128;
|
||||
char *message = NULL;
|
||||
va_list args_;
|
||||
|
||||
while( 1 ) {
|
||||
if( ( message = (char *) realloc( message, size ) ) == NULL ) return( NULL );
|
||||
//TK110426
|
||||
#ifndef WIN32
|
||||
__va_copy( args_, *args );
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
args_ = *args;
|
||||
#endif
|
||||
n = vsnprintf( message, size, fmt, args_ );
|
||||
va_end( args_ );
|
||||
if( ( n > -1 ) && ( n < size ) ) break;
|
||||
if( n > -1 ) { /* glibc 2.1 */
|
||||
size = n + 3; }
|
||||
else { /* glibc 2.0 */
|
||||
size += 128;
|
||||
}
|
||||
}
|
||||
return( message );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int smr_setMessage( statusMessageReporting *smr, void *userInterface, const char *file, int line, int code,
|
||||
enum smr_status status, const char *fmt, va_list *args ) {
|
||||
|
||||
char *userMsg = NULL;
|
||||
int userSize;
|
||||
|
||||
if( smr == NULL ) return( 0 );
|
||||
smr_release( smr );
|
||||
smr->status = status;
|
||||
if( file != NULL ) strncpy( smr->packageName, file, smr_maximumPackageNameSize );
|
||||
smr->packageName[smr_maximumPackageNameSize-1] = 0;
|
||||
smr->line= line;
|
||||
smr->code = code;
|
||||
|
||||
if( ( smr->message = smr_vallocateFormatMessage( fmt, args ) ) == NULL ) return( smr_setAllocationFailure( smr, fmt, args ) );
|
||||
if( userInterface != NULL ) {
|
||||
if( ( userSize = (*(smr_userInterface *) userInterface)( (void *) userInterface, NULL ) ) > 0 ) {
|
||||
//if( (smr->message = realloc(smr->message, strlen( smr->message ) + userSize + 2)) == NULL ) return( smr_setAllocationFailure( smr, fmt, args ) );
|
||||
if( (smr->message = (char*) realloc(smr->message, strlen( smr->message ) + userSize + 2)) == NULL ) return( smr_setAllocationFailure( smr, fmt, args ) );
|
||||
strcat( smr->message, "\n" );
|
||||
userSize = (*(smr_userInterface *) userInterface)( (void *) userInterface, &userMsg );
|
||||
if( userSize < 0 ) return( smr_setAllocationFailure( smr, fmt, args ) );
|
||||
if( userSize > 0 ) {
|
||||
strcat( smr->message, userMsg );
|
||||
free( userMsg );
|
||||
}
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int smr_setAllocationFailure( statusMessageReporting *smr, const char *fmt, va_list *args ) {
|
||||
|
||||
vfprintf( stderr, fmt, *args ); /* Assume calling routine calls va_end( args ). */
|
||||
fprintf( stderr, "\nAt line %d of %s\n", smr->line, smr->packageName );
|
||||
smr->status = smr_status_Fatal;
|
||||
smr->message = (char *) smr_mallocFailed;
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_isOk( statusMessageReporting *smr ) {
|
||||
|
||||
if( smr == NULL ) return( 1 );
|
||||
return( smr->status == smr_status_Ok );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_isInfo( statusMessageReporting *smr ) {
|
||||
|
||||
if( smr == NULL ) return( 1 );
|
||||
return( smr->status == smr_status_Info );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_isError( statusMessageReporting *smr ) {
|
||||
|
||||
if( smr == NULL ) return( 1 );
|
||||
return( ( smr->status == smr_status_Error ) || ( smr->status == smr_status_Fatal ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int smr_isFatal( statusMessageReporting *smr ) {
|
||||
|
||||
if( smr == NULL ) return( 1 );
|
||||
return( smr->status == smr_status_Fatal );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
const char *smr_getMessage( statusMessageReporting *smr ) {
|
||||
|
||||
return( smr->message );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *smr_getFullMessage( statusMessageReporting *smr ) {
|
||||
|
||||
return( smr_getFullMessage2( "%s\nAt line %d of %s", smr->message, smr->line, smr->packageName ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static char *smr_getFullMessage2( char const *fmt, ... ) {
|
||||
|
||||
va_list args;
|
||||
char *message;
|
||||
|
||||
va_start( args, fmt );
|
||||
message = smr_vallocateFormatMessage( fmt, &args );
|
||||
va_end( args );
|
||||
return( message );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void smr_print( statusMessageReporting *smr, FILE *f, int clear ) {
|
||||
|
||||
if( smr->message != NULL ) fprintf( f, "%s\nAt line %d of %s\n", smr->message, smr->line, smr->packageName );
|
||||
if( clear ) smr_release( smr );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,442 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <tpi_IDs.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static tpi_channelID *_tpi_channelID_parse2( statusMessageReporting *smr, char const *str, char const *origStr, int isDecayChannel, char **EOP );
|
||||
static tpi_spectralID *_tpi_spectralID_parse2( statusMessageReporting *smr, char const *str, char const *origStr, char **EOP );
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
tpi_channelID *tpi_channelID_allocate( statusMessageReporting *smr ) {
|
||||
|
||||
tpi_channelID *channelID;
|
||||
|
||||
//if( ( channelID = xData_malloc2( smr, sizeof( tpi_channelID ), 0, "channelID" ) ) == NULL ) return( NULL );
|
||||
if( ( channelID = (tpi_channelID*) xData_malloc2( smr, sizeof( tpi_channelID ), 0, "channelID" ) ) == NULL ) return( NULL );
|
||||
tpi_channelID_initialize( smr, channelID );
|
||||
return( channelID );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int tpi_channelID_initialize( statusMessageReporting *smr, tpi_channelID *channelID ) {
|
||||
int tpi_channelID_initialize( statusMessageReporting *, tpi_channelID *channelID ) {
|
||||
|
||||
memset( channelID, 0, sizeof( tpi_channelID ) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
void *tpi_channelID_free( statusMessageReporting *smr, tpi_channelID *channelID ) {
|
||||
|
||||
if( channelID != NULL ) {
|
||||
tpi_channelID_release( smr, channelID );
|
||||
xData_free( smr, channelID );
|
||||
}
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_channelID_release( statusMessageReporting *smr, tpi_channelID *channelID ) {
|
||||
|
||||
tpi_spectralID *spectralID, *next;
|
||||
|
||||
for( spectralID = channelID->spectralIDs; spectralID != NULL; spectralID = next ) {
|
||||
next = spectralID->next;
|
||||
tpi_spectralID_free( smr, spectralID );
|
||||
}
|
||||
tpi_channelID_initialize( smr, channelID );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
tpi_channelID *tpi_channelID_parse( statusMessageReporting *smr, char const *str, char **EOP ) {
|
||||
|
||||
return( _tpi_channelID_parse2( smr, str, str, 0, EOP ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
static tpi_channelID *_tpi_channelID_parse2( statusMessageReporting *smr, char const *str, char const *origStr, int isDecayChannel, char **EOP ) {
|
||||
|
||||
tpi_channelID *channelID;
|
||||
tpi_spectralID *spectralID, *priorSpectral;
|
||||
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, (char *) str );
|
||||
if( **EOP == 0 ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Empty channel string to parse for '%s'", origStr );
|
||||
return( NULL );
|
||||
}
|
||||
if( ( channelID = tpi_channelID_allocate( smr ) ) == NULL ) return( NULL );
|
||||
priorSpectral= (tpi_spectralID *) &(channelID->spectralIDs);
|
||||
while( 1 ) {
|
||||
//if( ( spectralID = _tpi_spectralID_parse2( smr, *EOP, origStr, EOP ) ) == NULL ) return( tpi_channelID_free( smr, channelID ) );
|
||||
if( ( spectralID = _tpi_spectralID_parse2( smr, *EOP, origStr, EOP ) ) == NULL ) return( (tpi_channelID*)tpi_channelID_free( smr, channelID ) );
|
||||
priorSpectral->next = spectralID;
|
||||
priorSpectral = spectralID;
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
if( **EOP == 0 ) break;
|
||||
if( isDecayChannel && ( **EOP == ')' ) ) break;
|
||||
if( **EOP != '+' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing '+' (or maybe ')') in channelID at '%s' of '%s'", *EOP, origStr );
|
||||
//return( tpi_channelID_free( smr, channelID ) );
|
||||
return( (tpi_channelID*)tpi_channelID_free( smr, channelID ) );
|
||||
}
|
||||
(*EOP)++;
|
||||
}
|
||||
return( channelID );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_channelID_toString( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr ) {
|
||||
|
||||
return( tpi_channelID_toStringSans( smr, channelID, gStr, NULL ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_channelID_toStringSanRevision( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr ) {
|
||||
|
||||
//char *sans[] = { "revision", NULL };
|
||||
char *sans[] = { (char*)"revision", NULL };
|
||||
|
||||
return( tpi_channelID_toStringSans( smr, channelID, gStr, sans ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_channelID_toStringSans( statusMessageReporting *smr, tpi_channelID *channelID, gString *gStr, char *sans[] ) {
|
||||
|
||||
tpi_spectralID *spectralID;
|
||||
|
||||
for( spectralID = channelID->spectralIDs; spectralID != NULL; spectralID = spectralID->next ) {
|
||||
if( ( tpi_spectralID_toStringSans( smr, spectralID, gStr, sans ) ) != 0 ) return( 1 );
|
||||
if( spectralID->next != NULL ) {
|
||||
if( ( gString_addTo( smr, gStr, " + " ) ) != 0 ) return( 1 );
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
tpi_spectralID *tpi_spectralID_allocate( statusMessageReporting *smr ) {
|
||||
|
||||
tpi_spectralID *spectralID;
|
||||
|
||||
//if( ( spectralID = xData_malloc2( smr, sizeof( tpi_spectralID ), 1, "spectralID" ) ) == NULL ) return( NULL );
|
||||
if( ( spectralID = (tpi_spectralID*) xData_malloc2( smr, sizeof( tpi_spectralID ), 1, "spectralID" ) ) == NULL ) return( NULL );
|
||||
tpi_spectralID_initialize( smr, spectralID );
|
||||
return( spectralID );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//int tpi_spectralID_initialize( statusMessageReporting *smr, tpi_spectralID *spectralID ) {
|
||||
int tpi_spectralID_initialize( statusMessageReporting *, tpi_spectralID *spectralID ) {
|
||||
|
||||
memset( spectralID, 0, sizeof( tpi_spectralID ) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
void *tpi_spectralID_free( statusMessageReporting *smr, tpi_spectralID *spectralID ) {
|
||||
|
||||
if( spectralID != NULL ) {
|
||||
tpi_spectralID_release( smr, spectralID );
|
||||
xData_free( smr, spectralID );
|
||||
}
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_spectralID_release( statusMessageReporting *smr, tpi_spectralID *spectralID ) {
|
||||
|
||||
tpi_spectralIDQualifier *qualifier, *next;
|
||||
|
||||
if( spectralID->name != NULL ) free( spectralID->name );
|
||||
for( qualifier = spectralID->qualifiers; qualifier != NULL; qualifier = next ) {
|
||||
next = qualifier->next;
|
||||
xData_free( smr, qualifier );
|
||||
}
|
||||
if( spectralID->decayChannel != NULL ) tpi_channelID_free( smr, spectralID->decayChannel );
|
||||
tpi_spectralID_initialize( smr, spectralID );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
tpi_spectralID *tpi_spectralID_parse( statusMessageReporting *smr, char const *str, char **EOP ) {
|
||||
|
||||
return( _tpi_spectralID_parse2( smr, str, str, EOP ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
static tpi_spectralID *_tpi_spectralID_parse2( statusMessageReporting *smr, char const *str, char const *origStr, char **EOP ) {
|
||||
|
||||
int breakup = 0, i1, i2, m;
|
||||
double d;
|
||||
char const *s, *q;
|
||||
char *e;
|
||||
char c, bOrC;
|
||||
tpi_spectralID *spectralID;
|
||||
tpi_spectralIDQualifier *qualifier, *priorQualifier = NULL;
|
||||
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, str );
|
||||
if( **EOP == 0 ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Empty spectralID string to parse for '%s'", origStr );
|
||||
return( NULL );
|
||||
}
|
||||
if( **EOP == '(' ) { /* Breakup spectralID, like '(Be_8 -> He_4[multipliticy:"2"])' */
|
||||
breakup = 1;
|
||||
(*EOP)++;
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
}
|
||||
if( !isalpha( **EOP ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Invalid spectralID name '%s' in '%s'", *EOP, origStr );
|
||||
return( NULL );
|
||||
}
|
||||
for( s = *EOP, i1 = 0; ( isalnum( **EOP ) ) || ( **EOP == '_' ); (*EOP)++ ) i1++;
|
||||
if( ( spectralID = tpi_spectralID_allocate( smr ) ) == NULL ) return( NULL );
|
||||
//if( ( spectralID->name = tpi_misc_allocateAndCopyNCharacters( smr, s, i1 ) ) == NULL ) return( tpi_spectralID_free( smr, spectralID ) );
|
||||
if( ( spectralID->name = tpi_misc_allocateAndCopyNCharacters( smr, s, i1 ) ) == NULL ) return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
if( **EOP == '[' ) { /* Spectral has qualifiers. */
|
||||
priorQualifier = (tpi_spectralIDQualifier *) &(spectralID->qualifiers);
|
||||
bOrC = '[';
|
||||
while( **EOP == bOrC ) {
|
||||
bOrC = ',';
|
||||
(*EOP)++; /* Get qualifier's name. */
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
if( !isalpha( **EOP ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Invalid qualifier name '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
for( s = *EOP, i1 = 0; ( isalnum( **EOP ) ) || ( **EOP == '_' ); (*EOP)++ ) i1++;
|
||||
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP ); /* Skip qualifier's separator. */
|
||||
if( **EOP != ':' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing ':' in qualifier defintion at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
|
||||
(*EOP)++; /* Get qualifier's value. */
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
if( ( **EOP != '"' ) && ( **EOP != '\'' ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing start quote in qualifier defintion at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
c = **EOP;
|
||||
(*EOP)++;
|
||||
for( q = *EOP, i2 = 0; ( **EOP != c ) && ( **EOP != 0 ); (*EOP)++ ) i2++;
|
||||
if( **EOP != c ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing end quote in qualifier defintion at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
(*EOP)++;
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
|
||||
//if( ( qualifier = xData_malloc2( smr, sizeof( tpi_spectralIDQualifier ) + i1 + i2 + 2, 1, "qualifier" ) ) == NULL )
|
||||
if( ( qualifier = (tpi_spectralIDQualifier*) xData_malloc2( smr, sizeof( tpi_spectralIDQualifier ) + i1 + i2 + 2, 1, "qualifier" ) ) == NULL )
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
qualifier->next = NULL;
|
||||
qualifier->name = (char *) &(qualifier[1]);
|
||||
qualifier->value = &(qualifier->name[i1+1]);
|
||||
strncpy( qualifier->name, s, i1 );
|
||||
qualifier->name[i1] = 0;
|
||||
strncpy( qualifier->value, q, i2 );
|
||||
qualifier->value[i2] = 0;
|
||||
|
||||
if( strcmp( qualifier->name, "revision" ) == 0 ) {
|
||||
spectralID->revision = qualifier->value; }
|
||||
else if( strcmp( qualifier->name, "multiplicity" ) == 0 ) {
|
||||
spectralID->multiplicityStr = qualifier->value; }
|
||||
else if( strcmp( qualifier->name, "level" ) == 0 ) {
|
||||
spectralID->levelStr = qualifier->value;
|
||||
}
|
||||
priorQualifier->next = qualifier;
|
||||
priorQualifier = qualifier;
|
||||
}
|
||||
if( **EOP != ']' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing ']' for qualifier at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
(*EOP)++;
|
||||
if( spectralID->multiplicityStr != NULL ) {
|
||||
m = strtol( spectralID->multiplicityStr, &e, 10 );
|
||||
if( ( *e == 0 ) && ( e != spectralID->multiplicityStr ) ) spectralID->multiplicity = m;
|
||||
}
|
||||
if( spectralID->levelStr != NULL ) {
|
||||
d = strtod( spectralID->levelStr, &e );
|
||||
if( ( *e == 0 ) && ( e != spectralID->levelStr ) ) spectralID->level = d;
|
||||
}
|
||||
}
|
||||
if( breakup ) {
|
||||
*EOP = (char *) tpi_misc_firstNonWhiteSpace( smr, *EOP );
|
||||
if( ( **EOP != '-' ) || ( (*EOP)[1] != '>' ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing '->' for breakup at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
*EOP += 2;
|
||||
if( (spectralID->decayChannel = _tpi_channelID_parse2( smr, *EOP, origStr, breakup, EOP )) == NULL )
|
||||
//return( tpi_spectralID_free(smr, spectralID) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free(smr, spectralID) );
|
||||
if( **EOP != ')' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Missing ')' for breakup at '%s' in '%s'", *EOP, origStr );
|
||||
//return( tpi_spectralID_free( smr, spectralID ) );
|
||||
return( (tpi_spectralID*) tpi_spectralID_free( smr, spectralID ) );
|
||||
}
|
||||
(*EOP)++;
|
||||
}
|
||||
return( spectralID );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_spectralID_toString( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr ) {
|
||||
|
||||
return( tpi_spectralID_toStringSans( smr, spectralID, gStr, NULL ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
int tpi_spectralID_toStringSanRevision( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr ) {
|
||||
|
||||
//char *sans[] = { "revision", NULL };
|
||||
char *sans[] = { (char*)"revision", NULL };
|
||||
|
||||
return( tpi_spectralID_toStringSans( smr, spectralID, gStr, sans ) );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
|
||||
int tpi_spectralID_toStringSans( statusMessageReporting *smr, tpi_spectralID *spectralID, gString *gStr, char *sans[] ) {
|
||||
|
||||
tpi_spectralIDQualifier *qualifier;
|
||||
int i;
|
||||
char **san, *sSan[] = { NULL };
|
||||
|
||||
if( sans == NULL ) sans = sSan;
|
||||
if( spectralID->decayChannel != NULL ) if( gString_addTo( smr, gStr, "(" ) != 0 ) return( 1 );
|
||||
if( ( gString_addTo( smr, gStr, spectralID->name ) ) != 0 ) return( 1 );
|
||||
if( spectralID->qualifiers != NULL ) {
|
||||
for( qualifier = spectralID->qualifiers, i = 0; qualifier != NULL; qualifier = qualifier->next ) i++;
|
||||
for( qualifier = spectralID->qualifiers; qualifier != NULL; qualifier = qualifier->next ) {
|
||||
for( san = (char **) sans; *san != NULL; san++ ) {
|
||||
if( strcmp( *san, qualifier->name ) == 0 ) {
|
||||
i--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( i > 0 ) {
|
||||
if( gString_addTo( smr, gStr, "[" ) != 0 ) return( 1 );
|
||||
for( qualifier = spectralID->qualifiers; qualifier != NULL; qualifier = qualifier->next ) {
|
||||
for( san = (char **) sans; *san != NULL; san++ ) if( strcmp( *san, qualifier->name ) == 0 ) break;
|
||||
if( *san != NULL ) continue;
|
||||
if( gString_addTo( smr, gStr, qualifier->name ) != 0 ) return( 1 );
|
||||
if( gString_addTo( smr, gStr, ":'" ) != 0 ) return( 1 );
|
||||
if( gString_addTo( smr, gStr, qualifier->value ) != 0 ) return( 1 );
|
||||
if( gString_addTo( smr, gStr, "'") != 0 ) return( 1 );
|
||||
if( i == 1 ) {
|
||||
if( gString_addTo( smr, gStr, "]" ) != 0 ) return( 1 ); }
|
||||
else {
|
||||
if( gString_addTo( smr, gStr, ", " ) != 0 ) return( 1 );
|
||||
}
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( spectralID->decayChannel != NULL ) {
|
||||
if( ( gString_addTo( smr, gStr, " -> " ) ) != 0 ) return( 1 );
|
||||
if( ( tpi_channelID_toStringSans( smr, spectralID->decayChannel, gStr, sans ) ) != 0 ) return( 1 );
|
||||
if( ( gString_addTo( smr, gStr, ")" ) ) != 0 ) return( 1 );
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
//char const *tpi_misc_firstNonWhiteSpace( statusMessageReporting *smr, char const *str ) {
|
||||
char const *tpi_misc_firstNonWhiteSpace( statusMessageReporting *, char const *str ) {
|
||||
|
||||
char const *s;
|
||||
|
||||
for( s = str; ( *s != 0 ) && isspace( *s ); s++ ) ;
|
||||
return( s );
|
||||
}
|
||||
/*
|
||||
***************************************************
|
||||
*/
|
||||
char *tpi_misc_allocateAndCopyNCharacters( statusMessageReporting *smr, char const *str, int n ) {
|
||||
|
||||
char *s;
|
||||
|
||||
//if( ( s = xData_malloc2( smr, n + 1, 0, "s" ) ) == NULL ) return( NULL );
|
||||
if( ( s = (char*) xData_malloc2( smr, n + 1, 0, "s" ) ) == NULL ) return( NULL );
|
||||
strncpy( s, str, n );
|
||||
s[n] = 0;
|
||||
return( s );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#ifdef WIN32
|
||||
#include <float.h>
|
||||
#endif
|
||||
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static int _tpia_Legendre_getOrder( statusMessageReporting *smr, xData_element *LegendreOrder, tpia_Legendre *Legendre, tpia_EqualProbableBinSpectra *l );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_Legendre_initialize( statusMessageReporting *smr, tpia_Legendre *Legendre ) {
|
||||
|
||||
memset( Legendre, 0, sizeof( tpia_Legendre ) );
|
||||
if( tpia_frame_setFromString( smr, "", "", 0, &(Legendre->frame) ) ) return( 1 );
|
||||
Legendre->binned.numberOfLs = 0;
|
||||
Legendre->binned.ls = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_Legendre_release( statusMessageReporting *smr, tpia_Legendre *Legendre ) {
|
||||
|
||||
int i;
|
||||
|
||||
for( i = 0; i < Legendre->binned.numberOfLs; i++ ) xData_free( smr, Legendre->binned.ls[i].energies );
|
||||
//Legendre->binned.ls = xData_free( smr, Legendre->binned.ls );
|
||||
Legendre->binned.ls = (tpia_EqualProbableBinSpectra*) xData_free( smr, Legendre->binned.ls );
|
||||
tpia_Legendre_initialize( smr, Legendre );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_Legendre_getFromElement( statusMessageReporting *smr, xData_element *LegendreElement, tpia_Legendre *Legendre ) {
|
||||
|
||||
int i, status = 0;
|
||||
xData_elementList *list;
|
||||
|
||||
xData_addToAccessed( smr, LegendreElement, 1 );
|
||||
if( ( tpia_frame_setFromElement( smr, LegendreElement, 4, &(Legendre->frame) ) ) != 0 ) return( 1 );
|
||||
list = xData_getElementsByTagNameAndSort( smr, LegendreElement, "l", NULL, NULL );
|
||||
if( list->n == 0 ) {
|
||||
status = 1;
|
||||
tpia_misc_setMessageError_Element( smr, NULL, LegendreElement, __FILE__, __LINE__, 1, "Legendre element does not contain any l elements" ); }
|
||||
else {
|
||||
//if( ( Legendre->binned.ls = xData_malloc2( smr, list->n * sizeof( tpia_EqualProbableBinSpectra ), 1, "ls" ) ) != NULL ) {
|
||||
if( ( Legendre->binned.ls = (tpia_EqualProbableBinSpectra*) xData_malloc2( smr, list->n * sizeof( tpia_EqualProbableBinSpectra ), 1, "ls" ) ) != NULL ) {
|
||||
Legendre->binned.numberOfLs = 0;
|
||||
for( i = 0; i < list->n; i++ ) {
|
||||
if( ( status = _tpia_Legendre_getOrder( smr, list->items[i].element, Legendre, &(Legendre->binned.ls[i]) ) ) != 0 ) break;
|
||||
Legendre->binned.numberOfLs++;
|
||||
}
|
||||
}
|
||||
}
|
||||
xData_freeElementList( smr, list );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static int _tpia_Legendre_getOrder( statusMessageReporting *smr, xData_element *LegendreOrder, tpia_Legendre *Legendre, tpia_EqualProbableBinSpectra *l ) {
|
||||
static int _tpia_Legendre_getOrder( statusMessageReporting *smr, xData_element *LegendreOrder, tpia_Legendre *, tpia_EqualProbableBinSpectra *l ) {
|
||||
|
||||
int status = 1;
|
||||
xData_Int n, nBins, lOrder;
|
||||
|
||||
if( xData_convertAttributeTo_xData_Int( smr, LegendreOrder, "value", &lOrder ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, LegendreOrder, __FILE__, __LINE__, 1, "missing or invalid nBins attribute for angular bins" ); }
|
||||
else {
|
||||
l->iValue = lOrder;
|
||||
l->dValue = 0.;
|
||||
if( ( l->energies = tpia_misc_getEqualProbableBin( smr, LegendreOrder, &n, &nBins ) ) != NULL ) {
|
||||
status = 0;
|
||||
l->nBins = (int) nBins;
|
||||
l->numberOfEs = (int) n;
|
||||
}
|
||||
}
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_Legendre_SampleEp( statusMessageReporting *smr, tpia_Legendre *Legendre, int sampleMu, tpia_decaySamplingInfo *decaySamplingInfo ) {
|
||||
|
||||
tpia_EqualProbableBinSpectra *binned_l0 = Legendre->binned.ls;
|
||||
double Ep;
|
||||
|
||||
/*
|
||||
Currently, only l = 0, equal probable binning is supported.
|
||||
Need to return frame info for Ep, mu, also.
|
||||
*/
|
||||
if( Legendre->binned.numberOfLs > 0 ) {
|
||||
if( sampleMu ) decaySamplingInfo->mu = 2. * tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState ) - 1.;
|
||||
#ifndef WIN32
|
||||
if( decaySamplingInfo->mu <= -1 ) decaySamplingInfo->mu = nextafter( -1., 0. );
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
if( decaySamplingInfo->mu <= -1 ) decaySamplingInfo->mu = _nextafter( -1., 0. );
|
||||
#endif
|
||||
|
||||
tpia_misc_sampleEqualProbableBin( smr, decaySamplingInfo, decaySamplingInfo->e_in, binned_l0->nBins, binned_l0, &Ep );
|
||||
/* ??? Need to check that e_in > E_Threshold */
|
||||
decaySamplingInfo->Ep = Ep; }
|
||||
else {
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
|
||||
#include "tpia_target.h"
|
||||
#include "tpia_misc.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angular_initialize( statusMessageReporting *smr, tpia_angular *angular ) {
|
||||
|
||||
memset( angular, 0, sizeof( tpia_angular ) );
|
||||
if( tpia_frame_setFromString( smr, "", "", 0, &(angular->frame) ) ) return( 1 );
|
||||
angular->binned.numberOfEs = 0;
|
||||
angular->binned.energies = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angular_release( statusMessageReporting *smr, tpia_angular *angular ) {
|
||||
|
||||
//angular->binned.energies = xData_free( smr, angular->binned.energies );
|
||||
angular->binned.energies = (tpia_EqualProbableBinSpectrum*) xData_free( smr, angular->binned.energies );
|
||||
angular->binned.numberOfEs = 0;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angular_getFromElement( statusMessageReporting *smr, xData_element *angularElement, tpia_angular *angular ) {
|
||||
|
||||
xData_Int n, nBins;
|
||||
|
||||
if( ( tpia_frame_setFromElement( smr, angularElement, 3, &(angular->frame) ) ) != 0 ) return( 1 );
|
||||
if( ( angular->binned.energies = tpia_misc_getEqualProbableBin( smr, angularElement, &n, &nBins ) ) != NULL ) {
|
||||
angular->binned.iValue = 0;
|
||||
angular->binned.dValue = 0;
|
||||
angular->binned.nBins = (int) nBins;
|
||||
angular->binned.numberOfEs = (int) n;
|
||||
return( 0 );
|
||||
}
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angular_SampleMu( statusMessageReporting *smr, tpia_angular *angular, tpia_decaySamplingInfo *decaySamplingInfo ) {
|
||||
|
||||
tpia_EqualProbableBinSpectra *binned = &(angular->binned);
|
||||
int nBins = binned->nBins, status = 1;
|
||||
double mu;
|
||||
/*
|
||||
Currently, only equal probable binning is supported.
|
||||
Need to return frame info for mu also.
|
||||
*/
|
||||
if( binned->numberOfEs > 0 ) {
|
||||
tpia_misc_sampleEqualProbableBin( smr, decaySamplingInfo, decaySamplingInfo->e_in, nBins, binned, &mu );
|
||||
if( mu < -1. ) mu = -1.;
|
||||
if( mu > 1. ) mu = 1.;
|
||||
decaySamplingInfo->mu = mu;
|
||||
status = 0;
|
||||
}
|
||||
|
||||
return( status );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,173 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angularEnergy_initialize( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy ) {
|
||||
|
||||
memset( angularEnergy, 0, sizeof( tpia_angularEnergy ) );
|
||||
if( tpia_frame_setFromString( smr, "", "", 0, &(angularEnergy->frame) ) ) return( 1 );
|
||||
angularEnergy->binned.numberOfEs = 0;
|
||||
angularEnergy->binned.energies = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angularEnergy_release( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy ) {
|
||||
|
||||
int i;
|
||||
|
||||
for( i = 0; i < angularEnergy->binned.numberOfEs; i++ ) xData_free( smr, angularEnergy->binned.energies[i].energies );
|
||||
//angularEnergy->binned.energies = xData_free( smr, angularEnergy->binned.energies );
|
||||
angularEnergy->binned.energies = (tpia_EqualProbableBinSpectra*) xData_free( smr, angularEnergy->binned.energies );
|
||||
tpia_angularEnergy_initialize( smr, angularEnergy );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angularEnergy_getFromElement( statusMessageReporting *smr, xData_element *angularEnergyElement, tpia_angularEnergy *angularEnergy ) {
|
||||
|
||||
int i, j, status = 1;
|
||||
xData_Int nBins, size, n, index;
|
||||
xData_element *epbElement, *element;
|
||||
xData_elementList *list;
|
||||
tpia_EqualProbableBinSpectra *mus;
|
||||
|
||||
xData_addToAccessed( smr, angularEnergyElement, 1 );
|
||||
if( ( tpia_frame_setFromElement( smr, angularEnergyElement, 4, &(angularEnergy->frame) ) ) != 0 ) return( 1 );
|
||||
//if( ( epbElement = xData_getOneElementByTagName( smr, angularEnergyElement, "equalProbableBins", 0 ) ) == NULL ) return( 1 );
|
||||
if( ( epbElement = xData_getOneElementByTagName( smr, angularEnergyElement, (char*)"equalProbableBins", 0 ) ) == NULL ) return( 1 );
|
||||
xData_addToAccessed( smr, epbElement, 1 );
|
||||
if( xData_convertAttributeTo_xData_Int( smr, epbElement, "nBins", &nBins ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, epbElement, __FILE__, __LINE__, 1, "missing or invalid nBins attribute" );
|
||||
return( 1 );
|
||||
}
|
||||
list = xData_getElementsByTagNameAndSort( smr, epbElement, "energy", NULL, NULL );
|
||||
if( list->n == 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, epbElement, __FILE__, __LINE__, 1, "bins does not contain any energy elements" ); }
|
||||
else {
|
||||
size = list->n * sizeof( tpia_EqualProbableBinSpectra );
|
||||
angularEnergy->binned.nBins = (int) nBins;
|
||||
//if( ( angularEnergy->binned.energies = xData_malloc2( smr, size, 1, "energies" ) ) != NULL ) {
|
||||
if( ( angularEnergy->binned.energies = (tpia_EqualProbableBinSpectra*) xData_malloc2( smr, size, 1, "energies" ) ) != NULL ) {
|
||||
status = 0;
|
||||
for( i = 0, mus = angularEnergy->binned.energies; i < list->n; i++, mus++ ) {
|
||||
mus->iValue = 0;
|
||||
element = list->items[i].element;
|
||||
if( xData_convertAttributeTo_xData_Int( smr, element, "index", &index ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "missing or invalid index attribute" );
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
if( index != i ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "index = %lld is not incremental", index );
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
if( ( j = xData_convertAttributeToDouble( smr, element, "value", &(mus->dValue) ) ) != 0 ) {
|
||||
if( j == 1 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "element does not have value attribute" ); }
|
||||
else {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "failed to convert value attribute to double" );
|
||||
}
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
if( ( mus->energies = tpia_misc_getEqualProbableBins( smr, element, "mu", nBins, &n ) ) == NULL ) {
|
||||
status = 1;
|
||||
break; }
|
||||
else {
|
||||
mus->numberOfEs = n;
|
||||
}
|
||||
angularEnergy->binned.numberOfEs++;
|
||||
}
|
||||
}
|
||||
}
|
||||
xData_freeElementList( smr, list );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_angularEnergy_SampleEp( statusMessageReporting *smr, tpia_angularEnergy *angularEnergy, tpia_decaySamplingInfo *decaySamplingInfo ) {
|
||||
|
||||
int iE1, iE2;
|
||||
tpia_EqualProbableBinSpectra *energies = angularEnergy->binned.energies;
|
||||
double Ep, Ep1, Ep2, f, e_in = decaySamplingInfo->e_in;
|
||||
/*
|
||||
Currently, only equal probable binning is supported.
|
||||
Need to return frame info for Ep also.
|
||||
*/
|
||||
|
||||
if( !smr_isOk( smr ) ) return( 1 );
|
||||
if( angularEnergy->binned.numberOfEs == 0 ) return( 1 );
|
||||
for( iE2 = 0; iE2 < angularEnergy->binned.numberOfEs; iE2++ ) if( energies[iE2].dValue >= e_in ) break;
|
||||
if( iE2 == 0 ) {
|
||||
iE1 = iE2; }
|
||||
else if( iE2 == angularEnergy->binned.numberOfEs ) {
|
||||
iE1 = iE2 = angularEnergy->binned.numberOfEs - 1; }
|
||||
else {
|
||||
iE1 = iE2 - 1;
|
||||
}
|
||||
tpia_misc_sampleEqualProbableBin( smr, decaySamplingInfo, decaySamplingInfo->mu, angularEnergy->binned.nBins, &(energies[iE1]), &Ep1 );
|
||||
if( iE1 == iE2 ) {
|
||||
Ep = Ep1; }
|
||||
else {
|
||||
tpia_misc_sampleEqualProbableBin( smr, decaySamplingInfo, decaySamplingInfo->mu, angularEnergy->binned.nBins, &(energies[iE2]), &Ep2 );
|
||||
f = ( energies[iE2].dValue - e_in ) / ( energies[iE2].dValue - energies[iE1].dValue );
|
||||
Ep = f * Ep1 + ( 1 - f ) * Ep2;
|
||||
}
|
||||
decaySamplingInfo->Ep = Ep;
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,237 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static int _tpia_channel_getProductData( statusMessageReporting *smr, xData_element *channelElement, tpia_channel *channel );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_channel_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_channel *channel;
|
||||
|
||||
//if( ( channel = xData_malloc2( smr, sizeof( tpia_channel ), 0, "channel" ) ) == NULL ) return( NULL );
|
||||
if( ( channel = (tpia_channel*) xData_malloc2( smr, sizeof( tpia_channel ), 0, "channel" ) ) == NULL ) return( NULL );
|
||||
if( tpia_channel_initialize( smr, channel ) ) channel = tpia_channel_free( smr, channel );
|
||||
return( channel );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_channel_initialize( statusMessageReporting *smr, tpia_channel *channel ) {
|
||||
int tpia_channel_initialize( statusMessageReporting *, tpia_channel *channel ) {
|
||||
|
||||
memset( channel, 0, sizeof( tpia_channel ) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_channel_createGetFromElement( statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement,
|
||||
int pointwiseRequired ) {
|
||||
|
||||
tpia_channel *channel;
|
||||
|
||||
if( ( channel = tpia_channel_create( smr ) ) == NULL ) return( NULL );
|
||||
if( tpia_channel_getFromElement( smr, target, channelElement, channel, pointwiseRequired ) != 0 ) channel = tpia_channel_free( smr, channel );
|
||||
return( channel );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_channel_free( statusMessageReporting *smr, tpia_channel *channel ) {
|
||||
|
||||
tpia_channel_release( smr, channel );
|
||||
xData_free( smr, channel );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_channel_release( statusMessageReporting *smr, tpia_channel *channel ) {
|
||||
|
||||
tpia_product *product, *nextProduct;
|
||||
|
||||
xData_releaseAttributionList( smr, &(channel->attributes) );
|
||||
//channel->crossSectionPointwise.data = xData_free( smr, channel->crossSectionPointwise.data );
|
||||
channel->crossSectionPointwise.data = (double*) xData_free( smr, channel->crossSectionPointwise.data );
|
||||
//channel->crossSectionGrouped.data = xData_free( smr, channel->crossSectionGrouped.data );
|
||||
channel->crossSectionGrouped.data = (double*) xData_free( smr, channel->crossSectionGrouped.data );
|
||||
//channel->availableEnergyGrouped.data = xData_free( smr, channel->availableEnergyGrouped.data );
|
||||
channel->availableEnergyGrouped.data = (double*) xData_free( smr, channel->availableEnergyGrouped.data );
|
||||
for( product = channel->decayChannel.products; product != NULL; product = nextProduct ) {
|
||||
nextProduct = product->next;
|
||||
tpia_product_free( smr, product );
|
||||
}
|
||||
channel->decayChannel.numberOfProducts = 0;
|
||||
channel->decayChannel.products = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_channel_getFromElement( statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement, tpia_channel *channel,
|
||||
int pointwiseRequired ) {
|
||||
|
||||
xData_Int ll;
|
||||
char *p;
|
||||
xData_element *element, *pElement, *gElement, *eElement;
|
||||
|
||||
xData_addToAccessed( smr, channelElement, 1 );
|
||||
channel->target = target;
|
||||
xData_copyAttributionList( smr, &(channel->attributes), &(channelElement->attributes) );
|
||||
channel->outputChannel = tpia_misc_pointerToAttributeIfAllOk2(smr, channelElement, 1, &(channel->attributes), "outputChannel" );
|
||||
channel->genre = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 1, &(channel->attributes), "genre" );
|
||||
channel->QString = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 1, &(channel->attributes), "Q" );
|
||||
channel->fission = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 0, &(channel->attributes), "fission" );
|
||||
if( smr_isOk( smr ) ) {
|
||||
ll = 0;
|
||||
if( xData_convertAttributeTo_xData_Int( smr, channelElement, "ENDL_C", &ll ) >= 0 ) channel->ENDL_C = (int) ll;
|
||||
}
|
||||
if( smr_isOk( smr ) ) {
|
||||
ll = 0;
|
||||
if( xData_convertAttributeTo_xData_Int( smr, channelElement, "ENDF_MT2", &ll ) >= 0 ) channel->ENDF_MT = (int) ll;
|
||||
}
|
||||
if( smr_isOk( smr ) ) {
|
||||
channel->QIsFloat = 1;
|
||||
channel->Q = strtod( channel->QString, &p ); /* Q string may be something like "notApplicable". */
|
||||
if( *p != 0 ) { /* In that case set QIsFloat to false. */
|
||||
channel->QIsFloat = 0;
|
||||
channel->Q = 0.;
|
||||
}
|
||||
//if( ( element = xData_getOneElementByTagName( smr, channelElement, "crossSection", 1 ) ) != NULL ) {
|
||||
if( ( element = xData_getOneElementByTagName( smr, channelElement, (char*) "crossSection", 1 ) ) != NULL ) {
|
||||
if( ( tpia_frame_setFromElement( smr, element, 2, &channel->crossSectionFrame ) ) == 0 ) {
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
//if( ( pElement = xData_getOneElementByTagName( smr, element, "indexed", 1 ) ) != NULL ) {
|
||||
if( ( pElement = xData_getOneElementByTagName( smr, element, (char*) "indexed", 1 ) ) != NULL ) {
|
||||
channel->crossSectionPointwise.data = tpia_misc_get2dxindex_y_data( smr, pElement,
|
||||
&(channel->crossSectionPointwise.start), &(channel->crossSectionPointwise.end), target->energyGrid );
|
||||
}
|
||||
if( ( gElement = xData_getOneElementByTagName( smr, element, (char*) "grouped", 1 ) ) != NULL ) {
|
||||
tpia_misc_get2d_xShared_yHistogram_data_Grouped( smr, gElement, &(channel->crossSectionGrouped) );
|
||||
}
|
||||
if( ( channel->crossSectionGrouped.data != NULL ) && ( ( channel->crossSectionPointwise.data != NULL ) || !pointwiseRequired ) ) {
|
||||
if( target->contents == NULL ) { /* Only supported "crossSection" currently. */
|
||||
if( !tpia_channel_isProduction( smr, channel ) ) {
|
||||
//if( ( eElement = xData_getOneElementByTagName( smr, channelElement, "availableEnergy", 1 ) ) != NULL ) {
|
||||
if( ( eElement = xData_getOneElementByTagName( smr, channelElement, (char*) "availableEnergy", 1 ) ) != NULL ) {
|
||||
xData_addToAccessed( smr, eElement, 1 );
|
||||
//if( ( gElement = xData_getOneElementByTagName( smr, eElement, "grouped", 1 ) ) != NULL ) {
|
||||
if( ( gElement = xData_getOneElementByTagName( smr, eElement, (char*) "grouped", 1 ) ) != NULL ) {
|
||||
tpia_misc_get2d_xShared_yHistogram_data_Grouped( smr, gElement, &(channel->availableEnergyGrouped) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( smr_isOk( smr ) ) _tpia_channel_getProductData( smr, channelElement, channel );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return( !smr_isOk( smr ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_channel_getProductData( statusMessageReporting *smr, xData_element *channelElement, tpia_channel *channel ) {
|
||||
|
||||
return( tpia_product_getDecayChannelFromElement( smr, channelElement, channel, NULL, &(channel->decayChannel.products) ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_channel_getFirstProduct( tpia_channel *channel ) {
|
||||
|
||||
return( tpia_decayChannel_getFirstProduct( &(channel->decayChannel) ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//tpia_product *tpia_channel_getProductByIndex( statusMessageReporting *smr, tpia_channel *channel, int index ) {
|
||||
tpia_product *tpia_channel_getProductByIndex( statusMessageReporting *, tpia_channel *channel, int index ) {
|
||||
|
||||
int i = 0;
|
||||
tpia_product *p;
|
||||
|
||||
if( index < 0 ) return( NULL );
|
||||
for( p = tpia_channel_getFirstProduct( channel ); ( p != NULL ) && ( i < index ); p = tpia_decayChannel_getNextProduct( p ), i++ ) ;
|
||||
return( p );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_channel_numberOfProducts( statusMessageReporting *smr, tpia_channel *channel ) {
|
||||
int tpia_channel_numberOfProducts( statusMessageReporting *, tpia_channel *channel ) {
|
||||
|
||||
return( channel->decayChannel.numberOfProducts );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_channel_isProduction( statusMessageReporting *smr, tpia_channel *channel ) {
|
||||
int tpia_channel_isProduction( statusMessageReporting *, tpia_channel *channel ) {
|
||||
|
||||
return( strcmp( channel->genre, "production" ) == 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//double tpia_channel_getCrossSectionAtE( statusMessageReporting *smr, tpia_channel *channel, xData_Int iEg, double e_in,
|
||||
double tpia_channel_getCrossSectionAtE( statusMessageReporting *smr, tpia_channel *channel, xData_Int , double e_in,
|
||||
int crossSectionType ) {
|
||||
|
||||
double xsec = 0.;
|
||||
|
||||
if( crossSectionType == tpia_crossSectionType_grouped ) {
|
||||
xsec = 0; }
|
||||
else if( crossSectionType == tpia_crossSectionType_pointwise ) {
|
||||
xsec = tpia_misc_getPointwiseCrossSectionAtE( smr, &(channel->crossSectionPointwise), channel->target->energyGrid,
|
||||
tpia_target_heated_getEIndex( channel->target, e_in ), e_in );
|
||||
}
|
||||
return( xsec );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#ifdef WIN32
|
||||
#define _USE_MATH_DEFINES
|
||||
#endif
|
||||
#include <cmath>
|
||||
#include "tpia_target.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_decayChannel_getFirstProduct( tpia_decayChannel *decayChannel ) {
|
||||
|
||||
return( decayChannel->products );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_decayChannel_getNextProduct( tpia_product *product ) {
|
||||
|
||||
return( product->next );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_decayChannel_sampleProductsAtE( statusMessageReporting *smr, tpia_decayChannel *decayChannel, tpia_decaySamplingInfo *decaySamplingInfo,
|
||||
int nProductData, tpia_productOutgoingData *productDatas ) {
|
||||
|
||||
int i, n = 0, multiplicity, secondTwoBody = 0, labFrame = tpia_referenceFrame_lab;
|
||||
tpia_product *product, *nextProduct;
|
||||
double phi, p;
|
||||
|
||||
if( nProductData < decayChannel->numberOfProducts ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "nProductData = %d < decayChannel->numberOfProducts = %d", nProductData,
|
||||
decayChannel->numberOfProducts );
|
||||
return( -1 );
|
||||
}
|
||||
for( i = 0, product = tpia_decayChannel_getFirstProduct( decayChannel ); product != NULL; i++, product = tpia_decayChannel_getNextProduct( product ) ) {
|
||||
nextProduct = tpia_decayChannel_getNextProduct( product );
|
||||
if( !secondTwoBody ) {
|
||||
if( ( multiplicity = product->multiplicity ) == 0 ) multiplicity = tpia_product_sampleMultiplicity( smr, product, decaySamplingInfo->e_in,
|
||||
tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState ) );
|
||||
while( multiplicity > 0 ) {
|
||||
if( n >= nProductData ) break; /* This needs work. */
|
||||
multiplicity--;
|
||||
decaySamplingInfo->genre = product->genre;
|
||||
decaySamplingInfo->productID = product->productID;
|
||||
decaySamplingInfo->mu = 0;
|
||||
decaySamplingInfo->Ep = 0;
|
||||
productDatas[n].genre = product->genre;
|
||||
productDatas[n].isVelocity = decaySamplingInfo->isVelocity;
|
||||
tpia_frame_setColumns( smr, &(productDatas[n].frame), 1, &labFrame );
|
||||
productDatas[n].productID = product->productID;
|
||||
productDatas[n].decayChannel = &(product->decayChannel);
|
||||
if( strcmp( product->genre, "twoBody_angular" ) == 0 ) {
|
||||
secondTwoBody = 1;
|
||||
productDatas[n+1].productID = nextProduct->productID;
|
||||
productDatas[n].genre = product->genre;
|
||||
tpia_angular_SampleMu( smr, &(product->angular), decaySamplingInfo ); /* Need to test for success. */
|
||||
if( smr_isOk( smr ) ) {
|
||||
phi = 2. * M_PI * tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState );
|
||||
productDatas[n].isVelocity = decaySamplingInfo->isVelocity;
|
||||
productDatas[n].frame = decaySamplingInfo->frame;
|
||||
tpia_kinetics_2BodyReaction( smr, decayChannel, decaySamplingInfo->e_in, decaySamplingInfo->mu, phi, &(productDatas[n]) );
|
||||
} }
|
||||
else if( strcmp( product->genre, "NBody_Legendre" ) == 0 ) {
|
||||
tpia_Legendre_SampleEp( smr, &(product->Legendre), 1, decaySamplingInfo ); }
|
||||
else if( strcmp( product->genre, "NBody_angular_energy" ) == 0 ) {
|
||||
tpia_angular_SampleMu( smr, &(product->angular), decaySamplingInfo ); /* Need to test for success. */
|
||||
tpia_angularEnergy_SampleEp( smr, &(product->angularEnergy), decaySamplingInfo ); }
|
||||
else if( strcmp( product->genre, "NBody_uncorrelate_Legendre" ) == 0 ) {
|
||||
tpia_angular_SampleMu( smr, &(product->angular), decaySamplingInfo ); /* Need to test for success. */
|
||||
tpia_Legendre_SampleEp( smr, &(product->Legendre), 0, decaySamplingInfo ); }
|
||||
else if( strcmp( product->genre, "unknown" ) == 0 ) {
|
||||
}
|
||||
else {
|
||||
printf( "Unknown spectral data form product name = %s, genre = %s\n", product->productID->name, product->genre );
|
||||
}
|
||||
if( !smr_isOk( smr ) ) return( -1 );
|
||||
if( secondTwoBody ) {
|
||||
n++;
|
||||
productDatas[n].productID = nextProduct->productID;
|
||||
productDatas[n].genre = nextProduct->genre; }
|
||||
else {
|
||||
productDatas[n].kineticEnergy = decaySamplingInfo->Ep;
|
||||
p = std::sqrt( decaySamplingInfo->Ep * ( decaySamplingInfo->Ep + 2. * product->productID->fullMass_MeV ) );
|
||||
productDatas[n].pz_vz = p * decaySamplingInfo->mu;
|
||||
p = std::sqrt( 1. - decaySamplingInfo->mu * decaySamplingInfo->mu ) * p;
|
||||
phi = 2. * M_PI * tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState );
|
||||
productDatas[n].px_vx = p * std::sin( phi );
|
||||
productDatas[n].py_vy = p * std::cos( phi );
|
||||
}
|
||||
n++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return( n );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <tpia_depot.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI{
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_depot *tpia_depot_create( statusMessageReporting *smr, const char *projectileName ) {
|
||||
|
||||
tpia_depot *depot;
|
||||
|
||||
//if( ( depot = xData_malloc2( smr, sizeof( tpia_depot ), 0, "map" ) ) == NULL ) return( NULL );
|
||||
if( ( depot = (tpia_depot*) xData_malloc2( smr, sizeof( tpia_depot ), 0, "map" ) ) == NULL ) return( NULL );
|
||||
if( tpia_depot_initialize( smr, depot, projectileName ) ) depot = tpia_depot_free( depot, 0 );
|
||||
return( depot );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_depot_initialize( statusMessageReporting *smr, tpia_depot *depot, const char *projectileName ) {
|
||||
|
||||
memset( depot, 0, sizeof( tpia_depot ) );
|
||||
depot->status = 0;
|
||||
depot->projectileName = NULL;
|
||||
depot->numberOfTargets = 0;
|
||||
depot->targets = NULL;
|
||||
depot->map = NULL;
|
||||
//if( ( depot->projectileName = xData_malloc2( smr, strlen( projectileName ) + 1, 0, "projectile" ) ) == NULL ) return( 1 );
|
||||
if( ( depot->projectileName = (char*) xData_malloc2( smr, strlen( projectileName ) + 1, 0, "projectile" ) ) == NULL ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_depot *tpia_depot_free( tpia_depot *depot, int freeMap ) {
|
||||
|
||||
tpia_depot_release( depot, freeMap );
|
||||
xData_free( NULL, depot );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_depot_release( tpia_depot *depot, int freeMap ) {
|
||||
|
||||
tpia_targetEntry *next, *targetEntry;
|
||||
|
||||
if( depot->projectileName != NULL ) xData_free( NULL, depot->projectileName );
|
||||
for( targetEntry = depot->targets; targetEntry != NULL; targetEntry = next ) {
|
||||
next = targetEntry->next;
|
||||
tpia_target_free( NULL, targetEntry->target );
|
||||
xData_free( NULL, targetEntry );
|
||||
}
|
||||
depot->numberOfTargets = 0;
|
||||
depot->targets = NULL;
|
||||
//if( freeMap && ( depot->map != NULL ) ) depot->map = tpia_map_free( NULL, depot->map );
|
||||
if( freeMap && ( depot->map != NULL ) ) depot->map = (tpia_map*) tpia_map_free( NULL, depot->map );
|
||||
return( depot->status = 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_depot_setMap( statusMessageReporting *smr, tpia_depot *depot, tpia_map *map ) {
|
||||
int tpia_depot_setMap( statusMessageReporting *, tpia_depot *depot, tpia_map *map ) {
|
||||
|
||||
depot->map = map;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_depot_setMapFromFilename( statusMessageReporting *smr, tpia_depot *depot, const char *basePath, const char *mapFileName ) {
|
||||
|
||||
if( ( depot->map = tpia_map_readFile( smr, basePath, mapFileName ) ) == NULL ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_map *tpia_depot_releaseMap( tpia_depot *depot ) {
|
||||
|
||||
tpia_map *map = depot->map;
|
||||
|
||||
depot->map = NULL;
|
||||
return( map );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_depot_freeMap( tpia_depot *depot ) {
|
||||
|
||||
tpia_map *map = tpia_depot_releaseMap( depot );
|
||||
|
||||
if( map != NULL ) tpia_map_free( NULL, map );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_targetEntry *tpia_depot_getFirstTargetEntry( tpia_depot *depot ) {
|
||||
|
||||
return( depot->targets );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_targetEntry *tpia_depot_getNextTargetEntry( tpia_targetEntry *targetEntry ) {
|
||||
|
||||
return( targetEntry->next );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_depot_addTarget( statusMessageReporting *smr, tpia_depot *depot, const char *evaluation, const char *targetName ) {
|
||||
|
||||
return( tpia_depot_addTargetFromMap( smr, depot, depot->map, evaluation, targetName ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_depot_addTargetFromMap( statusMessageReporting *smr, tpia_depot *depot, tpia_map *map, const char *evaluation, const char *targetName ) {
|
||||
|
||||
tpia_targetEntry *targetEntry;
|
||||
tpia_target *target;
|
||||
|
||||
for( targetEntry = tpia_depot_getFirstTargetEntry( depot ); targetEntry != NULL; targetEntry = tpia_depot_getNextTargetEntry( targetEntry ) ) {
|
||||
if( !strcmp( targetEntry->target->targetID->name, targetName ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "depot already contains target = %s ", targetName );
|
||||
return( NULL );
|
||||
}
|
||||
}
|
||||
target = tpia_target_createReadFromMap( smr, map, evaluation, depot->projectileName, targetName );
|
||||
return( target );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,228 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static int nlab_Str = 0, nCOM_Str = 0;
|
||||
static char lab_Str[] = "lab", COM_Str[] = "centerOfMass";
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_frame_clear( statusMessageReporting *smr, tpia_data_frame *frame ) {
|
||||
int tpia_frame_clear( statusMessageReporting *, tpia_data_frame *frame ) {
|
||||
|
||||
frame->frames = 0;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_frame_setFromElement( statusMessageReporting *smr, xData_element *element, int dimension, tpia_data_frame *frame ) {
|
||||
|
||||
char const *value = xData_getAttributesValueInElement( element, "frame" );
|
||||
|
||||
if( value == NULL ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "element is missing frame attribute" );
|
||||
return( 1 );
|
||||
}
|
||||
return( tpia_frame_setFromString( smr, element->fullName, value, dimension, frame ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_frame_setFromString( statusMessageReporting *smr, const char *forItem, const char *value, int dimension, tpia_data_frame *frame ) {
|
||||
|
||||
char const *e;
|
||||
int status = 1, i;
|
||||
|
||||
for( i = 0; i < tpia_maxNumberOfFrames; i++ ) tpia_frame_setColumn( smr, frame, i, tpia_referenceFrame_None );
|
||||
if( dimension > tpia_maxNumberOfFrames ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "dimension argument = %d is greater than tpia_maxNumberOfFrames = %d", dimension,
|
||||
tpia_maxNumberOfFrames );
|
||||
return( status );
|
||||
}
|
||||
for( i = 0, e = value; ( i < dimension ) && ( *e != 0 ); i++ ) {
|
||||
if( strstr( e, lab_Str ) == e ) {
|
||||
tpia_frame_setColumn( smr, frame, i, tpia_referenceFrame_lab );
|
||||
e += 3; }
|
||||
else if( strstr( e, COM_Str ) == e ) {
|
||||
tpia_frame_setColumn( smr, frame, i, tpia_referenceFrame_COM );
|
||||
e += 12; }
|
||||
else {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad frame '%s' for %s", value, forItem );
|
||||
break;
|
||||
}
|
||||
if( *e != 0 ) {
|
||||
if( *e != ',' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad separater for frame '%s' for %s", value, forItem );
|
||||
break;
|
||||
}
|
||||
e++;
|
||||
}
|
||||
}
|
||||
if( smr_isOk( smr ) ) {
|
||||
if( i == dimension ) {
|
||||
if( *e == 0 ) {
|
||||
status = 0; }
|
||||
else {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "extra values for frame '%s' for %s", value, forItem );
|
||||
} }
|
||||
else {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "missing values for frame '%s' for %s", value, forItem );
|
||||
}
|
||||
}
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_frame_getDimensions( statusMessageReporting *smr, tpia_data_frame *frame ) {
|
||||
int tpia_frame_getDimensions( statusMessageReporting *, tpia_data_frame *frame ) {
|
||||
|
||||
int i, dimension = 0;
|
||||
unsigned value = frame->frames;
|
||||
|
||||
for( i = 0; i < tpia_maxNumberOfFrames; i++ ) {
|
||||
if( ( value & 3 ) == 0 ) break;
|
||||
dimension++;
|
||||
value = value >> 2;
|
||||
}
|
||||
return( dimension );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//char *tpia_frame_toString( statusMessageReporting *smr, const char *fromItem, tpia_data_frame *frame ) {
|
||||
char *tpia_frame_toString( statusMessageReporting *smr, const char *, tpia_data_frame *frame ) {
|
||||
|
||||
int i, n = tpia_frame_getDimensions( smr, frame ), value, nStr = 0;
|
||||
char *str = NULL, *p;
|
||||
|
||||
if( nlab_Str == 0 ) {
|
||||
nlab_Str = strlen( lab_Str );
|
||||
nCOM_Str = strlen( COM_Str );
|
||||
}
|
||||
for( i = 0; i < n; i++ ) {
|
||||
value = tpia_frame_getColumn( smr, frame, i );
|
||||
if( value == tpia_referenceFrame_COM ) {
|
||||
nStr += nCOM_Str + 1; }
|
||||
else if( value == tpia_referenceFrame_lab ) {
|
||||
nStr += nlab_Str + 1; }
|
||||
else {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad frame value = %d for column = %d", value, i );
|
||||
return( NULL );
|
||||
}
|
||||
}
|
||||
if( nStr == 0 ) nStr = 1;
|
||||
//if( ( str = xData_malloc2( smr, nStr, 1, "str" ) ) == NULL ) return( NULL );
|
||||
if( ( str = (char*) xData_malloc2( smr, nStr, 1, "str" ) ) == NULL ) return( NULL );
|
||||
for( i = 0, p = str - 1; i < n; i++ ) {
|
||||
p++;
|
||||
value = tpia_frame_getColumn( smr, frame, i );
|
||||
if( value == tpia_referenceFrame_COM ) {
|
||||
strcpy( p, COM_Str );
|
||||
p += nCOM_Str; }
|
||||
else {
|
||||
strcpy( p, lab_Str );
|
||||
p += nlab_Str;
|
||||
}
|
||||
*p = ',';
|
||||
}
|
||||
*p = 0;
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_frame_setColumns( statusMessageReporting *smr, tpia_data_frame *frame, int nColumns, int *values ) {
|
||||
|
||||
int i;
|
||||
|
||||
tpia_frame_clear( smr, frame );
|
||||
for( i = 0; i < nColumns; i++ ) if( tpia_frame_setColumn( smr, frame, i, values[i] ) != 0 ) return( 1 );
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_frame_setColumn( statusMessageReporting *smr, tpia_data_frame *frame, int column, int value ) {
|
||||
|
||||
int i;
|
||||
|
||||
if( ( column < 0 ) || ( column >= tpia_maxNumberOfFrames ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad column = %d value for setting frame (0 <= column < %d)", column, tpia_maxNumberOfFrames );
|
||||
return( 1 ); }
|
||||
else {
|
||||
if( ( value < tpia_referenceFrame_None ) || ( value > tpia_referenceFrame_Max ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad frame value = %d for column = %d", value, column );
|
||||
return( 1 ); }
|
||||
else {
|
||||
i = 3 << ( 2 * column );
|
||||
frame->frames = frame->frames & (~i);
|
||||
value = value << ( 2 * column );
|
||||
frame->frames = frame->frames | value;
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_frame_getColumn( statusMessageReporting *smr, tpia_data_frame *frame, int column ) {
|
||||
|
||||
unsigned int value;
|
||||
|
||||
if( ( column < 0 ) || ( column >= tpia_maxNumberOfFrames ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad column = %d value for getting frame (0 <= column < %d)", column, tpia_maxNumberOfFrames );
|
||||
return( -1 ); }
|
||||
else {
|
||||
value = frame->frames >> ( 2 * column );
|
||||
}
|
||||
return( (int) ( value & 3 ) );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <cmath>
|
||||
#include <tpia_target.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_kinetics_2BodyReaction( statusMessageReporting *smr, tpia_decayChannel *decayChannel, double K, double mu, double phi,
|
||||
tpia_productOutgoingData *outgoingData ) {
|
||||
|
||||
tpia_product *pp3 = tpia_decayChannel_getFirstProduct( decayChannel ), *pp4;
|
||||
double m1 = decayChannel->m1_fullMass_MeV, m2 = decayChannel->m2_fullMass_MeV, m3, m4, mi, mf, Kp, x, beta;
|
||||
|
||||
pp4 = tpia_decayChannel_getNextProduct( pp3 );
|
||||
m3 = pp3->productID->fullMass_MeV;
|
||||
m4 = pp4->productID->fullMass_MeV;
|
||||
mi = m1 + m2;
|
||||
mf = m3 + m4;
|
||||
beta = std::sqrt( K * ( K + 2. * m1 ) ) / ( K + mi );
|
||||
x = K * m2 / ( mi * mi );
|
||||
if( x < 2e-5 ) { /* Kp is the total kinetic energy for m3 and m4 in the COM frame. */
|
||||
Kp = mi - mf + K * m2 / mi * ( 1 - 0.5 * x * ( 1 - x ) ); }
|
||||
else {
|
||||
Kp = std::sqrt( mi * mi + 2 * K * m2 ) - mf;
|
||||
}
|
||||
if( Kp < 0 ) Kp = 0.; /* ???? There needs to be a better test here. */
|
||||
outgoingData[0].decayChannel = &(pp3->decayChannel);
|
||||
outgoingData[1].genre = outgoingData[0].genre;
|
||||
outgoingData[1].productID = pp4->productID;
|
||||
outgoingData[1].decayChannel = &(pp4->decayChannel);
|
||||
return( tpia_kinetics_COMKineticEnergy2LabEnergyAndMomentum( smr, beta, Kp, mu, phi, m3, m4, outgoingData ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_kinetics_COMKineticEnergy2LabEnergyAndMomentum( statusMessageReporting *smr, double beta, double e_kinetic_com, double mu, double phi,
|
||||
int tpia_kinetics_COMKineticEnergy2LabEnergyAndMomentum( statusMessageReporting *, double beta, double e_kinetic_com, double mu, double phi,
|
||||
double m3cc, double m4cc, tpia_productOutgoingData *outgoingData ) {
|
||||
/*
|
||||
* beta the velocity/speedOflight of the com frame relative to the lab frame.
|
||||
* e_kinetic_com Total kinetic energy (K1 + K2) in the COM frame.
|
||||
* mu cos( theta ) in the COM frame.
|
||||
*/
|
||||
double x, v_p, p, pp3, pp4, px3, py3, pz3, pz4, pz, p_perp2, E3, E4, gamma, m3cc2 = m3cc * m3cc, m4cc2 = m4cc * m4cc;
|
||||
|
||||
p = std::sqrt( e_kinetic_com * ( e_kinetic_com + 2. * m3cc ) * ( e_kinetic_com + 2. * m4cc ) * ( e_kinetic_com + 2. * ( m3cc + m4cc ) ) ) /
|
||||
( 2. * ( e_kinetic_com + m3cc + m4cc ) );
|
||||
py3 = p * std::sqrt( 1 - mu * mu );
|
||||
px3 = py3 * std::cos( phi );
|
||||
py3 *= std::sin( phi );
|
||||
pz = p * mu;
|
||||
if( tpia_frame_getColumn( NULL, &(outgoingData[0].frame), 0 ) == tpia_referenceFrame_lab ) {
|
||||
E3 = std::sqrt( p * p + m3cc2 );
|
||||
E4 = std::sqrt( p * p + m4cc2 );
|
||||
gamma = std::sqrt( 1. / ( 1. - beta * beta ) );
|
||||
pz3 = gamma * ( pz + beta * E3 );
|
||||
pz4 = gamma * ( -pz + beta * E4 ); }
|
||||
else {
|
||||
pz3 = pz;
|
||||
pz4 = -pz;
|
||||
}
|
||||
outgoingData[1].isVelocity = outgoingData[0].isVelocity;
|
||||
outgoingData[1].frame = outgoingData[0].frame;
|
||||
|
||||
p_perp2 = px3 * px3 + py3 * py3;
|
||||
|
||||
outgoingData[0].px_vx = px3;
|
||||
outgoingData[0].py_vy = py3;
|
||||
outgoingData[0].pz_vz = pz3;
|
||||
pp3 = p_perp2 + pz3 * pz3;
|
||||
x = pp3 / ( 2 * m3cc2 );
|
||||
if( x < 1e-5 ) {
|
||||
outgoingData[0].kineticEnergy = m3cc * x * ( 1 - 0.5 * x * ( 1 - x ) ); }
|
||||
else {
|
||||
outgoingData[0].kineticEnergy = std::sqrt( m3cc2 + pp3 ) - m3cc;
|
||||
}
|
||||
outgoingData[1].px_vx = -px3;
|
||||
outgoingData[1].py_vy = -py3;
|
||||
outgoingData[1].pz_vz = pz4;
|
||||
pp4 = p_perp2 + pz4 * pz4;
|
||||
x = pp4 / ( 2 * m4cc2 );
|
||||
if( x < 1e-5 ) {
|
||||
outgoingData[1].kineticEnergy = m4cc * x * ( 1 - 0.5 * x * ( 1 - x ) ); }
|
||||
else {
|
||||
outgoingData[1].kineticEnergy = std::sqrt( m4cc2 + pp4 ) - m4cc;
|
||||
}
|
||||
|
||||
if( outgoingData[0].isVelocity ) {
|
||||
v_p = tpia_speedOfLight_cm_sec / std::sqrt( pp3 + m3cc2 );
|
||||
outgoingData[0].px_vx *= v_p;
|
||||
outgoingData[0].py_vy *= v_p;
|
||||
outgoingData[0].pz_vz *= v_p;
|
||||
|
||||
v_p = tpia_speedOfLight_cm_sec / std::sqrt( pp4 + m4cc2 );
|
||||
outgoingData[1].px_vx *= v_p;
|
||||
outgoingData[1].py_vy *= v_p;
|
||||
outgoingData[1].pz_vz *= v_p;
|
||||
}
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,579 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#ifdef WIN32
|
||||
#include <Shlwapi.h>
|
||||
#endif
|
||||
#include <tpia_map.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static tpia_mapEntry *_tpia_map_addEntry( statusMessageReporting *smr, tpia_map *map, enum tpia_mapEntry_type type, const char *schema, const char *path,
|
||||
const char *evaluation, const char *projectile, const char *target );
|
||||
static char *_tpia_map_findTarget2( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectile, const char *target );
|
||||
static int _tpia_map_findAllOfTarget2( statusMessageReporting *smr, tpia_map *mapAllOfTarget, tpia_map *map, const char *projectile, const char *targetName );
|
||||
static int _tpia_map_walkTree2( statusMessageReporting *smr, tpia_map *map, int level, int (*handler)( tpia_mapEntry *entry, int level, void *userData),
|
||||
void *userData );
|
||||
static void _tpia_map_simpleWrite2( FILE *f, tpia_map *map, int level );
|
||||
static int _tpia_map_smrUserInterface( void *userData, char **str );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_map *tpia_map_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_map *map;
|
||||
|
||||
//if( ( map = xData_malloc2( smr, sizeof( tpia_map ), 0, "map" ) ) == NULL ) return( NULL );
|
||||
if( ( map = (tpia_map*) xData_malloc2( smr, sizeof( tpia_map ), 0, "map" ) ) == NULL ) return( NULL );
|
||||
//if( tpia_map_initialize( smr, map ) ) map = tpia_map_free( NULL, map );
|
||||
if( tpia_map_initialize( smr, map ) ) map = (tpia_map*) tpia_map_free( NULL, map );
|
||||
return( map );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_map_initialize( statusMessageReporting *smr, tpia_map *map ) {
|
||||
int tpia_map_initialize( statusMessageReporting *, tpia_map *map ) {
|
||||
|
||||
memset( map, 0, sizeof( tpia_map ) );
|
||||
map->status = tpia_map_status_Ok;
|
||||
map->smrUserInterface.smrUserInterface = _tpia_map_smrUserInterface;
|
||||
map->smrUserInterface.map = map;
|
||||
map->path = NULL;
|
||||
map->mapFileName = NULL;
|
||||
map->numberOfEntries = 0;
|
||||
map->mapEntries = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_map *tpia_map_readFile( statusMessageReporting *smr, const char *basePath, const char *mapFileName ) {
|
||||
/*
|
||||
* If an error occurrs, map is freed and NULL is returned.
|
||||
*/
|
||||
int n = 0;
|
||||
xData_document *doc;
|
||||
xData_element *element;
|
||||
xData_element *child;
|
||||
tpia_map *map;
|
||||
const char *evaluation, *projectile, *targetName, *path, *schema;
|
||||
#ifndef WIN32
|
||||
char realPath[2 * ( PATH_MAX + 1 )], *p = &(realPath[PATH_MAX+1]);
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
char realPath[2 * ( _MAX_PATH + 1 )], *p = &(realPath[_MAX_PATH+1]);
|
||||
#endif
|
||||
|
||||
if( ( map = tpia_map_create( smr ) ) == NULL ) return( NULL );
|
||||
|
||||
if( ( basePath == NULL ) || ( mapFileName[0] == '/' ) ) {
|
||||
strcpy( realPath, mapFileName ); }
|
||||
else {
|
||||
strcpy( realPath, basePath );
|
||||
strcat( realPath, "/" );
|
||||
strcat( realPath, mapFileName );
|
||||
}
|
||||
#ifndef WIN32
|
||||
if( realpath( realPath, p ) == NULL ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, tpia_map_status_mapParsing, "No map file %s\n", mapFileName );
|
||||
//return( tpia_map_free( NULL, map ) );
|
||||
return( (tpia_map*) tpia_map_free( NULL, map ) );
|
||||
}
|
||||
#endif
|
||||
n = strlen( p ) + 2;
|
||||
//if( ( map->path = xData_malloc2( smr, 2 * n, 0, "map->path" ) ) == NULL ) return( tpia_map_free( NULL, map ) );
|
||||
//if( ( map->path = (char*) xData_malloc2( smr, 2 * n, 0, "map->path" ) ) == NULL ) return( tpia_map_free( NULL, map ) );
|
||||
if( ( map->path = (char*) xData_malloc2( smr, 2 * n, 0, "map->path" ) ) == NULL ) return( (tpia_map*) tpia_map_free( NULL, map ) );
|
||||
map->mapFileName = &(map->path[n + 1]);
|
||||
strcpy( map->mapFileName, p );
|
||||
strcpy( map->path, p );
|
||||
if( ( p = strrchr( map->path, '/' ) ) != NULL ) {
|
||||
*p = 0; }
|
||||
else {
|
||||
strcpy( map->path, "." );
|
||||
}
|
||||
|
||||
//if( ( doc = xData_parseReadFile( smr, map->mapFileName, NULL, NULL ) ) == NULL ) return( tpia_map_free( NULL, map ) );
|
||||
if( ( doc = xData_parseReadFile( smr, map->mapFileName, NULL, NULL ) ) == NULL ) return( (tpia_map*) tpia_map_free( NULL, map ) );
|
||||
|
||||
element = xData_getDocumentsElement( doc );
|
||||
for( child = xData_getFirstElement( element ); child != NULL; child = xData_getNextElement( child ) ) {
|
||||
if( !strcmp( child->name, "path" ) ) {
|
||||
if( ( path = xData_getAttributesValueInElement( child , "path" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "path missing path attribute" );
|
||||
break;
|
||||
}
|
||||
if( ( projectile = xData_getAttributesValueInElement( child , "projectile" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "path missing projectile attribute" );
|
||||
break;
|
||||
}
|
||||
tpia_map_addPath( smr, map, path, projectile ); }
|
||||
else if( !strcmp( child->name, "target" ) ) {
|
||||
if( ( schema = xData_getAttributesValueInElement( child , "schema" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "target missing 'schema' attribute" );
|
||||
break;
|
||||
}
|
||||
if( ( path = xData_getAttributesValueInElement( child , "path" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "target missing 'path' attribute" );
|
||||
break;
|
||||
}
|
||||
if( ( evaluation = xData_getAttributesValueInElement( child , "evaluation" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "target missing 'evaluation' attribute" );
|
||||
break;
|
||||
}
|
||||
if( ( projectile = xData_getAttributesValueInElement( child , "projectile" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "target missing 'projectile' attribute" );
|
||||
break;
|
||||
}
|
||||
if( ( targetName = xData_getAttributesValueInElement( child , "target" ) ) == NULL ) {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "target missing 'target' attribute" );
|
||||
break;
|
||||
}
|
||||
tpia_map_addTarget( smr, map, schema, path, evaluation, projectile, targetName ); }
|
||||
else {
|
||||
smr_setMessageError( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_mapParsing, "invalid element = %s", child->name );
|
||||
}
|
||||
if( !smr_isOk( smr ) ) break;
|
||||
}
|
||||
xData_parseFree( smr, doc );
|
||||
//if( !smr_isOk( smr ) ) map = tpia_map_free( NULL, map );
|
||||
if( !smr_isOk( smr ) ) map = (tpia_map*) tpia_map_free( NULL, map );
|
||||
return( map );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void *tpia_map_free( statusMessageReporting *smr, tpia_map *map ) {
|
||||
|
||||
tpia_map_release( smr, map );
|
||||
xData_free( smr, map );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void tpia_map_release( statusMessageReporting *smr, tpia_map *map ) {
|
||||
|
||||
tpia_mapEntry *entry, *next;
|
||||
|
||||
if( map->path != NULL ) xData_free( NULL, map->path );
|
||||
for( entry = map->mapEntries; entry != NULL; entry = next ) {
|
||||
next = entry->next;
|
||||
if( entry->schema != NULL ) xData_free( NULL, entry->schema );
|
||||
if( entry->path != NULL ) xData_free( NULL, entry->path );
|
||||
if( entry->evaluation != NULL ) xData_free( NULL, entry->evaluation );
|
||||
if( entry->projectile != NULL ) xData_free( NULL, entry->projectile );
|
||||
if( entry->targetName != NULL ) xData_free( NULL, entry->targetName );
|
||||
if( entry->map != NULL ) tpia_map_free( smr, entry->map );
|
||||
xData_free( NULL, entry );
|
||||
}
|
||||
map->numberOfEntries = 0;
|
||||
map->mapEntries = NULL;
|
||||
map->status = tpia_map_status_Ok;
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_mapEntry *tpia_map_getFirstEntry( tpia_map *map ) {
|
||||
|
||||
return( map->mapEntries );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_mapEntry *tpia_map_getNextEntry( tpia_mapEntry *entry ) {
|
||||
|
||||
return( entry->next );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_map_addTarget( statusMessageReporting *smr, tpia_map *map, const char *schema, const char *path, const char *evaluation, const char *projectile, const char *target ) {
|
||||
|
||||
return( _tpia_map_addEntry( smr, map, tpia_mapEntry_type_target, schema, path, evaluation, projectile, target ) != NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_map_addPath( statusMessageReporting *smr, tpia_map *map, const char *path, const char *projectile ) {
|
||||
|
||||
tpia_mapEntry *entry = _tpia_map_addEntry( smr, map, tpia_mapEntry_type_path, NULL, path, NULL, projectile, NULL );
|
||||
|
||||
if( entry != NULL ) {
|
||||
if( ( entry->map = tpia_map_readFile( smr, map->path, entry->path ) ) == NULL ) entry = NULL;
|
||||
}
|
||||
return( entry != NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static tpia_mapEntry *_tpia_map_addEntry( statusMessageReporting *smr, tpia_map *map, enum tpia_mapEntry_type type, const char *schema, const char *path,
|
||||
const char *evaluation, const char *projectile, const char *targetName ) {
|
||||
|
||||
tpia_mapEntry *p;
|
||||
tpia_mapEntry *entry;
|
||||
|
||||
//if( ( entry = xData_malloc2( smr, sizeof( tpia_mapEntry ), 1, "entry" ) ) == NULL ) return( NULL );
|
||||
if( ( entry = (tpia_mapEntry*) xData_malloc2( smr, sizeof( tpia_mapEntry ), 1, "entry" ) ) == NULL ) return( NULL );
|
||||
entry->next = NULL;
|
||||
entry->type = type;
|
||||
entry->path = NULL;
|
||||
entry->map = NULL;
|
||||
if( path != NULL ) {
|
||||
//if( ( entry->path = xData_malloc2( smr, strlen( path ) + 1, 0, "path" ) ) == NULL ) {
|
||||
if( ( entry->path = (char*) xData_malloc2( smr, strlen( path ) + 1, 0, "path" ) ) == NULL ) {
|
||||
xData_free( smr, entry );
|
||||
return( NULL );
|
||||
}
|
||||
strcpy( entry->path, path );
|
||||
}
|
||||
entry->evaluation = NULL;
|
||||
if( evaluation != NULL ) {
|
||||
//if( ( entry->evaluation = xData_malloc2( smr, strlen( evaluation ) + 1, 0, "evaluation" ) ) == NULL ) {
|
||||
if( ( entry->evaluation = (char*) xData_malloc2( smr, strlen( evaluation ) + 1, 0, "evaluation" ) ) == NULL ) {
|
||||
xData_free( smr, entry->path );
|
||||
xData_free( smr, entry );
|
||||
return( NULL );
|
||||
}
|
||||
strcpy( entry->evaluation, evaluation );
|
||||
}
|
||||
entry->projectile = NULL;
|
||||
if( projectile != NULL ) {
|
||||
//if( ( entry->projectile = xData_malloc2( smr, strlen( projectile ) + 1, 0, "projectile" ) ) == NULL ) {
|
||||
if( ( entry->projectile = (char*) xData_malloc2( smr, strlen( projectile ) + 1, 0, "projectile" ) ) == NULL ) {
|
||||
xData_free( smr, entry->evaluation );
|
||||
xData_free( smr, entry->path );
|
||||
xData_free( smr, entry );
|
||||
return( NULL );
|
||||
}
|
||||
strcpy( entry->projectile, projectile );
|
||||
}
|
||||
entry->targetName = NULL;
|
||||
if( targetName != NULL ) {
|
||||
//if( ( entry->targetName = xData_malloc2( smr, strlen( targetName ) + 1, 0, "target" ) ) == NULL ) {
|
||||
if( ( entry->targetName = (char*) xData_malloc2( smr, strlen( targetName ) + 1, 0, "target" ) ) == NULL ) {
|
||||
xData_free( smr, entry->path );
|
||||
xData_free( smr, entry->evaluation );
|
||||
xData_free( smr, entry->projectile );
|
||||
xData_free( smr, entry );
|
||||
return( NULL );
|
||||
}
|
||||
strcpy( entry->targetName, targetName );
|
||||
}
|
||||
entry->schema = NULL;
|
||||
if( schema != NULL ) {
|
||||
//if( ( entry->schema = xData_malloc2( smr, strlen( schema ) + 1, 0, "schema" ) ) == NULL ) {
|
||||
if( ( entry->schema = (char*) xData_malloc2( smr, strlen( schema ) + 1, 0, "schema" ) ) == NULL ) {
|
||||
xData_free( smr, entry->path );
|
||||
xData_free( smr, entry->evaluation );
|
||||
xData_free( smr, entry->projectile );
|
||||
xData_free( smr, entry->targetName );
|
||||
xData_free( smr, entry );
|
||||
return( NULL );
|
||||
}
|
||||
strcpy( entry->schema, schema );
|
||||
}
|
||||
|
||||
if( map->mapEntries == NULL ) {
|
||||
map->mapEntries = entry; }
|
||||
else {
|
||||
for( p = map->mapEntries; p->next != NULL; p = p->next ){;}
|
||||
p->next = entry;
|
||||
}
|
||||
map->numberOfEntries++;
|
||||
return( entry );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *tpia_map_findTarget( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectile, const char *targetName ) {
|
||||
/*
|
||||
* Calling routine must free returned pointer.
|
||||
*/
|
||||
char *path;
|
||||
|
||||
if( map->status != tpia_map_status_Ok ) return( NULL );
|
||||
|
||||
path = _tpia_map_findTarget2( smr, map, evaluation, projectile, targetName );
|
||||
if( ( path == NULL ) && smr_isOk( smr ) ) {
|
||||
if( evaluation == NULL ) {
|
||||
smr_setMessageInfo( smr, &(map->smrUserInterface), __FILE__, __LINE__, 1, "target %s for projectile %s not found", targetName, projectile ); }
|
||||
else {
|
||||
smr_setMessageInfo( smr, &(map->smrUserInterface), __FILE__, __LINE__, 1, "target %s for projectile %s and evaluation %s not found", targetName, projectile, evaluation );
|
||||
}
|
||||
}
|
||||
return( path );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static char *_tpia_map_findTarget2( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectile, const char *targetName ) {
|
||||
|
||||
tpia_mapEntry *entry;
|
||||
char *path = NULL;
|
||||
int n, status;
|
||||
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
switch( entry->type ) {
|
||||
case tpia_mapEntry_type_target :
|
||||
if( !strcmp( projectile, entry->projectile ) && ( !strcmp( targetName, entry->targetName ) ) ) {
|
||||
if( evaluation == NULL ) {
|
||||
status = 1; }
|
||||
else {
|
||||
status = !strcmp( evaluation, entry->evaluation );
|
||||
}
|
||||
if( status ) {
|
||||
n = strlen( map->path ) + 1 + strlen( entry->path ) + 1;
|
||||
//if( ( path = xData_malloc2( smr, n, 0, "path" ) ) == NULL ) return( NULL );
|
||||
if( ( path = (char*) xData_malloc2( smr, n, 0, "path" ) ) == NULL ) return( NULL );
|
||||
strcpy( path, map->path );
|
||||
strcat( path, "/" );
|
||||
if( entry->path[0] == '/' ) {
|
||||
strcpy( path, entry->path ); }
|
||||
else {
|
||||
strcat( path, entry->path );
|
||||
}
|
||||
return( path );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case tpia_mapEntry_type_path :
|
||||
if( !strcmp( projectile, entry->projectile ) ) {
|
||||
if( ( path = _tpia_map_findTarget2( smr, entry->map, evaluation, projectile, targetName ) ) != NULL ) return( path );
|
||||
}
|
||||
break;
|
||||
default :
|
||||
smr_setMessageInfo( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_UnknownType, "unknown type = %d", entry->type );
|
||||
return( NULL );
|
||||
}
|
||||
}
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_map *tpia_map_findAllOfTarget( statusMessageReporting *smr, tpia_map *map, const char *projectile, const char *targetName ) {
|
||||
/*
|
||||
* Calling routine must free returned pointer.
|
||||
*/
|
||||
int status;
|
||||
tpia_map *mapAllOfTarget;
|
||||
|
||||
if( map->status != tpia_map_status_Ok ) return( NULL );
|
||||
if( ( mapAllOfTarget = tpia_map_create( smr ) ) == NULL ) return( NULL );
|
||||
status = _tpia_map_findAllOfTarget2( smr, mapAllOfTarget, map, projectile, targetName );
|
||||
//if( ( status != 0 ) ) mapAllOfTarget = tpia_map_free( smr, mapAllOfTarget );
|
||||
if( ( status != 0 ) ) mapAllOfTarget = (tpia_map*) tpia_map_free( smr, mapAllOfTarget );
|
||||
return( mapAllOfTarget );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_map_findAllOfTarget2( statusMessageReporting *smr, tpia_map *mapAllOfTarget, tpia_map *map, const char *projectile, const char *targetName ) {
|
||||
|
||||
tpia_mapEntry *entry;
|
||||
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
switch( entry->type ) {
|
||||
case tpia_mapEntry_type_target :
|
||||
if( !strcmp( projectile, entry->projectile ) && ( !strcmp( targetName, entry->targetName ) ) ) {
|
||||
if( _tpia_map_addEntry( smr, mapAllOfTarget, entry->type, entry->schema, entry->path, entry->evaluation, entry->projectile,
|
||||
entry->targetName ) == NULL ) return( 1 );
|
||||
}
|
||||
break;
|
||||
case tpia_mapEntry_type_path :
|
||||
if( !strcmp( projectile, entry->projectile ) ) {
|
||||
if( _tpia_map_findAllOfTarget2( smr, mapAllOfTarget, entry->map, projectile, targetName ) != 0 ) return( 1 );
|
||||
}
|
||||
break;
|
||||
default :
|
||||
smr_setMessageInfo( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_UnknownType, "unknown type = %d", entry->type );
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *tpia_map_getFullPath( statusMessageReporting *smr, tpia_map *map, const char *endPath ) {
|
||||
|
||||
char *path;
|
||||
|
||||
if( endPath[0] == '/' ) {
|
||||
//if( ( path = xData_malloc2( smr, strlen( endPath ) + 1, 0, "path" ) ) == NULL ) return( NULL );
|
||||
if( ( path = (char*) xData_malloc2( smr, strlen( endPath ) + 1, 0, "path" ) ) == NULL ) return( NULL );
|
||||
path[0] = 0; }
|
||||
else {
|
||||
//if( ( path = xData_malloc2( smr, strlen( map->path ) + strlen( endPath ) + 2, 0, "path" ) ) == NULL ) return( NULL );
|
||||
if( ( path = (char*) xData_malloc2( smr, strlen( map->path ) + strlen( endPath ) + 2, 0, "path" ) ) == NULL ) return( NULL );
|
||||
strcpy( path, map->path );
|
||||
strcat( path, "/" );
|
||||
}
|
||||
strcat( path, endPath );
|
||||
return( path );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_map_walkTree( statusMessageReporting *smr, tpia_map *map, int (*handler)( tpia_mapEntry *entry, int level, void *userData), void *userData ) {
|
||||
|
||||
return( _tpia_map_walkTree2( smr, map, 0, handler, userData ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_map_walkTree2( statusMessageReporting *smr, tpia_map *map, int level, int (*handler)( tpia_mapEntry *entry, int level, void *userData),
|
||||
void *userData ) {
|
||||
|
||||
tpia_mapEntry *entry;
|
||||
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
if( handler( entry, level, userData ) != 0 ) return( 1 );
|
||||
if( entry->type == tpia_mapEntry_type_path ) if( _tpia_map_walkTree2( smr, entry->map, level + 1, handler, userData ) != 0 ) return( 1 );
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *tpia_map_toXMLString( statusMessageReporting *smr, tpia_map *map ) {
|
||||
|
||||
tpia_mapEntry *entry;
|
||||
char *s, *p;
|
||||
char targetFormat[] = "<target schema=\"%s\" evaluation=\"%s\" projectile=\"%s\" target=\"%s\" path=\"%s\"/>\n";
|
||||
char pathFormat[] = "<path projectile=\"%s\" path=\"%s\"/>\n";
|
||||
char start[] = "<map>\n";
|
||||
char end[] = "</map>";
|
||||
int n = 0, nStart = strlen( start ), nEnd = strlen( end );
|
||||
int nTarget = strlen( targetFormat ) - 10, nPath = strlen( pathFormat ) - 4;
|
||||
|
||||
if( map->status != tpia_map_status_Ok ) return( NULL );
|
||||
|
||||
n = nStart + nEnd + 1;
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
switch( entry->type ) {
|
||||
case tpia_mapEntry_type_target :
|
||||
n += strlen( entry->schema ) + strlen( entry->path ) + strlen( entry->evaluation ) + strlen( entry->projectile ) + strlen( entry->targetName ) + nTarget;
|
||||
break;
|
||||
case tpia_mapEntry_type_path :
|
||||
n += strlen( entry->path ) + strlen( entry->projectile ) + nPath;
|
||||
break;
|
||||
default :
|
||||
smr_setMessageInfo( smr, &(map->smrUserInterface), __FILE__, __LINE__, tpia_map_status_UnknownType, "unknown type = %d", entry->type );
|
||||
return( NULL );
|
||||
}
|
||||
}
|
||||
|
||||
if( ( s = (char *) xData_malloc2( smr, n, 0, "xml string" ) ) == NULL ) return( NULL );
|
||||
p = s;
|
||||
strcpy( p, start );
|
||||
while( *p ) p++;
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
switch( entry->type ) {
|
||||
case tpia_mapEntry_type_target :
|
||||
sprintf( p, targetFormat, entry->schema, entry->evaluation, entry->projectile, entry->targetName, entry->path );
|
||||
break;
|
||||
case tpia_mapEntry_type_path :
|
||||
sprintf( p, pathFormat, entry->projectile, entry->path );
|
||||
break;
|
||||
}
|
||||
while( *p ) p++;
|
||||
}
|
||||
strcpy( p, end );
|
||||
return( s );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void tpia_map_simpleWrite( FILE *f, tpia_map *map ) { _tpia_map_simpleWrite2( f, map, 0 ); }
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static void _tpia_map_simpleWrite2( FILE *f, tpia_map *map, int level ) {
|
||||
|
||||
tpia_mapEntry *entry;
|
||||
char sLevel[] = " ";
|
||||
int n = strlen( sLevel ) / 4;
|
||||
|
||||
if( map->status != tpia_map_status_Ok ) {
|
||||
fprintf( f, "Bad map status = %d\n", map->status );
|
||||
return;
|
||||
}
|
||||
if( level < n ) sLevel[4 * level] = 0;
|
||||
fprintf( f, "%smap->path = %s\n", sLevel, map->path );
|
||||
fprintf( f, "%smap->mapFileName = %s\n", sLevel, map->mapFileName );
|
||||
for( entry = map->mapEntries; entry != NULL; entry = entry->next ) {
|
||||
switch( entry->type ) {
|
||||
case tpia_mapEntry_type_target :
|
||||
fprintf( f, "%sType = target: schema = %s: evaluation = %s: projectile = %s: target = %s: path = %s\n", sLevel, entry->schema,
|
||||
entry->evaluation, entry->projectile, entry->targetName, entry->path );
|
||||
break;
|
||||
case tpia_mapEntry_type_path :
|
||||
fprintf( f, "%sType = path: projectile = %s: path = %s\n", sLevel, entry->projectile, entry->path );
|
||||
_tpia_map_simpleWrite2( f, entry->map, level + 1 );
|
||||
break;
|
||||
default :
|
||||
fprintf( f, "%sUnknown type = %d\n", sLevel, entry->type );
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_map_smrUserInterface( void *userData, char **str ) {
|
||||
|
||||
tpia_map_smr *smrUserInterface = (tpia_map_smr *) userData;
|
||||
char fnl[] = "map file = ";
|
||||
int size = strlen( fnl ) + strlen( smrUserInterface->map->mapFileName ) + 1;
|
||||
|
||||
if( str != NULL ) {
|
||||
//if( ( *str = xData_malloc2( NULL, size, 0, "mapFileName" ) ) == NULL ) return( -1 );
|
||||
if( ( *str = (char*) xData_malloc2( NULL, size, 0, "mapFileName" ) ) == NULL ) return( -1 );
|
||||
strcpy( *str, fnl );
|
||||
strcat( *str, smrUserInterface->map->mapFileName );
|
||||
}
|
||||
return( size );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,908 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <statusMessageReporting.h>
|
||||
#include <tpia_mass.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
struct ZAMass {
|
||||
//char *symbol;
|
||||
std::string symbol;
|
||||
double mass;
|
||||
};
|
||||
|
||||
static struct ZAMass ZAMasses[] = {
|
||||
{ "Am_242_m1", 2.420595491590000e+02 + 0.048 },
|
||||
{ "FissionProductENDL99120", 117.5 },
|
||||
{ "FissionProductENDL99121", 116.546 },
|
||||
{ "FissionProductENDL99122", 118.544 },
|
||||
{ "FissionProductENDL99125", 117.5 },
|
||||
{ "gamma", 0. },
|
||||
{ "n_1", 1.008664915740000e+00 }, { "H_natural", 1.007900000000000e+00 }, { "H_1", 1.007825032070000e+00 }, { "H_2", 2.014101777850000e+00 },
|
||||
{ "H_3", 3.016049277670000e+00 }, { "H_4", 4.027806424000000e+00 }, { "H_5", 5.035311488000000e+00 }, { "H_6", 6.044942594000000e+00 },
|
||||
{ "H_7", 7.052749000000000e+00 }, { "He_natural", 4.002600000000000e+00 }, { "He_3", 3.016029319140000e+00 }, { "He_4", 4.002603254150000e+00 },
|
||||
{ "He_5", 5.012223624000000e+00 }, { "He_6", 6.018889124000000e+00 }, { "He_7", 7.028020618000000e+00 }, { "He_8", 8.033921897000001e+00 },
|
||||
{ "He_9", 9.043950285999999e+00 }, { "He_10", 1.005239883700000e+01 }, { "Li_natural", 6.941000000000000e+00 }, { "Li_3", 3.030775000000000e+00 },
|
||||
{ "Li_4", 4.027185558000000e+00 }, { "Li_5", 5.012537800000000e+00 }, { "Li_6", 6.015122794000000e+00 }, { "Li_7", 7.016004548000000e+00 },
|
||||
{ "Li_8", 8.022487362000000e+00 }, { "Li_9", 9.026789505000000e+00 }, { "Li_10", 1.003548125900000e+01 }, { "Li_11", 1.104379771500000e+01 },
|
||||
{ "Li_12", 1.205378000000000e+01 }, { "Be_natural", 9.012180000000001e+00 }, { "Be_5", 5.040790000000000e+00 }, { "Be_6", 6.019726317000000e+00 },
|
||||
{ "Be_7", 7.016929828000000e+00 }, { "Be_8", 8.005305103000000e+00 }, { "Be_9", 9.012182201000000e+00 }, { "Be_10", 1.001353381800000e+01 },
|
||||
{ "Be_11", 1.102165774900000e+01 }, { "Be_12", 1.202692073700000e+01 }, { "Be_13", 1.303569300700000e+01 }, { "Be_14", 1.404289292000000e+01 },
|
||||
{ "Be_15", 1.505346000000000e+01 }, { "Be_16", 1.606192000000000e+01 }, { "B_natural", 1.081000000000000e+01 }, { "B_6", 6.046810000000000e+00 },
|
||||
{ "B_7", 7.029917901000000e+00 }, { "B_8", 8.024607232999999e+00 }, { "B_9", 9.013328782000000e+00 }, { "B_10", 1.001293699200000e+01 },
|
||||
{ "B_11", 1.100930540600000e+01 }, { "B_12", 1.201435210400000e+01 }, { "B_13", 1.301778021700000e+01 }, { "B_14", 1.402540400900000e+01 },
|
||||
{ "B_15", 1.503110302100000e+01 }, { "B_16", 1.603980882900000e+01 }, { "B_17", 1.704698990600000e+01 }, { "B_18", 1.805617000000000e+01 },
|
||||
{ "B_19", 1.906373000000000e+01 }, { "C_natural", 1.201100000000000e+01 }, { "C_8", 8.037675025000000e+00 }, { "C_9", 9.031036689000000e+00 },
|
||||
{ "C_10", 1.001685322800000e+01 }, { "C_11", 1.101143361300000e+01 }, { "C_12", 1.200000000000000e+01 }, { "C_13", 1.300335483778000e+01 },
|
||||
{ "C_14", 1.400324198870000e+01 }, { "C_15", 1.501059925600000e+01 }, { "C_16", 1.601470125200000e+01 }, { "C_17", 1.702258611600000e+01 },
|
||||
{ "C_18", 1.802675935400000e+01 }, { "C_19", 1.903480501800000e+01 }, { "C_20", 2.004031975400000e+01 }, { "C_21", 2.104934000000000e+01 },
|
||||
{ "C_23", 2.205720000000000e+01 }, { "N_natural", 1.400670000000000e+01 }, { "N_10", 1.004165367400000e+01 }, { "N_11", 1.102609095600000e+01 },
|
||||
{ "N_12", 1.201861319700000e+01 }, { "N_13", 1.300573860900000e+01 }, { "N_14", 1.400307400478000e+01 }, { "N_15", 1.500010889823000e+01 },
|
||||
{ "N_16", 1.600610165800000e+01 }, { "N_17", 1.700845026100000e+01 }, { "N_18", 1.801407895900000e+01 }, { "N_19", 1.901702869700000e+01 },
|
||||
{ "N_20", 2.002336580700000e+01 }, { "N_21", 2.102710824000000e+01 }, { "N_22", 2.203439493400000e+01 }, { "N_23", 2.304122000000000e+01 },
|
||||
{ "N_24", 2.405104000000000e+01 }, { "N_25", 2.506066000000000e+01 }, { "O_natural", 1.599940000000000e+01 }, { "O_12", 1.203440489500000e+01 },
|
||||
{ "O_13", 1.302481221300000e+01 }, { "O_14", 1.400859625000000e+01 }, { "O_15", 1.500306561700000e+01 }, { "O_16", 1.599491461956000e+01 },
|
||||
{ "O_17", 1.699913170300000e+01 }, { "O_18", 1.799916100100000e+01 }, { "O_19", 1.900358013000000e+01 }, { "O_20", 2.000407674200000e+01 },
|
||||
{ "O_21", 2.100865588600000e+01 }, { "O_22", 2.200996694700000e+01 }, { "O_23", 2.301568765900000e+01 }, { "O_24", 2.402047291700000e+01 },
|
||||
{ "O_25", 2.502946000000000e+01 }, { "O_26", 2.603834000000000e+01 }, { "O_27", 2.704826000000000e+01 }, { "O_28", 2.805781000000000e+01 },
|
||||
{ "F_natural", 1.899840300000000e+01 }, { "F_14", 1.403506000000000e+01 }, { "F_15", 1.501800910300000e+01 }, { "F_16", 1.601146572400000e+01 },
|
||||
{ "F_17", 1.700209523700000e+01 }, { "F_18", 1.800093795600000e+01 }, { "F_19", 1.899840322400000e+01 }, { "F_20", 1.999998131500000e+01 },
|
||||
{ "F_21", 2.099994895100000e+01 }, { "F_22", 2.200299881500000e+01 }, { "F_23", 2.300357463100000e+01 }, { "F_24", 2.400811548500000e+01 },
|
||||
{ "F_25", 2.501210174700000e+01 }, { "F_26", 2.601961555500000e+01 }, { "F_27", 2.702676008600000e+01 }, { "F_28", 2.803567000000000e+01 },
|
||||
{ "F_29", 2.904326000000000e+01 }, { "F_30", 3.005250000000000e+01 }, { "F_31", 3.106042900000000e+01 }, { "Ne_natural", 2.017900000000000e+01 },
|
||||
{ "Ne_16", 1.602576126200000e+01 }, { "Ne_17", 1.701767150400000e+01 }, { "Ne_18", 1.800570821300000e+01 }, { "Ne_19", 1.900188024800000e+01 },
|
||||
{ "Ne_20", 1.999244017542000e+01 }, { "Ne_21", 2.099384668400000e+01 }, { "Ne_22", 2.199138511300000e+01 }, { "Ne_23", 2.299446690400000e+01 },
|
||||
{ "Ne_24", 2.399361077900000e+01 }, { "Ne_25", 2.499773688800000e+01 }, { "Ne_26", 2.600046120600000e+01 }, { "Ne_27", 2.700758990300000e+01 },
|
||||
{ "Ne_28", 2.801207157500000e+01 }, { "Ne_29", 2.901938593300000e+01 }, { "Ne_30", 3.002480104500000e+01 }, { "Ne_31", 3.103311000000000e+01 },
|
||||
{ "Ne_32", 3.204002000000000e+01 }, { "Ne_33", 3.304938000000000e+01 }, { "Ne_34", 3.405702800000000e+01 }, { "Na_natural", 2.298977000000000e+01 },
|
||||
{ "Na_18", 1.802596900000000e+01 }, { "Na_19", 1.901387749900000e+01 }, { "Na_20", 2.000735132800000e+01 }, { "Na_21", 2.099765520600000e+01 },
|
||||
{ "Na_22", 2.199443642500000e+01 }, { "Na_23", 2.298976928087000e+01 }, { "Na_24", 2.399096278200000e+01 }, { "Na_25", 2.498995396800000e+01 },
|
||||
{ "Na_26", 2.599263300000000e+01 }, { "Na_27", 2.699407678800000e+01 }, { "Na_28", 2.799893800000000e+01 }, { "Na_29", 2.900286100000000e+01 },
|
||||
{ "Na_30", 3.000897600000000e+01 }, { "Na_31", 3.101358545200000e+01 }, { "Na_32", 3.202046656000000e+01 }, { "Na_33", 3.302671975600000e+01 },
|
||||
{ "Na_34", 3.403517000000000e+01 }, { "Na_35", 3.504249300000000e+01 }, { "Na_36", 3.605148000000000e+01 }, { "Na_37", 3.705934000000000e+01 },
|
||||
{ "Mg_natural", 2.430500000000000e+01 }, { "Mg_19", 1.903547000000000e+01 }, { "Mg_20", 2.001886254500000e+01 }, { "Mg_21", 2.101171291000000e+01 },
|
||||
{ "Mg_22", 2.199957384300000e+01 }, { "Mg_23", 2.299412366900000e+01 }, { "Mg_24", 2.398504169900000e+01 }, { "Mg_25", 2.498583691700000e+01 },
|
||||
{ "Mg_26", 2.598259292900000e+01 }, { "Mg_27", 2.698434058500000e+01 }, { "Mg_28", 2.798387682500000e+01 }, { "Mg_29", 2.898860000000000e+01 },
|
||||
{ "Mg_30", 2.999043400000000e+01 }, { "Mg_31", 3.099654600000000e+01 }, { "Mg_32", 3.199897500000000e+01 }, { "Mg_33", 3.300525400000000e+01 },
|
||||
{ "Mg_34", 3.400945642400000e+01 }, { "Mg_35", 3.501734000000000e+01 }, { "Mg_36", 3.602300000000000e+01 }, { "Mg_37", 3.703140000000000e+01 },
|
||||
{ "Mg_38", 3.803757000000000e+01 }, { "Mg_39", 3.904677200000000e+01 }, { "Mg_40", 4.005393000000000e+01 }, { "Al_natural", 2.698154000000000e+01 },
|
||||
{ "Al_21", 2.102804000000000e+01 }, { "Al_22", 2.201952000000000e+01 }, { "Al_23", 2.300726743200000e+01 }, { "Al_24", 2.399993886500000e+01 },
|
||||
{ "Al_25", 2.499042809500000e+01 }, { "Al_26", 2.598689169200000e+01 }, { "Al_27", 2.698153862700000e+01 }, { "Al_28", 2.798191030600000e+01 },
|
||||
{ "Al_29", 2.898044504600000e+01 }, { "Al_30", 2.998296025600000e+01 }, { "Al_31", 3.098394661900000e+01 }, { "Al_32", 3.198812448900000e+01 },
|
||||
{ "Al_33", 3.299084333600000e+01 }, { "Al_34", 3.399685183700000e+01 }, { "Al_35", 3.499986023500000e+01 }, { "Al_36", 3.600620720400000e+01 },
|
||||
{ "Al_37", 3.701067782000000e+01 }, { "Al_38", 3.801723102100000e+01 }, { "Al_39", 3.902297000000000e+01 }, { "Al_40", 4.003145000000000e+01 },
|
||||
{ "Al_41", 4.103833000000000e+01 }, { "Al_42", 4.204689000000000e+01 }, { "Si_natural", 2.808550000000000e+01 }, { "Si_22", 2.203453000000000e+01 },
|
||||
{ "Si_23", 2.302552000000000e+01 }, { "Si_24", 2.401154561600000e+01 }, { "Si_25", 2.500410557400000e+01 }, { "Si_26", 2.599232992100000e+01 },
|
||||
{ "Si_27", 2.698670490500000e+01 }, { "Si_28", 2.797692653246000e+01 }, { "Si_29", 2.897649470000000e+01 }, { "Si_30", 2.997377017100000e+01 },
|
||||
{ "Si_31", 3.097536322700000e+01 }, { "Si_32", 3.197414808200000e+01 }, { "Si_33", 3.297800022000000e+01 }, { "Si_34", 3.397857552400000e+01 },
|
||||
{ "Si_35", 3.498458357500000e+01 }, { "Si_36", 3.598659947700000e+01 }, { "Si_37", 3.699293608000000e+01 }, { "Si_38", 3.799563360100000e+01 },
|
||||
{ "Si_39", 3.900207001300000e+01 }, { "Si_40", 4.000586912100000e+01 }, { "Si_41", 4.101456000000000e+01 }, { "Si_42", 4.201979000000000e+01 },
|
||||
{ "Si_43", 4.302866000000000e+01 }, { "Si_44", 4.403526000000000e+01 }, { "P_natural", 3.097376000000000e+01 }, { "P_24", 2.403435000000000e+01 },
|
||||
{ "P_25", 2.502026000000000e+01 }, { "P_26", 2.601178000000000e+01 }, { "P_27", 2.699923023600000e+01 }, { "P_28", 2.799231476100000e+01 },
|
||||
{ "P_29", 2.898180060600000e+01 }, { "P_30", 2.997831378900000e+01 }, { "P_31", 3.097376162900000e+01 }, { "P_32", 3.197390727400000e+01 },
|
||||
{ "P_33", 3.297172554300000e+01 }, { "P_34", 3.397363625700000e+01 }, { "P_35", 3.497331411700000e+01 }, { "P_36", 3.597825968000000e+01 },
|
||||
{ "P_37", 3.697960894600000e+01 }, { "P_38", 3.798415682700000e+01 }, { "P_39", 3.898617947500000e+01 }, { "P_40", 3.999129695100000e+01 },
|
||||
{ "P_41", 4.099433543500000e+01 }, { "P_42", 4.200100791300000e+01 }, { "P_43", 4.300619000000000e+01 }, { "P_44", 4.401299000000000e+01 },
|
||||
{ "P_45", 4.501922000000000e+01 }, { "P_46", 4.602738000000000e+01 }, { "S_natural", 3.206000000000000e+01 }, { "S_26", 2.602788000000000e+01 },
|
||||
{ "S_27", 2.701883300000000e+01 }, { "S_28", 2.800437276300000e+01 }, { "S_29", 2.899660804900000e+01 }, { "S_30", 2.998490324900000e+01 },
|
||||
{ "S_31", 3.097955472800000e+01 }, { "S_32", 3.197207099900000e+01 }, { "S_33", 3.297145875900000e+01 }, { "S_34", 3.396786690200000e+01 },
|
||||
{ "S_35", 3.496903216100000e+01 }, { "S_36", 3.596708076000000e+01 }, { "S_37", 3.697112556700000e+01 }, { "S_38", 3.797116331700000e+01 },
|
||||
{ "S_39", 3.897513430600000e+01 }, { "S_40", 3.997545172800000e+01 }, { "S_41", 4.097958214900000e+01 }, { "S_42", 4.198102241900000e+01 },
|
||||
{ "S_43", 4.298715479000000e+01 }, { "S_44", 4.399021339000000e+01 }, { "S_45", 4.499650811200000e+01 }, { "S_46", 4.600075000000000e+01 },
|
||||
{ "S_47", 4.700859000000000e+01 }, { "S_48", 4.801417000000000e+01 }, { "S_49", 4.902361900000000e+01 }, { "Cl_natural", 3.545300000000000e+01 },
|
||||
{ "Cl_28", 2.802851000000000e+01 }, { "Cl_29", 2.901411000000000e+01 }, { "Cl_30", 3.000477000000000e+01 }, { "Cl_31", 3.099241308600000e+01 },
|
||||
{ "Cl_32", 3.198568990100000e+01 }, { "Cl_33", 3.297745188700000e+01 }, { "Cl_34", 3.397376281900000e+01 }, { "Cl_35", 3.496885268200000e+01 },
|
||||
{ "Cl_36", 3.596830698100000e+01 }, { "Cl_37", 3.696590259100000e+01 }, { "Cl_38", 3.796801042500000e+01 }, { "Cl_39", 3.896800816400000e+01 },
|
||||
{ "Cl_40", 3.997041547200000e+01 }, { "Cl_41", 4.097068452500000e+01 }, { "Cl_42", 4.197325480400000e+01 }, { "Cl_43", 4.297405440300000e+01 },
|
||||
{ "Cl_44", 4.397828107100000e+01 }, { "Cl_45", 4.498028688600000e+01 }, { "Cl_46", 4.598421004000000e+01 }, { "Cl_47", 4.698871000000000e+01 },
|
||||
{ "Cl_48", 4.799495000000000e+01 }, { "Cl_49", 4.900032000000000e+01 }, { "Cl_50", 5.000784000000000e+01 }, { "Cl_51", 5.101449000000000e+01 },
|
||||
{ "Ar_natural", 3.994800000000000e+01 }, { "Ar_30", 3.002156000000000e+01 }, { "Ar_31", 3.101212300000000e+01 }, { "Ar_32", 3.199763798400000e+01 },
|
||||
{ "Ar_33", 3.298992570900000e+01 }, { "Ar_34", 3.398027124400000e+01 }, { "Ar_35", 3.497525758500000e+01 }, { "Ar_36", 3.596754510500000e+01 },
|
||||
{ "Ar_37", 3.696677632000000e+01 }, { "Ar_38", 3.796273239400000e+01 }, { "Ar_39", 3.896431323100000e+01 }, { "Ar_40", 3.996238312251000e+01 },
|
||||
{ "Ar_41", 4.096450061100000e+01 }, { "Ar_42", 4.196304573600000e+01 }, { "Ar_43", 4.296563605600000e+01 }, { "Ar_44", 4.396492403300000e+01 },
|
||||
{ "Ar_45", 4.496803995600000e+01 }, { "Ar_46", 4.596809412900000e+01 }, { "Ar_47", 4.697218679200000e+01 }, { "Ar_48", 4.797454000000000e+01 },
|
||||
{ "Ar_49", 4.898052000000000e+01 }, { "Ar_50", 4.998443000000000e+01 }, { "Ar_51", 5.099163000000000e+01 }, { "Ar_52", 5.199678000000000e+01 },
|
||||
{ "Ar_53", 5.300494000000000e+01 }, { "K_natural", 3.909830000000000e+01 }, { "K_32", 3.202192000000000e+01 }, { "K_33", 3.300726000000000e+01 },
|
||||
{ "K_34", 3.399841000000000e+01 }, { "K_35", 3.498800969200000e+01 }, { "K_36", 3.598129223500000e+01 }, { "K_37", 3.697337588900000e+01 },
|
||||
{ "K_38", 3.796908118400000e+01 }, { "K_39", 3.896370667900000e+01 }, { "K_40", 3.996399847500000e+01 }, { "K_41", 4.096182576200000e+01 },
|
||||
{ "K_42", 4.196240281000000e+01 }, { "K_43", 4.296071554000000e+01 }, { "K_44", 4.396155680400000e+01 }, { "K_45", 4.496069949300000e+01 },
|
||||
{ "K_46", 4.596197686400000e+01 }, { "K_47", 4.696167847300000e+01 }, { "K_48", 4.796551353500000e+01 }, { "K_49", 4.896745092800000e+01 },
|
||||
{ "K_50", 4.997278335500000e+01 }, { "K_51", 5.097638000000000e+01 }, { "K_52", 5.198261000000000e+01 }, { "K_53", 5.298712000000000e+01 },
|
||||
{ "K_54", 5.399420000000000e+01 }, { "K_55", 5.499971000000000e+01 }, { "Ca_natural", 4.008000000000000e+01 }, { "Ca_34", 3.401412000000000e+01 },
|
||||
{ "Ca_35", 3.500494000000000e+01 }, { "Ca_36", 3.599308706300000e+01 }, { "Ca_37", 3.698587026900000e+01 }, { "Ca_38", 3.797631845200000e+01 },
|
||||
{ "Ca_39", 3.897071972500000e+01 }, { "Ca_40", 3.996259098300000e+01 }, { "Ca_41", 4.096227806200000e+01 }, { "Ca_42", 4.195861801400000e+01 },
|
||||
{ "Ca_43", 4.295876662800000e+01 }, { "Ca_44", 4.395548175400000e+01 }, { "Ca_45", 4.495618656600000e+01 }, { "Ca_46", 4.595369258700000e+01 },
|
||||
{ "Ca_47", 4.695454600600000e+01 }, { "Ca_48", 4.795253417700000e+01 }, { "Ca_49", 4.895567414800000e+01 }, { "Ca_50", 4.995751896200000e+01 },
|
||||
{ "Ca_51", 5.096149921400000e+01 }, { "Ca_52", 5.196510000000000e+01 }, { "Ca_53", 5.297005000000000e+01 }, { "Ca_54", 5.397435000000000e+01 },
|
||||
{ "Ca_55", 5.498055000000000e+01 }, { "Ca_56", 5.598557000000000e+01 }, { "Ca_57", 5.699235600000000e+01 }, { "Sc_natural", 4.495590000000000e+01 },
|
||||
{ "Sc_36", 3.601492000000000e+01 }, { "Sc_37", 3.700305000000000e+01 }, { "Sc_38", 3.799470000000000e+01 }, { "Sc_39", 3.898479000200000e+01 },
|
||||
{ "Sc_40", 3.997796740700000e+01 }, { "Sc_41", 4.096925112500000e+01 }, { "Sc_42", 4.196551642900000e+01 }, { "Sc_43", 4.296115065800000e+01 },
|
||||
{ "Sc_44", 4.395940275200000e+01 }, { "Sc_45", 4.495591190900000e+01 }, { "Sc_46", 4.595517189000000e+01 }, { "Sc_47", 4.695240750800000e+01 },
|
||||
{ "Sc_48", 4.795223146800000e+01 }, { "Sc_49", 4.895002397500000e+01 }, { "Sc_50", 4.995218768500000e+01 }, { "Sc_51", 5.095360336800000e+01 },
|
||||
{ "Sc_52", 5.195667546800000e+01 }, { "Sc_53", 5.295961000000000e+01 }, { "Sc_54", 5.396326456100000e+01 }, { "Sc_55", 5.496824394900000e+01 },
|
||||
{ "Sc_56", 5.597287000000000e+01 }, { "Sc_57", 5.697779000000000e+01 }, { "Sc_58", 5.798371000000000e+01 }, { "Sc_59", 5.898922000000000e+01 },
|
||||
{ "Sc_60", 5.999571000000000e+01 }, { "Ti_natural", 4.790000000000000e+01 }, { "Ti_38", 3.800977000000000e+01 }, { "Ti_39", 3.900161000000000e+01 },
|
||||
{ "Ti_40", 3.999049883800000e+01 }, { "Ti_41", 4.098314500000000e+01 }, { "Ti_42", 4.197303090200000e+01 }, { "Ti_43", 4.296852249900000e+01 },
|
||||
{ "Ti_44", 4.395969006900000e+01 }, { "Ti_45", 4.495812561600000e+01 }, { "Ti_46", 4.595263155500000e+01 }, { "Ti_47", 4.695176308800000e+01 },
|
||||
{ "Ti_48", 4.794794628100000e+01 }, { "Ti_49", 4.894786998200000e+01 }, { "Ti_50", 4.994479119400000e+01 }, { "Ti_51", 5.094661495500000e+01 },
|
||||
{ "Ti_52", 5.194689731100000e+01 }, { "Ti_53", 5.294972717100000e+01 }, { "Ti_54", 5.395105240100000e+01 }, { "Ti_55", 5.495526505600000e+01 },
|
||||
{ "Ti_56", 5.595819963900000e+01 }, { "Ti_57", 5.696398913700000e+01 }, { "Ti_58", 5.796697000000000e+01 }, { "Ti_59", 5.897293000000000e+01 },
|
||||
{ "Ti_60", 5.997676000000000e+01 }, { "Ti_61", 6.098320000000000e+01 }, { "Ti_62", 6.198749000000000e+01 }, { "Ti_63", 6.299442000000000e+01 },
|
||||
{ "V_natural", 5.094150000000000e+01 }, { "V_40", 4.001109000000000e+01 }, { "V_41", 4.099978000000000e+01 }, { "V_42", 4.199123000000000e+01 },
|
||||
{ "V_43", 4.298065000000000e+01 }, { "V_44", 4.397411000000000e+01 }, { "V_45", 4.496577580800000e+01 }, { "V_46", 4.596020048100000e+01 },
|
||||
{ "V_47", 4.695490894000000e+01 }, { "V_48", 4.795225370700000e+01 }, { "V_49", 4.894851610100000e+01 }, { "V_50", 4.994715848500000e+01 },
|
||||
{ "V_51", 5.094395950700000e+01 }, { "V_52", 5.194477547900000e+01 }, { "V_53", 5.294433797900000e+01 }, { "V_54", 5.394643985400000e+01 },
|
||||
{ "V_55", 5.494723370100000e+01 }, { "V_56", 5.595053096600000e+01 }, { "V_57", 5.695256143200000e+01 }, { "V_58", 5.795683413600000e+01 },
|
||||
{ "V_59", 5.896020740700000e+01 }, { "V_60", 5.996502686200000e+01 }, { "V_61", 6.096848000000000e+01 }, { "V_62", 6.197378000000000e+01 },
|
||||
{ "V_63", 6.297755000000000e+01 }, { "V_64", 6.398347000000000e+01 }, { "V_65", 6.498792000000000e+01 }, { "Cr_natural", 5.199600000000000e+01 },
|
||||
{ "Cr_42", 4.200643000000000e+01 }, { "Cr_43", 4.299771000000000e+01 }, { "Cr_44", 4.398554900000000e+01 }, { "Cr_45", 4.497964000000000e+01 },
|
||||
{ "Cr_46", 4.596835863500000e+01 }, { "Cr_47", 4.696290004600000e+01 }, { "Cr_48", 4.795403171600000e+01 }, { "Cr_49", 4.895133572100000e+01 },
|
||||
{ "Cr_50", 4.994604420500000e+01 }, { "Cr_51", 5.094476743100000e+01 }, { "Cr_52", 5.194050747200000e+01 }, { "Cr_53", 5.294064938600000e+01 },
|
||||
{ "Cr_54", 5.393888039500000e+01 }, { "Cr_55", 5.494083967200000e+01 }, { "Cr_56", 5.594065313900000e+01 }, { "Cr_57", 5.694361301300000e+01 },
|
||||
{ "Cr_58", 5.794435312900000e+01 }, { "Cr_59", 5.894858636700000e+01 }, { "Cr_60", 5.995007603300000e+01 }, { "Cr_61", 6.095471720400000e+01 },
|
||||
{ "Cr_62", 6.195661319000000e+01 }, { "Cr_63", 6.296186000000000e+01 }, { "Cr_64", 6.396441000000000e+01 }, { "Cr_65", 6.497016000000001e+01 },
|
||||
{ "Cr_66", 6.597338000000001e+01 }, { "Cr_67", 6.697955000000000e+01 }, { "Mn_natural", 5.493800000000000e+01 }, { "Mn_44", 4.400687000000000e+01 },
|
||||
{ "Mn_45", 4.499451000000000e+01 }, { "Mn_46", 4.598672000000000e+01 }, { "Mn_47", 4.697610000000000e+01 }, { "Mn_48", 4.796852000000000e+01 },
|
||||
{ "Mn_49", 4.895961800500000e+01 }, { "Mn_50", 4.995423823000000e+01 }, { "Mn_51", 5.094821078700000e+01 }, { "Mn_52", 5.194556546400000e+01 },
|
||||
{ "Mn_53", 5.294129011700000e+01 }, { "Mn_54", 5.394035885400000e+01 }, { "Mn_55", 5.493804514100000e+01 }, { "Mn_56", 5.593890491000000e+01 },
|
||||
{ "Mn_57", 5.693828537800000e+01 }, { "Mn_58", 5.793998154900000e+01 }, { "Mn_59", 5.894044023700000e+01 }, { "Mn_60", 5.994291124600000e+01 },
|
||||
{ "Mn_61", 6.094465263800000e+01 }, { "Mn_62", 6.194842822000000e+01 }, { "Mn_63", 6.295023999000000e+01 }, { "Mn_64", 6.395424909000000e+01 },
|
||||
{ "Mn_65", 6.495633606500000e+01 }, { "Mn_66", 6.596108000000000e+01 }, { "Mn_67", 6.696414000000000e+01 }, { "Mn_68", 6.796930000000000e+01 },
|
||||
{ "Mn_69", 6.897284000000001e+01 }, { "Fe_natural", 5.584700000000000e+01 }, { "Fe_45", 4.501457800000000e+01 }, { "Fe_46", 4.600081000000000e+01 },
|
||||
{ "Fe_47", 4.699289000000000e+01 }, { "Fe_48", 4.798050400000000e+01 }, { "Fe_49", 4.897361000000000e+01 }, { "Fe_50", 4.996298898200000e+01 },
|
||||
{ "Fe_51", 5.095681953800000e+01 }, { "Fe_52", 5.194811387500000e+01 }, { "Fe_53", 5.294530794200000e+01 }, { "Fe_54", 5.393961050100000e+01 },
|
||||
{ "Fe_55", 5.493829335700000e+01 }, { "Fe_56", 5.593493747500000e+01 }, { "Fe_57", 5.693539396900000e+01 }, { "Fe_58", 5.793327555800000e+01 },
|
||||
{ "Fe_59", 5.893487546400000e+01 }, { "Fe_60", 5.993407168300000e+01 }, { "Fe_61", 6.093674528100000e+01 }, { "Fe_62", 6.193676744200000e+01 },
|
||||
{ "Fe_63", 6.294036909100000e+01 }, { "Fe_64", 6.394120126500000e+01 }, { "Fe_65", 6.494538027000000e+01 }, { "Fe_66", 6.594678063800001e+01 },
|
||||
{ "Fe_67", 6.695094724400001e+01 }, { "Fe_68", 6.795370000000000e+01 }, { "Fe_69", 6.895878000000000e+01 }, { "Fe_70", 6.996146000000000e+01 },
|
||||
{ "Fe_71", 7.096672000000000e+01 }, { "Fe_72", 7.196962000000001e+01 }, { "Co_natural", 5.893320000000000e+01 }, { "Co_47", 4.701149000000000e+01 },
|
||||
{ "Co_48", 4.800176000000000e+01 }, { "Co_49", 4.898972000000000e+01 }, { "Co_50", 4.998154000000000e+01 }, { "Co_51", 5.097072000000000e+01 },
|
||||
{ "Co_52", 5.196359000000000e+01 }, { "Co_53", 5.295421889600000e+01 }, { "Co_54", 5.394845963500000e+01 }, { "Co_55", 5.494199902900000e+01 },
|
||||
{ "Co_56", 5.593983927800000e+01 }, { "Co_57", 5.693629137300000e+01 }, { "Co_58", 5.793575281400000e+01 }, { "Co_59", 5.893319504800000e+01 },
|
||||
{ "Co_60", 5.993381705900000e+01 }, { "Co_61", 6.093247576300000e+01 }, { "Co_62", 6.193405056300000e+01 }, { "Co_63", 6.293361161100000e+01 },
|
||||
{ "Co_64", 6.393580990800000e+01 }, { "Co_65", 6.493647846000000e+01 }, { "Co_66", 6.593976200400000e+01 }, { "Co_67", 6.694088952900000e+01 },
|
||||
{ "Co_68", 6.794487305800000e+01 }, { "Co_69", 6.894632000000000e+01 }, { "Co_70", 6.995099999999999e+01 }, { "Co_71", 7.095290000000000e+01 },
|
||||
{ "Co_72", 7.195780999999999e+01 }, { "Co_73", 7.296024000000000e+01 }, { "Co_74", 7.396538000000000e+01 }, { "Co_75", 7.496832999999999e+01 },
|
||||
{ "Ni_natural", 5.870000000000000e+01 }, { "Ni_48", 4.801975000000000e+01 }, { "Ni_49", 4.900966000000000e+01 }, { "Ni_50", 4.999593000000000e+01 },
|
||||
{ "Ni_51", 5.098772000000000e+01 }, { "Ni_52", 5.197568000000000e+01 }, { "Ni_53", 5.296847000000000e+01 }, { "Ni_54", 5.395790549500000e+01 },
|
||||
{ "Ni_55", 5.495133025100000e+01 }, { "Ni_56", 5.594213202200000e+01 }, { "Ni_57", 5.693979352600000e+01 }, { "Ni_58", 5.793534290700000e+01 },
|
||||
{ "Ni_59", 5.893434670500000e+01 }, { "Ni_60", 5.993078637200000e+01 }, { "Ni_61", 6.093105603300000e+01 }, { "Ni_62", 6.192834511500000e+01 },
|
||||
{ "Ni_63", 6.292966937400000e+01 }, { "Ni_64", 6.392796595900000e+01 }, { "Ni_65", 6.493008430400000e+01 }, { "Ni_66", 6.592913933400000e+01 },
|
||||
{ "Ni_67", 6.693156941399999e+01 }, { "Ni_68", 6.793186878900001e+01 }, { "Ni_69", 6.893561026899999e+01 }, { "Ni_70", 6.993650000000000e+01 },
|
||||
{ "Ni_71", 7.094073628300001e+01 }, { "Ni_72", 7.194209268199999e+01 }, { "Ni_73", 7.294647000000001e+01 }, { "Ni_74", 7.394807000000000e+01 },
|
||||
{ "Ni_75", 7.495287000000000e+01 }, { "Ni_76", 7.595533000000000e+01 }, { "Ni_77", 7.696055000000000e+01 }, { "Ni_78", 7.796317999999999e+01 },
|
||||
{ "Cu_natural", 6.354600000000000e+01 }, { "Cu_52", 5.199718000000000e+01 }, { "Cu_53", 5.298555000000000e+01 }, { "Cu_54", 5.397671000000000e+01 },
|
||||
{ "Cu_55", 5.496605000000000e+01 }, { "Cu_56", 5.595856000000000e+01 }, { "Cu_57", 5.694921107800000e+01 }, { "Cu_58", 5.794453849900000e+01 },
|
||||
{ "Cu_59", 5.893949802800000e+01 }, { "Cu_60", 5.993736503000000e+01 }, { "Cu_61", 6.093345782100000e+01 }, { "Cu_62", 6.193258374500000e+01 },
|
||||
{ "Cu_63", 6.292959747400000e+01 }, { "Cu_64", 6.392976418300000e+01 }, { "Cu_65", 6.492778948500001e+01 }, { "Cu_66", 6.592886881299999e+01 },
|
||||
{ "Cu_67", 6.692773031400000e+01 }, { "Cu_68", 6.792961088900000e+01 }, { "Cu_69", 6.892942926900000e+01 }, { "Cu_70", 6.993239234300000e+01 },
|
||||
{ "Cu_71", 7.093267683300000e+01 }, { "Cu_72", 7.193582030700000e+01 }, { "Cu_73", 7.293667528200000e+01 }, { "Cu_74", 7.393987486200000e+01 },
|
||||
{ "Cu_75", 7.494190000000000e+01 }, { "Cu_76", 7.594527502600000e+01 }, { "Cu_77", 7.694785000000000e+01 }, { "Cu_78", 7.795196000000000e+01 },
|
||||
{ "Cu_79", 7.895456000000000e+01 }, { "Cu_80", 7.996087000000000e+01 }, { "Zn_natural", 6.538000000000000e+01 }, { "Zn_54", 5.399295000000000e+01 },
|
||||
{ "Zn_55", 5.498398000000000e+01 }, { "Zn_56", 5.597238000000000e+01 }, { "Zn_57", 5.696478800000000e+01 }, { "Zn_58", 5.795459155500000e+01 },
|
||||
{ "Zn_59", 5.894926376400000e+01 }, { "Zn_60", 5.994182703500000e+01 }, { "Zn_61", 6.093951063500000e+01 }, { "Zn_62", 6.193432976400000e+01 },
|
||||
{ "Zn_63", 6.293321156600000e+01 }, { "Zn_64", 6.392914222200000e+01 }, { "Zn_65", 6.492924098400000e+01 }, { "Zn_66", 6.592603341900001e+01 },
|
||||
{ "Zn_67", 6.692712734500000e+01 }, { "Zn_68", 6.792484415400000e+01 }, { "Zn_69", 6.892655028100000e+01 }, { "Zn_70", 6.992531927400000e+01 },
|
||||
{ "Zn_71", 7.092772159899999e+01 }, { "Zn_72", 7.192685795100000e+01 }, { "Zn_73", 7.292977910400000e+01 }, { "Zn_74", 7.392945860899999e+01 },
|
||||
{ "Zn_75", 7.493293674100001e+01 }, { "Zn_76", 7.593329357000000e+01 }, { "Zn_77", 7.693695896700000e+01 }, { "Zn_78", 7.793844021600000e+01 },
|
||||
{ "Zn_79", 7.894265200000000e+01 }, { "Zn_80", 7.994434234800001e+01 }, { "Zn_81", 8.095048000000000e+01 }, { "Zn_82", 8.195442000000000e+01 },
|
||||
{ "Zn_83", 8.296102999999999e+01 }, { "Ga_natural", 6.972000000000000e+01 }, { "Ga_56", 5.599491000000000e+01 }, { "Ga_57", 5.698293000000000e+01 },
|
||||
{ "Ga_58", 5.797425000000000e+01 }, { "Ga_59", 5.896337000000000e+01 }, { "Ga_60", 5.995706000000000e+01 }, { "Ga_61", 6.094944628700000e+01 },
|
||||
{ "Ga_62", 6.194417523800000e+01 }, { "Ga_63", 6.293929419600000e+01 }, { "Ga_64", 6.393683874700000e+01 }, { "Ga_65", 6.493273475399999e+01 },
|
||||
{ "Ga_66", 6.593158901000000e+01 }, { "Ga_67", 6.692820170300000e+01 }, { "Ga_68", 6.792798008400000e+01 }, { "Ga_69", 6.892557358700000e+01 },
|
||||
{ "Ga_70", 6.992602197200000e+01 }, { "Ga_71", 7.092470134900000e+01 }, { "Ga_72", 7.192636626800000e+01 }, { "Ga_73", 7.292517468200001e+01 },
|
||||
{ "Ga_74", 7.392694576200000e+01 }, { "Ga_75", 7.492650024600000e+01 }, { "Ga_76", 7.592882762600000e+01 }, { "Ga_77", 7.692915429999999e+01 },
|
||||
{ "Ga_78", 7.793160818000000e+01 }, { "Ga_79", 7.893289326000000e+01 }, { "Ga_80", 7.993651578100000e+01 }, { "Ga_81", 8.093775235500000e+01 },
|
||||
{ "Ga_82", 8.194298999999999e+01 }, { "Ga_83", 8.294698000000000e+01 }, { "Ga_84", 8.395265000000001e+01 }, { "Ga_85", 8.495699999999999e+01 },
|
||||
{ "Ga_86", 8.596312000000000e+01 }, { "Ge_natural", 7.259000000000000e+01 }, { "Ge_58", 5.799101000000000e+01 }, { "Ge_59", 5.898175000000000e+01 },
|
||||
{ "Ge_60", 5.997019000000000e+01 }, { "Ge_61", 6.096379000000000e+01 }, { "Ge_62", 6.195465000000000e+01 }, { "Ge_63", 6.294964000000000e+01 },
|
||||
{ "Ge_64", 6.394165300000000e+01 }, { "Ge_65", 6.493943640600000e+01 }, { "Ge_66", 6.593384345299999e+01 }, { "Ge_67", 6.693273407000000e+01 },
|
||||
{ "Ge_68", 6.792809423999999e+01 }, { "Ge_69", 6.892796453299999e+01 }, { "Ge_70", 6.992424738100000e+01 }, { "Ge_71", 7.092495095400000e+01 },
|
||||
{ "Ge_72", 7.192207581500000e+01 }, { "Ge_73", 7.292345894499999e+01 }, { "Ge_74", 7.392117776700000e+01 }, { "Ge_75", 7.492285894800000e+01 },
|
||||
{ "Ge_76", 7.592140255699999e+01 }, { "Ge_77", 7.692354859100000e+01 }, { "Ge_78", 7.792285273900001e+01 }, { "Ge_79", 7.892540099500000e+01 },
|
||||
{ "Ge_80", 7.992537239200000e+01 }, { "Ge_81", 8.092882046699999e+01 }, { "Ge_82", 8.192954972500000e+01 }, { "Ge_83", 8.293462000000000e+01 },
|
||||
{ "Ge_84", 8.393747000000000e+01 }, { "Ge_85", 8.494302999999999e+01 }, { "Ge_86", 8.594649000000000e+01 }, { "Ge_87", 8.695251000000000e+01 },
|
||||
{ "Ge_88", 8.795690999999999e+01 }, { "Ge_89", 8.896383000000000e+01 }, { "As_natural", 7.492160000000000e+01 }, { "As_60", 5.999313000000000e+01 },
|
||||
{ "As_61", 6.098062000000000e+01 }, { "As_62", 6.197320000000000e+01 }, { "As_63", 6.296369000000000e+01 }, { "As_64", 6.395757200000000e+01 },
|
||||
{ "As_65", 6.494956400000000e+01 }, { "As_66", 6.594471000000000e+01 }, { "As_67", 6.693918607099999e+01 }, { "As_68", 6.793676906899999e+01 },
|
||||
{ "As_69", 6.893227367500000e+01 }, { "As_70", 6.993092482599999e+01 }, { "As_71", 7.092711242800000e+01 }, { "As_72", 7.192675228300000e+01 },
|
||||
{ "As_73", 7.292382484399999e+01 }, { "As_74", 7.392392869200000e+01 }, { "As_75", 7.492159647800000e+01 }, { "As_76", 7.592239402100000e+01 },
|
||||
{ "As_77", 7.692064728600000e+01 }, { "As_78", 7.792182728100001e+01 }, { "As_79", 7.892094793400000e+01 }, { "As_80", 7.992253381600000e+01 },
|
||||
{ "As_81", 8.092213228700000e+01 }, { "As_82", 8.192450406700000e+01 }, { "As_83", 8.292498002400001e+01 }, { "As_84", 8.392905800000000e+01 },
|
||||
{ "As_85", 8.493201999999999e+01 }, { "As_86", 8.593650000000000e+01 }, { "As_87", 8.693989999999999e+01 }, { "As_88", 8.794494000000000e+01 },
|
||||
{ "As_89", 8.894938999999999e+01 }, { "As_90", 8.995550000000000e+01 }, { "As_91", 9.096043000000000e+01 }, { "As_92", 9.196680000000001e+01 },
|
||||
{ "Se_natural", 7.895999999999999e+01 }, { "Se_65", 6.496465999999999e+01 }, { "Se_66", 6.595520999999999e+01 }, { "Se_67", 6.695009000000000e+01 },
|
||||
{ "Se_68", 6.794179800000001e+01 }, { "Se_69", 6.893955781699999e+01 }, { "Se_70", 6.993339064400000e+01 }, { "Se_71", 7.093224182199999e+01 },
|
||||
{ "Se_72", 7.192711235199999e+01 }, { "Se_73", 7.292676534500001e+01 }, { "Se_74", 7.392247643600000e+01 }, { "Se_75", 7.492252336800000e+01 },
|
||||
{ "Se_76", 7.591921359700000e+01 }, { "Se_77", 7.691991403800000e+01 }, { "Se_78", 7.791730909000000e+01 }, { "Se_79", 7.891849909800000e+01 },
|
||||
{ "Se_80", 7.991652127099999e+01 }, { "Se_81", 8.091799247400000e+01 }, { "Se_82", 8.191669940100000e+01 }, { "Se_83", 8.291911847300000e+01 },
|
||||
{ "Se_84", 8.391846235400000e+01 }, { "Se_85", 8.492224505300000e+01 }, { "Se_86", 8.592427157900001e+01 }, { "Se_87", 8.692852135800000e+01 },
|
||||
{ "Se_88", 8.793142399800000e+01 }, { "Se_89", 8.893644999999999e+01 }, { "Se_90", 8.993996000000000e+01 }, { "Se_91", 9.094596000000000e+01 },
|
||||
{ "Se_92", 9.194992000000001e+01 }, { "Se_93", 9.295629000000000e+01 }, { "Se_94", 9.396048999999999e+01 }, { "Br_natural", 7.990400000000000e+01 },
|
||||
{ "Br_67", 6.696478999999999e+01 }, { "Br_68", 6.795851600000000e+01 }, { "Br_69", 6.895010600000001e+01 }, { "Br_70", 6.994479200000001e+01 },
|
||||
{ "Br_71", 7.093874000000000e+01 }, { "Br_72", 7.193664457200001e+01 }, { "Br_73", 7.293169152400000e+01 }, { "Br_74", 7.392989103399999e+01 },
|
||||
{ "Br_75", 7.492577620700000e+01 }, { "Br_76", 7.592454146900000e+01 }, { "Br_77", 7.692137908200000e+01 }, { "Br_78", 7.792114570600000e+01 },
|
||||
{ "Br_79", 7.891833708700000e+01 }, { "Br_80", 7.991852929600000e+01 }, { "Br_81", 8.091629056300000e+01 }, { "Br_82", 8.191680411900001e+01 },
|
||||
{ "Br_83", 8.291518042100000e+01 }, { "Br_84", 8.391647897400000e+01 }, { "Br_85", 8.491560840299999e+01 }, { "Br_86", 8.591879757700001e+01 },
|
||||
{ "Br_87", 8.692071132400000e+01 }, { "Br_88", 8.792406592600000e+01 }, { "Br_89", 8.892638533400000e+01 }, { "Br_90", 8.993062773699999e+01 },
|
||||
{ "Br_91", 9.093396809500000e+01 }, { "Br_92", 9.193925871400000e+01 }, { "Br_93", 9.294305000000000e+01 }, { "Br_94", 9.394868000000000e+01 },
|
||||
{ "Br_95", 9.495287000000000e+01 }, { "Br_96", 9.595853000000000e+01 }, { "Br_97", 9.696280000000000e+01 }, { "Kr_natural", 8.380000000000000e+01 },
|
||||
{ "Kr_69", 6.896518000000000e+01 }, { "Kr_70", 6.995525900000000e+01 }, { "Kr_71", 7.094962573799999e+01 }, { "Kr_72", 7.194209203800000e+01 },
|
||||
{ "Kr_73", 7.293928919500000e+01 }, { "Kr_74", 7.393308436900000e+01 }, { "Kr_75", 7.493094574600001e+01 }, { "Kr_76", 7.592591007800000e+01 },
|
||||
{ "Kr_77", 7.692467000000001e+01 }, { "Kr_78", 7.792036478300000e+01 }, { "Kr_79", 7.892008243100000e+01 }, { "Kr_80", 7.991637896500001e+01 },
|
||||
{ "Kr_81", 8.091659201500001e+01 }, { "Kr_82", 8.191348360000001e+01 }, { "Kr_83", 8.291413609900000e+01 }, { "Kr_84", 8.391150668700000e+01 },
|
||||
{ "Kr_85", 8.491252733100001e+01 }, { "Kr_86", 8.591061072900000e+01 }, { "Kr_87", 8.691335486200001e+01 }, { "Kr_88", 8.791444696900000e+01 },
|
||||
{ "Kr_89", 8.891763058100000e+01 }, { "Kr_90", 8.991951655500000e+01 }, { "Kr_91", 9.092344521500000e+01 }, { "Kr_92", 9.192615621000000e+01 },
|
||||
{ "Kr_93", 9.293127435700001e+01 }, { "Kr_94", 9.393436000000000e+01 }, { "Kr_95", 9.493984000000000e+01 }, { "Kr_96", 9.594307000000001e+01 },
|
||||
{ "Kr_97", 9.694856000000000e+01 }, { "Kr_98", 9.795191000000000e+01 }, { "Kr_99", 9.895760000000000e+01 }, { "Kr_100", 9.996114000000000e+01 },
|
||||
{ "Rb_natural", 8.546780000000000e+01 }, { "Rb_71", 7.096532000000001e+01 }, { "Rb_72", 7.195908000000000e+01 }, { "Rb_73", 7.295056099999999e+01 },
|
||||
{ "Rb_74", 7.394426475100001e+01 }, { "Rb_75", 7.493857000000000e+01 }, { "Rb_76", 7.593507222600000e+01 }, { "Rb_77", 7.693040800000000e+01 },
|
||||
{ "Rb_78", 7.792814100000000e+01 }, { "Rb_79", 7.892398946000000e+01 }, { "Rb_80", 7.992251924999999e+01 }, { "Rb_81", 8.091899591300000e+01 },
|
||||
{ "Rb_82", 8.191820859800001e+01 }, { "Rb_83", 8.291510970100001e+01 }, { "Rb_84", 8.391438482100000e+01 }, { "Rb_85", 8.491178973700001e+01 },
|
||||
{ "Rb_86", 8.591116741899999e+01 }, { "Rb_87", 8.690918052600000e+01 }, { "Rb_88", 8.791131558799999e+01 }, { "Rb_89", 8.891227801600000e+01 },
|
||||
{ "Rb_90", 8.991480169400000e+01 }, { "Rb_91", 9.091653695799999e+01 }, { "Rb_92", 9.191972890000000e+01 }, { "Rb_93", 9.292204187599999e+01 },
|
||||
{ "Rb_94", 9.392640494600001e+01 }, { "Rb_95", 9.492930288900000e+01 }, { "Rb_96", 9.593427263700001e+01 }, { "Rb_97", 9.693735191600000e+01 },
|
||||
{ "Rb_98", 9.794179066800000e+01 }, { "Rb_99", 9.894537928299999e+01 }, { "Rb_100", 9.994987000000000e+01 }, { "Rb_101", 1.009531964450000e+02 },
|
||||
{ "Rb_102", 1.019588700000000e+02 }, { "Sr_natural", 8.762000000000000e+01 }, { "Sr_73", 7.296597000000000e+01 }, { "Sr_74", 7.395631000000000e+01 },
|
||||
{ "Sr_75", 7.494994956799999e+01 }, { "Sr_76", 7.594176678200000e+01 }, { "Sr_77", 7.693794478200000e+01 }, { "Sr_78", 7.793218000000000e+01 },
|
||||
{ "Sr_79", 7.892970800000001e+01 }, { "Sr_80", 7.992452101300000e+01 }, { "Sr_81", 8.092321184600000e+01 }, { "Sr_82", 8.191840163900000e+01 },
|
||||
{ "Sr_83", 8.291755670100000e+01 }, { "Sr_84", 8.391342527499999e+01 }, { "Sr_85", 8.491293280300000e+01 }, { "Sr_86", 8.590926020400001e+01 },
|
||||
{ "Sr_87", 8.690887712400000e+01 }, { "Sr_88", 8.790561212400000e+01 }, { "Sr_89", 8.890745067500001e+01 }, { "Sr_90", 8.990773788800000e+01 },
|
||||
{ "Sr_91", 9.091020309500000e+01 }, { "Sr_92", 9.191103785800000e+01 }, { "Sr_93", 9.291402563400000e+01 }, { "Sr_94", 9.391536131200000e+01 },
|
||||
{ "Sr_95", 9.491935876600000e+01 }, { "Sr_96", 9.592169680200000e+01 }, { "Sr_97", 9.692615292300000e+01 }, { "Sr_98", 9.792845293400001e+01 },
|
||||
{ "Sr_99", 9.893324092600000e+01 }, { "Sr_100", 9.993535191100000e+01 }, { "Sr_101", 1.009405178880000e+02 }, { "Sr_102", 1.019430189870000e+02 },
|
||||
{ "Sr_103", 1.029489500000000e+02 }, { "Sr_104", 1.039523300000000e+02 }, { "Sr_105", 1.049585800000000e+02 }, { "Y_natural", 8.890590000000000e+01 },
|
||||
{ "Y_76", 7.595845000000000e+01 }, { "Y_77", 7.694964500000000e+01 }, { "Y_78", 7.794361000000001e+01 }, { "Y_79", 7.893735163400000e+01 },
|
||||
{ "Y_80", 7.993428000000000e+01 }, { "Y_81", 8.092912746800000e+01 }, { "Y_82", 8.192679245100000e+01 }, { "Y_83", 8.292235424300000e+01 },
|
||||
{ "Y_84", 8.392038826400000e+01 }, { "Y_85", 8.491643303900000e+01 }, { "Y_86", 8.591488557600000e+01 }, { "Y_87", 8.691087573000000e+01 },
|
||||
{ "Y_88", 8.790950114600000e+01 }, { "Y_89", 8.890584829500000e+01 }, { "Y_90", 8.990715188599999e+01 }, { "Y_91", 9.090730479100000e+01 },
|
||||
{ "Y_92", 9.190894914300000e+01 }, { "Y_93", 9.290958271300001e+01 }, { "Y_94", 9.391159524500000e+01 }, { "Y_95", 9.491282062099999e+01 },
|
||||
{ "Y_96", 9.591589134300000e+01 }, { "Y_97", 9.691813399500001e+01 }, { "Y_98", 9.792220302000000e+01 }, { "Y_99", 9.892463620400000e+01 },
|
||||
{ "Y_100", 9.992775658600000e+01 }, { "Y_101", 1.009303138500000e+02 }, { "Y_102", 1.019335556950000e+02 }, { "Y_103", 1.029367300000000e+02 },
|
||||
{ "Y_104", 1.039410500000000e+02 }, { "Y_105", 1.049448700000000e+02 }, { "Y_106", 1.059497900000000e+02 }, { "Y_107", 1.069541400000000e+02 },
|
||||
{ "Y_108", 1.079594800000000e+02 }, { "Zr_natural", 9.122000000000000e+01 }, { "Zr_78", 7.795523000000000e+01 }, { "Zr_79", 7.894916000000001e+01 },
|
||||
{ "Zr_80", 7.994040000000000e+01 }, { "Zr_81", 8.093721002600000e+01 }, { "Zr_82", 8.193108700000001e+01 }, { "Zr_83", 8.292865380100000e+01 },
|
||||
{ "Zr_84", 8.392325000000000e+01 }, { "Zr_85", 8.492147118200000e+01 }, { "Zr_86", 8.591647359100000e+01 }, { "Zr_87", 8.691481625199999e+01 },
|
||||
{ "Zr_88", 8.791022690400000e+01 }, { "Zr_89", 8.890888950000000e+01 }, { "Zr_90", 8.990470441600000e+01 }, { "Zr_91", 9.090564576700000e+01 },
|
||||
{ "Zr_92", 9.190504084700000e+01 }, { "Zr_93", 9.290647600600001e+01 }, { "Zr_94", 9.390631519199999e+01 }, { "Zr_95", 9.490804260000000e+01 },
|
||||
{ "Zr_96", 9.590827338600000e+01 }, { "Zr_97", 9.691095310900000e+01 }, { "Zr_98", 9.791273489200000e+01 }, { "Zr_99", 9.891651210600000e+01 },
|
||||
{ "Zr_100", 9.991776188900000e+01 }, { "Zr_101", 1.009211404150000e+02 }, { "Zr_102", 1.019229812850000e+02 }, { "Zr_103", 1.029265996060000e+02 },
|
||||
{ "Zr_104", 1.039287800000000e+02 }, { "Zr_105", 1.049330500000000e+02 }, { "Zr_106", 1.059359100000000e+02 }, { "Zr_107", 1.069407500000000e+02 },
|
||||
{ "Zr_108", 1.079439600000000e+02 }, { "Zr_109", 1.089492400000000e+02 }, { "Zr_110", 1.099528700000000e+02 }, { "Nb_natural", 9.290640000000000e+01 },
|
||||
{ "Nb_81", 8.094902999999999e+01 }, { "Nb_82", 8.194313000000000e+01 }, { "Nb_83", 8.293670538200000e+01 }, { "Nb_84", 8.393357000000000e+01 },
|
||||
{ "Nb_85", 8.492791244700000e+01 }, { "Nb_86", 8.592503832600001e+01 }, { "Nb_87", 8.692036110799999e+01 }, { "Nb_88", 8.791833216300000e+01 },
|
||||
{ "Nb_89", 8.891341824500000e+01 }, { "Nb_90", 8.991126484500001e+01 }, { "Nb_91", 9.090699624299999e+01 }, { "Nb_92", 9.190719388799999e+01 },
|
||||
{ "Nb_93", 9.290637805800000e+01 }, { "Nb_94", 9.390728388799999e+01 }, { "Nb_95", 9.490683579200000e+01 }, { "Nb_96", 9.590810064700000e+01 },
|
||||
{ "Nb_97", 9.690809855600000e+01 }, { "Nb_98", 9.791032841200000e+01 }, { "Nb_99", 9.891161837500000e+01 }, { "Nb_100", 9.991418161900000e+01 },
|
||||
{ "Nb_101", 1.009152520250000e+02 }, { "Nb_102", 1.019180376140000e+02 }, { "Nb_103", 1.029191438420000e+02 }, { "Nb_104", 1.039224647010000e+02 },
|
||||
{ "Nb_105", 1.049239365450000e+02 }, { "Nb_106", 1.059279700000000e+02 }, { "Nb_107", 1.069303100000000e+02 }, { "Nb_108", 1.079348400000000e+02 },
|
||||
{ "Nb_109", 1.089376300000000e+02 }, { "Nb_110", 1.099424400000000e+02 }, { "Nb_111", 1.109456500000000e+02 }, { "Nb_112", 1.119508300000000e+02 },
|
||||
{ "Nb_113", 1.129547000000000e+02 }, { "Mo_natural", 9.594000000000000e+01 }, { "Mo_83", 8.294874000000000e+01 }, { "Mo_84", 8.394009000000000e+01 },
|
||||
{ "Mo_85", 8.493655000000000e+01 }, { "Mo_86", 8.593069590400000e+01 }, { "Mo_87", 8.692732650200000e+01 }, { "Mo_88", 8.792195324100000e+01 },
|
||||
{ "Mo_89", 8.891948000900000e+01 }, { "Mo_90", 8.991393689600000e+01 }, { "Mo_91", 9.091175019400001e+01 }, { "Mo_92", 9.190681099100000e+01 },
|
||||
{ "Mo_93", 9.290681261000000e+01 }, { "Mo_94", 9.390508826900000e+01 }, { "Mo_95", 9.490584212900001e+01 }, { "Mo_96", 9.590467947700000e+01 },
|
||||
{ "Mo_97", 9.690602146499999e+01 }, { "Mo_98", 9.790540816900000e+01 }, { "Mo_99", 9.890771187000000e+01 }, { "Mo_100", 9.990747733600000e+01 },
|
||||
{ "Mo_101", 1.009103470010000e+02 }, { "Mo_102", 1.019102973600000e+02 }, { "Mo_103", 1.029132071420000e+02 }, { "Mo_104", 1.039137636250000e+02 },
|
||||
{ "Mo_105", 1.049169746100000e+02 }, { "Mo_106", 1.059181368020000e+02 }, { "Mo_107", 1.069216926040000e+02 }, { "Mo_108", 1.079234530000000e+02 },
|
||||
{ "Mo_109", 1.089278100000000e+02 }, { "Mo_110", 1.099297300000000e+02 }, { "Mo_111", 1.109344100000000e+02 }, { "Mo_112", 1.119368400000000e+02 },
|
||||
{ "Mo_113", 1.129418800000000e+02 }, { "Mo_114", 1.139449200000000e+02 }, { "Mo_115", 1.149502900000000e+02 }, { "Tc_natural", 9.800000000000000e+01 },
|
||||
{ "Tc_85", 8.494883000000000e+01 }, { "Tc_86", 8.594288000000000e+01 }, { "Tc_87", 8.693653000000000e+01 }, { "Tc_88", 8.793267800000000e+01 },
|
||||
{ "Tc_89", 8.892716700000000e+01 }, { "Tc_90", 8.992355656399999e+01 }, { "Tc_91", 9.091842763900000e+01 }, { "Tc_92", 9.191526016600000e+01 },
|
||||
{ "Tc_93", 9.291024898400001e+01 }, { "Tc_94", 9.390965700200000e+01 }, { "Tc_95", 9.490765708399999e+01 }, { "Tc_96", 9.590787138300000e+01 },
|
||||
{ "Tc_97", 9.690636535800000e+01 }, { "Tc_98", 9.790721596600000e+01 }, { "Tc_99", 9.890625474700001e+01 }, { "Tc_100", 9.990765777999999e+01 },
|
||||
{ "Tc_101", 1.009073146590000e+02 }, { "Tc_102", 1.019092150190000e+02 }, { "Tc_103", 1.029091813510000e+02 }, { "Tc_104", 1.039114474540000e+02 },
|
||||
{ "Tc_105", 1.049116605660000e+02 }, { "Tc_106", 1.059143579270000e+02 }, { "Tc_107", 1.069150795720000e+02 }, { "Tc_108", 1.079184612260000e+02 },
|
||||
{ "Tc_109", 1.089199826650000e+02 }, { "Tc_110", 1.099238204830000e+02 }, { "Tc_111", 1.109256928300000e+02 }, { "Tc_112", 1.119291464930000e+02 },
|
||||
{ "Tc_113", 1.129315900000000e+02 }, { "Tc_114", 1.139358800000000e+02 }, { "Tc_115", 1.149386900000000e+02 }, { "Tc_116", 1.159433700000000e+02 },
|
||||
{ "Tc_117", 1.169464800000000e+02 }, { "Tc_118", 1.179514800000000e+02 }, { "Ru_natural", 1.010700000000000e+02 }, { "Ru_87", 8.694918000000000e+01 },
|
||||
{ "Ru_88", 8.794025999999999e+01 }, { "Ru_89", 8.893611000000000e+01 }, { "Ru_90", 8.992989000000000e+01 }, { "Ru_91", 9.092629200000000e+01 },
|
||||
{ "Ru_92", 9.192012000000000e+01 }, { "Ru_93", 9.291705203399999e+01 }, { "Ru_94", 9.391135971100000e+01 }, { "Ru_95", 9.491041292900000e+01 },
|
||||
{ "Ru_96", 9.590759783500000e+01 }, { "Ru_97", 9.690755470000001e+01 }, { "Ru_98", 9.790528713200000e+01 }, { "Ru_99", 9.890593930199999e+01 },
|
||||
{ "Ru_100", 9.990421947599999e+01 }, { "Ru_101", 1.009055820870000e+02 }, { "Ru_102", 1.019043493120000e+02 }, { "Ru_103", 1.029063238470000e+02 },
|
||||
{ "Ru_104", 1.039054327010000e+02 }, { "Ru_105", 1.049077528660000e+02 }, { "Ru_106", 1.059073294330000e+02 }, { "Ru_107", 1.069099050890000e+02 },
|
||||
{ "Ru_108", 1.079101734650000e+02 }, { "Ru_109", 1.089132032330000e+02 }, { "Ru_110", 1.099141360410000e+02 }, { "Ru_111", 1.109176960000000e+02 },
|
||||
{ "Ru_112", 1.119189650000000e+02 }, { "Ru_113", 1.129224871940000e+02 }, { "Ru_114", 1.139242810000000e+02 }, { "Ru_115", 1.149286861730000e+02 },
|
||||
{ "Ru_116", 1.159308100000000e+02 }, { "Ru_117", 1.169355800000000e+02 }, { "Ru_118", 1.179378200000000e+02 }, { "Ru_119", 1.189428400000000e+02 },
|
||||
{ "Ru_120", 1.199453100000000e+02 }, { "Rh_natural", 1.029055000000000e+02 }, { "Rh_89", 8.894883700000000e+01 }, { "Rh_90", 8.994287000000000e+01 },
|
||||
{ "Rh_91", 9.093655000000000e+01 }, { "Rh_92", 9.193198000000000e+01 }, { "Rh_93", 9.292574000000000e+01 }, { "Rh_94", 9.392169800000001e+01 },
|
||||
{ "Rh_95", 9.491589874000000e+01 }, { "Rh_96", 9.591446063100000e+01 }, { "Rh_97", 9.691133679700000e+01 }, { "Rh_98", 9.791070815800001e+01 },
|
||||
{ "Rh_99", 9.890813210400000e+01 }, { "Rh_100", 9.990812155000000e+01 }, { "Rh_101", 1.009061636250000e+02 }, { "Rh_102", 1.019068431960000e+02 },
|
||||
{ "Rh_103", 1.029055042920000e+02 }, { "Rh_104", 1.039066555180000e+02 }, { "Rh_105", 1.049056938210000e+02 }, { "Rh_106", 1.059072871350000e+02 },
|
||||
{ "Rh_107", 1.069067484230000e+02 }, { "Rh_108", 1.079087280180000e+02 }, { "Rh_109", 1.089087372890000e+02 }, { "Rh_110", 1.099111364110000e+02 },
|
||||
{ "Rh_111", 1.109115859130000e+02 }, { "Rh_112", 1.119143941590000e+02 }, { "Rh_113", 1.129155306270000e+02 }, { "Rh_114", 1.139188060000000e+02 },
|
||||
{ "Rh_115", 1.149203340000000e+02 }, { "Rh_116", 1.159240620000000e+02 }, { "Rh_117", 1.169259800000000e+02 }, { "Rh_118", 1.179300700000000e+02 },
|
||||
{ "Rh_119", 1.189321100000000e+02 }, { "Rh_120", 1.199364100000000e+02 }, { "Rh_121", 1.209387200000000e+02 }, { "Rh_122", 1.219432100000000e+02 },
|
||||
{ "Pd_natural", 1.064000000000000e+02 }, { "Pd_91", 9.094911000000000e+01 }, { "Pd_92", 9.194042000000000e+01 }, { "Pd_93", 9.293591000000001e+01 },
|
||||
{ "Pd_94", 9.392877000000000e+01 }, { "Pd_95", 9.492469000000000e+01 }, { "Pd_96", 9.591816435900000e+01 }, { "Pd_97", 9.691647907300000e+01 },
|
||||
{ "Pd_98", 9.791272090200000e+01 }, { "Pd_99", 9.891176783300000e+01 }, { "Pd_100", 9.990850588600000e+01 }, { "Pd_101", 1.009082892420000e+02 },
|
||||
{ "Pd_102", 1.019056085440000e+02 }, { "Pd_103", 1.029060873070000e+02 }, { "Pd_104", 1.039040358340000e+02 }, { "Pd_105", 1.049050849200000e+02 },
|
||||
{ "Pd_106", 1.059034857150000e+02 }, { "Pd_107", 1.069051334810000e+02 }, { "Pd_108", 1.079038917010000e+02 }, { "Pd_109", 1.089059504510000e+02 },
|
||||
{ "Pd_110", 1.099051532540000e+02 }, { "Pd_111", 1.109076707340000e+02 }, { "Pd_112", 1.119073140580000e+02 }, { "Pd_113", 1.129101529080000e+02 },
|
||||
{ "Pd_114", 1.139103626380000e+02 }, { "Pd_115", 1.149136838240000e+02 }, { "Pd_116", 1.159141586620000e+02 }, { "Pd_117", 1.169178413380000e+02 },
|
||||
{ "Pd_118", 1.179189843000000e+02 }, { "Pd_119", 1.189231100000000e+02 }, { "Pd_120", 1.199246918780000e+02 }, { "Pd_121", 1.209288700000000e+02 },
|
||||
{ "Pd_122", 1.219305500000000e+02 }, { "Pd_123", 1.229349300000000e+02 }, { "Pd_124", 1.239368800000000e+02 }, { "Ag_natural", 1.078680000000000e+02 },
|
||||
{ "Ag_93", 9.294978000000000e+01 }, { "Ag_94", 9.394278000000000e+01 }, { "Ag_95", 9.493548000000000e+01 }, { "Ag_96", 9.593068000000000e+01 },
|
||||
{ "Ag_97", 9.692397241200000e+01 }, { "Ag_98", 9.792156620100000e+01 }, { "Ag_99", 9.891759717799999e+01 }, { "Ag_100", 9.991610425499999e+01 },
|
||||
{ "Ag_101", 1.009128022330000e+02 }, { "Ag_102", 1.019116850000000e+02 }, { "Ag_103", 1.029089727200000e+02 }, { "Ag_104", 1.039086291570000e+02 },
|
||||
{ "Ag_105", 1.049065286610000e+02 }, { "Ag_106", 1.059066689210000e+02 }, { "Ag_107", 1.069050968200000e+02 }, { "Ag_108", 1.079059555560000e+02 },
|
||||
{ "Ag_109", 1.089047522920000e+02 }, { "Ag_110", 1.099061072310000e+02 }, { "Ag_111", 1.109052911570000e+02 }, { "Ag_112", 1.119070048140000e+02 },
|
||||
{ "Ag_113", 1.129065665790000e+02 }, { "Ag_114", 1.139088037040000e+02 }, { "Ag_115", 1.149087626980000e+02 }, { "Ag_116", 1.159113599330000e+02 },
|
||||
{ "Ag_117", 1.169116845620000e+02 }, { "Ag_118", 1.179145827680000e+02 }, { "Ag_119", 1.189156650590000e+02 }, { "Ag_120", 1.199187873840000e+02 },
|
||||
{ "Ag_121", 1.209198480460000e+02 }, { "Ag_122", 1.219235300000000e+02 }, { "Ag_123", 1.229249000000000e+02 }, { "Ag_124", 1.239286400000000e+02 },
|
||||
{ "Ag_125", 1.249304300000000e+02 }, { "Ag_126", 1.259345000000000e+02 }, { "Ag_127", 1.269367700000000e+02 }, { "Ag_128", 1.279411700000000e+02 },
|
||||
{ "Ag_129", 1.289436900000000e+02 }, { "Ag_130", 1.299504480000000e+02 }, { "Cd_natural", 1.124100000000000e+02 }, { "Cd_95", 9.494987000000000e+01 },
|
||||
{ "Cd_96", 9.593977000000000e+01 }, { "Cd_97", 9.693494000000000e+01 }, { "Cd_98", 9.792739554600000e+01 }, { "Cd_99", 9.892501000000000e+01 },
|
||||
{ "Cd_100", 9.992028952500000e+01 }, { "Cd_101", 1.009186815380000e+02 }, { "Cd_102", 1.019144622580000e+02 }, { "Cd_103", 1.029134192460000e+02 },
|
||||
{ "Cd_104", 1.039098494750000e+02 }, { "Cd_105", 1.049094679050000e+02 }, { "Cd_106", 1.059064594100000e+02 }, { "Cd_107", 1.069066179280000e+02 },
|
||||
{ "Cd_108", 1.079041836830000e+02 }, { "Cd_109", 1.089049822930000e+02 }, { "Cd_110", 1.099030020700000e+02 }, { "Cd_111", 1.109041781070000e+02 },
|
||||
{ "Cd_112", 1.119027578090000e+02 }, { "Cd_113", 1.129044016620000e+02 }, { "Cd_114", 1.139033585400000e+02 }, { "Cd_115", 1.149054309690000e+02 },
|
||||
{ "Cd_116", 1.159047558090000e+02 }, { "Cd_117", 1.169072186180000e+02 }, { "Cd_118", 1.179069145300000e+02 }, { "Cd_119", 1.189099215970000e+02 },
|
||||
{ "Cd_120", 1.199098501290000e+02 }, { "Cd_121", 1.209129773630000e+02 }, { "Cd_122", 1.219133324320000e+02 }, { "Cd_123", 1.229170029990000e+02 },
|
||||
{ "Cd_124", 1.239176476160000e+02 }, { "Cd_125", 1.249212463700000e+02 }, { "Cd_126", 1.259223533210000e+02 }, { "Cd_127", 1.269264438640000e+02 },
|
||||
{ "Cd_128", 1.279277622850000e+02 }, { "Cd_129", 1.289321500000000e+02 }, { "Cd_130", 1.299339019370000e+02 }, { "Cd_131", 1.309406700000000e+02 },
|
||||
{ "Cd_132", 1.319455500000000e+02 }, { "In_natural", 1.148200000000000e+02 }, { "In_97", 9.694954000000000e+01 }, { "In_98", 9.794213999999999e+01 },
|
||||
{ "In_99", 9.893422000000000e+01 }, { "In_100", 9.993111085100000e+01 }, { "In_101", 1.009263400000000e+02 }, { "In_102", 1.019240902380000e+02 },
|
||||
{ "In_103", 1.029199141880000e+02 }, { "In_104", 1.039182961710000e+02 }, { "In_105", 1.049146735400000e+02 }, { "In_106", 1.059134654110000e+02 },
|
||||
{ "In_107", 1.069102951000000e+02 }, { "In_108", 1.079096981800000e+02 }, { "In_109", 1.089071505070000e+02 }, { "In_110", 1.099071652740000e+02 },
|
||||
{ "In_111", 1.109051032780000e+02 }, { "In_112", 1.119055323310000e+02 }, { "In_113", 1.129040577610000e+02 }, { "In_114", 1.139049138760000e+02 },
|
||||
{ "In_115", 1.149038784840000e+02 }, { "In_116", 1.159052597030000e+02 }, { "In_117", 1.169045135640000e+02 }, { "In_118", 1.179063543670000e+02 },
|
||||
{ "In_119", 1.189058453500000e+02 }, { "In_120", 1.199079596080000e+02 }, { "In_121", 1.209078458220000e+02 }, { "In_122", 1.219102760100000e+02 },
|
||||
{ "In_123", 1.229104382760000e+02 }, { "In_124", 1.239131752310000e+02 }, { "In_125", 1.249136005880000e+02 }, { "In_126", 1.259164638570000e+02 },
|
||||
{ "In_127", 1.269173530910000e+02 }, { "In_128", 1.279201723280000e+02 }, { "In_129", 1.289216969800000e+02 }, { "In_130", 1.299249700490000e+02 },
|
||||
{ "In_131", 1.309268517670000e+02 }, { "In_132", 1.319329902600000e+02 }, { "In_133", 1.329378100000000e+02 }, { "In_134", 1.339441500000000e+02 },
|
||||
{ "In_135", 1.349493300000000e+02 }, { "Sn_natural", 1.186900000000000e+02 }, { "Sn_99", 9.894933000000000e+01 }, { "Sn_100", 9.993904434300001e+01 },
|
||||
{ "Sn_101", 1.009360600000000e+02 }, { "Sn_102", 1.019302953240000e+02 }, { "Sn_103", 1.029281000000000e+02 }, { "Sn_104", 1.039231432230000e+02 },
|
||||
{ "Sn_105", 1.049213494370000e+02 }, { "Sn_106", 1.059168806200000e+02 }, { "Sn_107", 1.069156443290000e+02 }, { "Sn_108", 1.079119253780000e+02 },
|
||||
{ "Sn_109", 1.089112832140000e+02 }, { "Sn_110", 1.099078427910000e+02 }, { "Sn_111", 1.109077344600000e+02 }, { "Sn_112", 1.119048182070000e+02 },
|
||||
{ "Sn_113", 1.129051705770000e+02 }, { "Sn_114", 1.139027788690000e+02 }, { "Sn_115", 1.149033423970000e+02 }, { "Sn_116", 1.159017405300000e+02 },
|
||||
{ "Sn_117", 1.169029516560000e+02 }, { "Sn_118", 1.179016031670000e+02 }, { "Sn_119", 1.189033076300000e+02 }, { "Sn_120", 1.199021946760000e+02 },
|
||||
{ "Sn_121", 1.209042354800000e+02 }, { "Sn_122", 1.219034390460000e+02 }, { "Sn_123", 1.229057208380000e+02 }, { "Sn_124", 1.239052739460000e+02 },
|
||||
{ "Sn_125", 1.249077841250000e+02 }, { "Sn_126", 1.259076532800000e+02 }, { "Sn_127", 1.269103600240000e+02 }, { "Sn_128", 1.279105366240000e+02 },
|
||||
{ "Sn_129", 1.289134790000000e+02 }, { "Sn_130", 1.299139672950000e+02 }, { "Sn_131", 1.309169997690000e+02 }, { "Sn_132", 1.319178157130000e+02 },
|
||||
{ "Sn_133", 1.329238292490000e+02 }, { "Sn_134", 1.339282917650000e+02 }, { "Sn_135", 1.349347300000000e+02 }, { "Sn_136", 1.359393400000000e+02 },
|
||||
{ "Sn_137", 1.369459900000000e+02 }, { "Sb_natural", 1.217500000000000e+02 }, { "Sb_103", 1.029396900000000e+02 }, { "Sb_104", 1.039364720000000e+02 },
|
||||
{ "Sb_105", 1.049314863480000e+02 }, { "Sb_106", 1.059287910000000e+02 }, { "Sb_107", 1.069241500000000e+02 }, { "Sb_108", 1.079221600000000e+02 },
|
||||
{ "Sb_109", 1.089181324260000e+02 }, { "Sb_110", 1.099167530000000e+02 }, { "Sb_111", 1.109131630000000e+02 }, { "Sb_112", 1.119123980090000e+02 },
|
||||
{ "Sb_113", 1.129093716720000e+02 }, { "Sb_114", 1.139092690000000e+02 }, { "Sb_115", 1.149065980000000e+02 }, { "Sb_116", 1.159067936290000e+02 },
|
||||
{ "Sb_117", 1.169048359410000e+02 }, { "Sb_118", 1.179055287310000e+02 }, { "Sb_119", 1.189039420090000e+02 }, { "Sb_120", 1.199050724270000e+02 },
|
||||
{ "Sb_121", 1.209038156860000e+02 }, { "Sb_122", 1.219051736510000e+02 }, { "Sb_123", 1.229042139700000e+02 }, { "Sb_124", 1.239059357430000e+02 },
|
||||
{ "Sb_125", 1.249052538180000e+02 }, { "Sb_126", 1.259072474800000e+02 }, { "Sb_127", 1.269069236090000e+02 }, { "Sb_128", 1.279091690010000e+02 },
|
||||
{ "Sb_129", 1.289091484420000e+02 }, { "Sb_130", 1.299116563240000e+02 }, { "Sb_131", 1.309119822750000e+02 }, { "Sb_132", 1.319144668960000e+02 },
|
||||
{ "Sb_133", 1.329152516300000e+02 }, { "Sb_134", 1.339203797440000e+02 }, { "Sb_135", 1.349251657710000e+02 }, { "Sb_136", 1.359303500000000e+02 },
|
||||
{ "Sb_137", 1.369353100000000e+02 }, { "Sb_138", 1.379407900000000e+02 }, { "Sb_139", 1.389459800000000e+02 }, { "Te_natural", 1.276000000000000e+02 },
|
||||
{ "Te_105", 1.049436400000000e+02 }, { "Te_106", 1.059375042370000e+02 }, { "Te_107", 1.069350060000000e+02 }, { "Te_108", 1.079294445970000e+02 },
|
||||
{ "Te_109", 1.089274155150000e+02 }, { "Te_110", 1.099224073160000e+02 }, { "Te_111", 1.109211106920000e+02 }, { "Te_112", 1.119170136720000e+02 },
|
||||
{ "Te_113", 1.129158910000000e+02 }, { "Te_114", 1.139120890000000e+02 }, { "Te_115", 1.149119020000000e+02 }, { "Te_116", 1.159084600000000e+02 },
|
||||
{ "Te_117", 1.169086447190000e+02 }, { "Te_118", 1.179058275810000e+02 }, { "Te_119", 1.189064036450000e+02 }, { "Te_120", 1.199040202220000e+02 },
|
||||
{ "Te_121", 1.209049364240000e+02 }, { "Te_122", 1.219030438980000e+02 }, { "Te_123", 1.229042700290000e+02 }, { "Te_124", 1.239028178960000e+02 },
|
||||
{ "Te_125", 1.249044307310000e+02 }, { "Te_126", 1.259033116960000e+02 }, { "Te_127", 1.269052263360000e+02 }, { "Te_128", 1.279044630560000e+02 },
|
||||
{ "Te_129", 1.289065982380000e+02 }, { "Te_130", 1.299062243990000e+02 }, { "Te_131", 1.309085238640000e+02 }, { "Te_132", 1.319085531600000e+02 },
|
||||
{ "Te_133", 1.329109553060000e+02 }, { "Te_134", 1.339113687370000e+02 }, { "Te_135", 1.349164485920000e+02 }, { "Te_136", 1.359201012460000e+02 },
|
||||
{ "Te_137", 1.369253229540000e+02 }, { "Te_138", 1.379292200000000e+02 }, { "Te_139", 1.389347300000000e+02 }, { "Te_140", 1.399388500000000e+02 },
|
||||
{ "Te_141", 1.409446500000000e+02 }, { "Te_142", 1.419490800000000e+02 }, { "I_natural", 1.269045000000000e+02 }, { "I_108", 1.079434750000000e+02 },
|
||||
{ "I_109", 1.089381494170000e+02 }, { "I_110", 1.099352420000000e+02 }, { "I_111", 1.109302760000000e+02 }, { "I_112", 1.119279700000000e+02 },
|
||||
{ "I_113", 1.129236405830000e+02 }, { "I_114", 1.139218500000000e+02 }, { "I_115", 1.149180480000000e+02 }, { "I_116", 1.159168086330000e+02 },
|
||||
{ "I_117", 1.169136500000000e+02 }, { "I_118", 1.179130740000000e+02 }, { "I_119", 1.189100740000000e+02 }, { "I_120", 1.199100481730000e+02 },
|
||||
{ "I_121", 1.209073668110000e+02 }, { "I_122", 1.219075892840000e+02 }, { "I_123", 1.229055889650000e+02 }, { "I_124", 1.239062098520000e+02 },
|
||||
{ "I_125", 1.249046301640000e+02 }, { "I_126", 1.259056241530000e+02 }, { "I_127", 1.269044726810000e+02 }, { "I_128", 1.279058094430000e+02 },
|
||||
{ "I_129", 1.289049877220000e+02 }, { "I_130", 1.299066742470000e+02 }, { "I_131", 1.309061246090000e+02 }, { "I_132", 1.319079973810000e+02 },
|
||||
{ "I_133", 1.329077969390000e+02 }, { "I_134", 1.339097444650000e+02 }, { "I_135", 1.349100481210000e+02 }, { "I_136", 1.359146539930000e+02 },
|
||||
{ "I_137", 1.369178708400000e+02 }, { "I_138", 1.379223495910000e+02 }, { "I_139", 1.389260994780000e+02 }, { "I_140", 1.399310000000000e+02 },
|
||||
{ "I_141", 1.409350300000000e+02 }, { "I_142", 1.419401800000000e+02 }, { "I_143", 1.429445600000000e+02 }, { "I_144", 1.439499900000000e+02 },
|
||||
{ "Xe_natural", 1.313000000000000e+02 }, { "Xe_110", 1.099442780680000e+02 }, { "Xe_111", 1.109416020000000e+02 }, { "Xe_112", 1.119356231120000e+02 },
|
||||
{ "Xe_113", 1.129333411740000e+02 }, { "Xe_114", 1.139279803060000e+02 }, { "Xe_115", 1.149262939200000e+02 }, { "Xe_116", 1.159215810870000e+02 },
|
||||
{ "Xe_117", 1.169203587350000e+02 }, { "Xe_118", 1.179161786550000e+02 }, { "Xe_119", 1.189154106880000e+02 }, { "Xe_120", 1.199117842440000e+02 },
|
||||
{ "Xe_121", 1.209114618290000e+02 }, { "Xe_122", 1.219083676320000e+02 }, { "Xe_123", 1.229084819100000e+02 }, { "Xe_124", 1.239058930030000e+02 },
|
||||
{ "Xe_125", 1.249063954640000e+02 }, { "Xe_126", 1.259042736340000e+02 }, { "Xe_127", 1.269051837230000e+02 }, { "Xe_128", 1.279035312750000e+02 },
|
||||
{ "Xe_129", 1.289047794350000e+02 }, { "Xe_130", 1.299035080070000e+02 }, { "Xe_131", 1.309050823620000e+02 }, { "Xe_132", 1.319041534570000e+02 },
|
||||
{ "Xe_133", 1.329059107220000e+02 }, { "Xe_134", 1.339053944640000e+02 }, { "Xe_135", 1.349072274950000e+02 }, { "Xe_136", 1.359072187940000e+02 },
|
||||
{ "Xe_137", 1.369115621250000e+02 }, { "Xe_138", 1.379139544750000e+02 }, { "Xe_139", 1.389187929360000e+02 }, { "Xe_140", 1.399216409430000e+02 },
|
||||
{ "Xe_141", 1.409266480490000e+02 }, { "Xe_142", 1.419297095900000e+02 }, { "Xe_143", 1.429351100000000e+02 }, { "Xe_144", 1.439385100000000e+02 },
|
||||
{ "Xe_145", 1.449440700000000e+02 }, { "Xe_146", 1.459477500000000e+02 }, { "Xe_147", 1.469535600000000e+02 }, { "Cs_natural", 1.329054000000000e+02 },
|
||||
{ "Cs_112", 1.119503010000000e+02 }, { "Cs_113", 1.129444932740000e+02 }, { "Cs_114", 1.139414500000000e+02 }, { "Cs_115", 1.149359100000000e+02 },
|
||||
{ "Cs_116", 1.159333670000000e+02 }, { "Cs_117", 1.169286707010000e+02 }, { "Cs_118", 1.179265594940000e+02 }, { "Cs_119", 1.189223773040000e+02 },
|
||||
{ "Cs_120", 1.199206772530000e+02 }, { "Cs_121", 1.209172292090000e+02 }, { "Cs_122", 1.219161134340000e+02 }, { "Cs_123", 1.229129960360000e+02 },
|
||||
{ "Cs_124", 1.239122577980000e+02 }, { "Cs_125", 1.249097282700000e+02 }, { "Cs_126", 1.259094519770000e+02 }, { "Cs_127", 1.269074175250000e+02 },
|
||||
{ "Cs_128", 1.279077488660000e+02 }, { "Cs_129", 1.289060644260000e+02 }, { "Cs_130", 1.299067085520000e+02 }, { "Cs_131", 1.309054639260000e+02 },
|
||||
{ "Cs_132", 1.319064342600000e+02 }, { "Cs_133", 1.329054519320000e+02 }, { "Cs_134", 1.339067184750000e+02 }, { "Cs_135", 1.349059770080000e+02 },
|
||||
{ "Cs_136", 1.359073115760000e+02 }, { "Cs_137", 1.369070894730000e+02 }, { "Cs_138", 1.379110167040000e+02 }, { "Cs_139", 1.389133639990000e+02 },
|
||||
{ "Cs_140", 1.399172823540000e+02 }, { "Cs_141", 1.409200457520000e+02 }, { "Cs_142", 1.419242989270000e+02 }, { "Cs_143", 1.429273517500000e+02 },
|
||||
{ "Cs_144", 1.439320769140000e+02 }, { "Cs_145", 1.449355261700000e+02 }, { "Cs_146", 1.459402894230000e+02 }, { "Cs_147", 1.469441550080000e+02 },
|
||||
{ "Cs_148", 1.479492181530000e+02 }, { "Cs_149", 1.489529300000000e+02 }, { "Cs_150", 1.499581700000000e+02 }, { "Cs_151", 1.509621900000000e+02 },
|
||||
{ "Ba_natural", 1.373300000000000e+02 }, { "Ba_114", 1.139506754050000e+02 }, { "Ba_115", 1.149473700000000e+02 }, { "Ba_116", 1.159413800000000e+02 },
|
||||
{ "Ba_117", 1.169384990000000e+02 }, { "Ba_118", 1.179330400000000e+02 }, { "Ba_119", 1.189306596610000e+02 }, { "Ba_120", 1.199260449740000e+02 },
|
||||
{ "Ba_121", 1.209240544990000e+02 }, { "Ba_122", 1.219199040000000e+02 }, { "Ba_123", 1.229187810360000e+02 }, { "Ba_124", 1.239150936030000e+02 },
|
||||
{ "Ba_125", 1.249144729120000e+02 }, { "Ba_126", 1.259112501770000e+02 }, { "Ba_127", 1.269110937970000e+02 }, { "Ba_128", 1.279083176980000e+02 },
|
||||
{ "Ba_129", 1.289086794390000e+02 }, { "Ba_130", 1.299063208110000e+02 }, { "Ba_131", 1.309069411180000e+02 }, { "Ba_132", 1.319050612880000e+02 },
|
||||
{ "Ba_133", 1.329060074900000e+02 }, { "Ba_134", 1.339045083830000e+02 }, { "Ba_135", 1.349056885910000e+02 }, { "Ba_136", 1.359045759450000e+02 },
|
||||
{ "Ba_137", 1.369058273840000e+02 }, { "Ba_138", 1.379052472370000e+02 }, { "Ba_139", 1.389088413410000e+02 }, { "Ba_140", 1.399106045050000e+02 },
|
||||
{ "Ba_141", 1.409144110090000e+02 }, { "Ba_142", 1.419164534100000e+02 }, { "Ba_143", 1.429206267190000e+02 }, { "Ba_144", 1.439229528530000e+02 },
|
||||
{ "Ba_145", 1.449276270320000e+02 }, { "Ba_146", 1.459302195720000e+02 }, { "Ba_147", 1.469349450000000e+02 }, { "Ba_148", 1.479377200470000e+02 },
|
||||
{ "Ba_149", 1.489425800000000e+02 }, { "Ba_150", 1.499456800000000e+02 }, { "Ba_151", 1.509508100000000e+02 }, { "Ba_152", 1.519542700000000e+02 },
|
||||
{ "Ba_153", 1.529596100000000e+02 }, { "La_natural", 1.389055000000000e+02 }, { "La_117", 1.169500680000000e+02 }, { "La_118", 1.179467300000000e+02 },
|
||||
{ "La_119", 1.189409900000000e+02 }, { "La_120", 1.199380700000000e+02 }, { "La_121", 1.209330100000000e+02 }, { "La_122", 1.219307100000000e+02 },
|
||||
{ "La_123", 1.229262400000000e+02 }, { "La_124", 1.239245742750000e+02 }, { "La_125", 1.249208160340000e+02 }, { "La_126", 1.259195126670000e+02 },
|
||||
{ "La_127", 1.269163754480000e+02 }, { "La_128", 1.279155851770000e+02 }, { "La_129", 1.289126928150000e+02 }, { "La_130", 1.299123687240000e+02 },
|
||||
{ "La_131", 1.309100700000000e+02 }, { "La_132", 1.319101011450000e+02 }, { "La_133", 1.329082180000000e+02 }, { "La_134", 1.339085140110000e+02 },
|
||||
{ "La_135", 1.349069768440000e+02 }, { "La_136", 1.359076355360000e+02 }, { "La_137", 1.369064935980000e+02 }, { "La_138", 1.379071119300000e+02 },
|
||||
{ "La_139", 1.389063532670000e+02 }, { "La_140", 1.399094776450000e+02 }, { "La_141", 1.409109621520000e+02 }, { "La_142", 1.419140791300000e+02 },
|
||||
{ "La_143", 1.429160627200000e+02 }, { "La_144", 1.439195996470000e+02 }, { "La_145", 1.449216454010000e+02 }, { "La_146", 1.459257934600000e+02 },
|
||||
{ "La_147", 1.469282352840000e+02 }, { "La_148", 1.479322288680000e+02 }, { "La_149", 1.489347340000000e+02 }, { "La_150", 1.499387700000000e+02 },
|
||||
{ "La_151", 1.509417200000000e+02 }, { "La_152", 1.519462500000000e+02 }, { "La_153", 1.529496200000000e+02 }, { "La_154", 1.539545000000000e+02 },
|
||||
{ "La_155", 1.549583500000000e+02 }, { "Ce_natural", 1.401200000000000e+02 }, { "Ce_119", 1.189527600000000e+02 }, { "Ce_120", 1.199466400000000e+02 },
|
||||
{ "Ce_121", 1.209434200000000e+02 }, { "Ce_122", 1.219379100000000e+02 }, { "Ce_123", 1.229354000000000e+02 }, { "Ce_124", 1.239304100000000e+02 },
|
||||
{ "Ce_125", 1.249284400000000e+02 }, { "Ce_126", 1.259239710000000e+02 }, { "Ce_127", 1.269227310000000e+02 }, { "Ce_128", 1.279189110000000e+02 },
|
||||
{ "Ce_129", 1.289181020000000e+02 }, { "Ce_130", 1.299147360000000e+02 }, { "Ce_131", 1.309144220000000e+02 }, { "Ce_132", 1.319114604870000e+02 },
|
||||
{ "Ce_133", 1.329115150200000e+02 }, { "Ce_134", 1.339089248210000e+02 }, { "Ce_135", 1.349091513960000e+02 }, { "Ce_136", 1.359071724220000e+02 },
|
||||
{ "Ce_137", 1.369078055770000e+02 }, { "Ce_138", 1.379059913210000e+02 }, { "Ce_139", 1.389066526510000e+02 }, { "Ce_140", 1.399054387060000e+02 },
|
||||
{ "Ce_141", 1.409082762700000e+02 }, { "Ce_142", 1.419092442050000e+02 }, { "Ce_143", 1.429123859100000e+02 }, { "Ce_144", 1.439136473360000e+02 },
|
||||
{ "Ce_145", 1.449172331350000e+02 }, { "Ce_146", 1.459187590090000e+02 }, { "Ce_147", 1.469226739540000e+02 }, { "Ce_148", 1.479244324100000e+02 },
|
||||
{ "Ce_149", 1.489283998830000e+02 }, { "Ce_150", 1.499304089310000e+02 }, { "Ce_151", 1.509339761960000e+02 }, { "Ce_152", 1.519365400000000e+02 },
|
||||
{ "Ce_153", 1.529405800000000e+02 }, { "Ce_154", 1.539434200000000e+02 }, { "Ce_155", 1.549480400000000e+02 }, { "Ce_156", 1.559512600000000e+02 },
|
||||
{ "Ce_157", 1.569563400000000e+02 }, { "Pr_natural", 1.409077000000000e+02 }, { "Pr_121", 1.209553640000000e+02 }, { "Pr_122", 1.219518100000000e+02 },
|
||||
{ "Pr_123", 1.229459600000000e+02 }, { "Pr_124", 1.239429600000000e+02 }, { "Pr_125", 1.249378300000000e+02 }, { "Pr_126", 1.259353100000000e+02 },
|
||||
{ "Pr_127", 1.269308300000000e+02 }, { "Pr_128", 1.279287910000000e+02 }, { "Pr_129", 1.289250950000000e+02 }, { "Pr_130", 1.299235900000000e+02 },
|
||||
{ "Pr_131", 1.309202590000000e+02 }, { "Pr_132", 1.319192550000000e+02 }, { "Pr_133", 1.329163305320000e+02 }, { "Pr_134", 1.339157117370000e+02 },
|
||||
{ "Pr_135", 1.349131117450000e+02 }, { "Pr_136", 1.359126916110000e+02 }, { "Pr_137", 1.369107054550000e+02 }, { "Pr_138", 1.379107546360000e+02 },
|
||||
{ "Pr_139", 1.389089383990000e+02 }, { "Pr_140", 1.399090758740000e+02 }, { "Pr_141", 1.409076527690000e+02 }, { "Pr_142", 1.419100448060000e+02 },
|
||||
{ "Pr_143", 1.429108169260000e+02 }, { "Pr_144", 1.439133052450000e+02 }, { "Pr_145", 1.449145117000000e+02 }, { "Pr_146", 1.459176443360000e+02 },
|
||||
{ "Pr_147", 1.469189959920000e+02 }, { "Pr_148", 1.479221350260000e+02 }, { "Pr_149", 1.489237176510000e+02 }, { "Pr_150", 1.499266729970000e+02 },
|
||||
{ "Pr_151", 1.509283186180000e+02 }, { "Pr_152", 1.519314992250000e+02 }, { "Pr_153", 1.529338389050000e+02 }, { "Pr_154", 1.539375181530000e+02 },
|
||||
{ "Pr_155", 1.549401200000000e+02 }, { "Pr_156", 1.559442700000000e+02 }, { "Pr_157", 1.569474300000000e+02 }, { "Pr_158", 1.579519800000000e+02 },
|
||||
{ "Pr_159", 1.589555000000000e+02 }, { "Nd_natural", 1.442400000000000e+02 }, { "Nd_124", 1.239522300000000e+02 }, { "Nd_125", 1.249488800000000e+02 },
|
||||
{ "Nd_126", 1.259432200000000e+02 }, { "Nd_127", 1.269405000000000e+02 }, { "Nd_128", 1.279353900000000e+02 }, { "Nd_129", 1.289331880000000e+02 },
|
||||
{ "Nd_130", 1.299285060000000e+02 }, { "Nd_131", 1.309272470000000e+02 }, { "Nd_132", 1.319233212370000e+02 }, { "Nd_133", 1.329223480000000e+02 },
|
||||
{ "Nd_134", 1.339187901810000e+02 }, { "Nd_135", 1.349181811600000e+02 }, { "Nd_136", 1.359149760350000e+02 }, { "Nd_137", 1.369145671370000e+02 },
|
||||
{ "Nd_138", 1.379119499610000e+02 }, { "Nd_139", 1.389119782880000e+02 }, { "Nd_140", 1.399095520000000e+02 }, { "Nd_141", 1.409096098540000e+02 },
|
||||
{ "Nd_142", 1.419077232970000e+02 }, { "Nd_143", 1.429098142900000e+02 }, { "Nd_144", 1.439100872740000e+02 }, { "Nd_145", 1.449125736360000e+02 },
|
||||
{ "Nd_146", 1.459131169390000e+02 }, { "Nd_147", 1.469161004410000e+02 }, { "Nd_148", 1.479168932880000e+02 }, { "Nd_149", 1.489201488420000e+02 },
|
||||
{ "Nd_150", 1.499208908880000e+02 }, { "Nd_151", 1.509238289290000e+02 }, { "Nd_152", 1.519246822190000e+02 }, { "Nd_153", 1.529276982320000e+02 },
|
||||
{ "Nd_154", 1.539294773070000e+02 }, { "Nd_155", 1.549329320000000e+02 }, { "Nd_156", 1.559350181140000e+02 }, { "Nd_157", 1.569390300000000e+02 },
|
||||
{ "Nd_158", 1.579416000000000e+02 }, { "Nd_159", 1.589460900000000e+02 }, { "Nd_160", 1.599490900000000e+02 }, { "Nd_161", 1.609538800000000e+02 },
|
||||
{ "Pm_natural", 1.450000000000000e+02 }, { "Pm_126", 1.259575200000000e+02 }, { "Pm_127", 1.269516300000000e+02 }, { "Pm_128", 1.279484200000000e+02 },
|
||||
{ "Pm_129", 1.289431600000000e+02 }, { "Pm_130", 1.299404500000000e+02 }, { "Pm_131", 1.309358700000000e+02 }, { "Pm_132", 1.319337500000000e+02 },
|
||||
{ "Pm_133", 1.329297820000000e+02 }, { "Pm_134", 1.339283530000000e+02 }, { "Pm_135", 1.349248760000000e+02 }, { "Pm_136", 1.359235658290000e+02 },
|
||||
{ "Pm_137", 1.369204794930000e+02 }, { "Pm_138", 1.379195482810000e+02 }, { "Pm_139", 1.389168040820000e+02 }, { "Pm_140", 1.399160417890000e+02 },
|
||||
{ "Pm_141", 1.409135550540000e+02 }, { "Pm_142", 1.419128744710000e+02 }, { "Pm_143", 1.429109326160000e+02 }, { "Pm_144", 1.439125908430000e+02 },
|
||||
{ "Pm_145", 1.449127490230000e+02 }, { "Pm_146", 1.459146963050000e+02 }, { "Pm_147", 1.469151385450000e+02 }, { "Pm_148", 1.479174746180000e+02 },
|
||||
{ "Pm_149", 1.489183341550000e+02 }, { "Pm_150", 1.499209835610000e+02 }, { "Pm_151", 1.509212069730000e+02 }, { "Pm_152", 1.519234967950000e+02 },
|
||||
{ "Pm_153", 1.529241168890000e+02 }, { "Pm_154", 1.539264639430000e+02 }, { "Pm_155", 1.549281012670000e+02 }, { "Pm_156", 1.559310567360000e+02 },
|
||||
{ "Pm_157", 1.569330393690000e+02 }, { "Pm_158", 1.579365614070000e+02 }, { "Pm_159", 1.589389700000000e+02 }, { "Pm_160", 1.599429900000000e+02 },
|
||||
{ "Pm_161", 1.609458600000000e+02 }, { "Pm_162", 1.619502900000000e+02 }, { "Pm_163", 1.629536800000000e+02 }, { "Sm_natural", 1.504000000000000e+02 },
|
||||
{ "Sm_128", 1.279580800000000e+02 }, { "Sm_129", 1.289546400000000e+02 }, { "Sm_130", 1.299489200000000e+02 }, { "Sm_131", 1.309461100000000e+02 },
|
||||
{ "Sm_132", 1.319406900000000e+02 }, { "Sm_133", 1.329386700000000e+02 }, { "Sm_134", 1.339339700000000e+02 }, { "Sm_135", 1.349325200000000e+02 },
|
||||
{ "Sm_136", 1.359282755270000e+02 }, { "Sm_137", 1.369269717460000e+02 }, { "Sm_138", 1.379232439610000e+02 }, { "Sm_139", 1.389222966050000e+02 },
|
||||
{ "Sm_140", 1.399189946870000e+02 }, { "Sm_141", 1.409184764880000e+02 }, { "Sm_142", 1.419151976410000e+02 }, { "Sm_143", 1.429146283380000e+02 },
|
||||
{ "Sm_144", 1.439119994780000e+02 }, { "Sm_145", 1.449134103530000e+02 }, { "Sm_146", 1.459130409000000e+02 }, { "Sm_147", 1.469148979230000e+02 },
|
||||
{ "Sm_148", 1.479148226740000e+02 }, { "Sm_149", 1.489171847350000e+02 }, { "Sm_150", 1.499172755390000e+02 }, { "Sm_151", 1.509199324090000e+02 },
|
||||
{ "Sm_152", 1.519197324250000e+02 }, { "Sm_153", 1.529220973560000e+02 }, { "Sm_154", 1.539222092730000e+02 }, { "Sm_155", 1.549246401610000e+02 },
|
||||
{ "Sm_156", 1.559255278870000e+02 }, { "Sm_157", 1.569283587170000e+02 }, { "Sm_158", 1.579299913170000e+02 }, { "Sm_159", 1.589332112710000e+02 },
|
||||
{ "Sm_160", 1.599351400000000e+02 }, { "Sm_161", 1.609388300000000e+02 }, { "Sm_162", 1.619412200000000e+02 }, { "Sm_163", 1.629453600000000e+02 },
|
||||
{ "Sm_164", 1.639482800000000e+02 }, { "Sm_165", 1.649529800000000e+02 }, { "Eu_natural", 1.519600000000000e+02 }, { "Eu_130", 1.299635690000000e+02 },
|
||||
{ "Eu_131", 1.309577530000000e+02 }, { "Eu_132", 1.319543700000000e+02 }, { "Eu_133", 1.329492400000000e+02 }, { "Eu_134", 1.339465100000000e+02 },
|
||||
{ "Eu_135", 1.349418200000000e+02 }, { "Eu_136", 1.359396000000000e+02 }, { "Eu_137", 1.369355700000000e+02 }, { "Eu_138", 1.379337090000000e+02 },
|
||||
{ "Eu_139", 1.389297922800000e+02 }, { "Eu_140", 1.399280876070000e+02 }, { "Eu_141", 1.409249307200000e+02 }, { "Eu_142", 1.419234349450000e+02 },
|
||||
{ "Eu_143", 1.429202975090000e+02 }, { "Eu_144", 1.439188168230000e+02 }, { "Eu_145", 1.449162652370000e+02 }, { "Eu_146", 1.459172058170000e+02 },
|
||||
{ "Eu_147", 1.469167461110000e+02 }, { "Eu_148", 1.479180858950000e+02 }, { "Eu_149", 1.489179312380000e+02 }, { "Eu_150", 1.499197018190000e+02 },
|
||||
{ "Eu_151", 1.509198501610000e+02 }, { "Eu_152", 1.519217445340000e+02 }, { "Eu_153", 1.529212303390000e+02 }, { "Eu_154", 1.539229792370000e+02 },
|
||||
{ "Eu_155", 1.549228932600000e+02 }, { "Eu_156", 1.559247522490000e+02 }, { "Eu_157", 1.569254236470000e+02 }, { "Eu_158", 1.579278453020000e+02 },
|
||||
{ "Eu_159", 1.589290888610000e+02 }, { "Eu_160", 1.599319710000000e+02 }, { "Eu_161", 1.609336800000000e+02 }, { "Eu_162", 1.619370400000000e+02 },
|
||||
{ "Eu_163", 1.629392100000000e+02 }, { "Eu_164", 1.639429900000000e+02 }, { "Eu_165", 1.649457200000000e+02 }, { "Eu_166", 1.659499700000000e+02 },
|
||||
{ "Eu_167", 1.669532100000000e+02 }, { "Gd_natural", 1.572500000000000e+02 }, { "Gd_134", 1.339553700000000e+02 }, { "Gd_135", 1.349525700000000e+02 },
|
||||
{ "Gd_136", 1.359473400000000e+02 }, { "Gd_137", 1.369450200000000e+02 }, { "Gd_138", 1.379401200000000e+02 }, { "Gd_139", 1.389382400000000e+02 },
|
||||
{ "Gd_140", 1.399336740000000e+02 }, { "Gd_141", 1.409321260000000e+02 }, { "Gd_142", 1.419281160000000e+02 }, { "Gd_143", 1.429267495100000e+02 },
|
||||
{ "Gd_144", 1.439229630000000e+02 }, { "Gd_145", 1.449217092520000e+02 }, { "Gd_146", 1.459183106080000e+02 }, { "Gd_147", 1.469190944200000e+02 },
|
||||
{ "Gd_148", 1.479181145240000e+02 }, { "Gd_149", 1.489193409150000e+02 }, { "Gd_150", 1.499186588760000e+02 }, { "Gd_151", 1.509203484820000e+02 },
|
||||
{ "Gd_152", 1.519197909960000e+02 }, { "Gd_153", 1.529217495430000e+02 }, { "Gd_154", 1.539208655980000e+02 }, { "Gd_155", 1.549226220220000e+02 },
|
||||
{ "Gd_156", 1.559221227430000e+02 }, { "Gd_157", 1.569239601350000e+02 }, { "Gd_158", 1.579241039120000e+02 }, { "Gd_159", 1.589263886580000e+02 },
|
||||
{ "Gd_160", 1.599270541460000e+02 }, { "Gd_161", 1.609296692110000e+02 }, { "Gd_162", 1.619309847510000e+02 }, { "Gd_163", 1.629339900000000e+02 },
|
||||
{ "Gd_164", 1.639358600000000e+02 }, { "Gd_165", 1.649393800000000e+02 }, { "Gd_166", 1.659416000000000e+02 }, { "Gd_167", 1.669455700000000e+02 },
|
||||
{ "Gd_168", 1.679483600000000e+02 }, { "Gd_169", 1.689528700000000e+02 }, { "Tb_natural", 1.589254000000000e+02 }, { "Tb_136", 1.359613800000000e+02 },
|
||||
{ "Tb_137", 1.369559800000000e+02 }, { "Tb_138", 1.379531600000000e+02 }, { "Tb_139", 1.389482900000000e+02 }, { "Tb_140", 1.399458050490000e+02 },
|
||||
{ "Tb_141", 1.409414480000000e+02 }, { "Tb_142", 1.419387440000000e+02 }, { "Tb_143", 1.429351210000000e+02 }, { "Tb_144", 1.439330450000000e+02 },
|
||||
{ "Tb_145", 1.449292740000000e+02 }, { "Tb_146", 1.459272465840000e+02 }, { "Tb_147", 1.469240445850000e+02 }, { "Tb_148", 1.479242717010000e+02 },
|
||||
{ "Tb_149", 1.489232459090000e+02 }, { "Tb_150", 1.499236596860000e+02 }, { "Tb_151", 1.509231025430000e+02 }, { "Tb_152", 1.519240744380000e+02 },
|
||||
{ "Tb_153", 1.529234345880000e+02 }, { "Tb_154", 1.539246780190000e+02 }, { "Tb_155", 1.549235052360000e+02 }, { "Tb_156", 1.559247472130000e+02 },
|
||||
{ "Tb_157", 1.569240246040000e+02 }, { "Tb_158", 1.579254131370000e+02 }, { "Tb_159", 1.589253467570000e+02 }, { "Tb_160", 1.599271676060000e+02 },
|
||||
{ "Tb_161", 1.609275699190000e+02 }, { "Tb_162", 1.619294882340000e+02 }, { "Tb_163", 1.629306475360000e+02 }, { "Tb_164", 1.639333508380000e+02 },
|
||||
{ "Tb_165", 1.649348800000000e+02 }, { "Tb_166", 1.659379919590000e+02 }, { "Tb_167", 1.669400500000000e+02 }, { "Tb_168", 1.679436400000000e+02 },
|
||||
{ "Tb_169", 1.689462200000000e+02 }, { "Tb_170", 1.699502500000000e+02 }, { "Tb_171", 1.709533000000000e+02 }, { "Dy_natural", 1.625000000000000e+02 },
|
||||
{ "Dy_138", 1.379624900000000e+02 }, { "Dy_139", 1.389595400000000e+02 }, { "Dy_140", 1.399540100000000e+02 }, { "Dy_141", 1.409513500000000e+02 },
|
||||
{ "Dy_142", 1.419463660000000e+02 }, { "Dy_143", 1.429438300000000e+02 }, { "Dy_144", 1.439392540000000e+02 }, { "Dy_145", 1.449374250000000e+02 },
|
||||
{ "Dy_146", 1.459328453690000e+02 }, { "Dy_147", 1.469310915000000e+02 }, { "Dy_148", 1.479271498310000e+02 }, { "Dy_149", 1.489273047870000e+02 },
|
||||
{ "Dy_150", 1.499255851840000e+02 }, { "Dy_151", 1.509261846010000e+02 }, { "Dy_152", 1.519247183000000e+02 }, { "Dy_153", 1.529257646700000e+02 },
|
||||
{ "Dy_154", 1.539244244570000e+02 }, { "Dy_155", 1.549257537750000e+02 }, { "Dy_156", 1.559242831100000e+02 }, { "Dy_157", 1.569254660950000e+02 },
|
||||
{ "Dy_158", 1.579244094870000e+02 }, { "Dy_159", 1.589257392140000e+02 }, { "Dy_160", 1.599251975170000e+02 }, { "Dy_161", 1.609269333640000e+02 },
|
||||
{ "Dy_162", 1.619267984470000e+02 }, { "Dy_163", 1.629287311590000e+02 }, { "Dy_164", 1.639291747510000e+02 }, { "Dy_165", 1.649317033330000e+02 },
|
||||
{ "Dy_166", 1.659328067410000e+02 }, { "Dy_167", 1.669356554620000e+02 }, { "Dy_168", 1.679371287690000e+02 }, { "Dy_169", 1.689403076140000e+02 },
|
||||
{ "Dy_170", 1.699423900000000e+02 }, { "Dy_171", 1.709462000000000e+02 }, { "Dy_172", 1.719487600000000e+02 }, { "Dy_173", 1.729530000000000e+02 },
|
||||
{ "Ho_natural", 1.649304000000000e+02 }, { "Ho_140", 1.399685390000000e+02 }, { "Ho_141", 1.409630980000000e+02 }, { "Ho_142", 1.419597700000000e+02 },
|
||||
{ "Ho_143", 1.429546100000000e+02 }, { "Ho_144", 1.439514800000000e+02 }, { "Ho_145", 1.449472000000000e+02 }, { "Ho_146", 1.459446400000000e+02 },
|
||||
{ "Ho_147", 1.469400560000000e+02 }, { "Ho_148", 1.479377180000000e+02 }, { "Ho_149", 1.489337747710000e+02 }, { "Ho_150", 1.499334961820000e+02 },
|
||||
{ "Ho_151", 1.509316881420000e+02 }, { "Ho_152", 1.519317137140000e+02 }, { "Ho_153", 1.529301987890000e+02 }, { "Ho_154", 1.539306015790000e+02 },
|
||||
{ "Ho_155", 1.549291034910000e+02 }, { "Ho_156", 1.559298390000000e+02 }, { "Ho_157", 1.569282561880000e+02 }, { "Ho_158", 1.579289410070000e+02 },
|
||||
{ "Ho_159", 1.589277119590000e+02 }, { "Ho_160", 1.599287294780000e+02 }, { "Ho_161", 1.609278547760000e+02 }, { "Ho_162", 1.619290955040000e+02 },
|
||||
{ "Ho_163", 1.629287339030000e+02 }, { "Ho_164", 1.639302335070000e+02 }, { "Ho_165", 1.649303220700000e+02 }, { "Ho_166", 1.659322841620000e+02 },
|
||||
{ "Ho_167", 1.669331326330000e+02 }, { "Ho_168", 1.679355157080000e+02 }, { "Ho_169", 1.689368722730000e+02 }, { "Ho_170", 1.699396189290000e+02 },
|
||||
{ "Ho_171", 1.709414651500000e+02 }, { "Ho_172", 1.719448200000000e+02 }, { "Ho_173", 1.729472900000000e+02 }, { "Ho_174", 1.739511500000000e+02 },
|
||||
{ "Ho_175", 1.749540500000000e+02 }, { "Er_natural", 1.672600000000000e+02 }, { "Er_143", 1.429663400000000e+02 }, { "Er_144", 1.439603800000000e+02 },
|
||||
{ "Er_145", 1.449573900000000e+02 }, { "Er_146", 1.459520000000000e+02 }, { "Er_147", 1.469494900000000e+02 }, { "Er_148", 1.479445500000000e+02 },
|
||||
{ "Er_149", 1.489423060000000e+02 }, { "Er_150", 1.499379138390000e+02 }, { "Er_151", 1.509374489030000e+02 }, { "Er_152", 1.519350503890000e+02 },
|
||||
{ "Er_153", 1.529350634920000e+02 }, { "Er_154", 1.539327830810000e+02 }, { "Er_155", 1.549332089490000e+02 }, { "Er_156", 1.559310646980000e+02 },
|
||||
{ "Er_157", 1.569319160000000e+02 }, { "Er_158", 1.579298934740000e+02 }, { "Er_159", 1.589306840660000e+02 }, { "Er_160", 1.599290832920000e+02 },
|
||||
{ "Er_161", 1.609299953090000e+02 }, { "Er_162", 1.619287782640000e+02 }, { "Er_163", 1.629300327490000e+02 }, { "Er_164", 1.639292002290000e+02 },
|
||||
{ "Er_165", 1.649307260030000e+02 }, { "Er_166", 1.659302930610000e+02 }, { "Er_167", 1.669320481590000e+02 }, { "Er_168", 1.679323702240000e+02 },
|
||||
{ "Er_169", 1.689345903640000e+02 }, { "Er_170", 1.699354643120000e+02 }, { "Er_171", 1.709380298080000e+02 }, { "Er_172", 1.719393561130000e+02 },
|
||||
{ "Er_173", 1.729424000000000e+02 }, { "Er_174", 1.739442300000000e+02 }, { "Er_175", 1.749477700000000e+02 }, { "Er_176", 1.759500800000000e+02 },
|
||||
{ "Er_177", 1.769540500000000e+02 }, { "Tm_natural", 1.689342000000000e+02 }, { "Tm_145", 1.449700730000000e+02 }, { "Tm_146", 1.459664250000000e+02 },
|
||||
{ "Tm_147", 1.469609610000000e+02 }, { "Tm_148", 1.479578400000000e+02 }, { "Tm_149", 1.489527200000000e+02 }, { "Tm_150", 1.499499600000000e+02 },
|
||||
{ "Tm_151", 1.509454834900000e+02 }, { "Tm_152", 1.519444220000000e+02 }, { "Tm_153", 1.529420121120000e+02 }, { "Tm_154", 1.539415678080000e+02 },
|
||||
{ "Tm_155", 1.549391994590000e+02 }, { "Tm_156", 1.559389799330000e+02 }, { "Tm_157", 1.569369730000000e+02 }, { "Tm_158", 1.579369795250000e+02 },
|
||||
{ "Tm_159", 1.589349750000000e+02 }, { "Tm_160", 1.599352628010000e+02 }, { "Tm_161", 1.609335490000000e+02 }, { "Tm_162", 1.619339946820000e+02 },
|
||||
{ "Tm_163", 1.629326511240000e+02 }, { "Tm_164", 1.639335600000000e+02 }, { "Tm_165", 1.649324354920000e+02 }, { "Tm_166", 1.659335541310000e+02 },
|
||||
{ "Tm_167", 1.669328516220000e+02 }, { "Tm_168", 1.679341727760000e+02 }, { "Tm_169", 1.689342132500000e+02 }, { "Tm_170", 1.699358013970000e+02 },
|
||||
{ "Tm_171", 1.709364294400000e+02 }, { "Tm_172", 1.719384000440000e+02 }, { "Tm_173", 1.729396036070000e+02 }, { "Tm_174", 1.739421686050000e+02 },
|
||||
{ "Tm_175", 1.749438368530000e+02 }, { "Tm_176", 1.759469946850000e+02 }, { "Tm_177", 1.769490400000000e+02 }, { "Tm_178", 1.779526400000000e+02 },
|
||||
{ "Tm_179", 1.789553400000000e+02 }, { "Yb_natural", 1.730400000000000e+02 }, { "Yb_148", 1.479674200000000e+02 }, { "Yb_149", 1.489640400000000e+02 },
|
||||
{ "Yb_150", 1.499584200000000e+02 }, { "Yb_151", 1.509554007690000e+02 }, { "Yb_152", 1.519502889190000e+02 }, { "Yb_153", 1.529494800000000e+02 },
|
||||
{ "Yb_154", 1.539463939280000e+02 }, { "Yb_155", 1.549457823320000e+02 }, { "Yb_156", 1.559428182150000e+02 }, { "Yb_157", 1.569426278480000e+02 },
|
||||
{ "Yb_158", 1.579398656170000e+02 }, { "Yb_159", 1.589400500990000e+02 }, { "Yb_160", 1.599375523440000e+02 }, { "Yb_161", 1.609379016780000e+02 },
|
||||
{ "Yb_162", 1.619357682100000e+02 }, { "Yb_163", 1.629363343050000e+02 }, { "Yb_164", 1.639344894160000e+02 }, { "Yb_165", 1.649352790000000e+02 },
|
||||
{ "Yb_166", 1.659338820420000e+02 }, { "Yb_167", 1.669349496050000e+02 }, { "Yb_168", 1.679338968950000e+02 }, { "Yb_169", 1.689351898020000e+02 },
|
||||
{ "Yb_170", 1.699347618370000e+02 }, { "Yb_171", 1.709363257990000e+02 }, { "Yb_172", 1.719363814690000e+02 }, { "Yb_173", 1.729382107870000e+02 },
|
||||
{ "Yb_174", 1.739388620890000e+02 }, { "Yb_175", 1.749412764500000e+02 }, { "Yb_176", 1.759425716830000e+02 }, { "Yb_177", 1.769452608220000e+02 },
|
||||
{ "Yb_178", 1.779466466800000e+02 }, { "Yb_179", 1.789501700000000e+02 }, { "Yb_180", 1.799523300000000e+02 }, { "Yb_181", 1.809561500000000e+02 },
|
||||
{ "Lu_natural", 1.749670000000000e+02 }, { "Lu_150", 1.499732280000000e+02 }, { "Lu_151", 1.509675770000000e+02 }, { "Lu_152", 1.519641200000000e+02 },
|
||||
{ "Lu_153", 1.529587673310000e+02 }, { "Lu_154", 1.539575220000000e+02 }, { "Lu_155", 1.549543162160000e+02 }, { "Lu_156", 1.559530325230000e+02 },
|
||||
{ "Lu_157", 1.569500983000000e+02 }, { "Lu_158", 1.579493132830000e+02 }, { "Lu_159", 1.589466287760000e+02 }, { "Lu_160", 1.599460330000000e+02 },
|
||||
{ "Lu_161", 1.609435720000000e+02 }, { "Lu_162", 1.619432772880000e+02 }, { "Lu_163", 1.629411790000000e+02 }, { "Lu_164", 1.639413390000000e+02 },
|
||||
{ "Lu_165", 1.649394067240000e+02 }, { "Lu_166", 1.659398590000000e+02 }, { "Lu_167", 1.669382700000000e+02 }, { "Lu_168", 1.679387391110000e+02 },
|
||||
{ "Lu_169", 1.689376514390000e+02 }, { "Lu_170", 1.699384749680000e+02 }, { "Lu_171", 1.709379131360000e+02 }, { "Lu_172", 1.719390856690000e+02 },
|
||||
{ "Lu_173", 1.729389306020000e+02 }, { "Lu_174", 1.739403374800000e+02 }, { "Lu_175", 1.749407718190000e+02 }, { "Lu_176", 1.759426863100000e+02 },
|
||||
{ "Lu_177", 1.769437580550000e+02 }, { "Lu_178", 1.779459545590000e+02 }, { "Lu_179", 1.789473274430000e+02 }, { "Lu_180", 1.799498811600000e+02 },
|
||||
{ "Lu_181", 1.809519700000000e+02 }, { "Lu_182", 1.819550400000000e+02 }, { "Lu_183", 1.829575700000000e+02 }, { "Lu_184", 1.839609100000000e+02 },
|
||||
{ "Hf_natural", 1.784900000000000e+02 }, { "Hf_153", 1.529706900000000e+02 }, { "Hf_154", 1.539648600000000e+02 }, { "Hf_155", 1.549633900000000e+02 },
|
||||
{ "Hf_156", 1.559593640250000e+02 }, { "Hf_157", 1.569583960000000e+02 }, { "Hf_158", 1.579547993660000e+02 }, { "Hf_159", 1.589539948700000e+02 },
|
||||
{ "Hf_160", 1.599506843790000e+02 }, { "Hf_161", 1.609502748440000e+02 }, { "Hf_162", 1.619472104980000e+02 }, { "Hf_163", 1.629470890000000e+02 },
|
||||
{ "Hf_164", 1.639443672840000e+02 }, { "Hf_165", 1.649445670000000e+02 }, { "Hf_166", 1.659421800000000e+02 }, { "Hf_167", 1.669426000000000e+02 },
|
||||
{ "Hf_168", 1.679405680000000e+02 }, { "Hf_169", 1.689412590000000e+02 }, { "Hf_170", 1.699396090000000e+02 }, { "Hf_171", 1.709404920000000e+02 },
|
||||
{ "Hf_172", 1.719394483010000e+02 }, { "Hf_173", 1.729405130000000e+02 }, { "Hf_174", 1.739400461780000e+02 }, { "Hf_175", 1.749415091810000e+02 },
|
||||
{ "Hf_176", 1.759414086310000e+02 }, { "Hf_177", 1.769432206510000e+02 }, { "Hf_178", 1.779436987660000e+02 }, { "Hf_179", 1.789458161450000e+02 },
|
||||
{ "Hf_180", 1.799465499530000e+02 }, { "Hf_181", 1.809491012460000e+02 }, { "Hf_182", 1.819505540960000e+02 }, { "Hf_183", 1.829535304390000e+02 },
|
||||
{ "Hf_184", 1.839554465150000e+02 }, { "Hf_185", 1.849588200000000e+02 }, { "Hf_186", 1.859608900000000e+02 }, { "Hf_187", 1.869645900000000e+02 },
|
||||
{ "Hf_188", 1.879668500000000e+02 }, { "Ta_natural", 1.809479000000000e+02 }, { "Ta_155", 1.549745920000000e+02 }, { "Ta_156", 1.559723030000000e+02 },
|
||||
{ "Ta_157", 1.569681924450000e+02 }, { "Ta_158", 1.579666990000000e+02 }, { "Ta_159", 1.589630181730000e+02 }, { "Ta_160", 1.599614860560000e+02 },
|
||||
{ "Ta_161", 1.609584170000000e+02 }, { "Ta_162", 1.619572918590000e+02 }, { "Ta_163", 1.629543302710000e+02 }, { "Ta_164", 1.639535340000000e+02 },
|
||||
{ "Ta_165", 1.649507725140000e+02 }, { "Ta_166", 1.659505120000000e+02 }, { "Ta_167", 1.669480930000000e+02 }, { "Ta_168", 1.679480470000000e+02 },
|
||||
{ "Ta_169", 1.689460110000000e+02 }, { "Ta_170", 1.699461750000000e+02 }, { "Ta_171", 1.709444760000000e+02 }, { "Ta_172", 1.719448950000000e+02 },
|
||||
{ "Ta_173", 1.729437500000000e+02 }, { "Ta_174", 1.739444540000000e+02 }, { "Ta_175", 1.749437370000000e+02 }, { "Ta_176", 1.759448570000000e+02 },
|
||||
{ "Ta_177", 1.769444724030000e+02 }, { "Ta_178", 1.779457782210000e+02 }, { "Ta_179", 1.789459295350000e+02 }, { "Ta_180", 1.799474648310000e+02 },
|
||||
{ "Ta_181", 1.809479957630000e+02 }, { "Ta_182", 1.819501518490000e+02 }, { "Ta_183", 1.829513726160000e+02 }, { "Ta_184", 1.839540079660000e+02 },
|
||||
{ "Ta_185", 1.849555593750000e+02 }, { "Ta_186", 1.859585520230000e+02 }, { "Ta_187", 1.869605300000000e+02 }, { "Ta_188", 1.879637000000000e+02 },
|
||||
{ "Ta_189", 1.889658300000000e+02 }, { "Ta_190", 1.899692300000000e+02 }, { "W_natural", 1.838500000000000e+02 }, { "W_158", 1.579745620000000e+02 },
|
||||
{ "W_159", 1.589729180000000e+02 }, { "W_160", 1.599684788050000e+02 }, { "W_161", 1.609673570000000e+02 }, { "W_162", 1.619634974170000e+02 },
|
||||
{ "W_163", 1.629625235420000e+02 }, { "W_164", 1.639589543820000e+02 }, { "W_165", 1.649582799490000e+02 }, { "W_166", 1.659550272530000e+02 },
|
||||
{ "W_167", 1.669548160140000e+02 }, { "W_168", 1.679518083940000e+02 }, { "W_169", 1.689517787900000e+02 }, { "W_170", 1.699492284820000e+02 },
|
||||
{ "W_171", 1.709494510000000e+02 }, { "W_172", 1.719472920000000e+02 }, { "W_173", 1.729476890000000e+02 }, { "W_174", 1.739460790000000e+02 },
|
||||
{ "W_175", 1.749467170000000e+02 }, { "W_176", 1.759456340000000e+02 }, { "W_177", 1.769466430000000e+02 }, { "W_178", 1.779458762360000e+02 },
|
||||
{ "W_179", 1.789470704470000e+02 }, { "W_180", 1.799467044590000e+02 }, { "W_181", 1.809481972480000e+02 }, { "W_182", 1.819482041560000e+02 },
|
||||
{ "W_183", 1.829502229510000e+02 }, { "W_184", 1.839509311880000e+02 }, { "W_185", 1.849534192640000e+02 }, { "W_186", 1.859543641270000e+02 },
|
||||
{ "W_187", 1.869571604660000e+02 }, { "W_188", 1.879584891050000e+02 }, { "W_189", 1.889619128680000e+02 }, { "W_190", 1.899631813780000e+02 },
|
||||
{ "W_191", 1.909666000000000e+02 }, { "W_192", 1.919681700000000e+02 }, { "Re_natural", 1.862070000000000e+02 }, { "Re_160", 1.599821150000000e+02 },
|
||||
{ "Re_161", 1.609775891190000e+02 }, { "Re_162", 1.619760020000000e+02 }, { "Re_163", 1.629720805350000e+02 }, { "Re_164", 1.639703230000000e+02 },
|
||||
{ "Re_165", 1.649670885570000e+02 }, { "Re_166", 1.659658080000000e+02 }, { "Re_167", 1.669626010000000e+02 }, { "Re_168", 1.679615726080000e+02 },
|
||||
{ "Re_169", 1.689587910960000e+02 }, { "Re_170", 1.699582200710000e+02 }, { "Re_171", 1.709557160000000e+02 }, { "Re_172", 1.719554229610000e+02 },
|
||||
{ "Re_173", 1.729532430000000e+02 }, { "Re_174", 1.739531150000000e+02 }, { "Re_175", 1.749513810000000e+02 }, { "Re_176", 1.759516230000000e+02 },
|
||||
{ "Re_177", 1.769503280000000e+02 }, { "Re_178", 1.779509890000000e+02 }, { "Re_179", 1.789499876410000e+02 }, { "Re_180", 1.799507890840000e+02 },
|
||||
{ "Re_181", 1.809500679160000e+02 }, { "Re_182", 1.819512100800000e+02 }, { "Re_183", 1.829508198410000e+02 }, { "Re_184", 1.839525207560000e+02 },
|
||||
{ "Re_185", 1.849529549820000e+02 }, { "Re_186", 1.859549860840000e+02 }, { "Re_187", 1.869557531090000e+02 }, { "Re_188", 1.879581144380000e+02 },
|
||||
{ "Re_189", 1.889592290070000e+02 }, { "Re_190", 1.899618179770000e+02 }, { "Re_191", 1.909631252420000e+02 }, { "Re_192", 1.919659600000000e+02 },
|
||||
{ "Re_193", 1.929674700000000e+02 }, { "Re_194", 1.939704200000000e+02 }, { "Os_natural", 1.902000000000000e+02 }, { "Os_162", 1.619844310000000e+02 },
|
||||
{ "Os_163", 1.629826900000000e+02 }, { "Os_164", 1.639780356490000e+02 }, { "Os_165", 1.649767620000000e+02 }, { "Os_166", 1.659726907530000e+02 },
|
||||
{ "Os_167", 1.669715479690000e+02 }, { "Os_168", 1.679678036780000e+02 }, { "Os_169", 1.689670192700000e+02 }, { "Os_170", 1.699635770280000e+02 },
|
||||
{ "Os_171", 1.709631848190000e+02 }, { "Os_172", 1.719600233030000e+02 }, { "Os_173", 1.729598084090000e+02 }, { "Os_174", 1.739570622020000e+02 },
|
||||
{ "Os_175", 1.749569458350000e+02 }, { "Os_176", 1.759548060000000e+02 }, { "Os_177", 1.769549653240000e+02 }, { "Os_178", 1.779532512410000e+02 },
|
||||
{ "Os_179", 1.789538160170000e+02 }, { "Os_180", 1.799523788030000e+02 }, { "Os_181", 1.809532440000000e+02 }, { "Os_182", 1.819521101860000e+02 },
|
||||
{ "Os_183", 1.829531261020000e+02 }, { "Os_184", 1.839524890710000e+02 }, { "Os_185", 1.849540422650000e+02 }, { "Os_186", 1.859538381580000e+02 },
|
||||
{ "Os_187", 1.869557504580000e+02 }, { "Os_188", 1.879558382280000e+02 }, { "Os_189", 1.889581474700000e+02 }, { "Os_190", 1.899584470480000e+02 },
|
||||
{ "Os_191", 1.909609297180000e+02 }, { "Os_192", 1.919614806900000e+02 }, { "Os_193", 1.929641515630000e+02 }, { "Os_194", 1.939651820830000e+02 },
|
||||
{ "Os_195", 1.949681266610000e+02 }, { "Os_196", 1.959696393330000e+02 }, { "Ir_natural", 1.922200000000000e+02 }, { "Ir_164", 1.639922010000000e+02 },
|
||||
{ "Ir_165", 1.649875200000000e+02 }, { "Ir_166", 1.659858240000000e+02 }, { "Ir_167", 1.669816651560000e+02 }, { "Ir_168", 1.679798810000000e+02 },
|
||||
{ "Ir_169", 1.689762949420000e+02 }, { "Ir_170", 1.699749650000000e+02 }, { "Ir_171", 1.709716260420000e+02 }, { "Ir_172", 1.719704560000000e+02 },
|
||||
{ "Ir_173", 1.729675017390000e+02 }, { "Ir_174", 1.739668610450000e+02 }, { "Ir_175", 1.749641128950000e+02 }, { "Ir_176", 1.759636486880000e+02 },
|
||||
{ "Ir_177", 1.769613015000000e+02 }, { "Ir_178", 1.779610820000000e+02 }, { "Ir_179", 1.789591222660000e+02 }, { "Ir_180", 1.799592294460000e+02 },
|
||||
{ "Ir_181", 1.809576252970000e+02 }, { "Ir_182", 1.819580762960000e+02 }, { "Ir_183", 1.829568464580000e+02 }, { "Ir_184", 1.839574760000000e+02 },
|
||||
{ "Ir_185", 1.849566980000000e+02 }, { "Ir_186", 1.859579461040000e+02 }, { "Ir_187", 1.869573633610000e+02 }, { "Ir_188", 1.879588531210000e+02 },
|
||||
{ "Ir_189", 1.889587189350000e+02 }, { "Ir_190", 1.899605459680000e+02 }, { "Ir_191", 1.909605940460000e+02 }, { "Ir_192", 1.919626050120000e+02 },
|
||||
{ "Ir_193", 1.929629264300000e+02 }, { "Ir_194", 1.939650783780000e+02 }, { "Ir_195", 1.949659795730000e+02 }, { "Ir_196", 1.959683965420000e+02 },
|
||||
{ "Ir_197", 1.969696532850000e+02 }, { "Ir_198", 1.979722800000000e+02 }, { "Ir_199", 1.989738045830000e+02 }, { "Pt_natural", 1.950900000000000e+02 },
|
||||
{ "Pt_166", 1.659948550000000e+02 }, { "Pt_167", 1.669929790000000e+02 }, { "Pt_168", 1.679881507420000e+02 }, { "Pt_169", 1.689867150000000e+02 },
|
||||
{ "Pt_170", 1.699824952890000e+02 }, { "Pt_171", 1.709812445420000e+02 }, { "Pt_172", 1.719773471280000e+02 }, { "Pt_173", 1.729764447540000e+02 },
|
||||
{ "Pt_174", 1.739728187670000e+02 }, { "Pt_175", 1.749724205520000e+02 }, { "Pt_176", 1.759689446220000e+02 }, { "Pt_177", 1.769684694810000e+02 },
|
||||
{ "Pt_178", 1.779656487240000e+02 }, { "Pt_179", 1.789653634040000e+02 }, { "Pt_180", 1.799630314770000e+02 }, { "Pt_181", 1.809630972850000e+02 },
|
||||
{ "Pt_182", 1.819611706560000e+02 }, { "Pt_183", 1.829615967030000e+02 }, { "Pt_184", 1.839599222510000e+02 }, { "Pt_185", 1.849606190000000e+02 },
|
||||
{ "Pt_186", 1.859593508130000e+02 }, { "Pt_187", 1.869605870000000e+02 }, { "Pt_188", 1.879593953910000e+02 }, { "Pt_189", 1.889608336860000e+02 },
|
||||
{ "Pt_190", 1.899599316550000e+02 }, { "Pt_191", 1.909616766610000e+02 }, { "Pt_192", 1.919610380050000e+02 }, { "Pt_193", 1.929629874010000e+02 },
|
||||
{ "Pt_194", 1.939626802530000e+02 }, { "Pt_195", 1.949647911340000e+02 }, { "Pt_196", 1.959649515210000e+02 }, { "Pt_197", 1.969673401820000e+02 },
|
||||
{ "Pt_198", 1.979678927900000e+02 }, { "Pt_199", 1.989705930940000e+02 }, { "Pt_200", 1.999714406770000e+02 }, { "Pt_201", 2.009745128680000e+02 },
|
||||
{ "Pt_202", 2.019757400000000e+02 }, { "Au_natural", 1.969665000000000e+02 }, { "Au_169", 1.689980800000000e+02 }, { "Au_170", 1.699961220000000e+02 },
|
||||
{ "Au_171", 1.709918788810000e+02 }, { "Au_172", 1.719900350000000e+02 }, { "Au_173", 1.729862373800000e+02 }, { "Au_174", 1.739847610000000e+02 },
|
||||
{ "Au_175", 1.749812741070000e+02 }, { "Au_176", 1.759800990000000e+02 }, { "Au_177", 1.769768649080000e+02 }, { "Au_178", 1.779760319200000e+02 },
|
||||
{ "Au_179", 1.789732128120000e+02 }, { "Au_180", 1.799725211240000e+02 }, { "Au_181", 1.809700790480000e+02 }, { "Au_182", 1.819696178740000e+02 },
|
||||
{ "Au_183", 1.829675930340000e+02 }, { "Au_184", 1.839674515240000e+02 }, { "Au_185", 1.849657894110000e+02 }, { "Au_186", 1.859659527030000e+02 },
|
||||
{ "Au_187", 1.869645675410000e+02 }, { "Au_188", 1.879653236610000e+02 }, { "Au_189", 1.889639482860000e+02 }, { "Au_190", 1.899647003390000e+02 },
|
||||
{ "Au_191", 1.909637042250000e+02 }, { "Au_192", 1.919648129530000e+02 }, { "Au_193", 1.929641497150000e+02 }, { "Au_194", 1.939653652500000e+02 },
|
||||
{ "Au_195", 1.949650346400000e+02 }, { "Au_196", 1.959665698130000e+02 }, { "Au_197", 1.969665686620000e+02 }, { "Au_198", 1.979682423030000e+02 },
|
||||
{ "Au_199", 1.989687651930000e+02 }, { "Au_200", 1.999707256470000e+02 }, { "Au_201", 2.009716572400000e+02 }, { "Au_202", 2.019738058380000e+02 },
|
||||
{ "Au_203", 2.029751545420000e+02 }, { "Au_204", 2.039777240000000e+02 }, { "Au_205", 2.049798700000000e+02 }, { "Hg_natural", 2.005900000000000e+02 },
|
||||
{ "Hg_171", 1.710037600000000e+02 }, { "Hg_172", 1.719988326860000e+02 }, { "Hg_173", 1.729972420000000e+02 }, { "Hg_174", 1.739928636950000e+02 },
|
||||
{ "Hg_175", 1.749914232700000e+02 }, { "Hg_176", 1.759873545800000e+02 }, { "Hg_177", 1.769862791580000e+02 }, { "Hg_178", 1.779824831430000e+02 },
|
||||
{ "Hg_179", 1.789818338610000e+02 }, { "Hg_180", 1.799782663940000e+02 }, { "Hg_181", 1.809778193110000e+02 }, { "Hg_182", 1.819746899640000e+02 },
|
||||
{ "Hg_183", 1.829744498410000e+02 }, { "Hg_184", 1.839717130510000e+02 }, { "Hg_185", 1.849718990860000e+02 }, { "Hg_186", 1.859693617900000e+02 },
|
||||
{ "Hg_187", 1.869698142360000e+02 }, { "Hg_188", 1.879675770490000e+02 }, { "Hg_189", 1.889681900340000e+02 }, { "Hg_190", 1.899663224490000e+02 },
|
||||
{ "Hg_191", 1.909671571050000e+02 }, { "Hg_192", 1.919656343270000e+02 }, { "Hg_193", 1.929666654210000e+02 }, { "Hg_194", 1.939654394090000e+02 },
|
||||
{ "Hg_195", 1.949667201130000e+02 }, { "Hg_196", 1.959658326490000e+02 }, { "Hg_197", 1.969672129080000e+02 }, { "Hg_198", 1.979667690320000e+02 },
|
||||
{ "Hg_199", 1.989682799320000e+02 }, { "Hg_200", 1.999683260040000e+02 }, { "Hg_201", 2.009703022680000e+02 }, { "Hg_202", 2.019706430110000e+02 },
|
||||
{ "Hg_203", 2.029728724840000e+02 }, { "Hg_204", 2.039734939330000e+02 }, { "Hg_205", 2.049760733860000e+02 }, { "Hg_206", 2.059775140660000e+02 },
|
||||
{ "Hg_207", 2.069825885450000e+02 }, { "Hg_208", 2.079859400000000e+02 }, { "Hg_209", 2.089910400000000e+02 }, { "Hg_210", 2.099945100000000e+02 },
|
||||
{ "Tl_natural", 2.043700000000000e+02 }, { "Tl_176", 1.760005900000000e+02 }, { "Tl_177", 1.769964272860000e+02 }, { "Tl_178", 1.779948970000000e+02 },
|
||||
{ "Tl_179", 1.789910890820000e+02 }, { "Tl_180", 1.799899060000000e+02 }, { "Tl_181", 1.809862574470000e+02 }, { "Tl_182", 1.819856671040000e+02 },
|
||||
{ "Tl_183", 1.829821928020000e+02 }, { "Tl_184", 1.839818731220000e+02 }, { "Tl_185", 1.849787913050000e+02 }, { "Tl_186", 1.859783250000000e+02 },
|
||||
{ "Tl_187", 1.869759058970000e+02 }, { "Tl_188", 1.879760097820000e+02 }, { "Tl_189", 1.889735884280000e+02 }, { "Tl_190", 1.899738771490000e+02 },
|
||||
{ "Tl_191", 1.909717861540000e+02 }, { "Tl_192", 1.919722250000000e+02 }, { "Tl_193", 1.929706720000000e+02 }, { "Tl_194", 1.939712000000000e+02 },
|
||||
{ "Tl_195", 1.949697743350000e+02 }, { "Tl_196", 1.959704811510000e+02 }, { "Tl_197", 1.969695745110000e+02 }, { "Tl_198", 1.979704834950000e+02 },
|
||||
{ "Tl_199", 1.989698770000000e+02 }, { "Tl_200", 1.999709626720000e+02 }, { "Tl_201", 2.009708188910000e+02 }, { "Tl_202", 2.019721058080000e+02 },
|
||||
{ "Tl_203", 2.029723442200000e+02 }, { "Tl_204", 2.039738635220000e+02 }, { "Tl_205", 2.049744275410000e+02 }, { "Tl_206", 2.059761103200000e+02 },
|
||||
{ "Tl_207", 2.069774194290000e+02 }, { "Tl_208", 2.079820187000000e+02 }, { "Tl_209", 2.089853589520000e+02 }, { "Tl_210", 2.099900736890000e+02 },
|
||||
{ "Tl_211", 2.109934770000000e+02 }, { "Tl_212", 2.119982280000000e+02 }, { "Pb_natural", 2.072000000000000e+02 }, { "Pb_178", 1.780038301910000e+02 },
|
||||
{ "Pb_179", 1.790021500000000e+02 }, { "Pb_180", 1.799979181730000e+02 }, { "Pb_181", 1.809966239580000e+02 }, { "Pb_182", 1.819926718420000e+02 },
|
||||
{ "Pb_183", 1.829918746290000e+02 }, { "Pb_184", 1.839881423390000e+02 }, { "Pb_185", 1.849876099440000e+02 }, { "Pb_186", 1.859842389450000e+02 },
|
||||
{ "Pb_187", 1.869839183700000e+02 }, { "Pb_188", 1.879808743380000e+02 }, { "Pb_189", 1.889808070000000e+02 }, { "Pb_190", 1.899780815170000e+02 },
|
||||
{ "Pb_191", 1.909782650000000e+02 }, { "Pb_192", 1.919757851710000e+02 }, { "Pb_193", 1.929761732340000e+02 }, { "Pb_194", 1.939740120700000e+02 },
|
||||
{ "Pb_195", 1.949745420500000e+02 }, { "Pb_196", 1.959727741090000e+02 }, { "Pb_197", 1.969734311240000e+02 }, { "Pb_198", 1.979720339590000e+02 },
|
||||
{ "Pb_199", 1.989729166500000e+02 }, { "Pb_200", 1.999718266750000e+02 }, { "Pb_201", 2.009728845110000e+02 }, { "Pb_202", 2.019721591330000e+02 },
|
||||
{ "Pb_203", 2.029733905210000e+02 }, { "Pb_204", 2.039730435890000e+02 }, { "Pb_205", 2.049744817550000e+02 }, { "Pb_206", 2.059744652780000e+02 },
|
||||
{ "Pb_207", 2.069758968870000e+02 }, { "Pb_208", 2.079766520710000e+02 }, { "Pb_209", 2.089810901200000e+02 }, { "Pb_210", 2.099841885270000e+02 },
|
||||
{ "Pb_211", 2.109887369640000e+02 }, { "Pb_212", 2.119918975430000e+02 }, { "Pb_213", 2.129965814990000e+02 }, { "Pb_214", 2.139998054080000e+02 },
|
||||
{ "Pb_215", 2.150048070000000e+02 }, { "Bi_natural", 2.089804000000000e+02 }, { "Bi_184", 1.840011240000000e+02 }, { "Bi_185", 1.849976250000000e+02 },
|
||||
{ "Bi_186", 1.859965976250000e+02 }, { "Bi_187", 1.869931578350000e+02 }, { "Bi_188", 1.879922651540000e+02 }, { "Bi_189", 1.889891990120000e+02 },
|
||||
{ "Bi_190", 1.899882951290000e+02 }, { "Bi_191", 1.909857861190000e+02 }, { "Bi_192", 1.919854579540000e+02 }, { "Bi_193", 1.929829597710000e+02 },
|
||||
{ "Bi_194", 1.939828339600000e+02 }, { "Bi_195", 1.949806507370000e+02 }, { "Bi_196", 1.959806665090000e+02 }, { "Bi_197", 1.969788644540000e+02 },
|
||||
{ "Bi_198", 1.979792060000000e+02 }, { "Bi_199", 1.989776719610000e+02 }, { "Bi_200", 1.999781318290000e+02 }, { "Bi_201", 2.009770090360000e+02 },
|
||||
{ "Bi_202", 2.019777423240000e+02 }, { "Bi_203", 2.029768760010000e+02 }, { "Bi_204", 2.039778127360000e+02 }, { "Bi_205", 2.049773893660000e+02 },
|
||||
{ "Bi_206", 2.059784991300000e+02 }, { "Bi_207", 2.069784706790000e+02 }, { "Bi_208", 2.079797421960000e+02 }, { "Bi_209", 2.089803987340000e+02 },
|
||||
{ "Bi_210", 2.099841203710000e+02 }, { "Bi_211", 2.109872694600000e+02 }, { "Bi_212", 2.119912857240000e+02 }, { "Bi_213", 2.129943846660000e+02 },
|
||||
{ "Bi_214", 2.139987115390000e+02 }, { "Bi_215", 2.150017697760000e+02 }, { "Bi_216", 2.160063059430000e+02 }, { "Bi_217", 2.170094700000000e+02 },
|
||||
{ "Bi_218", 2.180143160000000e+02 }, { "Po_natural", 2.090000000000000e+02 }, { "Po_188", 1.879994220480000e+02 }, { "Po_189", 1.889984805620000e+02 },
|
||||
{ "Po_190", 1.899951011850000e+02 }, { "Po_191", 1.909945744850000e+02 }, { "Po_192", 1.919913351490000e+02 }, { "Po_193", 1.929910252750000e+02 },
|
||||
{ "Po_194", 1.939881856060000e+02 }, { "Po_195", 1.949881107280000e+02 }, { "Po_196", 1.959855345800000e+02 }, { "Po_197", 1.969856596300000e+02 },
|
||||
{ "Po_198", 1.979833886160000e+02 }, { "Po_199", 1.989836660630000e+02 }, { "Po_200", 1.999817986040000e+02 }, { "Po_201", 2.009822597640000e+02 },
|
||||
{ "Po_202", 2.019807575410000e+02 }, { "Po_203", 2.029814201030000e+02 }, { "Po_204", 2.039803181210000e+02 }, { "Po_205", 2.049812033220000e+02 },
|
||||
{ "Po_206", 2.059804810990000e+02 }, { "Po_207", 2.069815931730000e+02 }, { "Po_208", 2.079812457020000e+02 }, { "Po_209", 2.089824304350000e+02 },
|
||||
{ "Po_210", 2.099828736730000e+02 }, { "Po_211", 2.109866531540000e+02 }, { "Po_212", 2.119888679690000e+02 }, { "Po_213", 2.129928572800000e+02 },
|
||||
{ "Po_214", 2.139952013500000e+02 }, { "Po_215", 2.149994199880000e+02 }, { "Po_216", 2.160019150350000e+02 }, { "Po_217", 2.170063347960000e+02 },
|
||||
{ "Po_218", 2.180089730370000e+02 }, { "Po_219", 2.190137440000000e+02 }, { "Po_220", 2.200166020000000e+02 }, { "At_natural", 2.100000000000000e+02 },
|
||||
{ "At_193", 1.929998431120000e+02 }, { "At_194", 1.939987250850000e+02 }, { "At_195", 1.949962680980000e+02 }, { "At_196", 1.959957880770000e+02 },
|
||||
{ "At_197", 1.969931892150000e+02 }, { "At_198", 1.979928372020000e+02 }, { "At_199", 1.989905322540000e+02 }, { "At_200", 1.999903512640000e+02 },
|
||||
{ "At_201", 2.009884169990000e+02 }, { "At_202", 2.019886302360000e+02 }, { "At_203", 2.029869419840000e+02 }, { "At_204", 2.039872513260000e+02 },
|
||||
{ "At_205", 2.049860744830000e+02 }, { "At_206", 2.059866670360000e+02 }, { "At_207", 2.069857835020000e+02 }, { "At_208", 2.079865899770000e+02 },
|
||||
{ "At_209", 2.089861731430000e+02 }, { "At_210", 2.099871477100000e+02 }, { "At_211", 2.109874962710000e+02 }, { "At_212", 2.119907447710000e+02 },
|
||||
{ "At_213", 2.129929366460000e+02 }, { "At_214", 2.139963717330000e+02 }, { "At_215", 2.149986525700000e+02 }, { "At_216", 2.160024232570000e+02 },
|
||||
{ "At_217", 2.170047188220000e+02 }, { "At_218", 2.180086943360000e+02 }, { "At_219", 2.190111616910000e+02 }, { "At_220", 2.200154076820000e+02 },
|
||||
{ "At_221", 2.210180500000000e+02 }, { "At_222", 2.220223300000000e+02 }, { "At_223", 2.230251900000000e+02 }, { "Rn_natural", 2.220000000000000e+02 },
|
||||
{ "Rn_195", 1.950054376960000e+02 }, { "Rn_196", 1.960021152230000e+02 }, { "Rn_197", 1.970015843510000e+02 }, { "Rn_198", 1.979986786630000e+02 },
|
||||
{ "Rn_199", 1.989983702970000e+02 }, { "Rn_200", 1.999956993000000e+02 }, { "Rn_201", 2.009956283350000e+02 }, { "Rn_202", 2.019932634920000e+02 },
|
||||
{ "Rn_203", 2.029933866870000e+02 }, { "Rn_204", 2.039914287400000e+02 }, { "Rn_205", 2.049917187990000e+02 }, { "Rn_206", 2.059902141040000e+02 },
|
||||
{ "Rn_207", 2.069907342250000e+02 }, { "Rn_208", 2.079896424700000e+02 }, { "Rn_209", 2.089904147420000e+02 }, { "Rn_210", 2.099896962160000e+02 },
|
||||
{ "Rn_211", 2.109906005230000e+02 }, { "Rn_212", 2.119907035290000e+02 }, { "Rn_213", 2.129938826680000e+02 }, { "Rn_214", 2.139953625540000e+02 },
|
||||
{ "Rn_215", 2.149987454830000e+02 }, { "Rn_216", 2.160002743700000e+02 }, { "Rn_217", 2.170039276750000e+02 }, { "Rn_218", 2.180056012560000e+02 },
|
||||
{ "Rn_219", 2.190094802040000e+02 }, { "Rn_220", 2.200113939810000e+02 }, { "Rn_221", 2.210155367820000e+02 }, { "Rn_222", 2.220175777380000e+02 },
|
||||
{ "Rn_223", 2.230217900000000e+02 }, { "Rn_224", 2.240240900000000e+02 }, { "Rn_225", 2.250284400000000e+02 }, { "Rn_226", 2.260308900000000e+02 },
|
||||
{ "Rn_227", 2.270354070000000e+02 }, { "Rn_228", 2.280379860000000e+02 }, { "Fr_natural", 2.230000000000000e+02 }, { "Fr_199", 1.990072581470000e+02 },
|
||||
{ "Fr_200", 2.000065724900000e+02 }, { "Fr_201", 2.010038608670000e+02 }, { "Fr_202", 2.020033728470000e+02 }, { "Fr_203", 2.030009246470000e+02 },
|
||||
{ "Fr_204", 2.040006532040000e+02 }, { "Fr_205", 2.049985939600000e+02 }, { "Fr_206", 2.059986660660000e+02 }, { "Fr_207", 2.069969494140000e+02 },
|
||||
{ "Fr_208", 2.079971387830000e+02 }, { "Fr_209", 2.089959535550000e+02 }, { "Fr_210", 2.099964077380000e+02 }, { "Fr_211", 2.109955365440000e+02 },
|
||||
{ "Fr_212", 2.119962022440000e+02 }, { "Fr_213", 2.129961890810000e+02 }, { "Fr_214", 2.139989711450000e+02 }, { "Fr_215", 2.150003414970000e+02 },
|
||||
{ "Fr_216", 2.160031979900000e+02 }, { "Fr_217", 2.170046319510000e+02 }, { "Fr_218", 2.180075783220000e+02 }, { "Fr_219", 2.190092521490000e+02 },
|
||||
{ "Fr_220", 2.200123274050000e+02 }, { "Fr_221", 2.210142547620000e+02 }, { "Fr_222", 2.220175517300000e+02 }, { "Fr_223", 2.230197358570000e+02 },
|
||||
{ "Fr_224", 2.240232499510000e+02 }, { "Fr_225", 2.250255654140000e+02 }, { "Fr_226", 2.260293862310000e+02 }, { "Fr_227", 2.270318359380000e+02 },
|
||||
{ "Fr_228", 2.280357290000000e+02 }, { "Fr_229", 2.290384502280000e+02 }, { "Fr_230", 2.300425100000000e+02 }, { "Fr_231", 2.310454400000000e+02 },
|
||||
{ "Fr_232", 2.320497720000000e+02 }, { "Ra_natural", 2.260000000000000e+02 }, { "Ra_202", 2.020098906860000e+02 }, { "Ra_203", 2.030092716190000e+02 },
|
||||
{ "Ra_204", 2.040064996680000e+02 }, { "Ra_205", 2.050062685700000e+02 }, { "Ra_206", 2.060038272700000e+02 }, { "Ra_207", 2.070037981050000e+02 },
|
||||
{ "Ra_208", 2.080018399400000e+02 }, { "Ra_209", 2.090019913730000e+02 }, { "Ra_210", 2.100004949780000e+02 }, { "Ra_211", 2.110008979870000e+02 },
|
||||
{ "Ra_212", 2.119997944990000e+02 }, { "Ra_213", 2.130003839590000e+02 }, { "Ra_214", 2.140001078940000e+02 }, { "Ra_215", 2.150027198340000e+02 },
|
||||
{ "Ra_216", 2.160035330350000e+02 }, { "Ra_217", 2.170063203270000e+02 }, { "Ra_218", 2.180071402300000e+02 }, { "Ra_219", 2.190100850780000e+02 },
|
||||
{ "Ra_220", 2.200110283840000e+02 }, { "Ra_221", 2.210139173380000e+02 }, { "Ra_222", 2.220153745300000e+02 }, { "Ra_223", 2.230185021710000e+02 },
|
||||
{ "Ra_224", 2.240202118210000e+02 }, { "Ra_225", 2.250236115640000e+02 }, { "Ra_226", 2.260254098230000e+02 }, { "Ra_227", 2.270291778420000e+02 },
|
||||
{ "Ra_228", 2.280310702920000e+02 }, { "Ra_229", 2.290349575770000e+02 }, { "Ra_230", 2.300370563940000e+02 }, { "Ra_231", 2.310412200000000e+02 },
|
||||
{ "Ra_232", 2.320436380000000e+02 }, { "Ra_233", 2.330480600000000e+02 }, { "Ra_234", 2.340507040000000e+02 }, { "Ac_natural", 2.270000000000000e+02 },
|
||||
{ "Ac_206", 2.060145049800000e+02 }, { "Ac_207", 2.070119497480000e+02 }, { "Ac_208", 2.080115515510000e+02 }, { "Ac_209", 2.090094948630000e+02 },
|
||||
{ "Ac_210", 2.100094359860000e+02 }, { "Ac_211", 2.110077348350000e+02 }, { "Ac_212", 2.120078138220000e+02 }, { "Ac_213", 2.130066076430000e+02 },
|
||||
{ "Ac_214", 2.140069017980000e+02 }, { "Ac_215", 2.150064536250000e+02 }, { "Ac_216", 2.160087200750000e+02 }, { "Ac_217", 2.170093469140000e+02 },
|
||||
{ "Ac_218", 2.180116414530000e+02 }, { "Ac_219", 2.190124203890000e+02 }, { "Ac_220", 2.200147629790000e+02 }, { "Ac_221", 2.210155912480000e+02 },
|
||||
{ "Ac_222", 2.220178438510000e+02 }, { "Ac_223", 2.230191374680000e+02 }, { "Ac_224", 2.240217228660000e+02 }, { "Ac_225", 2.250232295850000e+02 },
|
||||
{ "Ac_226", 2.260260980890000e+02 }, { "Ac_227", 2.270277521270000e+02 }, { "Ac_228", 2.280310211120000e+02 }, { "Ac_229", 2.290330152430000e+02 },
|
||||
{ "Ac_230", 2.300362941780000e+02 }, { "Ac_231", 2.310385587860000e+02 }, { "Ac_232", 2.320420274380000e+02 }, { "Ac_233", 2.330445500000000e+02 },
|
||||
{ "Ac_234", 2.340484200000000e+02 }, { "Ac_235", 2.350512320000000e+02 }, { "Ac_236", 2.360552960000000e+02 }, { "Th_natural", 2.320381000000000e+02 },
|
||||
{ "Th_209", 2.090177156820000e+02 }, { "Th_210", 2.100150753420000e+02 }, { "Th_211", 2.110149284130000e+02 }, { "Th_212", 2.120129802880000e+02 },
|
||||
{ "Th_213", 2.130130101400000e+02 }, { "Th_214", 2.140114997700000e+02 }, { "Th_215", 2.150117303300000e+02 }, { "Th_216", 2.160110621150000e+02 },
|
||||
{ "Th_217", 2.170131143280000e+02 }, { "Th_218", 2.180132844990000e+02 }, { "Th_219", 2.190155368950000e+02 }, { "Th_220", 2.200157477620000e+02 },
|
||||
{ "Th_221", 2.210181836740000e+02 }, { "Th_222", 2.220184681210000e+02 }, { "Th_223", 2.230208114480000e+02 }, { "Th_224", 2.240214668950000e+02 },
|
||||
{ "Th_225", 2.250239510210000e+02 }, { "Th_226", 2.260249030690000e+02 }, { "Th_227", 2.270277040700000e+02 }, { "Th_228", 2.280287411270000e+02 },
|
||||
{ "Th_229", 2.290317624300000e+02 }, { "Th_230", 2.300331338430000e+02 }, { "Th_231", 2.310363043430000e+02 }, { "Th_232", 2.320380553250000e+02 },
|
||||
{ "Th_233", 2.330415818430000e+02 }, { "Th_234", 2.340436012300000e+02 }, { "Th_235", 2.350475100740000e+02 }, { "Th_236", 2.360498700000000e+02 },
|
||||
{ "Th_237", 2.370538940000000e+02 }, { "Th_238", 2.380564960000000e+02 }, { "Pa_natural", 2.310000000000000e+02 }, { "Pa_212", 2.120232041380000e+02 },
|
||||
{ "Pa_213", 2.130211093400000e+02 }, { "Pa_214", 2.140209184170000e+02 }, { "Pa_215", 2.150191858650000e+02 }, { "Pa_216", 2.160191095640000e+02 },
|
||||
{ "Pa_217", 2.170183239860000e+02 }, { "Pa_218", 2.180200418890000e+02 }, { "Pa_219", 2.190198831430000e+02 }, { "Pa_220", 2.200218753030000e+02 },
|
||||
{ "Pa_221", 2.210218779830000e+02 }, { "Pa_222", 2.220237420000000e+02 }, { "Pa_223", 2.230239622730000e+02 }, { "Pa_224", 2.240256257380000e+02 },
|
||||
{ "Pa_225", 2.250261306780000e+02 }, { "Pa_226", 2.260279477530000e+02 }, { "Pa_227", 2.270288050720000e+02 }, { "Pa_228", 2.280310513760000e+02 },
|
||||
{ "Pa_229", 2.290320967930000e+02 }, { "Pa_230", 2.300345407540000e+02 }, { "Pa_231", 2.310358839900000e+02 }, { "Pa_232", 2.320385915920000e+02 },
|
||||
{ "Pa_233", 2.330402472770000e+02 }, { "Pa_234", 2.340433080580000e+02 }, { "Pa_235", 2.350454436150000e+02 }, { "Pa_236", 2.360486812840000e+02 },
|
||||
{ "Pa_237", 2.370511456590000e+02 }, { "Pa_238", 2.380545027100000e+02 }, { "Pa_239", 2.390572600000000e+02 }, { "Pa_240", 2.400609800000000e+02 },
|
||||
{ "U_natural", 2.380290000000000e+02 }, { "U_217", 2.170243687910000e+02 }, { "U_218", 2.180235356710000e+02 }, { "U_219", 2.190249191600000e+02 },
|
||||
{ "U_220", 2.200247230000000e+02 }, { "U_221", 2.210263990000000e+02 }, { "U_222", 2.220260860000000e+02 }, { "U_223", 2.230277386000000e+02 },
|
||||
{ "U_224", 2.240276047780000e+02 }, { "U_225", 2.250293907170000e+02 }, { "U_226", 2.260293387020000e+02 }, { "U_227", 2.270311563670000e+02 },
|
||||
{ "U_228", 2.280313740060000e+02 }, { "U_229", 2.290335059390000e+02 }, { "U_230", 2.300339397840000e+02 }, { "U_231", 2.310362937040000e+02 },
|
||||
{ "U_232", 2.320371561520000e+02 }, { "U_233", 2.330396352070000e+02 }, { "U_234", 2.340409520880000e+02 }, { "U_235", 2.350439299180000e+02 },
|
||||
{ "U_236", 2.360455680060000e+02 }, { "U_237", 2.370487301840000e+02 }, { "U_238", 2.380507882470000e+02 }, { "U_239", 2.390542932990000e+02 },
|
||||
{ "U_240", 2.400565919880000e+02 }, { "U_241", 2.410603300000000e+02 }, { "U_242", 2.420629310000000e+02 }, { "Np_natural", 2.370000000000000e+02 },
|
||||
{ "Np_225", 2.250339139330000e+02 }, { "Np_226", 2.260351450000000e+02 }, { "Np_227", 2.270349567890000e+02 }, { "Np_228", 2.280361800000000e+02 },
|
||||
{ "Np_229", 2.290362638080000e+02 }, { "Np_230", 2.300378275970000e+02 }, { "Np_231", 2.310382450850000e+02 }, { "Np_232", 2.320401080000000e+02 },
|
||||
{ "Np_233", 2.330407405460000e+02 }, { "Np_234", 2.340428950380000e+02 }, { "Np_235", 2.350440632670000e+02 }, { "Np_236", 2.360465696000000e+02 },
|
||||
{ "Np_237", 2.370481734440000e+02 }, { "Np_238", 2.380509464050000e+02 }, { "Np_239", 2.390529390250000e+02 }, { "Np_240", 2.400561621820000e+02 },
|
||||
{ "Np_241", 2.410582524310000e+02 }, { "Np_242", 2.420616411800000e+02 }, { "Np_243", 2.430642790000000e+02 }, { "Np_244", 2.440678500000000e+02 },
|
||||
{ "Pu_natural", 2.440000000000000e+02 }, { "Pu_228", 2.280387423280000e+02 }, { "Pu_229", 2.290401502120000e+02 }, { "Pu_230", 2.300396498860000e+02 },
|
||||
{ "Pu_231", 2.310411011070000e+02 }, { "Pu_232", 2.320411870970000e+02 }, { "Pu_233", 2.330429973750000e+02 }, { "Pu_234", 2.340433170760000e+02 },
|
||||
{ "Pu_235", 2.350452860500000e+02 }, { "Pu_236", 2.360460579640000e+02 }, { "Pu_237", 2.370484096580000e+02 }, { "Pu_238", 2.380495598940000e+02 },
|
||||
{ "Pu_239", 2.390521633810000e+02 }, { "Pu_240", 2.400538135450000e+02 }, { "Pu_241", 2.410568514560000e+02 }, { "Pu_242", 2.420587426110000e+02 },
|
||||
{ "Pu_243", 2.430620030920000e+02 }, { "Pu_244", 2.440642039070000e+02 }, { "Pu_245", 2.450677471540000e+02 }, { "Pu_246", 2.460702046270000e+02 },
|
||||
{ "Pu_247", 2.470740700000000e+02 }, { "Am_natural", 2.430000000000000e+02 }, { "Am_231", 2.310455600000000e+02 }, { "Am_232", 2.320465900000000e+02 },
|
||||
{ "Am_233", 2.330463480000000e+02 }, { "Am_234", 2.340478090000000e+02 }, { "Am_235", 2.350479460000000e+02 }, { "Am_236", 2.360495790000000e+02 },
|
||||
{ "Am_237", 2.370499960000000e+02 }, { "Am_238", 2.380519843240000e+02 }, { "Am_239", 2.390530244790000e+02 }, { "Am_240", 2.400553001790000e+02 },
|
||||
{ "Am_241", 2.410568291440000e+02 }, { "Am_242", 2.420595491590000e+02 }, { "Am_243", 2.430613810800000e+02 }, { "Am_244", 2.440642848470000e+02 },
|
||||
{ "Am_245", 2.450664521140000e+02 }, { "Am_246", 2.460697746190000e+02 }, { "Am_247", 2.470720930000000e+02 }, { "Am_248", 2.480757520000000e+02 },
|
||||
{ "Am_249", 2.490784800000000e+02 }, { "Cm_natural", 2.470000000000000e+02 }, { "Cm_233", 2.330507712320000e+02 }, { "Cm_234", 2.340501598410000e+02 },
|
||||
{ "Cm_235", 2.350514340000000e+02 }, { "Cm_236", 2.360514130000000e+02 }, { "Cm_237", 2.370529010000000e+02 }, { "Cm_238", 2.380530286970000e+02 },
|
||||
{ "Cm_239", 2.390549570000000e+02 }, { "Cm_240", 2.400555295390000e+02 }, { "Cm_241", 2.410576530010000e+02 }, { "Cm_242", 2.420588358240000e+02 },
|
||||
{ "Cm_243", 2.430613891140000e+02 }, { "Cm_244", 2.440627525780000e+02 }, { "Cm_245", 2.450654912490000e+02 }, { "Cm_246", 2.460672236620000e+02 },
|
||||
{ "Cm_247", 2.470703535400000e+02 }, { "Cm_248", 2.480723485080000e+02 }, { "Cm_249", 2.490759534130000e+02 }, { "Cm_250", 2.500783569590000e+02 },
|
||||
{ "Cm_251", 2.510822846050000e+02 }, { "Cm_252", 2.520848700000000e+02 }, { "Bk_natural", 2.470000000000000e+02 }, { "Bk_235", 2.350565800000000e+02 },
|
||||
{ "Bk_236", 2.360573300000000e+02 }, { "Bk_237", 2.370570030000000e+02 }, { "Bk_238", 2.380582810000000e+02 }, { "Bk_239", 2.390582790000000e+02 },
|
||||
{ "Bk_240", 2.400597590000000e+02 }, { "Bk_241", 2.410602300000000e+02 }, { "Bk_242", 2.420619810000000e+02 }, { "Bk_243", 2.430630075720000e+02 },
|
||||
{ "Bk_244", 2.440651807740000e+02 }, { "Bk_245", 2.450663616160000e+02 }, { "Bk_246", 2.460686729470000e+02 }, { "Bk_247", 2.470703070800000e+02 },
|
||||
{ "Bk_248", 2.480730860000000e+02 }, { "Bk_249", 2.490749866570000e+02 }, { "Bk_250", 2.500783165200000e+02 }, { "Bk_251", 2.510807601720000e+02 },
|
||||
{ "Bk_252", 2.520843100000000e+02 }, { "Bk_253", 2.530868800000000e+02 }, { "Bk_254", 2.540906000000000e+02 }, { "Cf_natural", 2.510000000000000e+02 },
|
||||
{ "Cf_237", 2.370620700000000e+02 }, { "Cf_238", 2.380614100000000e+02 }, { "Cf_239", 2.390624220000000e+02 }, { "Cf_240", 2.400623020000000e+02 },
|
||||
{ "Cf_241", 2.410637260000000e+02 }, { "Cf_242", 2.420637015520000e+02 }, { "Cf_243", 2.430654270000000e+02 }, { "Cf_244", 2.440660006890000e+02 },
|
||||
{ "Cf_245", 2.450680486120000e+02 }, { "Cf_246", 2.460688053090000e+02 }, { "Cf_247", 2.470710005890000e+02 }, { "Cf_248", 2.480721848610000e+02 },
|
||||
{ "Cf_249", 2.490748535370000e+02 }, { "Cf_250", 2.500764060660000e+02 }, { "Cf_251", 2.510795867880000e+02 }, { "Cf_252", 2.520816258460000e+02 },
|
||||
{ "Cf_253", 2.530851331450000e+02 }, { "Cf_254", 2.540873229090000e+02 }, { "Cf_255", 2.550910460000000e+02 }, { "Cf_256", 2.560934400000000e+02 },
|
||||
{ "Es_natural", 2.520000000000000e+02 }, { "Es_120", 1.175000000000000e+02 }, { "Es_121", 1.165460000000000e+02 }, { "Es_122", 1.185440000000000e+02 },
|
||||
{ "Es_125", 1.175000000000000e+02 }, { "Es_240", 2.400689200000000e+02 }, { "Es_241", 2.410685380000000e+02 }, { "Es_242", 2.420697450000000e+02 },
|
||||
{ "Es_243", 2.430695480000000e+02 }, { "Es_244", 2.440708830000000e+02 }, { "Es_245", 2.450713240000000e+02 }, { "Es_246", 2.460728960000000e+02 },
|
||||
{ "Es_247", 2.470736560000000e+02 }, { "Es_248", 2.480754710000000e+02 }, { "Es_249", 2.490764110000000e+02 }, { "Es_250", 2.500786120000000e+02 },
|
||||
{ "Es_251", 2.510799921420000e+02 }, { "Es_252", 2.520829785120000e+02 }, { "Es_253", 2.530848246970000e+02 }, { "Es_254", 2.540880220210000e+02 },
|
||||
{ "Es_255", 2.550902731220000e+02 }, { "Es_256", 2.560935980000000e+02 }, { "Es_257", 2.570959790000000e+02 }, { "Es_258", 2.580995200000000e+02 },
|
||||
{ "Fm_natural", 2.570000000000000e+02 }, { "Fm_242", 2.420734300000000e+02 }, { "Fm_243", 2.430743530000000e+02 }, { "Fm_244", 2.440740840000000e+02 },
|
||||
{ "Fm_245", 2.450753850000000e+02 }, { "Fm_246", 2.460752990230000e+02 }, { "Fm_247", 2.470768470000000e+02 }, { "Fm_248", 2.480771947140000e+02 },
|
||||
{ "Fm_249", 2.490790340000000e+02 }, { "Fm_250", 2.500795212640000e+02 }, { "Fm_251", 2.510815750170000e+02 }, { "Fm_252", 2.520824668550000e+02 },
|
||||
{ "Fm_253", 2.530851852360000e+02 }, { "Fm_254", 2.540868542200000e+02 }, { "Fm_255", 2.550899622020000e+02 }, { "Fm_256", 2.560917731170000e+02 },
|
||||
{ "Fm_257", 2.570951047240000e+02 }, { "Fm_258", 2.580970760000000e+02 }, { "Fm_259", 2.591005950000000e+02 }, { "Fm_260", 2.601026780000000e+02 },
|
||||
{ "Md_natural", 2.580000000000000e+02 }, { "Md_245", 2.450808290000000e+02 }, { "Md_246", 2.460818860000000e+02 }, { "Md_247", 2.470816350000000e+02 },
|
||||
{ "Md_248", 2.480828230000000e+02 }, { "Md_249", 2.490830130000000e+02 }, { "Md_250", 2.500844200000000e+02 }, { "Md_251", 2.510848390000000e+02 },
|
||||
{ "Md_252", 2.520865600000000e+02 }, { "Md_253", 2.530872800000000e+02 }, { "Md_254", 2.540896560000000e+02 }, { "Md_255", 2.550910827050000e+02 },
|
||||
{ "Md_256", 2.560940590250000e+02 }, { "Md_257", 2.570955413680000e+02 }, { "Md_258", 2.580984313190000e+02 }, { "Md_259", 2.591005090000000e+02 },
|
||||
{ "Md_260", 2.601036520000000e+02 }, { "Md_261", 2.611057210000000e+02 }, { "Md_262", 2.621088650000000e+02 }, { "No_natural", 2.590000000000000e+02 },
|
||||
{ "No_248", 2.480865960000000e+02 }, { "No_249", 2.490878330000000e+02 }, { "No_250", 2.500875100000000e+02 }, { "No_251", 2.510890120000000e+02 },
|
||||
{ "No_252", 2.520889765210000e+02 }, { "No_253", 2.530906780000000e+02 }, { "No_254", 2.540909552530000e+02 }, { "No_255", 2.550932411310000e+02 },
|
||||
{ "No_256", 2.560942826660000e+02 }, { "No_257", 2.570968771900000e+02 }, { "No_258", 2.580982070000000e+02 }, { "No_259", 2.591010310000000e+02 },
|
||||
{ "No_260", 2.601026430000000e+02 }, { "No_261", 2.611057490000000e+02 }, { "No_262", 2.621073010000000e+02 }, { "No_263", 2.631105520000000e+02 },
|
||||
{ "No_264", 2.641123450000000e+02 }, { "Lr_natural", 2.600000000000000e+02 }, { "Lr_251", 2.510943600000000e+02 }, { "Lr_252", 2.520953710000000e+02 },
|
||||
{ "Lr_253", 2.530952100000000e+02 }, { "Lr_254", 2.540964540000000e+02 }, { "Lr_255", 2.550966810000000e+02 }, { "Lr_256", 2.560986290000000e+02 },
|
||||
{ "Lr_257", 2.570995550000000e+02 }, { "Lr_258", 2.581018140000000e+02 }, { "Lr_259", 2.591029010000000e+02 }, { "Lr_260", 2.601055040000000e+02 },
|
||||
{ "Lr_261", 2.611068830000000e+02 }, { "Lr_262", 2.621096340000000e+02 }, { "Lr_263", 2.631112930000000e+02 }, { "Lr_264", 2.641140380000000e+02 },
|
||||
{ "Lr_265", 2.651158390000000e+02 }, { "Lr_266", 2.661193050000000e+02 }, { "Rf_natural", 2.610000000000000e+02 }, { "Rf_253", 2.531006890000000e+02 },
|
||||
{ "Rf_254", 2.541001840000000e+02 }, { "Rf_255", 2.551013400000000e+02 }, { "Rf_256", 2.561011661940000e+02 }, { "Rf_257", 2.571029900000000e+02 },
|
||||
{ "Rf_258", 2.581034890000000e+02 }, { "Rf_259", 2.591056370000000e+02 }, { "Rf_260", 2.601064400000000e+02 }, { "Rf_261", 2.611087665560000e+02 },
|
||||
{ "Rf_262", 2.621099250000000e+02 }, { "Rf_263", 2.631125470000000e+02 }, { "Rf_264", 2.641139850000000e+02 }, { "Rf_265", 2.651167040000000e+02 },
|
||||
{ "Rf_266", 2.661179560000000e+02 }, { "Rf_267", 2.671215290000000e+02 }, { "Rf_268", 2.681236440000000e+02 }, { "Db_natural", 2.620000000000000e+02 },
|
||||
{ "Db_255", 2.551073980000000e+02 }, { "Db_256", 2.561081270000000e+02 }, { "Db_257", 2.571077220000000e+02 }, { "Db_258", 2.581092310000000e+02 },
|
||||
{ "Db_259", 2.591096100000000e+02 }, { "Db_260", 2.601113000000000e+02 }, { "Db_261", 2.611120560000000e+02 }, { "Db_262", 2.621140840000000e+02 },
|
||||
{ "Db_263", 2.631149880000000e+02 }, { "Db_264", 2.641174040000000e+02 }, { "Db_265", 2.651186010000000e+02 }, { "Db_266", 2.661210290000000e+02 },
|
||||
{ "Db_267", 2.671223770000000e+02 }, { "Db_268", 2.681254450000000e+02 }, { "Db_269", 2.691274600000000e+02 }, { "Db_270", 2.701307120000000e+02 },
|
||||
{ "Sg_natural", 2.630000000000000e+02 }, { "Sg_258", 2.581131680000000e+02 }, { "Sg_259", 2.591145000000000e+02 }, { "Sg_260", 2.601144220710000e+02 },
|
||||
{ "Sg_261", 2.611161170000000e+02 }, { "Sg_262", 2.621163980000000e+02 }, { "Sg_263", 2.631183220000000e+02 }, { "Sg_264", 2.641189310000000e+02 },
|
||||
{ "Sg_265", 2.651211146930000e+02 }, { "Sg_266", 2.661220650000000e+02 }, { "Sg_267", 2.671244250000000e+02 }, { "Sg_268", 2.681256060000000e+02 },
|
||||
{ "Sg_269", 2.691287550000000e+02 }, { "Sg_270", 2.701303290000000e+02 }, { "Sg_271", 2.711334720000000e+02 }, { "Sg_272", 2.721351580000000e+02 },
|
||||
{ "Sg_273", 2.731382200000000e+02 }, { "Bh_260", 2.601219700000000e+02 }, { "Bh_261", 2.611216640000000e+02 }, { "Bh_262", 2.621228920000000e+02 },
|
||||
{ "Bh_263", 2.631230350000000e+02 }, { "Bh_264", 2.641246040000000e+02 }, { "Bh_265", 2.651251470000000e+02 }, { "Bh_266", 2.661269420000000e+02 },
|
||||
{ "Bh_267", 2.671276500000000e+02 }, { "Bh_268", 2.681297550000000e+02 }, { "Bh_269", 2.691306940000000e+02 }, { "Bh_270", 2.701336160000000e+02 },
|
||||
{ "Bh_271", 2.711351790000000e+02 }, { "Bh_272", 2.721380320000000e+02 }, { "Bh_273", 2.731396180000000e+02 }, { "Bh_274", 2.741424400000000e+02 },
|
||||
{ "Bh_275", 2.751442500000000e+02 }, { "Hs_263", 2.631285580000000e+02 }, { "Hs_264", 2.641283948850000e+02 }, { "Hs_265", 2.651300850000000e+02 },
|
||||
{ "Hs_266", 2.661300970000000e+02 }, { "Hs_267", 2.671317890000000e+02 }, { "Hs_268", 2.681321620000000e+02 }, { "Hs_269", 2.691340560000000e+02 },
|
||||
{ "Hs_270", 2.701346500000000e+02 }, { "Hs_271", 2.711376570000000e+02 }, { "Hs_272", 2.721390520000000e+02 }, { "Hs_273", 2.731419860000000e+02 },
|
||||
{ "Hs_274", 2.741431310000000e+02 }, { "Hs_275", 2.751459520000000e+02 }, { "Hs_276", 2.761472080000000e+02 }, { "Hs_277", 2.771498410000000e+02 },
|
||||
{ "Mt_265", 2.651361510000000e+02 }, { "Mt_266", 2.661372990000000e+02 }, { "Mt_267", 2.671373070000000e+02 }, { "Mt_268", 2.681387280000000e+02 },
|
||||
{ "Mt_269", 2.691390550000000e+02 }, { "Mt_270", 2.701406570000000e+02 }, { "Mt_271", 2.711411390000000e+02 }, { "Mt_272", 2.721437380000000e+02 },
|
||||
{ "Mt_273", 2.731449130000000e+02 }, { "Mt_274", 2.741474920000000e+02 }, { "Mt_275", 2.751486470000000e+02 }, { "Mt_276", 2.761511560000000e+02 },
|
||||
{ "Mt_277", 2.771524200000000e+02 }, { "Mt_278", 2.781548120000000e+02 }, { "Mt_279", 2.791561930000000e+02 }, { "Uun_267", 2.671443410000000e+02 },
|
||||
{ "Uun_268", 2.681437950000000e+02 }, { "Uun_269", 2.691451240000000e+02 }, { "Uun_270", 2.701447200000000e+02 }, { "Uun_271", 2.711460620000000e+02 },
|
||||
{ "Uun_272", 2.721463170000000e+02 }, { "Uun_273", 2.731488630000000e+02 }, { "Uun_274", 2.741494920000000e+02 }, { "Uun_275", 2.751521760000000e+02 },
|
||||
{ "Uun_276", 2.761530340000000e+02 }, { "Uun_277", 2.771556470000000e+02 }, { "Uun_278", 2.781564690000000e+02 }, { "Uun_279", 2.791588610000000e+02 },
|
||||
{ "Uun_280", 2.801597950000000e+02 }, { "Uun_281", 2.811620610000000e+02 }, { "Uuu_272", 2.721536150000000e+02 }, { "Uuu_273", 2.731536820000000e+02 },
|
||||
{ "Uuu_274", 2.741557130000000e+02 }, { "Uuu_275", 2.751561420000000e+02 }, { "Uuu_276", 2.761584930000000e+02 }, { "Uuu_277", 2.771595190000000e+02 },
|
||||
{ "Uuu_278", 2.781616040000000e+02 }, { "Uuu_279", 2.791624680000000e+02 }, { "Uuu_280", 2.801644730000000e+02 }, { "Uuu_281", 2.811653720000000e+02 },
|
||||
{ "Uuu_282", 2.821674860000000e+02 }, { "Uuu_283", 2.831684150000000e+02 }, { "Uub_277", 2.771639430000000e+02 }, { "Uub_278", 2.781643120000000e+02 },
|
||||
{ "Uub_279", 2.791665460000000e+02 }, { "Uub_280", 2.801670390000000e+02 }, { "Uub_281", 2.811692860000000e+02 }, { "Uub_282", 2.821697650000000e+02 },
|
||||
{ "Uub_283", 2.831717920000000e+02 }, { "Uub_284", 2.841723840000000e+02 }, { "Uub_285", 2.851741050000000e+02 }, { "_283", 2.831764510000000e+02 },
|
||||
{ "_284", 2.841780800000000e+02 }, { "_285", 2.851787320000000e+02 }, { "_286", 2.861804810000000e+02 }, { "_287", 2.871810450000000e+02 },
|
||||
{ "Uuq_285", 2.851836980000000e+02 }, { "Uuq_286", 2.861838550000000e+02 }, { "Uuq_287", 2.871855990000000e+02 }, { "Uuq_288", 2.881856890000000e+02 },
|
||||
{ "Uuq_289", 2.891872790000000e+02 }, { "_287", 2.871911860000000e+02 }, { "_288", 2.881924920000000e+02 }, { "_289", 2.891927150000000e+02 },
|
||||
{ "_290", 2.901941410000000e+02 }, { "_291", 2.911943840000000e+02 }, { "Uuh_289", 2.891988620000000e+02 }, { "Uuh_290", 2.901985900000000e+02 },
|
||||
{ "Uuh_291", 2.912000110000000e+02 }, { "Uuh_292", 2.921997860000000e+02 }, { "_291", 2.912065640000000e+02 }, { "_292", 2.922075490000000e+02 },
|
||||
{ "Uuo_293", 2.932146700000000e+02 } };
|
||||
|
||||
/*
|
||||
***************************************************************
|
||||
*/
|
||||
double tpia_particleMass_AMU( statusMessageReporting *smr, const char *name ) {
|
||||
|
||||
int i, n = sizeof( ZAMasses ) / sizeof( ZAMasses[0] );
|
||||
double mass = -1.;
|
||||
|
||||
//TK modified
|
||||
std::string target(name);
|
||||
for( i = 0; i < n; i++ ) {
|
||||
//TK modified
|
||||
//if( !strcmp( ZAMasses[i].symbol, name ) ) {
|
||||
if( ZAMasses[i].symbol == target ) {
|
||||
mass = ZAMasses[i].mass;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( mass == -1. ) smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "particle %s not in mass table", name );
|
||||
return( mass );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,482 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
|
||||
#include "Randomize.hh"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
struct ZSymbol {
|
||||
int Z;
|
||||
//char *symbol;
|
||||
std::string symbol;
|
||||
};
|
||||
|
||||
static struct ZSymbol ZSymbols[] = { { 0, "n" }, { 1, "H" }, { 2, "He" }, { 3, "Li" }, { 4, "Be" }, { 5, "B" }, { 6, "C" },
|
||||
{ 7, "N" }, { 8, "O" }, { 9, "F" }, { 10, "Ne" }, { 11, "Na" }, { 12, "Mg" }, { 13, "Al" }, { 14, "Si" }, { 15, "P" },
|
||||
{ 16, "S" }, { 17, "Cl" }, { 18, "Ar" }, { 19, "K" }, { 20, "Ca" }, { 21, "Sc" }, { 22, "Ti" }, { 23, "V" }, { 24, "Cr" },
|
||||
{ 25, "Mn" }, { 26, "Fe" }, { 27, "Co" }, { 28, "Ni" }, { 29, "Cu" }, { 30, "Zn" }, { 31, "Ga" }, { 32, "Ge" }, { 33, "As" },
|
||||
{ 34, "Se" }, { 35, "Br" }, { 36, "Kr" }, { 37, "Rb" }, { 38, "Sr" }, { 39, "Y" }, { 40, "Zr" }, { 41, "Nb" }, { 42, "Mo" },
|
||||
{ 43, "Tc" }, { 44, "Ru" }, { 45, "Rh" }, { 46, "Pd" }, { 47, "Ag" }, { 48, "Cd" }, { 49, "In" }, { 50, "Sn" }, { 51, "Sb" },
|
||||
{ 52, "Te" }, { 53, "I" }, { 54, "Xe" }, { 55, "Cs" }, { 56, "Ba" }, { 57, "La" }, { 58, "Ce" }, { 59, "Pr" }, { 60, "Nd" },
|
||||
{ 61, "Pm" }, { 62, "Sm" }, { 63, "Eu" }, { 64, "Gd" }, { 65, "Tb" }, { 66, "Dy" }, { 67, "Ho" }, { 68, "Er" }, { 69, "Tm" },
|
||||
{ 70, "Yb" }, { 71, "Lu" }, { 72, "Hf" }, { 73, "Ta" }, { 74, "W" }, { 75, "Re" }, { 76, "Os" }, { 77, "Ir" }, { 78, "Pt" },
|
||||
{ 79, "Au" }, { 80, "Hg" }, { 81, "Tl" }, { 82, "Pb" }, { 83, "Bi" }, { 84, "Po" }, { 85, "At" }, { 86, "Rn" }, { 87, "Fr" },
|
||||
{ 88, "Ra" }, { 89, "Ac" }, { 90, "Th" }, { 91, "Pa" }, { 92, "U" }, { 93, "Np" }, { 94, "Pu" }, { 95, "Am" }, { 96, "Cm" },
|
||||
{ 97, "Bk" }, { 98, "Cf" }, { 99, "Es" }, { 100, "Fm" }, { 101, "Md" }, { 102, "No" }, { 103, "Lr" }, { 104, "Rf" }, { 105, "Db" },
|
||||
{ 106, "Sg" }, { 107, "Bh" }, { 108, "Hs" }, { 109, "Mt" } };
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_misc_NumberOfZSymbols( void ) {
|
||||
|
||||
return( sizeof( ZSymbols ) / sizeof( struct ZSymbol ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
const char *tpia_misc_ZToSymbol( int iZ ) {
|
||||
|
||||
if( ( iZ < 0 ) || ( iZ >= tpia_misc_NumberOfZSymbols( ) ) ) return( NULL );
|
||||
//return( ZSymbols[iZ].symbol );
|
||||
return( ZSymbols[iZ].symbol.c_str() );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_misc_symbolToZ( const char *Z ) {
|
||||
|
||||
int i, n = tpia_misc_NumberOfZSymbols( );
|
||||
|
||||
for( i = 0; i < n; i++ ) {
|
||||
//if( !strcmp( Z, ZSymbols[i].symbol ) ) return( ZSymbols[i].Z );
|
||||
if( !strcmp( Z, ZSymbols[i].symbol.c_str() ) ) return( ZSymbols[i].Z );
|
||||
}
|
||||
return( -1 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_miscNameToZAm( statusMessageReporting *smr, const char *name, int *Z, int *A, int *m ) {
|
||||
|
||||
int i, n;
|
||||
const char *p;
|
||||
char s[1024] = "", *q, *e; /* Note 1) routine will fail when parts of a particle name can be longer than 1024. */
|
||||
|
||||
n = sizeof( s ) - 1;
|
||||
|
||||
*Z = *A = *m = 0;
|
||||
if( !strncmp( "FissionProduct", name, 14 ) ) {
|
||||
*Z = 99;
|
||||
*A = 120;
|
||||
return( 0 );
|
||||
}
|
||||
if( !strcmp( "gamma", name ) ) return( 0 );
|
||||
for( p = name, q = s, i = 0; ( *p != '_' ) && ( i != n ); p++, q++, i++ ) *q = *p;
|
||||
if( i == n ) { /* See note 1 above. */
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Failed to find first '_' in particle name %s", name ); }
|
||||
else {
|
||||
*q = 0;
|
||||
if( ( *Z = tpia_misc_symbolToZ( s ) ) < 0 ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Particle %s's symbol = '%s' not found", name, s ); }
|
||||
else { /* Getting here implies that *p == '_'. */
|
||||
for( p++, q = s; ( *p != '_' ) && ( *p != 0 ) && ( i != n ); p++, q++, i++ ) *q = *p;
|
||||
if( i == n ) { /* See note 1 above. */
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Failed to find second '_' in particle name %s", name ); }
|
||||
else {
|
||||
*q = 0;
|
||||
if( strcmp( s, "natural" ) == 0 ) {
|
||||
e = s;
|
||||
while( *e ) e++; }
|
||||
else {
|
||||
*A = (int) strtol( s, &e, 10 );
|
||||
}
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Failed to convert A to integer in particle name %s", name ); }
|
||||
else { /* Getting here implies that *p == '_' or 0. */
|
||||
*m = 0;
|
||||
if( *p == '_' ) {
|
||||
p++;
|
||||
if( *p != 'm' ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Particle name %s missing meta-stable label 'm'", name ); }
|
||||
else {
|
||||
p++;
|
||||
*m = (int) strtol( p, &e, 10 );
|
||||
if( *e != 0 ) smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Failed to convert m to integer in particle name %s", name );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( !smr_isOk( smr ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *tpia_misc_pointerToAttributeIfAllOk( statusMessageReporting *smr, xData_element *element, const char *path, int required,
|
||||
xData_attributionList *attributes, const char *name, const char *file, int line ) {
|
||||
|
||||
char *value;
|
||||
|
||||
if( !smr_isOk( smr ) ) return( NULL );
|
||||
if( ( value = xData_getAttributesValue( attributes, name ) ) == NULL ) {
|
||||
if( required ) {
|
||||
if( element != NULL ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, file, line, 1, "element does not have attribute named %s", name ); }
|
||||
else {
|
||||
smr_setMessageError( smr, NULL, file, line, 1, "element does not have attribute named %s for file = %d", name, path );
|
||||
}
|
||||
}
|
||||
}
|
||||
return( value );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_misc_setMessageError_Element( statusMessageReporting *smr, void *userInterface, xData_element *element, const char *file, int line, int code,
|
||||
const char *fmt, ... ) {
|
||||
|
||||
int status = 0;
|
||||
va_list args;
|
||||
char *msg;
|
||||
|
||||
va_start( args, fmt );
|
||||
msg = smr_vallocateFormatMessage( fmt, &args );
|
||||
va_end( args );
|
||||
if( msg == NULL ) {
|
||||
status = 1;
|
||||
va_start( args, fmt );
|
||||
smr_vsetMessageError( smr, userInterface, file, line, code, fmt, &args );
|
||||
va_end( args ); }
|
||||
else {
|
||||
status = smr_setMessageError( smr, userInterface, file, line, code, "%s for element %s at line %d column %d", msg, element->fullName,
|
||||
(int) element->docInfo.line, (int) element->docInfo.column );
|
||||
free( msg );
|
||||
}
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
xData_Int tpia_misc_binarySearch( xData_Int n, double *ds, double d ) {
|
||||
|
||||
xData_Int imin = 0, imid, imax = n - 1;
|
||||
|
||||
if( d < ds[0] ) return( -2 );
|
||||
if( d > ds[n-1] ) return( -1 );
|
||||
while( 1 ) {
|
||||
imid = ( imin + imax ) >> 1;
|
||||
if( imid == imin ) break;
|
||||
if( d < ds[imid] ) {
|
||||
imax = imid; }
|
||||
else {
|
||||
imin = imid;
|
||||
}
|
||||
}
|
||||
return( imin );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *tpia_misc_get2dx_y_data( statusMessageReporting *smr, xData_element *element, xData_Int *length ) {
|
||||
|
||||
xData_element *xDataElement;
|
||||
double *d = NULL;
|
||||
xData_Int length_;
|
||||
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
//if( ( xDataElement = xData_getOneElementByTagName( smr, element, "xData", 1 ) ) != NULL ) {
|
||||
if( ( xDataElement = xData_getOneElementByTagName( smr, element, (char*)"xData", 1 ) ) != NULL ) {
|
||||
xData_addToAccessed( smr, xDataElement, 1 );
|
||||
if( xData_is_2d_xy( smr, &(xDataElement->xDataTypeInfo), 1 ) ) {
|
||||
d = xData_2d_xy_allocateCopyData( smr, xDataElement, &length_ );
|
||||
*length = (xData_Int) length_;
|
||||
}
|
||||
}
|
||||
return( d );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *tpia_misc_get2dxindex_y_data( statusMessageReporting *smr, xData_element *element, xData_Int *start, xData_Int *end, double *xValues ) {
|
||||
|
||||
xData_element *xDataElement;
|
||||
double *d = NULL;
|
||||
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
//if( ( xDataElement = xData_getOneElementByTagName( smr, element, "xData", 1 ) ) != NULL ) {
|
||||
if( ( xDataElement = xData_getOneElementByTagName( smr, element, (char*) "xData", 1 ) ) != NULL ) {
|
||||
xData_addToAccessed( smr, xDataElement, 1 );
|
||||
if( xData_is_2d_xindex_y( smr, &(xDataElement->xDataTypeInfo), 1 ) ) {
|
||||
if( start != NULL ) *start = xDataElement->xDataTypeInfo.start;
|
||||
if( end != NULL ) *end = xDataElement->xDataTypeInfo.end;
|
||||
d = xData_2d_xindex_y_toFilledYs( smr, xDataElement, xValues );
|
||||
}
|
||||
}
|
||||
return( d );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *tpia_misc_get2d_xShared_yHistogram_data( statusMessageReporting *smr, xData_element *element, xData_Int *start, xData_Int *end, xData_Int *length ) {
|
||||
|
||||
xData_Int i;
|
||||
xData_element *xDataElement;
|
||||
double *d = NULL;
|
||||
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
//if( ( xDataElement = xData_getOneElementByTagName( smr, element, "xData", 1 ) ) != NULL ) {
|
||||
if( ( xDataElement = xData_getOneElementByTagName( smr, element, (char*) "xData", 1 ) ) != NULL ) {
|
||||
xData_addToAccessed( smr, xDataElement, 1 );
|
||||
if( ( d = xData_2d_xShared_yHistogram_copyData( smr, xDataElement, &i ) ) != NULL ) {
|
||||
if( start != NULL ) *start = xDataElement->xDataTypeInfo.start;
|
||||
if( end != NULL ) *end = xDataElement->xDataTypeInfo.end;
|
||||
if( length != NULL ) *length = xDataElement->xDataTypeInfo.length;
|
||||
}
|
||||
}
|
||||
return( d );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_misc_get2d_xShared_yHistogram_data_Grouped( statusMessageReporting *smr, xData_element *element, tpia_1dData *group ) {
|
||||
|
||||
if( ( group->data = tpia_misc_get2d_xShared_yHistogram_data( smr, element, &(group->start), &(group->end), &(group->length) ) ) == NULL ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//double tpia_misc_getPointwiseCrossSectionAtE( statusMessageReporting *smr, tpia_1dData *crossSection, double *energyGrid, xData_Int index, double e_in ) {
|
||||
double tpia_misc_getPointwiseCrossSectionAtE( statusMessageReporting *, tpia_1dData *crossSection, double *energyGrid, xData_Int index, double e_in ) {
|
||||
|
||||
double xsec = 0.0, e1, e2;
|
||||
|
||||
if( ( index >= crossSection->start ) && ( index < crossSection->end ) ) {
|
||||
e1 = energyGrid[index];
|
||||
e2 = energyGrid[index + 1];
|
||||
index -= crossSection->start;
|
||||
if( e1 == e2 ) { /* Allow for future where step function may be allowed. */
|
||||
xsec = 0.5 * ( crossSection->data[index] + crossSection->data[index + 1] ); }
|
||||
else {
|
||||
xsec = ( crossSection->data[index] * ( e2 - e_in ) + crossSection->data[index + 1] * ( e_in - e1 ) ) / ( e2 - e1 );
|
||||
}
|
||||
}
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_EqualProbableBinSpectrum *tpia_misc_getEqualProbableBin( statusMessageReporting *smr, xData_element *parent, xData_Int *n, xData_Int *nBins ) {
|
||||
|
||||
xData_element *element;
|
||||
|
||||
xData_addToAccessed( smr, parent, 1 );
|
||||
//if( ( element = xData_getOneElementByTagName( smr, parent, "equalProbableBins", 0 ) ) == NULL ) return( NULL );
|
||||
if( ( element = xData_getOneElementByTagName( smr, parent, (char*) "equalProbableBins", 0 ) ) == NULL ) return( NULL );
|
||||
if( xData_convertAttributeTo_xData_Int( smr, element, "nBins", nBins ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "missing or invalid nBins attribute" );
|
||||
return( NULL );
|
||||
}
|
||||
return( tpia_misc_getEqualProbableBins( smr, element, "energy", *nBins, n ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_EqualProbableBinSpectrum *tpia_misc_getEqualProbableBins( statusMessageReporting *smr, xData_element *parent, const char *name, xData_Int nBins,
|
||||
xData_Int *n ) {
|
||||
|
||||
|
||||
int i, j;
|
||||
xData_Int index, size;
|
||||
xData_elementList *list;
|
||||
xData_element *element, *xData;
|
||||
double *d;
|
||||
tpia_EqualProbableBinSpectrum *epbs = NULL, *epb;
|
||||
|
||||
xData_addToAccessed( smr, parent, 1 );
|
||||
list = xData_getElementsByTagNameAndSort( smr, parent, name, NULL, NULL );
|
||||
if( list->n == 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, parent, __FILE__, __LINE__, 1, "bins does not contain any %s elements", name ); }
|
||||
else {
|
||||
*n = list->n;
|
||||
size = list->n * ( sizeof( tpia_EqualProbableBinSpectrum ) + ( nBins + 1 ) * sizeof( double ) );
|
||||
//if( ( epbs = xData_malloc2( smr, size, 0, "energies" ) ) != NULL ) {
|
||||
if( ( epbs = (tpia_EqualProbableBinSpectrum*) xData_malloc2( smr, size, 0, "energies" ) ) != NULL ) {
|
||||
d = (double *) &(epbs[list->n]);
|
||||
for( i = 0, epb = epbs; i < list->n; i++, epb++ ) { /* Loop to test nBins and index are proper. */
|
||||
element = list->items[i].element;
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
if( xData_convertAttributeTo_xData_Int( smr, element, "index", &index ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "missing or invalid index attribute" );
|
||||
//epbs = xData_free( smr, epbs );
|
||||
epbs = (tpia_EqualProbableBinSpectrum*) xData_free( smr, epbs );
|
||||
break;
|
||||
}
|
||||
if( index != i ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "index = %lld is not incremental", index );
|
||||
//epbs = xData_free( smr, epbs );
|
||||
epbs = (tpia_EqualProbableBinSpectrum*) xData_free( smr, epbs );
|
||||
break;
|
||||
}
|
||||
if( ( j = xData_convertAttributeToDouble( smr, element, "value", &(epb->value) ) ) != 0 ) {
|
||||
if( j == 1 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "element does not have value attribute" ); }
|
||||
else {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "failed to convert value attribute to double" );
|
||||
}
|
||||
//epbs = xData_free( smr, epbs );
|
||||
epbs = (tpia_EqualProbableBinSpectrum*) xData_free( smr, epbs );
|
||||
break;
|
||||
}
|
||||
if( ( xData = xData_getElements_xDataElement( smr, element ) ) == NULL ) {
|
||||
//epbs = xData_free( smr, epbs );
|
||||
epbs = (tpia_EqualProbableBinSpectrum*) xData_free( smr, epbs );
|
||||
break;
|
||||
}
|
||||
xData_addToAccessed( smr, xData, 1 );
|
||||
epb->index = index;
|
||||
epb->nBins = nBins;
|
||||
epb->bins = d;
|
||||
if( xData_1d_x_copyData( smr, xData, ( nBins + 1 ) * sizeof( double ), d ) != 0 ) {
|
||||
//epbs = xData_free( smr, epbs );
|
||||
epbs = (tpia_EqualProbableBinSpectrum*) xData_free( smr, epbs );
|
||||
break;
|
||||
}
|
||||
d += nBins + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
xData_freeElementList( smr, list );
|
||||
return( epbs );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double tpia_misc_drng( double (*rng)( void * ), void *rngState ) {
|
||||
|
||||
double r;
|
||||
|
||||
if( rng != NULL ) {
|
||||
r = rng( rngState ); }
|
||||
else {
|
||||
//r = drand48( );
|
||||
r = CLHEP::HepRandom::getTheEngine()->flat();
|
||||
|
||||
}
|
||||
return( r );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_misc_sampleEqualProbableBin( statusMessageReporting *smr, tpia_decaySamplingInfo *decaySamplingInfo, double e_in, int nBins,
|
||||
int tpia_misc_sampleEqualProbableBin( statusMessageReporting *, tpia_decaySamplingInfo *decaySamplingInfo, double e_in, int nBins,
|
||||
tpia_EqualProbableBinSpectra *binned, double *value_ ) {
|
||||
|
||||
int i, j, index1, index2, method = 0;
|
||||
double fE = 1., r, value1, value2, value3, P12, P23, value = -2.;
|
||||
|
||||
if( e_in <= binned->energies[0].value ) {
|
||||
index1 = 0;
|
||||
index2 = 0; }
|
||||
else if( e_in >= binned->energies[binned->numberOfEs-1].value ) {
|
||||
index1 = binned->numberOfEs - 1;
|
||||
index2 = binned->numberOfEs - 1; }
|
||||
else {
|
||||
for( i = 0; i < binned->numberOfEs - 1; i++ ) {
|
||||
if( e_in <= binned->energies[i].value ) break;
|
||||
}
|
||||
i--;
|
||||
index1 = i;
|
||||
index2 = i;
|
||||
if( e_in != binned->energies[i].value ) {
|
||||
index2++;
|
||||
fE = ( e_in - binned->energies[i].value ) / ( binned->energies[i+1].value - binned->energies[i].value );
|
||||
}
|
||||
}
|
||||
r = tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState );
|
||||
j = (int) (r * nBins);
|
||||
if( j >= nBins ) j = nBins - 1;
|
||||
if( j < 0 ) j = 0;
|
||||
r = tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState ); // Do not change r until after Point1 below.
|
||||
if( tpia_samplingMethods_isLinear( decaySamplingInfo->samplingMethods->angular_equalProbableBinMethod ) ) {
|
||||
method = 1;
|
||||
if( ( ( j == 0 ) && ( r <= 0.5 ) ) || ( j == ( nBins - 1 ) && r > 0.5 ) ) method = 0;
|
||||
}
|
||||
if( method == 0 ) { /* Constant interpolaton. */
|
||||
value1 = ( 1. - fE ) * binned->energies[index1].bins[j] + fE * binned->energies[index2].bins[j];
|
||||
value2 = ( 1. - fE ) * binned->energies[index1].bins[j+1] + fE * binned->energies[index2].bins[j+1];
|
||||
value = ( 1. - r ) * value1 + r * value2; }
|
||||
else { /* Linear interpolation. */
|
||||
if( r <= 0.5 ) j--; /* Point1: Above test insures that j is not 0 (nBins-1) if r <= 0.5 (> 0.5); */
|
||||
value1 = ( 1. - fE ) * binned->energies[index1].bins[j] + fE * binned->energies[index2].bins[j];
|
||||
value2 = ( 1. - fE ) * binned->energies[index1].bins[j+1] + fE * binned->energies[index2].bins[j+1];
|
||||
value3 = ( 1. - fE ) * binned->energies[index1].bins[j+2] + fE * binned->energies[index2].bins[j+2];
|
||||
P12 = 1. / ( value2 - value1 );
|
||||
P23 = 1. / ( value3 - value2 );
|
||||
r = tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState );
|
||||
if( 0.25 * ( 1.0 + 2.0 * ( value2 - value1 ) / ( value3 - value1 ) ) > r ) {
|
||||
P23 = 2. / ( value3 - value1 );
|
||||
value3 = value2; }
|
||||
else {
|
||||
P12 = 2. / ( value3 - value1 );
|
||||
value1 = value2;
|
||||
}
|
||||
r = tpia_misc_drng( decaySamplingInfo->rng, decaySamplingInfo->rngState );
|
||||
if( P23 != P12 ) r = ( -P12 + std::sqrt( P12 * P12 * ( 1. - r ) + r * P23 * P23 ) ) / ( P23 - P12 );
|
||||
value = 0.5 * ( value1 + value2 + r * ( value3 - value1 ) );
|
||||
}
|
||||
*value_ = value;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_multiplicity *tpia_multiplicity_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_multiplicity *multiplicity;
|
||||
|
||||
//if( ( multiplicity = xData_malloc2( smr, sizeof( tpia_multiplicity ), 0, "multiplicity" ) ) == NULL ) return( NULL );
|
||||
if( ( multiplicity = (tpia_multiplicity*) xData_malloc2( smr, sizeof( tpia_multiplicity ), 0, "multiplicity" ) ) == NULL ) return( NULL );
|
||||
if( tpia_multiplicity_initialize( smr, multiplicity ) ) multiplicity = tpia_multiplicity_free( smr, multiplicity );
|
||||
return( multiplicity );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_multiplicity_initialize( statusMessageReporting *smr, tpia_multiplicity *multiplicity ) {
|
||||
|
||||
memset( multiplicity, 0, sizeof( tpia_multiplicity ) );
|
||||
if( tpia_frame_setFromString( smr, "", "", 0, &(multiplicity->frame) ) ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_multiplicity *tpia_multiplicity_free( statusMessageReporting *smr, tpia_multiplicity *multiplicity ) {
|
||||
|
||||
tpia_multiplicity_release( smr, multiplicity );
|
||||
xData_free( smr, multiplicity );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_multiplicity_release( statusMessageReporting *smr, tpia_multiplicity *multiplicity ) {
|
||||
|
||||
//multiplicity->grouped.data = xData_free( smr, multiplicity->grouped.data );
|
||||
multiplicity->grouped.data = (double*) xData_free( smr, multiplicity->grouped.data );
|
||||
//multiplicity->pointwise = xData_free( smr, multiplicity->pointwise );
|
||||
multiplicity->pointwise = (double*) xData_free( smr, multiplicity->pointwise );
|
||||
tpia_multiplicity_initialize( smr, multiplicity );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_multiplicity *tpia_multiplicity_createGetFromElement( statusMessageReporting *smr, xData_element *multiplicityElement, int nGroups ) {
|
||||
|
||||
tpia_multiplicity *multiplicity;
|
||||
|
||||
if( ( multiplicity = tpia_multiplicity_create( smr ) ) == NULL ) return( NULL );
|
||||
if( tpia_multiplicity_getFromElement( smr, multiplicityElement, multiplicity, nGroups ) != 0 ) multiplicity = tpia_multiplicity_free( smr, multiplicity );
|
||||
return( multiplicity );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_multiplicity_getFromElement( statusMessageReporting *smr, xData_element *multiplicityElement, tpia_multiplicity *multiplicity, int nGroups ) {
|
||||
int tpia_multiplicity_getFromElement( statusMessageReporting *smr, xData_element *multiplicityElement, tpia_multiplicity *multiplicity, int ) {
|
||||
|
||||
const char *timeScale;
|
||||
int isDelayedNeutrons;
|
||||
xData_element *data;
|
||||
|
||||
xData_addToAccessed( smr, multiplicityElement, 1 );
|
||||
if( ( tpia_frame_setFromElement( smr, multiplicityElement, 2, &(multiplicity->frame) ) ) != 0 ) return( 1 );
|
||||
if( tpia_multiplicity_getTimeScaleFromElement( smr, multiplicityElement, &timeScale, &isDelayedNeutrons, &(multiplicity->timeScale) ) ) return( 1 );
|
||||
for( data = xData_getFirstElement( multiplicityElement ); data != NULL; data = xData_getNextElement( data ) ) {
|
||||
if( strcmp( data->name, "grouped" ) == 0 ) {
|
||||
if( tpia_misc_get2d_xShared_yHistogram_data_Grouped( smr, data, &(multiplicity->grouped) ) ) return( 1 ); }
|
||||
else if( strcmp( data->name, "pointwise" ) == 0 ) {
|
||||
if( ( multiplicity->pointwise = tpia_misc_get2dx_y_data( smr, data, &multiplicity->numberOfPointwise ) ) == NULL ) return( 1 ); }
|
||||
else {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, multiplicityElement, __FILE__, __LINE__, 1, "unsupported multiplicity type = %s", data->name );
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_multiplicity_getTimeScaleFromElement( statusMessageReporting *smr, xData_element *element, const char **timeScale, int *isDelayedNeutrons,
|
||||
double *dTimeScale ) {
|
||||
|
||||
const char *p;
|
||||
char *e;
|
||||
|
||||
*isDelayedNeutrons = 0;
|
||||
*dTimeScale = 0.;
|
||||
*timeScale = xData_getAttributesValue( &(element->attributes), "timeScale" );
|
||||
if( *timeScale != NULL ) {
|
||||
if( strcmp( *timeScale, "prompt" ) ) {
|
||||
if( strncmp( *timeScale, "delayed", 7 ) ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "invalid timeScale attribute = %s", *timeScale );
|
||||
return( 1 ); }
|
||||
else {
|
||||
for( p = &((*timeScale)[7]); *p; p++ ) if( !isspace( *p ) ) break;
|
||||
if( *p != '=' ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "timeScale attribute '%s' missing '='", *timeScale );
|
||||
return( 1 );
|
||||
}
|
||||
p++;
|
||||
*dTimeScale = strtod( p, &e );
|
||||
if( *e != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "could not convert timeScale attribute '%s' to double",
|
||||
*timeScale );
|
||||
return( 1 );
|
||||
}
|
||||
*isDelayedNeutrons = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <tpia_target.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static int initialSizeOfList = 100, incrementalSizeOfList = 100;
|
||||
static int numberOfParticles = 0, sizeOfParticleSortedList = 0;
|
||||
static tpia_particle **particleSortedList = NULL;
|
||||
static tpia_particle *particleList = NULL, *particleListEnd = NULL;
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_particle *tpia_particle_create( statusMessageReporting *smr ) {
|
||||
|
||||
//tpia_particle *particle = xData_malloc2( smr, sizeof( tpia_particle ), 0, "particle" );
|
||||
tpia_particle *particle = (tpia_particle*) xData_malloc2( smr, sizeof( tpia_particle ), 0, "particle" );
|
||||
|
||||
if( particle == NULL ) return( NULL );
|
||||
tpia_particle_initialize( smr, particle );
|
||||
return( particle );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_particle_initialize( statusMessageReporting *smr, tpia_particle *particle ) {
|
||||
int tpia_particle_initialize( statusMessageReporting *, tpia_particle *particle ) {
|
||||
|
||||
memset( particle, 0, sizeof( tpia_particle ) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_particle *tpia_particle_free( statusMessageReporting *smr, tpia_particle *particle ) {
|
||||
|
||||
int i, j;
|
||||
tpia_particle **p;
|
||||
|
||||
for( i = 0, p = particleSortedList; i < numberOfParticles; i++, p++ ) {
|
||||
if( *p == particle ) {
|
||||
numberOfParticles--;
|
||||
for( j = i; j < numberOfParticles; j++, p++ ) *p = p[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( particle == particleListEnd ) particleListEnd = particle->prior;
|
||||
if( particle == particleList ) particleList = particle->next;
|
||||
if( particle->prior != NULL ) particle->prior->next = particle->next;
|
||||
if( particle->next != NULL ) particle->next->prior = particle->prior;
|
||||
tpia_particle_release( smr, particle );
|
||||
xData_free( smr, particle );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_particle_release( statusMessageReporting *smr, tpia_particle *particle ) {
|
||||
|
||||
if( particle->spectralID != NULL ) tpi_spectralID_free( smr, particle->spectralID );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_particle_freeInternalList( statusMessageReporting *smr ) {
|
||||
|
||||
while( particleList != NULL ) tpia_particle_free( smr, particleList );
|
||||
//particleSortedList = xData_free( smr, particleSortedList );
|
||||
particleSortedList = (tpia_particle**) xData_free( smr, particleSortedList );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_particle *tpia_particle_getInternalID( statusMessageReporting *smr, const char * const name ) {
|
||||
|
||||
int i, iCmp, min, mid, max, Z, A, m;
|
||||
tpia_particle *particle;
|
||||
char *EOP;
|
||||
|
||||
iCmp = 0;
|
||||
min = mid = 0;
|
||||
max = numberOfParticles;
|
||||
while( min != max ) {
|
||||
mid = ( min + max ) / 2;
|
||||
iCmp = strcmp( name, particleSortedList[mid]->name );
|
||||
if( iCmp == 0 ) return( particleSortedList[mid] );
|
||||
if( iCmp < 0 ) {
|
||||
max = mid - 1;
|
||||
if( mid == 0 ) max = 0; }
|
||||
else {
|
||||
min = mid + 1;
|
||||
if( min > max ) min = max;
|
||||
}
|
||||
}
|
||||
mid = min;
|
||||
if( numberOfParticles > 0 ) {
|
||||
iCmp = strcmp( name, particleSortedList[mid]->name );
|
||||
if( iCmp == 0 ) return( particleSortedList[mid] );
|
||||
if( ( iCmp < 0 ) && ( mid != 0 ) ) {
|
||||
mid--;
|
||||
iCmp = strcmp( name, particleSortedList[mid]->name );
|
||||
}
|
||||
}
|
||||
|
||||
if( ( particle = tpia_particle_create( smr ) ) == NULL ) return( NULL );
|
||||
if( ( particle->spectralID = tpi_spectralID_parse( smr, name, &(EOP) ) ) == NULL ) return( tpia_particle_free( smr, particle ) );
|
||||
particle->name = particle->spectralID->name;
|
||||
if( tpia_miscNameToZAm( smr, particle->name, &Z, &A, &m ) != 0 ) return( tpia_particle_free( smr, particle ) );
|
||||
particle->prior = NULL;
|
||||
particle->next = NULL;
|
||||
particle->Z = Z;
|
||||
particle->A = A;
|
||||
particle->m = m;
|
||||
particle->mass = tpia_particleMass_AMU( smr, particle->name );
|
||||
if( !smr_isOk( smr ) ) return( tpia_particle_free( smr, particle ) );
|
||||
particle->fullMass_MeV = tpia_AMU2MeV * particle->mass + particle->spectralID->level;
|
||||
|
||||
if( sizeOfParticleSortedList < ( numberOfParticles + 1 ) ) {
|
||||
if( sizeOfParticleSortedList == 0 ) {
|
||||
sizeOfParticleSortedList = initialSizeOfList; }
|
||||
else {
|
||||
sizeOfParticleSortedList += incrementalSizeOfList;
|
||||
}
|
||||
//if( ( particleSortedList = xData_realloc2( smr, particleSortedList, sizeOfParticleSortedList * sizeof( tpia_particle * ),
|
||||
if( ( particleSortedList = (tpia_particle** ) xData_realloc2( smr, particleSortedList, sizeOfParticleSortedList * sizeof( tpia_particle * ),
|
||||
"particleSortedList" ) ) == NULL ) return( tpia_particle_free( smr, particle ) );
|
||||
}
|
||||
|
||||
if( particleList == NULL ) {
|
||||
particle->ordinal = 0;
|
||||
particleListEnd = particleList = particle; }
|
||||
else {
|
||||
particle->ordinal = particleListEnd->ordinal + 1;
|
||||
particle->prior = particleListEnd;
|
||||
particleListEnd->next = particle;
|
||||
particleListEnd = particle;
|
||||
}
|
||||
|
||||
if( ( mid != 0 ) || ( iCmp > 0 ) ) mid++;
|
||||
for( i = numberOfParticles; i > mid; i-- ) particleSortedList[i] = particleSortedList[i-1];
|
||||
particleSortedList[mid] = particle;
|
||||
numberOfParticles++;
|
||||
|
||||
return( particle );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_particle_printInternalSortedList( statusMessageReporting *smr ) {
|
||||
int tpia_particle_printInternalSortedList( statusMessageReporting * ) {
|
||||
|
||||
int i;
|
||||
|
||||
for( i = 0; i < numberOfParticles; i++ ) printf( "%s\n", particleSortedList[i]->name );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,434 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <gString.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static const int tpia_b_unknown = 0,
|
||||
tpia_b_twoBody_angular = tpia_m_angular,
|
||||
tpia_b_twoBody_formFactor = 0, /* ??? */
|
||||
tpia_b_NBody_Legendre = tpia_m_Legendre,
|
||||
tpia_b_NBody_angular_energy = tpia_m_angular | tpia_m_angular_energy,
|
||||
tpia_b_NBody_uncorrelate_Legendre = tpia_m_angular | tpia_m_Legendre,
|
||||
tpia_b_NBody_pairProduction = 0; /* ??? */
|
||||
|
||||
const char *tpia_productGenre_unknown = "unknown",
|
||||
*tpia_productGenre_twoBody_angular = "twoBody_angular",
|
||||
*tpia_productGenre_twoBody_formFactor = "twoBody_formFactor",
|
||||
*tpia_productGenre_NBody_Legendre = "NBody_Legendre",
|
||||
*tpia_productGenre_NBody_angular_energy = "NBody_angular_energy",
|
||||
*tpia_productGenre_NBody_uncorrelate_Legendre = "NBody_uncorrelate_Legendre",
|
||||
*tpia_productGenre_NBody_pairProduction = "NBody_pairProduction";
|
||||
|
||||
static int _tpia_product_getProductOutgoingData( statusMessageReporting *smr, xData_element *productElement, tpia_product *product );
|
||||
static int _tpia_product_checkRequiredData( statusMessageReporting *smr, int allowMany, int m, xData_element *productElement, tpia_product *product, char *str );
|
||||
static int _tpia_product_getDepositionEnergy( statusMessageReporting *smr, xData_element *depositionEnergy, tpia_product *product );
|
||||
static int _tpia_product_getMultiplicityFromElement( statusMessageReporting *smr, xData_element *data, tpia_product *product );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_product_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_product *product;
|
||||
|
||||
//if( ( product = xData_malloc2( smr, sizeof( tpia_product ), 0, "product" ) ) == NULL ) return( NULL );
|
||||
if( ( product = (tpia_product*) xData_malloc2( smr, sizeof( tpia_product ), 0, "product" ) ) == NULL ) return( NULL );
|
||||
if( tpia_product_initialize( smr, product ) ) product = tpia_product_free( smr, product );
|
||||
return( product );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_product_initialize( statusMessageReporting *smr, tpia_product *product ) {
|
||||
|
||||
memset( product, 0, sizeof( tpia_product ) );
|
||||
if( tpia_angular_initialize( smr, &(product->angular) ) ) return( 1 );
|
||||
if( tpia_Legendre_initialize( smr, &(product->Legendre) ) ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_product_createGetFromElement( statusMessageReporting *smr, tpia_channel *channel, tpia_product *parentProduct,
|
||||
xData_element *productElement ) {
|
||||
|
||||
tpia_product *product;
|
||||
|
||||
if( ( product = tpia_product_create( smr ) ) == NULL ) return( NULL );
|
||||
if( tpia_product_getFromElement( smr, channel, parentProduct, productElement, product ) != 0 ) product = tpia_product_free( smr, product );
|
||||
return( product );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_product_free( statusMessageReporting *smr, tpia_product *product ) {
|
||||
|
||||
tpia_product_release( smr, product );
|
||||
xData_free( smr, product );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_product_release( statusMessageReporting *smr, tpia_product *product) {
|
||||
|
||||
tpia_multiplicity *multiplicity, *multiplicity_next;
|
||||
tpia_product *decayProduct, *nextProduct;
|
||||
|
||||
xData_releaseAttributionList( smr, &(product->attributes) );
|
||||
//product->depositionEnergyGrouped.data = xData_free( smr, product->depositionEnergyGrouped.data );
|
||||
product->depositionEnergyGrouped.data = (double*) xData_free( smr, product->depositionEnergyGrouped.data );
|
||||
|
||||
if( product->multiplicityVsEnergy != NULL ) tpia_multiplicity_free( smr, product->multiplicityVsEnergy );
|
||||
for( multiplicity = product->delayedNeutronMultiplicityVsEnergy; multiplicity != NULL; multiplicity = multiplicity_next ) {
|
||||
multiplicity_next = multiplicity->next;
|
||||
tpia_multiplicity_free( smr, multiplicity );
|
||||
}
|
||||
tpia_angular_release( smr, &(product->angular) );
|
||||
tpia_Legendre_release( smr, &(product->Legendre ) );
|
||||
tpia_angularEnergy_release( smr, &(product->angularEnergy) );
|
||||
for( decayProduct = product->decayChannel.products; decayProduct != NULL; decayProduct = nextProduct ) {
|
||||
nextProduct = decayProduct->next;
|
||||
tpia_product_free( smr, decayProduct );
|
||||
}
|
||||
product->decayChannel.numberOfProducts = 0;
|
||||
product->decayChannel.products = NULL;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_product_getFromElement( statusMessageReporting *smr, tpia_channel *channel, tpia_product *parentProduct, xData_element *productElement,
|
||||
tpia_product *product ) {
|
||||
|
||||
char const *productGenre;
|
||||
char *name, *multiplicity, *e;
|
||||
|
||||
xData_addToAccessed( smr, productElement, 1 );
|
||||
product->channel = channel;
|
||||
product->parentProduct = parentProduct;
|
||||
if( xData_copyAttributionList( smr, &(product->attributes), &(productElement->attributes) ) != 0 ) return( 0 );
|
||||
name = tpia_misc_pointerToAttributeIfAllOk2( smr, productElement, 1, &(product->attributes), "particle" );
|
||||
if( name != NULL ) {
|
||||
product->productID = tpia_particle_getInternalID( smr, name );
|
||||
multiplicity = tpia_misc_pointerToAttributeIfAllOk2( smr, productElement, 1, &(product->attributes), "multiplicity" );
|
||||
if( multiplicity != NULL ) {
|
||||
if( strcmp( multiplicity, "energyDependent" ) && strcmp( multiplicity, "partialProduction" ) ) { /* Must be an integer. */
|
||||
product->multiplicity = strtol( multiplicity, &e, 10 );
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) tpia_misc_setMessageError_Element( smr, NULL, productElement, __FILE__, __LINE__, 1, "bad multiplicity = %s", multiplicity );
|
||||
}
|
||||
}
|
||||
}
|
||||
if( ( productGenre = tpia_misc_pointerToAttributeIfAllOk2( smr, productElement, 1, &(product->attributes), "genre" ) ) != NULL ) {
|
||||
if( strcmp( productGenre, tpia_productGenre_unknown ) == 0 ) {
|
||||
product->b_dataRequired = 0;
|
||||
product->genre = tpia_productGenre_unknown; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_twoBody_angular ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_twoBody_angular;
|
||||
product->genre = tpia_productGenre_twoBody_angular; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_twoBody_formFactor ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_twoBody_formFactor;
|
||||
product->genre = tpia_productGenre_twoBody_formFactor; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_NBody_Legendre ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_NBody_Legendre;
|
||||
product->genre = tpia_productGenre_NBody_Legendre; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_NBody_angular_energy ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_NBody_angular_energy;
|
||||
product->genre = tpia_productGenre_NBody_angular_energy; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_NBody_uncorrelate_Legendre ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_NBody_uncorrelate_Legendre;
|
||||
product->genre = tpia_productGenre_NBody_uncorrelate_Legendre; }
|
||||
else if( strcmp( productGenre, tpia_productGenre_NBody_pairProduction ) == 0 ) {
|
||||
product->b_dataRequired = tpia_b_NBody_pairProduction;
|
||||
product->genre = tpia_productGenre_NBody_pairProduction; }
|
||||
else {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, productElement, __FILE__, __LINE__, 1, "unsupported product genre = %s", productGenre );
|
||||
}
|
||||
if( smr_isOk( smr ) ) _tpia_product_getProductOutgoingData( smr, productElement, product );
|
||||
}
|
||||
return( !smr_isOk( smr ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_product_getProductOutgoingData( statusMessageReporting *smr, xData_element *productElement, tpia_product *product ) {
|
||||
|
||||
xData_element *data;
|
||||
int allowMany = 0;
|
||||
|
||||
for( data = xData_getFirstElement( productElement ); data != NULL; data = xData_getNextElement( data ) ) {
|
||||
if( strcmp( data->name, "depositionEnergy" ) == 0 ) {
|
||||
//if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_depositionEnergy, productElement, product, "deposition energy" ) ) return( 1 );
|
||||
if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_depositionEnergy, productElement, product, (char*)"deposition energy" ) ) return( 1 );
|
||||
if( _tpia_product_getDepositionEnergy( smr, data, product ) != 0 ) return( 1 ); }
|
||||
else if( strcmp( data->name, "multiplicity" ) == 0 ) {
|
||||
allowMany = ( product->channel->fission != NULL ) && ( strcmp( product->productID->name, "n_1" ) == 0 );
|
||||
//if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_multiplicity, productElement, product, "multiplicity" ) ) return( 1 );
|
||||
if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_multiplicity, productElement, product, (char*) "multiplicity" ) ) return( 1 );
|
||||
if( _tpia_product_getMultiplicityFromElement( smr, data, product ) != 0 ) return( 1 ); }
|
||||
else if( strcmp( data->name, "angular" ) == 0 ) {
|
||||
//if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_angular, productElement, product, "angular" ) ) return( 1 );
|
||||
if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_angular, productElement, product, (char*) "angular" ) ) return( 1 );
|
||||
if( tpia_angular_getFromElement( smr, data, &(product->angular) ) != 0 ) return( 1 ); }
|
||||
else if( strcmp( data->name, "Legendre" ) == 0 ) {
|
||||
//if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_Legendre, productElement, product, "Legendre" ) ) return( 1 );
|
||||
if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_Legendre, productElement, product, (char*) "Legendre" ) ) return( 1 );
|
||||
if( tpia_Legendre_getFromElement( smr, data, &(product->Legendre) ) != 0 ) return( 1 ); }
|
||||
else if( strcmp( data->name, "angularEnergy" ) == 0 ) {
|
||||
if( _tpia_product_checkRequiredData( smr, allowMany, tpia_m_angular_energy, productElement, product, (char*) "angularEnergy" ) ) return( 1 );
|
||||
if( tpia_angularEnergy_getFromElement( smr, data, &(product->angularEnergy) ) != 0 ) return( 1 ); }
|
||||
else if( strcmp( data->name, "decayChannel" ) == 0 ) {
|
||||
xData_addToAccessed( smr, data, 1 );
|
||||
if( tpia_product_getDecayChannelFromElement( smr, data, product->channel, product, &(product->decayChannel.products) ) ) return( 1 ); }
|
||||
else {
|
||||
printf( " %s\n", data->name );
|
||||
}
|
||||
}
|
||||
if( ( product->b_dataPresent >> tpia_m_commonShift ) != ( product->b_dataRequired >> tpia_m_commonShift ) ) {
|
||||
gString gStr;
|
||||
int missing = ~product->b_dataPresent & product->b_dataRequired;
|
||||
char const *str = "";
|
||||
if( gString_initialize( NULL, &gStr, 100, 100 ) == 0 ) {
|
||||
if( missing & tpia_m_angular ) gString_addTo( NULL, &gStr, "angular " );
|
||||
if( missing & tpia_m_formFactor ) gString_addTo( NULL, &gStr, "formFactor " );
|
||||
if( missing & tpia_m_Legendre ) gString_addTo( NULL, &gStr, "Legendre " );
|
||||
if( missing & tpia_m_angular_energy ) gString_addTo( NULL, &gStr, "angular_energy " );
|
||||
str = gString_string( NULL, &gStr );
|
||||
}
|
||||
tpia_misc_setMessageError_Element( smr, NULL, productElement, __FILE__, __LINE__, 1, "missing data %s for product %s", str,
|
||||
product->productID->name );
|
||||
gString_release( NULL, &gStr );
|
||||
return( 1 );
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_product_checkRequiredData(statusMessageReporting *smr, int allowMany, int m, xData_element *productElement, tpia_product *product, char *str) {
|
||||
|
||||
if( !allowMany && ( product->b_dataPresent & m ) ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, productElement, __FILE__, __LINE__, 1, "multiple %s", str );
|
||||
return( 1 );
|
||||
}
|
||||
if( ( m & ( tpia_m_depositionEnergy | tpia_m_multiplicity | tpia_m_decayChannel ) ) == 0 ) {
|
||||
if( ( product->b_dataRequired & m ) == 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, productElement, __FILE__, __LINE__, 1, "extra product data %s", str );
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
product->b_dataPresent += m;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_product_getDecayChannelFromElement( statusMessageReporting *smr, xData_element *parentElement, tpia_channel *channel, tpia_product *parentProduct,
|
||||
tpia_product **priorProductNext ) {
|
||||
|
||||
xData_elementList *list;
|
||||
tpia_product *product;
|
||||
int i, status = 0;
|
||||
|
||||
list = xData_getElementsByTagName( smr, parentElement, "product" );
|
||||
for( i = 0; i < list->n; i++ ) {
|
||||
if( ( product = tpia_product_createGetFromElement( smr, channel, parentProduct, list->items[i].element ) ) == NULL ) {
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
if( parentProduct == NULL ) {
|
||||
channel->decayChannel.m1_fullMass_MeV = channel->target->projectileID->fullMass_MeV;
|
||||
channel->decayChannel.m2_fullMass_MeV = channel->target->targetID->fullMass_MeV;
|
||||
channel->decayChannel.numberOfProducts++; }
|
||||
else {
|
||||
channel->decayChannel.m1_fullMass_MeV = parentProduct->productID->fullMass_MeV;
|
||||
channel->decayChannel.m2_fullMass_MeV = 0.;
|
||||
parentProduct->decayChannel.numberOfProducts++;
|
||||
}
|
||||
*priorProductNext = product;
|
||||
priorProductNext = &(product->next);
|
||||
}
|
||||
xData_freeElementList( smr, list );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_product_getDepositionEnergy( statusMessageReporting *smr, xData_element *depositionEnergy, tpia_product *product ) {
|
||||
|
||||
xData_element *data;
|
||||
|
||||
xData_addToAccessed( smr, depositionEnergy, 1 );
|
||||
for( data = xData_getFirstElement( depositionEnergy ); data != NULL; data = xData_getNextElement( data ) ) {
|
||||
if( strcmp( data->name, "grouped" ) == 0 ) {
|
||||
if( tpia_misc_get2d_xShared_yHistogram_data_Grouped( smr, data, &(product->depositionEnergyGrouped) ) ) return( 1 ); }
|
||||
else {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, depositionEnergy, __FILE__, __LINE__, 1, "unsupported deposition energy type = %s", data->name );
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_product_getMultiplicityFromElement( statusMessageReporting *smr, xData_element *data, tpia_product *product ) {
|
||||
|
||||
tpia_multiplicity *multiplicity, *prior, *current;
|
||||
const char *timeScale;
|
||||
int isDelayedNeutrons;
|
||||
double dTimeScale;
|
||||
|
||||
if( tpia_multiplicity_getTimeScaleFromElement( smr, data, &timeScale, &isDelayedNeutrons, &dTimeScale ) ) return( 1 );
|
||||
if( ( isDelayedNeutrons == 0 ) && ( product->multiplicityVsEnergy != NULL ) ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, data, __FILE__, __LINE__, 1, "extra product multiplicity data" );
|
||||
return( 1 );
|
||||
}
|
||||
if( ( multiplicity = tpia_multiplicity_createGetFromElement( smr, data, product->channel->target->nGroups ) ) == NULL ) return( 1 );
|
||||
if( isDelayedNeutrons == 0 ) {
|
||||
product->multiplicityVsEnergy = multiplicity; }
|
||||
else {
|
||||
if( product->delayedNeutronMultiplicityVsEnergy == NULL ) {
|
||||
product->delayedNeutronMultiplicityVsEnergy = multiplicity; }
|
||||
else {
|
||||
if( product->delayedNeutronMultiplicityVsEnergy->timeScale > multiplicity->timeScale ) {
|
||||
multiplicity->next = product->delayedNeutronMultiplicityVsEnergy;
|
||||
product->delayedNeutronMultiplicityVsEnergy = multiplicity; }
|
||||
else {
|
||||
for( current = product->delayedNeutronMultiplicityVsEnergy->next, prior = product->delayedNeutronMultiplicityVsEnergy; current != NULL;
|
||||
current = current->next ) {
|
||||
if( current->timeScale > multiplicity->timeScale ) {
|
||||
multiplicity->next = current;
|
||||
prior->next = multiplicity;
|
||||
break;
|
||||
}
|
||||
prior = current;
|
||||
}
|
||||
if( current == NULL ) prior->next = multiplicity;
|
||||
}
|
||||
}
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//long tpia_product_dataRequired( statusMessageReporting *smr, tpia_product *product ) {
|
||||
long tpia_product_dataRequired( statusMessageReporting *, tpia_product *product ) {
|
||||
|
||||
return( product->b_dataRequired );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_product *tpia_product_getFirstProduct( tpia_product *product ) {
|
||||
|
||||
return( tpia_decayChannel_getFirstProduct( &(product->decayChannel) ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//tpia_product *tpia_product_getProductByIndex( statusMessageReporting *smr, tpia_product *product, int index ) {
|
||||
tpia_product *tpia_product_getProductByIndex( statusMessageReporting *, tpia_product *product, int index ) {
|
||||
|
||||
int i = 0;
|
||||
tpia_product *p;
|
||||
|
||||
if( index < 0 ) return( NULL );
|
||||
for( p = tpia_product_getFirstProduct( product ); ( p != NULL ) && ( i < index ); p = tpia_decayChannel_getNextProduct( p ), i++ ) ;
|
||||
return( p );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_product_doesDecay( statusMessageReporting *smr, tpia_product *product ) {
|
||||
int tpia_product_doesDecay( statusMessageReporting *, tpia_product *product ) {
|
||||
|
||||
return( product->decayChannel.products != NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_product_numberOfProducts( statusMessageReporting *smr, tpia_product *product ) {
|
||||
int tpia_product_numberOfProducts( statusMessageReporting *, tpia_product *product ) {
|
||||
|
||||
return( product->decayChannel.numberOfProducts );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_product_isDataPresent( statusMessageReporting *smr, tpia_product *product, int b_data ) {
|
||||
int tpia_product_isDataPresent( statusMessageReporting *, tpia_product *product, int b_data ) {
|
||||
|
||||
return( product->b_dataPresent && b_data );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_product_sampleMultiplicity( statusMessageReporting *smr, tpia_product *product, double e_in, double r ) {
|
||||
int tpia_product_sampleMultiplicity( statusMessageReporting *, tpia_product *product, double e_in, double r ) {
|
||||
|
||||
int i, multiplicity;
|
||||
tpia_multiplicity *multiplicityVsEnergy = product->multiplicityVsEnergy;
|
||||
double *p = multiplicityVsEnergy->pointwise, dMult;
|
||||
|
||||
if( e_in <= p[0] ) {
|
||||
dMult = p[1]; }
|
||||
else if( e_in >= p[2 * ( multiplicityVsEnergy->numberOfPointwise - 1 )] ) {
|
||||
dMult = p[2 * multiplicityVsEnergy->numberOfPointwise - 1]; }
|
||||
else {
|
||||
for( i = 0; i < multiplicityVsEnergy->numberOfPointwise - 1; i++, p += 2 ) if( e_in < p[2] ) break;
|
||||
dMult = ( e_in - p[0] ) / ( p[2] - p[0] );
|
||||
dMult = dMult * p[3] + ( 1. - dMult ) * p[1];
|
||||
}
|
||||
multiplicity = (int) dMult;
|
||||
if( r < ( dMult - multiplicity ) ) multiplicity++;
|
||||
|
||||
return( multiplicity );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include "string.h"
|
||||
#include "tpia_target.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//Need to here beacaus these values used in MACRO //this comment is out of date
|
||||
const char * tpia_samplingMethods_constant = "constant";
|
||||
const char * tpia_samplingMethods_linear = "linear";
|
||||
//110527 TK edited the macro (include/tpia_target.hh) see the file.
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_samplingMethods_initialize( statusMessageReporting *smr, tpia_samplingMethods *samplingMethods ) {
|
||||
int tpia_samplingMethods_initialize( statusMessageReporting *, tpia_samplingMethods *samplingMethods ) {
|
||||
|
||||
memset( samplingMethods, 0, sizeof( tpia_samplingMethods ) );
|
||||
samplingMethods->angular_equalProbableBinMethod = tpia_samplingMethods_linear;
|
||||
return( 0 );
|
||||
}
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,421 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static int _tpia_target_releaseAndReturnOne( statusMessageReporting *smr, tpia_target *target );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_target_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_target *target;
|
||||
|
||||
//if( ( target = xData_malloc2( smr, sizeof( tpia_target ), 0, "target" ) ) == NULL ) return( NULL );
|
||||
if( ( target = (tpia_target*) xData_malloc2( smr, sizeof( tpia_target ), 0, "target" ) ) == NULL ) return( NULL );
|
||||
if( tpia_target_initialize( smr, target ) ) target = tpia_target_free( smr, target );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_initialize( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
memset( target, 0, sizeof( tpia_target ) );
|
||||
tpia_samplingMethods_initialize( smr, &(target->samplingMethods) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_target_createRead( statusMessageReporting *smr, const char *fileName ) {
|
||||
|
||||
tpia_target *target;
|
||||
|
||||
if( ( target = tpia_target_create( smr ) ) == NULL ) return( NULL );
|
||||
//if( tpia_target_read( smr, target, fileName ) != 0 ) target = xData_free( smr, target );
|
||||
if( tpia_target_read( smr, target, fileName ) != 0 ) target = (tpia_target*) xData_free( smr, target );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_readFromMap( statusMessageReporting *smr, tpia_target *target, tpia_map *map, const char *evaluation, const char *projectileName,
|
||||
const char *targetName ) {
|
||||
|
||||
char *targetPath;
|
||||
|
||||
if( ( targetPath = tpia_map_findTarget( smr, map, evaluation, projectileName, targetName ) ) == NULL ) return( 1 );
|
||||
return( tpia_target_read( smr, target, targetPath ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_target_createReadFromMap( statusMessageReporting *smr, tpia_map *map, const char *evaluation, const char *projectileName,
|
||||
const char *targetName ) {
|
||||
|
||||
char *targetPath;
|
||||
tpia_target *target;
|
||||
|
||||
targetPath = tpia_map_findTarget( smr, map, evaluation, projectileName, targetName );
|
||||
if( targetPath == NULL ) return( NULL );
|
||||
target = tpia_target_createRead( smr, targetPath );
|
||||
xData_free( smr, targetPath );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target *tpia_target_free( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
tpia_target_release( smr, target );
|
||||
xData_free( smr, target );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_release( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
int i;
|
||||
|
||||
//target->path = xData_free( smr, target->path );
|
||||
target->path = (char*) xData_free( smr, target->path );
|
||||
//target->absPath = xData_free( smr, target->absPath );
|
||||
target->absPath = (char*) xData_free( smr, target->absPath );
|
||||
xData_releaseAttributionList( smr, &(target->attributes) );
|
||||
for( i = 0; i < target->nHeatedTargets; i++ ) {
|
||||
//target->heatedTargets[i].path = xData_free( smr, target->heatedTargets[i].path );
|
||||
target->heatedTargets[i].path = (char*) xData_free( smr, target->heatedTargets[i].path );
|
||||
//target->heatedTargets[i].contents = xData_free( smr, target->heatedTargets[i].contents );
|
||||
target->heatedTargets[i].contents = (char*) xData_free( smr, target->heatedTargets[i].contents );
|
||||
if( target->heatedTargets[i].heatedTarget != NULL ) tpia_target_heated_free( smr, target->heatedTargets[i].heatedTarget );
|
||||
}
|
||||
//target->heatedTargets = xData_free( smr, target->heatedTargets );
|
||||
target->heatedTargets = (tpia_target_heated_info*) xData_free( smr, target->heatedTargets );
|
||||
//target->readHeatedTargets = xData_free( smr, target->readHeatedTargets );
|
||||
target->readHeatedTargets = (tpia_target_heated_info**) xData_free( smr, target->readHeatedTargets );
|
||||
tpia_target_initialize( smr, target );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_read( statusMessageReporting *smr, tpia_target *target, const char *fileName ) {
|
||||
/*
|
||||
* If a target has already been read into this target, user must have called tpia_target_release before calling this routine.
|
||||
* Otherwise, there will be memory leaks.
|
||||
*/
|
||||
xData_document *doc;
|
||||
xData_element *element, *child;
|
||||
int i, iHeated, nHeated = 0, status = 1;
|
||||
double temperature;
|
||||
//fix for gcc4.6 warings 110602
|
||||
//char *pReturnValue, *name;
|
||||
char *name;
|
||||
char const *contents;
|
||||
|
||||
tpia_target_initialize( smr, target );
|
||||
if( ( target->path = xDataMisc_allocateCopyString2( smr, fileName, "path" ) ) == NULL ) return( status );
|
||||
if( ( target->absPath = xDataMisc_getAbsPath( smr, fileName ) ) == NULL ) return( _tpia_target_releaseAndReturnOne( smr, target ) );
|
||||
if( ( doc = xData_parseReadFile( smr, fileName, NULL, NULL ) ) == NULL ) return( _tpia_target_releaseAndReturnOne( smr, target ) );
|
||||
element = xData_getDocumentsElement( doc );
|
||||
if( strcmp( element->name, "xTarget" ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "input file's top element must be xTarget and not %s", element->name ); }
|
||||
else {
|
||||
//pReturnValue = ( xData_copyAttributionList( smr, &(target->attributes), &(element->attributes) ) ) ? NULL : target->path;
|
||||
//fix for gcc4.6 warings 110602
|
||||
xData_copyAttributionList( smr, &(target->attributes),&(element->attributes) );
|
||||
name = tpia_misc_pointerToAttributeIfAllOk2( smr, element, 1, &(target->attributes), "projectile" );
|
||||
if( smr_isOk( smr ) ) target->projectileID = tpia_particle_getInternalID( smr, name );
|
||||
if( smr_isOk( smr ) && ( name = tpia_misc_pointerToAttributeIfAllOk2( smr, element, 1, &(target->attributes), "target" ) ) != NULL ) {
|
||||
if( smr_isOk( smr ) && ( target->targetID = tpia_particle_getInternalID( smr, name ) ) != NULL ) {
|
||||
status = 0;
|
||||
for( nHeated = 0, child = xData_getFirstElement( element ); child != NULL; nHeated++, child = xData_getNextElement( child ) ) {
|
||||
if( strcmp( child->name, "target" ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "element can only have target sub-elements%s",
|
||||
element->name );
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( status == 0 ) {
|
||||
//if( ( target->heatedTargets = xData_malloc2( smr, nHeated * sizeof( tpia_target_heated_info ), 1, "heatedTargets" ) ) == NULL ) {
|
||||
if( ( target->heatedTargets = (tpia_target_heated_info*) xData_malloc2( smr, nHeated * sizeof( tpia_target_heated_info ), 1, "heatedTargets" ) ) == NULL ) {
|
||||
status = 1; }
|
||||
else {
|
||||
//if( ( target->readHeatedTargets = xData_malloc2( smr, nHeated * sizeof( tpia_target_heated_info * ), 1, "heatedTargets" ) ) == NULL )
|
||||
if( ( target->readHeatedTargets = (tpia_target_heated_info**) xData_malloc2( smr, nHeated * sizeof( tpia_target_heated_info * ), 1, "heatedTargets" ) ) == NULL )
|
||||
status = 1;
|
||||
}
|
||||
for( nHeated = 0, child = xData_getFirstElement( element ); ( status == 0 ) && ( child != NULL );
|
||||
nHeated++, child = xData_getNextElement( child ) ) {
|
||||
if( ( i = xData_convertAttributeToDouble( smr, child, "temperature", &temperature ) ) != 0 ) {
|
||||
if( i > 0 ) smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "target does not have a temperature attribute" );
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
for( iHeated = 0; iHeated < nHeated; iHeated++ ) if( target->heatedTargets[iHeated].temperature > temperature ) break;
|
||||
if( iHeated < nHeated ) for( i = nHeated; i >= iHeated; i-- ) target->heatedTargets[i+1] = target->heatedTargets[i];
|
||||
target->heatedTargets[iHeated].temperature = temperature;
|
||||
target->heatedTargets[iHeated].path = NULL;
|
||||
target->heatedTargets[iHeated].contents = NULL;
|
||||
target->heatedTargets[iHeated].heatedTarget = NULL;
|
||||
if( ( contents = xData_getAttributesValueInElement( child, "contents" ) ) != NULL ) {
|
||||
if( ( target->heatedTargets[iHeated].contents = xDataMisc_allocateCopyString2( smr, contents, "contents" ) ) == NULL ) {
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( ( contents = xData_getAttributesValueInElement( child, "file" ) ) == NULL ) {
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
//if((target->heatedTargets[iHeated].path = xData_malloc2(smr, strlen( target->absPath ) + strlen( contents ) + 2, 0, "path")) == NULL) {
|
||||
if((target->heatedTargets[iHeated].path = (char*) xData_malloc2(smr, strlen( target->absPath ) + strlen( contents ) + 2, 0, "path")) == NULL) {
|
||||
status = 1;
|
||||
break;
|
||||
}
|
||||
strcpy( target->heatedTargets[iHeated].path, target->absPath );
|
||||
*strrchr( target->heatedTargets[iHeated].path, '/' ) = 0;
|
||||
strcat( target->heatedTargets[iHeated].path, "/" );
|
||||
strcat( target->heatedTargets[iHeated].path, contents );
|
||||
target->nHeatedTargets++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
xData_parseFree( smr, doc );
|
||||
if( status == 0 ) {
|
||||
for( i = 0; i < nHeated; i++ ) target->heatedTargets[i].ordinal = i;
|
||||
for( i = 0; i < nHeated; i++ ) if( target->heatedTargets[i].contents == NULL ) break;
|
||||
if( i == nHeated ) i = 0; /* All heated targets are crossSection only. */
|
||||
if( tpia_target_readHeatedTarget( smr, target, i, 0 ) == 0 ) {
|
||||
target->baseHeatedTarget = target->heatedTargets[i].heatedTarget; }
|
||||
else {
|
||||
tpia_target_release( NULL, target );
|
||||
status = 1;
|
||||
} }
|
||||
else {
|
||||
tpia_target_release( smr, target );
|
||||
}
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//char *tpia_target_getAttributesValue( statusMessageReporting *smr, tpia_target *target, char const *name ) {
|
||||
char *tpia_target_getAttributesValue( statusMessageReporting *, tpia_target *target, char const *name ) {
|
||||
|
||||
return( xData_getAttributesValue( &(target->attributes), name ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_target_getTemperatures( statusMessageReporting *smr, tpia_target *target, double *temperatures ) {
|
||||
int tpia_target_getTemperatures( statusMessageReporting *, tpia_target *target, double *temperatures ) {
|
||||
|
||||
int i;
|
||||
|
||||
if( temperatures != NULL ) for( i = 0; i < target->nHeatedTargets; i++ ) temperatures[i] = target->heatedTargets[i].temperature;
|
||||
return( target->nHeatedTargets );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_readHeatedTarget( statusMessageReporting *smr, tpia_target *target, int index, int checkElememtsForAccess ) {
|
||||
|
||||
int i;
|
||||
|
||||
if( ( index < 0 ) || ( index >= target->nHeatedTargets ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "temperature index = %d out of range (0 <= index < %d", index, target->nHeatedTargets );
|
||||
return( -1 );
|
||||
}
|
||||
if( target->heatedTargets[index].heatedTarget != NULL ) return( 1 );
|
||||
target->heatedTargets[index].heatedTarget = tpia_target_heated_createRead( smr, target->heatedTargets[index].path, checkElememtsForAccess );
|
||||
if( target->heatedTargets[index].heatedTarget != NULL ) {
|
||||
target->heatedTargets[index].heatedTarget->ordinal = target->heatedTargets[index].ordinal;
|
||||
for( i = target->nReadHeatedTargets; i > 0; i-- ) {
|
||||
if( target->readHeatedTargets[i-1]->temperature < target->heatedTargets[index].temperature ) break;
|
||||
target->readHeatedTargets[i] = target->readHeatedTargets[i-1];
|
||||
}
|
||||
target->readHeatedTargets[i] = &(target->heatedTargets[i]);
|
||||
target->nReadHeatedTargets++;
|
||||
}
|
||||
return( ( target->heatedTargets[index].heatedTarget == NULL ? -1 : 0 ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target_heated *tpia_target_getHeatedTargetAtIndex_ReadIfNeeded( statusMessageReporting *smr, tpia_target *target, int index ) {
|
||||
|
||||
if( ( index < 0 ) || ( index >= target->nHeatedTargets ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "temperature index = %d out of range (0 <= index < %d", index, target->nHeatedTargets );
|
||||
return( NULL );
|
||||
}
|
||||
if( target->heatedTargets[index].heatedTarget == NULL ) tpia_target_readHeatedTarget( smr, target, index, 0 );
|
||||
return( target->heatedTargets[index].heatedTarget );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target_heated *tpia_target_getHeatedTargetAtTIndex( statusMessageReporting *smr, tpia_target *target, int index ) {
|
||||
|
||||
if( ( index < 0 ) || ( index >= target->nHeatedTargets ) ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "temperature index = %d out of range (0 <= index < %d", index, target->nHeatedTargets );
|
||||
return( NULL );
|
||||
}
|
||||
if( target->heatedTargets[index].heatedTarget == NULL ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "temperature index = %d not read in", index );
|
||||
return( NULL );
|
||||
}
|
||||
return( target->heatedTargets[index].heatedTarget );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_numberOfChannels( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
return( tpia_target_heated_numberOfChannels( smr, target->baseHeatedTarget ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_numberOfProductionChannels( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
return( tpia_target_heated_numberOfProductionChannels( smr, target->baseHeatedTarget ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
xData_Int tpia_target_getEnergyGridAtTIndex( statusMessageReporting *smr, tpia_target *target, int index, double **energyGrid ) {
|
||||
|
||||
tpia_target_heated *heated = tpia_target_getHeatedTargetAtTIndex( smr, target, index );
|
||||
|
||||
if( !smr_isOk( smr ) ) return( -1 );
|
||||
return( tpia_target_heated_getEnergyGrid( smr, heated, energyGrid ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_1dData *tpia_target_getTotalCrossSectionAtTIndex( statusMessageReporting *smr, tpia_target *target, int index, int crossSectionType ) {
|
||||
|
||||
tpia_target_heated *heated = tpia_target_getHeatedTargetAtTIndex( smr, target, index );
|
||||
|
||||
if( !smr_isOk( smr ) ) return( NULL );
|
||||
if( crossSectionType == tpia_crossSectionType_grouped ) {
|
||||
return( &(heated->totalCrossSectionGrouped) ); }
|
||||
else if( crossSectionType == tpia_crossSectionType_pointwise ) {
|
||||
return( &(heated->totalCrossSectionPointwise) );
|
||||
}
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "Invalue crossSectionType = %d", crossSectionType );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double tpia_target_getTotalCrossSectionAtTAndE( statusMessageReporting *smr, tpia_target *target, double T, xData_Int iEg, double e_in,
|
||||
int crossSectionType ) {
|
||||
|
||||
int i;
|
||||
double xsec = 0., xsec1, xsec2;
|
||||
|
||||
for( i = 0; i < target->nReadHeatedTargets; i++ ) if( target->readHeatedTargets[i]->temperature > T ) break;
|
||||
if( i == 0 ) {
|
||||
xsec = tpia_target_heated_getTotalCrossSectionAtE( smr, target->readHeatedTargets[0]->heatedTarget, iEg, e_in, crossSectionType ); }
|
||||
else if( i == target->nReadHeatedTargets ) {
|
||||
xsec = tpia_target_heated_getTotalCrossSectionAtE( smr, target->readHeatedTargets[i-1]->heatedTarget, iEg, e_in, crossSectionType ); }
|
||||
else {
|
||||
xsec1 = tpia_target_heated_getTotalCrossSectionAtE( smr, target->readHeatedTargets[i-1]->heatedTarget, iEg, e_in, crossSectionType );
|
||||
xsec2 = tpia_target_heated_getTotalCrossSectionAtE( smr, target->readHeatedTargets[i ]->heatedTarget, iEg, e_in, crossSectionType );
|
||||
xsec = ( ( target->readHeatedTargets[i]->temperature - T ) * xsec1 + ( T - target->readHeatedTargets[i-1]->temperature ) * xsec2 ) /
|
||||
( target->readHeatedTargets[i]->temperature - target->readHeatedTargets[i-1]->temperature );
|
||||
}
|
||||
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double tpia_target_getIndexChannelCrossSectionAtE( statusMessageReporting *smr, tpia_target *target, int index, double T, xData_Int iEg, double e_in,
|
||||
int crossSectionType ) {
|
||||
|
||||
int i;
|
||||
double xsec = 0., xsec1, xsec2;
|
||||
|
||||
for( i = 0; i < target->nReadHeatedTargets; i++ ) if( target->readHeatedTargets[i]->temperature > T ) break;
|
||||
if( i == 0 ) {
|
||||
xsec = tpia_target_heated_getIndexChannelCrossSectionAtE( smr, target->readHeatedTargets[0]->heatedTarget, index, iEg, e_in, crossSectionType ); }
|
||||
else if( i == target->nReadHeatedTargets ) {
|
||||
xsec = tpia_target_heated_getIndexChannelCrossSectionAtE( smr, target->readHeatedTargets[i-1]->heatedTarget, index, iEg, e_in, crossSectionType ); }
|
||||
else {
|
||||
xsec1 = tpia_target_heated_getIndexChannelCrossSectionAtE(smr, target->readHeatedTargets[i-1]->heatedTarget, index, iEg, e_in, crossSectionType);
|
||||
xsec2 = tpia_target_heated_getIndexChannelCrossSectionAtE(smr, target->readHeatedTargets[i ]->heatedTarget, index, iEg, e_in, crossSectionType);
|
||||
xsec = ( ( target->readHeatedTargets[i]->temperature - T ) * xsec1 + ( T - target->readHeatedTargets[i-1]->temperature ) * xsec2 ) /
|
||||
( target->readHeatedTargets[i]->temperature - target->readHeatedTargets[i-1]->temperature );
|
||||
}
|
||||
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_target_sampleIndexChannelProductsAtE( statusMessageReporting *smr, tpia_target *target, int index, double T,
|
||||
int tpia_target_sampleIndexChannelProductsAtE( statusMessageReporting *smr, tpia_target *target, int index, double ,
|
||||
tpia_decaySamplingInfo *decaySamplingInfo, int nProductData, tpia_productOutgoingData *productData ) {
|
||||
|
||||
return( tpia_target_heated_sampleIndexChannelProductsAtE( smr, target->baseHeatedTarget, index, decaySamplingInfo,
|
||||
nProductData, productData ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_target_releaseAndReturnOne( statusMessageReporting *smr, tpia_target *target ) {
|
||||
|
||||
tpia_target_release( smr, target );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,383 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <tpia_target.h>
|
||||
#include <tpia_misc.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
static void _tpia_target_heated_getEnergyGridAndAllocateTotalCrossSections( statusMessageReporting *smr, tpia_target_heated *target, xData_element *element );
|
||||
static int _tpia_target_heated_releaseAndReturnOne( statusMessageReporting *smr, xData_document *doc, tpia_target_heated *target );
|
||||
static int _tpia_target_heated_checkElememtsForAccess( statusMessageReporting *smr, xData_document *doc );
|
||||
static int _tpia_target_heated_checkElememtsForAccess2( statusMessageReporting *smr, xData_element *element );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target_heated *tpia_target_heated_create( statusMessageReporting *smr ) {
|
||||
|
||||
tpia_target_heated *target;
|
||||
|
||||
//if( ( target = xData_malloc2( smr, sizeof( tpia_target_heated ), 0, "target" ) ) == NULL ) return( NULL );
|
||||
if( ( target = (tpia_target_heated*) xData_malloc2( smr, sizeof( tpia_target_heated ), 0, "target" ) ) == NULL ) return( NULL );
|
||||
//if( tpia_target_heated_initialize( smr, target ) ) target = xData_free( smr, target );
|
||||
if( tpia_target_heated_initialize( smr, target ) ) target = (tpia_target_heated*) xData_free( smr, target );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_target_heated_initialize( statusMessageReporting *smr, tpia_target_heated *target ) {
|
||||
int tpia_target_heated_initialize( statusMessageReporting *, tpia_target_heated *target ) {
|
||||
|
||||
memset( target, 0, sizeof( tpia_target_heated ) );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target_heated *tpia_target_heated_createRead( statusMessageReporting *smr, const char *fileName, int checkElememtsForAccess ) {
|
||||
|
||||
tpia_target_heated *target;
|
||||
|
||||
if( ( target = tpia_target_heated_create( smr ) ) == NULL ) return( NULL );
|
||||
//if( tpia_target_heated_read( smr, target, fileName, checkElememtsForAccess ) != 0 ) target = xData_free( smr, target );
|
||||
if( tpia_target_heated_read( smr, target, fileName, checkElememtsForAccess ) != 0 ) target = (tpia_target_heated*) xData_free( smr, target );
|
||||
return( target );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_target_heated *tpia_target_heated_free( statusMessageReporting *smr, tpia_target_heated *target ) {
|
||||
|
||||
tpia_target_heated_release( smr, target );
|
||||
xData_free( smr, target );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_heated_release( statusMessageReporting *smr, tpia_target_heated *target ) {
|
||||
|
||||
int i;
|
||||
|
||||
//target->path = xData_free( smr, target->path );
|
||||
target->path = (char*) xData_free( smr, target->path );
|
||||
//target->absPath = xData_free( smr, target->absPath );
|
||||
target->absPath = (char*) xData_free( smr, target->absPath );
|
||||
target->energyGridLength = 0;
|
||||
//target->energyGrid = xData_free( smr, target->energyGrid );
|
||||
target->energyGrid = (double*) xData_free( smr, target->energyGrid );
|
||||
//target->kerma = xData_free( smr, target->kerma );
|
||||
target->kerma = (double*) xData_free( smr, target->kerma );
|
||||
//target->totalCrossSectionPointwise.data = xData_free( smr, target->totalCrossSectionPointwise.data );
|
||||
target->totalCrossSectionPointwise.data = (double*) xData_free( smr, target->totalCrossSectionPointwise.data );
|
||||
//target->totalCrossSectionGrouped.data = xData_free( smr, target->totalCrossSectionGrouped.data );
|
||||
target->totalCrossSectionGrouped.data = (double*) xData_free( smr, target->totalCrossSectionGrouped.data );
|
||||
xData_releaseAttributionList( smr, &(target->attributes) );
|
||||
for( i = 0; i < target->nChannels; i++ ) tpia_channel_free( smr, target->channels[i] );
|
||||
target->nChannels = 0;
|
||||
//target->channels = xData_free( smr, target->channels );
|
||||
target->channels = (tpia_channel**) xData_free( smr, target->channels );
|
||||
for( i = 0; i < target->nProductionChannels; i++ ) tpia_channel_free( smr, target->productionChannels[i] );
|
||||
target->nProductionChannels = 0;
|
||||
//target->productionChannels = xData_free( smr, target->productionChannels );
|
||||
target->productionChannels = (tpia_channel**) xData_free( smr, target->productionChannels );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_heated_read( statusMessageReporting *smr, tpia_target_heated *target, const char *fileName, int checkElememtsForAccess ) {
|
||||
/*
|
||||
* If a target has already been read into this target, user must have called tpia_target_heated_release before calling this routine.
|
||||
* Otherwise, there will be memory leaks.
|
||||
*/
|
||||
xData_document *doc = NULL;
|
||||
xData_element *element, *channelElement, *channels;
|
||||
int nChannels;
|
||||
tpia_channel *channel;
|
||||
char *name;
|
||||
xData_Int i, j;
|
||||
|
||||
tpia_target_heated_initialize( smr, target );
|
||||
if( ( target->path = xDataMisc_allocateCopyString2( smr, fileName, "path" ) ) == NULL ) return( 1 );
|
||||
if( ( target->absPath = xDataMisc_getAbsPath( smr, fileName ) ) == NULL ) return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) );
|
||||
if( ( doc = xData_parseReadFile( smr, fileName, NULL, NULL ) ) == NULL ) return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) );
|
||||
element = xData_getDocumentsElement( doc );
|
||||
xData_addToAccessed( smr, element, 1 );
|
||||
if( xData_convertAttributeTo_xData_Int( smr, element, "nGroups", &i ) != 0 ) return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) );
|
||||
target->nGroups = (int) i;
|
||||
if( strcmp( element->name, "xTargetHeated" ) != 0 ) {
|
||||
tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "input file's top element must be xTargetHeated and not %s",
|
||||
element->name ); }
|
||||
else {
|
||||
xData_copyAttributionList( smr, &(target->attributes), &(element->attributes) );
|
||||
if( smr_isOk( smr ) ) target->contents = xData_getAttributesValue( &(target->attributes), "contents" );
|
||||
if( ( name = tpia_misc_pointerToAttributeIfAllOk3( smr, target->absPath, 1, &(target->attributes), "projectile" ) ) != NULL )
|
||||
target->projectileID = tpia_particle_getInternalID( smr, name );
|
||||
if( ( name = tpia_misc_pointerToAttributeIfAllOk3( smr, target->absPath, 1, &(target->attributes), "target" ) ) != NULL )
|
||||
target->targetID = tpia_particle_getInternalID( smr, name );
|
||||
if( smr_isOk( smr ) ) _tpia_target_heated_getEnergyGridAndAllocateTotalCrossSections( smr, target, element );
|
||||
if( smr_isOk( smr ) ) { /* Get channels. */
|
||||
//if( ( channels = xData_getOneElementByTagName( smr, element, "channels", 1 ) ) == NULL )
|
||||
if( ( channels = xData_getOneElementByTagName( smr, element, (char*)"channels", 1 ) ) == NULL )
|
||||
return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) );
|
||||
xData_addToAccessed( smr, channels, 1 );
|
||||
if( ( nChannels = xData_numberOfElementsByTagName( smr, channels, "channel" ) ) > 0 ) {
|
||||
//if( ( target->channels = xData_malloc2( smr, nChannels * sizeof( tpia_channel * ), 1, "channels" ) ) == NULL )
|
||||
if( ( target->channels = (tpia_channel**) xData_malloc2( smr, nChannels * sizeof( tpia_channel * ), 1, "channels" ) ) == NULL )
|
||||
return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) );
|
||||
for( channelElement = xData_getFirstElement( channels ); channelElement != NULL; channelElement = xData_getNextElement( channelElement ) ) {
|
||||
if( !strcmp( channelElement->name, "channel" ) ) {
|
||||
if( ( channel = tpia_channel_createGetFromElement( smr, target, channelElement, 1 ) ) == NULL ) break;
|
||||
target->channels[target->nChannels] = channel;
|
||||
target->nChannels++;
|
||||
for( i = channel->crossSectionPointwise.start, j = 0; i < channel->crossSectionPointwise.end; i++, j++ )
|
||||
target->totalCrossSectionPointwise.data[i] += channel->crossSectionPointwise.data[j];
|
||||
for( i = channel->crossSectionGrouped.start, j = 0; i < channel->crossSectionGrouped.end; i++, j++ )
|
||||
target->totalCrossSectionGrouped.data[i] += channel->crossSectionGrouped.data[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( smr_isOk( smr ) ) { /* Get production channels. */
|
||||
//if( ( channels = xData_getOneElementByTagName( smr, element, "productionChannels", 0 ) ) == NULL ) {
|
||||
if( ( channels = xData_getOneElementByTagName( smr, element, (char*) "productionChannels", 0 ) ) == NULL ) {
|
||||
if( !smr_isOk( smr ) ) return( _tpia_target_heated_releaseAndReturnOne( smr, doc, target ) ); }
|
||||
else {
|
||||
xData_addToAccessed( smr, channels, 1 );
|
||||
if( ( nChannels = xData_numberOfElementsByTagName( smr, channels, "channel" ) ) > 0 ) {
|
||||
//if( ( target->productionChannels = xData_malloc2( smr, nChannels * sizeof( tpia_channel * ), 1, "channels" ) ) != NULL ) {
|
||||
if( ( target->productionChannels = (tpia_channel**) xData_malloc2( smr, nChannels * sizeof( tpia_channel * ), 1, "channels" ) ) != NULL ) {
|
||||
for( channelElement = xData_getFirstElement(channels); channelElement != NULL; channelElement = xData_getNextElement(channelElement) ) {
|
||||
if( !strcmp( channelElement->name, "channel" ) ) {
|
||||
channel = tpia_channel_createGetFromElement( smr, target, channelElement, 1 );
|
||||
if( channel == NULL ) break;
|
||||
target->productionChannels[target->nProductionChannels] = channel;
|
||||
target->nProductionChannels++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( smr_isOk( smr ) && checkElememtsForAccess ) _tpia_target_heated_checkElememtsForAccess( smr, doc );
|
||||
xData_parseFree( smr, doc );
|
||||
if( !smr_isOk( smr ) ) tpia_target_heated_release( smr, target );
|
||||
return( !smr_isOk( smr ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static void _tpia_target_heated_getEnergyGridAndAllocateTotalCrossSections( statusMessageReporting *smr, tpia_target_heated *target, xData_element *element ) {
|
||||
|
||||
xData_Int i, energyGridIndex, energyGridStart, energyGridEnd, energyGridLength;
|
||||
xData_element *energyGrid, *kerma;
|
||||
|
||||
if( !smr_isOk( smr ) ) return;
|
||||
//if( ( energyGrid = xData_getOneElementByTagName( smr, element, "energyGrid", 1 ) ) == NULL ) return;
|
||||
if( ( energyGrid = xData_getOneElementByTagName( smr, element, (char*) "energyGrid", 1 ) ) == NULL ) return;
|
||||
xData_addToAccessed( smr, energyGrid, 1 );
|
||||
if( ( energyGrid = xData_getElements_xDataElement( smr, energyGrid ) ) == NULL ) return;
|
||||
xData_addToAccessed( smr, energyGrid, 1 );
|
||||
xData_getCommonData( smr, energyGrid, &energyGridIndex, &energyGridStart, &energyGridEnd, &energyGridLength );
|
||||
if( ( target->energyGrid = xData_1d_x_allocateCopyData( smr, energyGrid ) ) == NULL ) return;
|
||||
target->energyGridLength = energyGridLength;
|
||||
target->totalCrossSectionPointwise.start = 0;
|
||||
target->totalCrossSectionPointwise.end = energyGridLength;
|
||||
target->totalCrossSectionPointwise.length = energyGridLength;
|
||||
//if( ( target->totalCrossSectionPointwise.data = xData_malloc2( smr, energyGridLength * sizeof( double ), 0, "totalCrossSectionPointwise" ) ) == NULL )
|
||||
if( ( target->totalCrossSectionPointwise.data = (double*) xData_malloc2( smr, energyGridLength * sizeof( double ), 0, "totalCrossSectionPointwise" ) ) == NULL )
|
||||
return;
|
||||
for( i = 0; i < energyGridLength; i++ ) target->totalCrossSectionPointwise.data[i] = 0.;
|
||||
target->totalCrossSectionGrouped.start = 0;
|
||||
target->totalCrossSectionGrouped.end = energyGridLength;
|
||||
target->totalCrossSectionGrouped.length = energyGridLength;
|
||||
//if( ( target->totalCrossSectionGrouped.data = xData_malloc2( smr, target->nGroups * sizeof( double ), 0, "totalCrossSectionGrouped" ) ) == NULL ) return;
|
||||
if( ( target->totalCrossSectionGrouped.data = (double*) xData_malloc2( smr, target->nGroups * sizeof( double ), 0, "totalCrossSectionGrouped" ) ) == NULL ) return;
|
||||
for( i = 0; i < target->nGroups; i++ ) target->totalCrossSectionGrouped.data[i] = 0.;
|
||||
//if( ( kerma = xData_getOneElementByTagName( smr, element, "kerma", 1 ) ) != NULL ) {
|
||||
if( ( kerma = xData_getOneElementByTagName( smr, element, (char*) "kerma", 1 ) ) != NULL ) {
|
||||
xData_addToAccessed( smr, kerma, 1 );
|
||||
if( ( kerma = xData_getElements_xDataElement( smr, kerma ) ) == NULL ) return;
|
||||
xData_addToAccessed( smr, kerma, 1 );
|
||||
if( ( target->kerma = xData_1d_x_allocateCopyData( smr, kerma ) ) == NULL ) return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_target_heated_numberOfChannels( statusMessageReporting *smr, tpia_target_heated *target ) {
|
||||
int tpia_target_heated_numberOfChannels( statusMessageReporting *, tpia_target_heated *target ) {
|
||||
|
||||
return( target->nChannels );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//int tpia_target_heated_numberOfProductionChannels( statusMessageReporting *smr, tpia_target_heated *target ) {
|
||||
int tpia_target_heated_numberOfProductionChannels( statusMessageReporting *, tpia_target_heated *target ) {
|
||||
|
||||
return( target->nProductionChannels );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_target_heated_getChannelAtIndex( tpia_target_heated *target, int index ) {
|
||||
|
||||
tpia_channel *channel = NULL;
|
||||
|
||||
if( ( index >= 0 ) && ( index < target->nChannels ) ) channel = target->channels[index];
|
||||
return( channel );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_target_heated_getChannelAtIndex_smr( statusMessageReporting *smr, tpia_target_heated *target, int index ) {
|
||||
|
||||
tpia_channel *channel = tpia_target_heated_getChannelAtIndex( target, index );
|
||||
|
||||
if( channel == NULL ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, 1, "bad channel index = %d for %s + %s", index,
|
||||
target->projectileID->name, target->targetID->name );
|
||||
}
|
||||
return( channel );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
tpia_channel *tpia_target_heated_getProductionChannelAtIndex( tpia_target_heated *target, int index ) {
|
||||
|
||||
tpia_channel *channel = NULL;
|
||||
|
||||
if( ( index >= 0 ) && ( index < target->nProductionChannels ) ) channel = target->productionChannels[index];
|
||||
return( channel );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//xData_Int tpia_target_heated_getEnergyGrid( statusMessageReporting *smr, tpia_target_heated *target, double **energyGrid ) {
|
||||
xData_Int tpia_target_heated_getEnergyGrid( statusMessageReporting *, tpia_target_heated *target, double **energyGrid ) {
|
||||
|
||||
if( energyGrid != NULL ) *energyGrid = target->energyGrid;
|
||||
return( target->energyGridLength );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
xData_Int tpia_target_heated_getEIndex( tpia_target_heated *target, double e_in ) {
|
||||
|
||||
return( tpia_misc_binarySearch( target->energyGridLength, target->energyGrid, e_in ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//double tpia_target_heated_getTotalCrossSectionAtE( statusMessageReporting *smr, tpia_target_heated *target, xData_Int iEg, double e_in,
|
||||
double tpia_target_heated_getTotalCrossSectionAtE( statusMessageReporting *smr, tpia_target_heated *target, xData_Int , double e_in,
|
||||
int crossSectionType ) {
|
||||
|
||||
double xsec = 0.;
|
||||
|
||||
if( crossSectionType == tpia_crossSectionType_grouped ) {
|
||||
xsec = 0; }
|
||||
else if( crossSectionType == tpia_crossSectionType_pointwise ) {
|
||||
xsec = tpia_misc_getPointwiseCrossSectionAtE( smr, &(target->totalCrossSectionPointwise), target->energyGrid,
|
||||
tpia_target_heated_getEIndex( target, e_in ), e_in );
|
||||
}
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double tpia_target_heated_getIndexChannelCrossSectionAtE( statusMessageReporting *smr, tpia_target_heated *target, int index, xData_Int iEg, double e_in,
|
||||
int crossSectionType ) {
|
||||
|
||||
double xsec = 0.;
|
||||
tpia_channel *channel = tpia_target_heated_getChannelAtIndex_smr( smr, target, index );
|
||||
|
||||
if( channel != NULL ) xsec = tpia_channel_getCrossSectionAtE( smr, channel, iEg, e_in, crossSectionType );
|
||||
return( xsec );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int tpia_target_heated_sampleIndexChannelProductsAtE( statusMessageReporting *smr, tpia_target_heated *target, int index,
|
||||
tpia_decaySamplingInfo *decaySamplingInfo, int nProductData, tpia_productOutgoingData *productDatas ) {
|
||||
|
||||
tpia_channel *channel = tpia_target_heated_getChannelAtIndex_smr( smr, target, index );
|
||||
|
||||
if( channel == NULL ) return( -1 );
|
||||
return( tpia_decayChannel_sampleProductsAtE( smr, &(channel->decayChannel), decaySamplingInfo, nProductData, productDatas ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_target_heated_releaseAndReturnOne( statusMessageReporting *smr, xData_document *doc, tpia_target_heated *target ) {
|
||||
|
||||
tpia_target_heated_release( smr, target );
|
||||
if( doc != NULL ) xData_parseFree( smr, doc );
|
||||
return( 1 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_target_heated_checkElememtsForAccess( statusMessageReporting *smr, xData_document *doc ) {
|
||||
|
||||
xData_element *element = xData_getDocumentsElement( doc );
|
||||
|
||||
_tpia_target_heated_checkElememtsForAccess2( smr, element );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int _tpia_target_heated_checkElememtsForAccess2( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xData_element *child;
|
||||
|
||||
if( xData_getAccessed( smr, element ) != 1 ) printf( "%3d %s\n", xData_getAccessed( smr, element ), element->fullName );
|
||||
for( child = xData_getFirstElement( element ); child != NULL; child = xData_getNextElement( child ) )
|
||||
_tpia_target_heated_checkElememtsForAccess2( smr, child );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,171 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
typedef struct xmlTextStruct_s {
|
||||
long allocated;
|
||||
long length;
|
||||
char *text;
|
||||
} xmlTextStruct;
|
||||
|
||||
static int xData_parseReconstructXML2( xData_rootElement *root, xmlTextStruct *XML, char *text, long textLength );
|
||||
static int addStringToXML( xmlTextStruct *XML, char *s, long len );
|
||||
static void xData_parseOutlinePrintRoot( FILE *f, xData_rootElement *root, int outputText );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *xData_parseReconstructXML( xData_document *xData_doc ) {
|
||||
|
||||
int err;
|
||||
xmlTextStruct XML = { 0, 0, NULL };
|
||||
|
||||
err = xData_parseReconstructXML2( &(xData_doc->root), &XML, NULL, 0 );
|
||||
//if( err == 0 ) addStringToXML( &XML, "\n", -1 );
|
||||
if( err == 0 ) addStringToXML( &XML, (char*) "\n", -1 );
|
||||
return( XML.text );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int xData_parseReconstructXML2( xData_rootElement *root, xmlTextStruct *XML, char *text, long textLength ) {
|
||||
|
||||
long i, textOffset = 0;
|
||||
xData_element *child;
|
||||
|
||||
for( child = root->children; child != NULL; child = child->next ) {
|
||||
//if( textOffset < child->textOffset ) {
|
||||
if( textOffset < (int) child->textOffset ) {
|
||||
if( addStringToXML( XML, &(text[textOffset]), child->textOffset - textOffset ) ) return( 1 );
|
||||
textOffset = child->textOffset;
|
||||
}
|
||||
//if( addStringToXML( XML, "<", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) "<", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, child->name, -1 ) != 0 ) return( 1 );
|
||||
for( i = 0; i < child->attributes.number; i++ ) {
|
||||
//if( addStringToXML( XML, " ", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) " ", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, child->attributes.attributes[i].name, -1 ) != 0 ) return( 1 );
|
||||
//if( addStringToXML( XML, "=\"", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) "=\"", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, child->attributes.attributes[i].value, -1 ) != 0 ) return( 1 );
|
||||
//if( addStringToXML( XML, "\"", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) "\"", -1 ) != 0 ) return( 1 );
|
||||
}
|
||||
//if( addStringToXML( XML, ">", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) ">", -1 ) != 0 ) return( 1 );
|
||||
if( xData_parseReconstructXML2( &(child->childrenRoot), XML, child->text.text, child->text.length ) != 0 ) return( 1 );
|
||||
//if( addStringToXML( XML, "</", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) "</", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, child->name, -1 ) != 0 ) return( 1 );
|
||||
//if( addStringToXML( XML, ">", -1 ) != 0 ) return( 1 );
|
||||
if( addStringToXML( XML, (char*) ">", -1 ) != 0 ) return( 1 );
|
||||
}
|
||||
if( textOffset < textLength ) if( addStringToXML( XML, &(text[textOffset]), textLength - textOffset ) ) return( 1 );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int addStringToXML( xmlTextStruct *XML, char *s, long len ) {
|
||||
|
||||
long lenS, length, inc;
|
||||
char *p;
|
||||
|
||||
if( len >= 0 ) {
|
||||
lenS = len; }
|
||||
else {
|
||||
lenS = strlen( s );
|
||||
}
|
||||
length = XML->length + lenS + 1;
|
||||
if( XML->allocated < length ) {
|
||||
inc = ( 140 * XML->allocated ) / 100;
|
||||
if( inc < 10000 ) inc = 10000;
|
||||
if( length < inc ) length = inc;
|
||||
XML->text = (char *) realloc( XML->text, length );
|
||||
XML->allocated = length;
|
||||
if( XML->text == NULL ) return( 1 );
|
||||
}
|
||||
p = &(XML->text[XML->length]);
|
||||
if( len >= 0 ) {
|
||||
strncpy( p, s, len ); }
|
||||
else {
|
||||
strcpy( p, s );
|
||||
}
|
||||
XML->length += lenS;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_parseOutline( FILE *f, xData_document *xData_doc, int outputText ) {
|
||||
|
||||
xData_parseOutlinePrintRoot( f, &(xData_doc->root), outputText );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static void xData_parseOutlinePrintRoot( FILE *f, xData_rootElement *root, int outputText ) {
|
||||
|
||||
int i, depth = root->depth;
|
||||
xData_element *child;
|
||||
|
||||
for( child = root->children; child != NULL; child = child->next ) {
|
||||
for( i = 0; i < depth; i++ ) fprintf( f, " " );
|
||||
fprintf( f, "name = %s at line = %ld column = %ld textOffset = %ld; attris:",
|
||||
//child->name, child->docInfo.line, child->docInfo.column, child->textOffset );
|
||||
child->name, (long int)child->docInfo.line, (long int)child->docInfo.column, (long int)child->textOffset );
|
||||
for( i = 0; i < child->attributes.number; i++ ) {
|
||||
fprintf( f, " %s = \"%s\"", child->attributes.attributes[i].name, child->attributes.attributes[i].value );
|
||||
}
|
||||
if( outputText && child->text.text != NULL ) fprintf( f, "; text: %s", child->text.text );
|
||||
fprintf( f, "\n" );
|
||||
xData_parseOutlinePrintRoot( f, &(child->childrenRoot), outputText );
|
||||
}
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,171 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#if !defined(WIN32) || defined(__GNUC__)
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#include <direct.h>
|
||||
#define getcwd _getcwd
|
||||
#endif
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void *xData_malloc( statusMessageReporting *smr, size_t size, int zero, const char *forItem, const char *file, int line ) {
|
||||
|
||||
void *p = xData_realloc( smr, NULL, size, forItem, file, line );
|
||||
int i;
|
||||
char *c;
|
||||
long long *l;
|
||||
|
||||
if( ( p != NULL ) && zero ) {
|
||||
//for( i = 0, l = (long long *) p; i < size / sizeof( long long ); i++, l++ ) *l = 0;
|
||||
for( i = 0, l = (long long *) p; i < (int)( size / sizeof( long long ) ); i++, l++ ) *l = 0;
|
||||
//for( i = sizeof( long long ) * i, c = (char *) l; i < size; i++, c++ ) *c = 0;
|
||||
for( i = sizeof( long long ) * i, c = (char *) l; i < (int) size; i++, c++ ) *c = 0;
|
||||
}
|
||||
|
||||
return( p );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
void *xData_realloc( statusMessageReporting *smr, void *pOld, size_t size, const char *forItem, const char *file, int line ) {
|
||||
|
||||
void *p = realloc( pOld, size );
|
||||
|
||||
if( ( p == NULL ) && ( smr != NULL ) ) {
|
||||
smr_setMessageError( smr, NULL, file, line, -1, " xData_realloc: failed to realloc size = %llu for variable %s\n",
|
||||
(unsigned long long) size, forItem );
|
||||
}
|
||||
return( p );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//void *xData_free( statusMessageReporting *smr, void *p ) {
|
||||
void *xData_free( statusMessageReporting *, void *p ) {
|
||||
|
||||
if( p != NULL ) free( p );
|
||||
return( NULL );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *xDataMisc_allocateCopyString( statusMessageReporting *smr, const char *s, const char *forItem, const char *file, int line ) {
|
||||
/*
|
||||
* User must free returned string.
|
||||
*/
|
||||
char *c;
|
||||
|
||||
//if( ( c = xData_malloc( smr, strlen( s ) + 1, 0, forItem, file, line ) ) != NULL ) {
|
||||
if( ( c = (char*) xData_malloc( smr, strlen( s ) + 1, 0, forItem, file, line ) ) != NULL ) {
|
||||
strcpy( c, s );
|
||||
}
|
||||
return( c );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
char *xDataMisc_getAbsPath( statusMessageReporting *smr, const char *fileName ) {
|
||||
/*
|
||||
* User must free returned string.
|
||||
*/
|
||||
int n = strlen( fileName ) + 1, nCwd = 0;
|
||||
char *absPath, cwd[4 * 1024] = "", *p, *needle;
|
||||
|
||||
if( fileName[0] != '/' ) {
|
||||
if( getcwd( cwd, sizeof( cwd ) + 1 ) == NULL ) {
|
||||
smr_setMessageError( smr, NULL, __FILE__, __LINE__, -1, "hardwired cwd too small" );
|
||||
return( NULL );
|
||||
}
|
||||
nCwd = strlen( cwd );
|
||||
n += nCwd + 1; /* cwd + '/'. */
|
||||
}
|
||||
//if( ( absPath = xData_malloc2( smr, n, 0, "absPath" ) ) == NULL ) return( NULL );
|
||||
if( ( absPath = (char*) xData_malloc2( smr, n, 0, "absPath" ) ) == NULL ) return( NULL );
|
||||
if( fileName[0] != '/' ) {
|
||||
strcpy( absPath, cwd );
|
||||
strcat( absPath, "/" );
|
||||
strcat( absPath, fileName ); }
|
||||
else {
|
||||
strcpy( absPath, fileName );
|
||||
}
|
||||
|
||||
while( 1 ) { /* Remove all ./ from path. */
|
||||
if( ( needle = strstr( absPath, "/./" ) ) == NULL ) break;
|
||||
p = needle;
|
||||
for( needle += 2; *needle; p++, needle++ ) *p = *needle;
|
||||
*p = 0;
|
||||
}
|
||||
|
||||
while( 1 ) { /* Remove all ../ from path. */
|
||||
if( ( needle = strstr( absPath, "/../" ) ) == NULL ) break;
|
||||
p = needle - 1;
|
||||
while( ( p > absPath ) && ( *p != '/' ) ) p--;
|
||||
if( *p != '/' ) break; /* This should not happen if path is legit, I think, and I do not know what to do so will leave it. */
|
||||
if( p == absPath ) break; /* Ditto. */
|
||||
for( needle += 3; *needle; p++, needle++ ) *p = *needle;
|
||||
*p = 0;
|
||||
}
|
||||
return( absPath );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_setMessageError_ReturnInt( int value, statusMessageReporting *smr, void *userInterface, const char *packageName, int lineNumber, int code,
|
||||
const char *fmt, ... ) {
|
||||
|
||||
va_list args;
|
||||
|
||||
va_start( args, fmt );
|
||||
smr_setMessageError( smr, userInterface, packageName, lineNumber, code, fmt, args );
|
||||
va_end( args );
|
||||
return( value );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,187 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//char const * const xData_oned_x_ID = "1d.x";
|
||||
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text );
|
||||
static char *toString( statusMessageReporting *smr, xDataType *xDT );
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_init_1d_x( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
|
||||
xDT->status = xData_xDataType_Ok;
|
||||
xDT->typeString = xData_oned_x_ID;
|
||||
xDT->element = element;
|
||||
xDT->toData = toData;
|
||||
xDT->toString = toString;
|
||||
xDT->release = release;
|
||||
xDT->data = NULL;
|
||||
return( xData_xDataTypeConvertAttributes( smr, element ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_is_1d_x( statusMessageReporting *smr, xDataType *xDT, int setMsg ) {
|
||||
|
||||
return( xData_is_xDataType( smr, xDT, xData_oned_x_ID, setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_isElement_1d_x( statusMessageReporting *smr, xData_element *element, int setMsg ) {
|
||||
|
||||
return( xData_is_1d_x( smr, &(element->xDataTypeInfo), setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_1d_x_copyData( statusMessageReporting *smr, xData_element *element, xData_Int nAllocatedBytes, double *d ) {
|
||||
|
||||
xData_Int i, n;
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
double *p;
|
||||
|
||||
if( !xData_isElement_1d_x( smr, element, 1 ) ) return( 1 );
|
||||
n = xDT->end - xDT->start;
|
||||
//if( n * sizeof( double ) > nAllocatedBytes ) {
|
||||
if( n * sizeof( double ) > (size_t) nAllocatedBytes ) {
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( element );
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "allocated memory = %lld to small, need %lld", nAllocatedBytes, n );
|
||||
return( 1 );
|
||||
}
|
||||
p = (double *) xDT->data;
|
||||
for( i = 0; i < n; i++, d++, p++ ) *d = *p;
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_1d_x_allocateCopyData( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xData_Int i, n;
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
double *p, *data;
|
||||
|
||||
if( !xData_isElement_1d_x( smr, element, 1 ) ) return( NULL );
|
||||
n = xDT->end - xDT->start;
|
||||
p = (double *) xDT->data;
|
||||
//if( ( data = xData_malloc2( smr, n * sizeof( double ), 0, "data" ) ) == NULL ) return( NULL );
|
||||
if( ( data = (double*) xData_malloc2( smr, n * sizeof( double ), 0, "data" ) ) == NULL ) return( NULL );
|
||||
for( i = 0; i < n; i++, p++ ) data[i] = *p;
|
||||
return( data );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_1d_x_free_copyData( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text ) {
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *, const char *text ) {
|
||||
|
||||
xData_Int i, n, status = 0;
|
||||
char *e;
|
||||
const char *s;
|
||||
double *p;
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( xDT->element );
|
||||
|
||||
if( xDT->status != xData_xDataType_Ok ) return( xData_setMessageError_ReturnInt( 1, smr, smrUser, __FILE__, __LINE__, 1, "bad xDataType instance" ) );
|
||||
release( smr, xDT );
|
||||
|
||||
n = xDT->end - xDT->start;
|
||||
if( ( xDT->data = xData_malloc2( smr, n * sizeof( double ), 0, "1d.x-toData" ) ) == NULL ) return( 1 );
|
||||
for( i = 0, s = text, p = (double *) xDT->data; i < n; i++, p++, s = e ) {
|
||||
if( xData_stringTo_double( smr, smrUser, s, p, " \n", &e ) ) { status = 1; break; }
|
||||
}
|
||||
if( status == 0 ) {
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "xData.1d.x contains extra data = %s", e );
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
if( status != 0 ) release( smr, xDT );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static char *toString( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
static char *toString( statusMessageReporting *, xDataType *xDT ) {
|
||||
|
||||
xData_Int i, n;
|
||||
char *str, *p;
|
||||
double *data = (double *) xDT->data;
|
||||
|
||||
n = xDT->end - xDT->start;
|
||||
if( n < 0 ) n = 0;
|
||||
if( ( str = (char *) malloc( ( n + 1 ) * 17 ) ) == NULL ) return( NULL );
|
||||
for( i = 0, p = str; i < n; i++, p += 17, data++ ) {
|
||||
sprintf( p, " %15.7e\n", *data );
|
||||
}
|
||||
*p = 0;
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
|
||||
if( xDT->data != NULL ) xDT->data = xData_free( smr, xDT->data );
|
||||
return( xDT->status = xData_xDataType_Ok );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,261 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//char const * const xData_twod_xindex_y_ID = "2d.xindex_y";
|
||||
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text );
|
||||
static char *toString( statusMessageReporting *smr, xDataType *xDT );
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT );
|
||||
static double *xData_2d_xindex_y_toFilled( statusMessageReporting *smr, xData_element *element, double *Xs, int size );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_init_2d_xindex_y( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
|
||||
xDT->status = xData_xDataType_Ok;
|
||||
xDT->typeString = xData_twod_xindex_y_ID;
|
||||
xDT->element = element;
|
||||
xDT->toData = toData;
|
||||
xDT->toString = toString;
|
||||
xDT->release = release;
|
||||
xDT->data = NULL;
|
||||
return( xData_xDataTypeConvertAttributes( smr, element ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_is_2d_xindex_y( statusMessageReporting *smr, xDataType *xDT, int setMsg ) {
|
||||
|
||||
return( xData_is_xDataType( smr, xDT, xData_twod_xindex_y_ID, setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_isElement_2d_xindex_y( statusMessageReporting *smr, xData_element *element, int setMsg ) {
|
||||
|
||||
return( xData_is_2d_xindex_y( smr, &(element->xDataTypeInfo), setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text ) {
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *, const char *text ) {
|
||||
|
||||
xData_Int i, status = 0;
|
||||
char *e;
|
||||
const char *s;
|
||||
xData_2d_xindex_y *p;
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( xDT->element );
|
||||
|
||||
if( xDT->status != xData_xDataType_Ok ) return( xData_setMessageError_ReturnInt( 1, smr, smrUser, __FILE__, __LINE__, 1, "bad xDataType instance" ) );
|
||||
release( smr, xDT );
|
||||
if( ( xDT->data = xData_malloc2( smr, 2 * xDT->length * sizeof( xData_2d_xindex_y ), 0, "data" ) ) == NULL ) return( 1 );
|
||||
for( i = 0, s = text, p = (xData_2d_xindex_y *) xDT->data; i < xDT->length; i++, p++, s = e ) {
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, s, &(p->index), " \n", &e ) ) { status = 1; break; }
|
||||
s = e;
|
||||
if( xData_stringTo_double( smr, smrUser, s, &(p->value), " \n", &e ) ) { status = 1; break; }
|
||||
}
|
||||
if( status == 0 ) {
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "2d_xindex_y contains extra data = %s", e );
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
if( status != 0 ) release( smr, xDT );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static char *toString( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
static char *toString( statusMessageReporting *, xDataType *xDT ) {
|
||||
|
||||
xData_Int i, n = xDT->length, recordSize = 5 + 16 + 1, indexMax = 9;
|
||||
int iFmt = 4;
|
||||
char *str, *p, fmt[32] = " %99d %15.7e\n";
|
||||
xData_2d_xindex_y *data = (xData_2d_xindex_y *) xDT->data;
|
||||
|
||||
if( n < 0 ) n = 0;
|
||||
for( i = 0; i < n; i++, data++ ) {
|
||||
while( ( data->index > indexMax ) && ( indexMax > 0 ) ) {
|
||||
indexMax = 10 * indexMax + 9;
|
||||
recordSize++;
|
||||
iFmt++;
|
||||
}
|
||||
}
|
||||
sprintf( fmt, " %%%dld %%15.7e\n", iFmt );
|
||||
if( ( str = (char *) malloc( recordSize * ( n + 1 ) ) ) == NULL ) return( NULL );
|
||||
for( i = 0, p = str, data = (xData_2d_xindex_y *) xDT->data; i < n; i++, p += recordSize, data++ ) {
|
||||
sprintf( p, fmt, data->index, data->value );
|
||||
}
|
||||
*p = 0;
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
|
||||
if( xDT->data != NULL ) xDT->data = xData_free( smr, xDT->data );
|
||||
return( xDT->status = xData_xDataType_Ok );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
xData_Int *xData_2d_xindex_y_rawIndices( statusMessageReporting *smr, xData_element *element ) {
|
||||
/*
|
||||
* Returns NULL if length is 0 or memory could not be allocated.
|
||||
*/
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
xData_Int i, index = xDT->start, *values;
|
||||
xData_2d_xindex_y *data = (xData_2d_xindex_y *) xDT->data;
|
||||
|
||||
if( xDT->length == 0 ) return( NULL );
|
||||
//if( ( values = xData_malloc2( smr, xDT->length * sizeof( xData_Int ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
if( ( values = (xData_Int*) xData_malloc2( smr, xDT->length * sizeof( xData_Int ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
for( i = 0; i < xDT->length; i++ ) {
|
||||
values[i] = index;
|
||||
index += data[i].index;
|
||||
}
|
||||
return( values );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_2d_xindex_y_free_rawIndices( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_2d_xindex_y_toXYs( statusMessageReporting *smr, xData_element *element, double *Xs ) {
|
||||
/*
|
||||
* Returns NULL if length is 0 or memory could not be allocated.
|
||||
*/
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
xData_Int i, index = xDT->start;
|
||||
double *values = NULL, *p;
|
||||
xData_2d_xindex_y *data = (xData_2d_xindex_y *) xDT->data;
|
||||
|
||||
if( xDT->length == 0 ) return( NULL );
|
||||
//if( ( values = xData_malloc2( smr, 2 * xDT->length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
if( ( values = (double*) xData_malloc2( smr, 2 * xDT->length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
p = values;
|
||||
for( i = 0; i < xDT->length; i++, p++ ) {
|
||||
index += data[i].index;
|
||||
*p = Xs[index];
|
||||
p++;
|
||||
*p = data[i].value;
|
||||
}
|
||||
return( values );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_2d_xindex_y_toFilledYs( statusMessageReporting *smr, xData_element *element, double *Xs ) {
|
||||
|
||||
return( xData_2d_xindex_y_toFilled( smr, element, Xs, 1 ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_2d_xindex_y_free_toFilledYs( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_2d_xindex_y_toFilledXYs( statusMessageReporting *smr, xData_element *element, double *Xs ) {
|
||||
|
||||
return( xData_2d_xindex_y_toFilled( smr, element, Xs, 2 ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static double *xData_2d_xindex_y_toFilled( statusMessageReporting *smr, xData_element *element, double *Xs, int size ) {
|
||||
/*
|
||||
* Returns NULL if length is 0 or memory could not be allocated.
|
||||
*/
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
xData_Int i, j, index = xDT->start, length = xDT->end - xDT->start;
|
||||
double x1, x2, *x, y1, y2, *values = NULL, *p;
|
||||
xData_2d_xindex_y *data = (xData_2d_xindex_y *) xDT->data;
|
||||
|
||||
if( xDT->length == 0 ) return( NULL );
|
||||
//if( ( values = xData_malloc2( smr, size * length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
if( ( values = (double*) xData_malloc2( smr, size * length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
p = values;
|
||||
x = &(Xs[xDT->start]);
|
||||
x2 = 0.; /* Dummy initializations, as x1 and y1 (set by x2 and y2) are not used first time thru loop. */
|
||||
y2 = 0.;
|
||||
for( i = 0; i < xDT->length; i++, x++, p++ ) {
|
||||
index += data[i].index; /* Note, data[0].index is 0; otherwise, following logic would not work. */
|
||||
x1 = x2;
|
||||
x2 = Xs[index];
|
||||
y1 = y2;
|
||||
y2 = data[i].value;
|
||||
for( j = data[i].index; j > 1; j--, x++, p++ ) {
|
||||
if( size == 2 ) {
|
||||
*p = *x;
|
||||
p++;
|
||||
}
|
||||
*p = ( y1 * ( x2 - *x ) + y2 * ( *x - x1 ) ) / ( x2 - x1 );
|
||||
}
|
||||
if( size == 2 ) *(p++) = *x;
|
||||
*p = y2;
|
||||
}
|
||||
return( values );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//char const * const xData_twod_xShared_yHistogram_ID = "2d_xShared_yHistogram";
|
||||
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text );
|
||||
static char *toString( statusMessageReporting *smr, xDataType *xDT );
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_init_2d_xShared_yHistogram( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
|
||||
xDT->status = xData_xDataType_Ok;
|
||||
xDT->typeString = xData_twod_xShared_yHistogram_ID;
|
||||
xDT->element = element;
|
||||
xDT->toData = toData;
|
||||
xDT->toString = toString;
|
||||
xDT->release = release;
|
||||
xDT->data = NULL;
|
||||
return( xData_xDataTypeConvertAttributes( smr, element ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_is_2d_xShared_yHistogram( statusMessageReporting *smr, xDataType *xDT, int setMsg ) {
|
||||
|
||||
return( xData_is_xDataType( smr, xDT, xData_twod_xShared_yHistogram_ID, setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_isElement_2d_xShared_yHistogram( statusMessageReporting *smr, xData_element *element, int setMsg ) {
|
||||
|
||||
return( xData_is_2d_xShared_yHistogram( smr, &(element->xDataTypeInfo), setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//double *xData_2d_xShared_yHistogram_copyData( statusMessageReporting *smr, xData_element *element, xData_Int *n ) {
|
||||
double *xData_2d_xShared_yHistogram_copyData( statusMessageReporting *, xData_element *element, xData_Int *n ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
xData_Int i;
|
||||
double *p, *values, *d = (double *) xDT->data;
|
||||
|
||||
*n = xDT->end - xDT->start;
|
||||
if( xDT->length == 0 ) return( NULL );
|
||||
if( *n == 0 ) return( NULL );
|
||||
//if(( values = xData_malloc2( NULL, *n * sizeof( double ), 0, "values" ) )) {
|
||||
if(( values = (double*) xData_malloc2( NULL, *n * sizeof( double ), 0, "values" ) )) {
|
||||
p = values;
|
||||
for( i = 0; i < *n; i++, p++, d++ ) *p = *d;
|
||||
}
|
||||
return( values );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_2d_xShared_yHistogram_free_copyData( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text ) {
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *, const char *text ) {
|
||||
|
||||
xData_Int i, n = xDT->end - xDT->start, status = 0;
|
||||
char *e;
|
||||
const char *s;
|
||||
double *p;
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( xDT->element );
|
||||
|
||||
if( xDT->status != xData_xDataType_Ok ) return( xData_setMessageError_ReturnInt( 1, smr, smrUser, __FILE__, __LINE__, 1, "bad xDataType instance" ) );
|
||||
release( smr, xDT );
|
||||
if( ( xDT->data = xData_malloc2( smr, n * sizeof( double ), 0, "data" ) ) == NULL ) return( 1 );
|
||||
for( i = 0, s = text, p = (double *) xDT->data; i < n; i++, p++, s = e ) {
|
||||
if( xData_stringTo_double( smr, smrUser, s, p, " \n", &e ) ) { status = 1; break; }
|
||||
}
|
||||
if( status == 0 ) {
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "text contains extra data = %s", e );
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
if( status != 0 ) release( smr, xDT );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static char *toString( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
static char *toString( statusMessageReporting *, xDataType *xDT ) {
|
||||
|
||||
xData_Int i, n = xDT->length, recordSize = 16 + 1;
|
||||
char *str, *p, fmt[32] = " %15.7e\n";
|
||||
//double *d = xDT->data;
|
||||
double *d = (double*) xDT->data;
|
||||
|
||||
if( n < 0 ) n = 0;
|
||||
if( ( str = (char *) malloc( recordSize * ( n + 1 ) ) ) == NULL ) return( NULL );
|
||||
for( i = 0, p = str; i < n; i++, p += recordSize, d++ ) sprintf( p, fmt, d ); *p = 0;
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
|
||||
if( xDT->data != NULL ) xDT->data = xData_free( smr, xDT->data );
|
||||
return( xDT->status = xData_xDataType_Ok );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_2d_xShared_yHistogram_toFilledXYs( xDataType *xDT, xData_Int nXs, double *Xs ) {
|
||||
/*
|
||||
* Returns NULL if length is 0, memory could not be allocated, or nXs != xDT->length + 1.
|
||||
*/
|
||||
xData_Int i;
|
||||
//double *p, *values, *d = xDT->data;
|
||||
double *p, *values, *d = (double*) xDT->data;
|
||||
|
||||
if( xDT->length == 0 ) return( NULL );
|
||||
if( ( xDT->length + 1 ) != nXs ) return( NULL );
|
||||
//if( ( values = xData_malloc2( NULL, 4 * xDT->length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
if( ( values = (double*) xData_malloc2( NULL, 4 * xDT->length * sizeof( double ), 0, "values" ) ) == NULL ) return( NULL );
|
||||
p = values;
|
||||
for( i = 0; i < xDT->length; i++ ) {
|
||||
*(p++) = Xs[i];
|
||||
*(p++) = 0.;
|
||||
*(p++) = Xs[i+1];
|
||||
*(p++) = 0.;
|
||||
}
|
||||
p = &(values[4 * xDT->start + 1]);
|
||||
for( i = xDT->start; i < xDT->end; i++, d++, p += 2 ) {
|
||||
*p = *d;
|
||||
p += 2;
|
||||
*p = *d;
|
||||
}
|
||||
return( values );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//char const * const xData_twod_xy_ID = "2d.xy";
|
||||
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text );
|
||||
static char *toString( statusMessageReporting *smr, xDataType *xDT );
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_init_2d_xy( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
|
||||
xDT->status = xData_xDataType_Ok;
|
||||
xDT->typeString = xData_twod_xy_ID;
|
||||
xDT->element = element;
|
||||
xDT->toData = toData;
|
||||
xDT->toString = toString;
|
||||
xDT->release = release;
|
||||
xDT->data = NULL;
|
||||
return( xData_xDataTypeConvertAttributes( smr, element ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_is_2d_xy( statusMessageReporting *smr, xDataType *xDT, int setMsg ) {
|
||||
|
||||
return( xData_is_xDataType( smr, xDT, xData_twod_xy_ID, setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_isElement_2d_xy( statusMessageReporting *smr, xData_element *element, int setMsg ) {
|
||||
|
||||
return( xData_is_2d_xy( smr, &(element->xDataTypeInfo), setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
double *xData_2d_xy_allocateCopyData( statusMessageReporting *smr, xData_element *element, xData_Int *length ) {
|
||||
|
||||
xData_Int i;
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
double *data;
|
||||
|
||||
if( !xData_isElement_2d_xy( smr, element, 1 ) ) return( NULL );
|
||||
*length = xDT->length;
|
||||
//if( ( data = xData_malloc2( smr, 2 * xDT->length * sizeof( double ), 0, "data" ) ) ) {
|
||||
if( ( data = (double*)xData_malloc2( smr, 2 * xDT->length * sizeof( double ), 0, "data" ) ) ) {
|
||||
for( i = 0; i < 2 * xDT->length; i++ ) data[i] = ((double *) xDT->data)[i];
|
||||
}
|
||||
return( data );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_2d_xy_free_copyData( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text ) {
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *, const char *text ) {
|
||||
|
||||
xData_Int i, status = 0;
|
||||
char *e;
|
||||
const char *s;
|
||||
double *p;
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( xDT->element );
|
||||
|
||||
if( xDT->status != xData_xDataType_Ok ) return( xData_setMessageError_ReturnInt( 1, smr, smrUser, __FILE__, __LINE__,
|
||||
1, "bad xDataType instance" ) );
|
||||
release( smr, xDT );
|
||||
if( ( xDT->data = xData_malloc2( smr, 2 * xDT->length * sizeof( double ), 0, "data" ) ) == NULL ) return( 1 );
|
||||
for( i = 0, s = text, p = (double *) xDT->data; i < 2 * xDT->length; i++, p++, s = e ) {
|
||||
if( xData_stringTo_double( smr, smrUser, s, p, " \n", &e ) ) { status = 1; break; }
|
||||
}
|
||||
if( status == 0 ) {
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "text contains extra data = %s", e );
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
if( status != 0 ) release( smr, xDT );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static char *toString( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
static char *toString( statusMessageReporting *, xDataType *xDT ) {
|
||||
|
||||
xData_Int i, n = xDT->length;
|
||||
char *str, *p;
|
||||
double *data = (double *) xDT->data;
|
||||
|
||||
if( n < 0 ) n = 0;
|
||||
if( ( str = (char *) malloc( 2 * ( n + 1 ) * 17 ) ) == NULL ) return( NULL );
|
||||
for( i = 0, p = str; i < n; i++, p += 2 * 16 + 1, data += 2 ) {
|
||||
sprintf( p, " %15.7e %15.7e\n", *data, data[1] );
|
||||
}
|
||||
*p = 0;
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
|
||||
if( xDT->data != NULL ) xDT->data = xData_free( smr, xDT->data );
|
||||
return( xDT->status = xData_xDataType_Ok );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,251 @@
|
||||
/*
|
||||
# <<BEGIN-copyright>>
|
||||
# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory
|
||||
# Written by Bret R. Beck, beck6@llnl.gov.
|
||||
# CODE-461393
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is part of GIDI. For details, see nuclear.llnl.gov.
|
||||
# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
|
||||
#
|
||||
# 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 disclaimer below.
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the disclaimer (as noted below) in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
|
||||
# CONTRIBUTORS 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.
|
||||
# <<END-copyright>>
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include "xData.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
namespace GIDI {
|
||||
using namespace GIDI;
|
||||
#endif
|
||||
|
||||
//char const * const xData_matrix_ID = "matrix";
|
||||
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text );
|
||||
static char *toString( statusMessageReporting *smr, xDataType *xDT );
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT );
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_init_matrix( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
|
||||
xDT->status = xData_xDataType_Ok;
|
||||
xDT->typeString = xData_matrix_ID;
|
||||
xDT->element = element;
|
||||
xDT->toData = toData;
|
||||
xDT->toString = toString;
|
||||
xDT->release = release;
|
||||
xDT->data = NULL;
|
||||
return( xData_xDataTypeConvertAttributes( smr, element ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_is_matrix( statusMessageReporting *smr, xDataType *xDT, int setMsg ) {
|
||||
|
||||
return( xData_is_xDataType( smr, xDT, xData_matrix_ID, setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_isElement_matrix( statusMessageReporting *smr, xData_element *element, int setMsg ) {
|
||||
|
||||
return( xData_is_matrix( smr, &(element->xDataTypeInfo), setMsg ) );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
xData_matrix *xData_matrix_copyData( statusMessageReporting *smr, xData_element *element ) {
|
||||
|
||||
xData_Int i, n;
|
||||
xDataType *xDT = &(element->xDataTypeInfo);
|
||||
xData_matrix *oldMatrix = (xData_matrix *) xDT->data, *newMatrix;
|
||||
double *oldP, *newP;
|
||||
|
||||
if( !xData_isElement_matrix( smr, element, 1 ) ) return( NULL );
|
||||
n = oldMatrix->rows * oldMatrix->columns;
|
||||
if( ( newMatrix = (xData_matrix *) xData_malloc2( smr, sizeof( xData_matrix ) + xDT->length * sizeof( xData_matrix_rowStartEnd ) +
|
||||
n * sizeof( double ), 0, "data" ) ) == NULL ) return( NULL );
|
||||
newMatrix->rows = oldMatrix->rows;
|
||||
newMatrix->columns = oldMatrix->columns;
|
||||
newMatrix->rowStartEnds = (xData_matrix_rowStartEnd *) &(newMatrix[1]);
|
||||
newMatrix->values = (double *) &(newMatrix->rowStartEnds[xDT->length]);
|
||||
for( i = 0; i < xDT->length; i++ ) newMatrix->rowStartEnds[i] = oldMatrix->rowStartEnds[i];
|
||||
for( i = 0, oldP = oldMatrix->values, newP = newMatrix->values; i < n; i++, oldP++, newP++ ) *newP = *oldP;
|
||||
return( newMatrix );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int xData_matrix_free_copyData( statusMessageReporting *smr, void *data ) {
|
||||
|
||||
xData_free( smr, data );
|
||||
return( 0 );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int toData( statusMessageReporting *smr, xDataType *xDT, xData_attributionList *attributes, const char *text ) {
|
||||
|
||||
xData_Int i, j, row, start, end, rows, columns, status = 0;
|
||||
char *e;
|
||||
const char *s, *size;
|
||||
double *p;
|
||||
xData_matrix *matrix;
|
||||
void *smrUser = xData_get_smrUserInterfaceFromElement( xDT->element );
|
||||
|
||||
if( xDT->status != xData_xDataType_Ok ) return( xData_setMessageError_ReturnInt( 1, smr, smrUser, __FILE__, __LINE__, 1, "bad xDataType instance" ) );
|
||||
release( smr, xDT );
|
||||
|
||||
if( ( size = xData_getAttributesValue( attributes, "size" ) ) == NULL ) return( xData_setMessageError_ReturnInt( 1, smr,
|
||||
smrUser, __FILE__, __LINE__, 1, "xData missing \"size\" attribute" ) );
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, size, &rows, " ,", &e ) ) return( 1 );
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != ',' ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "matrix size attribute missing \",\" separator" );
|
||||
return( 1 );
|
||||
}
|
||||
s = (const char *) ++e;
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, s, &columns, "", &e ) ) return( 1 );
|
||||
if( ( xDT->data = (xData_matrix *) xData_malloc2( NULL, sizeof( xData_matrix ) + xDT->length * sizeof( xData_matrix_rowStartEnd ) +
|
||||
rows * columns * sizeof( double ), 0, "xDT->data" ) ) == NULL ) return( 1 );
|
||||
matrix = (xData_matrix *) xDT->data;
|
||||
matrix->rows = rows;
|
||||
matrix->columns = columns;
|
||||
matrix->rowStartEnds = (xData_matrix_rowStartEnd *) &(matrix[1]);
|
||||
matrix->values = (double *) &(matrix->rowStartEnds[xDT->length]);
|
||||
|
||||
for( i = 0, s = text; i < xDT->length; i++ ) {
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, s, &row, " \n", &e ) ) { status = 1; break; }
|
||||
if( ( row < 0 ) || ( row >= rows ) ) {
|
||||
status = 1;
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "row = %lld out-of-range (valid range is 0 <= row <= %lld)", row, rows );
|
||||
break;
|
||||
}
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, e, &start, " \n", &e ) ) { status = 1; break; }
|
||||
if( ( start < 0 ) || ( start > columns ) ) {
|
||||
status = 1;
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "start = %lld out-of-range (valid range is 0 <= start <= %lld)", start, columns );
|
||||
break;
|
||||
}
|
||||
if( xData_stringTo_xData_Int( smr, smrUser, e, &end, " \n", &e ) ) { status = 1; break; }
|
||||
if( ( end < start ) || ( end > columns ) ) {
|
||||
status = 1;
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "end = %lld out-of-range (valid range is %lld <= end <= %lld)", end, start, columns );
|
||||
break;
|
||||
}
|
||||
matrix->rowStartEnds[i].row = row;
|
||||
matrix->rowStartEnds[i].start = start;
|
||||
matrix->rowStartEnds[i].end = end;
|
||||
p = &(matrix->values[row * columns]);
|
||||
for( j = 0; j < start; j++ ) *(p++) = 0.;
|
||||
for( s = e; j < end; j++, p++, s = e ) {
|
||||
if( xData_stringTo_double( smr, smrUser, s, p, " \n", &e ) ) { status = 1; break; }
|
||||
}
|
||||
if( status != 0 ) break;
|
||||
for( ; j < columns; j++ ) *(p++) = 0.;
|
||||
}
|
||||
if( status == 0 ) {
|
||||
while( isspace( *e ) ) e++;
|
||||
if( *e != 0 ) {
|
||||
smr_setMessageError( smr, smrUser, __FILE__, __LINE__, 1, "matrix contains extra data = %s", e );
|
||||
status = 1;
|
||||
}
|
||||
}
|
||||
if( status != 0 ) release( smr, xDT );
|
||||
return( status );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
//static char *toString( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
static char *toString( statusMessageReporting *, xDataType *xDT ) {
|
||||
|
||||
xData_Int i, n = 1, start, end, iRow, iColumn;
|
||||
char *str, *p;
|
||||
xData_matrix *matrix = (xData_matrix *) xDT->data;
|
||||
double *row;
|
||||
|
||||
for( iRow = 0; iRow < matrix->rows; iRow++ ) {
|
||||
row = &(matrix->values[iRow * matrix->columns]);
|
||||
for( iColumn = 0; iColumn < matrix->columns; iColumn++ ) if( row[iColumn] != 0. ) break;
|
||||
start = iColumn;
|
||||
for( end = iColumn; iColumn < matrix->columns; iColumn++ ) if( row[iColumn] != 0. ) end = iColumn + 1;
|
||||
if( start < end ) n += 10 * 3 + 17 * ( end - start + 1 );
|
||||
}
|
||||
if( ( str = (char *) xData_malloc2( NULL, n, 0, "str" ) ) == NULL ) return( NULL );
|
||||
for( iRow = 0, p = str; iRow < matrix->rows; iRow++ ) {
|
||||
row = &(matrix->values[iRow * matrix->columns]);
|
||||
for( iColumn = 0; iColumn < matrix->columns; iColumn++ ) if( row[iColumn] != 0. ) break;
|
||||
start = iColumn;
|
||||
for( end = iColumn; iColumn < matrix->columns; iColumn++ ) if( row[iColumn] != 0. ) end = iColumn + 1;
|
||||
if( start < end ) {
|
||||
sprintf( p, "%3d %3d %3d", iRow, start, end );
|
||||
p += strlen( p );
|
||||
for( i = start; i < end; i++, p += 17 ) sprintf( p, " %16.9e", row[i] );
|
||||
sprintf( p, "\n" );
|
||||
p++;
|
||||
}
|
||||
*p = 0;
|
||||
}
|
||||
return( str );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
static int release( statusMessageReporting *smr, xDataType *xDT ) {
|
||||
|
||||
if( xDT->data != NULL ) xDT->data = xData_free( smr, xDT->data );
|
||||
return( xDT->status = xData_xDataType_Ok );
|
||||
}
|
||||
/*
|
||||
************************************************************
|
||||
*/
|
||||
int getRowStartEndAtIndex( statusMessageReporting *smr, xDataType *xDT, xData_Int index, xData_Int *row, xData_Int *start, xData_Int *end ) {
|
||||
|
||||
int status = 0;
|
||||
xData_matrix *matrix = (xData_matrix *) xDT->data;
|
||||
|
||||
if( !xData_is_matrix( smr, xDT, 1 ) ) return( 1 );
|
||||
if( ( index < 0 ) || ( index >= xDT->length ) ) {
|
||||
smr_setMessageError( smr, xData_get_smrUserInterfaceFromElement( xDT->element ), __FILE__, __LINE__, 1,
|
||||
"index = %lld out of range (valid range 0 <= index < %lld)", index, xDT->length );
|
||||
status = 1; }
|
||||
else {
|
||||
*row = matrix->rowStartEnds[index].row;
|
||||
*start = matrix->rowStartEnds[index].start;
|
||||
*end = matrix->rowStartEnds[index].end;
|
||||
}
|
||||
return( status );
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user