Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MCGIDI_distribution.cc File Reference
#include <string.h>
#include <cmath>
#include "MCGIDI.h"
#include "MCGIDI_misc.h"
Include dependency graph for MCGIDI_distribution.cc:

Go to the source code of this file.

Functions

MCGIDI_distributionMCGIDI_distribution_new (statusMessageReporting *smr)
 
int MCGIDI_distribution_initialize (statusMessageReporting *, MCGIDI_distribution *distribution)
 
MCGIDI_distributionMCGIDI_distribution_free (statusMessageReporting *smr, MCGIDI_distribution *distribution)
 
int MCGIDI_distribution_release (statusMessageReporting *smr, MCGIDI_distribution *distribution)
 
int MCGIDI_distribution_parseFromTOM (statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_product *product, MCGIDI_POPs *, ptwXYPoints *norms)
 

Function Documentation

MCGIDI_distribution* MCGIDI_distribution_free ( statusMessageReporting smr,
MCGIDI_distribution distribution 
)

Definition at line 38 of file MCGIDI_distribution.cc.

38  {
39 
40  MCGIDI_distribution_release( smr, distribution );
41  smr_freeMemory( (void **) &distribution );
42  return( NULL );
43 }
int MCGIDI_distribution_release(statusMessageReporting *smr, MCGIDI_distribution *distribution)
void * smr_freeMemory(void **p)

Here is the call graph for this function:

Here is the caller graph for this function:

int MCGIDI_distribution_initialize ( statusMessageReporting ,
MCGIDI_distribution distribution 
)

Definition at line 30 of file MCGIDI_distribution.cc.

30  {
31 
32  memset( distribution, 0, sizeof( MCGIDI_distribution ) );
33  return( 0 );
34 }

Here is the caller graph for this function:

MCGIDI_distribution* MCGIDI_distribution_new ( statusMessageReporting smr)

Definition at line 19 of file MCGIDI_distribution.cc.

19  {
20 
21  MCGIDI_distribution *distribution;
22 
23  if( ( distribution = (MCGIDI_distribution *) smr_malloc2( smr, sizeof( MCGIDI_distribution ), 0, "distribution" ) ) == NULL ) return( NULL );
24  if( MCGIDI_distribution_initialize( smr, distribution ) ) distribution = MCGIDI_distribution_free( smr, distribution );
25  return( distribution );
26 }
MCGIDI_distribution * MCGIDI_distribution_free(statusMessageReporting *smr, MCGIDI_distribution *distribution)
int MCGIDI_distribution_initialize(statusMessageReporting *smr, MCGIDI_distribution *distribution)
#define smr_malloc2(smr, size, zero, forItem)

Here is the call graph for this function:

int MCGIDI_distribution_parseFromTOM ( statusMessageReporting smr,
xDataTOM_element element,
MCGIDI_product product,
MCGIDI_POPs ,
ptwXYPoints norms 
)

Definition at line 61 of file MCGIDI_distribution.cc.

61  {
62 
63  char const *nativeData, *gammaEnergy;
64  double gammaEnergy_MeV;
65  MCGIDI_distribution *distribution = &(product->distribution);
66  xDataTOM_element *distributionElement;
68 
69  MCGIDI_distribution_initialize( smr, distribution );
70 
71  distribution->product = product;
72  if( ( distributionElement = xDataTOME_getOneElementByName( smr, element, "distributions", 1 ) ) == NULL ) goto err;
73  if( ( nativeData = xDataTOM_getAttributesValueInElement( distributionElement, "nativeData" ) ) == NULL ) goto err;
74 
75  if( strcmp( product->pop->name, "gamma" ) == 0 ) {
76  if( ( gammaEnergy = xDataTOM_getAttributesValueInElement( element, "discrete" ) ) != NULL ) {
77  if( MCGIDI_misc_PQUStringToDoubleInUnitOf( smr, gammaEnergy, "MeV", &gammaEnergy_MeV ) ) goto err;
78  energyType = MCGIDI_energyType_discreteGamma; }
79  else if( ( gammaEnergy = xDataTOM_getAttributesValueInElement( element, "primary" ) ) != NULL ) {
80  if( MCGIDI_misc_PQUStringToDoubleInUnitOf( smr, gammaEnergy, "MeV", &gammaEnergy_MeV ) ) goto err;
81  energyType = MCGIDI_energyType_primaryGamma;
82  }
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 );
87  goto err;
88  }
89  nativeData = "uncorrelated";
90  }
91  }
92 
93  if( strcmp( nativeData, "angular" ) == 0 ) {
94  if( MCGIDI_angular_parseFromTOM( smr, distributionElement, distribution, norms ) ) goto err; }
95  else if( strcmp( nativeData, "uncorrelated" ) == 0 ) {
96  if( MCGIDI_uncorrelated_parseFromTOM( smr, distributionElement, distribution, norms, energyType, gammaEnergy_MeV ) ) goto err; }
97  else if( strcmp( nativeData, "energyAngular" ) == 0 ) {
98  if( MCGIDI_energyAngular_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
99  else if( strcmp( nativeData, "angularEnergy" ) == 0 ) {
100  if( MCGIDI_angularEnergy_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
101  else if( strcmp( nativeData, "Legendre" ) == 0 ) {
102  if( MCGIDI_energyAngular_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
103  else if( strcmp( nativeData, "LLNLAngular_angularEnergy" ) == 0 ) {
104  if( MCGIDI_LLNLAngular_angularEnergy_parseFromTOM( smr, distributionElement, distribution ) ) goto err; }
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; }
109  else {
110  smr_setReportError2( smr, smr_unknownID, 1, "Unsupported distribution = '%s'\n", nativeData );
111  goto err;
112  }
113 
114  return( 0 );
115 
116 err:
117  MCGIDI_distribution_release( smr, distribution );
118  return( 1 );
119 }
int MCGIDI_energyAngular_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
int MCGIDI_angular_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms)
MCGIDI_energyType
Definition: MCGIDI.h:214
int MCGIDI_distribution_release(statusMessageReporting *smr, MCGIDI_distribution *distribution)
int MCGIDI_uncorrelated_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms, enum MCGIDI_energyType energyType, double gammaEnergy_MeV)
int MCGIDI_LLNLAngular_angularEnergy_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
char * name
Definition: MCGIDI.h:232
#define smr_setReportError2(smr, libraryID, code, fmt,...)
xDataTOM_element * xDataTOME_getOneElementByName(statusMessageReporting *smr, xDataTOM_element *element, char const *name, int required)
Definition: xDataTOM.cc:246
int MCGIDI_angularEnergy_parseFromTOM(statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution)
int MCGIDI_distribution_initialize(statusMessageReporting *smr, MCGIDI_distribution *distribution)
#define smr_unknownID
MCGIDI_product * product
Definition: MCGIDI.h:381
enum MCGIDI_distributionType type
Definition: MCGIDI.h:382
MCGIDI_POP * pop
Definition: MCGIDI.h:401
int MCGIDI_misc_PQUStringToDoubleInUnitOf(statusMessageReporting *smr, char const *str, char const *toUnit, double *value)
Definition: MCGIDI_misc.cc:356
MCGIDI_distribution distribution
Definition: MCGIDI.h:411
char const * xDataTOM_getAttributesValueInElement(xDataTOM_element *element, char const *name)
Definition: xDataTOM.cc:286

Here is the call graph for this function:

Here is the caller graph for this function:

int MCGIDI_distribution_release ( statusMessageReporting smr,
MCGIDI_distribution distribution 
)

Definition at line 47 of file MCGIDI_distribution.cc.

47  {
48 
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 );
54 
55  MCGIDI_distribution_initialize( smr, distribution );
56  return( 0 );
57 }
MCGIDI_angularEnergy * MCGIDI_angularEnergy_free(statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular)
MCGIDI_energyAngular * energyAngular
Definition: MCGIDI.h:385
MCGIDI_KalbachMann * MCGIDI_KalbachMann_free(statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann)
MCGIDI_angular * angular
Definition: MCGIDI.h:383
MCGIDI_energy * energy
Definition: MCGIDI.h:384
int MCGIDI_distribution_initialize(statusMessageReporting *smr, MCGIDI_distribution *distribution)
MCGIDI_energy * MCGIDI_energy_free(statusMessageReporting *smr, MCGIDI_energy *energy)
MCGIDI_energyAngular * MCGIDI_energyAngular_free(statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular)
MCGIDI_KalbachMann * KalbachMann
Definition: MCGIDI.h:387
MCGIDI_angular * MCGIDI_angular_free(statusMessageReporting *smr, MCGIDI_angular *angular)
MCGIDI_angularEnergy * angularEnergy
Definition: MCGIDI.h:386

Here is the call graph for this function:

Here is the caller graph for this function: