13 #if defined __cplusplus 
   18 #define nParticleChanges 6 
   90     char const *outputChannelStr, *crossSectionUnits[2] = { 
"MeV", 
"b" };
 
  137     reaction->
finalQ = finalQ;
 
  143     case 18 : 
case 19 : 
case 20 : 
case 21 : 
case 38 :
 
  157         if( numberOfChanges == 0 ) {
 
  182     if( projectileGlobalIndex != gammaIndex ) {
 
  184         if( i1 == productsInfo->
numberOfProducts ) particlesChanges[i2++] = projectileGlobalIndex;
 
  188     if( i1 == productsInfo->
numberOfProducts ) particlesChanges[i2++] = targetGlobalIndex;
 
  191         if( i2 == n1 ) 
break;
 
  215     int twoBodyProductsWithData = 0;
 
  220         for( iProduct = 0; iProduct < nProducts; iProduct++ ) {
 
  223                 twoBodyProductsWithData = -1; }
 
  225                 if( twoBodyProductsWithData >= 0 ) twoBodyProductsWithData = 1;
 
  229     if( twoBodyProductsWithData < 0 ) twoBodyProductsWithData = 0;
 
  231     for( iProduct = 0; iProduct < nProducts; iProduct++ ) {
 
  232         productIsTrackable = twoBodyProductsWithData;
 
  236             productIsTrackable = 1;
 
  237             if( globalPoPsIndex < 0 ) {
 
  241                 if( productIsTrackable ) {
 
  245                         if( ( product->
pop->
name[len-2] == 
'_' ) && ( product->
pop->
name[len-1] == 
'c' ) ) {
 
  247                             productIsTrackable = 1;
 
  251                     if( globalPoPsIndex < 0 ) {
 
  258         if( productIsTrackable ) {
 
  301     if( product == NULL ) {
 
  331     return( reaction->
target );
 
  359     *EMin = reaction->
EMin;
 
  360     *EMax = reaction->
EMax;
 
  368     double lowerEps = 1e-14, upperEps = -1e-14;
 
  370     if( reaction->
EMin == EMin ) lowerEps = 0.;
 
  371     if( reaction->
EMax == EMax ) upperEps = 0.;
 
  372     if( ( lowerEps == 0. ) && ( upperEps == 0. ) ) 
return( 0 );
 
  386         if( e_in < reaction->EMin ) e_in = reaction->
EMin;
 
  387         if( e_in > reaction->
EMax ) e_in = reaction->
EMax;
 
  393         if( xSecP != NULL ) {
 
  410     return( reaction->
finalQ );
 
  424     if( S != NULL ) *S = reaction->
ENDL_S;
 
  425     return( reaction->
ENDL_C );
 
  433     int MT1_50ToC[] = { 1,   10,  -3,   -4,   -5,    0,    0,    0,    0,  -10,
 
  434                        32,    0,   0,    0,    0,   12,   13,   15,   15,   15,
 
  435                        15,   26,  36,   33,  -25,    0,  -27,   20,   27,  -30,
 
  436                         0,   22,  24,   25,  -35,  -36,   14,   15,    0,    0,
 
  437                        29,   16,   0,   17,   34,    0,    0,    0,    0 };
 
  438     int MT100_200ToC[] = { -101,   46,   40,   41,   42,   44,   45,   37, -109,    0,
 
  439                              18,   48, -113, -114,   19,   39,   47,    0,    0,    0,
 
  440                               0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
  441                               0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
  442                               0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
  443                               0, -152, -153, -154,   43, -156, -157,   23,   31, -160,
 
  444                            -161, -162, -163, -164, -165, -166, -167, -168, -169, -170,
 
  445                            -171, -172, -173, -174, -175, -176, -177, -178, -179, -180,
 
  446                            -181, -182, -183, -184, -185, -186, -187, -188,   28, -190,
 
  447                            -191, -192,   38, -194, -195, -196, -197, -198, -199, -200 };
 
  451     if( MT <= 0 ) 
return( 1 );
 
  452     if( MT > 891 ) 
return( 1 );
 
  454         reaction->
ENDL_C = MT1_50ToC[MT - 1]; }
 
  455     else if( MT <= 91 ) {
 
  457         if( MT != 91 ) reaction->
ENDL_S = 1; }
 
  458     else if( ( MT > 100 ) && ( MT <= 200 ) ) {
 
  459         reaction->
ENDL_C = MT100_200ToC[MT - 101]; }
 
  460     else if( ( MT == 452 ) || ( MT == 455 ) || ( MT == 456 ) || ( MT == 458 ) ) {
 
  462         if( MT == 455 ) reaction->
ENDL_S = 7; }
 
  463     else if( MT >= 600 ) {
 
  466             if( MT != 649 ) reaction->
ENDL_S = 1; }
 
  467         else if( MT < 700 ) {
 
  469             if( MT != 699 ) reaction->
ENDL_S = 1; }
 
  470         else if( MT < 750 ) {
 
  472             if( MT != 749 ) reaction->
ENDL_S = 1; }
 
  473         else if( MT < 800 ) {
 
  475             if( MT != 799 ) reaction->
ENDL_S = 1; }
 
  476         else if( MT < 850 ) {
 
  478             if( MT != 849 ) reaction->
ENDL_S = 1; }
 
  479         else if( ( MT >= 875 ) && ( MT <= 891 ) ) {
 
  481             if( MT != 891 ) reaction->
ENDL_S = 1;
 
  499     if( totalGroupedCrossSection != NULL ) {
 
  536     if( ( index < 0 ) || ( index >= productsInfo->
numberOfProducts ) ) 
return( -1 );
 
  552     if( ( index < 0 ) || ( index >= productsInfo->
numberOfProducts ) ) 
return( -1 );
 
  560     if( ( index < 0 ) || ( index >= productsInfo->
numberOfProducts ) ) 
return( -1 );
 
  564 #if defined __cplusplus 
void MCGIDI_misc_updateTransportabilitiesMap2(transportabilitiesMap *transportabilities, int PoPID, int transportable)
 
int MCGIDI_outputChannel_release(statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel)
 
int numberOfAllocatedProducts
 
#define smr_allocateCopyString2(smr, s, forItem)
 
transportabilitiesMap * transportabilities
 
GIDI::ptwXPoints * groupFunction(GIDI::statusMessageReporting *smr, GIDI::ptwXYPoints *ptwXY1, double temperature, int order) const 
 
ptwXYPoints * crossSection
 
nfu_status ptwXY_getValueAtX(ptwXYPoints *ptwXY, double x, double *y)
 
enum MCGIDI_reactionType reactionType
 
double thresholdGroupDomain
 
enum MCGIDI_productMultiplicityType productMultiplicityType
 
int MCGIDI_reaction_initialize(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
int xDataTOME_convertAttributeToInteger(statusMessageReporting *smr, xDataTOM_element *element, char const *name, int *n)
 
char const * outputChannelStr
 
ptwXYPoints ** piecewiseMultiplicities
 
enum MCGIDI_angularType type
 
MCGIDI_outputChannel outputChannel
 
GIDI_settings_group getGroup(void) const 
 
nfu_status ptwX_add_ptwX(ptwXPoints *ptwX1, ptwXPoints *ptwX2)
 
MCGIDI_reaction * MCGIDI_reaction_free(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
int MCGIDI_productsInfo_getPoPsIndexAtIndex(MCGIDI_productsInfo *productsInfo, int index)
 
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
 
double MCGIDI_reaction_getFinalQ(statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes)
 
void xDataTOMAL_initial(statusMessageReporting *smr, xDataTOM_attributionList *attributes)
 
double thresholdGroupedDeltaCrossSection
 
enum MCGIDI_quantityLookupMode getCrossSectionMode(void) const 
 
MCGIDI_productsInfo productsInfo
 
int xDataTOME_getInterpolation(statusMessageReporting *smr, xDataTOM_element *element, int index, enum xDataTOM_interpolationFlag *independent, enum xDataTOM_interpolationFlag *dependent, enum xDataTOM_interpolationQualifier *qualifier)
 
int MCGIDI_reaction_release(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
xDataTOM_interpolationFlag
 
enum MCGIDI_productMultiplicityType MCGIDI_productsInfo_getMultiplicityTypeAtIndex(MCGIDI_productsInfo *productsInfo, int index)
 
MCGIDI_target_heated * target
 
ptwXPoints * crossSectionGrouped
 
static int MCGIDI_reaction_particleChanges(MCGIDI_POP *projectile, MCGIDI_POP *target, MCGIDI_productsInfo *productsInfo, int n1, int *particlesChanges)
 
MCGIDI_productInfo * productInfo
 
ptwXYPoints * MCGIDI_misc_dataFromElement2ptwXYPointsInUnitsOf(statusMessageReporting *smr, xDataTOM_element *linear, char const *toUnits[2])
 
MCGIDI_product * MCGIDI_outputChannel_getProductAtIndex(statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, int i)
 
#define smr_setReportError2(smr, libraryID, code, fmt,...)
 
double MCGIDI_reaction_getCrossSectionAtE(statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes, bool sampling)
 
double MCGIDI_target_heated_getProjectileMass_MeV(statusMessageReporting *smr, MCGIDI_target_heated *target)
 
int MCGIDI_outputChannel_numberOfProducts(MCGIDI_outputChannel *outputChannel)
 
xDataTOM_element * xDataTOME_getOneElementByName(statusMessageReporting *smr, xDataTOM_element *element, char const *name, int required)
 
int MCGIDI_productsInfo_getIntegerMultiplicityAtIndex(MCGIDI_productsInfo *productsInfo, int index)
 
ptwXPoints * ptwX_free(ptwXPoints *ptwX)
 
void xDataTOMAL_release(xDataTOM_attributionList *attributes)
 
enum nfu_status_e nfu_status
 
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
 
int getGroupIndex(void) const 
 
#define smr_malloc2(smr, size, zero, forItem)
 
double ptwXY_getXMin(ptwXYPoints *ptwXY)
 
static int MCGIDI_reaction_ParseReactionTypeAndDetermineProducts(statusMessageReporting *smr, MCGIDI_POPs *pops, MCGIDI_reaction *reaction)
 
int MCGIDI_reaction_recast(statusMessageReporting *smr, MCGIDI_reaction *reaction, GIDI_settings &settings, GIDI_settings_particle const *projectileSettings, double temperature_MeV, ptwXPoints *totalGroupedCrossSection)
 
double MCGIDI_reaction_getProjectileMass_MeV(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
MCGIDI_target_heated * MCGIDI_reaction_getTargetHeated(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
nfu_status ptwXY_dullEdges(ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly)
 
int MCGIDI_productsInfo_getNumberOfUniqueProducts(MCGIDI_productsInfo *productsInfo)
 
static int MCGIDI_reaction_ParseDetermineReactionProducts(statusMessageReporting *smr, MCGIDI_POPs *pops, MCGIDI_outputChannel *outputChannel, MCGIDI_productsInfo *productsInfo, MCGIDI_reaction *reaction, double *finalQ, int level)
 
static int MCGIDI_reaction_initialize2(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
enum MCGIDI_distributionType type
 
xDataTOM_interpolationQualifier
 
int MCGIDI_outputChannel_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_POPs *pops, MCGIDI_outputChannel *outputChannel, MCGIDI_reaction *reaction, MCGIDI_product *parent)
 
double MCGIDI_outputChannel_getQ_MeV(statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double e_in)
 
enum MCGIDI_channelGenre genre
 
int MCGIDI_reaction_getENDF_MTNumber(MCGIDI_reaction *reaction)
 
void * smr_freeMemory(void **p)
 
ptwXYPoints * multiplicityVsEnergy
 
MCGIDI_reaction * MCGIDI_reaction_new(statusMessageReporting *smr)
 
int MCGIDI_reaction_getENDL_CSNumbers(MCGIDI_reaction *reaction, int *S)
 
MCGIDI_productMultiplicityType
 
static int MCGIDI_reaction_addReturnProduct(statusMessageReporting *smr, MCGIDI_productsInfo *productsInfo, int ID, MCGIDI_product *product, MCGIDI_reaction *reaction, int transportable)
 
#define smr_realloc2(smr, old, size, forItem)
 
MCGIDI_outputChannel decayChannel
 
double * ptwX_getPointAtIndex(ptwXPoints *ptwX, int64_t index)
 
int MCGIDI_reaction_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_target_heated *target, MCGIDI_POPs *pops, MCGIDI_reaction *reaction)
 
int MCGIDI_productsInfo_getTransportableAtIndex(MCGIDI_productsInfo *productsInfo, int index)
 
MCGIDI_distribution distribution
 
int MCGIDI_reaction_fixDomains(statusMessageReporting *smr, MCGIDI_reaction *reaction, double EMin, double EMax, nfu_status *status)
 
double MCGIDI_reaction_getTargetMass_MeV(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
enum MCGIDI_reactionType MCGIDI_reaction_getReactionType(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
double getProjectileEnergy(void) const 
 
MCGIDI_productsInfo * MCGIDI_reaction_getProductsInfo(MCGIDI_reaction *reaction)
 
double ptwXY_getXMax(ptwXYPoints *ptwXY)
 
int MCGIDI_reaction_getDomain(statusMessageReporting *smr, MCGIDI_reaction *reaction, double *EMin, double *EMax)
 
xDataTOM_attributionList attributes
 
int xDataTOME_copyAttributionList(statusMessageReporting *smr, xDataTOM_attributionList *desc, xDataTOM_element *element)
 
std::map< int, enum GIDI::MCGIDI_transportability > transportabilitiesMap
 
char const * xDataTOM_getAttributesValueInElement(xDataTOM_element *element, char const *name)
 
static int MCGIDI_reaction_setENDL_CSNumbers(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
MCGIDI_POP * projectilePOP
 
int PoPs_particleIndex(char const *name)
 
double MCGIDI_target_heated_getTargetMass_MeV(statusMessageReporting *smr, MCGIDI_target_heated *target)