Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/MCGIDI_distribution.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/hadronic/models/lend/src/MCGIDI_distribution.cc (Version 11.3.0) and /processes/hadronic/models/lend/src/MCGIDI_distribution.cc (Version 11.2)


  1 /*                                                  1 /*
  2 # <<BEGIN-copyright>>                               2 # <<BEGIN-copyright>>
  3 # <<END-copyright>>                                 3 # <<END-copyright>>
  4 */                                                  4 */
  5 #include <string.h>                                 5 #include <string.h>
  6 #include <cmath>                                    6 #include <cmath>
  7                                                     7 
  8 #include "MCGIDI.h"                                 8 #include "MCGIDI.h"
  9 #include "MCGIDI_misc.h"                            9 #include "MCGIDI_misc.h"
 10                                                    10 
 11 #if defined __cplusplus                            11 #if defined __cplusplus
 12 namespace GIDI {                                   12 namespace GIDI {
 13 using namespace GIDI;                              13 using namespace GIDI;
 14 #endif                                             14 #endif
 15                                                    15 
 16 /*                                                 16 /*
 17 **********************************************     17 ************************************************************
 18 */                                                 18 */
 19 MCGIDI_distribution *MCGIDI_distribution_new(      19 MCGIDI_distribution *MCGIDI_distribution_new( statusMessageReporting *smr ) {
 20                                                    20 
 21     MCGIDI_distribution *distribution;             21     MCGIDI_distribution *distribution;
 22                                                    22 
 23     if( ( distribution = (MCGIDI_distribution      23     if( ( distribution = (MCGIDI_distribution *) smr_malloc2( smr, sizeof( MCGIDI_distribution ), 0, "distribution" ) ) == NULL ) return( NULL );
 24     if( MCGIDI_distribution_initialize( smr, d     24     if( MCGIDI_distribution_initialize( smr, distribution ) ) distribution = MCGIDI_distribution_free( smr, distribution );
 25     return( distribution );                        25     return( distribution );
 26 }                                                  26 }
 27 /*                                                 27 /*
 28 **********************************************     28 ************************************************************
 29 */                                                 29 */
 30 int MCGIDI_distribution_initialize( statusMess     30 int MCGIDI_distribution_initialize( statusMessageReporting * /*smr*/, MCGIDI_distribution *distribution ) {
 31                                                    31 
 32     memset( distribution, 0, sizeof( MCGIDI_di     32     memset( distribution, 0, sizeof( MCGIDI_distribution ) );
 33     return( 0 );                                   33     return( 0 );
 34 }                                                  34 }
 35 /*                                                 35 /*
 36 **********************************************     36 ************************************************************
 37 */                                                 37 */
 38 MCGIDI_distribution *MCGIDI_distribution_free(     38 MCGIDI_distribution *MCGIDI_distribution_free( statusMessageReporting *smr, MCGIDI_distribution *distribution ) {
 39                                                    39 
 40     MCGIDI_distribution_release( smr, distribu     40     MCGIDI_distribution_release( smr, distribution );
 41     smr_freeMemory( (void **) &distribution );     41     smr_freeMemory( (void **) &distribution );
 42     return( NULL );                                42     return( NULL );
 43 }                                                  43 }
 44 /*                                                 44 /*
 45 **********************************************     45 ************************************************************
 46 */                                                 46 */
 47 int MCGIDI_distribution_release( statusMessage     47 int MCGIDI_distribution_release( statusMessageReporting *smr, MCGIDI_distribution *distribution ) {
 48                                                    48 
 49     if( distribution->angular ) distribution->     49     if( distribution->angular ) distribution->angular = MCGIDI_angular_free( smr, distribution->angular );
 50     if( distribution->energy ) distribution->e     50     if( distribution->energy ) distribution->energy = MCGIDI_energy_free( smr, distribution->energy );
 51     if( distribution->KalbachMann ) distributi     51     if( distribution->KalbachMann ) distribution->KalbachMann = MCGIDI_KalbachMann_free( smr, distribution->KalbachMann );    
 52     if( distribution->energyAngular ) distribu     52     if( distribution->energyAngular ) distribution->energyAngular = MCGIDI_energyAngular_free( smr, distribution->energyAngular );
 53     if( distribution->angularEnergy ) distribu     53     if( distribution->angularEnergy ) distribution->angularEnergy = MCGIDI_angularEnergy_free( smr, distribution->angularEnergy );
 54                                                    54 
 55     MCGIDI_distribution_initialize( smr, distr     55     MCGIDI_distribution_initialize( smr, distribution );
 56     return( 0 );                                   56     return( 0 );
 57 }                                                  57 }
 58 /*                                                 58 /*
 59 **********************************************     59 ************************************************************
 60 */                                                 60 */
 61 int MCGIDI_distribution_parseFromTOM( statusMe     61 int MCGIDI_distribution_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_product *product, MCGIDI_POPs * /*pops*/, ptwXYPoints *norms ) {
 62                                                    62 
 63     char const *nativeData, *gammaEnergy;          63     char const *nativeData, *gammaEnergy;
 64     double gammaEnergy_MeV{0.0};               <<  64     double gammaEnergy_MeV;
 65     MCGIDI_distribution *distribution = &(prod     65     MCGIDI_distribution *distribution = &(product->distribution);
 66     xDataTOM_element *distributionElement;         66     xDataTOM_element *distributionElement;
 67     enum MCGIDI_energyType energyType = MCGIDI     67     enum MCGIDI_energyType energyType = MCGIDI_energyType_unknown;
 68                                                    68 
 69     MCGIDI_distribution_initialize( smr, distr     69     MCGIDI_distribution_initialize( smr, distribution );
 70                                                    70  
 71     distribution->product = product;               71     distribution->product = product;
 72     if( ( distributionElement = xDataTOME_getO     72     if( ( distributionElement = xDataTOME_getOneElementByName( smr, element, "distributions", 1 ) ) == NULL ) goto err;
 73     if( ( nativeData = xDataTOM_getAttributesV     73     if( ( nativeData = xDataTOM_getAttributesValueInElement( distributionElement, "nativeData" ) ) == NULL ) goto err;
 74                                                    74 
 75     if( strcmp( product->pop->name, "gamma" )      75     if( strcmp( product->pop->name, "gamma" ) == 0 ) {
 76         if( ( gammaEnergy = xDataTOM_getAttrib     76         if( ( gammaEnergy = xDataTOM_getAttributesValueInElement( element, "discrete" ) ) != NULL ) {
 77             if( MCGIDI_misc_PQUStringToDoubleI     77             if( MCGIDI_misc_PQUStringToDoubleInUnitOf( smr, gammaEnergy, "MeV", &gammaEnergy_MeV ) ) goto err;
 78             energyType = MCGIDI_energyType_dis     78             energyType = MCGIDI_energyType_discreteGamma; }
 79         else if( ( gammaEnergy = xDataTOM_getA     79         else if( ( gammaEnergy = xDataTOM_getAttributesValueInElement( element, "primary" ) ) != NULL ) {
 80             if( MCGIDI_misc_PQUStringToDoubleI     80             if( MCGIDI_misc_PQUStringToDoubleInUnitOf( smr, gammaEnergy, "MeV", &gammaEnergy_MeV ) ) goto err;
 81             energyType = MCGIDI_energyType_pri     81             energyType = MCGIDI_energyType_primaryGamma;
 82         }                                          82         }
 83         if( gammaEnergy != NULL ) {                83         if( gammaEnergy != NULL ) {
 84             if( strcmp( nativeData, "angular"      84             if( strcmp( nativeData, "angular" ) ) {
 85                 smr_setReportError2( smr, smr_     85                 smr_setReportError2( smr, smr_unknownID, 1, "%s gamma can only have a distribution with 'nativeData' = 'angular' and not '%s'",
 86                     gammaEnergy, nativeData );     86                     gammaEnergy, nativeData );
 87                 goto err;                          87                 goto err;
 88             }                                      88             }
 89             nativeData = "uncorrelated";           89             nativeData = "uncorrelated";
 90         }                                          90         }
 91     }                                              91     }
 92                                                    92 
 93     if( strcmp( nativeData, "angular" ) == 0 )     93     if( strcmp( nativeData, "angular" ) == 0 ) {
 94         if( MCGIDI_angular_parseFromTOM( smr,      94         if( MCGIDI_angular_parseFromTOM( smr, distributionElement, distribution, norms ) ) goto err; }
 95     else if( strcmp( nativeData, "uncorrelated     95     else if( strcmp( nativeData, "uncorrelated" ) == 0 ) {
 96         if( MCGIDI_uncorrelated_parseFromTOM(      96         if( MCGIDI_uncorrelated_parseFromTOM( smr, distributionElement, distribution, norms, energyType, gammaEnergy_MeV ) ) goto err; }
 97     else if( strcmp( nativeData, "energyAngula     97     else if( strcmp( nativeData, "energyAngular" ) == 0 ) {
 98         if( MCGIDI_energyAngular_parseFromTOM(     98         if( MCGIDI_energyAngular_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
 99     else if( strcmp( nativeData, "angularEnerg     99     else if( strcmp( nativeData, "angularEnergy" ) == 0 ) {
100         if( MCGIDI_angularEnergy_parseFromTOM(    100         if( MCGIDI_angularEnergy_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
101     else if( strcmp( nativeData, "Legendre" )     101     else if( strcmp( nativeData, "Legendre" ) == 0 ) {
102         if( MCGIDI_energyAngular_parseFromTOM(    102         if( MCGIDI_energyAngular_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
103     else if( strcmp( nativeData, "LLNLAngular_    103     else if( strcmp( nativeData, "LLNLAngular_angularEnergy" ) == 0 ) {
104         if( MCGIDI_LLNLAngular_angularEnergy_p    104         if( MCGIDI_LLNLAngular_angularEnergy_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
105     else if( strcmp( nativeData, "none" ) == 0    105     else if( strcmp( nativeData, "none" ) == 0 ) {
106         distribution->type = MCGIDI_distributi    106         distribution->type = MCGIDI_distributionType_none_e; }
107     else if( strcmp( nativeData, "unknown" ) =    107     else if( strcmp( nativeData, "unknown" ) == 0 ) {
108         distribution->type = MCGIDI_distributi    108         distribution->type = MCGIDI_distributionType_unknown_e; }
109     else {                                        109     else {
110         smr_setReportError2( smr, smr_unknownI    110         smr_setReportError2( smr, smr_unknownID, 1, "Unsupported distribution = '%s'\n", nativeData );
111         goto err;                                 111         goto err;
112     }                                             112     }
113                                                   113 
114     return( 0 );                                  114     return( 0 );
115                                                   115 
116 err:                                              116 err:
117     MCGIDI_distribution_release( smr, distribu    117     MCGIDI_distribution_release( smr, distribution );
118     return( 1 );                                  118     return( 1 );
119 }                                                 119 }
120                                                   120 
121 #if defined __cplusplus                           121 #if defined __cplusplus
122 }                                                 122 }
123 #endif                                            123 #endif
124                                                   124 
125                                                   125