9 #include "MCGIDI_misc.h"
11 #if defined __cplusplus
21 MCGIDI_distribution *distribution;
23 if( ( distribution = (MCGIDI_distribution *) smr_malloc2( smr,
sizeof( MCGIDI_distribution ), 0,
"distribution" ) ) == NULL )
return( NULL );
25 return( distribution );
32 memset( distribution, 0,
sizeof( MCGIDI_distribution ) );
49 if( distribution->angular ) distribution->angular =
MCGIDI_angular_free( smr, distribution->angular );
50 if( distribution->energy ) distribution->energy =
MCGIDI_energy_free( smr, distribution->energy );
51 if( distribution->KalbachMann ) distribution->KalbachMann =
MCGIDI_KalbachMann_free( smr, distribution->KalbachMann );
52 if( distribution->energyAngular ) distribution->energyAngular =
MCGIDI_energyAngular_free( smr, distribution->energyAngular );
53 if( distribution->angularEnergy ) distribution->angularEnergy =
MCGIDI_angularEnergy_free( smr, distribution->angularEnergy );
63 char const *nativeData, *gammaEnergy;
64 double gammaEnergy_MeV;
65 MCGIDI_distribution *distribution = &(product->distribution);
66 xDataTOM_element *distributionElement;
67 enum MCGIDI_energyType energyType = MCGIDI_energyType_unknown;
71 distribution->product = product;
75 if( strcmp( product->pop->name,
"gamma" ) == 0 ) {
78 energyType = MCGIDI_energyType_discreteGamma; }
81 energyType = MCGIDI_energyType_primaryGamma;
83 if( gammaEnergy != NULL ) {
84 if( strcmp( nativeData,
"angular" ) ) {
85 smr_setReportError2( smr, smr_unknownID, 1,
"%s gamma can only have a distribution with 'nativeData' = 'angular' and not '%s'",
86 gammaEnergy, nativeData );
89 nativeData =
"uncorrelated";
93 if( strcmp( nativeData,
"angular" ) == 0 ) {
95 else if( strcmp( nativeData,
"uncorrelated" ) == 0 ) {
97 else if( strcmp( nativeData,
"energyAngular" ) == 0 ) {
99 else if( strcmp( nativeData,
"angularEnergy" ) == 0 ) {
101 else if( strcmp( nativeData,
"Legendre" ) == 0 ) {
103 else if( strcmp( nativeData,
"LLNLAngular_angularEnergy" ) == 0 ) {
105 else if( strcmp( nativeData,
"none" ) == 0 ) {
106 distribution->type = MCGIDI_distributionType_none_e; }
107 else if( strcmp( nativeData,
"unknown" ) == 0 ) {
108 distribution->type = MCGIDI_distributionType_unknown_e; }
110 smr_setReportError2( smr, smr_unknownID, 1,
"Unsupported distribution = '%s'\n", nativeData );
121 #if defined __cplusplus
int MCGIDI_angularEnergy_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
xDataTOM_element * xDataTOME_getOneElementByName(statusMessageReporting *smr, xDataTOM_element *element, char const *name, int required)
MCGIDI_KalbachMann * MCGIDI_KalbachMann_free(statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann)
MCGIDI_energyAngular * MCGIDI_energyAngular_free(statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular)
MCGIDI_energy * MCGIDI_energy_free(statusMessageReporting *smr, MCGIDI_energy *energy)
int MCGIDI_LLNLAngular_angularEnergy_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
int MCGIDI_distribution_release(statusMessageReporting *smr, MCGIDI_distribution *distribution)
int MCGIDI_energyAngular_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
MCGIDI_distribution * MCGIDI_distribution_new(statusMessageReporting *smr)
int MCGIDI_distribution_initialize(statusMessageReporting *, MCGIDI_distribution *distribution)
void * smr_freeMemory(void **p)
int MCGIDI_misc_PQUStringToDoubleInUnitOf(statusMessageReporting *smr, char const *str, char const *toUnit, double *value)
char const * xDataTOM_getAttributesValueInElement(xDataTOM_element *element, char const *name)
MCGIDI_angularEnergy * MCGIDI_angularEnergy_free(statusMessageReporting *smr, MCGIDI_angularEnergy *angularEnergy)
MCGIDI_angular * MCGIDI_angular_free(statusMessageReporting *smr, MCGIDI_angular *angular)
int MCGIDI_distribution_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_product *product, MCGIDI_POPs *, ptwXYPoints *norms)
int MCGIDI_angular_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms)
MCGIDI_distribution * MCGIDI_distribution_free(statusMessageReporting *smr, MCGIDI_distribution *distribution)