24 #if defined __cplusplus 
   34 static struct ZSymbol ZSymbols[] = {    {   0, 
"n"  },  {   1, 
"H"  },  {   2, 
"He" },  {   3, 
"Li" },  {   4, 
"Be" },  {   5, 
"B"  },  {   6, 
"C"  },
 
   35         {   7, 
"N"  },  {   8, 
"O"  },  {   9, 
"F"  },  {  10, 
"Ne" },  {  11, 
"Na" },  {  12, 
"Mg" },  {  13, 
"Al" },  {  14, 
"Si" },  {  15, 
"P"  },
 
   36         {  16, 
"S"  },  {  17, 
"Cl" },  {  18, 
"Ar" },  {  19, 
"K"  },  {  20, 
"Ca" },  {  21, 
"Sc" },  {  22, 
"Ti" },  {  23, 
"V"  },  {  24, 
"Cr" },
 
   37         {  25, 
"Mn" },  {  26, 
"Fe" },  {  27, 
"Co" },  {  28, 
"Ni" },  {  29, 
"Cu" },  {  30, 
"Zn" },  {  31, 
"Ga" },  {  32, 
"Ge" },  {  33, 
"As" },
 
   38         {  34, 
"Se" },  {  35, 
"Br" },  {  36, 
"Kr" },  {  37, 
"Rb" },  {  38, 
"Sr" },  {  39, 
"Y"  },  {  40, 
"Zr" },  {  41, 
"Nb" },  {  42, 
"Mo" },
 
   39         {  43, 
"Tc" },  {  44, 
"Ru" },  {  45, 
"Rh" },  {  46, 
"Pd" },  {  47, 
"Ag" },  {  48, 
"Cd" },  {  49, 
"In" },  {  50, 
"Sn" },  {  51, 
"Sb" },
 
   40         {  52, 
"Te" },  {  53, 
"I"  },  {  54, 
"Xe" },  {  55, 
"Cs" },  {  56, 
"Ba" },  {  57, 
"La" },  {  58, 
"Ce" },  {  59, 
"Pr" },  {  60, 
"Nd" },
 
   41         {  61, 
"Pm" },  {  62, 
"Sm" },  {  63, 
"Eu" },  {  64, 
"Gd" },  {  65, 
"Tb" },  {  66, 
"Dy" },  {  67, 
"Ho" },  {  68, 
"Er" },  {  69, 
"Tm" },
 
   42         {  70, 
"Yb" },  {  71, 
"Lu" },  {  72, 
"Hf" },  {  73, 
"Ta" },  {  74, 
"W"  },  {  75, 
"Re" },  {  76, 
"Os" },  {  77, 
"Ir" },  {  78, 
"Pt" },
 
   43         {  79, 
"Au" },  {  80, 
"Hg" },  {  81, 
"Tl" },  {  82, 
"Pb" },  {  83, 
"Bi" },  {  84, 
"Po" },  {  85, 
"At" },  {  86, 
"Rn" },  {  87, 
"Fr" },
 
   44         {  88, 
"Ra" },  {  89, 
"Ac" },  {  90, 
"Th" },  {  91, 
"Pa" },  {  92, 
"U"  },  {  93, 
"Np" },  {  94, 
"Pu" },  {  95, 
"Am" },  {  96, 
"Cm" },
 
   45         {  97, 
"Bk" },  {  98, 
"Cf" },  {  99, 
"Es" },  { 100, 
"Fm" },  { 101, 
"Md" },  { 102, 
"No" },  { 103, 
"Lr" },  { 104, 
"Rf" },  { 105, 
"Db" },
 
   46         { 106, 
"Sg" }, { 107, 
"Bh" },  { 108, 
"Hs" },  { 109, 
"Mt" } };
 
   50     int length, 
double *
data, 
char const *fromUnits[2], 
char const *toUnits[2] );
 
   73     for( i = 0; i < 
n; i++ ) {
 
   84     char s[1024] = 
"", *q, *e;   
 
   86     if( strlen( name ) >= ( 
sizeof( s ) - 1 ) ) {
 
   91     *Z = *A = *m = *level = 0;
 
   92     if( ( !strncmp( 
"FissionProduct", name, 14 ) ) || !strncmp( 
"99120", name, 5 ) ) {
 
   97     if( strcmp( 
"gamma", name ) == 0 ) 
return( 0 );
 
   98     if( strcmp( 
"n", name ) == 0 ) { *A = 1; 
return( 0 ); }
 
  100     for( p = name, q = s; ( *p != 0 ) && !isdigit( *p ) && ( *p != 
'_' ); p++, q++ ) *q = *p;   
 
  110             if( strncmp( p, 
"_natural", 8 ) == 0 ) {
 
  117             for( q = s; isdigit( *p ); p++, q++ ) *q = *p;
 
  119             if( strcmp( s, 
"natural" ) == 0 ) {
 
  123                 *A = (
int) strtol( s, &e, 10 );
 
  148             level = (
int) strtol( p, &e, 10 );
 
  173     if( !
smr_isOk( smr ) ) 
return( NULL );
 
  189     if( !
smr_isOk( smr ) ) 
return( NULL );
 
  192             if( element != NULL ) {
 
  205     const char *fmt, ... ) {
 
  211     va_start( args, fmt );
 
  216         va_start( args, fmt );
 
  234     if( d < ds[0] ) 
return( -2 );
 
  235     if( d > ds[n-1] ) 
return( -1 );
 
  237         imid = ( imin + 
imax ) >> 1;
 
  238         if( imid == imin ) 
break;
 
  254     int n = (
int) strlen( fileName ) + 1, nCwd = 0;
 
  255     char *absPath, cwd[4 * 1024] = 
"", *
p, *needle;
 
  257     if( fileName[0] != 
'/' ) {
 
  260         if( getcwd( cwd, 
sizeof( cwd ) ) == NULL ) {
 
  264         nCwd = (
int) strlen( cwd );
 
  267     if( ( absPath = (
char *) 
smr_malloc2( smr, n, 0, 
"absPath" ) ) == NULL ) 
return( NULL );
 
  268     if( fileName[0] != 
'/' ) {
 
  269         strcpy( absPath, cwd );
 
  270         strcat( absPath, 
"/" );
 
  271         strcat( absPath, fileName ); }
 
  273         strcpy( absPath, fileName );
 
  277         if( ( needle = strstr( absPath, 
"/./" ) ) == NULL ) 
break;
 
  279         for( needle += 2; *needle; 
p++, needle++ ) *
p = *needle;
 
  283         if( ( needle = strstr( absPath, 
"/../" ) ) == NULL ) 
break;
 
  285         while( ( 
p > absPath ) && ( *
p != 
'/' ) ) 
p--; 
 
  286         if( *
p != 
'/' ) 
break;                           
 
  287         if( 
p == absPath ) 
break;                       
 
  288         for( needle += 3; *needle; 
p++, needle++ ) *
p = *needle;
 
  302     for( i = 0; ; i++ ) {
 
  317     char const *frameString;
 
  340     while( isspace( *s ) ) s++; 
 
  341     *value = strtod( s, &e ) * conversion;
 
  346     while( isspace( *e ) ) e++; 
 
  347     if( strcmp( e, unit ) != 0 ) {
 
  362     char const *s1 = str;
 
  366     while( isspace( *s1 ) ) s1++; 
 
  367     *value = strtod( s1, &e1 );
 
  372     while( isspace( *e1 ) ) e1++; 
 
  385     if( strcmp( fromUnit, toUnit ) == 0 ) 
return( 1.0 );
 
  387     if( strcmp( fromUnit, 
"eV" ) == 0 ) {
 
  388         if( strcmp( toUnit, 
"MeV" ) == 0 ) 
return( 1e-6 ); }
 
  389     else if( strcmp( fromUnit, 
"MeV" ) == 0 ) {
 
  390         if( strcmp( toUnit, 
"eV" ) == 0 ) 
return( 1e+6 ); }
 
  391     else if( strcmp( fromUnit, 
"1/eV" ) == 0 ) {
 
  392         if( strcmp( toUnit, 
"1/MeV" ) == 0 ) 
return( 1e+6 ); }
 
  393     else if( strcmp( fromUnit, 
"1/MeV" ) == 0 ) {
 
  394         if( strcmp( toUnit, 
"1/eV" ) == 0 ) 
return( 1e-6 ); }
 
  395     else if( strcmp( fromUnit, 
"K" ) == 0 ) {
 
  396         if( strcmp( toUnit, 
"MeV/k" ) == 0 ) 
return( 8.617343183775137e-11 );
 
  410     char const *fromUnits[2];
 
  413     if( !
smr_isOk( smr ) ) 
return( NULL );
 
  415     if( !
smr_isOk( smr ) ) 
return( NULL );
 
  429     char const *fromUnits[2];
 
  448         int length, 
double *
data, 
char const *fromUnits[2], 
char const *toUnits[2] ) {
 
  450     double xFactor, yFactor;
 
  460     ptwXY = 
ptwXY_create( interpolation, NULL, 2., 1e-3, length, 10, length, data, &status, 0 );
 
  466     if( ( xFactor != 1. ) || ( yFactor != 1. ) ) {
 
  484     transportabilitiesMap::iterator iter = transportabilities->find( PoPID );
 
  486     if( iter != transportabilities->end( ) ) {
 
  487         switch ( iter->second ) {
 
  491             switch( transportability ) {
 
  507             switch( transportability ) {
 
  519     (*transportabilities)[PoPID] = transportability;
 
  529 #if defined __cplusplus 
int MCGIDI_misc_symbolToZ(const char *Z)
 
void MCGIDI_misc_updateTransportabilitiesMap2(transportabilitiesMap *transportabilities, int PoPID, int transportable)
 
const char * MCGIDI_misc_ZToSymbol(int iZ)
 
char const * MCGIDI_misc_pointerToTOMAttributeIfAllOk(statusMessageReporting *smr, char const *path, int required, xDataTOM_attributionList *attributes, char const *name, char const *file, int line)
 
#define MCGIDI_particleLevel_sum
 
char const * MCGIDI_misc_pointerToAttributeIfAllOk(statusMessageReporting *smr, xDataXML_element *element, char const *path, int required, xDataTOM_attributionList *attributes, char const *name, char const *file, int line)
 
ptwXYPoints * ptwXY_create(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, nfu_status *status, int userFlag)
 
int MCGIDI_misc_copyXMLAttributesToTOM(statusMessageReporting *smr, xDataTOM_attributionList *TOM, xDataXML_attributionList *XML)
 
enum xDataTOM_frame xDataTOM_axis_stringToFrame(statusMessageReporting *smr, char const *frame)
 
int MCGIDI_fromTOM_interpolation(statusMessageReporting *smr, xDataTOM_element *element, int index, enum ptwXY_interpolation_e *interpolation)
 
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
 
void xDataTOMAL_initial(statusMessageReporting *smr, xDataTOM_attributionList *attributes)
 
#define MCGIDI_particleLevel_continuum
 
void MCGIDI_misc_updateTransportabilitiesMap(transportabilitiesMap *transportabilities, int PoPID, enum MCGIDI_transportability transportability)
 
char const * xDataTOMAL_getAttributesValue(xDataTOM_attributionList *attributes, char const *name)
 
int xDataTOM_XYs_getDataFromXDataInfo(xDataTOM_xDataInfo *xDI, double **data)
 
const XML_Char const XML_Char * data
 
int smr_vsetReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args)
 
ptwXYPoints * MCGIDI_misc_dataFromElement2ptwXYPointsInUnitsOf(statusMessageReporting *smr, xDataTOM_element *linear, char const *toUnits[2])
 
#define smr_setReportError2p(smr, libraryID, code, fmt)
 
double A(double temperature)
 
#define smr_setReportError2(smr, libraryID, code, fmt,...)
 
static constexpr double m
 
const XML_Char int const XML_Char * value
 
void xDataTOMAL_release(xDataTOM_attributionList *attributes)
 
enum nfu_status_e nfu_status
 
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
 
#define smr_malloc2(smr, size, zero, forItem)
 
xDataXML_attribute * xDataXML_attributeByIndex(xDataXML_attributionList *attributes, int index)
 
char * MCGIDI_misc_getAbsPath(statusMessageReporting *smr, char const *fileName)
 
int xDataTOMAL_addAttribute(statusMessageReporting *smr, xDataTOM_attributionList *attributes, char const *name, char const *value)
 
int smr_isOk(statusMessageReporting *smr)
 
xDataTOM_Int MCGIDI_misc_binarySearch(xDataTOM_Int n, double *ds, double d)
 
enum ptwXY_interpolation_e ptwXY_interpolation
 
static struct ZSymbol ZSymbols[]
 
int MCGIDI_miscNameToZAm(statusMessageReporting *smr, const char *name, int *Z, int *A, int *m, int *level)
 
void * smr_freeMemory(void **p)
 
#define MCGIDI_token_productFrame
 
ptwXYPoints * MCGIDI_misc_dataFromXYs2ptwXYPointsInUnitsOf(statusMessageReporting *smr, xDataTOM_XYs *XYs, ptwXY_interpolation interpolation, char const *units[2])
 
char * smr_vallocateFormatMessage(char const *fmt, va_list *args)
 
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
 
enum xDataTOM_frame MCGIDI_misc_getProductFrame(statusMessageReporting *smr, xDataTOM_element *frameElement)
 
double MCGIDI_misc_getUnitConversionFactor(statusMessageReporting *smr, char const *fromUnit, char const *toUnit)
 
static int MCGIDI_miscNameToZAm_getLevel(statusMessageReporting *smr, const char *name, const char *p)
 
int MCGIDI_misc_PQUStringToDouble(statusMessageReporting *smr, char const *str, char const *unit, double conversion, double *value)
 
xDataTOM_xDataInfo xDataInfo
 
static ptwXYPoints * MCGIDI_misc_Data2ptwXYPointsInUnitsOf(statusMessageReporting *smr, ptwXY_interpolation interpolation, int length, double *data, char const *fromUnits[2], char const *toUnits[2])
 
nfu_status ptwXY_scaleOffsetXAndY(ptwXYPoints *ptwXY, double xScale, double xOffset, double yScale, double yOffset)
 
int MCGIDI_misc_PQUStringToDoubleInUnitOf(statusMessageReporting *smr, char const *str, char const *toUnit, double *value)
 
int MCGIDI_misc_setMessageError_Element(statusMessageReporting *smr, void *userInterface, xDataXML_element *element, char const *file, int line, int code, char const *fmt,...)
 
const char * nfu_statusMessage(nfu_status status)
 
int MCGIDI_misc_NumberOfZSymbols(void)
 
int xDataTOM_XYs_getData(xDataTOM_XYs *XYs, double **data)
 
std::map< int, enum GIDI::MCGIDI_transportability > transportabilitiesMap
 
char const * xDataTOM_getAttributesValueInElement(xDataTOM_element *element, char const *name)
 
char const * xDataTOM_subAxes_getUnit(statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index)