The following C example demonstrates how to open a file and loop through all the targets to print out their ZA, mass and the total cross-section for each reaction type.
#include <stdio.h>
#include <ndf.h>
main( ) {
int yi = 1, iZA, nZAs, *ZAs, i;
int ncg, gid = 93, fid = 0, iC, nC, C, *CList;
double cgb[250], cs[250], Q; /* 250 should be large enough. */
char name[5], Path[256];
CorrectionTypes tcType = endf_LLNL; /* LLNL transport correction. */
printf( "\nOpening ndf file ndf%d with date = %d\n",
yi, ndfcopen( yi, name ) );
ndfcinfo( Path, sizeof( Path ) );
printf( "Path = %s\n", Path );
ndfctrcorr( tc_Type ); /* Set the transport correction method. */
ncg = ndfcidog( gid, cgb ); /* Get group from bdfls file. */
ndfcgroup( ncg, cgb, fid ); /* Set collapsing. */
nZAs = ndfcistab( &ZAs ); /* Get list of targets. */
for( iZA = 0; iZA < nZAs; iZA++ ) { /* Loop over target list. */
ndfciso( ZAs[iZA] ); /* Select next target. */
printf( "\nProcessing ZA = %d. Mass = %e AMU.\n",
ZAs[iZA], ndfcatw( ) );
nC = ndfcreact( &CList ); /* Get list of reactions for current target. */
C = -1;
for( iC = 0; iC < nC; iC++ ) { /* Loop over reactions. */
if( C != CList[iC] ) { /* Do only if different C-value. */
C = CList[iC];
Q = ndfcrxs( C, 0, cs ); /* Total cross-section for reaction C. */
printf( "C = %2d Q = %e\n", C, Q );
for( i = 0; i < ncg; i++ ) {
printf( "%18.10e\n", cs[i] );
}
}
}
}
ndfcclose( ); /* Close the ndf file. */
}