Geant4 Cross Reference |
1 /* 2 # <<BEGIN-copyright>> 3 # <<END-copyright>> 4 */ 5 #include <string.h> 6 #include <cmath> 7 8 #include "MCGIDI_fromTOM.h" 9 10 #if defined __cplusplus 11 namespace GIDI { 12 using namespace GIDI; 13 #endif 14 15 /* 16 ************************************************************ 17 */ 18 int MCGIDI_uncorrelated_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms, 19 enum MCGIDI_energyType energyType, double gammaEnergy_MeV ) { 20 21 xDataTOM_element *uncorrelatedElement; 22 ptwXYPoints *angularNorms = NULL; 23 24 if( ( energyType == MCGIDI_energyType_primaryGamma ) || ( energyType == MCGIDI_energyType_discreteGamma ) ) { 25 angularNorms = norms; 26 uncorrelatedElement = element; } 27 else { 28 if( ( uncorrelatedElement = xDataTOME_getOneElementByName( smr, element, "uncorrelated", 1 ) ) == NULL ) goto err; 29 } 30 31 if( MCGIDI_angular_parseFromTOM( smr, uncorrelatedElement, distribution, angularNorms ) ) goto err; 32 if( MCGIDI_energy_parseFromTOM( smr, uncorrelatedElement, distribution, norms, energyType, gammaEnergy_MeV ) ) goto err; 33 distribution->type = MCGIDI_distributionType_uncorrelated_e; 34 35 return( 0 ); 36 37 err: 38 return( 1 ); 39 } 40 /* 41 ************************************************************ 42 */ 43 int MCGIDI_uncorrelated_sampleDistribution( statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes, 44 MCGIDI_decaySamplingInfo *decaySamplingInfo ) { 45 46 enum xDataTOM_frame frame; 47 48 if( MCGIDI_energy_sampleEnergy( smr, distribution->energy, modes, decaySamplingInfo ) ) return( 1 ); 49 frame = decaySamplingInfo->frame; 50 if( MCGIDI_angular_sampleMu( smr, distribution->angular, modes, decaySamplingInfo ) ) return( 1 ); 51 decaySamplingInfo->frame = frame; /* Discrete and primary gammas in COM are treated as lab for now and energy sets it correctly. */ 52 return( 0 ); 53 } 54 55 #if defined __cplusplus 56 } 57 #endif 58