Source code for fudge.legacy.endl.endltdf
# <<BEGIN-copyright>>
# <<END-copyright>>
import os
import sys
from fudge.core.utilities import fudgeFileMisc
import bdfls
import endl2
import endl_Z
[docs]def processTDF_Reaction( target, C, S = None, X1 = None, X2 = None, X3 = None, X4 = None, Q = None, outputFile = 'tdfgen.out', workDir = None,
bdflsFile = None ) :
if( bdflsFile is None ) : bdflsFile = bdfls.getDefaultBdfls( )
AMUToMeV = bdflsFile.constant( 4 )
xsec = target.findData( C = C, I = 0, S = S, X1 = X1, X2 = X2, X3 = X3, X4 = X4, Q = Q )
residualZA, yos, Q = endl2.residualZA_yos_Q( target.yi, target.ZA, C, bdflsFile = bdflsFile )
projectileMass = bdflsFile.mass( target.yi )
targetMass = bdflsFile.mass( target.ZA )
yi = endl2.ZAToYo( target.yi )
yiZA = endl2.yoToZA( yi )
yiZ, yiA = endl2.ZandAFromZA( yiZA )
ZA = target.ZA
# ZAZA = endl2.yoToZA( ZA )
ZAZA = ZA
ZAZ, ZAA = endl2.ZandAFromZA( ZAZA )
if( projectileMass > targetMass ) :
reaction = '%s%d__%s%d_' % ( endl_Z.endl_ZSymbol( yiZ ), yiA, endl_Z.endl_ZSymbol( ZAZ ), ZAA )
else :
reaction = '%s%d__%s%d_' % ( endl_Z.endl_ZSymbol( ZAZ ), ZAA, endl_Z.endl_ZSymbol( yiZ ), yiA )
outGoing = []
print yos
for yo in yos :
if( yo < 1000 ) :
outGoing.append( [ endl2.yoToZA( yo ) ] )
else :
outGoing.append( [ yo ] )
outGoing.append( [ residualZA ] )
for i in outGoing :
iZA = i[0]
i.insert( 0, bdflsFile.mass( iZA ) )
Z, A = endl2.ZandAFromZA( iZA )
i.append( Z )
i.append( A )
outGoing.sort( )
s = ''
for mass, iZA, Z, A in outGoing :
reaction += '%s%s%d' % ( s, endl_Z.endl_ZSymbol( Z ), A )
s = '__'
outputStr = [ '## Fudge generated data for tdfgen version:0.9.9' ]
outputStr.append( '## Data generated from:fudge' )
outputStr.append( '' )
outputStr.append( '## Reaction:%s' % reaction )
outputStr.append( '' )
outputStr.append( '# Masses of particles in MeV.' )
outputStr.append( '## Mass of projectile:%.12e' % ( projectileMass * AMUToMeV ) )
outputStr.append( '## Mass of target:%.12e' % ( targetMass * AMUToMeV ) )
outputStr.append( '' )
outputStr.append( '## Number of final particles:%d' % len( outGoing ) )
for mass, iZA, Z, A in outGoing : outputStr.append( '## %.12e' % ( mass * AMUToMeV ) )
outputStr.append( '' )
outputStr.append( '## Lab of CM frame:Lab' )
outputStr.append( '## Number of data points:%d' % len( xsec ) )
outputStr.append( '# E(MeV) Sigma( barn )' )
outputStr.append( '#------------------------' )
outputStr.append( xsec.toString( ) )
outputStr = '\n'.join( outputStr )
inputFile = fudgeFileMisc.fudgeTempFile( dir = workDir )
inputFile.write( outputStr )
inputName = inputFile.getName( )
print inputName
os.system( './tdfgen -i %s -o %s' % ( inputFile.getName( ), outputFile ) )